aboutsummaryrefslogtreecommitdiff
path: root/flakes
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2023-10-04 01:35:06 +0200
committerIsmaël Bouya <ismael.bouya@normalesup.org>2023-10-04 02:11:48 +0200
commit1a64deeb894dc95e2645a75771732c6cc53a79ad (patch)
tree1b9df4838f894577a09b9b260151756272efeb53 /flakes
parentfa25ffd4583cc362075cd5e1b4130f33306103f0 (diff)
downloadNix-1a64deeb894dc95e2645a75771732c6cc53a79ad.tar.gz
Nix-1a64deeb894dc95e2645a75771732c6cc53a79ad.tar.zst
Nix-1a64deeb894dc95e2645a75771732c6cc53a79ad.zip
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
Diffstat (limited to 'flakes')
-rw-r--r--flakes/backports/flake.lock13
-rw-r--r--flakes/backports/flake.nix105
-rw-r--r--flakes/copanier/default.nix30
-rw-r--r--flakes/copanier/fix_reduce.patch13
-rw-r--r--flakes/copanier/flake.lock59
-rw-r--r--flakes/copanier/flake.nix28
-rw-r--r--flakes/copanier/poetry.lock995
-rw-r--r--flakes/copanier/pyproject.toml40
-rw-r--r--flakes/diaspora/default.nix74
-rw-r--r--flakes/diaspora/flake.lock75
-rw-r--r--flakes/diaspora/flake.nix214
-rw-r--r--flakes/diaspora/gemset.nix3047
-rw-r--r--flakes/diaspora/gemset_ldap.nix3056
-rw-r--r--flakes/diaspora/ldap.patch256
-rw-r--r--flakes/etherpad-lite/default.nix68
-rw-r--r--flakes/etherpad-lite/etherpad_cleanup.sql30
-rw-r--r--flakes/etherpad-lite/flake.lock150
-rw-r--r--flakes/etherpad-lite/flake.nix227
-rw-r--r--flakes/etherpad-lite/libreoffice_patch.diff12
-rw-r--r--flakes/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_aa_file_menu_toolbar/node-packages.nix26
-rw-r--r--flakes/etherpad-lite/modules/ep_adminpads/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_adminpads/node-packages.nix27
-rw-r--r--flakes/etherpad-lite/modules/ep_align/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_align/node-packages.nix26
-rw-r--r--flakes/etherpad-lite/modules/ep_bookmark/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_bookmark/node-packages.nix26
-rw-r--r--flakes/etherpad-lite/modules/ep_clear_formatting/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_clear_formatting/node-packages.nix25
-rw-r--r--flakes/etherpad-lite/modules/ep_colors/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_colors/node-packages.nix25
-rw-r--r--flakes/etherpad-lite/modules/ep_comments_page/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_comments_page/node-packages.nix342
-rw-r--r--flakes/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_copy_paste_select_all/node-packages.nix26
-rw-r--r--flakes/etherpad-lite/modules/ep_cursortrace/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_cursortrace/node-packages.nix26
-rw-r--r--flakes/etherpad-lite/modules/ep_delete_empty_pads/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_delete_empty_pads/node-packages.nix26
-rw-r--r--flakes/etherpad-lite/modules/ep_embedmedia/fix.patch85
-rw-r--r--flakes/etherpad-lite/modules/ep_embedmedia/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_embedmedia/node-packages.nix29
-rw-r--r--flakes/etherpad-lite/modules/ep_font_family/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_font_family/node-packages.nix27
-rw-r--r--flakes/etherpad-lite/modules/ep_font_size/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_font_size/node-packages.nix27
-rw-r--r--flakes/etherpad-lite/modules/ep_headings2/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_headings2/node-packages.nix26
-rw-r--r--flakes/etherpad-lite/modules/ep_immae_buttons/ep.json13
-rw-r--r--flakes/etherpad-lite/modules/ep_immae_buttons/hooks.js6
-rw-r--r--flakes/etherpad-lite/modules/ep_immae_buttons/node-packages.nix22
-rw-r--r--flakes/etherpad-lite/modules/ep_immae_buttons/package.json10
-rw-r--r--flakes/etherpad-lite/modules/ep_immae_buttons/static/js/main.js67
-rw-r--r--flakes/etherpad-lite/modules/ep_immae_buttons/templates/editbarButtons.ejs12
-rw-r--r--flakes/etherpad-lite/modules/ep_ldapauth/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_ldapauth/node-packages.nix392
-rw-r--r--flakes/etherpad-lite/modules/ep_line_height/fix.patch30
-rw-r--r--flakes/etherpad-lite/modules/ep_line_height/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_line_height/node-packages.nix28
-rw-r--r--flakes/etherpad-lite/modules/ep_markdown/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_markdown/node-packages.nix300
-rw-r--r--flakes/etherpad-lite/modules/ep_mypads/fix_ldap.patch59
-rw-r--r--flakes/etherpad-lite/modules/ep_mypads/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_mypads/node-packages.nix2156
-rw-r--r--flakes/etherpad-lite/modules/ep_page_view/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_page_view/node-packages.nix26
-rw-r--r--flakes/etherpad-lite/modules/ep_previewimages/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_previewimages/node-packages.nix26
-rw-r--r--flakes/etherpad-lite/modules/ep_private_pad/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_private_pad/node-packages.nix2056
-rw-r--r--flakes/etherpad-lite/modules/ep_ruler/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_ruler/node-packages.nix27
-rw-r--r--flakes/etherpad-lite/modules/ep_scrollto/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_scrollto/node-packages.nix29
-rw-r--r--flakes/etherpad-lite/modules/ep_set_title_on_pad/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_set_title_on_pad/node-packages.nix26
-rw-r--r--flakes/etherpad-lite/modules/ep_subscript_and_superscript/font.patch22
-rw-r--r--flakes/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.nix28
-rw-r--r--flakes/etherpad-lite/modules/ep_timesliderdiff/node-packages.json1
-rw-r--r--flakes/etherpad-lite/modules/ep_timesliderdiff/node-packages.nix26
-rw-r--r--flakes/etherpad-lite/node-packages.nix2934
-rw-r--r--flakes/files-watcher/flake.nix2
-rw-r--r--flakes/flake.lock9669
-rw-r--r--flakes/flake.nix67
-rw-r--r--flakes/grocy/default.nix47
-rw-r--r--flakes/grocy/flake.lock150
-rw-r--r--flakes/grocy/flake.nix35
-rw-r--r--flakes/grocy/php-packages.nix457
-rw-r--r--flakes/grocy/yarn-packages.nix1085
-rw-r--r--flakes/grocy/yarn.patch67
-rw-r--r--flakes/lib/flake.lock272
-rw-r--r--flakes/lib/flake.nix76
-rw-r--r--flakes/loginctl-linger/flake.nix56
-rw-r--r--flakes/mastodon/default.nix94
-rw-r--r--flakes/mastodon/flake.lock75
-rw-r--r--flakes/mastodon/flake.nix331
-rw-r--r--flakes/mastodon/gemset.nix2816
-rw-r--r--flakes/mastodon/yarn-packages.nix12344
-rw-r--r--flakes/mediagoblin/bower-packages.nix8
-rw-r--r--flakes/mediagoblin/default.nix213
-rw-r--r--flakes/mediagoblin/flake.lock78
-rw-r--r--flakes/mediagoblin/flake.nix271
-rw-r--r--flakes/mediagoblin/ldap_fix.py93
-rw-r--r--flakes/mediagoblin/plugins/basicsearch/default.nix18
-rw-r--r--flakes/multi-apache-container/flake.lock36
-rw-r--r--flakes/multi-apache-container/flake.nix389
-rw-r--r--flakes/mypackages/flake.lock83
-rw-r--r--flakes/mypackages/flake.nix43
-rw-r--r--flakes/mypackages/lib/default.nix37
-rw-r--r--flakes/mypackages/lib/flake-parts-lib.nix10
-rw-r--r--flakes/mypackages/lib/node-env.nix542
-rw-r--r--flakes/mypackages/lib/private/default.nix20
-rw-r--r--flakes/mypackages/overlays/bitlbee-discord/default.nix12
-rw-r--r--flakes/mypackages/overlays/bitlbee/bitlbee_long_nicks.patch56
-rw-r--r--flakes/mypackages/overlays/bitlbee/default.nix5
-rw-r--r--flakes/mypackages/overlays/databases/mysql/default.nix28
-rw-r--r--flakes/mypackages/overlays/databases/postgresql/default.nix8
-rw-r--r--flakes/mypackages/overlays/default.nix25
-rw-r--r--flakes/mypackages/overlays/gitolite/default.nix8
-rwxr-xr-xflakes/mypackages/overlays/gitolite/invite172
-rw-r--r--flakes/mypackages/overlays/gitweb/default.nix7
-rw-r--r--flakes/mypackages/overlays/gitweb/theme/git-favicon.pngbin0 -> 1125 bytes
-rw-r--r--flakes/mypackages/overlays/gitweb/theme/git-logo.pngbin0 -> 2412 bytes
-rw-r--r--flakes/mypackages/overlays/gitweb/theme/gitweb.css783
-rw-r--r--flakes/mypackages/overlays/gitweb/theme/gitweb.js27
-rw-r--r--flakes/mypackages/overlays/goaccess/default.nix13
-rw-r--r--flakes/mypackages/overlays/kanboard/default.nix19
-rw-r--r--flakes/mypackages/overlays/morph/default.nix27
-rw-r--r--flakes/mypackages/overlays/morph/dry-run.patch59
-rw-r--r--flakes/mypackages/overlays/morph/verbose_nix.patch12
-rw-r--r--flakes/mypackages/overlays/php-packages/mysqli_patch.patch11
-rw-r--r--flakes/mypackages/overlays/postfix/default.nix3
-rw-r--r--flakes/mypackages/overlays/taskwarrior/TW-1778_patch.diff12
-rw-r--r--flakes/mypackages/overlays/taskwarrior/default.nix16
-rw-r--r--flakes/mypackages/overlays/ympd/default.nix14
-rw-r--r--flakes/mypackages/overlays/ympd/ympd-password-env.patch23
-rw-r--r--flakes/mypackages/pkgs/bash-libs/default.nix33
-rw-r--r--flakes/mypackages/pkgs/boinctui/default.nix21
-rw-r--r--flakes/mypackages/pkgs/cnagios/default.nix32
-rw-r--r--flakes/mypackages/pkgs/commento/default.nix20
-rw-r--r--flakes/mypackages/pkgs/composer-env/default.nix243
-rw-r--r--flakes/mypackages/pkgs/crypto/cardano-cli/default.nix16
-rw-r--r--flakes/mypackages/pkgs/crypto/cardano/default.nix35
-rw-r--r--flakes/mypackages/pkgs/crypto/iota-cli-app/default.nix29
-rw-r--r--flakes/mypackages/pkgs/crypto/iota-cli-app/node-packages.nix1814
-rw-r--r--flakes/mypackages/pkgs/crypto/sia/default.nix21
-rw-r--r--flakes/mypackages/pkgs/default.nix64
-rw-r--r--flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/default.nix30
-rw-r--r--flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/fix_mbox.patch12
-rw-r--r--flakes/mypackages/pkgs/flrn/default.nix22
-rw-r--r--flakes/mypackages/pkgs/fluent-bit/default.nix47
-rw-r--r--flakes/mypackages/pkgs/fluentd/Gemfile3
-rw-r--r--flakes/mypackages/pkgs/fluentd/Gemfile.lock38
-rw-r--r--flakes/mypackages/pkgs/fluentd/default.nix20
-rw-r--r--flakes/mypackages/pkgs/fluentd/gemset.nix126
-rw-r--r--flakes/mypackages/pkgs/gearmand/default.nix16
-rw-r--r--flakes/mypackages/pkgs/genius/default.nix19
-rw-r--r--flakes/mypackages/pkgs/ical2html/default.nix11
-rw-r--r--flakes/mypackages/pkgs/monitoring-plugins/default.nix33
-rw-r--r--flakes/mypackages/pkgs/mtop/default.nix24
-rw-r--r--flakes/mypackages/pkgs/mutt-ics/default.nix15
-rw-r--r--flakes/mypackages/pkgs/muttprint/0.73-4.diff.gzbin0 -> 16525 bytes
-rw-r--r--flakes/mypackages/pkgs/muttprint/default.nix44
-rw-r--r--flakes/mypackages/pkgs/muttprint/regex.patch11
-rw-r--r--flakes/mypackages/pkgs/muttprint/two_edge.patch19
-rw-r--r--flakes/mypackages/pkgs/naemon-livestatus/default.nix32
-rw-r--r--flakes/mypackages/pkgs/naemon/default.nix44
-rw-r--r--flakes/mypackages/pkgs/nagios-cli/default.nix12
-rw-r--r--flakes/mypackages/pkgs/nagnu/default.nix21
-rw-r--r--flakes/mypackages/pkgs/nb/default.nix22
-rw-r--r--flakes/mypackages/pkgs/note/default.nix19
-rw-r--r--flakes/mypackages/pkgs/notmuch/notmuch-python/default.nix16
-rw-r--r--flakes/mypackages/pkgs/notmuch/notmuch-vim/default.nix11
-rw-r--r--flakes/mypackages/pkgs/perl-ical-parser-html/default.nix48
-rw-r--r--flakes/mypackages/pkgs/pgpid/default.nix33
-rw-r--r--flakes/mypackages/pkgs/predixy/default.nix19
-rw-r--r--flakes/mypackages/pkgs/proftpd/default.nix22
-rw-r--r--flakes/mypackages/pkgs/pure-ftpd/default.nix30
-rw-r--r--flakes/mypackages/pkgs/riotkit-do/default.nix60
-rw-r--r--flakes/mypackages/pkgs/rrsync_sudo/default.nix8
-rw-r--r--flakes/mypackages/pkgs/rrsync_sudo/sudo.patch20
-rw-r--r--flakes/mypackages/pkgs/shaarli/default.nix24
-rw-r--r--flakes/mypackages/pkgs/shaarli/shaarli_ldap.patch425
-rw-r--r--flakes/mypackages/pkgs/signaldctl/default.nix13
-rw-r--r--flakes/mypackages/pkgs/slang_1/default.nix25
-rw-r--r--flakes/mypackages/pkgs/status_engine/host_perfdata.patch47
-rw-r--r--flakes/mypackages/pkgs/status_engine/interface.nix24
-rw-r--r--flakes/mypackages/pkgs/status_engine/interface_composer.lock1323
-rw-r--r--flakes/mypackages/pkgs/status_engine/interface_php_packages.nix217
-rw-r--r--flakes/mypackages/pkgs/status_engine/module.nix19
-rw-r--r--flakes/mypackages/pkgs/status_engine/worker.nix37
-rw-r--r--flakes/mypackages/pkgs/status_engine/worker_composer.lock2072
-rw-r--r--flakes/mypackages/pkgs/status_engine/worker_php_packages.nix266
-rw-r--r--flakes/mypackages/pkgs/telegram-history-dump/default.nix18
-rw-r--r--flakes/mypackages/pkgs/telegramircd/default.nix22
-rw-r--r--flakes/mypackages/pkgs/telethon_sync/default.nix24
-rw-r--r--flakes/mypackages/pkgs/terminal-velocity/default.nix37
-rw-r--r--flakes/mypackages/pkgs/terminal-velocity/fix_build.patch21
-rw-r--r--flakes/mypackages/pkgs/terminal-velocity/python3_support.patch215
-rw-r--r--flakes/mypackages/pkgs/terminal-velocity/sort_found_notes.patch73
-rw-r--r--flakes/mypackages/pkgs/tiv/default.nix19
-rw-r--r--flakes/mypackages/pkgs/tiv/tiv_builder.sh8
-rw-r--r--flakes/mypackages/pkgs/twins/default.nix15
-rw-r--r--flakes/mypackages/pkgs/umami/build-geo.patch15
-rw-r--r--flakes/mypackages/pkgs/umami/default.nix72
-rw-r--r--flakes/mypackages/pkgs/unicode/default.nix48
-rw-r--r--flakes/mypackages/pkgs/upcmd/default.nix13
-rw-r--r--flakes/mypackages/pkgs/webapps/adminer/default.nix14
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/default.nix88
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/.htaccess9
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/footer.html31
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/header.html3
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/archive.pngbin0 -> 551 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/audio.pngbin0 -> 554 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/authors.pngbin0 -> 492 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bin.pngbin0 -> 551 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/blank.pngbin0 -> 227 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bmp.pngbin0 -> 663 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/c.pngbin0 -> 554 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/calc.pngbin0 -> 506 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cd.pngbin0 -> 757 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/copying.pngbin0 -> 699 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cpp.pngbin0 -> 599 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/css.pngbin0 -> 592 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/deb.pngbin0 -> 671 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/default.pngbin0 -> 311 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/diff.pngbin0 -> 586 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/doc.pngbin0 -> 535 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/draw.pngbin0 -> 679 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/eps.pngbin0 -> 619 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/exe.pngbin0 -> 846 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-home.pngbin0 -> 618 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-open.pngbin0 -> 431 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-page.pngbin0 -> 591 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent-old.pngbin0 -> 494 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent.pngbin0 -> 621 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder.pngbin0 -> 395 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gif.pngbin0 -> 655 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gzip.pngbin0 -> 551 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/h.pngbin0 -> 504 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/hpp.pngbin0 -> 530 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/html.pngbin0 -> 770 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ico.pngbin0 -> 792 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/image.pngbin0 -> 671 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/install.pngbin0 -> 788 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/java.pngbin0 -> 658 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/jpg.pngbin0 -> 675 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/js.pngbin0 -> 540 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/json.pngbin0 -> 540 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/log.pngbin0 -> 423 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/makefile.pngbin0 -> 614 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/markdown.pngbin0 -> 627 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/package.pngbin0 -> 614 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pdf.pngbin0 -> 799 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/php.pngbin0 -> 757 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/playlist.pngbin0 -> 610 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/png.pngbin0 -> 679 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pres.pngbin0 -> 629 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ps.pngbin0 -> 817 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/psd.pngbin0 -> 622 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/py.pngbin0 -> 743 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rar.pngbin0 -> 621 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rb.pngbin0 -> 781 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/readme.pngbin0 -> 384 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rpm.pngbin0 -> 660 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rss.pngbin0 -> 660 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rtf.pngbin0 -> 627 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/script.pngbin0 -> 613 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/source.pngbin0 -> 586 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/sql.pngbin0 -> 510 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tar.pngbin0 -> 406 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tex.pngbin0 -> 677 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/text.pngbin0 -> 463 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tiff.pngbin0 -> 654 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/unknown.pngbin0 -> 556 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/vcal.pngbin0 -> 556 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/video.pngbin0 -> 739 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/xml.pngbin0 -> 585 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/zip.pngbin0 -> 617 bytes
-rw-r--r--flakes/mypackages/pkgs/webapps/apache-theme/theme/style.css160
-rw-r--r--flakes/mypackages/pkgs/webapps/awl/default.nix16
-rw-r--r--flakes/mypackages/pkgs/webapps/davical/default.nix23
-rw-r--r--flakes/mypackages/pkgs/webapps/default.nix24
-rw-r--r--flakes/mypackages/pkgs/webapps/dokuwiki/default.nix54
-rw-r--r--flakes/mypackages/pkgs/webapps/dokuwiki/plugins/farmer.nix25
-rw-r--r--flakes/mypackages/pkgs/webapps/dokuwiki/plugins/todo.nix18
-rw-r--r--flakes/mypackages/pkgs/webapps/infcloud/default.nix19
-rw-r--r--flakes/mypackages/pkgs/webapps/infcloud/infcloud_config.js1446
-rw-r--r--flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report.php.diff20
-rw-r--r--flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report_page.php.diff53
-rw-r--r--flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add.php.diff20
-rw-r--r--flakes/mypackages/pkgs/webapps/mantisbt_2/bugnote_add_inc.php.diff52
-rw-r--r--flakes/mypackages/pkgs/webapps/mantisbt_2/default.nix44
-rw-r--r--flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/slack/default.nix18
-rw-r--r--flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/Source.API.php.diff12
-rw-r--r--flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/default.nix22
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/audioplayer.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/bookmarks.nix21
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/calendar.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/carnet.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/contacts.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/cookbook.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/deck.nix27
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/drawio.nix24
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/external.nix27
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/extract.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/files_markdown.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/files_mindmap.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/files_readmemd.nix14
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/flowupload.nix14
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxedit.nix22
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/gpxpod.nix31
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/groupfolders.nix27
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/impersonate.nix27
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/integration_dropbox.nix13
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/keeweb.nix24
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/maps.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/metadata.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/music.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/notes.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/ocsms.nix21
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/onlyoffice.nix21
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/passman.nix21
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/polls.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/side_menu.nix16
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/social.nix14
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/spreed.nix27
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/talk_matterbridge.nix14
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/apps/tasks.nix15
-rw-r--r--flakes/mypackages/pkgs/webapps/nextcloud/default.nix84
-rw-r--r--flakes/mypackages/pkgs/webapps/phpbb/default.nix61
-rw-r--r--flakes/mypackages/pkgs/webapps/phpbb/extensions/adduser.nix22
-rw-r--r--flakes/mypackages/pkgs/webapps/phpbb/extensions/autosubscribe.nix19
-rw-r--r--flakes/mypackages/pkgs/webapps/phpbb/extensions/mailinglist.nix18
-rw-r--r--flakes/mypackages/pkgs/webapps/phpbb/extensions/markdown.nix20
-rw-r--r--flakes/mypackages/pkgs/webapps/phpbb/extensions/mchat.nix21
-rw-r--r--flakes/mypackages/pkgs/webapps/phpbb/extensions/monitoranswers.nix19
-rw-r--r--flakes/mypackages/pkgs/webapps/phpbb/langs/fr.nix12
-rw-r--r--flakes/mypackages/pkgs/webapps/phpldapadmin/default.nix27
-rw-r--r--flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-align-button.patch11
-rw-r--r--flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-fix-password.patch13
-rw-r--r--flakes/mypackages/pkgs/webapps/phpldapadmin/ldap-sort-in-templates.patch12
-rw-r--r--flakes/mypackages/pkgs/webapps/rompr/default.nix17
-rw-r--r--flakes/mypackages/pkgs/webapps/roundcubemail/add_all.patch209
-rw-r--r--flakes/mypackages/pkgs/webapps/roundcubemail/default.nix85
-rw-r--r--flakes/mypackages/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix7
-rw-r--r--flakes/mypackages/pkgs/webapps/roundcubemail/plugins/carddav/default.nix7
-rw-r--r--flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix7
-rw-r--r--flakes/mypackages/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix7
-rw-r--r--flakes/mypackages/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix7
-rw-r--r--flakes/mypackages/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix7
-rw-r--r--flakes/mypackages/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix7
-rw-r--r--flakes/mypackages/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix7
-rw-r--r--flakes/mypackages/pkgs/webapps/spip/default.nix32
-rw-r--r--flakes/mypackages/pkgs/webapps/spip/spip_ldap_patch.patch60
-rw-r--r--flakes/mypackages/pkgs/webapps/spip/spip_mes_options.php18
-rw-r--r--flakes/mypackages/pkgs/webapps/ttrss/default.nix37
-rw-r--r--flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix18
-rw-r--r--flakes/mypackages/pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch12
-rw-r--r--flakes/mypackages/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix17
-rw-r--r--flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/default.nix18
-rw-r--r--flakes/mypackages/pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch18
-rw-r--r--flakes/mypackages/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix17
-rw-r--r--flakes/mypackages/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix17
-rw-r--r--flakes/mypackages/pkgs/webapps/wallabag/default.nix54
-rw-r--r--flakes/mypackages/pkgs/webapps/wallabag/ldap.patch664
-rw-r--r--flakes/mypackages/pkgs/webapps/yourls/default.nix37
-rw-r--r--flakes/mypackages/pkgs/webapps/yourls/plugins/ldap/default.nix17
-rw-r--r--flakes/myuids/flake.nix14
-rw-r--r--flakes/naemon/flake.nix191
-rw-r--r--flakes/naemon/naemon.cfg1059
-rw-r--r--flakes/openarc/flake.lock17
-rw-r--r--flakes/openarc/flake.nix6
-rw-r--r--flakes/opendmarc/flake.lock17
-rw-r--r--flakes/opendmarc/flake.nix8
-rw-r--r--flakes/openfoodnetwork/default.nix39
-rw-r--r--flakes/openfoodnetwork/gemset.nix2896
-rw-r--r--flakes/paste/flake.nix2
-rw-r--r--flakes/paste/paste/paste.py29
-rw-r--r--flakes/peertube/flake.lock17
-rw-r--r--flakes/peertube/flake.nix10
-rw-r--r--flakes/private/buildbot/buildslist/bower.nix9
-rw-r--r--flakes/private/buildbot/buildslist/default.nix64
-rw-r--r--flakes/private/buildbot/buildslist/yarn-packages.nix9293
-rw-r--r--flakes/private/buildbot/common/build_helpers.py293
-rw-r--r--flakes/private/buildbot/common/libvirt.py318
-rw-r--r--flakes/private/buildbot/common/master.cfg93
-rw-r--r--flakes/private/buildbot/flake.lock61
-rw-r--r--flakes/private/buildbot/flake.nix74
-rw-r--r--flakes/private/buildbot/test_project/__init__.py121
-rw-r--r--flakes/private/chatons/flake.lock23
-rw-r--r--flakes/private/chatons/flake.nix142
-rw-r--r--flakes/private/environment-dummy/flake.nix18
-rw-r--r--flakes/private/environment-dummy/ldap.conf13
-rw-r--r--flakes/private/environment-dummy/vars.yml1
-rw-r--r--flakes/private/environment/flake.nix1135
-rwxr-xr-xflakes/private/mail-relay/filter-rewrite-from.py68
-rw-r--r--flakes/private/mail-relay/flake.lock36
-rw-r--r--flakes/private/mail-relay/flake.nix58
-rw-r--r--flakes/private/milters/flake.lock186
-rw-r--r--flakes/private/milters/flake.nix106
-rwxr-xr-xflakes/private/milters/verify_from.py60
-rw-r--r--flakes/private/monitoring/flake.lock67
-rw-r--r--flakes/private/monitoring/flake.nix267
-rw-r--r--flakes/private/monitoring/myplugins.nix400
-rw-r--r--flakes/private/monitoring/nagios-cli.cfg68
-rw-r--r--flakes/private/monitoring/objects_common.nix227
-rwxr-xr-xflakes/private/monitoring/plugins/check_backup_age66
-rwxr-xr-xflakes/private/monitoring/plugins/check_bandwidth122
-rwxr-xr-xflakes/private/monitoring/plugins/check_command113
-rwxr-xr-xflakes/private/monitoring/plugins/check_emails121
-rwxr-xr-xflakes/private/monitoring/plugins/check_eriomem83
-rwxr-xr-xflakes/private/monitoring/plugins/check_ftp_database11
-rwxr-xr-xflakes/private/monitoring/plugins/check_git81
-rwxr-xr-xflakes/private/monitoring/plugins/check_imap_connection52
-rwxr-xr-xflakes/private/monitoring/plugins/check_last_file_date28
-rwxr-xr-xflakes/private/monitoring/plugins/check_mem.sh31
-rwxr-xr-xflakes/private/monitoring/plugins/check_mysql_replication41
-rwxr-xr-xflakes/private/monitoring/plugins/check_openldap_replication54
-rwxr-xr-xflakes/private/monitoring/plugins/check_ovh_sms25
-rwxr-xr-xflakes/private/monitoring/plugins/check_postgres_database_count32
-rwxr-xr-xflakes/private/monitoring/plugins/check_postgres_replication35
-rwxr-xr-xflakes/private/monitoring/plugins/check_redis_replication38
-rwxr-xr-xflakes/private/monitoring/plugins/check_zfs_snapshot325
-rwxr-xr-xflakes/private/monitoring/plugins/notify_by_apprise31
-rwxr-xr-xflakes/private/monitoring/plugins/notify_by_email29
-rwxr-xr-xflakes/private/monitoring/plugins/notify_by_slack46
-rwxr-xr-xflakes/private/monitoring/plugins/send_nrdp.sh57
-rwxr-xr-xflakes/private/monitoring/send_mails15
-rw-r--r--flakes/private/monitoring/to_objects.nix77
-rw-r--r--flakes/private/openarc/flake.lock72
-rw-r--r--flakes/private/openarc/flake.nix96
-rw-r--r--flakes/private/opendmarc/flake.lock85
-rw-r--r--flakes/private/opendmarc/flake.nix125
-rw-r--r--flakes/private/openldap/flake.nix6
-rw-r--r--flakes/private/openldap/immae.ldif83
-rw-r--r--flakes/private/openldap/immae.schema179
-rw-r--r--flakes/private/paste/flake.lock51
-rw-r--r--flakes/private/paste/flake.nix36
-rw-r--r--flakes/private/peertube/flake.lock89
-rw-r--r--flakes/private/peertube/flake.nix16
-rw-r--r--flakes/private/php/flake.lock62
-rw-r--r--flakes/private/php/flake.nix40
-rw-r--r--flakes/private/ssh/flake.lock36
-rw-r--r--flakes/private/ssh/flake.nix107
-rwxr-xr-xflakes/private/ssh/ldap_authorized_keys.sh62
-rw-r--r--flakes/private/system/flake.lock185
-rw-r--r--flakes/private/system/flake.nix168
-rw-r--r--flakes/private/system/public_keys/Immae.pub322
-rw-r--r--flakes/rsync_backup/flake.nix4
-rw-r--r--flakes/secrets/flake.nix60
-rw-r--r--flakes/surfer/default.nix12
-rw-r--r--flakes/surfer/flake.lock149
-rw-r--r--flakes/surfer/flake.nix36
-rw-r--r--flakes/surfer/node-packages.nix2437
-rw-r--r--flakes/taskwarrior-web/Gemfile.lock139
-rw-r--r--flakes/taskwarrior-web/default.nix25
-rw-r--r--flakes/taskwarrior-web/fixes.patch113
-rw-r--r--flakes/taskwarrior-web/flake.lock62
-rw-r--r--flakes/taskwarrior-web/flake.nix33
-rw-r--r--flakes/taskwarrior-web/gemset.nix567
-rw-r--r--flakes/taskwarrior-web/thin.patch23
463 files changed, 85203 insertions, 557 deletions
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 @@
2 "nodes": { 2 "nodes": {
3 "flake-utils": { 3 "flake-utils": {
4 "locked": { 4 "locked": {
5 "lastModified": 1629481132, 5 "lastModified": 1667395993,
6 "narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=", 6 "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
7 "owner": "numtide", 7 "owner": "numtide",
8 "repo": "flake-utils", 8 "repo": "flake-utils",
9 "rev": "997f7efcb746a9c140ce1f13c72263189225f482", 9 "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
10 "type": "github" 10 "type": "github"
11 }, 11 },
12 "original": { 12 "original": {
@@ -17,15 +17,16 @@
17 }, 17 },
18 "nixpkgs": { 18 "nixpkgs": {
19 "locked": { 19 "locked": {
20 "lastModified": 1634032472, 20 "lastModified": 1687502512,
21 "narHash": "sha256-IoSg358w6nPpTYLWhvN3UgnU6r322dDPOLFXHyqyIkM=", 21 "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
22 "owner": "NixOS", 22 "owner": "NixOS",
23 "repo": "nixpkgs", 23 "repo": "nixpkgs",
24 "rev": "3abf4b55b7c991909fde3115827d398dd7c5a299", 24 "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
25 "type": "github" 25 "type": "github"
26 }, 26 },
27 "original": { 27 "original": {
28 "owner": "NixOS", 28 "owner": "NixOS",
29 "ref": "nixos-unstable",
29 "repo": "nixpkgs", 30 "repo": "nixpkgs",
30 "type": "github" 31 "type": "github"
31 } 32 }
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 @@
1{ 1{
2 description = "Backported packages"; 2 description = "Backported packages";
3 3
4 inputs.nixpkgs.url = "github:NixOS/nixpkgs"; 4 inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
5 inputs.flake-utils.url = "github:numtide/flake-utils"; 5 inputs.flake-utils.url = "github:numtide/flake-utils";
6 6
7 outputs = { self, flake-utils, nixpkgs }: flake-utils.lib.eachDefaultSystem (system: 7 outputs = { self, flake-utils, nixpkgs }: flake-utils.lib.eachDefaultSystem (system:
8 let 8 let
9 pkgs = import nixpkgs { inherit system; overlays = []; }; 9 pkgs = import nixpkgs { inherit system; overlays = []; config = {}; };
10 in rec { 10 in rec {
11 packages = { 11 packages = {
12 apprise = pkgs.apprise; 12 ntfy-sh = pkgs.ntfy-sh;
13 bitlbee-mastodon = pkgs.bitlbee-mastodon;
14 cointop = pkgs.cointop;
15 cryptpad = pkgs.cryptpad;
16 dovecot_fts-xapian = pkgs.dovecot_fts_xapian;
17 duply = pkgs.duply;
18 fiche = pkgs.fiche;
19 influxdb2 = pkgs.influxdb2;
20 ldapvi = pkgs.ldapvi;
21 lego = pkgs.lego;
22 mpd = pkgs.mpd;
23 mpd-small = pkgs.mpd-small;
24 opensmtpd = pkgs.opensmtpd;
25 pass = pkgs.pass;
26 pg_activity = pkgs.pg_activity;
27 signald = pkgs.signald;
28 ssh-to-age = pkgs.ssh-to-age;
29 stgit = pkgs.stgit;
30 sops = pkgs.sops;
31 sudo = pkgs.sudo;
32 telegram-cli = pkgs.telegram-cli;
33 woob = pkgs.python3Packages.woob;
34 zrepl = pkgs.zrepl;
35 }; 13 };
36 legacyPackages = packages; 14 legacyPackages = packages;
37 apps = { 15 apps = {
38 apprise = flake-utils.lib.mkApp { drv = packages.apprise; name = "apprise"; }; 16 ntfy-sh = flake-utils.lib.mkApp { drv = packages.ntfy-sh; name = "ntfy-sh"; };
39 cointop = flake-utils.lib.mkApp { drv = packages.cointop; name = "cointop"; };
40 cryptpad = flake-utils.lib.mkApp { drv = packages.cryptpad; name = "cryptpad"; };
41 duply = flake-utils.lib.mkApp { drv = packages.duply; name = "duply"; };
42 fiche = flake-utils.lib.mkApp { drv = packages.fiche; name = "fiche"; };
43 influxd = flake-utils.lib.mkApp { drv = packages.influxdb2; name = "influxd"; };
44 influx = flake-utils.lib.mkApp { drv = packages.influxdb2; name = "influx"; };
45 ldapvi = flake-utils.lib.mkApp { drv = packages.ldapvi; name = "ldapvi"; };
46 lego = flake-utils.lib.mkApp { drv = packages.lego; name = "lego"; };
47 mpd = flake-utils.lib.mkApp { drv = packages.mpd; name = "mpd"; };
48 mpd-small = flake-utils.lib.mkApp { drv = packages.mpd-small; name = "mpd"; };
49 opensmtpd = flake-utils.lib.mkApp { drv = packages.opensmtpd; name = "opensmtpd"; };
50 pass = flake-utils.lib.mkApp { drv = packages.pass; name = "pass"; };
51 pg_activity = flake-utils.lib.mkApp { drv = packages.pg_activity; name = "pg_activity"; };
52 signald = flake-utils.lib.mkApp { drv = packages.signald; name = "signald"; };
53 ssh-to-age = flake-utils.lib.mkApp { drv = packages.ssh-to-age; name = "ssh-to-age"; };
54 stgit = flake-utils.lib.mkApp { drv = packages.stgit; name = "stgit"; };
55 sops = flake-utils.lib.mkApp { drv = packages.sops; name = "sops"; };
56 sudo = flake-utils.lib.mkApp { drv = packages.sudo; name = "sudo"; };
57 telegram-cli = flake-utils.lib.mkApp { drv = packages.telegram-cli; name = "telegram-cli"; };
58 woob = flake-utils.lib.mkApp { drv = packages.woob; name = "woob"; };
59 zrepl = flake-utils.lib.mkApp { drv = packages.zrepl; name = "zrepl"; };
60 }; 17 };
61 } 18 }
62 ) // rec { 19 ) // rec {
@@ -66,62 +23,14 @@
66 in package.override (pkgs.lib.genAttrs packageDeps (n: pkgs."${n}")); 23 in package.override (pkgs.lib.genAttrs packageDeps (n: pkgs."${n}"));
67 }; 24 };
68 overlays = { 25 overlays = {
69 apprise = final: prev: { apprise = self.packages."${final.system}".apprise; }; 26 ntfy-sh = final: prev: { ntfy-sh = self.packages."${final.system}".ntfy-sh; };
70 bitlbee-mastodon = final: prev: {
71 bitlbee-mastodon = lib.overrideDeps final self.packages."${final.system}".bitlbee-mastodon;
72 };
73 cointop = final: prev: { cointop = self.packages."${final.system}".cointop; };
74 cryptpad = final: prev: { cryptpad = self.packages."${final.system}".cryptpad; };
75 dovecot_fts-xapian = final: prev: {
76 dovecot_fts-xapian = lib.overrideDeps final self.packages."${final.system}".dovecot_fts-xapian;
77 };
78 duply = final: prev: { duply = self.packages."${final.system}".duply; };
79 fiche = final: prev: { fiche = self.packages."${final.system}".fiche; };
80 influxdb2 = final: prev: { influxdb2 = self.packages."${final.system}".influxdb2; };
81 ldapvi = final: prev: { ldapvi = self.packages."${final.system}".ldapvi; };
82 lego = final: prev: { lego = self.packages."${final.system}".lego; };
83 mpd = final: prev: { mpd = self.packages."${final.system}".mpd; };
84 opensmtpd = final: prev: { opensmtpd = self.packages."${final.system}".opensmtpd; };
85 pass = final: prev: { pass = self.packages."${final.system}".pass; };
86 pg_activity = final: prev: { pg_activity = self.packages."${final.system}".pg_activity; };
87 signald = final: prev: { signald = self.packages."${final.system}".signald; };
88 ssh-to-age = final: prev: { ssh-to-age = self.packages."${final.system}".ssh-to-age; };
89 stgit = final: prev: { stgit = self.packages."${final.system}".stgit; };
90 sops = final: prev: { sops = self.packages."${final.system}".sops; };
91 sudo = final: prev: { sudo = self.packages."${final.system}".sudo; };
92 telegram-cli = final: prev: { telegram-cli = self.packages."${final.system}".telegram-cli; };
93 woob = final: prev: { woob = self.packages."${final.system}".woob; };
94 zrepl = final: prev: { zrepl = self.packages."${final.system}".zrepl; };
95 }; 27 };
96 overlay = final: prev: ({} 28 overlay = final: prev: ({}
97 // overlays.apprise final prev 29 // overlays.ntfy-sh final prev
98 // overlays.bitlbee-mastodon final prev
99 // overlays.cointop final prev
100 // overlays.cryptpad final prev
101 // overlays.dovecot_fts-xapian final prev
102 // overlays.duply final prev
103 // overlays.fiche final prev
104 // overlays.influxdb2 final prev
105 // overlays.ldapvi final prev
106 // overlays.lego final prev
107 // overlays.mpd final prev
108 // overlays.opensmtpd final prev
109 // overlays.pass final prev
110 // overlays.pg_activity final prev
111 // overlays.signald final prev
112 // overlays.ssh-to-age final prev
113 // overlays.stgit final prev
114 // overlays.sops final prev
115 // overlays.sudo final prev
116 // overlays.telegram-cli final prev
117 // overlays.woob final prev
118 // overlays.zrepl final prev
119 ); 30 );
120 31
121 nixosModules = { 32 nixosModules = {
122 influxdb2 = import (nixpkgs + "/nixos/modules/services/databases/influxdb2.nix"); 33 #coturn = import (nixpkgs + "/nixos/modules/services/networking/coturn.nix");
123 mpd = import (nixpkgs + "/nixos/modules/services/audio/mpd.nix");
124 zrepl = import (nixpkgs + "/nixos/modules/services/backup/zrepl.nix");
125 }; 34 };
126 }; 35 };
127} 36}
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 @@
1{ src, glibcLocales, poetry2nix, fetchFromGitHub, python37, fetchpatch }:
2let
3 poetryApp = poetry2nix.mkPoetryApplication rec {
4 inherit src;
5 patches = [ ./fix_reduce.patch ];
6 overrides = poetry2nix.overrides.withDefaults (self: super: {
7 weasyprint = super.weasyprint.overridePythonAttrs (old: {
8 patches = let
9 p0 = (fetchpatch {
10 url = "https://github.com/Kozea/WeasyPrint/commit/47043a1fd7e50a892b9836466f521df85d597c44.patch";
11 sha256 = "18lmz6whjqxdpv4fdmg5vcpk2acdl99kfmp14badpw1jmffw7zl2";
12 postFetch = ''
13 sed -i -e "s/font_filename/filename/" $out
14 '';
15 });
16 p1 = (builtins.elemAt old.patches 1).overrideAttrs(old: {
17 postInstall = ''
18 sed -i -e "s/so.0/so/" $out
19 '';
20 });
21 in [ p0 p1 ];
22 });
23 });
24 pyproject = ./pyproject.toml;
25 poetrylock = ./poetry.lock;
26 python = python37;
27 locales = "${glibcLocales}/lib/locale/locale-archive";
28 };
29in
30 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 @@
1diff --git a/copanier/views/delivery.py b/copanier/views/delivery.py
2index 779d52c..1696919 100644
3--- a/copanier/views/delivery.py
4+++ b/copanier/views/delivery.py
5@@ -401,7 +401,7 @@ async def compute_payments(request, response, id):
6 balance.append((group_id, amount))
7
8 debiters, crediters = order_balance(balance)
9- results = reduce_balance(debiters[:], crediters[:])
10+ results = reduce_balance(debiters[:], crediters[:], [])
11
12 results_dict = defaultdict(partial(defaultdict, float))
13
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 @@
1{
2 "nodes": {
3 "copanier": {
4 "flake": false,
5 "locked": {
6 "lastModified": 1633895178,
7 "narHash": "sha256-0xrh12eBSVpgVeniSbKQAuGBhIyVB/rB/H3Tt7EJ1vQ=",
8 "owner": "spiral-project",
9 "repo": "copanier",
10 "rev": "d1b92cc639f4d25ad31baf4a6579a33c44a0d837",
11 "type": "github"
12 },
13 "original": {
14 "owner": "spiral-project",
15 "repo": "copanier",
16 "type": "github"
17 }
18 },
19 "flake-utils": {
20 "locked": {
21 "lastModified": 1631561581,
22 "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
23 "owner": "numtide",
24 "repo": "flake-utils",
25 "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
26 "type": "github"
27 },
28 "original": {
29 "owner": "numtide",
30 "repo": "flake-utils",
31 "type": "github"
32 }
33 },
34 "nixpkgs": {
35 "locked": {
36 "lastModified": 1633901457,
37 "narHash": "sha256-GNJLwKENqEA4xlzkWI76VLHBAua4LUIlTeeiH4FR7Gc=",
38 "owner": "NixOS",
39 "repo": "nixpkgs",
40 "rev": "f358794824b4595d77fec93732485d329ed7b0e0",
41 "type": "github"
42 },
43 "original": {
44 "owner": "NixOS",
45 "repo": "nixpkgs",
46 "type": "github"
47 }
48 },
49 "root": {
50 "inputs": {
51 "copanier": "copanier",
52 "flake-utils": "flake-utils",
53 "nixpkgs": "nixpkgs"
54 }
55 }
56 },
57 "root": "root",
58 "version": 7
59}
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 @@
1{
2 description = "Copanier";
3
4 inputs.flake-utils.url = "github:numtide/flake-utils";
5 inputs.nixpkgs.url = "github:NixOS/nixpkgs";
6 inputs.copanier = {
7 url = "github:spiral-project/copanier";
8 flake = false;
9 };
10
11 outputs = { self, copanier, flake-utils, nixpkgs }: flake-utils.lib.eachDefaultSystem (system:
12 let
13 pkgs = import nixpkgs { inherit system; overlays = []; };
14 in rec {
15 packages.copanier = pkgs.callPackage ./. { src = copanier; };
16 defaultPackage = packages.copanier;
17 legacyPackages.copanier = packages.copanier;
18 apps.copanier = flake-utils.lib.mkApp { drv = packages.copanier; };
19 defaultApp = apps.copanier;
20 }) // rec {
21 overlays = {
22 copanier = final: prev: {
23 copanier = self.defaultPackage."${final.system}";
24 };
25 };
26 overlay = overlays.copanier;
27 };
28 }
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 @@
1[[package]]
2name = "autoroutes"
3version = "0.3.5"
4description = "Routes for speed"
5category = "main"
6optional = false
7python-versions = "*"
8
9[package.extras]
10dev = ["cython", "pytest", "twine"]
11
12[[package]]
13name = "biscuits"
14version = "0.3.0"
15description = "Fast and tasty cookies handling."
16category = "main"
17optional = false
18python-versions = "*"
19
20[[package]]
21name = "cachetools"
22version = "4.2.4"
23description = "Extensible memoizing collections and decorators"
24category = "main"
25optional = false
26python-versions = "~=3.5"
27
28[[package]]
29name = "cairocffi"
30version = "1.3.0"
31description = "cffi-based cairo bindings for Python"
32category = "main"
33optional = false
34python-versions = ">=3.7"
35
36[package.dependencies]
37cffi = ">=1.1.0"
38
39[package.extras]
40doc = ["sphinx", "sphinx-rtd-theme"]
41test = ["pytest-runner", "pytest-cov", "pytest-flake8", "pytest-isort"]
42xcb = ["xcffib (>=0.3.2)"]
43
44[[package]]
45name = "cairosvg"
46version = "2.5.2"
47description = "A Simple SVG Converter based on Cairo"
48category = "main"
49optional = false
50python-versions = ">=3.5"
51
52[package.dependencies]
53cairocffi = "*"
54cssselect2 = "*"
55defusedxml = "*"
56pillow = "*"
57tinycss2 = "*"
58
59[package.extras]
60doc = ["sphinx", "sphinx-rtd-theme"]
61test = ["pytest-runner", "pytest-cov", "pytest-flake8", "pytest-isort"]
62
63[[package]]
64name = "certifi"
65version = "2021.10.8"
66description = "Python package for providing Mozilla's CA Bundle."
67category = "main"
68optional = false
69python-versions = "*"
70
71[[package]]
72name = "cffi"
73version = "1.14.6"
74description = "Foreign Function Interface for Python calling C code."
75category = "main"
76optional = false
77python-versions = "*"
78
79[package.dependencies]
80pycparser = "*"
81
82[[package]]
83name = "chardet"
84version = "4.0.0"
85description = "Universal encoding detector for Python 2 and 3"
86category = "main"
87optional = false
88python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
89
90[[package]]
91name = "charset-normalizer"
92version = "2.0.6"
93description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
94category = "main"
95optional = false
96python-versions = ">=3.5.0"
97
98[package.extras]
99unicode_backport = ["unicodedata2"]
100
101[[package]]
102name = "cssselect"
103version = "1.1.0"
104description = "cssselect parses CSS3 Selectors and translates them to XPath 1.0"
105category = "main"
106optional = false
107python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
108
109[[package]]
110name = "cssselect2"
111version = "0.4.1"
112description = "cssselect2"
113category = "main"
114optional = false
115python-versions = ">=3.6"
116
117[package.dependencies]
118tinycss2 = "*"
119webencodings = "*"
120
121[package.extras]
122doc = ["sphinx", "sphinx-rtd-theme"]
123test = ["pytest", "pytest-cov", "pytest-flake8", "pytest-isort", "coverage"]
124
125[[package]]
126name = "cssutils"
127version = "2.3.0"
128description = "A CSS Cascading Style Sheets library for Python"
129category = "main"
130optional = false
131python-versions = ">=3.6"
132
133[package.dependencies]
134importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
135
136[package.extras]
137docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
138testing = ["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"]
139
140[[package]]
141name = "debts"
142version = "0.5"
143description = "Help solve debts settlement."
144category = "main"
145optional = false
146python-versions = "*"
147
148[package.dependencies]
149jinja2 = "*"
150
151[[package]]
152name = "defusedxml"
153version = "0.7.1"
154description = "XML bomb protection for Python stdlib modules"
155category = "main"
156optional = false
157python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
158
159[[package]]
160name = "emails"
161version = "0.6"
162description = "Modern python library for emails."
163category = "main"
164optional = false
165python-versions = "*"
166
167[package.dependencies]
168chardet = "*"
169cssutils = "*"
170lxml = "*"
171premailer = "*"
172python-dateutil = "*"
173requests = "*"
174
175[[package]]
176name = "et-xmlfile"
177version = "1.1.0"
178description = "An implementation of lxml.xmlfile for the standard library"
179category = "main"
180optional = false
181python-versions = ">=3.6"
182
183[[package]]
184name = "html5lib"
185version = "1.1"
186description = "HTML parser based on the WHATWG HTML specification"
187category = "main"
188optional = false
189python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
190
191[package.dependencies]
192six = ">=1.9"
193webencodings = "*"
194
195[package.extras]
196all = ["genshi", "chardet (>=2.2)", "lxml"]
197chardet = ["chardet (>=2.2)"]
198genshi = ["genshi"]
199lxml = ["lxml"]
200
201[[package]]
202name = "httptools"
203version = "0.2.0"
204description = "A collection of framework independent HTTP protocol utils."
205category = "main"
206optional = false
207python-versions = "*"
208
209[package.extras]
210test = ["Cython (==0.29.22)"]
211
212[[package]]
213name = "idna"
214version = "3.2"
215description = "Internationalized Domain Names in Applications (IDNA)"
216category = "main"
217optional = false
218python-versions = ">=3.5"
219
220[[package]]
221name = "importlib-metadata"
222version = "4.8.1"
223description = "Read metadata from Python packages"
224category = "main"
225optional = false
226python-versions = ">=3.6"
227
228[package.dependencies]
229typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""}
230zipp = ">=0.5"
231
232[package.extras]
233docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
234perf = ["ipython"]
235testing = ["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)"]
236
237[[package]]
238name = "jdcal"
239version = "1.4.1"
240description = "Julian dates from proleptic Gregorian and Julian calendars."
241category = "main"
242optional = false
243python-versions = "*"
244
245[[package]]
246name = "jinja2"
247version = "2.11.2"
248description = "A very fast and expressive template engine."
249category = "main"
250optional = false
251python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
252
253[package.dependencies]
254MarkupSafe = ">=0.23"
255
256[package.extras]
257i18n = ["Babel (>=0.8)"]
258
259[[package]]
260name = "lxml"
261version = "4.6.3"
262description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
263category = "main"
264optional = false
265python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*"
266
267[package.extras]
268cssselect = ["cssselect (>=0.7)"]
269html5 = ["html5lib"]
270htmlsoup = ["beautifulsoup4"]
271source = ["Cython (>=0.29.7)"]
272
273[[package]]
274name = "markupsafe"
275version = "2.0.1"
276description = "Safely add untrusted strings to HTML/XML markup."
277category = "main"
278optional = false
279python-versions = ">=3.6"
280
281[[package]]
282name = "minicli"
283version = "0.5.0"
284description = "Minimalist CLI"
285category = "main"
286optional = false
287python-versions = "*"
288
289[package.extras]
290doc = ["mkdocs (==1.1.2)"]
291test = ["pytest (==6.0.1)"]
292
293[[package]]
294name = "multifruits"
295version = "0.1.5"
296description = "Tasty multipart form data parser built with cython."
297category = "main"
298optional = false
299python-versions = "*"
300
301[package.extras]
302dev = ["Cython (==0.29.21)"]
303
304[[package]]
305name = "openpyxl"
306version = "3.0.5"
307description = "A Python library to read/write Excel 2010 xlsx/xlsm files"
308category = "main"
309optional = false
310python-versions = ">=3.6,"
311
312[package.dependencies]
313et-xmlfile = "*"
314jdcal = "*"
315
316[[package]]
317name = "pillow"
318version = "8.3.2"
319description = "Python Imaging Library (Fork)"
320category = "main"
321optional = false
322python-versions = ">=3.6"
323
324[[package]]
325name = "premailer"
326version = "3.10.0"
327description = "Turns CSS blocks into style attributes"
328category = "main"
329optional = false
330python-versions = "*"
331
332[package.dependencies]
333cachetools = "*"
334cssselect = "*"
335cssutils = "*"
336lxml = "*"
337requests = "*"
338
339[package.extras]
340dev = ["tox", "twine", "therapist", "black", "flake8", "wheel"]
341test = ["nose", "mock"]
342
343[[package]]
344name = "pycparser"
345version = "2.20"
346description = "C parser in Python"
347category = "main"
348optional = false
349python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
350
351[[package]]
352name = "pyjwt"
353version = "1.7.1"
354description = "JSON Web Token implementation in Python"
355category = "main"
356optional = false
357python-versions = "*"
358
359[package.extras]
360crypto = ["cryptography (>=1.4)"]
361flake8 = ["flake8", "flake8-import-order", "pep8-naming"]
362test = ["pytest (>=4.0.1,<5.0.0)", "pytest-cov (>=2.6.0,<3.0.0)", "pytest-runner (>=4.2,<5.0.0)"]
363
364[[package]]
365name = "pyphen"
366version = "0.11.0"
367description = "Pure Python module to hyphenate text"
368category = "main"
369optional = false
370python-versions = ">=3.6"
371
372[package.extras]
373test = ["pytest", "pytest-cov", "pytest-flake8", "pytest-isort", "coverage"]
374
375[[package]]
376name = "python-dateutil"
377version = "2.8.2"
378description = "Extensions to the standard Python datetime module"
379category = "main"
380optional = false
381python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
382
383[package.dependencies]
384six = ">=1.5"
385
386[[package]]
387name = "python-slugify"
388version = "4.0.1"
389description = "A Python Slugify application that handles Unicode"
390category = "main"
391optional = false
392python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
393
394[package.dependencies]
395text-unidecode = ">=1.3"
396
397[package.extras]
398unidecode = ["Unidecode (>=1.1.1)"]
399
400[[package]]
401name = "pyyaml"
402version = "5.3.1"
403description = "YAML parser and emitter for Python"
404category = "main"
405optional = false
406python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
407
408[[package]]
409name = "requests"
410version = "2.26.0"
411description = "Python HTTP for Humans."
412category = "main"
413optional = false
414python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
415
416[package.dependencies]
417certifi = ">=2017.4.17"
418charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""}
419idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""}
420urllib3 = ">=1.21.1,<1.27"
421
422[package.extras]
423socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
424use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"]
425
426[[package]]
427name = "roll"
428version = "0.13.0"
429description = "Roll is a pico framework with performances and aesthetic in mind."
430category = "main"
431optional = false
432python-versions = "*"
433
434[package.dependencies]
435autoroutes = "0.3.5"
436biscuits = "0.3.0"
437httptools = "0.2.0"
438multifruits = "0.1.5"
439websockets = "8.1"
440
441[package.extras]
442docs = ["mkdocs"]
443test = ["pytest"]
444
445[[package]]
446name = "six"
447version = "1.16.0"
448description = "Python 2 and 3 compatibility utilities"
449category = "main"
450optional = false
451python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
452
453[[package]]
454name = "text-unidecode"
455version = "1.3"
456description = "The most basic Text::Unidecode port"
457category = "main"
458optional = false
459python-versions = "*"
460
461[[package]]
462name = "tinycss2"
463version = "1.1.0"
464description = "tinycss2"
465category = "main"
466optional = false
467python-versions = ">=3.6"
468
469[package.dependencies]
470webencodings = ">=0.4"
471
472[package.extras]
473doc = ["sphinx", "sphinx-rtd-theme"]
474test = ["pytest", "pytest-cov", "pytest-flake8", "pytest-isort", "coverage"]
475
476[[package]]
477name = "typing-extensions"
478version = "3.10.0.2"
479description = "Backported and Experimental Type Hints for Python 3.5+"
480category = "main"
481optional = false
482python-versions = "*"
483
484[[package]]
485name = "ujson"
486version = "3.2.0"
487description = "Ultra fast JSON encoder and decoder for Python"
488category = "main"
489optional = false
490python-versions = ">=3.5"
491
492[[package]]
493name = "urllib3"
494version = "1.26.7"
495description = "HTTP library with thread-safe connection pooling, file post, and more."
496category = "main"
497optional = false
498python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
499
500[package.extras]
501brotli = ["brotlipy (>=0.6.0)"]
502secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
503socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
504
505[[package]]
506name = "weasyprint"
507version = "51"
508description = "The Awesome Document Factory"
509category = "main"
510optional = false
511python-versions = ">=3.5"
512
513[package.dependencies]
514cairocffi = ">=0.9.0"
515CairoSVG = ">=2.4.0"
516cffi = ">=0.6"
517cssselect2 = ">=0.1"
518html5lib = ">=0.999999999"
519Pyphen = ">=0.9.1"
520tinycss2 = ">=1.0.0"
521
522[package.extras]
523doc = ["sphinx", "sphinx-rtd-theme"]
524test = ["pytest-runner", "pytest-cov", "pytest-flake8", "pytest-isort"]
525
526[[package]]
527name = "webencodings"
528version = "0.5.1"
529description = "Character encoding aliases for legacy web content"
530category = "main"
531optional = false
532python-versions = "*"
533
534[[package]]
535name = "websockets"
536version = "8.1"
537description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)"
538category = "main"
539optional = false
540python-versions = ">=3.6.1"
541
542[[package]]
543name = "zipp"
544version = "3.6.0"
545description = "Backport of pathlib-compatible object wrapper for zip files"
546category = "main"
547optional = false
548python-versions = ">=3.6"
549
550[package.extras]
551docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
552testing = ["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"]
553
554[metadata]
555lock-version = "1.1"
556python-versions = "^3.7"
557content-hash = "e82001513bafdfab9338f3fe9e786a7cc23c55f7e77a98e6b1d3924ab8887f5f"
558
559[metadata.files]
560autoroutes = [
561 {file = "autoroutes-0.3.5.tar.gz", hash = "sha256:087fcc5bd7e6f457931b9e8420d575f6aa7d35803d667013463c58d2bcf6b814"},
562]
563biscuits = [
564 {file = "biscuits-0.3.0.tar.gz", hash = "sha256:08b899164133c81b99b7307d629a45e2fb6a3bcc3ea7c08b1ff24b464b411307"},
565]
566cachetools = [
567 {file = "cachetools-4.2.4-py3-none-any.whl", hash = "sha256:92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1"},
568 {file = "cachetools-4.2.4.tar.gz", hash = "sha256:89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693"},
569]
570cairocffi = [
571 {file = "cairocffi-1.3.0.tar.gz", hash = "sha256:108a3a7cb09e203bdd8501d9baad91d786d204561bd71e9364e8b34897c47b91"},
572]
573cairosvg = [
574 {file = "CairoSVG-2.5.2-py3-none-any.whl", hash = "sha256:98c276b7e4f0caf01e5c7176765c104ffa1aa1461d63b2053b04ab663cf7052b"},
575 {file = "CairoSVG-2.5.2.tar.gz", hash = "sha256:b0b9929cf5dba005178d746a8036fcf0025550f498ca54db61873322384783bc"},
576]
577certifi = [
578 {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"},
579 {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"},
580]
581cffi = [
582 {file = "cffi-1.14.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:22b9c3c320171c108e903d61a3723b51e37aaa8c81255b5e7ce102775bd01e2c"},
583 {file = "cffi-1.14.6-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:f0c5d1acbfca6ebdd6b1e3eded8d261affb6ddcf2186205518f1428b8569bb99"},
584 {file = "cffi-1.14.6-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:99f27fefe34c37ba9875f224a8f36e31d744d8083e00f520f133cab79ad5e819"},
585 {file = "cffi-1.14.6-cp27-cp27m-win32.whl", hash = "sha256:55af55e32ae468e9946f741a5d51f9896da6b9bf0bbdd326843fec05c730eb20"},
586 {file = "cffi-1.14.6-cp27-cp27m-win_amd64.whl", hash = "sha256:7bcac9a2b4fdbed2c16fa5681356d7121ecabf041f18d97ed5b8e0dd38a80224"},
587 {file = "cffi-1.14.6-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ed38b924ce794e505647f7c331b22a693bee1538fdf46b0222c4717b42f744e7"},
588 {file = "cffi-1.14.6-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e22dcb48709fc51a7b58a927391b23ab37eb3737a98ac4338e2448bef8559b33"},
589 {file = "cffi-1.14.6-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:aedb15f0a5a5949ecb129a82b72b19df97bbbca024081ed2ef88bd5c0a610534"},
590 {file = "cffi-1.14.6-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:48916e459c54c4a70e52745639f1db524542140433599e13911b2f329834276a"},
591 {file = "cffi-1.14.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f627688813d0a4140153ff532537fbe4afea5a3dffce1f9deb7f91f848a832b5"},
592 {file = "cffi-1.14.6-cp35-cp35m-win32.whl", hash = "sha256:f0010c6f9d1a4011e429109fda55a225921e3206e7f62a0c22a35344bfd13cca"},
593 {file = "cffi-1.14.6-cp35-cp35m-win_amd64.whl", hash = "sha256:57e555a9feb4a8460415f1aac331a2dc833b1115284f7ded7278b54afc5bd218"},
594 {file = "cffi-1.14.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e8c6a99be100371dbb046880e7a282152aa5d6127ae01783e37662ef73850d8f"},
595 {file = "cffi-1.14.6-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:19ca0dbdeda3b2615421d54bef8985f72af6e0c47082a8d26122adac81a95872"},
596 {file = "cffi-1.14.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d950695ae4381ecd856bcaf2b1e866720e4ab9a1498cba61c602e56630ca7195"},
597 {file = "cffi-1.14.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9dc245e3ac69c92ee4c167fbdd7428ec1956d4e754223124991ef29eb57a09d"},
598 {file = "cffi-1.14.6-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8661b2ce9694ca01c529bfa204dbb144b275a31685a075ce123f12331be790b"},
599 {file = "cffi-1.14.6-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b315d709717a99f4b27b59b021e6207c64620790ca3e0bde636a6c7f14618abb"},
600 {file = "cffi-1.14.6-cp36-cp36m-win32.whl", hash = "sha256:80b06212075346b5546b0417b9f2bf467fea3bfe7352f781ffc05a8ab24ba14a"},
601 {file = "cffi-1.14.6-cp36-cp36m-win_amd64.whl", hash = "sha256:a9da7010cec5a12193d1af9872a00888f396aba3dc79186604a09ea3ee7c029e"},
602 {file = "cffi-1.14.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4373612d59c404baeb7cbd788a18b2b2a8331abcc84c3ba40051fcd18b17a4d5"},
603 {file = "cffi-1.14.6-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f10afb1004f102c7868ebfe91c28f4a712227fe4cb24974350ace1f90e1febbf"},
604 {file = "cffi-1.14.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fd4305f86f53dfd8cd3522269ed7fc34856a8ee3709a5e28b2836b2db9d4cd69"},
605 {file = "cffi-1.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d6169cb3c6c2ad50db5b868db6491a790300ade1ed5d1da29289d73bbe40b56"},
606 {file = "cffi-1.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d4b68e216fc65e9fe4f524c177b54964af043dde734807586cf5435af84045c"},
607 {file = "cffi-1.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33791e8a2dc2953f28b8d8d300dde42dd929ac28f974c4b4c6272cb2955cb762"},
608 {file = "cffi-1.14.6-cp37-cp37m-win32.whl", hash = "sha256:0c0591bee64e438883b0c92a7bed78f6290d40bf02e54c5bf0978eaf36061771"},
609 {file = "cffi-1.14.6-cp37-cp37m-win_amd64.whl", hash = "sha256:8eb687582ed7cd8c4bdbff3df6c0da443eb89c3c72e6e5dcdd9c81729712791a"},
610 {file = "cffi-1.14.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ba6f2b3f452e150945d58f4badd92310449876c4c954836cfb1803bdd7b422f0"},
611 {file = "cffi-1.14.6-cp38-cp38-manylinux1_i686.whl", hash = "sha256:64fda793737bc4037521d4899be780534b9aea552eb673b9833b01f945904c2e"},
612 {file = "cffi-1.14.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:9f3e33c28cd39d1b655ed1ba7247133b6f7fc16fa16887b120c0c670e35ce346"},
613 {file = "cffi-1.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26bb2549b72708c833f5abe62b756176022a7b9a7f689b571e74c8478ead51dc"},
614 {file = "cffi-1.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb687a11f0a7a1839719edd80f41e459cc5366857ecbed383ff376c4e3cc6afd"},
615 {file = "cffi-1.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2ad4d668a5c0645d281dcd17aff2be3212bc109b33814bbb15c4939f44181cc"},
616 {file = "cffi-1.14.6-cp38-cp38-win32.whl", hash = "sha256:487d63e1454627c8e47dd230025780e91869cfba4c753a74fda196a1f6ad6548"},
617 {file = "cffi-1.14.6-cp38-cp38-win_amd64.whl", hash = "sha256:c33d18eb6e6bc36f09d793c0dc58b0211fccc6ae5149b808da4a62660678b156"},
618 {file = "cffi-1.14.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:06c54a68935738d206570b20da5ef2b6b6d92b38ef3ec45c5422c0ebaf338d4d"},
619 {file = "cffi-1.14.6-cp39-cp39-manylinux1_i686.whl", hash = "sha256:f174135f5609428cc6e1b9090f9268f5c8935fddb1b25ccb8255a2d50de6789e"},
620 {file = "cffi-1.14.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f3ebe6e73c319340830a9b2825d32eb6d8475c1dac020b4f0aa774ee3b898d1c"},
621 {file = "cffi-1.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c8d896becff2fa653dc4438b54a5a25a971d1f4110b32bd3068db3722c80202"},
622 {file = "cffi-1.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4922cd707b25e623b902c86188aca466d3620892db76c0bdd7b99a3d5e61d35f"},
623 {file = "cffi-1.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c9e005e9bd57bc987764c32a1bee4364c44fdc11a3cc20a40b93b444984f2b87"},
624 {file = "cffi-1.14.6-cp39-cp39-win32.whl", hash = "sha256:eb9e2a346c5238a30a746893f23a9535e700f8192a68c07c0258e7ece6ff3728"},
625 {file = "cffi-1.14.6-cp39-cp39-win_amd64.whl", hash = "sha256:818014c754cd3dba7229c0f5884396264d51ffb87ec86e927ef0be140bfdb0d2"},
626 {file = "cffi-1.14.6.tar.gz", hash = "sha256:c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd"},
627]
628chardet = [
629 {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"},
630 {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"},
631]
632charset-normalizer = [
633 {file = "charset-normalizer-2.0.6.tar.gz", hash = "sha256:5ec46d183433dcbd0ab716f2d7f29d8dee50505b3fdb40c6b985c7c4f5a3591f"},
634 {file = "charset_normalizer-2.0.6-py3-none-any.whl", hash = "sha256:5d209c0a931f215cee683b6445e2d77677e7e75e159f78def0db09d68fafcaa6"},
635]
636cssselect = [
637 {file = "cssselect-1.1.0-py2.py3-none-any.whl", hash = "sha256:f612ee47b749c877ebae5bb77035d8f4202c6ad0f0fc1271b3c18ad6c4468ecf"},
638 {file = "cssselect-1.1.0.tar.gz", hash = "sha256:f95f8dedd925fd8f54edb3d2dfb44c190d9d18512377d3c1e2388d16126879bc"},
639]
640cssselect2 = [
641 {file = "cssselect2-0.4.1-py3-none-any.whl", hash = "sha256:2f4a9f20965367bae459e3bb42561f7927e0cfe5b7ea1692757cf67ef5d7dace"},
642 {file = "cssselect2-0.4.1.tar.gz", hash = "sha256:93fbb9af860e95dd40bf18c3b2b6ed99189a07c0f29ba76f9c5be71344664ec8"},
643]
644cssutils = [
645 {file = "cssutils-2.3.0-py3-none-any.whl", hash = "sha256:0cf1f6086b020dee18048ff3999339499f725934017ef9ae2cd5bb77f9ab5f46"},
646 {file = "cssutils-2.3.0.tar.gz", hash = "sha256:b2d3b16047caae82e5c590036935bafa1b621cf45c2f38885af4be4838f0fd00"},
647]
648debts = [
649 {file = "debts-0.5.tar.gz", hash = "sha256:f239fa356500b0cc7d2334a6ad45dcaf542796f759ca44052c59566afca8e5f8"},
650]
651defusedxml = [
652 {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
653 {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
654]
655emails = [
656 {file = "emails-0.6-py2.py3-none-any.whl", hash = "sha256:72c1e3198075709cc35f67e1b49e2da1a2bc087e9b444073db61a379adfb7f3c"},
657 {file = "emails-0.6.tar.gz", hash = "sha256:a4c2d67ea8b8831967a750d8edc6e77040d7693143fe280e6d2a367d9c36ff88"},
658]
659et-xmlfile = [
660 {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"},
661 {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"},
662]
663html5lib = [
664 {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"},
665 {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"},
666]
667httptools = [
668 {file = "httptools-0.2.0-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:79dbc21f3612a78b28384e989b21872e2e3cf3968532601544696e4ed0007ce5"},
669 {file = "httptools-0.2.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:78d03dd39b09c99ec917d50189e6743adbfd18c15d5944392d2eabda688bf149"},
670 {file = "httptools-0.2.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:a23166e5ae2775709cf4f7ad4c2048755ebfb272767d244e1a96d55ac775cca7"},
671 {file = "httptools-0.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:3ab1f390d8867f74b3b5ee2a7ecc9b8d7f53750bd45714bf1cb72a953d7dfa77"},
672 {file = "httptools-0.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a7594f9a010cdf1e16a58b3bf26c9da39bbf663e3b8d46d39176999d71816658"},
673 {file = "httptools-0.2.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:01b392a166adcc8bc2f526a939a8aabf89fe079243e1543fd0e7dc1b58d737cb"},
674 {file = "httptools-0.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:80ffa04fe8c8dfacf6e4cef8277347d35b0442c581f5814f3b0cf41b65c43c6e"},
675 {file = "httptools-0.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d5682eeb10cca0606c4a8286a3391d4c3c5a36f0c448e71b8bd05be4e1694bfb"},
676 {file = "httptools-0.2.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:a289c27ccae399a70eacf32df9a44059ca2ba4ac444604b00a19a6c1f0809943"},
677 {file = "httptools-0.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:813871f961edea6cb2fe312f2d9b27d12a51ba92545380126f80d0de1917ea15"},
678 {file = "httptools-0.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:cc9be041e428c10f8b6ab358c6b393648f9457094e1dcc11b4906026d43cd380"},
679 {file = "httptools-0.2.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:b08d00d889a118f68f37f3c43e359aab24ee29eb2e3fe96d64c6a2ba8b9d6557"},
680 {file = "httptools-0.2.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:fd3b8905e21431ad306eeaf56644a68fdd621bf8f3097eff54d0f6bdf7262065"},
681 {file = "httptools-0.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:200fc1cdf733a9ff554c0bb97a4047785cfaad9875307d6087001db3eb2b417f"},
682 {file = "httptools-0.2.0.tar.gz", hash = "sha256:94505026be56652d7a530ab03d89474dc6021019d6b8682281977163b3471ea0"},
683]
684idna = [
685 {file = "idna-3.2-py3-none-any.whl", hash = "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a"},
686 {file = "idna-3.2.tar.gz", hash = "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3"},
687]
688importlib-metadata = [
689 {file = "importlib_metadata-4.8.1-py3-none-any.whl", hash = "sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15"},
690 {file = "importlib_metadata-4.8.1.tar.gz", hash = "sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1"},
691]
692jdcal = [
693 {file = "jdcal-1.4.1-py2.py3-none-any.whl", hash = "sha256:1abf1305fce18b4e8aa248cf8fe0c56ce2032392bc64bbd61b5dff2a19ec8bba"},
694 {file = "jdcal-1.4.1.tar.gz", hash = "sha256:472872e096eb8df219c23f2689fc336668bdb43d194094b5cc1707e1640acfc8"},
695]
696jinja2 = [
697 {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"},
698 {file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"},
699]
700lxml = [
701 {file = "lxml-4.6.3-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:df7c53783a46febb0e70f6b05df2ba104610f2fb0d27023409734a3ecbb78fb2"},
702 {file = "lxml-4.6.3-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:1b7584d421d254ab86d4f0b13ec662a9014397678a7c4265a02a6d7c2b18a75f"},
703 {file = "lxml-4.6.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:079f3ae844f38982d156efce585bc540c16a926d4436712cf4baee0cce487a3d"},
704 {file = "lxml-4.6.3-cp27-cp27m-win32.whl", hash = "sha256:bc4313cbeb0e7a416a488d72f9680fffffc645f8a838bd2193809881c67dd106"},
705 {file = "lxml-4.6.3-cp27-cp27m-win_amd64.whl", hash = "sha256:8157dadbb09a34a6bd95a50690595e1fa0af1a99445e2744110e3dca7831c4ee"},
706 {file = "lxml-4.6.3-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7728e05c35412ba36d3e9795ae8995e3c86958179c9770e65558ec3fdfd3724f"},
707 {file = "lxml-4.6.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:4bff24dfeea62f2e56f5bab929b4428ae6caba2d1eea0c2d6eb618e30a71e6d4"},
708 {file = "lxml-4.6.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:74f7d8d439b18fa4c385f3f5dfd11144bb87c1da034a466c5b5577d23a1d9b51"},
709 {file = "lxml-4.6.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f90ba11136bfdd25cae3951af8da2e95121c9b9b93727b1b896e3fa105b2f586"},
710 {file = "lxml-4.6.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:4c61b3a0db43a1607d6264166b230438f85bfed02e8cff20c22e564d0faff354"},
711 {file = "lxml-4.6.3-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:5c8c163396cc0df3fd151b927e74f6e4acd67160d6c33304e805b84293351d16"},
712 {file = "lxml-4.6.3-cp35-cp35m-win32.whl", hash = "sha256:f2380a6376dfa090227b663f9678150ef27543483055cc327555fb592c5967e2"},
713 {file = "lxml-4.6.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c4f05c5a7c49d2fb70223d0d5bcfbe474cf928310ac9fa6a7c6dddc831d0b1d4"},
714 {file = "lxml-4.6.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d2e35d7bf1c1ac8c538f88d26b396e73dd81440d59c1ef8522e1ea77b345ede4"},
715 {file = "lxml-4.6.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:289e9ca1a9287f08daaf796d96e06cb2bc2958891d7911ac7cae1c5f9e1e0ee3"},
716 {file = "lxml-4.6.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:bccbfc27563652de7dc9bdc595cb25e90b59c5f8e23e806ed0fd623755b6565d"},
717 {file = "lxml-4.6.3-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:d916d31fd85b2f78c76400d625076d9124de3e4bda8b016d25a050cc7d603f24"},
718 {file = "lxml-4.6.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:820628b7b3135403540202e60551e741f9b6d3304371712521be939470b454ec"},
719 {file = "lxml-4.6.3-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:c47ff7e0a36d4efac9fd692cfa33fbd0636674c102e9e8d9b26e1b93a94e7617"},
720 {file = "lxml-4.6.3-cp36-cp36m-win32.whl", hash = "sha256:5a0a14e264069c03e46f926be0d8919f4105c1623d620e7ec0e612a2e9bf1c04"},
721 {file = "lxml-4.6.3-cp36-cp36m-win_amd64.whl", hash = "sha256:92e821e43ad382332eade6812e298dc9701c75fe289f2a2d39c7960b43d1e92a"},
722 {file = "lxml-4.6.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:efd7a09678fd8b53117f6bae4fa3825e0a22b03ef0a932e070c0bdbb3a35e654"},
723 {file = "lxml-4.6.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:efac139c3f0bf4f0939f9375af4b02c5ad83a622de52d6dfa8e438e8e01d0eb0"},
724 {file = "lxml-4.6.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:0fbcf5565ac01dff87cbfc0ff323515c823081c5777a9fc7703ff58388c258c3"},
725 {file = "lxml-4.6.3-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:36108c73739985979bf302006527cf8a20515ce444ba916281d1c43938b8bb96"},
726 {file = "lxml-4.6.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:122fba10466c7bd4178b07dba427aa516286b846b2cbd6f6169141917283aae2"},
727 {file = "lxml-4.6.3-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:cdaf11d2bd275bf391b5308f86731e5194a21af45fbaaaf1d9e8147b9160ea92"},
728 {file = "lxml-4.6.3-cp37-cp37m-win32.whl", hash = "sha256:3439c71103ef0e904ea0a1901611863e51f50b5cd5e8654a151740fde5e1cade"},
729 {file = "lxml-4.6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:4289728b5e2000a4ad4ab8da6e1db2e093c63c08bdc0414799ee776a3f78da4b"},
730 {file = "lxml-4.6.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b007cbb845b28db4fb8b6a5cdcbf65bacb16a8bd328b53cbc0698688a68e1caa"},
731 {file = "lxml-4.6.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:76fa7b1362d19f8fbd3e75fe2fb7c79359b0af8747e6f7141c338f0bee2f871a"},
732 {file = "lxml-4.6.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:26e761ab5b07adf5f555ee82fb4bfc35bf93750499c6c7614bd64d12aaa67927"},
733 {file = "lxml-4.6.3-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:e1cbd3f19a61e27e011e02f9600837b921ac661f0c40560eefb366e4e4fb275e"},
734 {file = "lxml-4.6.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:66e575c62792c3f9ca47cb8b6fab9e35bab91360c783d1606f758761810c9791"},
735 {file = "lxml-4.6.3-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:1b38116b6e628118dea5b2186ee6820ab138dbb1e24a13e478490c7db2f326ae"},
736 {file = "lxml-4.6.3-cp38-cp38-win32.whl", hash = "sha256:89b8b22a5ff72d89d48d0e62abb14340d9e99fd637d046c27b8b257a01ffbe28"},
737 {file = "lxml-4.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:2a9d50e69aac3ebee695424f7dbd7b8c6d6eb7de2a2eb6b0f6c7db6aa41e02b7"},
738 {file = "lxml-4.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ce256aaa50f6cc9a649c51be3cd4ff142d67295bfc4f490c9134d0f9f6d58ef0"},
739 {file = "lxml-4.6.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:7610b8c31688f0b1be0ef882889817939490a36d0ee880ea562a4e1399c447a1"},
740 {file = "lxml-4.6.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f8380c03e45cf09f8557bdaa41e1fa7c81f3ae22828e1db470ab2a6c96d8bc23"},
741 {file = "lxml-4.6.3-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:3082c518be8e97324390614dacd041bb1358c882d77108ca1957ba47738d9d59"},
742 {file = "lxml-4.6.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:884ab9b29feaca361f7f88d811b1eea9bfca36cf3da27768d28ad45c3ee6f969"},
743 {file = "lxml-4.6.3-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:6f12e1427285008fd32a6025e38e977d44d6382cf28e7201ed10d6c1698d2a9a"},
744 {file = "lxml-4.6.3-cp39-cp39-win32.whl", hash = "sha256:33bb934a044cf32157c12bfcfbb6649807da20aa92c062ef51903415c704704f"},
745 {file = "lxml-4.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:542d454665a3e277f76954418124d67516c5f88e51a900365ed54a9806122b83"},
746 {file = "lxml-4.6.3.tar.gz", hash = "sha256:39b78571b3b30645ac77b95f7c69d1bffc4cf8c3b157c435a34da72e78c82468"},
747]
748markupsafe = [
749 {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"},
750 {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"},
751 {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"},
752 {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"},
753 {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"},
754 {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"},
755 {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"},
756 {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
757 {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"},
758 {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"},
759 {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"},
760 {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"},
761 {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"},
762 {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"},
763 {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"},
764 {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"},
765 {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"},
766 {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"},
767 {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"},
768 {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"},
769 {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"},
770 {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"},
771 {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"},
772 {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"},
773 {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"},
774 {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"},
775 {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"},
776 {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"},
777 {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"},
778 {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"},
779 {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"},
780 {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"},
781 {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"},
782 {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"},
783 {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"},
784 {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"},
785 {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"},
786 {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"},
787 {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"},
788 {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"},
789 {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"},
790 {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"},
791 {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"},
792 {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"},
793 {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"},
794 {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"},
795 {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"},
796 {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"},
797 {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"},
798 {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"},
799 {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"},
800 {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"},
801 {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
802 {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
803]
804minicli = [
805 {file = "minicli-0.5.0-py3-none-any.whl", hash = "sha256:c6118c0c6c5678cfc2ad7317dca9bfa8c4da2363337a0adbe526aeeb3007582e"},
806 {file = "minicli-0.5.0.tar.gz", hash = "sha256:baea96017039c0eba448cd07d746eda623be3226367b3a532d3843154bb347ad"},
807]
808multifruits = [
809 {file = "multifruits-0.1.5.tar.gz", hash = "sha256:c5eff8b375121b96a96a0c4bd05cd817ec7e204feadc6c6a211ca16029f78a7f"},
810]
811openpyxl = [
812 {file = "openpyxl-3.0.5-py2.py3-none-any.whl", hash = "sha256:f7d666b569f729257082cf7ddc56262431878f602dcc2bc3980775c59439cdab"},
813 {file = "openpyxl-3.0.5.tar.gz", hash = "sha256:18e11f9a650128a12580a58e3daba14e00a11d9e907c554a17ea016bf1a2c71b"},
814]
815pillow = [
816 {file = "Pillow-8.3.2-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:c691b26283c3a31594683217d746f1dad59a7ae1d4cfc24626d7a064a11197d4"},
817 {file = "Pillow-8.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f514c2717012859ccb349c97862568fdc0479aad85b0270d6b5a6509dbc142e2"},
818 {file = "Pillow-8.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be25cb93442c6d2f8702c599b51184bd3ccd83adebd08886b682173e09ef0c3f"},
819 {file = "Pillow-8.3.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d675a876b295afa114ca8bf42d7f86b5fb1298e1b6bb9a24405a3f6c8338811c"},
820 {file = "Pillow-8.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59697568a0455764a094585b2551fd76bfd6b959c9f92d4bdec9d0e14616303a"},
821 {file = "Pillow-8.3.2-cp310-cp310-win32.whl", hash = "sha256:2d5e9dc0bf1b5d9048a94c48d0813b6c96fccfa4ccf276d9c36308840f40c228"},
822 {file = "Pillow-8.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:11c27e74bab423eb3c9232d97553111cc0be81b74b47165f07ebfdd29d825875"},
823 {file = "Pillow-8.3.2-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:11eb7f98165d56042545c9e6db3ce394ed8b45089a67124298f0473b29cb60b2"},
824 {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f23b2d3079522fdf3c09de6517f625f7a964f916c956527bed805ac043799b8"},
825 {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19ec4cfe4b961edc249b0e04b5618666c23a83bc35842dea2bfd5dfa0157f81b"},
826 {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5a31c07cea5edbaeb4bdba6f2b87db7d3dc0f446f379d907e51cc70ea375629"},
827 {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15ccb81a6ffc57ea0137f9f3ac2737ffa1d11f786244d719639df17476d399a7"},
828 {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8f284dc1695caf71a74f24993b7c7473d77bc760be45f776a2c2f4e04c170550"},
829 {file = "Pillow-8.3.2-cp36-cp36m-win32.whl", hash = "sha256:4abc247b31a98f29e5224f2d31ef15f86a71f79c7f4d2ac345a5d551d6393073"},
830 {file = "Pillow-8.3.2-cp36-cp36m-win_amd64.whl", hash = "sha256:a048dad5ed6ad1fad338c02c609b862dfaa921fcd065d747194a6805f91f2196"},
831 {file = "Pillow-8.3.2-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:06d1adaa284696785375fa80a6a8eb309be722cf4ef8949518beb34487a3df71"},
832 {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd24054aaf21e70a51e2a2a5ed1183560d3a69e6f9594a4bfe360a46f94eba83"},
833 {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a330bf7014ee034046db43ccbb05c766aa9e70b8d6c5260bfc38d73103b0ba"},
834 {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13654b521fb98abdecec105ea3fb5ba863d1548c9b58831dd5105bb3873569f1"},
835 {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a1bd983c565f92779be456ece2479840ec39d386007cd4ae83382646293d681b"},
836 {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4326ea1e2722f3dc00ed77c36d3b5354b8fb7399fb59230249ea6d59cbed90da"},
837 {file = "Pillow-8.3.2-cp37-cp37m-win32.whl", hash = "sha256:085a90a99404b859a4b6c3daa42afde17cb3ad3115e44a75f0d7b4a32f06a6c9"},
838 {file = "Pillow-8.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:18a07a683805d32826c09acfce44a90bf474e6a66ce482b1c7fcd3757d588df3"},
839 {file = "Pillow-8.3.2-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4e59e99fd680e2b8b11bbd463f3c9450ab799305d5f2bafb74fefba6ac058616"},
840 {file = "Pillow-8.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4d89a2e9219a526401015153c0e9dd48319ea6ab9fe3b066a20aa9aee23d9fd3"},
841 {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56fd98c8294f57636084f4b076b75f86c57b2a63a8410c0cd172bc93695ee979"},
842 {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b11c9d310a3522b0fd3c35667914271f570576a0e387701f370eb39d45f08a4"},
843 {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0412516dcc9de9b0a1e0ae25a280015809de8270f134cc2c1e32c4eeb397cf30"},
844 {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bcb04ff12e79b28be6c9988f275e7ab69f01cc2ba319fb3114f87817bb7c74b6"},
845 {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0b9911ec70731711c3b6ebcde26caea620cbdd9dcb73c67b0730c8817f24711b"},
846 {file = "Pillow-8.3.2-cp38-cp38-win32.whl", hash = "sha256:ce2e5e04bb86da6187f96d7bab3f93a7877830981b37f0287dd6479e27a10341"},
847 {file = "Pillow-8.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:35d27687f027ad25a8d0ef45dd5208ef044c588003cdcedf05afb00dbc5c2deb"},
848 {file = "Pillow-8.3.2-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:04835e68ef12904bc3e1fd002b33eea0779320d4346082bd5b24bec12ad9c3e9"},
849 {file = "Pillow-8.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:10e00f7336780ca7d3653cf3ac26f068fa11b5a96894ea29a64d3dc4b810d630"},
850 {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cde7a4d3687f21cffdf5bb171172070bb95e02af448c4c8b2f223d783214056"},
851 {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c3ff00110835bdda2b1e2b07f4a2548a39744bb7de5946dc8e95517c4fb2ca6"},
852 {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35d409030bf3bd05fa66fb5fdedc39c521b397f61ad04309c90444e893d05f7d"},
853 {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bff50ba9891be0a004ef48828e012babaaf7da204d81ab9be37480b9020a82b"},
854 {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7dbfbc0020aa1d9bc1b0b8bcf255a7d73f4ad0336f8fd2533fcc54a4ccfb9441"},
855 {file = "Pillow-8.3.2-cp39-cp39-win32.whl", hash = "sha256:963ebdc5365d748185fdb06daf2ac758116deecb2277ec5ae98139f93844bc09"},
856 {file = "Pillow-8.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:cc9d0dec711c914ed500f1d0d3822868760954dce98dfb0b7382a854aee55d19"},
857 {file = "Pillow-8.3.2-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2c661542c6f71dfd9dc82d9d29a8386287e82813b0375b3a02983feac69ef864"},
858 {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:548794f99ff52a73a156771a0402f5e1c35285bd981046a502d7e4793e8facaa"},
859 {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8b68f565a4175e12e68ca900af8910e8fe48aaa48fd3ca853494f384e11c8bcd"},
860 {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:838eb85de6d9307c19c655c726f8d13b8b646f144ca6b3771fa62b711ebf7624"},
861 {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:feb5db446e96bfecfec078b943cc07744cc759893cef045aa8b8b6d6aaa8274e"},
862 {file = "Pillow-8.3.2-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:fc0db32f7223b094964e71729c0361f93db43664dd1ec86d3df217853cedda87"},
863 {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fd4fd83aa912d7b89b4b4a1580d30e2a4242f3936882a3f433586e5ab97ed0d5"},
864 {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0c8ebbfd439c37624db98f3877d9ed12c137cadd99dde2d2eae0dab0bbfc355"},
865 {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6cb3dd7f23b044b0737317f892d399f9e2f0b3a02b22b2c692851fb8120d82c6"},
866 {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a66566f8a22561fc1a88dc87606c69b84fa9ce724f99522cf922c801ec68f5c1"},
867 {file = "Pillow-8.3.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ce651ca46d0202c302a535d3047c55a0131a720cf554a578fc1b8a2aff0e7d96"},
868 {file = "Pillow-8.3.2.tar.gz", hash = "sha256:dde3f3ed8d00c72631bc19cbfff8ad3b6215062a5eed402381ad365f82f0c18c"},
869]
870premailer = [
871 {file = "premailer-3.10.0-py2.py3-none-any.whl", hash = "sha256:021b8196364d7df96d04f9ade51b794d0b77bcc19e998321c515633a2273be1a"},
872 {file = "premailer-3.10.0.tar.gz", hash = "sha256:d1875a8411f5dc92b53ef9f193db6c0f879dc378d618e0ad292723e388bfe4c2"},
873]
874pycparser = [
875 {file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"},
876 {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"},
877]
878pyjwt = [
879 {file = "PyJWT-1.7.1-py2.py3-none-any.whl", hash = "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e"},
880 {file = "PyJWT-1.7.1.tar.gz", hash = "sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"},
881]
882pyphen = [
883 {file = "pyphen-0.11.0-py3-none-any.whl", hash = "sha256:e3c1b1d05deaa31acdd78e2e24005402358feb7a4b407c4af7e5cc2e41c4d608"},
884 {file = "pyphen-0.11.0.tar.gz", hash = "sha256:e2c3ed82c3a04317df5102addafe89652b0876bc6c6265f5dd4c3efaf02315e8"},
885]
886python-dateutil = [
887 {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
888 {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
889]
890python-slugify = [
891 {file = "python-slugify-4.0.1.tar.gz", hash = "sha256:69a517766e00c1268e5bbfc0d010a0a8508de0b18d30ad5a1ff357f8ae724270"},
892]
893pyyaml = [
894 {file = "PyYAML-5.3.1-cp27-cp27m-win32.whl", hash = "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f"},
895 {file = "PyYAML-5.3.1-cp27-cp27m-win_amd64.whl", hash = "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76"},
896 {file = "PyYAML-5.3.1-cp35-cp35m-win32.whl", hash = "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2"},
897 {file = "PyYAML-5.3.1-cp35-cp35m-win_amd64.whl", hash = "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c"},
898 {file = "PyYAML-5.3.1-cp36-cp36m-win32.whl", hash = "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2"},
899 {file = "PyYAML-5.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648"},
900 {file = "PyYAML-5.3.1-cp37-cp37m-win32.whl", hash = "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a"},
901 {file = "PyYAML-5.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf"},
902 {file = "PyYAML-5.3.1-cp38-cp38-win32.whl", hash = "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97"},
903 {file = "PyYAML-5.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee"},
904 {file = "PyYAML-5.3.1-cp39-cp39-win32.whl", hash = "sha256:ad9c67312c84def58f3c04504727ca879cb0013b2517c85a9a253f0cb6380c0a"},
905 {file = "PyYAML-5.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:6034f55dab5fea9e53f436aa68fa3ace2634918e8b5994d82f3621c04ff5ed2e"},
906 {file = "PyYAML-5.3.1.tar.gz", hash = "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d"},
907]
908requests = [
909 {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"},
910 {file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"},
911]
912roll = [
913 {file = "roll-0.13.0-py3-none-any.whl", hash = "sha256:a9a833c791167406599f4a234c7b244e074e9e1c796f94adf99bde2894730684"},
914 {file = "roll-0.13.0.tar.gz", hash = "sha256:5847d408bc74ec495d55fe7b482b4d780f88fc6ab56c0bef49336d3fa078e050"},
915]
916six = [
917 {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
918 {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
919]
920text-unidecode = [
921 {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"},
922 {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"},
923]
924tinycss2 = [
925 {file = "tinycss2-1.1.0-py3-none-any.whl", hash = "sha256:0353b5234bcaee7b1ac7ca3dea7e02cd338a9f8dcbb8f2dcd32a5795ec1e5f9a"},
926 {file = "tinycss2-1.1.0.tar.gz", hash = "sha256:fbdcac3044d60eb85fdb2aa840ece43cf7dbe798e373e6ee0be545d4d134e18a"},
927]
928typing-extensions = [
929 {file = "typing_extensions-3.10.0.2-py2-none-any.whl", hash = "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7"},
930 {file = "typing_extensions-3.10.0.2-py3-none-any.whl", hash = "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"},
931 {file = "typing_extensions-3.10.0.2.tar.gz", hash = "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e"},
932]
933ujson = [
934 {file = "ujson-3.2.0-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:437e051a3e292ddbd5b4682f9b6c3e2ea4cd059d0d75bc9f8314349d63cbb015"},
935 {file = "ujson-3.2.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:a27ea44406100a97fb0fcc0b18dcdaf324824e722a00856a2992fafc65779351"},
936 {file = "ujson-3.2.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6f7c24dabb0ff0ff43744d18211af6035ef37197f530c13edf704e627da7251d"},
937 {file = "ujson-3.2.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:5ae6f599ef7c01ef626697f9e15e9d4e2a186ab4c0593ddb529b86866b562efb"},
938 {file = "ujson-3.2.0-cp35-cp35m-win_amd64.whl", hash = "sha256:59048958793e0b0489449a414e2fbe54644457be1dd882b99a4fe16158632af1"},
939 {file = "ujson-3.2.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:a476525862a394018a7a3438c86596815b84518b2744184444fc6f8b0e3e4aee"},
940 {file = "ujson-3.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:2050c7f1ce72055f1b6fba29e4694ccf4509917d3be3ed6f3543ef3ff00eec4a"},
941 {file = "ujson-3.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:fda324ca055e671eae46e8fc32b46fab20eb251d3e6e22beb67f71f1d240b0b4"},
942 {file = "ujson-3.2.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:0bdc62a1543d697e9c649ac0ac41e0d076a7b886d6b45f9f21971e25b90a2b27"},
943 {file = "ujson-3.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d0ad63fc88d4e4cb7630f59aacd742256804a4cee447e9589e55957107a469b7"},
944 {file = "ujson-3.2.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:66d47eabb4f0e12b5784b1a49c59bc6f32e91e18e02f2a43c5e91e2f6ad9cc60"},
945 {file = "ujson-3.2.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:253edfe274538bb1060ab8877d51fc75e416047d5fab5340454a48b971f30612"},
946 {file = "ujson-3.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:6ee651c0210a67e3a72367de53ccac83b623913214e7c75015caadfad2b7e0dc"},
947 {file = "ujson-3.2.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:0784f35f2ace41ed55c435ee11f9d9877cf3e6ff03c8850f87504cb93e9a9469"},
948 {file = "ujson-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:812748c8de041f1ef5e9b37f33121c0c7390055fa5f12215b3d06a63b1c055a2"},
949 {file = "ujson-3.2.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:17460d88dd4b9630e449e5d29b97301e6dbbbedbf46a6f95f3b2cb7e1333e6ea"},
950 {file = "ujson-3.2.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:2d50cb3d87d4aabe6dbeb6ef79025bf9fdf350c4355c24819dc5c5cc38bad3dc"},
951 {file = "ujson-3.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7060105de892cada2f01bd072d33b2421b4eefd32536207c1c9f2ade18656139"},
952 {file = "ujson-3.2.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:7b6496b3e2bc396628f114fd96ec41655b10c84adececc0ef8cf1c2329dae36c"},
953 {file = "ujson-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:782bdf016da793a3bf138e50ed973428e59006b8d73a9e1911bc6207c6b79fff"},
954 {file = "ujson-3.2.0.tar.gz", hash = "sha256:abb1996ba1c1d2faf5b1e38efa97da7f64e5373a31f705b96fe0587f5f778db4"},
955]
956urllib3 = [
957 {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"},
958 {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"},
959]
960weasyprint = [
961 {file = "WeasyPrint-51-py3-none-any.whl", hash = "sha256:469974f6e74b1eef71dc56a9b80cc17621f319234d2a4ab656ddd0fd9e66c27f"},
962 {file = "WeasyPrint-51.tar.gz", hash = "sha256:b3e971973a4f03c1430e6b838b75b5b57630415fcae8666d2be1347630ff6d6a"},
963]
964webencodings = [
965 {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
966 {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
967]
968websockets = [
969 {file = "websockets-8.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:3762791ab8b38948f0c4d281c8b2ddfa99b7e510e46bd8dfa942a5fff621068c"},
970 {file = "websockets-8.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:3db87421956f1b0779a7564915875ba774295cc86e81bc671631379371af1170"},
971 {file = "websockets-8.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4f9f7d28ce1d8f1295717c2c25b732c2bc0645db3215cf757551c392177d7cb8"},
972 {file = "websockets-8.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:295359a2cc78736737dd88c343cd0747546b2174b5e1adc223824bcaf3e164cb"},
973 {file = "websockets-8.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:1d3f1bf059d04a4e0eb4985a887d49195e15ebabc42364f4eb564b1d065793f5"},
974 {file = "websockets-8.1-cp36-cp36m-win32.whl", hash = "sha256:2db62a9142e88535038a6bcfea70ef9447696ea77891aebb730a333a51ed559a"},
975 {file = "websockets-8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:0e4fb4de42701340bd2353bb2eee45314651caa6ccee80dbd5f5d5978888fed5"},
976 {file = "websockets-8.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:9b248ba3dd8a03b1a10b19efe7d4f7fa41d158fdaa95e2cf65af5a7b95a4f989"},
977 {file = "websockets-8.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ce85b06a10fc65e6143518b96d3dca27b081a740bae261c2fb20375801a9d56d"},
978 {file = "websockets-8.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:965889d9f0e2a75edd81a07592d0ced54daa5b0785f57dc429c378edbcffe779"},
979 {file = "websockets-8.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:751a556205d8245ff94aeef23546a1113b1dd4f6e4d102ded66c39b99c2ce6c8"},
980 {file = "websockets-8.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:3ef56fcc7b1ff90de46ccd5a687bbd13a3180132268c4254fc0fa44ecf4fc422"},
981 {file = "websockets-8.1-cp37-cp37m-win32.whl", hash = "sha256:7ff46d441db78241f4c6c27b3868c9ae71473fe03341340d2dfdbe8d79310acc"},
982 {file = "websockets-8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:20891f0dddade307ffddf593c733a3fdb6b83e6f9eef85908113e628fa5a8308"},
983 {file = "websockets-8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c1ec8db4fac31850286b7cd3b9c0e1b944204668b8eb721674916d4e28744092"},
984 {file = "websockets-8.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:5c01fd846263a75bc8a2b9542606927cfad57e7282965d96b93c387622487485"},
985 {file = "websockets-8.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:9bef37ee224e104a413f0780e29adb3e514a5b698aabe0d969a6ba426b8435d1"},
986 {file = "websockets-8.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d705f8aeecdf3262379644e4b55107a3b55860eb812b673b28d0fbc347a60c55"},
987 {file = "websockets-8.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:c8a116feafdb1f84607cb3b14aa1418424ae71fee131642fc568d21423b51824"},
988 {file = "websockets-8.1-cp38-cp38-win32.whl", hash = "sha256:e898a0863421650f0bebac8ba40840fc02258ef4714cb7e1fd76b6a6354bda36"},
989 {file = "websockets-8.1-cp38-cp38-win_amd64.whl", hash = "sha256:f8a7bff6e8664afc4e6c28b983845c5bc14965030e3fb98789734d416af77c4b"},
990 {file = "websockets-8.1.tar.gz", hash = "sha256:5c65d2da8c6bce0fca2528f69f44b2f977e06954c8512a952222cea50dad430f"},
991]
992zipp = [
993 {file = "zipp-3.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"},
994 {file = "zipp-3.6.0.tar.gz", hash = "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"},
995]
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 @@
1[tool.poetry]
2name = "copanier"
3version = "0.0.4"
4description = ""
5authors = ["Your Name <you@example.com>"]
6
7[tool.poetry.dependencies]
8python = "^3.7"
9Jinja2 = "2.11.2"
10openpyxl = "3.0.5"
11PyJWT = "1.7.1"
12PyYAML = "5.3.1"
13roll = "0.13.0"
14ujson = "3.2.0"
15minicli = "0.5.0"
16python-slugify = "4.0.1"
17debts = "0.5"
18emails = "0.6"
19Weasyprint = "51"
20
21#[tool.poetry.dev-dependencies]
22#hupper = "1.10.2"
23#minicli = "0.5.0"
24#usine = "0.2.3"
25#
26#[tool.poetry.group.test.dependencies]
27#pyquery = "1.4.1"
28#pytest = "6.0.2"
29#pytest-asyncio = "0.14.0"
30#
31#[tool.poetry.group.prod.dependencies]
32#gunicorn = "20.0.4"
33#uvloop = "0.14.0"
34
35[tool.poetry.scripts]
36copanier = 'copanier:main'
37
38[build-system]
39requires = ["poetry-core>=1.0.0"]
40build-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 @@
1{ ldap ? false, varDir ? "/var/lib/diaspora", podmin_email ? null, config_dir ? "/etc/diaspora",
2 src, stdenv, bundlerEnv, writeText,
3 cacert, defaultGemConfig, perl, ruby_2_4, nodejs, which, git }:
4let
5 diaspora_src = stdenv.mkDerivation {
6 inherit (src) version;
7 pname = "diaspora";
8 inherit src;
9 buildPhase = ''
10 ${if ldap then "patch -p1 < ${./ldap.patch}" else ""}
11 # FIXME: bundlerEnv below doesn't take postgresql group for some
12 # reason
13 echo 'gem "pg", "1.1.3"' >> Gemfile
14 '';
15 installPhase = ''
16 cp -a . $out
17 '';
18 };
19 gems = bundlerEnv {
20 name = "diaspora-env";
21 gemfile = "${diaspora_src}/Gemfile";
22 lockfile = "${diaspora_src}/Gemfile.lock";
23 gemset = if ldap then ./gemset_ldap.nix else ./gemset.nix;
24 groups = [ "postgresql" "default" "production" ];
25 gemConfig = defaultGemConfig // {
26 kostya-sigar = attrs: {
27 buildInputs = [ perl ];
28 };
29 };
30 };
31 build_config = writeText "diaspora.yml" ''
32 configuration:
33 environment:
34 certificate_authorities: '${cacert}/etc/ssl/certs/ca-bundle.crt'
35 ${if podmin_email != null then ''
36 # dummy comment for indentation
37 admins:
38 podmin_email: '${podmin_email}'
39 '' else ""}
40 production:
41 environment:
42 '';
43 dummy_token = writeText "secret_token.rb" ''
44 Diaspora::Application.config.secret_key_base = 'dummy'
45 '';
46 diaspora = stdenv.mkDerivation {
47 name = "diaspora";
48 version = src.version;
49 inherit diaspora_src;
50 builder = writeText "build_diaspora" ''
51 source $stdenv/setup
52 cp -a $diaspora_src $out
53 cd $out
54 chmod -R u+rwX .
55 tar -czf public/source.tar.gz ./{app,db,lib,script,Gemfile,Gemfile.lock,Rakefile,config.ru}
56 ln -s database.yml.example config/database.yml
57 ln -s ${build_config} config/diaspora.yml
58 ln -s ${dummy_token} config/initializers/secret_token.rb
59 ln -sf ${varDir}/schedule.yml config/schedule.yml
60 ln -sf ${varDir}/oidc_key.pem config/oidc_key.pem
61 ln -sf ${varDir}/uploads public/uploads
62 RAILS_ENV=production ${gems}/bin/rake assets:precompile
63 ln -sf ${config_dir}/database.yml config/database.yml
64 ln -sf ${config_dir}/diaspora.yml config/diaspora.yml
65 ln -sf ${config_dir}/secret_token.rb config/initializers/secret_token.rb
66 rm -rf tmp log
67 ln -sf ${varDir}/tmp tmp
68 ln -sf ${varDir}/log log
69 '';
70 propagatedBuildInputs = [ gems nodejs which git ];
71 passthru = { inherit gems varDir; };
72 };
73in
74 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 @@
1{
2 "nodes": {
3 "diaspora": {
4 "flake": false,
5 "locked": {
6 "lastModified": 1551139311,
7 "narHash": "sha256-Fyv7Af68YccJL2OGz6l9d71UmnLB+LstlWbOlgFZtgo=",
8 "owner": "diaspora",
9 "repo": "diaspora",
10 "rev": "663da1ef2573863eb870e0edbd50050f261f3d30",
11 "type": "github"
12 },
13 "original": {
14 "owner": "diaspora",
15 "ref": "v0.7.10.0",
16 "repo": "diaspora",
17 "type": "github"
18 }
19 },
20 "flake-utils": {
21 "locked": {
22 "lastModified": 1648297722,
23 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
24 "owner": "numtide",
25 "repo": "flake-utils",
26 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
27 "type": "github"
28 },
29 "original": {
30 "owner": "numtide",
31 "repo": "flake-utils",
32 "type": "github"
33 }
34 },
35 "myuids": {
36 "locked": {
37 "lastModified": 1,
38 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
39 "path": "../myuids",
40 "type": "path"
41 },
42 "original": {
43 "path": "../myuids",
44 "type": "path"
45 }
46 },
47 "nixpkgs": {
48 "flake": false,
49 "locked": {
50 "lastModified": 1596265691,
51 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
52 "owner": "NixOS",
53 "repo": "nixpkgs",
54 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
55 "type": "github"
56 },
57 "original": {
58 "owner": "NixOS",
59 "repo": "nixpkgs",
60 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
61 "type": "github"
62 }
63 },
64 "root": {
65 "inputs": {
66 "diaspora": "diaspora",
67 "flake-utils": "flake-utils",
68 "myuids": "myuids",
69 "nixpkgs": "nixpkgs"
70 }
71 }
72 },
73 "root": "root",
74 "version": 7
75}
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 @@
1{
2 description = "A privacy-aware, distributed, open source social network.";
3 inputs.myuids = {
4 url = "path:../myuids";
5 };
6 inputs.flake-utils.url = "github:numtide/flake-utils";
7 inputs.nixpkgs = {
8 url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
9 flake = false;
10 };
11 inputs.diaspora = {
12 url = "github:diaspora/diaspora/v0.7.10.0";
13 flake = false;
14 };
15
16 outputs = { self, myuids, nixpkgs, diaspora, flake-utils }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
17 let
18 pkgs = import nixpkgs { inherit system; overlays = []; };
19 version = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.diaspora.original.ref;
20 inherit (pkgs) callPackage;
21 in rec {
22 packages.diaspora = callPackage ./. { src = diaspora // { inherit version; }; };
23 defaultPackage = packages.diaspora;
24 legacyPackages.diaspora = packages.diaspora;
25 checks = {
26 build = defaultPackage;
27 };
28 }
29 ) // rec {
30 overlays = {
31 diaspora = final: prev: {
32 diaspora = self.defaultPackage."${final.system}";
33 };
34 };
35 overlay = overlays.diaspora;
36 nixosModule = { lib, pkgs, config, ... }:
37 let
38 name = "diaspora";
39 cfg = config.services.diaspora;
40
41 uid = config.ids.uids.diaspora;
42 gid = config.ids.gids.diaspora;
43 in
44 {
45 options.services.diaspora = {
46 enable = lib.mkEnableOption "Enable Diaspora’s service";
47 user = lib.mkOption {
48 type = lib.types.str;
49 default = name;
50 description = "User account under which Diaspora runs";
51 };
52 group = lib.mkOption {
53 type = lib.types.str;
54 default = name;
55 description = "Group under which Diaspora runs";
56 };
57 adminEmail = lib.mkOption {
58 type = lib.types.str;
59 example = "admin@example.com";
60 description = "Admin e-mail for Diaspora";
61 };
62 dataDir = lib.mkOption {
63 type = lib.types.path;
64 default = "/var/lib/${name}";
65 description = ''
66 The directory where Diaspora stores its data.
67 '';
68 };
69 socketsDir = lib.mkOption {
70 type = lib.types.path;
71 default = "/run/${name}";
72 description = ''
73 The directory where Diaspora puts runtime files and sockets.
74 '';
75 };
76 configDir = lib.mkOption {
77 type = lib.types.path;
78 description = ''
79 The configuration path for Diaspora.
80 '';
81 };
82 package = lib.mkOption {
83 type = lib.types.package;
84 default = pkgs.diaspora;
85 description = ''
86 Diaspora package to use.
87 '';
88 };
89 withLdap = lib.mkEnableOption "Add ldap patch";
90 # Output variables
91 systemdStateDirectory = lib.mkOption {
92 type = lib.types.str;
93 # Use ReadWritePaths= instead if varDir is outside of /var/lib
94 default = assert lib.strings.hasPrefix "/var/lib/" cfg.dataDir;
95 lib.strings.removePrefix "/var/lib/" cfg.dataDir;
96 description = ''
97 Adjusted Diaspora data directory for systemd
98 '';
99 readOnly = true;
100 };
101 systemdRuntimeDirectory = lib.mkOption {
102 type = lib.types.str;
103 # Use ReadWritePaths= instead if socketsDir is outside of /run
104 default = assert lib.strings.hasPrefix "/run/" cfg.socketsDir;
105 lib.strings.removePrefix "/run/" cfg.socketsDir;
106 description = ''
107 Adjusted Diaspora sockets directory for systemd
108 '';
109 readOnly = true;
110 };
111 workdir = lib.mkOption {
112 type = lib.types.package;
113 default = cfg.package.override {
114 varDir = cfg.dataDir;
115 podmin_email = cfg.adminEmail;
116 config_dir = cfg.configDir;
117 ldap = cfg.withLdap;
118 };
119 description = ''
120 Adjusted diaspora package with overriden values
121 '';
122 readOnly = true;
123 };
124 sockets = lib.mkOption {
125 type = lib.types.attrsOf lib.types.path;
126 default = {
127 rails = "${cfg.socketsDir}/diaspora.sock";
128 eye = "${cfg.socketsDir}/eye.sock";
129 };
130 readOnly = true;
131 description = ''
132 Diaspora sockets
133 '';
134 };
135 pids = lib.mkOption {
136 type = lib.types.attrsOf lib.types.path;
137 default = {
138 eye = "${cfg.socketsDir}/eye.pid";
139 };
140 readOnly = true;
141 description = ''
142 Diaspora pids
143 '';
144 };
145 };
146
147 config = lib.mkIf cfg.enable {
148 nixpkgs.overlays = [ self.overlay ];
149 users.users = lib.optionalAttrs (cfg.user == name) {
150 "${name}" = {
151 uid = myuids.lib.uids.diaspora;
152 group = cfg.group;
153 description = "Diaspora user";
154 home = cfg.dataDir;
155 packages = [ cfg.workdir.gems pkgs.nodejs cfg.workdir.gems.ruby ];
156 useDefaultShell = true;
157 };
158 };
159 users.groups = lib.optionalAttrs (cfg.group == name) {
160 "${name}" = {
161 gid = myuids.lib.gids.diaspora;
162 };
163 };
164
165 systemd.services.diaspora = {
166 description = "Diaspora";
167 wantedBy = [ "multi-user.target" ];
168 after = [
169 "network.target" "redis.service" "postgresql.service"
170 ];
171 wants = [
172 "redis.service" "postgresql.service"
173 ];
174
175 environment.RAILS_ENV = "production";
176 environment.BUNDLE_PATH = "${cfg.workdir.gems}/${cfg.workdir.gems.ruby.gemPath}";
177 environment.BUNDLE_GEMFILE = "${cfg.workdir.gems.confFiles}/Gemfile";
178 environment.EYE_SOCK = cfg.sockets.eye;
179 environment.EYE_PID = cfg.pids.eye;
180
181 path = [ cfg.workdir.gems pkgs.nodejs cfg.workdir.gems.ruby pkgs.curl pkgs.which pkgs.gawk ];
182
183 preStart = ''
184 install -m 0755 -d ${cfg.dataDir}/uploads ${cfg.dataDir}/tmp ${cfg.dataDir}/log
185 install -m 0700 -d ${cfg.dataDir}/tmp/pids
186 if [ ! -f ${cfg.dataDir}/schedule.yml ]; then
187 echo "{}" > ${cfg.dataDir}/schedule.yml
188 fi
189 ./bin/bundle exec rails db:migrate
190 '';
191
192 script = ''
193 exec ${cfg.workdir}/script/server
194 '';
195
196 serviceConfig = {
197 User = cfg.user;
198 PrivateTmp = true;
199 Restart = "always";
200 Type = "simple";
201 WorkingDirectory = cfg.workdir;
202 StateDirectory = cfg.systemdStateDirectory;
203 RuntimeDirectory = cfg.systemdRuntimeDirectory;
204 StandardInput = "null";
205 KillMode = "control-group";
206 };
207
208 unitConfig.RequiresMountsFor = cfg.dataDir;
209 };
210 };
211 };
212 };
213}
214
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 @@
1{
2 actioncable = {
3 dependencies = ["actionpack" "nio4r" "websocket-driver"];
4 platforms = [];
5 source = {
6 remotes = ["https://rubygems.org"];
7 sha256 = "07r6hnh05db84yr9419mbhyzp20hr8yy9m50jxc2w91ghm2qnrrf";
8 type = "gem";
9 };
10 version = "5.1.6";
11 };
12 actionmailer = {
13 dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
14 platforms = [];
15 source = {
16 remotes = ["https://rubygems.org"];
17 sha256 = "1s9xcqfx97q4yva2zc4qzb567mwzhry6v3x3zc318aqhcrz31g7c";
18 type = "gem";
19 };
20 version = "5.1.6";
21 };
22 actionpack = {
23 dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
24 platforms = [];
25 source = {
26 remotes = ["https://rubygems.org"];
27 sha256 = "0vz2ms80nqw21c304g3w2vkbs80gadzhi3mcwwym7smxccr37kcd";
28 type = "gem";
29 };
30 version = "5.1.6";
31 };
32 actionview = {
33 dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
34 platforms = [];
35 source = {
36 remotes = ["https://rubygems.org"];
37 sha256 = "1kfxlz9v7b47pdyy1whb4zzhvaj8h4sp1ajhbih2ax1hkldyg081";
38 type = "gem";
39 };
40 version = "5.1.6";
41 };
42 active_model_serializers = {
43 dependencies = ["activemodel" "concurrent-ruby"];
44 platforms = [];
45 source = {
46 remotes = ["https://rubygems.org"];
47 sha256 = "19zr5pp84q4ya7mfrcanakjv86lv4wfmbcbbd2xnd4bkyprw5w7z";
48 type = "gem";
49 };
50 version = "0.9.7";
51 };
52 activejob = {
53 dependencies = ["activesupport" "globalid"];
54 platforms = [];
55 source = {
56 remotes = ["https://rubygems.org"];
57 sha256 = "02lssq8ps98mfg20dyhcpd16f9c0v4zzy7gfbb6ksbs06wrrd4d2";
58 type = "gem";
59 };
60 version = "5.1.6";
61 };
62 activemodel = {
63 dependencies = ["activesupport"];
64 platforms = [];
65 source = {
66 remotes = ["https://rubygems.org"];
67 sha256 = "10f8cpv4sl1w3m1qj8hl6sd2f1n7x91h45qaf57qr894ll22jgby";
68 type = "gem";
69 };
70 version = "5.1.6";
71 };
72 activerecord = {
73 dependencies = ["activemodel" "activesupport" "arel"];
74 platforms = [];
75 source = {
76 remotes = ["https://rubygems.org"];
77 sha256 = "1iqkvxzx5bfp8rmlccww0cj1xr6iaxmn3hhbj1dv5j9c8mnm980x";
78 type = "gem";
79 };
80 version = "5.1.6";
81 };
82 activerecord-import = {
83 dependencies = ["activerecord"];
84 platforms = [];
85 source = {
86 remotes = ["https://rubygems.org"];
87 sha256 = "1bxpbrcwc9k6khizwdikvfbhw9pcvs4sp3h4grpcww5k7bgpliz6";
88 type = "gem";
89 };
90 version = "0.27.0";
91 };
92 activesupport = {
93 dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
94 platforms = [];
95 source = {
96 remotes = ["https://rubygems.org"];
97 sha256 = "08dm0mgmj31ggk7ib66wfagj4bgbr2jfl500bqb22x0szslz5lll";
98 type = "gem";
99 };
100 version = "5.1.6";
101 };
102 acts-as-taggable-on = {
103 dependencies = ["activerecord"];
104 platforms = [];
105 source = {
106 remotes = ["https://rubygems.org"];
107 sha256 = "0hl52pjgfzy3acdwnbxfqy08m808vlv9dmsyp03d5x7x0y499kvl";
108 type = "gem";
109 };
110 version = "6.0.0";
111 };
112 acts_as_api = {
113 dependencies = ["activemodel" "activesupport" "rack"];
114 platforms = [];
115 source = {
116 remotes = ["https://rubygems.org"];
117 sha256 = "06miad13nnfr2gslc203ahsbvj499s9lngxxvfizwp964vglygsc";
118 type = "gem";
119 };
120 version = "1.0.1";
121 };
122 addressable = {
123 dependencies = ["public_suffix"];
124 platforms = [];
125 source = {
126 remotes = ["https://rubygems.org"];
127 sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
128 type = "gem";
129 };
130 version = "2.5.2";
131 };
132 aes_key_wrap = {
133 platforms = [];
134 source = {
135 remotes = ["https://rubygems.org"];
136 sha256 = "0li86k0g812jkzrppb2fvqngvzp09nygywjpn81nx90s01wxqw07";
137 type = "gem";
138 };
139 version = "1.0.1";
140 };
141 arel = {
142 platforms = [];
143 source = {
144 remotes = ["https://rubygems.org"];
145 sha256 = "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl";
146 type = "gem";
147 };
148 version = "8.0.0";
149 };
150 asset_sync = {
151 dependencies = ["activemodel" "fog-core" "mime-types" "unf"];
152 platforms = [];
153 source = {
154 remotes = ["https://rubygems.org"];
155 sha256 = "0mfz51g8rzk5h5fpdhfkycnm7y4dpfhx46wm7fygna7nd4w9ixdx";
156 type = "gem";
157 };
158 version = "2.5.0";
159 };
160 ast = {
161 platforms = [];
162 source = {
163 remotes = ["https://rubygems.org"];
164 sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
165 type = "gem";
166 };
167 version = "2.4.0";
168 };
169 attr_required = {
170 platforms = [];
171 source = {
172 remotes = ["https://rubygems.org"];
173 sha256 = "1g22axmi2rhhy7w8c3x6gppsawxqavbrnxpnmphh22fk7cwi0kh2";
174 type = "gem";
175 };
176 version = "1.0.1";
177 };
178 autoprefixer-rails = {
179 dependencies = ["execjs"];
180 platforms = [];
181 source = {
182 remotes = ["https://rubygems.org"];
183 sha256 = "08irrl1mz6skagr1lygq79l34lc0dghgva0v9q7nng76dpiglgj3";
184 type = "gem";
185 };
186 version = "8.6.5";
187 };
188 backports = {
189 platforms = [];
190 source = {
191 remotes = ["https://rubygems.org"];
192 sha256 = "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g";
193 type = "gem";
194 };
195 version = "3.11.4";
196 };
197 bcrypt = {
198 platforms = [];
199 source = {
200 remotes = ["https://rubygems.org"];
201 sha256 = "0ysblqxkclmnhrd0kmb5mr8p38mbar633gdsb14b7dhkhgawgzfy";
202 type = "gem";
203 };
204 version = "3.1.12";
205 };
206 bindata = {
207 platforms = [];
208 source = {
209 remotes = ["https://rubygems.org"];
210 sha256 = "0kz42nvxnk1j9cj0i8lcnhprcgdqsqska92g6l19ziadydfk2gqy";
211 type = "gem";
212 };
213 version = "2.4.4";
214 };
215 bootstrap-sass = {
216 dependencies = ["autoprefixer-rails" "sass"];
217 platforms = [];
218 source = {
219 remotes = ["https://rubygems.org"];
220 sha256 = "1bc9bf6caddqn1rv15b5x56yczmbjzaxzl9lk5zbwrg1bfph4bx9";
221 type = "gem";
222 };
223 version = "3.3.7";
224 };
225 bootstrap-switch-rails = {
226 groups = ["default"];
227 platforms = [];
228 source = {
229 remotes = ["https://rubygems.org"];
230 sha256 = "1zkwc1hfmihnm0n9lkva5zk0cmqpfcpnrwnmaniyvgx7rac2r14l";
231 type = "gem";
232 };
233 version = "3.3.3";
234 };
235 buftok = {
236 platforms = [];
237 source = {
238 remotes = ["https://rubygems.org"];
239 sha256 = "1rzsy1vy50v55x9z0nivf23y0r9jkmq6i130xa75pq9i8qrn1mxs";
240 type = "gem";
241 };
242 version = "0.2.0";
243 };
244 builder = {
245 platforms = [];
246 source = {
247 remotes = ["https://rubygems.org"];
248 sha256 = "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1";
249 type = "gem";
250 };
251 version = "3.2.3";
252 };
253 byebug = {
254 platforms = [];
255 source = {
256 remotes = ["https://rubygems.org"];
257 sha256 = "10znc1hjv8n686hhpl08f3m2g6h08a4b83nxblqwy2kqamkxcqf8";
258 type = "gem";
259 };
260 version = "10.0.2";
261 };
262 capybara = {
263 dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
264 platforms = [];
265 source = {
266 remotes = ["https://rubygems.org"];
267 sha256 = "10zj8syak12xd1kqywr35bkr2hkdjq18kij54x1ys8c26h6j4d0m";
268 type = "gem";
269 };
270 version = "3.11.1";
271 };
272 carrierwave = {
273 dependencies = ["activemodel" "activesupport" "mime-types"];
274 platforms = [];
275 source = {
276 remotes = ["https://rubygems.org"];
277 sha256 = "1k9kla5ncygm97vn33lsrs7ch5zy4qqhhvc8m3khm986yaqh75qs";
278 type = "gem";
279 };
280 version = "1.2.3";
281 };
282 celluloid = {
283 dependencies = ["celluloid-essentials" "celluloid-extras" "celluloid-fsm" "celluloid-pool" "celluloid-supervision" "timers"];
284 platforms = [];
285 source = {
286 remotes = ["https://rubygems.org"];
287 sha256 = "10i29q7kkdlrhf5rg43xygdfm795a02vp28k2ca3nklmqna57qmg";
288 type = "gem";
289 };
290 version = "0.17.3";
291 };
292 celluloid-essentials = {
293 dependencies = ["timers"];
294 platforms = [];
295 source = {
296 remotes = ["https://rubygems.org"];
297 sha256 = "1l4p3p73wjdj07ww124q0db5k1cyzggbndzmcb12xbsf2dnj121k";
298 type = "gem";
299 };
300 version = "0.20.5";
301 };
302 celluloid-extras = {
303 dependencies = ["timers"];
304 platforms = [];
305 source = {
306 remotes = ["https://rubygems.org"];
307 sha256 = "078agvnsfp78jv343kn5g1cz50147dk0q46blwh5r8lk6whag7ng";
308 type = "gem";
309 };
310 version = "0.20.5";
311 };
312 celluloid-fsm = {
313 dependencies = ["timers"];
314 platforms = [];
315 source = {
316 remotes = ["https://rubygems.org"];
317 sha256 = "1pmpi6h4abpkczp46rd6llk1mldpx19i9hll8mkxp3kxin9slivc";
318 type = "gem";
319 };
320 version = "0.20.5";
321 };
322 celluloid-io = {
323 dependencies = ["celluloid" "nio4r" "timers"];
324 platforms = [];
325 source = {
326 remotes = ["https://rubygems.org"];
327 sha256 = "1frcpja7h9vcxsw7w7ff550x54rfx514fpv2n6kawbk1j4zrm314";
328 type = "gem";
329 };
330 version = "0.17.3";
331 };
332 celluloid-pool = {
333 dependencies = ["timers"];
334 platforms = [];
335 source = {
336 remotes = ["https://rubygems.org"];
337 sha256 = "1bfr54ijl95bnhqlabhf5p4ff9n0y2sslc91f49jjn33n2zm755c";
338 type = "gem";
339 };
340 version = "0.20.5";
341 };
342 celluloid-supervision = {
343 dependencies = ["timers"];
344 platforms = [];
345 source = {
346 remotes = ["https://rubygems.org"];
347 sha256 = "1b41gg1rsmms0m5mshy6h66y5rydl3nv6x9wf050ixfa1s2c8vzw";
348 type = "gem";
349 };
350 version = "0.20.6";
351 };
352 chunky_png = {
353 platforms = [];
354 source = {
355 remotes = ["https://rubygems.org"];
356 sha256 = "05g2xli9wbjylkmblln3bhvjalziwb92q452q8ibjagmb853424w";
357 type = "gem";
358 };
359 version = "1.3.10";
360 };
361 cliver = {
362 platforms = [];
363 source = {
364 remotes = ["https://rubygems.org"];
365 sha256 = "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7";
366 type = "gem";
367 };
368 version = "0.3.2";
369 };
370 coderay = {
371 platforms = [];
372 source = {
373 remotes = ["https://rubygems.org"];
374 sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
375 type = "gem";
376 };
377 version = "1.1.2";
378 };
379 compass = {
380 dependencies = ["chunky_png" "compass-core" "compass-import-once" "rb-fsevent" "rb-inotify" "sass"];
381 platforms = [];
382 source = {
383 remotes = ["https://rubygems.org"];
384 sha256 = "0lfi83w8z75czr0pf0rmj9hda22082h3cmvczl8r1ma9agf88y2c";
385 type = "gem";
386 };
387 version = "1.0.3";
388 };
389 compass-core = {
390 dependencies = ["multi_json" "sass"];
391 platforms = [];
392 source = {
393 remotes = ["https://rubygems.org"];
394 sha256 = "0yaspqwdmzwdcqviclbs3blq7an16pysrfzylz8q1gxmmd6bpj3a";
395 type = "gem";
396 };
397 version = "1.0.3";
398 };
399 compass-import-once = {
400 dependencies = ["sass"];
401 platforms = [];
402 source = {
403 remotes = ["https://rubygems.org"];
404 sha256 = "0bn7gwbfz7jvvdd0qdfqlx67fcb83gyvxqc7dr9fhcnks3z8z5rq";
405 type = "gem";
406 };
407 version = "1.0.5";
408 };
409 compass-rails = {
410 dependencies = ["compass" "sass-rails" "sprockets"];
411 platforms = [];
412 source = {
413 remotes = ["https://rubygems.org"];
414 sha256 = "02ydlbl1qb80myjv5xrpwzhmmj6qd80jf5izvpqhq2bikv84j9wr";
415 type = "gem";
416 };
417 version = "3.1.0";
418 };
419 concurrent-ruby = {
420 platforms = [];
421 source = {
422 remotes = ["https://rubygems.org"];
423 sha256 = "18q9skp5pfq4jwbxzmw8q2rn4cpw6mf4561i2hsjcl1nxdag2jvb";
424 type = "gem";
425 };
426 version = "1.1.3";
427 };
428 configurate = {
429 platforms = [];
430 source = {
431 remotes = ["https://rubygems.org"];
432 sha256 = "1m6cppb4jf7liwc3f5dvgn2v2nhp2jq8ixb9papaqz24f4s8dnd1";
433 type = "gem";
434 };
435 version = "0.3.1";
436 };
437 connection_pool = {
438 platforms = [];
439 source = {
440 remotes = ["https://rubygems.org"];
441 sha256 = "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68";
442 type = "gem";
443 };
444 version = "2.2.2";
445 };
446 coveralls = {
447 dependencies = ["json" "simplecov" "term-ansicolor" "thor" "tins"];
448 platforms = [];
449 source = {
450 remotes = ["https://rubygems.org"];
451 sha256 = "022kc16np6w4mv17hq3m9hhw9l8hjl78ld3fzqqx6337vwvwvwcg";
452 type = "gem";
453 };
454 version = "0.8.22";
455 };
456 crack = {
457 dependencies = ["safe_yaml"];
458 platforms = [];
459 source = {
460 remotes = ["https://rubygems.org"];
461 sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
462 type = "gem";
463 };
464 version = "0.4.3";
465 };
466 crass = {
467 platforms = [];
468 source = {
469 remotes = ["https://rubygems.org"];
470 sha256 = "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi";
471 type = "gem";
472 };
473 version = "1.0.4";
474 };
475 cucumber = {
476 dependencies = ["builder" "cucumber-core" "cucumber-expressions" "cucumber-wire" "diff-lcs" "gherkin" "multi_json" "multi_test"];
477 platforms = [];
478 source = {
479 remotes = ["https://rubygems.org"];
480 sha256 = "1s2brssrpal8hyhcgg974x3xyhpmvpwps5ypd9p8w2lg01l1pp3j";
481 type = "gem";
482 };
483 version = "3.1.2";
484 };
485 cucumber-api-steps = {
486 dependencies = ["cucumber" "jsonpath"];
487 platforms = [];
488 source = {
489 remotes = ["https://rubygems.org"];
490 sha256 = "0fij6bgzshda68jp7kac0hs5n6xsmv49g8ynqhy6s3znc9d4qjbw";
491 type = "gem";
492 };
493 version = "0.14.0";
494 };
495 cucumber-core = {
496 dependencies = ["backports" "cucumber-tag_expressions" "gherkin"];
497 platforms = [];
498 source = {
499 remotes = ["https://rubygems.org"];
500 sha256 = "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c";
501 type = "gem";
502 };
503 version = "3.2.1";
504 };
505 cucumber-expressions = {
506 platforms = [];
507 source = {
508 remotes = ["https://rubygems.org"];
509 sha256 = "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw";
510 type = "gem";
511 };
512 version = "6.0.1";
513 };
514 cucumber-rails = {
515 dependencies = ["capybara" "cucumber" "mime-types" "nokogiri" "railties"];
516 platforms = [];
517 source = {
518 remotes = ["https://rubygems.org"];
519 sha256 = "0pmlza6r2601k1i7v3z8gj4apdcq6qa830bzwkj1pnfjzn4z12n7";
520 type = "gem";
521 };
522 version = "1.6.0";
523 };
524 cucumber-tag_expressions = {
525 platforms = [];
526 source = {
527 remotes = ["https://rubygems.org"];
528 sha256 = "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc";
529 type = "gem";
530 };
531 version = "1.1.1";
532 };
533 cucumber-wire = {
534 platforms = [];
535 source = {
536 remotes = ["https://rubygems.org"];
537 sha256 = "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f";
538 type = "gem";
539 };
540 version = "0.0.1";
541 };
542 database_cleaner = {
543 platforms = [];
544 source = {
545 remotes = ["https://rubygems.org"];
546 sha256 = "05i0nf2aj70m61y3fspypdkc6d1qgibf5kav05a71b5gjz0k7y5x";
547 type = "gem";
548 };
549 version = "1.7.0";
550 };
551 devise = {
552 dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
553 platforms = [];
554 source = {
555 remotes = ["https://rubygems.org"];
556 sha256 = "1vs8nibl568ghm6a7hbw6xgcv8zbm4gykprcxpnzi7bz5d4gvcjx";
557 type = "gem";
558 };
559 version = "4.5.0";
560 };
561 devise_lastseenable = {
562 dependencies = ["devise" "rails"];
563 platforms = [];
564 source = {
565 remotes = ["https://rubygems.org"];
566 sha256 = "1h83h73qjh8fc7lmr089shky8lc3wm4xn653rjdbb0cddflvrx8y";
567 type = "gem";
568 };
569 version = "0.0.6";
570 };
571 diaspora-prosody-config = {
572 platforms = [];
573 source = {
574 remotes = ["https://rubygems.org"];
575 sha256 = "1976ijqjf5jcq1jwr6vi0srjadhbqfa9y3nxyipzcv91pzskl2lp";
576 type = "gem";
577 };
578 version = "0.0.7";
579 };
580 diaspora_federation = {
581 dependencies = ["faraday" "faraday_middleware" "nokogiri" "typhoeus" "valid"];
582 platforms = [];
583 source = {
584 remotes = ["https://rubygems.org"];
585 sha256 = "1xxy6ahlhgyr00qkfmmq0h3nqm6gjkr9i6hsqr0nkb3l6qg0m0yc";
586 type = "gem";
587 };
588 version = "0.2.5";
589 };
590 diaspora_federation-json_schema = {
591 platforms = [];
592 source = {
593 remotes = ["https://rubygems.org"];
594 sha256 = "0hfv4cq5wfdg86xmbp5y0h50b11326ymzks1yr9dvr4wa7di00hr";
595 type = "gem";
596 };
597 version = "0.2.5";
598 };
599 diaspora_federation-rails = {
600 dependencies = ["actionpack" "diaspora_federation"];
601 platforms = [];
602 source = {
603 remotes = ["https://rubygems.org"];
604 sha256 = "1wrni7d9084v3pqd3sq8j532wx5ym6kmd959bw29bzwxc3zidd9h";
605 type = "gem";
606 };
607 version = "0.2.5";
608 };
609 diaspora_federation-test = {
610 dependencies = ["diaspora_federation" "fabrication" "uuid"];
611 platforms = [];
612 source = {
613 remotes = ["https://rubygems.org"];
614 sha256 = "1b09y78pyl9kix8slbybnks2cbq0ac9wml31j2s6qwjixranjsm4";
615 type = "gem";
616 };
617 version = "0.2.5";
618 };
619 diff-lcs = {
620 platforms = [];
621 source = {
622 remotes = ["https://rubygems.org"];
623 sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
624 type = "gem";
625 };
626 version = "1.3";
627 };
628 docile = {
629 platforms = [];
630 source = {
631 remotes = ["https://rubygems.org"];
632 sha256 = "04d2izkna3ahfn6fwq4xrcafa715d3bbqczxm16fq40fqy87xn17";
633 type = "gem";
634 };
635 version = "1.3.1";
636 };
637 domain_name = {
638 dependencies = ["unf"];
639 platforms = [];
640 source = {
641 remotes = ["https://rubygems.org"];
642 sha256 = "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v";
643 type = "gem";
644 };
645 version = "0.5.20180417";
646 };
647 entypo-rails = {
648 dependencies = ["railties"];
649 platforms = [];
650 source = {
651 remotes = ["https://rubygems.org"];
652 sha256 = "124x0jszg6n0k2lcacd627ndlp1fv7cbgnv4scwy5s3czp0qwip6";
653 type = "gem";
654 };
655 version = "3.0.0";
656 };
657 equalizer = {
658 platforms = [];
659 source = {
660 remotes = ["https://rubygems.org"];
661 sha256 = "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4";
662 type = "gem";
663 };
664 version = "0.0.11";
665 };
666 erubi = {
667 platforms = [];
668 source = {
669 remotes = ["https://rubygems.org"];
670 sha256 = "0bws86na9k565raiz0kk61yy5pxxp0fmwyzpibdwjkq0xzx8q6q1";
671 type = "gem";
672 };
673 version = "1.7.1";
674 };
675 eslintrb = {
676 dependencies = ["execjs" "multi_json" "rake"];
677 platforms = [];
678 source = {
679 remotes = ["https://rubygems.org"];
680 sha256 = "0kx9sbs7pnl436zyczylnqqb1858hffy66fwdqfmcn18q8xdqwkx";
681 type = "gem";
682 };
683 version = "2.1.0";
684 };
685 et-orbi = {
686 dependencies = ["tzinfo"];
687 platforms = [];
688 source = {
689 remotes = ["https://rubygems.org"];
690 sha256 = "0wk7i0bmsy46la8gcvbmdns0ni8lmdqas838phj97bdwykxw8m4b";
691 type = "gem";
692 };
693 version = "1.1.6";
694 };
695 ethon = {
696 dependencies = ["ffi"];
697 platforms = [];
698 source = {
699 remotes = ["https://rubygems.org"];
700 sha256 = "0y70szwm2p0b9qfvpqrzjrgm3jz0ig65vlbfr6ppc3z0m1h7kv48";
701 type = "gem";
702 };
703 version = "0.11.0";
704 };
705 excon = {
706 platforms = [];
707 source = {
708 remotes = ["https://rubygems.org"];
709 sha256 = "15l9w0938c19nxmrp09n75qpmm64k12xj69h47yvxzcxcpbgnkb2";
710 type = "gem";
711 };
712 version = "0.62.0";
713 };
714 execjs = {
715 platforms = [];
716 source = {
717 remotes = ["https://rubygems.org"];
718 sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
719 type = "gem";
720 };
721 version = "2.7.0";
722 };
723 eye = {
724 dependencies = ["celluloid" "celluloid-io" "kostya-sigar" "state_machines" "thor"];
725 platforms = [];
726 source = {
727 remotes = ["https://rubygems.org"];
728 sha256 = "0gqrrrisy492m6sczq775dyg9sxkl926r8lkr6z33kfb4cnimfzk";
729 type = "gem";
730 };
731 version = "0.10.0";
732 };
733 fabrication = {
734 platforms = [];
735 source = {
736 remotes = ["https://rubygems.org"];
737 sha256 = "0an28kjand4mjbkmnwd9fmgq3y5vf717zpmiijavar3sxqj52zri";
738 type = "gem";
739 };
740 version = "2.20.1";
741 };
742 factory_girl = {
743 dependencies = ["activesupport"];
744 platforms = [];
745 source = {
746 remotes = ["https://rubygems.org"];
747 sha256 = "0cc60v28r7w1gp34p4amzdnq7cyip6qhffvxywsj3ypilyf8jqla";
748 type = "gem";
749 };
750 version = "4.8.0";
751 };
752 factory_girl_rails = {
753 dependencies = ["factory_girl" "railties"];
754 platforms = [];
755 source = {
756 remotes = ["https://rubygems.org"];
757 sha256 = "0hw8qqp30vm4yf4a36r1r65wk78ihxmas7jg5fyl6fcf705z9fvv";
758 type = "gem";
759 };
760 version = "4.8.0";
761 };
762 faraday = {
763 dependencies = ["multipart-post"];
764 platforms = [];
765 source = {
766 remotes = ["https://rubygems.org"];
767 sha256 = "16hwxc8v0z6gkanckjhx0ffgqmzpc4ywz4dfhxpjlz2mbz8d5m52";
768 type = "gem";
769 };
770 version = "0.15.3";
771 };
772 faraday-cookie_jar = {
773 dependencies = ["faraday" "http-cookie"];
774 platforms = [];
775 source = {
776 remotes = ["https://rubygems.org"];
777 sha256 = "1di4gx6446a6zdkrpj679m5k515i53wvb4yxcsqvy8d8zacxiiv6";
778 type = "gem";
779 };
780 version = "0.0.6";
781 };
782 faraday_middleware = {
783 dependencies = ["faraday"];
784 platforms = [];
785 source = {
786 remotes = ["https://rubygems.org"];
787 sha256 = "1p7icfl28nvl8qqdsngryz1snqic9l8x6bk0dxd7ygn230y0k41d";
788 type = "gem";
789 };
790 version = "0.12.2";
791 };
792 ffi = {
793 platforms = [];
794 source = {
795 remotes = ["https://rubygems.org"];
796 sha256 = "0jpm2dis1j7zvvy3lg7axz9jml316zrn7s0j59vyq3qr127z0m7q";
797 type = "gem";
798 };
799 version = "1.9.25";
800 };
801 fixture_builder = {
802 dependencies = ["activerecord" "activesupport" "hashdiff"];
803 platforms = [];
804 source = {
805 remotes = ["https://rubygems.org"];
806 sha256 = "1qlq0nyfhjvz09hm0jankl9bgs9672k31b3lmsfq8p135x3xs627";
807 type = "gem";
808 };
809 version = "0.5.2.rc3";
810 };
811 fog-aws = {
812 dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"];
813 platforms = [];
814 source = {
815 remotes = ["https://rubygems.org"];
816 sha256 = "1zprxg0spvkkri1jf40zg3rfr5h2gq6009d7l36lifpvhjn658cs";
817 type = "gem";
818 };
819 version = "3.3.0";
820 };
821 fog-core = {
822 dependencies = ["builder" "excon" "formatador" "mime-types"];
823 platforms = [];
824 source = {
825 remotes = ["https://rubygems.org"];
826 sha256 = "1fsama04wlxhv537bm4b7rr4zzn0mvisy87m3qzv6f0mhlrq3zp8";
827 type = "gem";
828 };
829 version = "2.1.2";
830 };
831 fog-json = {
832 dependencies = ["fog-core" "multi_json"];
833 platforms = [];
834 source = {
835 remotes = ["https://rubygems.org"];
836 sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
837 type = "gem";
838 };
839 version = "1.2.0";
840 };
841 fog-xml = {
842 dependencies = ["fog-core" "nokogiri"];
843 platforms = [];
844 source = {
845 remotes = ["https://rubygems.org"];
846 sha256 = "043lwdw2wsi6d55ifk0w3izi5l1d1h0alwyr3fixic7b94kc812n";
847 type = "gem";
848 };
849 version = "0.1.3";
850 };
851 formatador = {
852 platforms = [];
853 source = {
854 remotes = ["https://rubygems.org"];
855 sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
856 type = "gem";
857 };
858 version = "0.2.5";
859 };
860 fugit = {
861 dependencies = ["et-orbi" "raabro"];
862 platforms = [];
863 source = {
864 remotes = ["https://rubygems.org"];
865 sha256 = "1szijawzdii668z5is9xi849399gy786951dx0l5r2z5mbfqvl9i";
866 type = "gem";
867 };
868 version = "1.1.6";
869 };
870 fuubar = {
871 dependencies = ["rspec-core" "ruby-progressbar"];
872 platforms = [];
873 source = {
874 remotes = ["https://rubygems.org"];
875 sha256 = "1sqkr1nh49rlm86l3qyrgsdqavgqii4pnrjn7855z6dfavh3spxr";
876 type = "gem";
877 };
878 version = "2.3.2";
879 };
880 get_process_mem = {
881 platforms = [];
882 source = {
883 remotes = ["https://rubygems.org"];
884 sha256 = "1bvfjdign16r0zwm2rlfrq0sk1licvmlgbnlpnyckniv5r7i080g";
885 type = "gem";
886 };
887 version = "0.2.3";
888 };
889 gherkin = {
890 platforms = [];
891 source = {
892 remotes = ["https://rubygems.org"];
893 sha256 = "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s";
894 type = "gem";
895 };
896 version = "5.1.0";
897 };
898 gitlab = {
899 dependencies = ["httparty" "terminal-table"];
900 platforms = [];
901 source = {
902 remotes = ["https://rubygems.org"];
903 sha256 = "1nncjmk71ivjxmgkpv100yybry5c7ld6xjgi1b5zsfv4g3mz0v34";
904 type = "gem";
905 };
906 version = "4.7.0";
907 };
908 globalid = {
909 dependencies = ["activesupport"];
910 platforms = [];
911 source = {
912 remotes = ["https://rubygems.org"];
913 sha256 = "02smrgdi11kziqi9zhnsy9i6yr2fnxrqlv3lllsvdjki3cd4is38";
914 type = "gem";
915 };
916 version = "0.4.1";
917 };
918 gon = {
919 dependencies = ["actionpack" "multi_json" "request_store"];
920 platforms = [];
921 source = {
922 remotes = ["https://rubygems.org"];
923 sha256 = "07sm7fd94pfscrbs4lyprs0das8s1yn32cw521ch738jaqb388xl";
924 type = "gem";
925 };
926 version = "6.2.1";
927 };
928 guard = {
929 dependencies = ["formatador" "listen" "lumberjack" "nenv" "notiffany" "pry" "shellany" "thor"];
930 platforms = [];
931 source = {
932 remotes = ["https://rubygems.org"];
933 sha256 = "0h84ja6qvii3hx86w9l4vjpbgl4m8ma8fbawwp7s8l791cgkdcmk";
934 type = "gem";
935 };
936 version = "2.15.0";
937 };
938 guard-compat = {
939 platforms = [];
940 source = {
941 remotes = ["https://rubygems.org"];
942 sha256 = "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis";
943 type = "gem";
944 };
945 version = "1.2.1";
946 };
947 guard-rspec = {
948 dependencies = ["guard" "guard-compat" "rspec"];
949 platforms = [];
950 source = {
951 remotes = ["https://rubygems.org"];
952 sha256 = "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4";
953 type = "gem";
954 };
955 version = "4.7.3";
956 };
957 guard-rubocop = {
958 dependencies = ["guard" "rubocop"];
959 platforms = [];
960 source = {
961 remotes = ["https://rubygems.org"];
962 sha256 = "1p97zkzasghl1md13rh57n3s2rr2kqly8w4vfn6vaj89igjpagdp";
963 type = "gem";
964 };
965 version = "1.3.0";
966 };
967 haml = {
968 dependencies = ["temple" "tilt"];
969 platforms = [];
970 source = {
971 remotes = ["https://rubygems.org"];
972 sha256 = "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac";
973 type = "gem";
974 };
975 version = "5.0.4";
976 };
977 haml_lint = {
978 dependencies = ["haml" "rainbow" "rake" "rubocop" "sysexits"];
979 platforms = [];
980 source = {
981 remotes = ["https://rubygems.org"];
982 sha256 = "125aj0j84nx5gqm42hfx5d8486higlra423ahgfpsdjwbp399rwv";
983 type = "gem";
984 };
985 version = "0.28.0";
986 };
987 hamlit = {
988 dependencies = ["temple" "thor" "tilt"];
989 platforms = [];
990 source = {
991 remotes = ["https://rubygems.org"];
992 sha256 = "14fsc208qsf46cflk23vs2fdw435dk65fwv55zhziciwn96ld8sf";
993 type = "gem";
994 };
995 version = "2.9.1";
996 };
997 handlebars_assets = {
998 dependencies = ["execjs" "sprockets" "tilt"];
999 platforms = [];
1000 source = {
1001 remotes = ["https://rubygems.org"];
1002 sha256 = "18pyksz4jb0n28acqxv14ahy8mkc9ldqbbn73gcj28m0l9wjzsca";
1003 type = "gem";
1004 };
1005 version = "0.23.2";
1006 };
1007 hashdiff = {
1008 platforms = [];
1009 source = {
1010 remotes = ["https://rubygems.org"];
1011 sha256 = "0yj5l2rw8i8jc725hbcpc4wks0qlaaimr3dpaqamfjkjkxl0hjp9";
1012 type = "gem";
1013 };
1014 version = "0.3.7";
1015 };
1016 hashie = {
1017 platforms = [];
1018 source = {
1019 remotes = ["https://rubygems.org"];
1020 sha256 = "1hh5lybf8hm7d7xs4xm8hxvm8xqrs2flc8fnwkrclaj746izw6xb";
1021 type = "gem";
1022 };
1023 version = "3.5.7";
1024 };
1025 http = {
1026 dependencies = ["addressable" "http-cookie" "http-form_data" "http_parser.rb"];
1027 platforms = [];
1028 source = {
1029 remotes = ["https://rubygems.org"];
1030 sha256 = "1jlm5prw437wqpfxcigh88lfap3m7g8mnmj5as7qw6dzqnvrxwmc";
1031 type = "gem";
1032 };
1033 version = "3.3.0";
1034 };
1035 http-cookie = {
1036 dependencies = ["domain_name"];
1037 platforms = [];
1038 source = {
1039 remotes = ["https://rubygems.org"];
1040 sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
1041 type = "gem";
1042 };
1043 version = "1.0.3";
1044 };
1045 http-form_data = {
1046 platforms = [];
1047 source = {
1048 remotes = ["https://rubygems.org"];
1049 sha256 = "15lpn604byf7cyxnw949xz4rvpcknqp7a48q73nm630gqxsa76f3";
1050 type = "gem";
1051 };
1052 version = "2.1.1";
1053 };
1054 http_accept_language = {
1055 platforms = [];
1056 source = {
1057 remotes = ["https://rubygems.org"];
1058 sha256 = "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0";
1059 type = "gem";
1060 };
1061 version = "2.1.1";
1062 };
1063 "http_parser.rb" = {
1064 platforms = [];
1065 source = {
1066 remotes = ["https://rubygems.org"];
1067 sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
1068 type = "gem";
1069 };
1070 version = "0.6.0";
1071 };
1072 httparty = {
1073 dependencies = ["mime-types" "multi_xml"];
1074 platforms = [];
1075 source = {
1076 remotes = ["https://rubygems.org"];
1077 sha256 = "1xmm7pxmz3pblkdr76dg7qm5s60kpp3yvh46c2i0bn1dm0zgl730";
1078 type = "gem";
1079 };
1080 version = "0.16.3";
1081 };
1082 httpclient = {
1083 platforms = [];
1084 source = {
1085 remotes = ["https://rubygems.org"];
1086 sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
1087 type = "gem";
1088 };
1089 version = "2.8.3";
1090 };
1091 i18n = {
1092 dependencies = ["concurrent-ruby"];
1093 platforms = [];
1094 source = {
1095 remotes = ["https://rubygems.org"];
1096 sha256 = "1gcp1m1p6dpasycfz2sj82ci9ggz7lsskz9c9q6gvfwxrl8y9dx7";
1097 type = "gem";
1098 };
1099 version = "1.1.1";
1100 };
1101 i18n-inflector = {
1102 dependencies = ["i18n"];
1103 platforms = [];
1104 source = {
1105 remotes = ["https://rubygems.org"];
1106 sha256 = "081jr7z947aqjfmpbfs10w9jxi205jwgk4mgd8jds1b4m4i8mc7g";
1107 type = "gem";
1108 };
1109 version = "2.6.7";
1110 };
1111 i18n-inflector-rails = {
1112 dependencies = ["actionpack" "i18n-inflector" "railties"];
1113 platforms = [];
1114 source = {
1115 remotes = ["https://rubygems.org"];
1116 sha256 = "0c04jm657akp5n14syhcwnn3hnsvx7harvg97768bvf3f9a37hyk";
1117 type = "gem";
1118 };
1119 version = "1.0.7";
1120 };
1121 ipaddress = {
1122 platforms = [];
1123 source = {
1124 remotes = ["https://rubygems.org"];
1125 sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
1126 type = "gem";
1127 };
1128 version = "0.8.3";
1129 };
1130 jaro_winkler = {
1131 platforms = [];
1132 source = {
1133 remotes = ["https://rubygems.org"];
1134 sha256 = "0rr797nqz081bfk30m2apj5h24bg5d1jr1c8p3xwx4hbwsrbclah";
1135 type = "gem";
1136 };
1137 version = "1.5.1";
1138 };
1139 jasmine = {
1140 dependencies = ["jasmine-core" "phantomjs" "rack" "rake"];
1141 platforms = [];
1142 source = {
1143 remotes = ["https://rubygems.org"];
1144 sha256 = "1xfwf163wi5a9i0vlm564cqi6k30h15wnrwd15ph95jfa5516kv1";
1145 type = "gem";
1146 };
1147 version = "3.3.0";
1148 };
1149 jasmine-core = {
1150 platforms = [];
1151 source = {
1152 remotes = ["https://rubygems.org"];
1153 sha256 = "1b12bjfrxvb8mwjwlfyngykd80lz956glcpfz7rhhw7n75b2rdlv";
1154 type = "gem";
1155 };
1156 version = "3.3.0";
1157 };
1158 jasmine-jquery-rails = {
1159 platforms = [];
1160 source = {
1161 remotes = ["https://rubygems.org"];
1162 sha256 = "0cq5zd4ng5dlza45whd6sa7bzd60rlddk9760271mybdqyd96jlv";
1163 type = "gem";
1164 };
1165 version = "2.0.3";
1166 };
1167 jquery-rails = {
1168 dependencies = ["rails-dom-testing" "railties" "thor"];
1169 platforms = [];
1170 source = {
1171 remotes = ["https://rubygems.org"];
1172 sha256 = "17201sb8ddwy4yprizmqabq1kfx3m9c53p0yqngn63m07jjcpnh8";
1173 type = "gem";
1174 };
1175 version = "4.3.3";
1176 };
1177 js-routes = {
1178 dependencies = ["railties" "sprockets-rails"];
1179 platforms = [];
1180 source = {
1181 remotes = ["https://rubygems.org"];
1182 sha256 = "14yx3jrd4sgcwgj8yrrqdwl691mci1hcjqyyvp0v15jbzis1bclm";
1183 type = "gem";
1184 };
1185 version = "1.4.4";
1186 };
1187 js_image_paths = {
1188 dependencies = ["rails" "sprockets"];
1189 platforms = [];
1190 source = {
1191 remotes = ["https://rubygems.org"];
1192 sha256 = "1d4kq8895i61a338ddk5f2k16l5lvmnkby9cdjwnmm2jddw4q7nf";
1193 type = "gem";
1194 };
1195 version = "0.1.1";
1196 };
1197 json = {
1198 platforms = [];
1199 source = {
1200 remotes = ["https://rubygems.org"];
1201 sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
1202 type = "gem";
1203 };
1204 version = "2.1.0";
1205 };
1206 json-jwt = {
1207 dependencies = ["activesupport" "aes_key_wrap" "bindata"];
1208 platforms = [];
1209 source = {
1210 remotes = ["https://rubygems.org"];
1211 sha256 = "065k7vffdki73f4nz89lxi6wxmcw5dlf593831pgvlbralll6x3r";
1212 type = "gem";
1213 };
1214 version = "1.9.4";
1215 };
1216 json-schema = {
1217 dependencies = ["addressable"];
1218 platforms = [];
1219 source = {
1220 remotes = ["https://rubygems.org"];
1221 sha256 = "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5";
1222 type = "gem";
1223 };
1224 version = "2.8.1";
1225 };
1226 json-schema-rspec = {
1227 dependencies = ["json-schema" "rspec"];
1228 platforms = [];
1229 source = {
1230 remotes = ["https://rubygems.org"];
1231 sha256 = "1ip30yjzyigqqp9jwkrw9x9vrfpnmwi160zmk2vkrwlv9pby0wr9";
1232 type = "gem";
1233 };
1234 version = "0.0.4";
1235 };
1236 jsonpath = {
1237 dependencies = ["multi_json" "to_regexp"];
1238 platforms = [];
1239 source = {
1240 remotes = ["https://rubygems.org"];
1241 sha256 = "06i41lwpj0dwvbxcpqrad5pjn2gmcv0srv0zw0ap7irwc21ifd7d";
1242 type = "gem";
1243 };
1244 version = "0.9.6";
1245 };
1246 jwt = {
1247 platforms = [];
1248 source = {
1249 remotes = ["https://rubygems.org"];
1250 sha256 = "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky";
1251 type = "gem";
1252 };
1253 version = "2.1.0";
1254 };
1255 kgio = {
1256 platforms = [];
1257 source = {
1258 remotes = ["https://rubygems.org"];
1259 sha256 = "1528pyj1szzzp3pgj05fzjd36qjrxm9yj2x5radc9p1z7vl67y50";
1260 type = "gem";
1261 };
1262 version = "2.11.2";
1263 };
1264 kostya-sigar = {
1265 platforms = [];
1266 source = {
1267 remotes = ["https://rubygems.org"];
1268 sha256 = "0z0pcykhjyrb7kq76jfcyxc1qq23gj5zmgy3miy87v85ydrxiqwb";
1269 type = "gem";
1270 };
1271 version = "2.0.4";
1272 };
1273 leaflet-rails = {
1274 dependencies = ["rails"];
1275 platforms = [];
1276 source = {
1277 remotes = ["https://rubygems.org"];
1278 sha256 = "0dy7vhsjj1fhbbqm2s7pw57vgysd31qqi4y0hm91325hmvq75grb";
1279 type = "gem";
1280 };
1281 version = "1.3.1";
1282 };
1283 listen = {
1284 dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
1285 platforms = [];
1286 source = {
1287 remotes = ["https://rubygems.org"];
1288 sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
1289 type = "gem";
1290 };
1291 version = "3.1.5";
1292 };
1293 little-plugger = {
1294 platforms = [];
1295 source = {
1296 remotes = ["https://rubygems.org"];
1297 sha256 = "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym";
1298 type = "gem";
1299 };
1300 version = "1.1.4";
1301 };
1302 logging = {
1303 dependencies = ["little-plugger" "multi_json"];
1304 platforms = [];
1305 source = {
1306 remotes = ["https://rubygems.org"];
1307 sha256 = "06j6iaj89h9jhkx1x3hlswqrfnqds8br05xb1qra69dpvbdmjcwn";
1308 type = "gem";
1309 };
1310 version = "2.2.2";
1311 };
1312 logging-rails = {
1313 dependencies = ["logging"];
1314 platforms = [];
1315 source = {
1316 remotes = ["https://rubygems.org"];
1317 sha256 = "022cnj9v177282kadd9ygzjpvlvbq9k5z0xhdbbmgypi05z4i239";
1318 type = "gem";
1319 };
1320 version = "0.6.0";
1321 };
1322 loofah = {
1323 dependencies = ["crass" "nokogiri"];
1324 platforms = [];
1325 source = {
1326 remotes = ["https://rubygems.org"];
1327 sha256 = "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg";
1328 type = "gem";
1329 };
1330 version = "2.2.3";
1331 };
1332 lumberjack = {
1333 platforms = [];
1334 source = {
1335 remotes = ["https://rubygems.org"];
1336 sha256 = "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n";
1337 type = "gem";
1338 };
1339 version = "1.0.13";
1340 };
1341 macaddr = {
1342 dependencies = ["systemu"];
1343 platforms = [];
1344 source = {
1345 remotes = ["https://rubygems.org"];
1346 sha256 = "1clii8mvhmh5lmnm95ljnjygyiyhdpja85c5vy487rhxn52scn0b";
1347 type = "gem";
1348 };
1349 version = "1.7.1";
1350 };
1351 mail = {
1352 dependencies = ["mini_mime"];
1353 platforms = [];
1354 source = {
1355 remotes = ["https://rubygems.org"];
1356 sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
1357 type = "gem";
1358 };
1359 version = "2.7.1";
1360 };
1361 markdown-it-html5-embed = {
1362 platforms = [];
1363 source = {
1364 remotes = ["https://rubygems.org"];
1365 sha256 = "10n2z6j0whc6makxvcf2jhpwb8xrj4s6vyywijsaaxs0cn490a5c";
1366 type = "gem";
1367 };
1368 version = "1.0.0";
1369 };
1370 markerb = {
1371 platforms = [];
1372 source = {
1373 remotes = ["https://rubygems.org"];
1374 sha256 = "08sm3kafc3086l0a9is2cysk7j2k71mxy6ba295pwwzyvy734y76";
1375 type = "gem";
1376 };
1377 version = "1.1.0";
1378 };
1379 memoizable = {
1380 dependencies = ["thread_safe"];
1381 platforms = [];
1382 source = {
1383 remotes = ["https://rubygems.org"];
1384 sha256 = "0v42bvghsvfpzybfazl14qhkrjvx0xlmxz0wwqc960ga1wld5x5c";
1385 type = "gem";
1386 };
1387 version = "0.4.2";
1388 };
1389 method_source = {
1390 platforms = [];
1391 source = {
1392 remotes = ["https://rubygems.org"];
1393 sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
1394 type = "gem";
1395 };
1396 version = "0.9.2";
1397 };
1398 mime-types = {
1399 dependencies = ["mime-types-data"];
1400 platforms = [];
1401 source = {
1402 remotes = ["https://rubygems.org"];
1403 sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
1404 type = "gem";
1405 };
1406 version = "3.2.2";
1407 };
1408 mime-types-data = {
1409 platforms = [];
1410 source = {
1411 remotes = ["https://rubygems.org"];
1412 sha256 = "07wvp0aw2gjm4njibb70as6rh5hi1zzri5vky1q6jx95h8l56idc";
1413 type = "gem";
1414 };
1415 version = "3.2018.0812";
1416 };
1417 mini_magick = {
1418 platforms = [];
1419 source = {
1420 remotes = ["https://rubygems.org"];
1421 sha256 = "0sisx59mr5kydmxmx5vr8spmrxhrjkfqv35zhsqdlyzmp1z5px9p";
1422 type = "gem";
1423 };
1424 version = "4.9.2";
1425 };
1426 mini_mime = {
1427 platforms = [];
1428 source = {
1429 remotes = ["https://rubygems.org"];
1430 sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
1431 type = "gem";
1432 };
1433 version = "1.0.1";
1434 };
1435 mini_portile2 = {
1436 platforms = [];
1437 source = {
1438 remotes = ["https://rubygems.org"];
1439 sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11";
1440 type = "gem";
1441 };
1442 version = "2.3.0";
1443 };
1444 minitest = {
1445 platforms = [];
1446 source = {
1447 remotes = ["https://rubygems.org"];
1448 sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
1449 type = "gem";
1450 };
1451 version = "5.11.3";
1452 };
1453 mobile-fu = {
1454 dependencies = ["rack-mobile-detect" "rails"];
1455 platforms = [];
1456 source = {
1457 remotes = ["https://rubygems.org"];
1458 sha256 = "0lxfcsd7dwwcpa1j2jbl382anmv6kksf5q1wqj14gc6jxxjq9s4i";
1459 type = "gem";
1460 };
1461 version = "1.4.0";
1462 };
1463 multi_json = {
1464 platforms = [];
1465 source = {
1466 remotes = ["https://rubygems.org"];
1467 sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
1468 type = "gem";
1469 };
1470 version = "1.13.1";
1471 };
1472 multi_test = {
1473 platforms = [];
1474 source = {
1475 remotes = ["https://rubygems.org"];
1476 sha256 = "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd";
1477 type = "gem";
1478 };
1479 version = "0.1.2";
1480 };
1481 multi_xml = {
1482 platforms = [];
1483 source = {
1484 remotes = ["https://rubygems.org"];
1485 sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj";
1486 type = "gem";
1487 };
1488 version = "0.6.0";
1489 };
1490 multipart-post = {
1491 platforms = [];
1492 source = {
1493 remotes = ["https://rubygems.org"];
1494 sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
1495 type = "gem";
1496 };
1497 version = "2.0.0";
1498 };
1499 mysql2 = {
1500 groups = ["mysql"];
1501 platforms = [];
1502 source = {
1503 remotes = ["https://rubygems.org"];
1504 sha256 = "1a2kdjgzwh1p2rkcmxaawy6ibi32b04wbdd5d4wr8i342pq76di4";
1505 type = "gem";
1506 };
1507 version = "0.5.2";
1508 };
1509 naught = {
1510 platforms = [];
1511 source = {
1512 remotes = ["https://rubygems.org"];
1513 sha256 = "1wwjx35zgbc0nplp8a866iafk4zsrbhwwz4pav5gydr2wm26nksg";
1514 type = "gem";
1515 };
1516 version = "1.1.0";
1517 };
1518 nenv = {
1519 platforms = [];
1520 source = {
1521 remotes = ["https://rubygems.org"];
1522 sha256 = "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr";
1523 type = "gem";
1524 };
1525 version = "0.3.0";
1526 };
1527 nio4r = {
1528 platforms = [];
1529 source = {
1530 remotes = ["https://rubygems.org"];
1531 sha256 = "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr";
1532 type = "gem";
1533 };
1534 version = "2.3.1";
1535 };
1536 nokogiri = {
1537 dependencies = ["mini_portile2"];
1538 platforms = [];
1539 source = {
1540 remotes = ["https://rubygems.org"];
1541 sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz";
1542 type = "gem";
1543 };
1544 version = "1.8.5";
1545 };
1546 notiffany = {
1547 dependencies = ["nenv" "shellany"];
1548 platforms = [];
1549 source = {
1550 remotes = ["https://rubygems.org"];
1551 sha256 = "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx";
1552 type = "gem";
1553 };
1554 version = "0.1.1";
1555 };
1556 oauth = {
1557 platforms = [];
1558 source = {
1559 remotes = ["https://rubygems.org"];
1560 sha256 = "1zszdg8q1b135z7l7crjj234k4j0m347hywp5kj6zsq7q78pw09y";
1561 type = "gem";
1562 };
1563 version = "0.5.4";
1564 };
1565 oauth2 = {
1566 dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"];
1567 platforms = [];
1568 source = {
1569 remotes = ["https://rubygems.org"];
1570 sha256 = "0av6nlb5y2sm6m8fx669ywrqa9858yqaqfqzny75nqp3anag89qh";
1571 type = "gem";
1572 };
1573 version = "1.4.1";
1574 };
1575 octokit = {
1576 dependencies = ["sawyer"];
1577 platforms = [];
1578 source = {
1579 remotes = ["https://rubygems.org"];
1580 sha256 = "1yh0yzzqg575ix3y2l2261b9ag82gv2v4f1wczdhcmfbxcz755x6";
1581 type = "gem";
1582 };
1583 version = "4.13.0";
1584 };
1585 omniauth = {
1586 dependencies = ["hashie" "rack"];
1587 platforms = [];
1588 source = {
1589 remotes = ["https://rubygems.org"];
1590 sha256 = "1msqr4qq7mfdvl3rg89529isrv595hvjpj2gi0say4b8nwqfggmg";
1591 type = "gem";
1592 };
1593 version = "1.8.1";
1594 };
1595 omniauth-oauth = {
1596 dependencies = ["oauth" "omniauth"];
1597 platforms = [];
1598 source = {
1599 remotes = ["https://rubygems.org"];
1600 sha256 = "1n5vk4by7hkyc09d9blrw2argry5awpw4gbw1l4n2s9b3j4qz037";
1601 type = "gem";
1602 };
1603 version = "1.1.0";
1604 };
1605 omniauth-oauth2 = {
1606 dependencies = ["oauth2" "omniauth"];
1607 platforms = [];
1608 source = {
1609 remotes = ["https://rubygems.org"];
1610 sha256 = "0kscjf1y0lnggsl4z3w5bwllqshqjlsl5kmcya5haydajdnzvdjr";
1611 type = "gem";
1612 };
1613 version = "1.5.0";
1614 };
1615 omniauth-tumblr = {
1616 dependencies = ["multi_json" "omniauth-oauth"];
1617 platforms = [];
1618 source = {
1619 remotes = ["https://rubygems.org"];
1620 sha256 = "10ncmfym4l6k6aqp402g7mqxahbggcj5xkpsjxgngs746s82y97w";
1621 type = "gem";
1622 };
1623 version = "1.2";
1624 };
1625 omniauth-twitter = {
1626 dependencies = ["omniauth-oauth" "rack"];
1627 platforms = [];
1628 source = {
1629 remotes = ["https://rubygems.org"];
1630 sha256 = "0r5j65hkpgzhvvbs90id3nfsjgsad6ymzggbm7zlaxvnrmvnrk65";
1631 type = "gem";
1632 };
1633 version = "1.4.0";
1634 };
1635 omniauth-wordpress = {
1636 dependencies = ["omniauth-oauth2"];
1637 platforms = [];
1638 source = {
1639 remotes = ["https://rubygems.org"];
1640 sha256 = "008zx4zwrbzyvlgv6hy68k1d05zskiwvcgwvxxbxhbl0mvlmh303";
1641 type = "gem";
1642 };
1643 version = "0.2.2";
1644 };
1645 open_graph_reader = {
1646 dependencies = ["faraday" "nokogiri"];
1647 platforms = [];
1648 source = {
1649 remotes = ["https://rubygems.org"];
1650 sha256 = "0af4yldyb0d8zglw73s13pyn0g90gs4m5zf7bwy8r4kym9zbvc21";
1651 type = "gem";
1652 };
1653 version = "0.6.2";
1654 };
1655 openid_connect = {
1656 dependencies = ["activemodel" "attr_required" "json-jwt" "rack-oauth2" "swd" "tzinfo" "validate_email" "validate_url" "webfinger"];
1657 platforms = [];
1658 source = {
1659 remotes = ["https://rubygems.org"];
1660 sha256 = "1r13bv18nyvw0g1nw3fzffvv2si99zj24w0k5zgawf4q6nn5f7vd";
1661 type = "gem";
1662 };
1663 version = "1.1.6";
1664 };
1665 orm_adapter = {
1666 platforms = [];
1667 source = {
1668 remotes = ["https://rubygems.org"];
1669 sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
1670 type = "gem";
1671 };
1672 version = "0.5.0";
1673 };
1674 parallel = {
1675 platforms = [];
1676 source = {
1677 remotes = ["https://rubygems.org"];
1678 sha256 = "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67";
1679 type = "gem";
1680 };
1681 version = "1.12.1";
1682 };
1683 parser = {
1684 dependencies = ["ast"];
1685 platforms = [];
1686 source = {
1687 remotes = ["https://rubygems.org"];
1688 sha256 = "1zjk0w1kjj3xk8ymy1430aa4gg0k8ckphfj88br6il4pm83f0n1f";
1689 type = "gem";
1690 };
1691 version = "2.5.3.0";
1692 };
1693 pg = {
1694 platforms = [];
1695 source = {
1696 remotes = ["https://rubygems.org"];
1697 sha256 = "1pnjw3rspdfjssxyf42jnbsdlgri8ylysimp0s28wxb93k6ff2qb";
1698 type = "gem";
1699 };
1700 version = "1.1.3";
1701 };
1702 phantomjs = {
1703 platforms = [];
1704 source = {
1705 remotes = ["https://rubygems.org"];
1706 sha256 = "0y8pbbyq9dirxb7igkb2s5limz2895qmr41c09fjhx6k6fxcz4mk";
1707 type = "gem";
1708 };
1709 version = "2.1.1.0";
1710 };
1711 poltergeist = {
1712 dependencies = ["capybara" "cliver" "websocket-driver"];
1713 platforms = [];
1714 source = {
1715 remotes = ["https://rubygems.org"];
1716 sha256 = "0il80p97psmhs6scl0grq031gv7kws4ylvvd6zyr8xv91qadga95";
1717 type = "gem";
1718 };
1719 version = "1.18.1";
1720 };
1721 powerpack = {
1722 platforms = [];
1723 source = {
1724 remotes = ["https://rubygems.org"];
1725 sha256 = "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv";
1726 type = "gem";
1727 };
1728 version = "0.1.2";
1729 };
1730 pronto = {
1731 dependencies = ["gitlab" "httparty" "octokit" "rainbow" "rugged" "thor"];
1732 platforms = [];
1733 source = {
1734 remotes = ["https://rubygems.org"];
1735 sha256 = "13xbg1pm3kz5zbzxad5qgqnkzkp3ddajj7wxx16aqbfr7rqggvhz";
1736 type = "gem";
1737 };
1738 version = "0.9.5";
1739 };
1740 pronto-eslint = {
1741 dependencies = ["eslintrb" "pronto"];
1742 platforms = [];
1743 source = {
1744 remotes = ["https://rubygems.org"];
1745 sha256 = "1cxyx6mlcdgv4ykliaizkx9cps68xf7qvy8lzxmv7pcqzkxaq7xc";
1746 type = "gem";
1747 };
1748 version = "0.9.1";
1749 };
1750 pronto-haml = {
1751 dependencies = ["haml_lint" "pronto"];
1752 platforms = [];
1753 source = {
1754 remotes = ["https://rubygems.org"];
1755 sha256 = "116iln1whwiqy55f86q33lnnic0awnqm415xvxwnhwlagcbwmnkg";
1756 type = "gem";
1757 };
1758 version = "0.9.0";
1759 };
1760 pronto-rubocop = {
1761 dependencies = ["pronto" "rubocop"];
1762 platforms = [];
1763 source = {
1764 remotes = ["https://rubygems.org"];
1765 sha256 = "0bcm34qlpp02wf69why5lpi5p53h5r4fq36f4b1fwi621fwzlgsy";
1766 type = "gem";
1767 };
1768 version = "0.9.1";
1769 };
1770 pronto-scss = {
1771 dependencies = ["pronto" "scss_lint"];
1772 platforms = [];
1773 source = {
1774 remotes = ["https://rubygems.org"];
1775 sha256 = "0kgaqd6l2w3brdsp5231fpfr6fwajciz2hdr925l1zhh6ni1y2za";
1776 type = "gem";
1777 };
1778 version = "0.9.1";
1779 };
1780 pry = {
1781 dependencies = ["coderay" "method_source"];
1782 platforms = [];
1783 source = {
1784 remotes = ["https://rubygems.org"];
1785 sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
1786 type = "gem";
1787 };
1788 version = "0.12.2";
1789 };
1790 pry-byebug = {
1791 dependencies = ["byebug" "pry"];
1792 platforms = [];
1793 source = {
1794 remotes = ["https://rubygems.org"];
1795 sha256 = "0y2758593i2ij0nhmv0j1pbdfx2cgi52ns6wkij0frgnk2lf650g";
1796 type = "gem";
1797 };
1798 version = "3.6.0";
1799 };
1800 public_suffix = {
1801 platforms = [];
1802 source = {
1803 remotes = ["https://rubygems.org"];
1804 sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
1805 type = "gem";
1806 };
1807 version = "3.0.3";
1808 };
1809 raabro = {
1810 platforms = [];
1811 source = {
1812 remotes = ["https://rubygems.org"];
1813 sha256 = "0xzdmbn48753f6k0ckirp8ja5p0xn1a92wbwxfyggyhj0hza9ylq";
1814 type = "gem";
1815 };
1816 version = "1.1.6";
1817 };
1818 rack = {
1819 platforms = [];
1820 source = {
1821 remotes = ["https://rubygems.org"];
1822 sha256 = "1pcgv8dv4vkaczzlix8q3j68capwhk420cddzijwqgi2qb4lm1zm";
1823 type = "gem";
1824 };
1825 version = "2.0.6";
1826 };
1827 rack-cors = {
1828 platforms = [];
1829 source = {
1830 remotes = ["https://rubygems.org"];
1831 sha256 = "1j27vy1bmhbqcyzhxg8d07qassmax769xjalfwcwz6qfiq8cf013";
1832 type = "gem";
1833 };
1834 version = "1.0.2";
1835 };
1836 rack-google-analytics = {
1837 dependencies = ["actionpack" "activesupport"];
1838 platforms = [];
1839 source = {
1840 remotes = ["https://rubygems.org"];
1841 sha256 = "09pv0z5dhjjrlhi9qj5qy48hi66f7iix337qrapg7mvwwz6czcvj";
1842 type = "gem";
1843 };
1844 version = "1.2.0";
1845 };
1846 rack-mobile-detect = {
1847 dependencies = ["rack"];
1848 platforms = [];
1849 source = {
1850 remotes = ["https://rubygems.org"];
1851 sha256 = "0bagli6ldhkpd1yym775sxy7w5n4jds6gbcjm3gmcl37vggvm8a5";
1852 type = "gem";
1853 };
1854 version = "0.4.0";
1855 };
1856 rack-oauth2 = {
1857 dependencies = ["activesupport" "attr_required" "httpclient" "json-jwt" "rack"];
1858 platforms = [];
1859 source = {
1860 remotes = ["https://rubygems.org"];
1861 sha256 = "0kmxj9hbjhhcs3yyb433s82hkpmzb536m0mwfadjiaisganx1cii";
1862 type = "gem";
1863 };
1864 version = "1.9.3";
1865 };
1866 rack-piwik = {
1867 platforms = [];
1868 source = {
1869 remotes = ["https://rubygems.org"];
1870 sha256 = "0raxrckapqh693lpid0cnx1j1v2i3mz5cyssg7grgrilgrn9318z";
1871 type = "gem";
1872 };
1873 version = "0.3.0";
1874 };
1875 rack-protection = {
1876 dependencies = ["rack"];
1877 platforms = [];
1878 source = {
1879 remotes = ["https://rubygems.org"];
1880 sha256 = "0ylx74ravz7nvnyygq0nk3v86qdzrmqxpwpayhppyy50l72rcajq";
1881 type = "gem";
1882 };
1883 version = "2.0.4";
1884 };
1885 rack-rewrite = {
1886 platforms = [];
1887 source = {
1888 remotes = ["https://rubygems.org"];
1889 sha256 = "0milw71dv96wnc6i48vbzypws51dgf415kkp8c4air0mkdhpj838";
1890 type = "gem";
1891 };
1892 version = "1.5.1";
1893 };
1894 rack-ssl = {
1895 dependencies = ["rack"];
1896 platforms = [];
1897 source = {
1898 remotes = ["https://rubygems.org"];
1899 sha256 = "0c21xqkjyl10fngq6dy8082vmn2png8cwkiyzv83ymixq5cx7ygp";
1900 type = "gem";
1901 };
1902 version = "1.4.1";
1903 };
1904 rack-test = {
1905 dependencies = ["rack"];
1906 platforms = [];
1907 source = {
1908 remotes = ["https://rubygems.org"];
1909 sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
1910 type = "gem";
1911 };
1912 version = "1.1.0";
1913 };
1914 rails = {
1915 dependencies = ["actioncable" "actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activesupport" "railties" "sprockets-rails"];
1916 platforms = [];
1917 source = {
1918 remotes = ["https://rubygems.org"];
1919 sha256 = "0lb07cbwgm371zyn9i6fyj9q8rmv89lacmyzrfvzxqqx2n3ilc5q";
1920 type = "gem";
1921 };
1922 version = "5.1.6";
1923 };
1924 rails-assets-autosize = {
1925 platforms = [];
1926 source = {
1927 remotes = ["https://rails-assets.org"];
1928 sha256 = "0hr72mfprb9678lf7dj9lh801lm7p98nzkrnrz764sy9lmbpzcib";
1929 type = "gem";
1930 };
1931 version = "4.0.2";
1932 };
1933 rails-assets-backbone = {
1934 dependencies = ["rails-assets-underscore"];
1935 platforms = [];
1936 source = {
1937 remotes = ["https://rails-assets.org"];
1938 sha256 = "0zjgwhgfmg1jyyds7zfjp6g4bz8vw56qvhlrpj943wcqpdxm93id";
1939 type = "gem";
1940 };
1941 version = "1.3.3";
1942 };
1943 rails-assets-blueimp-gallery = {
1944 platforms = [];
1945 source = {
1946 remotes = ["https://rails-assets.org"];
1947 sha256 = "18b7xvvkdnd39xlbkyw46i86w3wzj349s8iv5wdiypa5qdcql8mq";
1948 type = "gem";
1949 };
1950 version = "2.33.0";
1951 };
1952 rails-assets-bootstrap = {
1953 dependencies = ["rails-assets-jquery"];
1954 platforms = [];
1955 source = {
1956 remotes = ["https://rails-assets.org"];
1957 sha256 = "0x4i11132qcmghmqb061iq47yksrr7i0la5hzzdm38dxybh87x5v";
1958 type = "gem";
1959 };
1960 version = "3.3.7";
1961 };
1962 rails-assets-bootstrap-markdown = {
1963 dependencies = ["rails-assets-bootstrap"];
1964 platforms = [];
1965 source = {
1966 remotes = ["https://rails-assets.org"];
1967 sha256 = "1nxirs9wx5jxrjmxjwvsqlf2rsypjn3ajg7fs28c4ib7wwpabwj3";
1968 type = "gem";
1969 };
1970 version = "2.10.0";
1971 };
1972 rails-assets-corejs-typeahead = {
1973 dependencies = ["rails-assets-jquery"];
1974 platforms = [];
1975 source = {
1976 remotes = ["https://rails-assets.org"];
1977 sha256 = "1p5i6afd156rakrin99c2ryaz3zykx21ir6y10l34jnw03rikcfg";
1978 type = "gem";
1979 };
1980 version = "1.2.1";
1981 };
1982 rails-assets-diaspora_jsxc = {
1983 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"];
1984 platforms = [];
1985 source = {
1986 remotes = ["https://rails-assets.org"];
1987 sha256 = "07vqdj0l8fsj4fd2sschba2jgfbimyfad56009ldzlcvb6ml5nhi";
1988 type = "gem";
1989 };
1990 version = "0.1.5.develop.7";
1991 };
1992 rails-assets-emojione = {
1993 platforms = [];
1994 source = {
1995 remotes = ["https://rails-assets.org"];
1996 sha256 = "1j29vbsf6v9ikiqlmnfgzxys4xsa1glvmfky8id5xfyymnjx2c52";
1997 type = "gem";
1998 };
1999 version = "2.0.1";
2000 };
2001 "rails-assets-favico.js" = {
2002 platforms = [];
2003 source = {
2004 remotes = ["https://rails-assets.org"];
2005 sha256 = "19yndhljmqlvarf49h5v71zq0p0ngvspjr2v0m6lac0q9ni7r5bv";
2006 type = "gem";
2007 };
2008 version = "0.3.10";
2009 };
2010 rails-assets-fine-uploader = {
2011 platforms = [];
2012 source = {
2013 remotes = ["https://rails-assets.org"];
2014 sha256 = "1vxj78x2vvlchpapxpaawysc9wn8alzdd3gxhwfwy11xv8ka9mdv";
2015 type = "gem";
2016 };
2017 version = "5.13.0";
2018 };
2019 rails-assets-highlightjs = {
2020 platforms = [];
2021 source = {
2022 remotes = ["https://rails-assets.org"];
2023 sha256 = "0spmb0gkfs13fmljjv1n53r53q69fhb6r573ndbxnhgb3izqgnqp";
2024 type = "gem";
2025 };
2026 version = "9.12.0";
2027 };
2028 rails-assets-jasmine = {
2029 platforms = [];
2030 source = {
2031 remotes = ["https://rails-assets.org"];
2032 sha256 = "1n6yixrl9cgq5kckay75b44p878s1kqi69mhgyw99w8dsq8i2vy5";
2033 type = "gem";
2034 };
2035 version = "3.3.0";
2036 };
2037 rails-assets-jasmine-ajax = {
2038 dependencies = ["rails-assets-jasmine"];
2039 platforms = [];
2040 source = {
2041 remotes = ["https://rails-assets.org"];
2042 sha256 = "0l8z0p75x1yzk1l1ryfvdlvq8yq4w2xngp4icz478axd5jcqx6kg";
2043 type = "gem";
2044 };
2045 version = "3.4.0";
2046 };
2047 rails-assets-jquery = {
2048 platforms = [];
2049 source = {
2050 remotes = ["https://rails-assets.org"];
2051 sha256 = "1wcaappk12w300733lrqb571cir9nw35d9q6d2i52wwdvhv2fx2y";
2052 type = "gem";
2053 };
2054 version = "3.3.1";
2055 };
2056 rails-assets-jquery-colorbox = {
2057 dependencies = ["rails-assets-jquery"];
2058 platforms = [];
2059 source = {
2060 remotes = ["https://rails-assets.org"];
2061 sha256 = "19ws3r1zfviwnfr9s0jh6iqss50iwqkf4a78zhrk0p3bb4lvmmsp";
2062 type = "gem";
2063 };
2064 version = "1.6.4";
2065 };
2066 rails-assets-jquery-fullscreen-plugin = {
2067 platforms = [];
2068 source = {
2069 remotes = ["https://rails-assets.org"];
2070 sha256 = "0ldvq4s15lap9p6w7d1yw6dajn2gh6p75dbkp79p0d8ylzapsd58";
2071 type = "gem";
2072 };
2073 version = "0.5.0";
2074 };
2075 rails-assets-jquery-placeholder = {
2076 dependencies = ["rails-assets-jquery"];
2077 platforms = [];
2078 source = {
2079 remotes = ["https://rails-assets.org"];
2080 sha256 = "0h17gjazc27pj4cm2ig232ww4d4ppq9bcginwzjss95pl63richi";
2081 type = "gem";
2082 };
2083 version = "2.3.1";
2084 };
2085 rails-assets-jquery-textchange = {
2086 dependencies = ["rails-assets-jquery"];
2087 platforms = [];
2088 source = {
2089 remotes = ["https://rails-assets.org"];
2090 sha256 = "0rsw3cn9a5njv80zy53339kmrmv60b8fqcrr7bacapbagb2rd4dj";
2091 type = "gem";
2092 };
2093 version = "0.2.3";
2094 };
2095 "rails-assets-jquery.are-you-sure" = {
2096 dependencies = ["rails-assets-jquery"];
2097 platforms = [];
2098 source = {
2099 remotes = ["https://rails-assets.org"];
2100 sha256 = "0nj04aqh9jpcg57xbjxpm2vn7mkd5clnpma907515a1nxy40bym0";
2101 type = "gem";
2102 };
2103 version = "1.9.0";
2104 };
2105 "rails-assets-jquery.slimscroll" = {
2106 platforms = [];
2107 source = {
2108 remotes = ["https://rails-assets.org"];
2109 sha256 = "1rymmd2rxy1vjjj70v88abmdlfs55276rs3rksj300dgirnnj998";
2110 type = "gem";
2111 };
2112 version = "1.3.8";
2113 };
2114 "rails-assets-jquery.ui" = {
2115 dependencies = ["rails-assets-jquery"];
2116 platforms = [];
2117 source = {
2118 remotes = ["https://rails-assets.org"];
2119 sha256 = "0xc9kfb29hi441irj49b7aawxkddk1dxzy938rpqv9ylpsj7knaa";
2120 type = "gem";
2121 };
2122 version = "1.11.4";
2123 };
2124 rails-assets-markdown-it = {
2125 platforms = [];
2126 source = {
2127 remotes = ["https://rails-assets.org"];
2128 sha256 = "0fxx7ldszsdqr5ry21bnxmv33byz7abpk9lcp100q5cqsjx091r9";
2129 type = "gem";
2130 };
2131 version = "8.4.2";
2132 };
2133 rails-assets-markdown-it--markdown-it-for-inline = {
2134 platforms = [];
2135 source = {
2136 remotes = ["https://rails-assets.org"];
2137 sha256 = "0fznv2x7ndadr3wb4dzhh86bpcpwz8f4d8rfhz4sfbqlai40j3jl";
2138 type = "gem";
2139 };
2140 version = "0.1.1";
2141 };
2142 rails-assets-markdown-it-diaspora-mention = {
2143 platforms = [];
2144 source = {
2145 remotes = ["https://rails-assets.org"];
2146 sha256 = "0asggm7wgmdll8x94291p2w6icmp2izi914dlh3b7vb7dpjq3jig";
2147 type = "gem";
2148 };
2149 version = "1.2.0";
2150 };
2151 rails-assets-markdown-it-hashtag = {
2152 platforms = [];
2153 source = {
2154 remotes = ["https://rails-assets.org"];
2155 sha256 = "0dr8fwaxgkfqm7z4rl4jdym0i1ycqw1sgkxshkd9k0849ry12cdk";
2156 type = "gem";
2157 };
2158 version = "0.4.0";
2159 };
2160 rails-assets-markdown-it-sanitizer = {
2161 platforms = [];
2162 source = {
2163 remotes = ["https://rails-assets.org"];
2164 sha256 = "0fkpffh83fc257zkzaia93j4hw2baz90lg10s5yxsxww06q5dn36";
2165 type = "gem";
2166 };
2167 version = "0.4.3";
2168 };
2169 rails-assets-markdown-it-sub = {
2170 platforms = [];
2171 source = {
2172 remotes = ["https://rails-assets.org"];
2173 sha256 = "08hjij5fqvhvg7s27n4g8qqsks974g3kc5k7xl2qmh41k7f4hcrk";
2174 type = "gem";
2175 };
2176 version = "1.0.0";
2177 };
2178 rails-assets-markdown-it-sup = {
2179 platforms = [];
2180 source = {
2181 remotes = ["https://rails-assets.org"];
2182 sha256 = "17nnnvky7zy0yiwwl6dm8ibbkyvvf63xfp3snch4dzmras05lmig";
2183 type = "gem";
2184 };
2185 version = "1.0.0";
2186 };
2187 rails-assets-underscore = {
2188 platforms = [];
2189 source = {
2190 remotes = ["https://rails-assets.org"];
2191 sha256 = "1ccnzj7aqrvngcs915y290pijryqmjygimdwlrykpyj8vwzifdnc";
2192 type = "gem";
2193 };
2194 version = "1.9.1";
2195 };
2196 rails-assets-utatti-perfect-scrollbar = {
2197 platforms = [];
2198 source = {
2199 remotes = ["https://rails-assets.org"];
2200 sha256 = "0m8syfv8p5bnwm8nrba6mpjnhrd29ffwzi6awhiw537jqw42b12v";
2201 type = "gem";
2202 };
2203 version = "1.4.0";
2204 };
2205 rails-controller-testing = {
2206 dependencies = ["actionpack" "actionview" "activesupport"];
2207 platforms = [];
2208 source = {
2209 remotes = ["https://rubygems.org"];
2210 sha256 = "16kdkk73mhhs73iz3i1i0ryjm84dadiyh817b3nh8acdi490jyhy";
2211 type = "gem";
2212 };
2213 version = "1.0.2";
2214 };
2215 rails-dom-testing = {
2216 dependencies = ["activesupport" "nokogiri"];
2217 platforms = [];
2218 source = {
2219 remotes = ["https://rubygems.org"];
2220 sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
2221 type = "gem";
2222 };
2223 version = "2.0.3";
2224 };
2225 rails-html-sanitizer = {
2226 dependencies = ["loofah"];
2227 platforms = [];
2228 source = {
2229 remotes = ["https://rubygems.org"];
2230 sha256 = "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr";
2231 type = "gem";
2232 };
2233 version = "1.0.4";
2234 };
2235 rails-i18n = {
2236 dependencies = ["i18n" "railties"];
2237 platforms = [];
2238 source = {
2239 remotes = ["https://rubygems.org"];
2240 sha256 = "05lkhc737a9dw0hd5ljmja0yp4cw39r3200s1r0n4bs7z1g3ka7l";
2241 type = "gem";
2242 };
2243 version = "5.1.2";
2244 };
2245 rails-timeago = {
2246 dependencies = ["actionpack" "activesupport"];
2247 platforms = [];
2248 source = {
2249 remotes = ["https://rubygems.org"];
2250 sha256 = "01x1vs9hni9wn8dc4fmyqzkrn651chzsi2mhmk0pxdrfx9md0lxv";
2251 type = "gem";
2252 };
2253 version = "2.16.0";
2254 };
2255 railties = {
2256 dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
2257 platforms = [];
2258 source = {
2259 remotes = ["https://rubygems.org"];
2260 sha256 = "0ycy2gdaj0px1vfaghskvl6qkczwaigrli2zxn54w7zn1z29faj8";
2261 type = "gem";
2262 };
2263 version = "5.1.6";
2264 };
2265 rainbow = {
2266 dependencies = ["rake"];
2267 platforms = [];
2268 source = {
2269 remotes = ["https://rubygems.org"];
2270 sha256 = "08w2ghc5nv0kcq5b257h7dwjzjz1pqcavajfdx2xjyxqsvh2y34w";
2271 type = "gem";
2272 };
2273 version = "2.2.2";
2274 };
2275 raindrops = {
2276 platforms = [];
2277 source = {
2278 remotes = ["https://rubygems.org"];
2279 sha256 = "1qpbd9jif40c53fz2r0l8khfl016y8s8bkx37ibcaafclbl3xygp";
2280 type = "gem";
2281 };
2282 version = "0.19.0";
2283 };
2284 rake = {
2285 platforms = [];
2286 source = {
2287 remotes = ["https://rubygems.org"];
2288 sha256 = "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg";
2289 type = "gem";
2290 };
2291 version = "12.3.1";
2292 };
2293 rb-fsevent = {
2294 platforms = [];
2295 source = {
2296 remotes = ["https://rubygems.org"];
2297 sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
2298 type = "gem";
2299 };
2300 version = "0.10.3";
2301 };
2302 rb-inotify = {
2303 dependencies = ["ffi"];
2304 platforms = [];
2305 source = {
2306 remotes = ["https://rubygems.org"];
2307 sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71";
2308 type = "gem";
2309 };
2310 version = "0.9.10";
2311 };
2312 redcarpet = {
2313 platforms = [];
2314 source = {
2315 remotes = ["https://rubygems.org"];
2316 sha256 = "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7";
2317 type = "gem";
2318 };
2319 version = "3.4.0";
2320 };
2321 redis = {
2322 platforms = [];
2323 source = {
2324 remotes = ["https://rubygems.org"];
2325 sha256 = "0i415x8gi0c5vsiy6ikvx5js6fhc4x80a5lqv8iidy2iymd20irv";
2326 type = "gem";
2327 };
2328 version = "3.3.5";
2329 };
2330 regexp_parser = {
2331 platforms = [];
2332 source = {
2333 remotes = ["https://rubygems.org"];
2334 sha256 = "18g5jyg3blsdrz3mc8d87bms6qqn6gcdh1nvdhvgbjdpk9pw21dq";
2335 type = "gem";
2336 };
2337 version = "1.3.0";
2338 };
2339 request_store = {
2340 dependencies = ["rack"];
2341 platforms = [];
2342 source = {
2343 remotes = ["https://rubygems.org"];
2344 sha256 = "1963330z03fk382fi8y231ygcbnh86m91dqlp5rh1mwy9ihzzl6d";
2345 type = "gem";
2346 };
2347 version = "1.4.1";
2348 };
2349 responders = {
2350 dependencies = ["actionpack" "railties"];
2351 platforms = [];
2352 source = {
2353 remotes = ["https://rubygems.org"];
2354 sha256 = "1rhdyyvvm26f2l3fgwdp6xasfl2y0whwgy766bhdwz697mf78zfn";
2355 type = "gem";
2356 };
2357 version = "2.4.0";
2358 };
2359 rspec = {
2360 dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
2361 platforms = [];
2362 source = {
2363 remotes = ["https://rubygems.org"];
2364 sha256 = "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3";
2365 type = "gem";
2366 };
2367 version = "3.8.0";
2368 };
2369 rspec-core = {
2370 dependencies = ["rspec-support"];
2371 platforms = [];
2372 source = {
2373 remotes = ["https://rubygems.org"];
2374 sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
2375 type = "gem";
2376 };
2377 version = "3.8.0";
2378 };
2379 rspec-expectations = {
2380 dependencies = ["diff-lcs" "rspec-support"];
2381 platforms = [];
2382 source = {
2383 remotes = ["https://rubygems.org"];
2384 sha256 = "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm";
2385 type = "gem";
2386 };
2387 version = "3.8.2";
2388 };
2389 rspec-json_expectations = {
2390 platforms = [];
2391 source = {
2392 remotes = ["https://rubygems.org"];
2393 sha256 = "0l3dhvkb95zwyg72wz33azxigc9cisqgg3z16ksns1sx0b93nnbn";
2394 type = "gem";
2395 };
2396 version = "2.1.0";
2397 };
2398 rspec-mocks = {
2399 dependencies = ["diff-lcs" "rspec-support"];
2400 platforms = [];
2401 source = {
2402 remotes = ["https://rubygems.org"];
2403 sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
2404 type = "gem";
2405 };
2406 version = "3.8.0";
2407 };
2408 rspec-rails = {
2409 dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
2410 platforms = [];
2411 source = {
2412 remotes = ["https://rubygems.org"];
2413 sha256 = "0sqj5da2kc937j5jb18jcf0hrmmzwgj7pk62j0q3qndhc2kvx88p";
2414 type = "gem";
2415 };
2416 version = "3.8.1";
2417 };
2418 rspec-support = {
2419 platforms = [];
2420 source = {
2421 remotes = ["https://rubygems.org"];
2422 sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
2423 type = "gem";
2424 };
2425 version = "3.8.0";
2426 };
2427 rubocop = {
2428 dependencies = ["jaro_winkler" "parallel" "parser" "powerpack" "rainbow" "ruby-progressbar" "unicode-display_width"];
2429 platforms = [];
2430 source = {
2431 remotes = ["https://rubygems.org"];
2432 sha256 = "1ivk049z3mp12nc6v1wn35bsq1g7nz1i2r4xwzqf0v25hm2v7n1i";
2433 type = "gem";
2434 };
2435 version = "0.60.0";
2436 };
2437 ruby-oembed = {
2438 platforms = [];
2439 source = {
2440 remotes = ["https://rubygems.org"];
2441 sha256 = "1kw4aplb3m13z3kchhb79wf87qb3prn1m99s6vl5cyp0xqwyymv0";
2442 type = "gem";
2443 };
2444 version = "0.12.0";
2445 };
2446 ruby-progressbar = {
2447 platforms = [];
2448 source = {
2449 remotes = ["https://rubygems.org"];
2450 sha256 = "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk";
2451 type = "gem";
2452 };
2453 version = "1.10.0";
2454 };
2455 ruby_dep = {
2456 platforms = [];
2457 source = {
2458 remotes = ["https://rubygems.org"];
2459 sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
2460 type = "gem";
2461 };
2462 version = "1.5.0";
2463 };
2464 rubyzip = {
2465 platforms = [];
2466 source = {
2467 remotes = ["https://rubygems.org"];
2468 sha256 = "1n1lb2sdwh9h27y244hxzg1lrxxg2m53pk1vq7p33bna003qkyrj";
2469 type = "gem";
2470 };
2471 version = "1.2.2";
2472 };
2473 rugged = {
2474 platforms = [];
2475 source = {
2476 remotes = ["https://rubygems.org"];
2477 sha256 = "1jv4nw9hvlxp8hhhlllrfcznki82i50fp1sj65zsjllfl2bvz8x6";
2478 type = "gem";
2479 };
2480 version = "0.27.5";
2481 };
2482 safe_yaml = {
2483 platforms = [];
2484 source = {
2485 remotes = ["https://rubygems.org"];
2486 sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
2487 type = "gem";
2488 };
2489 version = "1.0.4";
2490 };
2491 sass = {
2492 platforms = [];
2493 source = {
2494 remotes = ["https://rubygems.org"];
2495 sha256 = "0kfpcwh8dgw4lc81qglkvjl73689jy3g7196zkxm4fpskg1p5lkw";
2496 type = "gem";
2497 };
2498 version = "3.4.25";
2499 };
2500 sass-rails = {
2501 dependencies = ["railties" "sass" "sprockets" "sprockets-rails" "tilt"];
2502 platforms = [];
2503 source = {
2504 remotes = ["https://rubygems.org"];
2505 sha256 = "1wa63sbsimrsf7nfm8h0m1wbsllkfxvd7naph5d1j6pbc555ma7s";
2506 type = "gem";
2507 };
2508 version = "5.0.7";
2509 };
2510 sawyer = {
2511 dependencies = ["addressable" "faraday"];
2512 platforms = [];
2513 source = {
2514 remotes = ["https://rubygems.org"];
2515 sha256 = "0sv1463r7bqzvx4drqdmd36m7rrv6sf1v3c6vswpnq3k6vdw2dvd";
2516 type = "gem";
2517 };
2518 version = "0.8.1";
2519 };
2520 scss_lint = {
2521 dependencies = ["rake" "sass"];
2522 platforms = [];
2523 source = {
2524 remotes = ["https://rubygems.org"];
2525 sha256 = "11rl8kj32p34mqlkhxvlwfrwl8gdl0iha8q9xsrr3sjxjagzv8yp";
2526 type = "gem";
2527 };
2528 version = "0.55.0";
2529 };
2530 secure_headers = {
2531 platforms = [];
2532 source = {
2533 remotes = ["https://rubygems.org"];
2534 sha256 = "17cxci8jyvlgssix0cy7kbm5m2h7s8ym9caj8nilrbd21jis9pc5";
2535 type = "gem";
2536 };
2537 version = "6.0.0";
2538 };
2539 shellany = {
2540 platforms = [];
2541 source = {
2542 remotes = ["https://rubygems.org"];
2543 sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf";
2544 type = "gem";
2545 };
2546 version = "0.0.1";
2547 };
2548 shoulda-matchers = {
2549 dependencies = ["activesupport"];
2550 platforms = [];
2551 source = {
2552 remotes = ["https://rubygems.org"];
2553 sha256 = "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a";
2554 type = "gem";
2555 };
2556 version = "3.1.2";
2557 };
2558 sidekiq = {
2559 dependencies = ["connection_pool" "rack-protection" "redis"];
2560 platforms = [];
2561 source = {
2562 remotes = ["https://rubygems.org"];
2563 sha256 = "1zyf9y3rvzizbwh68i2g1lzd40lalrdc4iyjmaa74gnfwsf92i26";
2564 type = "gem";
2565 };
2566 version = "5.2.3";
2567 };
2568 sidekiq-cron = {
2569 dependencies = ["fugit" "sidekiq"];
2570 platforms = [];
2571 source = {
2572 remotes = ["https://rubygems.org"];
2573 sha256 = "1aliswahmpxn1ib2brn4126gk97ac3zdnwr71mn8vzbr3vdd7fl0";
2574 type = "gem";
2575 };
2576 version = "1.0.4";
2577 };
2578 simple_captcha2 = {
2579 dependencies = ["rails"];
2580 platforms = [];
2581 source = {
2582 remotes = ["https://rubygems.org"];
2583 sha256 = "0vdjydym8sjpa8c1q0n2hanj3n9vzi4ycdw2p6bbm6qqmm1f3fq3";
2584 type = "gem";
2585 };
2586 version = "0.4.3";
2587 };
2588 simple_oauth = {
2589 platforms = [];
2590 source = {
2591 remotes = ["https://rubygems.org"];
2592 sha256 = "0dw9ii6m7wckml100xhjc6vxpjcry174lbi9jz5v7ibjr3i94y8l";
2593 type = "gem";
2594 };
2595 version = "0.3.1";
2596 };
2597 simplecov = {
2598 dependencies = ["docile" "json" "simplecov-html"];
2599 platforms = [];
2600 source = {
2601 remotes = ["https://rubygems.org"];
2602 sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
2603 type = "gem";
2604 };
2605 version = "0.16.1";
2606 };
2607 simplecov-html = {
2608 platforms = [];
2609 source = {
2610 remotes = ["https://rubygems.org"];
2611 sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
2612 type = "gem";
2613 };
2614 version = "0.10.2";
2615 };
2616 sinon-rails = {
2617 dependencies = ["railties"];
2618 platforms = [];
2619 source = {
2620 remotes = ["https://rubygems.org"];
2621 sha256 = "1b7996hb8vfky29b0zcql90x8i6vhdg2zy9nfzmhh820gjv3kggb";
2622 type = "gem";
2623 };
2624 version = "1.15.0";
2625 };
2626 spring = {
2627 dependencies = ["activesupport"];
2628 platforms = [];
2629 source = {
2630 remotes = ["https://rubygems.org"];
2631 sha256 = "168yz9c1fv21wc5i8q7n43b9nk33ivg3ws1fn6x0afgryz3ssx75";
2632 type = "gem";
2633 };
2634 version = "2.0.2";
2635 };
2636 spring-commands-cucumber = {
2637 dependencies = ["spring"];
2638 platforms = [];
2639 source = {
2640 remotes = ["https://rubygems.org"];
2641 sha256 = "0mw81gvms2svn4k4pc6ly7smkmf0j9r2xbf0d38vygbyhiwd1c9a";
2642 type = "gem";
2643 };
2644 version = "1.0.1";
2645 };
2646 spring-commands-rspec = {
2647 dependencies = ["spring"];
2648 platforms = [];
2649 source = {
2650 remotes = ["https://rubygems.org"];
2651 sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2";
2652 type = "gem";
2653 };
2654 version = "1.0.4";
2655 };
2656 sprockets = {
2657 dependencies = ["concurrent-ruby" "rack"];
2658 platforms = [];
2659 source = {
2660 remotes = ["https://rubygems.org"];
2661 sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
2662 type = "gem";
2663 };
2664 version = "3.7.2";
2665 };
2666 sprockets-rails = {
2667 dependencies = ["actionpack" "activesupport" "sprockets"];
2668 platforms = [];
2669 source = {
2670 remotes = ["https://rubygems.org"];
2671 sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
2672 type = "gem";
2673 };
2674 version = "3.2.1";
2675 };
2676 state_machines = {
2677 platforms = [];
2678 source = {
2679 remotes = ["https://rubygems.org"];
2680 sha256 = "00mi16hg3rhkxz4y58s173cbnjlba41y9bfcim90p4ja6yfj9ri3";
2681 type = "gem";
2682 };
2683 version = "0.5.0";
2684 };
2685 string-direction = {
2686 platforms = [];
2687 source = {
2688 remotes = ["https://rubygems.org"];
2689 sha256 = "0iyddwmkj425c6xbn5pmlr2yzwcq4snzlan7rky5b1yp2pvf70jj";
2690 type = "gem";
2691 };
2692 version = "1.2.1";
2693 };
2694 swd = {
2695 dependencies = ["activesupport" "attr_required" "httpclient"];
2696 platforms = [];
2697 source = {
2698 remotes = ["https://rubygems.org"];
2699 sha256 = "1s2vjb6f13za7p1iycl2p73d3p202xa6xny9fjrp8ynwsqix7lyd";
2700 type = "gem";
2701 };
2702 version = "1.1.2";
2703 };
2704 sysexits = {
2705 platforms = [];
2706 source = {
2707 remotes = ["https://rubygems.org"];
2708 sha256 = "0qjng6pllznmprzx8vb0zg0c86hdrkyjs615q41s9fjpmv2430jr";
2709 type = "gem";
2710 };
2711 version = "1.2.0";
2712 };
2713 systemu = {
2714 platforms = [];
2715 source = {
2716 remotes = ["https://rubygems.org"];
2717 sha256 = "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1";
2718 type = "gem";
2719 };
2720 version = "2.6.5";
2721 };
2722 temple = {
2723 platforms = [];
2724 source = {
2725 remotes = ["https://rubygems.org"];
2726 sha256 = "00nxf610nzi4n1i2lkby43nrnarvl89fcl6lg19406msr0k3ycmq";
2727 type = "gem";
2728 };
2729 version = "0.8.0";
2730 };
2731 term-ansicolor = {
2732 dependencies = ["tins"];
2733 platforms = [];
2734 source = {
2735 remotes = ["https://rubygems.org"];
2736 sha256 = "079hbagd9mk0839rkajsdrbzkn992gj8ah2n45qd64v25ml27i6d";
2737 type = "gem";
2738 };
2739 version = "1.7.0";
2740 };
2741 terminal-table = {
2742 dependencies = ["unicode-display_width"];
2743 platforms = [];
2744 source = {
2745 remotes = ["https://rubygems.org"];
2746 sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
2747 type = "gem";
2748 };
2749 version = "1.8.0";
2750 };
2751 thor = {
2752 platforms = [];
2753 source = {
2754 remotes = ["https://rubygems.org"];
2755 sha256 = "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns";
2756 type = "gem";
2757 };
2758 version = "0.19.4";
2759 };
2760 thread_safe = {
2761 platforms = [];
2762 source = {
2763 remotes = ["https://rubygems.org"];
2764 sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
2765 type = "gem";
2766 };
2767 version = "0.3.6";
2768 };
2769 tilt = {
2770 platforms = [];
2771 source = {
2772 remotes = ["https://rubygems.org"];
2773 sha256 = "0020mrgdf11q23hm1ddd6fv691l51vi10af00f137ilcdb2ycfra";
2774 type = "gem";
2775 };
2776 version = "2.0.8";
2777 };
2778 timecop = {
2779 platforms = [];
2780 source = {
2781 remotes = ["https://rubygems.org"];
2782 sha256 = "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp";
2783 type = "gem";
2784 };
2785 version = "0.9.1";
2786 };
2787 timers = {
2788 platforms = [];
2789 source = {
2790 remotes = ["https://rubygems.org"];
2791 sha256 = "04zbs9wyzajn7g9xfgg2zqz5kzf0qa7jgh4hgry4pfcxfmlnwdwx";
2792 type = "gem";
2793 };
2794 version = "4.2.0";
2795 };
2796 tins = {
2797 platforms = [];
2798 source = {
2799 remotes = ["https://rubygems.org"];
2800 sha256 = "1pqj45n216zrz7yckdbdknlmhh187iqzx8fp76y2h0jrgqjfkxmj";
2801 type = "gem";
2802 };
2803 version = "1.20.2";
2804 };
2805 to_regexp = {
2806 platforms = [];
2807 source = {
2808 remotes = ["https://rubygems.org"];
2809 sha256 = "1rgabfhnql6l4fx09mmj5d0vza924iczqf2blmn82l782b6qqi9v";
2810 type = "gem";
2811 };
2812 version = "0.2.1";
2813 };
2814 turbo_dev_assets = {
2815 platforms = [];
2816 source = {
2817 remotes = ["https://rubygems.org"];
2818 sha256 = "08yp7gpishjfj8b7d61hxs677288ycv6yg78a7hfzn631gxczipx";
2819 type = "gem";
2820 };
2821 version = "0.0.2";
2822 };
2823 twitter = {
2824 dependencies = ["addressable" "buftok" "equalizer" "http" "http-form_data" "http_parser.rb" "memoizable" "multipart-post" "naught" "simple_oauth"];
2825 platforms = [];
2826 source = {
2827 remotes = ["https://rubygems.org"];
2828 sha256 = "0fjyz3viabz3xs5d9aad18zgdbhfwm51jsnzigc8kxk77p1x58n5";
2829 type = "gem";
2830 };
2831 version = "6.2.0";
2832 };
2833 twitter-text = {
2834 dependencies = ["unf"];
2835 platforms = [];
2836 source = {
2837 remotes = ["https://rubygems.org"];
2838 sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
2839 type = "gem";
2840 };
2841 version = "1.14.7";
2842 };
2843 typhoeus = {
2844 dependencies = ["ethon"];
2845 platforms = [];
2846 source = {
2847 remotes = ["https://rubygems.org"];
2848 sha256 = "0cni8b1idcp0dk8kybmxydadhfpaj3lbs99w5kjibv8bsmip2zi5";
2849 type = "gem";
2850 };
2851 version = "1.3.1";
2852 };
2853 tzinfo = {
2854 dependencies = ["thread_safe"];
2855 platforms = [];
2856 source = {
2857 remotes = ["https://rubygems.org"];
2858 sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
2859 type = "gem";
2860 };
2861 version = "1.2.5";
2862 };
2863 uglifier = {
2864 dependencies = ["execjs"];
2865 platforms = [];
2866 source = {
2867 remotes = ["https://rubygems.org"];
2868 sha256 = "1g203kly5wp4qlkc7371skyvyin6iinc8i0p5wrpiqgblqxxgcf1";
2869 type = "gem";
2870 };
2871 version = "4.1.19";
2872 };
2873 unf = {
2874 dependencies = ["unf_ext"];
2875 platforms = [];
2876 source = {
2877 remotes = ["https://rubygems.org"];
2878 sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
2879 type = "gem";
2880 };
2881 version = "0.1.4";
2882 };
2883 unf_ext = {
2884 platforms = [];
2885 source = {
2886 remotes = ["https://rubygems.org"];
2887 sha256 = "06p1i6qhy34bpb8q8ms88y6f2kz86azwm098yvcc0nyqk9y729j1";
2888 type = "gem";
2889 };
2890 version = "0.0.7.5";
2891 };
2892 unicode-display_width = {
2893 platforms = [];
2894 source = {
2895 remotes = ["https://rubygems.org"];
2896 sha256 = "0040bsdpcmvp8w31lqi2s9s4p4h031zv52401qidmh25cgyh4a57";
2897 type = "gem";
2898 };
2899 version = "1.4.0";
2900 };
2901 unicorn = {
2902 dependencies = ["kgio" "raindrops"];
2903 platforms = [];
2904 source = {
2905 remotes = ["https://rubygems.org"];
2906 sha256 = "1qfhvzs4i6ja1s43j8p1kfbzm10n7a02ngki30a38y5m46a2qrak";
2907 type = "gem";
2908 };
2909 version = "5.4.1";
2910 };
2911 unicorn-worker-killer = {
2912 dependencies = ["get_process_mem" "unicorn"];
2913 platforms = [];
2914 source = {
2915 remotes = ["https://rubygems.org"];
2916 sha256 = "0rrdxpwdsapx47axjin8ymxb4f685qlpx8a26bql4ay1559c3gva";
2917 type = "gem";
2918 };
2919 version = "0.4.4";
2920 };
2921 uuid = {
2922 dependencies = ["macaddr"];
2923 platforms = [];
2924 source = {
2925 remotes = ["https://rubygems.org"];
2926 sha256 = "1mr405vg4ccnndkyf7pb49gp1fha8i6gj7iwq43nxkak41cwzh5f";
2927 type = "gem";
2928 };
2929 version = "2.3.9";
2930 };
2931 valid = {
2932 platforms = [];
2933 source = {
2934 remotes = ["https://rubygems.org"];
2935 sha256 = "0vxrgik9gxyh5j2w16nz5azjk0cbzmvv883hq9pvxm9anfbbj8d3";
2936 type = "gem";
2937 };
2938 version = "1.2.0";
2939 };
2940 validate_email = {
2941 dependencies = ["activemodel" "mail"];
2942 platforms = [];
2943 source = {
2944 remotes = ["https://rubygems.org"];
2945 sha256 = "1r1fz29l699arka177c9xw7409d1a3ff95bf7a6pmc97slb91zlx";
2946 type = "gem";
2947 };
2948 version = "0.1.6";
2949 };
2950 validate_url = {
2951 dependencies = ["activemodel" "addressable"];
2952 platforms = [];
2953 source = {
2954 remotes = ["https://rubygems.org"];
2955 sha256 = "1df4gch8dizimpbl185vfgw95yb8ffr6zwj6whzbxfil95c3f2qh";
2956 type = "gem";
2957 };
2958 version = "1.0.2";
2959 };
2960 versionist = {
2961 dependencies = ["activesupport" "railties" "yard"];
2962 platforms = [];
2963 source = {
2964 remotes = ["https://rubygems.org"];
2965 sha256 = "1p8wizg6jml7gz1qiqk7d77hy0w5650g812jhgd0zzkwwdmzm38m";
2966 type = "gem";
2967 };
2968 version = "1.7.0";
2969 };
2970 warden = {
2971 dependencies = ["rack"];
2972 platforms = [];
2973 source = {
2974 remotes = ["https://rubygems.org"];
2975 sha256 = "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454";
2976 type = "gem";
2977 };
2978 version = "1.2.8";
2979 };
2980 webfinger = {
2981 dependencies = ["activesupport" "httpclient"];
2982 platforms = [];
2983 source = {
2984 remotes = ["https://rubygems.org"];
2985 sha256 = "0m0jh8k7c0ifh2jhbn7ihqrmn5fi754wflva97zgy70hpdvxyjar";
2986 type = "gem";
2987 };
2988 version = "1.1.0";
2989 };
2990 webmock = {
2991 dependencies = ["addressable" "crack" "hashdiff"];
2992 platforms = [];
2993 source = {
2994 remotes = ["https://rubygems.org"];
2995 sha256 = "03994dxs4xayvkxqp01dd1ivhg4xxx7z35f7cxw7y2mwj3xn24ib";
2996 type = "gem";
2997 };
2998 version = "3.4.2";
2999 };
3000 websocket-driver = {
3001 dependencies = ["websocket-extensions"];
3002 platforms = [];
3003 source = {
3004 remotes = ["https://rubygems.org"];
3005 sha256 = "1943442yllhldh9dbp374x2q39cxa49xrm28nb78b7mfbv3y195l";
3006 type = "gem";
3007 };
3008 version = "0.6.5";
3009 };
3010 websocket-extensions = {
3011 platforms = [];
3012 source = {
3013 remotes = ["https://rubygems.org"];
3014 sha256 = "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270";
3015 type = "gem";
3016 };
3017 version = "0.1.3";
3018 };
3019 will_paginate = {
3020 platforms = [];
3021 source = {
3022 remotes = ["https://rubygems.org"];
3023 sha256 = "0ihf15yaj8883ddhkxq7q60zrg3zfsvqaf5853gybhcg18zq8bn9";
3024 type = "gem";
3025 };
3026 version = "3.1.6";
3027 };
3028 xpath = {
3029 dependencies = ["nokogiri"];
3030 platforms = [];
3031 source = {
3032 remotes = ["https://rubygems.org"];
3033 sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
3034 type = "gem";
3035 };
3036 version = "3.2.0";
3037 };
3038 yard = {
3039 platforms = [];
3040 source = {
3041 remotes = ["https://rubygems.org"];
3042 sha256 = "0lmmr1839qgbb3zxfa7jf5mzy17yjl1yirwlgzdhws4452gqhn67";
3043 type = "gem";
3044 };
3045 version = "0.9.16";
3046 };
3047}
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 @@
1{
2 actioncable = {
3 dependencies = ["actionpack" "nio4r" "websocket-driver"];
4 platforms = [];
5 source = {
6 remotes = ["https://rubygems.org"];
7 sha256 = "07r6hnh05db84yr9419mbhyzp20hr8yy9m50jxc2w91ghm2qnrrf";
8 type = "gem";
9 };
10 version = "5.1.6";
11 };
12 actionmailer = {
13 dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
14 platforms = [];
15 source = {
16 remotes = ["https://rubygems.org"];
17 sha256 = "1s9xcqfx97q4yva2zc4qzb567mwzhry6v3x3zc318aqhcrz31g7c";
18 type = "gem";
19 };
20 version = "5.1.6";
21 };
22 actionpack = {
23 dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
24 platforms = [];
25 source = {
26 remotes = ["https://rubygems.org"];
27 sha256 = "0vz2ms80nqw21c304g3w2vkbs80gadzhi3mcwwym7smxccr37kcd";
28 type = "gem";
29 };
30 version = "5.1.6";
31 };
32 actionview = {
33 dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
34 platforms = [];
35 source = {
36 remotes = ["https://rubygems.org"];
37 sha256 = "1kfxlz9v7b47pdyy1whb4zzhvaj8h4sp1ajhbih2ax1hkldyg081";
38 type = "gem";
39 };
40 version = "5.1.6";
41 };
42 active_model_serializers = {
43 dependencies = ["activemodel" "concurrent-ruby"];
44 platforms = [];
45 source = {
46 remotes = ["https://rubygems.org"];
47 sha256 = "19zr5pp84q4ya7mfrcanakjv86lv4wfmbcbbd2xnd4bkyprw5w7z";
48 type = "gem";
49 };
50 version = "0.9.7";
51 };
52 activejob = {
53 dependencies = ["activesupport" "globalid"];
54 platforms = [];
55 source = {
56 remotes = ["https://rubygems.org"];
57 sha256 = "02lssq8ps98mfg20dyhcpd16f9c0v4zzy7gfbb6ksbs06wrrd4d2";
58 type = "gem";
59 };
60 version = "5.1.6";
61 };
62 activemodel = {
63 dependencies = ["activesupport"];
64 platforms = [];
65 source = {
66 remotes = ["https://rubygems.org"];
67 sha256 = "10f8cpv4sl1w3m1qj8hl6sd2f1n7x91h45qaf57qr894ll22jgby";
68 type = "gem";
69 };
70 version = "5.1.6";
71 };
72 activerecord = {
73 dependencies = ["activemodel" "activesupport" "arel"];
74 platforms = [];
75 source = {
76 remotes = ["https://rubygems.org"];
77 sha256 = "1iqkvxzx5bfp8rmlccww0cj1xr6iaxmn3hhbj1dv5j9c8mnm980x";
78 type = "gem";
79 };
80 version = "5.1.6";
81 };
82 activerecord-import = {
83 dependencies = ["activerecord"];
84 platforms = [];
85 source = {
86 remotes = ["https://rubygems.org"];
87 sha256 = "1bxpbrcwc9k6khizwdikvfbhw9pcvs4sp3h4grpcww5k7bgpliz6";
88 type = "gem";
89 };
90 version = "0.27.0";
91 };
92 activesupport = {
93 dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
94 platforms = [];
95 source = {
96 remotes = ["https://rubygems.org"];
97 sha256 = "08dm0mgmj31ggk7ib66wfagj4bgbr2jfl500bqb22x0szslz5lll";
98 type = "gem";
99 };
100 version = "5.1.6";
101 };
102 acts-as-taggable-on = {
103 dependencies = ["activerecord"];
104 platforms = [];
105 source = {
106 remotes = ["https://rubygems.org"];
107 sha256 = "0hl52pjgfzy3acdwnbxfqy08m808vlv9dmsyp03d5x7x0y499kvl";
108 type = "gem";
109 };
110 version = "6.0.0";
111 };
112 acts_as_api = {
113 dependencies = ["activemodel" "activesupport" "rack"];
114 platforms = [];
115 source = {
116 remotes = ["https://rubygems.org"];
117 sha256 = "06miad13nnfr2gslc203ahsbvj499s9lngxxvfizwp964vglygsc";
118 type = "gem";
119 };
120 version = "1.0.1";
121 };
122 addressable = {
123 dependencies = ["public_suffix"];
124 platforms = [];
125 source = {
126 remotes = ["https://rubygems.org"];
127 sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
128 type = "gem";
129 };
130 version = "2.5.2";
131 };
132 aes_key_wrap = {
133 platforms = [];
134 source = {
135 remotes = ["https://rubygems.org"];
136 sha256 = "0li86k0g812jkzrppb2fvqngvzp09nygywjpn81nx90s01wxqw07";
137 type = "gem";
138 };
139 version = "1.0.1";
140 };
141 arel = {
142 platforms = [];
143 source = {
144 remotes = ["https://rubygems.org"];
145 sha256 = "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl";
146 type = "gem";
147 };
148 version = "8.0.0";
149 };
150 asset_sync = {
151 dependencies = ["activemodel" "fog-core" "mime-types" "unf"];
152 platforms = [];
153 source = {
154 remotes = ["https://rubygems.org"];
155 sha256 = "0mfz51g8rzk5h5fpdhfkycnm7y4dpfhx46wm7fygna7nd4w9ixdx";
156 type = "gem";
157 };
158 version = "2.5.0";
159 };
160 ast = {
161 platforms = [];
162 source = {
163 remotes = ["https://rubygems.org"];
164 sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
165 type = "gem";
166 };
167 version = "2.4.0";
168 };
169 attr_required = {
170 platforms = [];
171 source = {
172 remotes = ["https://rubygems.org"];
173 sha256 = "1g22axmi2rhhy7w8c3x6gppsawxqavbrnxpnmphh22fk7cwi0kh2";
174 type = "gem";
175 };
176 version = "1.0.1";
177 };
178 autoprefixer-rails = {
179 dependencies = ["execjs"];
180 platforms = [];
181 source = {
182 remotes = ["https://rubygems.org"];
183 sha256 = "08irrl1mz6skagr1lygq79l34lc0dghgva0v9q7nng76dpiglgj3";
184 type = "gem";
185 };
186 version = "8.6.5";
187 };
188 backports = {
189 platforms = [];
190 source = {
191 remotes = ["https://rubygems.org"];
192 sha256 = "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g";
193 type = "gem";
194 };
195 version = "3.11.4";
196 };
197 bcrypt = {
198 platforms = [];
199 source = {
200 remotes = ["https://rubygems.org"];
201 sha256 = "0ysblqxkclmnhrd0kmb5mr8p38mbar633gdsb14b7dhkhgawgzfy";
202 type = "gem";
203 };
204 version = "3.1.12";
205 };
206 bindata = {
207 platforms = [];
208 source = {
209 remotes = ["https://rubygems.org"];
210 sha256 = "0kz42nvxnk1j9cj0i8lcnhprcgdqsqska92g6l19ziadydfk2gqy";
211 type = "gem";
212 };
213 version = "2.4.4";
214 };
215 bootstrap-sass = {
216 dependencies = ["autoprefixer-rails" "sass"];
217 platforms = [];
218 source = {
219 remotes = ["https://rubygems.org"];
220 sha256 = "1bc9bf6caddqn1rv15b5x56yczmbjzaxzl9lk5zbwrg1bfph4bx9";
221 type = "gem";
222 };
223 version = "3.3.7";
224 };
225 bootstrap-switch-rails = {
226 groups = ["default"];
227 platforms = [];
228 source = {
229 remotes = ["https://rubygems.org"];
230 sha256 = "1zkwc1hfmihnm0n9lkva5zk0cmqpfcpnrwnmaniyvgx7rac2r14l";
231 type = "gem";
232 };
233 version = "3.3.3";
234 };
235 buftok = {
236 platforms = [];
237 source = {
238 remotes = ["https://rubygems.org"];
239 sha256 = "1rzsy1vy50v55x9z0nivf23y0r9jkmq6i130xa75pq9i8qrn1mxs";
240 type = "gem";
241 };
242 version = "0.2.0";
243 };
244 builder = {
245 platforms = [];
246 source = {
247 remotes = ["https://rubygems.org"];
248 sha256 = "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1";
249 type = "gem";
250 };
251 version = "3.2.3";
252 };
253 byebug = {
254 platforms = [];
255 source = {
256 remotes = ["https://rubygems.org"];
257 sha256 = "10znc1hjv8n686hhpl08f3m2g6h08a4b83nxblqwy2kqamkxcqf8";
258 type = "gem";
259 };
260 version = "10.0.2";
261 };
262 capybara = {
263 dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
264 platforms = [];
265 source = {
266 remotes = ["https://rubygems.org"];
267 sha256 = "10zj8syak12xd1kqywr35bkr2hkdjq18kij54x1ys8c26h6j4d0m";
268 type = "gem";
269 };
270 version = "3.11.1";
271 };
272 carrierwave = {
273 dependencies = ["activemodel" "activesupport" "mime-types"];
274 platforms = [];
275 source = {
276 remotes = ["https://rubygems.org"];
277 sha256 = "1k9kla5ncygm97vn33lsrs7ch5zy4qqhhvc8m3khm986yaqh75qs";
278 type = "gem";
279 };
280 version = "1.2.3";
281 };
282 celluloid = {
283 dependencies = ["celluloid-essentials" "celluloid-extras" "celluloid-fsm" "celluloid-pool" "celluloid-supervision" "timers"];
284 platforms = [];
285 source = {
286 remotes = ["https://rubygems.org"];
287 sha256 = "10i29q7kkdlrhf5rg43xygdfm795a02vp28k2ca3nklmqna57qmg";
288 type = "gem";
289 };
290 version = "0.17.3";
291 };
292 celluloid-essentials = {
293 dependencies = ["timers"];
294 platforms = [];
295 source = {
296 remotes = ["https://rubygems.org"];
297 sha256 = "1l4p3p73wjdj07ww124q0db5k1cyzggbndzmcb12xbsf2dnj121k";
298 type = "gem";
299 };
300 version = "0.20.5";
301 };
302 celluloid-extras = {
303 dependencies = ["timers"];
304 platforms = [];
305 source = {
306 remotes = ["https://rubygems.org"];
307 sha256 = "078agvnsfp78jv343kn5g1cz50147dk0q46blwh5r8lk6whag7ng";
308 type = "gem";
309 };
310 version = "0.20.5";
311 };
312 celluloid-fsm = {
313 dependencies = ["timers"];
314 platforms = [];
315 source = {
316 remotes = ["https://rubygems.org"];
317 sha256 = "1pmpi6h4abpkczp46rd6llk1mldpx19i9hll8mkxp3kxin9slivc";
318 type = "gem";
319 };
320 version = "0.20.5";
321 };
322 celluloid-io = {
323 dependencies = ["celluloid" "nio4r" "timers"];
324 platforms = [];
325 source = {
326 remotes = ["https://rubygems.org"];
327 sha256 = "1frcpja7h9vcxsw7w7ff550x54rfx514fpv2n6kawbk1j4zrm314";
328 type = "gem";
329 };
330 version = "0.17.3";
331 };
332 celluloid-pool = {
333 dependencies = ["timers"];
334 platforms = [];
335 source = {
336 remotes = ["https://rubygems.org"];
337 sha256 = "1bfr54ijl95bnhqlabhf5p4ff9n0y2sslc91f49jjn33n2zm755c";
338 type = "gem";
339 };
340 version = "0.20.5";
341 };
342 celluloid-supervision = {
343 dependencies = ["timers"];
344 platforms = [];
345 source = {
346 remotes = ["https://rubygems.org"];
347 sha256 = "1b41gg1rsmms0m5mshy6h66y5rydl3nv6x9wf050ixfa1s2c8vzw";
348 type = "gem";
349 };
350 version = "0.20.6";
351 };
352 chunky_png = {
353 platforms = [];
354 source = {
355 remotes = ["https://rubygems.org"];
356 sha256 = "05g2xli9wbjylkmblln3bhvjalziwb92q452q8ibjagmb853424w";
357 type = "gem";
358 };
359 version = "1.3.10";
360 };
361 cliver = {
362 platforms = [];
363 source = {
364 remotes = ["https://rubygems.org"];
365 sha256 = "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7";
366 type = "gem";
367 };
368 version = "0.3.2";
369 };
370 coderay = {
371 platforms = [];
372 source = {
373 remotes = ["https://rubygems.org"];
374 sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
375 type = "gem";
376 };
377 version = "1.1.2";
378 };
379 compass = {
380 dependencies = ["chunky_png" "compass-core" "compass-import-once" "rb-fsevent" "rb-inotify" "sass"];
381 platforms = [];
382 source = {
383 remotes = ["https://rubygems.org"];
384 sha256 = "0lfi83w8z75czr0pf0rmj9hda22082h3cmvczl8r1ma9agf88y2c";
385 type = "gem";
386 };
387 version = "1.0.3";
388 };
389 compass-core = {
390 dependencies = ["multi_json" "sass"];
391 platforms = [];
392 source = {
393 remotes = ["https://rubygems.org"];
394 sha256 = "0yaspqwdmzwdcqviclbs3blq7an16pysrfzylz8q1gxmmd6bpj3a";
395 type = "gem";
396 };
397 version = "1.0.3";
398 };
399 compass-import-once = {
400 dependencies = ["sass"];
401 platforms = [];
402 source = {
403 remotes = ["https://rubygems.org"];
404 sha256 = "0bn7gwbfz7jvvdd0qdfqlx67fcb83gyvxqc7dr9fhcnks3z8z5rq";
405 type = "gem";
406 };
407 version = "1.0.5";
408 };
409 compass-rails = {
410 dependencies = ["compass" "sass-rails" "sprockets"];
411 platforms = [];
412 source = {
413 remotes = ["https://rubygems.org"];
414 sha256 = "02ydlbl1qb80myjv5xrpwzhmmj6qd80jf5izvpqhq2bikv84j9wr";
415 type = "gem";
416 };
417 version = "3.1.0";
418 };
419 concurrent-ruby = {
420 platforms = [];
421 source = {
422 remotes = ["https://rubygems.org"];
423 sha256 = "18q9skp5pfq4jwbxzmw8q2rn4cpw6mf4561i2hsjcl1nxdag2jvb";
424 type = "gem";
425 };
426 version = "1.1.3";
427 };
428 configurate = {
429 platforms = [];
430 source = {
431 remotes = ["https://rubygems.org"];
432 sha256 = "1m6cppb4jf7liwc3f5dvgn2v2nhp2jq8ixb9papaqz24f4s8dnd1";
433 type = "gem";
434 };
435 version = "0.3.1";
436 };
437 connection_pool = {
438 platforms = [];
439 source = {
440 remotes = ["https://rubygems.org"];
441 sha256 = "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68";
442 type = "gem";
443 };
444 version = "2.2.2";
445 };
446 coveralls = {
447 dependencies = ["json" "simplecov" "term-ansicolor" "thor" "tins"];
448 platforms = [];
449 source = {
450 remotes = ["https://rubygems.org"];
451 sha256 = "022kc16np6w4mv17hq3m9hhw9l8hjl78ld3fzqqx6337vwvwvwcg";
452 type = "gem";
453 };
454 version = "0.8.22";
455 };
456 crack = {
457 dependencies = ["safe_yaml"];
458 platforms = [];
459 source = {
460 remotes = ["https://rubygems.org"];
461 sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
462 type = "gem";
463 };
464 version = "0.4.3";
465 };
466 crass = {
467 platforms = [];
468 source = {
469 remotes = ["https://rubygems.org"];
470 sha256 = "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi";
471 type = "gem";
472 };
473 version = "1.0.4";
474 };
475 cucumber = {
476 dependencies = ["builder" "cucumber-core" "cucumber-expressions" "cucumber-wire" "diff-lcs" "gherkin" "multi_json" "multi_test"];
477 platforms = [];
478 source = {
479 remotes = ["https://rubygems.org"];
480 sha256 = "1s2brssrpal8hyhcgg974x3xyhpmvpwps5ypd9p8w2lg01l1pp3j";
481 type = "gem";
482 };
483 version = "3.1.2";
484 };
485 cucumber-api-steps = {
486 dependencies = ["cucumber" "jsonpath"];
487 platforms = [];
488 source = {
489 remotes = ["https://rubygems.org"];
490 sha256 = "0fij6bgzshda68jp7kac0hs5n6xsmv49g8ynqhy6s3znc9d4qjbw";
491 type = "gem";
492 };
493 version = "0.14.0";
494 };
495 cucumber-core = {
496 dependencies = ["backports" "cucumber-tag_expressions" "gherkin"];
497 platforms = [];
498 source = {
499 remotes = ["https://rubygems.org"];
500 sha256 = "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c";
501 type = "gem";
502 };
503 version = "3.2.1";
504 };
505 cucumber-expressions = {
506 platforms = [];
507 source = {
508 remotes = ["https://rubygems.org"];
509 sha256 = "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw";
510 type = "gem";
511 };
512 version = "6.0.1";
513 };
514 cucumber-rails = {
515 dependencies = ["capybara" "cucumber" "mime-types" "nokogiri" "railties"];
516 platforms = [];
517 source = {
518 remotes = ["https://rubygems.org"];
519 sha256 = "0pmlza6r2601k1i7v3z8gj4apdcq6qa830bzwkj1pnfjzn4z12n7";
520 type = "gem";
521 };
522 version = "1.6.0";
523 };
524 cucumber-tag_expressions = {
525 platforms = [];
526 source = {
527 remotes = ["https://rubygems.org"];
528 sha256 = "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc";
529 type = "gem";
530 };
531 version = "1.1.1";
532 };
533 cucumber-wire = {
534 platforms = [];
535 source = {
536 remotes = ["https://rubygems.org"];
537 sha256 = "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f";
538 type = "gem";
539 };
540 version = "0.0.1";
541 };
542 database_cleaner = {
543 platforms = [];
544 source = {
545 remotes = ["https://rubygems.org"];
546 sha256 = "05i0nf2aj70m61y3fspypdkc6d1qgibf5kav05a71b5gjz0k7y5x";
547 type = "gem";
548 };
549 version = "1.7.0";
550 };
551 devise = {
552 dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
553 platforms = [];
554 source = {
555 remotes = ["https://rubygems.org"];
556 sha256 = "1vs8nibl568ghm6a7hbw6xgcv8zbm4gykprcxpnzi7bz5d4gvcjx";
557 type = "gem";
558 };
559 version = "4.5.0";
560 };
561 devise_lastseenable = {
562 dependencies = ["devise" "rails"];
563 platforms = [];
564 source = {
565 remotes = ["https://rubygems.org"];
566 sha256 = "1h83h73qjh8fc7lmr089shky8lc3wm4xn653rjdbb0cddflvrx8y";
567 type = "gem";
568 };
569 version = "0.0.6";
570 };
571 diaspora-prosody-config = {
572 platforms = [];
573 source = {
574 remotes = ["https://rubygems.org"];
575 sha256 = "1976ijqjf5jcq1jwr6vi0srjadhbqfa9y3nxyipzcv91pzskl2lp";
576 type = "gem";
577 };
578 version = "0.0.7";
579 };
580 diaspora_federation = {
581 dependencies = ["faraday" "faraday_middleware" "nokogiri" "typhoeus" "valid"];
582 platforms = [];
583 source = {
584 remotes = ["https://rubygems.org"];
585 sha256 = "1xxy6ahlhgyr00qkfmmq0h3nqm6gjkr9i6hsqr0nkb3l6qg0m0yc";
586 type = "gem";
587 };
588 version = "0.2.5";
589 };
590 diaspora_federation-json_schema = {
591 platforms = [];
592 source = {
593 remotes = ["https://rubygems.org"];
594 sha256 = "0hfv4cq5wfdg86xmbp5y0h50b11326ymzks1yr9dvr4wa7di00hr";
595 type = "gem";
596 };
597 version = "0.2.5";
598 };
599 diaspora_federation-rails = {
600 dependencies = ["actionpack" "diaspora_federation"];
601 platforms = [];
602 source = {
603 remotes = ["https://rubygems.org"];
604 sha256 = "1wrni7d9084v3pqd3sq8j532wx5ym6kmd959bw29bzwxc3zidd9h";
605 type = "gem";
606 };
607 version = "0.2.5";
608 };
609 diaspora_federation-test = {
610 dependencies = ["diaspora_federation" "fabrication" "uuid"];
611 platforms = [];
612 source = {
613 remotes = ["https://rubygems.org"];
614 sha256 = "1b09y78pyl9kix8slbybnks2cbq0ac9wml31j2s6qwjixranjsm4";
615 type = "gem";
616 };
617 version = "0.2.5";
618 };
619 diff-lcs = {
620 platforms = [];
621 source = {
622 remotes = ["https://rubygems.org"];
623 sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
624 type = "gem";
625 };
626 version = "1.3";
627 };
628 docile = {
629 platforms = [];
630 source = {
631 remotes = ["https://rubygems.org"];
632 sha256 = "04d2izkna3ahfn6fwq4xrcafa715d3bbqczxm16fq40fqy87xn17";
633 type = "gem";
634 };
635 version = "1.3.1";
636 };
637 domain_name = {
638 dependencies = ["unf"];
639 platforms = [];
640 source = {
641 remotes = ["https://rubygems.org"];
642 sha256 = "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v";
643 type = "gem";
644 };
645 version = "0.5.20180417";
646 };
647 entypo-rails = {
648 dependencies = ["railties"];
649 platforms = [];
650 source = {
651 remotes = ["https://rubygems.org"];
652 sha256 = "124x0jszg6n0k2lcacd627ndlp1fv7cbgnv4scwy5s3czp0qwip6";
653 type = "gem";
654 };
655 version = "3.0.0";
656 };
657 equalizer = {
658 platforms = [];
659 source = {
660 remotes = ["https://rubygems.org"];
661 sha256 = "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4";
662 type = "gem";
663 };
664 version = "0.0.11";
665 };
666 erubi = {
667 platforms = [];
668 source = {
669 remotes = ["https://rubygems.org"];
670 sha256 = "0bws86na9k565raiz0kk61yy5pxxp0fmwyzpibdwjkq0xzx8q6q1";
671 type = "gem";
672 };
673 version = "1.7.1";
674 };
675 eslintrb = {
676 dependencies = ["execjs" "multi_json" "rake"];
677 platforms = [];
678 source = {
679 remotes = ["https://rubygems.org"];
680 sha256 = "0kx9sbs7pnl436zyczylnqqb1858hffy66fwdqfmcn18q8xdqwkx";
681 type = "gem";
682 };
683 version = "2.1.0";
684 };
685 et-orbi = {
686 dependencies = ["tzinfo"];
687 platforms = [];
688 source = {
689 remotes = ["https://rubygems.org"];
690 sha256 = "0wk7i0bmsy46la8gcvbmdns0ni8lmdqas838phj97bdwykxw8m4b";
691 type = "gem";
692 };
693 version = "1.1.6";
694 };
695 ethon = {
696 dependencies = ["ffi"];
697 platforms = [];
698 source = {
699 remotes = ["https://rubygems.org"];
700 sha256 = "0y70szwm2p0b9qfvpqrzjrgm3jz0ig65vlbfr6ppc3z0m1h7kv48";
701 type = "gem";
702 };
703 version = "0.11.0";
704 };
705 excon = {
706 platforms = [];
707 source = {
708 remotes = ["https://rubygems.org"];
709 sha256 = "15l9w0938c19nxmrp09n75qpmm64k12xj69h47yvxzcxcpbgnkb2";
710 type = "gem";
711 };
712 version = "0.62.0";
713 };
714 execjs = {
715 platforms = [];
716 source = {
717 remotes = ["https://rubygems.org"];
718 sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
719 type = "gem";
720 };
721 version = "2.7.0";
722 };
723 eye = {
724 dependencies = ["celluloid" "celluloid-io" "kostya-sigar" "state_machines" "thor"];
725 platforms = [];
726 source = {
727 remotes = ["https://rubygems.org"];
728 sha256 = "0gqrrrisy492m6sczq775dyg9sxkl926r8lkr6z33kfb4cnimfzk";
729 type = "gem";
730 };
731 version = "0.10.0";
732 };
733 fabrication = {
734 platforms = [];
735 source = {
736 remotes = ["https://rubygems.org"];
737 sha256 = "0an28kjand4mjbkmnwd9fmgq3y5vf717zpmiijavar3sxqj52zri";
738 type = "gem";
739 };
740 version = "2.20.1";
741 };
742 factory_girl = {
743 dependencies = ["activesupport"];
744 platforms = [];
745 source = {
746 remotes = ["https://rubygems.org"];
747 sha256 = "0cc60v28r7w1gp34p4amzdnq7cyip6qhffvxywsj3ypilyf8jqla";
748 type = "gem";
749 };
750 version = "4.8.0";
751 };
752 factory_girl_rails = {
753 dependencies = ["factory_girl" "railties"];
754 platforms = [];
755 source = {
756 remotes = ["https://rubygems.org"];
757 sha256 = "0hw8qqp30vm4yf4a36r1r65wk78ihxmas7jg5fyl6fcf705z9fvv";
758 type = "gem";
759 };
760 version = "4.8.0";
761 };
762 faraday = {
763 dependencies = ["multipart-post"];
764 platforms = [];
765 source = {
766 remotes = ["https://rubygems.org"];
767 sha256 = "16hwxc8v0z6gkanckjhx0ffgqmzpc4ywz4dfhxpjlz2mbz8d5m52";
768 type = "gem";
769 };
770 version = "0.15.3";
771 };
772 faraday-cookie_jar = {
773 dependencies = ["faraday" "http-cookie"];
774 platforms = [];
775 source = {
776 remotes = ["https://rubygems.org"];
777 sha256 = "1di4gx6446a6zdkrpj679m5k515i53wvb4yxcsqvy8d8zacxiiv6";
778 type = "gem";
779 };
780 version = "0.0.6";
781 };
782 faraday_middleware = {
783 dependencies = ["faraday"];
784 platforms = [];
785 source = {
786 remotes = ["https://rubygems.org"];
787 sha256 = "1p7icfl28nvl8qqdsngryz1snqic9l8x6bk0dxd7ygn230y0k41d";
788 type = "gem";
789 };
790 version = "0.12.2";
791 };
792 ffi = {
793 platforms = [];
794 source = {
795 remotes = ["https://rubygems.org"];
796 sha256 = "0jpm2dis1j7zvvy3lg7axz9jml316zrn7s0j59vyq3qr127z0m7q";
797 type = "gem";
798 };
799 version = "1.9.25";
800 };
801 fixture_builder = {
802 dependencies = ["activerecord" "activesupport" "hashdiff"];
803 platforms = [];
804 source = {
805 remotes = ["https://rubygems.org"];
806 sha256 = "1qlq0nyfhjvz09hm0jankl9bgs9672k31b3lmsfq8p135x3xs627";
807 type = "gem";
808 };
809 version = "0.5.2.rc3";
810 };
811 fog-aws = {
812 dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"];
813 platforms = [];
814 source = {
815 remotes = ["https://rubygems.org"];
816 sha256 = "1zprxg0spvkkri1jf40zg3rfr5h2gq6009d7l36lifpvhjn658cs";
817 type = "gem";
818 };
819 version = "3.3.0";
820 };
821 fog-core = {
822 dependencies = ["builder" "excon" "formatador" "mime-types"];
823 platforms = [];
824 source = {
825 remotes = ["https://rubygems.org"];
826 sha256 = "1fsama04wlxhv537bm4b7rr4zzn0mvisy87m3qzv6f0mhlrq3zp8";
827 type = "gem";
828 };
829 version = "2.1.2";
830 };
831 fog-json = {
832 dependencies = ["fog-core" "multi_json"];
833 platforms = [];
834 source = {
835 remotes = ["https://rubygems.org"];
836 sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
837 type = "gem";
838 };
839 version = "1.2.0";
840 };
841 fog-xml = {
842 dependencies = ["fog-core" "nokogiri"];
843 platforms = [];
844 source = {
845 remotes = ["https://rubygems.org"];
846 sha256 = "043lwdw2wsi6d55ifk0w3izi5l1d1h0alwyr3fixic7b94kc812n";
847 type = "gem";
848 };
849 version = "0.1.3";
850 };
851 formatador = {
852 platforms = [];
853 source = {
854 remotes = ["https://rubygems.org"];
855 sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
856 type = "gem";
857 };
858 version = "0.2.5";
859 };
860 fugit = {
861 dependencies = ["et-orbi" "raabro"];
862 platforms = [];
863 source = {
864 remotes = ["https://rubygems.org"];
865 sha256 = "1szijawzdii668z5is9xi849399gy786951dx0l5r2z5mbfqvl9i";
866 type = "gem";
867 };
868 version = "1.1.6";
869 };
870 fuubar = {
871 dependencies = ["rspec-core" "ruby-progressbar"];
872 platforms = [];
873 source = {
874 remotes = ["https://rubygems.org"];
875 sha256 = "1sqkr1nh49rlm86l3qyrgsdqavgqii4pnrjn7855z6dfavh3spxr";
876 type = "gem";
877 };
878 version = "2.3.2";
879 };
880 get_process_mem = {
881 platforms = [];
882 source = {
883 remotes = ["https://rubygems.org"];
884 sha256 = "1bvfjdign16r0zwm2rlfrq0sk1licvmlgbnlpnyckniv5r7i080g";
885 type = "gem";
886 };
887 version = "0.2.3";
888 };
889 gherkin = {
890 platforms = [];
891 source = {
892 remotes = ["https://rubygems.org"];
893 sha256 = "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s";
894 type = "gem";
895 };
896 version = "5.1.0";
897 };
898 gitlab = {
899 dependencies = ["httparty" "terminal-table"];
900 platforms = [];
901 source = {
902 remotes = ["https://rubygems.org"];
903 sha256 = "1nncjmk71ivjxmgkpv100yybry5c7ld6xjgi1b5zsfv4g3mz0v34";
904 type = "gem";
905 };
906 version = "4.7.0";
907 };
908 globalid = {
909 dependencies = ["activesupport"];
910 platforms = [];
911 source = {
912 remotes = ["https://rubygems.org"];
913 sha256 = "02smrgdi11kziqi9zhnsy9i6yr2fnxrqlv3lllsvdjki3cd4is38";
914 type = "gem";
915 };
916 version = "0.4.1";
917 };
918 gon = {
919 dependencies = ["actionpack" "multi_json" "request_store"];
920 platforms = [];
921 source = {
922 remotes = ["https://rubygems.org"];
923 sha256 = "07sm7fd94pfscrbs4lyprs0das8s1yn32cw521ch738jaqb388xl";
924 type = "gem";
925 };
926 version = "6.2.1";
927 };
928 guard = {
929 dependencies = ["formatador" "listen" "lumberjack" "nenv" "notiffany" "pry" "shellany" "thor"];
930 platforms = [];
931 source = {
932 remotes = ["https://rubygems.org"];
933 sha256 = "0h84ja6qvii3hx86w9l4vjpbgl4m8ma8fbawwp7s8l791cgkdcmk";
934 type = "gem";
935 };
936 version = "2.15.0";
937 };
938 guard-compat = {
939 platforms = [];
940 source = {
941 remotes = ["https://rubygems.org"];
942 sha256 = "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis";
943 type = "gem";
944 };
945 version = "1.2.1";
946 };
947 guard-rspec = {
948 dependencies = ["guard" "guard-compat" "rspec"];
949 platforms = [];
950 source = {
951 remotes = ["https://rubygems.org"];
952 sha256 = "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4";
953 type = "gem";
954 };
955 version = "4.7.3";
956 };
957 guard-rubocop = {
958 dependencies = ["guard" "rubocop"];
959 platforms = [];
960 source = {
961 remotes = ["https://rubygems.org"];
962 sha256 = "1p97zkzasghl1md13rh57n3s2rr2kqly8w4vfn6vaj89igjpagdp";
963 type = "gem";
964 };
965 version = "1.3.0";
966 };
967 haml = {
968 dependencies = ["temple" "tilt"];
969 platforms = [];
970 source = {
971 remotes = ["https://rubygems.org"];
972 sha256 = "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac";
973 type = "gem";
974 };
975 version = "5.0.4";
976 };
977 haml_lint = {
978 dependencies = ["haml" "rainbow" "rake" "rubocop" "sysexits"];
979 platforms = [];
980 source = {
981 remotes = ["https://rubygems.org"];
982 sha256 = "125aj0j84nx5gqm42hfx5d8486higlra423ahgfpsdjwbp399rwv";
983 type = "gem";
984 };
985 version = "0.28.0";
986 };
987 hamlit = {
988 dependencies = ["temple" "thor" "tilt"];
989 platforms = [];
990 source = {
991 remotes = ["https://rubygems.org"];
992 sha256 = "14fsc208qsf46cflk23vs2fdw435dk65fwv55zhziciwn96ld8sf";
993 type = "gem";
994 };
995 version = "2.9.1";
996 };
997 handlebars_assets = {
998 dependencies = ["execjs" "sprockets" "tilt"];
999 platforms = [];
1000 source = {
1001 remotes = ["https://rubygems.org"];
1002 sha256 = "18pyksz4jb0n28acqxv14ahy8mkc9ldqbbn73gcj28m0l9wjzsca";
1003 type = "gem";
1004 };
1005 version = "0.23.2";
1006 };
1007 hashdiff = {
1008 platforms = [];
1009 source = {
1010 remotes = ["https://rubygems.org"];
1011 sha256 = "0yj5l2rw8i8jc725hbcpc4wks0qlaaimr3dpaqamfjkjkxl0hjp9";
1012 type = "gem";
1013 };
1014 version = "0.3.7";
1015 };
1016 hashie = {
1017 platforms = [];
1018 source = {
1019 remotes = ["https://rubygems.org"];
1020 sha256 = "1hh5lybf8hm7d7xs4xm8hxvm8xqrs2flc8fnwkrclaj746izw6xb";
1021 type = "gem";
1022 };
1023 version = "3.5.7";
1024 };
1025 http = {
1026 dependencies = ["addressable" "http-cookie" "http-form_data" "http_parser.rb"];
1027 platforms = [];
1028 source = {
1029 remotes = ["https://rubygems.org"];
1030 sha256 = "1jlm5prw437wqpfxcigh88lfap3m7g8mnmj5as7qw6dzqnvrxwmc";
1031 type = "gem";
1032 };
1033 version = "3.3.0";
1034 };
1035 http-cookie = {
1036 dependencies = ["domain_name"];
1037 platforms = [];
1038 source = {
1039 remotes = ["https://rubygems.org"];
1040 sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
1041 type = "gem";
1042 };
1043 version = "1.0.3";
1044 };
1045 http-form_data = {
1046 platforms = [];
1047 source = {
1048 remotes = ["https://rubygems.org"];
1049 sha256 = "15lpn604byf7cyxnw949xz4rvpcknqp7a48q73nm630gqxsa76f3";
1050 type = "gem";
1051 };
1052 version = "2.1.1";
1053 };
1054 http_accept_language = {
1055 platforms = [];
1056 source = {
1057 remotes = ["https://rubygems.org"];
1058 sha256 = "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0";
1059 type = "gem";
1060 };
1061 version = "2.1.1";
1062 };
1063 "http_parser.rb" = {
1064 platforms = [];
1065 source = {
1066 remotes = ["https://rubygems.org"];
1067 sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
1068 type = "gem";
1069 };
1070 version = "0.6.0";
1071 };
1072 httparty = {
1073 dependencies = ["mime-types" "multi_xml"];
1074 platforms = [];
1075 source = {
1076 remotes = ["https://rubygems.org"];
1077 sha256 = "1xmm7pxmz3pblkdr76dg7qm5s60kpp3yvh46c2i0bn1dm0zgl730";
1078 type = "gem";
1079 };
1080 version = "0.16.3";
1081 };
1082 httpclient = {
1083 platforms = [];
1084 source = {
1085 remotes = ["https://rubygems.org"];
1086 sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
1087 type = "gem";
1088 };
1089 version = "2.8.3";
1090 };
1091 i18n = {
1092 dependencies = ["concurrent-ruby"];
1093 platforms = [];
1094 source = {
1095 remotes = ["https://rubygems.org"];
1096 sha256 = "1gcp1m1p6dpasycfz2sj82ci9ggz7lsskz9c9q6gvfwxrl8y9dx7";
1097 type = "gem";
1098 };
1099 version = "1.1.1";
1100 };
1101 i18n-inflector = {
1102 dependencies = ["i18n"];
1103 platforms = [];
1104 source = {
1105 remotes = ["https://rubygems.org"];
1106 sha256 = "081jr7z947aqjfmpbfs10w9jxi205jwgk4mgd8jds1b4m4i8mc7g";
1107 type = "gem";
1108 };
1109 version = "2.6.7";
1110 };
1111 i18n-inflector-rails = {
1112 dependencies = ["actionpack" "i18n-inflector" "railties"];
1113 platforms = [];
1114 source = {
1115 remotes = ["https://rubygems.org"];
1116 sha256 = "0c04jm657akp5n14syhcwnn3hnsvx7harvg97768bvf3f9a37hyk";
1117 type = "gem";
1118 };
1119 version = "1.0.7";
1120 };
1121 ipaddress = {
1122 platforms = [];
1123 source = {
1124 remotes = ["https://rubygems.org"];
1125 sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
1126 type = "gem";
1127 };
1128 version = "0.8.3";
1129 };
1130 jaro_winkler = {
1131 platforms = [];
1132 source = {
1133 remotes = ["https://rubygems.org"];
1134 sha256 = "0rr797nqz081bfk30m2apj5h24bg5d1jr1c8p3xwx4hbwsrbclah";
1135 type = "gem";
1136 };
1137 version = "1.5.1";
1138 };
1139 jasmine = {
1140 dependencies = ["jasmine-core" "phantomjs" "rack" "rake"];
1141 platforms = [];
1142 source = {
1143 remotes = ["https://rubygems.org"];
1144 sha256 = "1xfwf163wi5a9i0vlm564cqi6k30h15wnrwd15ph95jfa5516kv1";
1145 type = "gem";
1146 };
1147 version = "3.3.0";
1148 };
1149 jasmine-core = {
1150 platforms = [];
1151 source = {
1152 remotes = ["https://rubygems.org"];
1153 sha256 = "1b12bjfrxvb8mwjwlfyngykd80lz956glcpfz7rhhw7n75b2rdlv";
1154 type = "gem";
1155 };
1156 version = "3.3.0";
1157 };
1158 jasmine-jquery-rails = {
1159 platforms = [];
1160 source = {
1161 remotes = ["https://rubygems.org"];
1162 sha256 = "0cq5zd4ng5dlza45whd6sa7bzd60rlddk9760271mybdqyd96jlv";
1163 type = "gem";
1164 };
1165 version = "2.0.3";
1166 };
1167 jquery-rails = {
1168 dependencies = ["rails-dom-testing" "railties" "thor"];
1169 platforms = [];
1170 source = {
1171 remotes = ["https://rubygems.org"];
1172 sha256 = "17201sb8ddwy4yprizmqabq1kfx3m9c53p0yqngn63m07jjcpnh8";
1173 type = "gem";
1174 };
1175 version = "4.3.3";
1176 };
1177 js-routes = {
1178 dependencies = ["railties" "sprockets-rails"];
1179 platforms = [];
1180 source = {
1181 remotes = ["https://rubygems.org"];
1182 sha256 = "14yx3jrd4sgcwgj8yrrqdwl691mci1hcjqyyvp0v15jbzis1bclm";
1183 type = "gem";
1184 };
1185 version = "1.4.4";
1186 };
1187 js_image_paths = {
1188 dependencies = ["rails" "sprockets"];
1189 platforms = [];
1190 source = {
1191 remotes = ["https://rubygems.org"];
1192 sha256 = "1d4kq8895i61a338ddk5f2k16l5lvmnkby9cdjwnmm2jddw4q7nf";
1193 type = "gem";
1194 };
1195 version = "0.1.1";
1196 };
1197 json = {
1198 platforms = [];
1199 source = {
1200 remotes = ["https://rubygems.org"];
1201 sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
1202 type = "gem";
1203 };
1204 version = "2.1.0";
1205 };
1206 json-jwt = {
1207 dependencies = ["activesupport" "aes_key_wrap" "bindata"];
1208 platforms = [];
1209 source = {
1210 remotes = ["https://rubygems.org"];
1211 sha256 = "065k7vffdki73f4nz89lxi6wxmcw5dlf593831pgvlbralll6x3r";
1212 type = "gem";
1213 };
1214 version = "1.9.4";
1215 };
1216 json-schema = {
1217 dependencies = ["addressable"];
1218 platforms = [];
1219 source = {
1220 remotes = ["https://rubygems.org"];
1221 sha256 = "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5";
1222 type = "gem";
1223 };
1224 version = "2.8.1";
1225 };
1226 json-schema-rspec = {
1227 dependencies = ["json-schema" "rspec"];
1228 platforms = [];
1229 source = {
1230 remotes = ["https://rubygems.org"];
1231 sha256 = "1ip30yjzyigqqp9jwkrw9x9vrfpnmwi160zmk2vkrwlv9pby0wr9";
1232 type = "gem";
1233 };
1234 version = "0.0.4";
1235 };
1236 jsonpath = {
1237 dependencies = ["multi_json" "to_regexp"];
1238 platforms = [];
1239 source = {
1240 remotes = ["https://rubygems.org"];
1241 sha256 = "06i41lwpj0dwvbxcpqrad5pjn2gmcv0srv0zw0ap7irwc21ifd7d";
1242 type = "gem";
1243 };
1244 version = "0.9.6";
1245 };
1246 jwt = {
1247 platforms = [];
1248 source = {
1249 remotes = ["https://rubygems.org"];
1250 sha256 = "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky";
1251 type = "gem";
1252 };
1253 version = "2.1.0";
1254 };
1255 kgio = {
1256 platforms = [];
1257 source = {
1258 remotes = ["https://rubygems.org"];
1259 sha256 = "1528pyj1szzzp3pgj05fzjd36qjrxm9yj2x5radc9p1z7vl67y50";
1260 type = "gem";
1261 };
1262 version = "2.11.2";
1263 };
1264 kostya-sigar = {
1265 platforms = [];
1266 source = {
1267 remotes = ["https://rubygems.org"];
1268 sha256 = "0z0pcykhjyrb7kq76jfcyxc1qq23gj5zmgy3miy87v85ydrxiqwb";
1269 type = "gem";
1270 };
1271 version = "2.0.4";
1272 };
1273 leaflet-rails = {
1274 dependencies = ["rails"];
1275 platforms = [];
1276 source = {
1277 remotes = ["https://rubygems.org"];
1278 sha256 = "0dy7vhsjj1fhbbqm2s7pw57vgysd31qqi4y0hm91325hmvq75grb";
1279 type = "gem";
1280 };
1281 version = "1.3.1";
1282 };
1283 listen = {
1284 dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
1285 platforms = [];
1286 source = {
1287 remotes = ["https://rubygems.org"];
1288 sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
1289 type = "gem";
1290 };
1291 version = "3.1.5";
1292 };
1293 little-plugger = {
1294 platforms = [];
1295 source = {
1296 remotes = ["https://rubygems.org"];
1297 sha256 = "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym";
1298 type = "gem";
1299 };
1300 version = "1.1.4";
1301 };
1302 logging = {
1303 dependencies = ["little-plugger" "multi_json"];
1304 platforms = [];
1305 source = {
1306 remotes = ["https://rubygems.org"];
1307 sha256 = "06j6iaj89h9jhkx1x3hlswqrfnqds8br05xb1qra69dpvbdmjcwn";
1308 type = "gem";
1309 };
1310 version = "2.2.2";
1311 };
1312 logging-rails = {
1313 dependencies = ["logging"];
1314 platforms = [];
1315 source = {
1316 remotes = ["https://rubygems.org"];
1317 sha256 = "022cnj9v177282kadd9ygzjpvlvbq9k5z0xhdbbmgypi05z4i239";
1318 type = "gem";
1319 };
1320 version = "0.6.0";
1321 };
1322 loofah = {
1323 dependencies = ["crass" "nokogiri"];
1324 platforms = [];
1325 source = {
1326 remotes = ["https://rubygems.org"];
1327 sha256 = "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg";
1328 type = "gem";
1329 };
1330 version = "2.2.3";
1331 };
1332 lumberjack = {
1333 platforms = [];
1334 source = {
1335 remotes = ["https://rubygems.org"];
1336 sha256 = "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n";
1337 type = "gem";
1338 };
1339 version = "1.0.13";
1340 };
1341 macaddr = {
1342 dependencies = ["systemu"];
1343 platforms = [];
1344 source = {
1345 remotes = ["https://rubygems.org"];
1346 sha256 = "1clii8mvhmh5lmnm95ljnjygyiyhdpja85c5vy487rhxn52scn0b";
1347 type = "gem";
1348 };
1349 version = "1.7.1";
1350 };
1351 mail = {
1352 dependencies = ["mini_mime"];
1353 platforms = [];
1354 source = {
1355 remotes = ["https://rubygems.org"];
1356 sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
1357 type = "gem";
1358 };
1359 version = "2.7.1";
1360 };
1361 markdown-it-html5-embed = {
1362 platforms = [];
1363 source = {
1364 remotes = ["https://rubygems.org"];
1365 sha256 = "10n2z6j0whc6makxvcf2jhpwb8xrj4s6vyywijsaaxs0cn490a5c";
1366 type = "gem";
1367 };
1368 version = "1.0.0";
1369 };
1370 markerb = {
1371 platforms = [];
1372 source = {
1373 remotes = ["https://rubygems.org"];
1374 sha256 = "08sm3kafc3086l0a9is2cysk7j2k71mxy6ba295pwwzyvy734y76";
1375 type = "gem";
1376 };
1377 version = "1.1.0";
1378 };
1379 memoizable = {
1380 dependencies = ["thread_safe"];
1381 platforms = [];
1382 source = {
1383 remotes = ["https://rubygems.org"];
1384 sha256 = "0v42bvghsvfpzybfazl14qhkrjvx0xlmxz0wwqc960ga1wld5x5c";
1385 type = "gem";
1386 };
1387 version = "0.4.2";
1388 };
1389 method_source = {
1390 platforms = [];
1391 source = {
1392 remotes = ["https://rubygems.org"];
1393 sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
1394 type = "gem";
1395 };
1396 version = "0.9.2";
1397 };
1398 mime-types = {
1399 dependencies = ["mime-types-data"];
1400 platforms = [];
1401 source = {
1402 remotes = ["https://rubygems.org"];
1403 sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
1404 type = "gem";
1405 };
1406 version = "3.2.2";
1407 };
1408 mime-types-data = {
1409 platforms = [];
1410 source = {
1411 remotes = ["https://rubygems.org"];
1412 sha256 = "07wvp0aw2gjm4njibb70as6rh5hi1zzri5vky1q6jx95h8l56idc";
1413 type = "gem";
1414 };
1415 version = "3.2018.0812";
1416 };
1417 mini_magick = {
1418 platforms = [];
1419 source = {
1420 remotes = ["https://rubygems.org"];
1421 sha256 = "0sisx59mr5kydmxmx5vr8spmrxhrjkfqv35zhsqdlyzmp1z5px9p";
1422 type = "gem";
1423 };
1424 version = "4.9.2";
1425 };
1426 mini_mime = {
1427 platforms = [];
1428 source = {
1429 remotes = ["https://rubygems.org"];
1430 sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
1431 type = "gem";
1432 };
1433 version = "1.0.1";
1434 };
1435 mini_portile2 = {
1436 platforms = [];
1437 source = {
1438 remotes = ["https://rubygems.org"];
1439 sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11";
1440 type = "gem";
1441 };
1442 version = "2.3.0";
1443 };
1444 minitest = {
1445 platforms = [];
1446 source = {
1447 remotes = ["https://rubygems.org"];
1448 sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
1449 type = "gem";
1450 };
1451 version = "5.11.3";
1452 };
1453 mobile-fu = {
1454 dependencies = ["rack-mobile-detect" "rails"];
1455 platforms = [];
1456 source = {
1457 remotes = ["https://rubygems.org"];
1458 sha256 = "0lxfcsd7dwwcpa1j2jbl382anmv6kksf5q1wqj14gc6jxxjq9s4i";
1459 type = "gem";
1460 };
1461 version = "1.4.0";
1462 };
1463 multi_json = {
1464 platforms = [];
1465 source = {
1466 remotes = ["https://rubygems.org"];
1467 sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
1468 type = "gem";
1469 };
1470 version = "1.13.1";
1471 };
1472 multi_test = {
1473 platforms = [];
1474 source = {
1475 remotes = ["https://rubygems.org"];
1476 sha256 = "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd";
1477 type = "gem";
1478 };
1479 version = "0.1.2";
1480 };
1481 multi_xml = {
1482 platforms = [];
1483 source = {
1484 remotes = ["https://rubygems.org"];
1485 sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj";
1486 type = "gem";
1487 };
1488 version = "0.6.0";
1489 };
1490 multipart-post = {
1491 platforms = [];
1492 source = {
1493 remotes = ["https://rubygems.org"];
1494 sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
1495 type = "gem";
1496 };
1497 version = "2.0.0";
1498 };
1499 mysql2 = {
1500 groups = ["mysql"];
1501 platforms = [];
1502 source = {
1503 remotes = ["https://rubygems.org"];
1504 sha256 = "1a2kdjgzwh1p2rkcmxaawy6ibi32b04wbdd5d4wr8i342pq76di4";
1505 type = "gem";
1506 };
1507 version = "0.5.2";
1508 };
1509 naught = {
1510 platforms = [];
1511 source = {
1512 remotes = ["https://rubygems.org"];
1513 sha256 = "1wwjx35zgbc0nplp8a866iafk4zsrbhwwz4pav5gydr2wm26nksg";
1514 type = "gem";
1515 };
1516 version = "1.1.0";
1517 };
1518 nenv = {
1519 platforms = [];
1520 source = {
1521 remotes = ["https://rubygems.org"];
1522 sha256 = "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr";
1523 type = "gem";
1524 };
1525 version = "0.3.0";
1526 };
1527 net-ldap = {
1528 platforms = [];
1529 source = {
1530 remotes = ["https://rubygems.org"];
1531 sha256 = "016igqz81a8zcwqzp5bbhryqmb2skmyf57ij3nb5z8sxwhw22jgh";
1532 type = "gem";
1533 };
1534 version = "0.16.1";
1535 };
1536 nio4r = {
1537 platforms = [];
1538 source = {
1539 remotes = ["https://rubygems.org"];
1540 sha256 = "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr";
1541 type = "gem";
1542 };
1543 version = "2.3.1";
1544 };
1545 nokogiri = {
1546 dependencies = ["mini_portile2"];
1547 platforms = [];
1548 source = {
1549 remotes = ["https://rubygems.org"];
1550 sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz";
1551 type = "gem";
1552 };
1553 version = "1.8.5";
1554 };
1555 notiffany = {
1556 dependencies = ["nenv" "shellany"];
1557 platforms = [];
1558 source = {
1559 remotes = ["https://rubygems.org"];
1560 sha256 = "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx";
1561 type = "gem";
1562 };
1563 version = "0.1.1";
1564 };
1565 oauth = {
1566 platforms = [];
1567 source = {
1568 remotes = ["https://rubygems.org"];
1569 sha256 = "1zszdg8q1b135z7l7crjj234k4j0m347hywp5kj6zsq7q78pw09y";
1570 type = "gem";
1571 };
1572 version = "0.5.4";
1573 };
1574 oauth2 = {
1575 dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"];
1576 platforms = [];
1577 source = {
1578 remotes = ["https://rubygems.org"];
1579 sha256 = "0av6nlb5y2sm6m8fx669ywrqa9858yqaqfqzny75nqp3anag89qh";
1580 type = "gem";
1581 };
1582 version = "1.4.1";
1583 };
1584 octokit = {
1585 dependencies = ["sawyer"];
1586 platforms = [];
1587 source = {
1588 remotes = ["https://rubygems.org"];
1589 sha256 = "1yh0yzzqg575ix3y2l2261b9ag82gv2v4f1wczdhcmfbxcz755x6";
1590 type = "gem";
1591 };
1592 version = "4.13.0";
1593 };
1594 omniauth = {
1595 dependencies = ["hashie" "rack"];
1596 platforms = [];
1597 source = {
1598 remotes = ["https://rubygems.org"];
1599 sha256 = "1msqr4qq7mfdvl3rg89529isrv595hvjpj2gi0say4b8nwqfggmg";
1600 type = "gem";
1601 };
1602 version = "1.8.1";
1603 };
1604 omniauth-oauth = {
1605 dependencies = ["oauth" "omniauth"];
1606 platforms = [];
1607 source = {
1608 remotes = ["https://rubygems.org"];
1609 sha256 = "1n5vk4by7hkyc09d9blrw2argry5awpw4gbw1l4n2s9b3j4qz037";
1610 type = "gem";
1611 };
1612 version = "1.1.0";
1613 };
1614 omniauth-oauth2 = {
1615 dependencies = ["oauth2" "omniauth"];
1616 platforms = [];
1617 source = {
1618 remotes = ["https://rubygems.org"];
1619 sha256 = "0kscjf1y0lnggsl4z3w5bwllqshqjlsl5kmcya5haydajdnzvdjr";
1620 type = "gem";
1621 };
1622 version = "1.5.0";
1623 };
1624 omniauth-tumblr = {
1625 dependencies = ["multi_json" "omniauth-oauth"];
1626 platforms = [];
1627 source = {
1628 remotes = ["https://rubygems.org"];
1629 sha256 = "10ncmfym4l6k6aqp402g7mqxahbggcj5xkpsjxgngs746s82y97w";
1630 type = "gem";
1631 };
1632 version = "1.2";
1633 };
1634 omniauth-twitter = {
1635 dependencies = ["omniauth-oauth" "rack"];
1636 platforms = [];
1637 source = {
1638 remotes = ["https://rubygems.org"];
1639 sha256 = "0r5j65hkpgzhvvbs90id3nfsjgsad6ymzggbm7zlaxvnrmvnrk65";
1640 type = "gem";
1641 };
1642 version = "1.4.0";
1643 };
1644 omniauth-wordpress = {
1645 dependencies = ["omniauth-oauth2"];
1646 platforms = [];
1647 source = {
1648 remotes = ["https://rubygems.org"];
1649 sha256 = "008zx4zwrbzyvlgv6hy68k1d05zskiwvcgwvxxbxhbl0mvlmh303";
1650 type = "gem";
1651 };
1652 version = "0.2.2";
1653 };
1654 open_graph_reader = {
1655 dependencies = ["faraday" "nokogiri"];
1656 platforms = [];
1657 source = {
1658 remotes = ["https://rubygems.org"];
1659 sha256 = "0af4yldyb0d8zglw73s13pyn0g90gs4m5zf7bwy8r4kym9zbvc21";
1660 type = "gem";
1661 };
1662 version = "0.6.2";
1663 };
1664 openid_connect = {
1665 dependencies = ["activemodel" "attr_required" "json-jwt" "rack-oauth2" "swd" "tzinfo" "validate_email" "validate_url" "webfinger"];
1666 platforms = [];
1667 source = {
1668 remotes = ["https://rubygems.org"];
1669 sha256 = "1r13bv18nyvw0g1nw3fzffvv2si99zj24w0k5zgawf4q6nn5f7vd";
1670 type = "gem";
1671 };
1672 version = "1.1.6";
1673 };
1674 orm_adapter = {
1675 platforms = [];
1676 source = {
1677 remotes = ["https://rubygems.org"];
1678 sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
1679 type = "gem";
1680 };
1681 version = "0.5.0";
1682 };
1683 parallel = {
1684 platforms = [];
1685 source = {
1686 remotes = ["https://rubygems.org"];
1687 sha256 = "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67";
1688 type = "gem";
1689 };
1690 version = "1.12.1";
1691 };
1692 parser = {
1693 dependencies = ["ast"];
1694 platforms = [];
1695 source = {
1696 remotes = ["https://rubygems.org"];
1697 sha256 = "1zjk0w1kjj3xk8ymy1430aa4gg0k8ckphfj88br6il4pm83f0n1f";
1698 type = "gem";
1699 };
1700 version = "2.5.3.0";
1701 };
1702 pg = {
1703 platforms = [];
1704 source = {
1705 remotes = ["https://rubygems.org"];
1706 sha256 = "1pnjw3rspdfjssxyf42jnbsdlgri8ylysimp0s28wxb93k6ff2qb";
1707 type = "gem";
1708 };
1709 version = "1.1.3";
1710 };
1711 phantomjs = {
1712 platforms = [];
1713 source = {
1714 remotes = ["https://rubygems.org"];
1715 sha256 = "0y8pbbyq9dirxb7igkb2s5limz2895qmr41c09fjhx6k6fxcz4mk";
1716 type = "gem";
1717 };
1718 version = "2.1.1.0";
1719 };
1720 poltergeist = {
1721 dependencies = ["capybara" "cliver" "websocket-driver"];
1722 platforms = [];
1723 source = {
1724 remotes = ["https://rubygems.org"];
1725 sha256 = "0il80p97psmhs6scl0grq031gv7kws4ylvvd6zyr8xv91qadga95";
1726 type = "gem";
1727 };
1728 version = "1.18.1";
1729 };
1730 powerpack = {
1731 platforms = [];
1732 source = {
1733 remotes = ["https://rubygems.org"];
1734 sha256 = "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv";
1735 type = "gem";
1736 };
1737 version = "0.1.2";
1738 };
1739 pronto = {
1740 dependencies = ["gitlab" "httparty" "octokit" "rainbow" "rugged" "thor"];
1741 platforms = [];
1742 source = {
1743 remotes = ["https://rubygems.org"];
1744 sha256 = "13xbg1pm3kz5zbzxad5qgqnkzkp3ddajj7wxx16aqbfr7rqggvhz";
1745 type = "gem";
1746 };
1747 version = "0.9.5";
1748 };
1749 pronto-eslint = {
1750 dependencies = ["eslintrb" "pronto"];
1751 platforms = [];
1752 source = {
1753 remotes = ["https://rubygems.org"];
1754 sha256 = "1cxyx6mlcdgv4ykliaizkx9cps68xf7qvy8lzxmv7pcqzkxaq7xc";
1755 type = "gem";
1756 };
1757 version = "0.9.1";
1758 };
1759 pronto-haml = {
1760 dependencies = ["haml_lint" "pronto"];
1761 platforms = [];
1762 source = {
1763 remotes = ["https://rubygems.org"];
1764 sha256 = "116iln1whwiqy55f86q33lnnic0awnqm415xvxwnhwlagcbwmnkg";
1765 type = "gem";
1766 };
1767 version = "0.9.0";
1768 };
1769 pronto-rubocop = {
1770 dependencies = ["pronto" "rubocop"];
1771 platforms = [];
1772 source = {
1773 remotes = ["https://rubygems.org"];
1774 sha256 = "0bcm34qlpp02wf69why5lpi5p53h5r4fq36f4b1fwi621fwzlgsy";
1775 type = "gem";
1776 };
1777 version = "0.9.1";
1778 };
1779 pronto-scss = {
1780 dependencies = ["pronto" "scss_lint"];
1781 platforms = [];
1782 source = {
1783 remotes = ["https://rubygems.org"];
1784 sha256 = "0kgaqd6l2w3brdsp5231fpfr6fwajciz2hdr925l1zhh6ni1y2za";
1785 type = "gem";
1786 };
1787 version = "0.9.1";
1788 };
1789 pry = {
1790 dependencies = ["coderay" "method_source"];
1791 platforms = [];
1792 source = {
1793 remotes = ["https://rubygems.org"];
1794 sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
1795 type = "gem";
1796 };
1797 version = "0.12.2";
1798 };
1799 pry-byebug = {
1800 dependencies = ["byebug" "pry"];
1801 platforms = [];
1802 source = {
1803 remotes = ["https://rubygems.org"];
1804 sha256 = "0y2758593i2ij0nhmv0j1pbdfx2cgi52ns6wkij0frgnk2lf650g";
1805 type = "gem";
1806 };
1807 version = "3.6.0";
1808 };
1809 public_suffix = {
1810 platforms = [];
1811 source = {
1812 remotes = ["https://rubygems.org"];
1813 sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
1814 type = "gem";
1815 };
1816 version = "3.0.3";
1817 };
1818 raabro = {
1819 platforms = [];
1820 source = {
1821 remotes = ["https://rubygems.org"];
1822 sha256 = "0xzdmbn48753f6k0ckirp8ja5p0xn1a92wbwxfyggyhj0hza9ylq";
1823 type = "gem";
1824 };
1825 version = "1.1.6";
1826 };
1827 rack = {
1828 platforms = [];
1829 source = {
1830 remotes = ["https://rubygems.org"];
1831 sha256 = "1pcgv8dv4vkaczzlix8q3j68capwhk420cddzijwqgi2qb4lm1zm";
1832 type = "gem";
1833 };
1834 version = "2.0.6";
1835 };
1836 rack-cors = {
1837 platforms = [];
1838 source = {
1839 remotes = ["https://rubygems.org"];
1840 sha256 = "1j27vy1bmhbqcyzhxg8d07qassmax769xjalfwcwz6qfiq8cf013";
1841 type = "gem";
1842 };
1843 version = "1.0.2";
1844 };
1845 rack-google-analytics = {
1846 dependencies = ["actionpack" "activesupport"];
1847 platforms = [];
1848 source = {
1849 remotes = ["https://rubygems.org"];
1850 sha256 = "09pv0z5dhjjrlhi9qj5qy48hi66f7iix337qrapg7mvwwz6czcvj";
1851 type = "gem";
1852 };
1853 version = "1.2.0";
1854 };
1855 rack-mobile-detect = {
1856 dependencies = ["rack"];
1857 platforms = [];
1858 source = {
1859 remotes = ["https://rubygems.org"];
1860 sha256 = "0bagli6ldhkpd1yym775sxy7w5n4jds6gbcjm3gmcl37vggvm8a5";
1861 type = "gem";
1862 };
1863 version = "0.4.0";
1864 };
1865 rack-oauth2 = {
1866 dependencies = ["activesupport" "attr_required" "httpclient" "json-jwt" "rack"];
1867 platforms = [];
1868 source = {
1869 remotes = ["https://rubygems.org"];
1870 sha256 = "0kmxj9hbjhhcs3yyb433s82hkpmzb536m0mwfadjiaisganx1cii";
1871 type = "gem";
1872 };
1873 version = "1.9.3";
1874 };
1875 rack-piwik = {
1876 platforms = [];
1877 source = {
1878 remotes = ["https://rubygems.org"];
1879 sha256 = "0raxrckapqh693lpid0cnx1j1v2i3mz5cyssg7grgrilgrn9318z";
1880 type = "gem";
1881 };
1882 version = "0.3.0";
1883 };
1884 rack-protection = {
1885 dependencies = ["rack"];
1886 platforms = [];
1887 source = {
1888 remotes = ["https://rubygems.org"];
1889 sha256 = "0ylx74ravz7nvnyygq0nk3v86qdzrmqxpwpayhppyy50l72rcajq";
1890 type = "gem";
1891 };
1892 version = "2.0.4";
1893 };
1894 rack-rewrite = {
1895 platforms = [];
1896 source = {
1897 remotes = ["https://rubygems.org"];
1898 sha256 = "0milw71dv96wnc6i48vbzypws51dgf415kkp8c4air0mkdhpj838";
1899 type = "gem";
1900 };
1901 version = "1.5.1";
1902 };
1903 rack-ssl = {
1904 dependencies = ["rack"];
1905 platforms = [];
1906 source = {
1907 remotes = ["https://rubygems.org"];
1908 sha256 = "0c21xqkjyl10fngq6dy8082vmn2png8cwkiyzv83ymixq5cx7ygp";
1909 type = "gem";
1910 };
1911 version = "1.4.1";
1912 };
1913 rack-test = {
1914 dependencies = ["rack"];
1915 platforms = [];
1916 source = {
1917 remotes = ["https://rubygems.org"];
1918 sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
1919 type = "gem";
1920 };
1921 version = "1.1.0";
1922 };
1923 rails = {
1924 dependencies = ["actioncable" "actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activesupport" "railties" "sprockets-rails"];
1925 platforms = [];
1926 source = {
1927 remotes = ["https://rubygems.org"];
1928 sha256 = "0lb07cbwgm371zyn9i6fyj9q8rmv89lacmyzrfvzxqqx2n3ilc5q";
1929 type = "gem";
1930 };
1931 version = "5.1.6";
1932 };
1933 rails-assets-autosize = {
1934 platforms = [];
1935 source = {
1936 remotes = ["https://rails-assets.org"];
1937 sha256 = "0hr72mfprb9678lf7dj9lh801lm7p98nzkrnrz764sy9lmbpzcib";
1938 type = "gem";
1939 };
1940 version = "4.0.2";
1941 };
1942 rails-assets-backbone = {
1943 dependencies = ["rails-assets-underscore"];
1944 platforms = [];
1945 source = {
1946 remotes = ["https://rails-assets.org"];
1947 sha256 = "0zjgwhgfmg1jyyds7zfjp6g4bz8vw56qvhlrpj943wcqpdxm93id";
1948 type = "gem";
1949 };
1950 version = "1.3.3";
1951 };
1952 rails-assets-blueimp-gallery = {
1953 platforms = [];
1954 source = {
1955 remotes = ["https://rails-assets.org"];
1956 sha256 = "18b7xvvkdnd39xlbkyw46i86w3wzj349s8iv5wdiypa5qdcql8mq";
1957 type = "gem";
1958 };
1959 version = "2.33.0";
1960 };
1961 rails-assets-bootstrap = {
1962 dependencies = ["rails-assets-jquery"];
1963 platforms = [];
1964 source = {
1965 remotes = ["https://rails-assets.org"];
1966 sha256 = "0x4i11132qcmghmqb061iq47yksrr7i0la5hzzdm38dxybh87x5v";
1967 type = "gem";
1968 };
1969 version = "3.3.7";
1970 };
1971 rails-assets-bootstrap-markdown = {
1972 dependencies = ["rails-assets-bootstrap"];
1973 platforms = [];
1974 source = {
1975 remotes = ["https://rails-assets.org"];
1976 sha256 = "1nxirs9wx5jxrjmxjwvsqlf2rsypjn3ajg7fs28c4ib7wwpabwj3";
1977 type = "gem";
1978 };
1979 version = "2.10.0";
1980 };
1981 rails-assets-corejs-typeahead = {
1982 dependencies = ["rails-assets-jquery"];
1983 platforms = [];
1984 source = {
1985 remotes = ["https://rails-assets.org"];
1986 sha256 = "1p5i6afd156rakrin99c2ryaz3zykx21ir6y10l34jnw03rikcfg";
1987 type = "gem";
1988 };
1989 version = "1.2.1";
1990 };
1991 rails-assets-diaspora_jsxc = {
1992 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"];
1993 platforms = [];
1994 source = {
1995 remotes = ["https://rails-assets.org"];
1996 sha256 = "07vqdj0l8fsj4fd2sschba2jgfbimyfad56009ldzlcvb6ml5nhi";
1997 type = "gem";
1998 };
1999 version = "0.1.5.develop.7";
2000 };
2001 rails-assets-emojione = {
2002 platforms = [];
2003 source = {
2004 remotes = ["https://rails-assets.org"];
2005 sha256 = "1j29vbsf6v9ikiqlmnfgzxys4xsa1glvmfky8id5xfyymnjx2c52";
2006 type = "gem";
2007 };
2008 version = "2.0.1";
2009 };
2010 "rails-assets-favico.js" = {
2011 platforms = [];
2012 source = {
2013 remotes = ["https://rails-assets.org"];
2014 sha256 = "19yndhljmqlvarf49h5v71zq0p0ngvspjr2v0m6lac0q9ni7r5bv";
2015 type = "gem";
2016 };
2017 version = "0.3.10";
2018 };
2019 rails-assets-fine-uploader = {
2020 platforms = [];
2021 source = {
2022 remotes = ["https://rails-assets.org"];
2023 sha256 = "1vxj78x2vvlchpapxpaawysc9wn8alzdd3gxhwfwy11xv8ka9mdv";
2024 type = "gem";
2025 };
2026 version = "5.13.0";
2027 };
2028 rails-assets-highlightjs = {
2029 platforms = [];
2030 source = {
2031 remotes = ["https://rails-assets.org"];
2032 sha256 = "0spmb0gkfs13fmljjv1n53r53q69fhb6r573ndbxnhgb3izqgnqp";
2033 type = "gem";
2034 };
2035 version = "9.12.0";
2036 };
2037 rails-assets-jasmine = {
2038 platforms = [];
2039 source = {
2040 remotes = ["https://rails-assets.org"];
2041 sha256 = "1n6yixrl9cgq5kckay75b44p878s1kqi69mhgyw99w8dsq8i2vy5";
2042 type = "gem";
2043 };
2044 version = "3.3.0";
2045 };
2046 rails-assets-jasmine-ajax = {
2047 dependencies = ["rails-assets-jasmine"];
2048 platforms = [];
2049 source = {
2050 remotes = ["https://rails-assets.org"];
2051 sha256 = "0l8z0p75x1yzk1l1ryfvdlvq8yq4w2xngp4icz478axd5jcqx6kg";
2052 type = "gem";
2053 };
2054 version = "3.4.0";
2055 };
2056 rails-assets-jquery = {
2057 platforms = [];
2058 source = {
2059 remotes = ["https://rails-assets.org"];
2060 sha256 = "1wcaappk12w300733lrqb571cir9nw35d9q6d2i52wwdvhv2fx2y";
2061 type = "gem";
2062 };
2063 version = "3.3.1";
2064 };
2065 rails-assets-jquery-colorbox = {
2066 dependencies = ["rails-assets-jquery"];
2067 platforms = [];
2068 source = {
2069 remotes = ["https://rails-assets.org"];
2070 sha256 = "19ws3r1zfviwnfr9s0jh6iqss50iwqkf4a78zhrk0p3bb4lvmmsp";
2071 type = "gem";
2072 };
2073 version = "1.6.4";
2074 };
2075 rails-assets-jquery-fullscreen-plugin = {
2076 platforms = [];
2077 source = {
2078 remotes = ["https://rails-assets.org"];
2079 sha256 = "0ldvq4s15lap9p6w7d1yw6dajn2gh6p75dbkp79p0d8ylzapsd58";
2080 type = "gem";
2081 };
2082 version = "0.5.0";
2083 };
2084 rails-assets-jquery-placeholder = {
2085 dependencies = ["rails-assets-jquery"];
2086 platforms = [];
2087 source = {
2088 remotes = ["https://rails-assets.org"];
2089 sha256 = "0h17gjazc27pj4cm2ig232ww4d4ppq9bcginwzjss95pl63richi";
2090 type = "gem";
2091 };
2092 version = "2.3.1";
2093 };
2094 rails-assets-jquery-textchange = {
2095 dependencies = ["rails-assets-jquery"];
2096 platforms = [];
2097 source = {
2098 remotes = ["https://rails-assets.org"];
2099 sha256 = "0rsw3cn9a5njv80zy53339kmrmv60b8fqcrr7bacapbagb2rd4dj";
2100 type = "gem";
2101 };
2102 version = "0.2.3";
2103 };
2104 "rails-assets-jquery.are-you-sure" = {
2105 dependencies = ["rails-assets-jquery"];
2106 platforms = [];
2107 source = {
2108 remotes = ["https://rails-assets.org"];
2109 sha256 = "0nj04aqh9jpcg57xbjxpm2vn7mkd5clnpma907515a1nxy40bym0";
2110 type = "gem";
2111 };
2112 version = "1.9.0";
2113 };
2114 "rails-assets-jquery.slimscroll" = {
2115 platforms = [];
2116 source = {
2117 remotes = ["https://rails-assets.org"];
2118 sha256 = "1rymmd2rxy1vjjj70v88abmdlfs55276rs3rksj300dgirnnj998";
2119 type = "gem";
2120 };
2121 version = "1.3.8";
2122 };
2123 "rails-assets-jquery.ui" = {
2124 dependencies = ["rails-assets-jquery"];
2125 platforms = [];
2126 source = {
2127 remotes = ["https://rails-assets.org"];
2128 sha256 = "0xc9kfb29hi441irj49b7aawxkddk1dxzy938rpqv9ylpsj7knaa";
2129 type = "gem";
2130 };
2131 version = "1.11.4";
2132 };
2133 rails-assets-markdown-it = {
2134 platforms = [];
2135 source = {
2136 remotes = ["https://rails-assets.org"];
2137 sha256 = "0fxx7ldszsdqr5ry21bnxmv33byz7abpk9lcp100q5cqsjx091r9";
2138 type = "gem";
2139 };
2140 version = "8.4.2";
2141 };
2142 rails-assets-markdown-it--markdown-it-for-inline = {
2143 platforms = [];
2144 source = {
2145 remotes = ["https://rails-assets.org"];
2146 sha256 = "0fznv2x7ndadr3wb4dzhh86bpcpwz8f4d8rfhz4sfbqlai40j3jl";
2147 type = "gem";
2148 };
2149 version = "0.1.1";
2150 };
2151 rails-assets-markdown-it-diaspora-mention = {
2152 platforms = [];
2153 source = {
2154 remotes = ["https://rails-assets.org"];
2155 sha256 = "0asggm7wgmdll8x94291p2w6icmp2izi914dlh3b7vb7dpjq3jig";
2156 type = "gem";
2157 };
2158 version = "1.2.0";
2159 };
2160 rails-assets-markdown-it-hashtag = {
2161 platforms = [];
2162 source = {
2163 remotes = ["https://rails-assets.org"];
2164 sha256 = "0dr8fwaxgkfqm7z4rl4jdym0i1ycqw1sgkxshkd9k0849ry12cdk";
2165 type = "gem";
2166 };
2167 version = "0.4.0";
2168 };
2169 rails-assets-markdown-it-sanitizer = {
2170 platforms = [];
2171 source = {
2172 remotes = ["https://rails-assets.org"];
2173 sha256 = "0fkpffh83fc257zkzaia93j4hw2baz90lg10s5yxsxww06q5dn36";
2174 type = "gem";
2175 };
2176 version = "0.4.3";
2177 };
2178 rails-assets-markdown-it-sub = {
2179 platforms = [];
2180 source = {
2181 remotes = ["https://rails-assets.org"];
2182 sha256 = "08hjij5fqvhvg7s27n4g8qqsks974g3kc5k7xl2qmh41k7f4hcrk";
2183 type = "gem";
2184 };
2185 version = "1.0.0";
2186 };
2187 rails-assets-markdown-it-sup = {
2188 platforms = [];
2189 source = {
2190 remotes = ["https://rails-assets.org"];
2191 sha256 = "17nnnvky7zy0yiwwl6dm8ibbkyvvf63xfp3snch4dzmras05lmig";
2192 type = "gem";
2193 };
2194 version = "1.0.0";
2195 };
2196 rails-assets-underscore = {
2197 platforms = [];
2198 source = {
2199 remotes = ["https://rails-assets.org"];
2200 sha256 = "1ccnzj7aqrvngcs915y290pijryqmjygimdwlrykpyj8vwzifdnc";
2201 type = "gem";
2202 };
2203 version = "1.9.1";
2204 };
2205 rails-assets-utatti-perfect-scrollbar = {
2206 platforms = [];
2207 source = {
2208 remotes = ["https://rails-assets.org"];
2209 sha256 = "0m8syfv8p5bnwm8nrba6mpjnhrd29ffwzi6awhiw537jqw42b12v";
2210 type = "gem";
2211 };
2212 version = "1.4.0";
2213 };
2214 rails-controller-testing = {
2215 dependencies = ["actionpack" "actionview" "activesupport"];
2216 platforms = [];
2217 source = {
2218 remotes = ["https://rubygems.org"];
2219 sha256 = "16kdkk73mhhs73iz3i1i0ryjm84dadiyh817b3nh8acdi490jyhy";
2220 type = "gem";
2221 };
2222 version = "1.0.2";
2223 };
2224 rails-dom-testing = {
2225 dependencies = ["activesupport" "nokogiri"];
2226 platforms = [];
2227 source = {
2228 remotes = ["https://rubygems.org"];
2229 sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
2230 type = "gem";
2231 };
2232 version = "2.0.3";
2233 };
2234 rails-html-sanitizer = {
2235 dependencies = ["loofah"];
2236 platforms = [];
2237 source = {
2238 remotes = ["https://rubygems.org"];
2239 sha256 = "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr";
2240 type = "gem";
2241 };
2242 version = "1.0.4";
2243 };
2244 rails-i18n = {
2245 dependencies = ["i18n" "railties"];
2246 platforms = [];
2247 source = {
2248 remotes = ["https://rubygems.org"];
2249 sha256 = "05lkhc737a9dw0hd5ljmja0yp4cw39r3200s1r0n4bs7z1g3ka7l";
2250 type = "gem";
2251 };
2252 version = "5.1.2";
2253 };
2254 rails-timeago = {
2255 dependencies = ["actionpack" "activesupport"];
2256 platforms = [];
2257 source = {
2258 remotes = ["https://rubygems.org"];
2259 sha256 = "01x1vs9hni9wn8dc4fmyqzkrn651chzsi2mhmk0pxdrfx9md0lxv";
2260 type = "gem";
2261 };
2262 version = "2.16.0";
2263 };
2264 railties = {
2265 dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
2266 platforms = [];
2267 source = {
2268 remotes = ["https://rubygems.org"];
2269 sha256 = "0ycy2gdaj0px1vfaghskvl6qkczwaigrli2zxn54w7zn1z29faj8";
2270 type = "gem";
2271 };
2272 version = "5.1.6";
2273 };
2274 rainbow = {
2275 dependencies = ["rake"];
2276 platforms = [];
2277 source = {
2278 remotes = ["https://rubygems.org"];
2279 sha256 = "08w2ghc5nv0kcq5b257h7dwjzjz1pqcavajfdx2xjyxqsvh2y34w";
2280 type = "gem";
2281 };
2282 version = "2.2.2";
2283 };
2284 raindrops = {
2285 platforms = [];
2286 source = {
2287 remotes = ["https://rubygems.org"];
2288 sha256 = "1qpbd9jif40c53fz2r0l8khfl016y8s8bkx37ibcaafclbl3xygp";
2289 type = "gem";
2290 };
2291 version = "0.19.0";
2292 };
2293 rake = {
2294 platforms = [];
2295 source = {
2296 remotes = ["https://rubygems.org"];
2297 sha256 = "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg";
2298 type = "gem";
2299 };
2300 version = "12.3.1";
2301 };
2302 rb-fsevent = {
2303 platforms = [];
2304 source = {
2305 remotes = ["https://rubygems.org"];
2306 sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
2307 type = "gem";
2308 };
2309 version = "0.10.3";
2310 };
2311 rb-inotify = {
2312 dependencies = ["ffi"];
2313 platforms = [];
2314 source = {
2315 remotes = ["https://rubygems.org"];
2316 sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71";
2317 type = "gem";
2318 };
2319 version = "0.9.10";
2320 };
2321 redcarpet = {
2322 platforms = [];
2323 source = {
2324 remotes = ["https://rubygems.org"];
2325 sha256 = "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7";
2326 type = "gem";
2327 };
2328 version = "3.4.0";
2329 };
2330 redis = {
2331 platforms = [];
2332 source = {
2333 remotes = ["https://rubygems.org"];
2334 sha256 = "0i415x8gi0c5vsiy6ikvx5js6fhc4x80a5lqv8iidy2iymd20irv";
2335 type = "gem";
2336 };
2337 version = "3.3.5";
2338 };
2339 regexp_parser = {
2340 platforms = [];
2341 source = {
2342 remotes = ["https://rubygems.org"];
2343 sha256 = "18g5jyg3blsdrz3mc8d87bms6qqn6gcdh1nvdhvgbjdpk9pw21dq";
2344 type = "gem";
2345 };
2346 version = "1.3.0";
2347 };
2348 request_store = {
2349 dependencies = ["rack"];
2350 platforms = [];
2351 source = {
2352 remotes = ["https://rubygems.org"];
2353 sha256 = "1963330z03fk382fi8y231ygcbnh86m91dqlp5rh1mwy9ihzzl6d";
2354 type = "gem";
2355 };
2356 version = "1.4.1";
2357 };
2358 responders = {
2359 dependencies = ["actionpack" "railties"];
2360 platforms = [];
2361 source = {
2362 remotes = ["https://rubygems.org"];
2363 sha256 = "1rhdyyvvm26f2l3fgwdp6xasfl2y0whwgy766bhdwz697mf78zfn";
2364 type = "gem";
2365 };
2366 version = "2.4.0";
2367 };
2368 rspec = {
2369 dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
2370 platforms = [];
2371 source = {
2372 remotes = ["https://rubygems.org"];
2373 sha256 = "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3";
2374 type = "gem";
2375 };
2376 version = "3.8.0";
2377 };
2378 rspec-core = {
2379 dependencies = ["rspec-support"];
2380 platforms = [];
2381 source = {
2382 remotes = ["https://rubygems.org"];
2383 sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
2384 type = "gem";
2385 };
2386 version = "3.8.0";
2387 };
2388 rspec-expectations = {
2389 dependencies = ["diff-lcs" "rspec-support"];
2390 platforms = [];
2391 source = {
2392 remotes = ["https://rubygems.org"];
2393 sha256 = "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm";
2394 type = "gem";
2395 };
2396 version = "3.8.2";
2397 };
2398 rspec-json_expectations = {
2399 platforms = [];
2400 source = {
2401 remotes = ["https://rubygems.org"];
2402 sha256 = "0l3dhvkb95zwyg72wz33azxigc9cisqgg3z16ksns1sx0b93nnbn";
2403 type = "gem";
2404 };
2405 version = "2.1.0";
2406 };
2407 rspec-mocks = {
2408 dependencies = ["diff-lcs" "rspec-support"];
2409 platforms = [];
2410 source = {
2411 remotes = ["https://rubygems.org"];
2412 sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
2413 type = "gem";
2414 };
2415 version = "3.8.0";
2416 };
2417 rspec-rails = {
2418 dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
2419 platforms = [];
2420 source = {
2421 remotes = ["https://rubygems.org"];
2422 sha256 = "0sqj5da2kc937j5jb18jcf0hrmmzwgj7pk62j0q3qndhc2kvx88p";
2423 type = "gem";
2424 };
2425 version = "3.8.1";
2426 };
2427 rspec-support = {
2428 platforms = [];
2429 source = {
2430 remotes = ["https://rubygems.org"];
2431 sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
2432 type = "gem";
2433 };
2434 version = "3.8.0";
2435 };
2436 rubocop = {
2437 dependencies = ["jaro_winkler" "parallel" "parser" "powerpack" "rainbow" "ruby-progressbar" "unicode-display_width"];
2438 platforms = [];
2439 source = {
2440 remotes = ["https://rubygems.org"];
2441 sha256 = "1ivk049z3mp12nc6v1wn35bsq1g7nz1i2r4xwzqf0v25hm2v7n1i";
2442 type = "gem";
2443 };
2444 version = "0.60.0";
2445 };
2446 ruby-oembed = {
2447 platforms = [];
2448 source = {
2449 remotes = ["https://rubygems.org"];
2450 sha256 = "1kw4aplb3m13z3kchhb79wf87qb3prn1m99s6vl5cyp0xqwyymv0";
2451 type = "gem";
2452 };
2453 version = "0.12.0";
2454 };
2455 ruby-progressbar = {
2456 platforms = [];
2457 source = {
2458 remotes = ["https://rubygems.org"];
2459 sha256 = "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk";
2460 type = "gem";
2461 };
2462 version = "1.10.0";
2463 };
2464 ruby_dep = {
2465 platforms = [];
2466 source = {
2467 remotes = ["https://rubygems.org"];
2468 sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
2469 type = "gem";
2470 };
2471 version = "1.5.0";
2472 };
2473 rubyzip = {
2474 platforms = [];
2475 source = {
2476 remotes = ["https://rubygems.org"];
2477 sha256 = "1n1lb2sdwh9h27y244hxzg1lrxxg2m53pk1vq7p33bna003qkyrj";
2478 type = "gem";
2479 };
2480 version = "1.2.2";
2481 };
2482 rugged = {
2483 platforms = [];
2484 source = {
2485 remotes = ["https://rubygems.org"];
2486 sha256 = "1jv4nw9hvlxp8hhhlllrfcznki82i50fp1sj65zsjllfl2bvz8x6";
2487 type = "gem";
2488 };
2489 version = "0.27.5";
2490 };
2491 safe_yaml = {
2492 platforms = [];
2493 source = {
2494 remotes = ["https://rubygems.org"];
2495 sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
2496 type = "gem";
2497 };
2498 version = "1.0.4";
2499 };
2500 sass = {
2501 platforms = [];
2502 source = {
2503 remotes = ["https://rubygems.org"];
2504 sha256 = "0kfpcwh8dgw4lc81qglkvjl73689jy3g7196zkxm4fpskg1p5lkw";
2505 type = "gem";
2506 };
2507 version = "3.4.25";
2508 };
2509 sass-rails = {
2510 dependencies = ["railties" "sass" "sprockets" "sprockets-rails" "tilt"];
2511 platforms = [];
2512 source = {
2513 remotes = ["https://rubygems.org"];
2514 sha256 = "1wa63sbsimrsf7nfm8h0m1wbsllkfxvd7naph5d1j6pbc555ma7s";
2515 type = "gem";
2516 };
2517 version = "5.0.7";
2518 };
2519 sawyer = {
2520 dependencies = ["addressable" "faraday"];
2521 platforms = [];
2522 source = {
2523 remotes = ["https://rubygems.org"];
2524 sha256 = "0sv1463r7bqzvx4drqdmd36m7rrv6sf1v3c6vswpnq3k6vdw2dvd";
2525 type = "gem";
2526 };
2527 version = "0.8.1";
2528 };
2529 scss_lint = {
2530 dependencies = ["rake" "sass"];
2531 platforms = [];
2532 source = {
2533 remotes = ["https://rubygems.org"];
2534 sha256 = "11rl8kj32p34mqlkhxvlwfrwl8gdl0iha8q9xsrr3sjxjagzv8yp";
2535 type = "gem";
2536 };
2537 version = "0.55.0";
2538 };
2539 secure_headers = {
2540 platforms = [];
2541 source = {
2542 remotes = ["https://rubygems.org"];
2543 sha256 = "17cxci8jyvlgssix0cy7kbm5m2h7s8ym9caj8nilrbd21jis9pc5";
2544 type = "gem";
2545 };
2546 version = "6.0.0";
2547 };
2548 shellany = {
2549 platforms = [];
2550 source = {
2551 remotes = ["https://rubygems.org"];
2552 sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf";
2553 type = "gem";
2554 };
2555 version = "0.0.1";
2556 };
2557 shoulda-matchers = {
2558 dependencies = ["activesupport"];
2559 platforms = [];
2560 source = {
2561 remotes = ["https://rubygems.org"];
2562 sha256 = "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a";
2563 type = "gem";
2564 };
2565 version = "3.1.2";
2566 };
2567 sidekiq = {
2568 dependencies = ["connection_pool" "rack-protection" "redis"];
2569 platforms = [];
2570 source = {
2571 remotes = ["https://rubygems.org"];
2572 sha256 = "1zyf9y3rvzizbwh68i2g1lzd40lalrdc4iyjmaa74gnfwsf92i26";
2573 type = "gem";
2574 };
2575 version = "5.2.3";
2576 };
2577 sidekiq-cron = {
2578 dependencies = ["fugit" "sidekiq"];
2579 platforms = [];
2580 source = {
2581 remotes = ["https://rubygems.org"];
2582 sha256 = "1aliswahmpxn1ib2brn4126gk97ac3zdnwr71mn8vzbr3vdd7fl0";
2583 type = "gem";
2584 };
2585 version = "1.0.4";
2586 };
2587 simple_captcha2 = {
2588 dependencies = ["rails"];
2589 platforms = [];
2590 source = {
2591 remotes = ["https://rubygems.org"];
2592 sha256 = "0vdjydym8sjpa8c1q0n2hanj3n9vzi4ycdw2p6bbm6qqmm1f3fq3";
2593 type = "gem";
2594 };
2595 version = "0.4.3";
2596 };
2597 simple_oauth = {
2598 platforms = [];
2599 source = {
2600 remotes = ["https://rubygems.org"];
2601 sha256 = "0dw9ii6m7wckml100xhjc6vxpjcry174lbi9jz5v7ibjr3i94y8l";
2602 type = "gem";
2603 };
2604 version = "0.3.1";
2605 };
2606 simplecov = {
2607 dependencies = ["docile" "json" "simplecov-html"];
2608 platforms = [];
2609 source = {
2610 remotes = ["https://rubygems.org"];
2611 sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
2612 type = "gem";
2613 };
2614 version = "0.16.1";
2615 };
2616 simplecov-html = {
2617 platforms = [];
2618 source = {
2619 remotes = ["https://rubygems.org"];
2620 sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
2621 type = "gem";
2622 };
2623 version = "0.10.2";
2624 };
2625 sinon-rails = {
2626 dependencies = ["railties"];
2627 platforms = [];
2628 source = {
2629 remotes = ["https://rubygems.org"];
2630 sha256 = "1b7996hb8vfky29b0zcql90x8i6vhdg2zy9nfzmhh820gjv3kggb";
2631 type = "gem";
2632 };
2633 version = "1.15.0";
2634 };
2635 spring = {
2636 dependencies = ["activesupport"];
2637 platforms = [];
2638 source = {
2639 remotes = ["https://rubygems.org"];
2640 sha256 = "168yz9c1fv21wc5i8q7n43b9nk33ivg3ws1fn6x0afgryz3ssx75";
2641 type = "gem";
2642 };
2643 version = "2.0.2";
2644 };
2645 spring-commands-cucumber = {
2646 dependencies = ["spring"];
2647 platforms = [];
2648 source = {
2649 remotes = ["https://rubygems.org"];
2650 sha256 = "0mw81gvms2svn4k4pc6ly7smkmf0j9r2xbf0d38vygbyhiwd1c9a";
2651 type = "gem";
2652 };
2653 version = "1.0.1";
2654 };
2655 spring-commands-rspec = {
2656 dependencies = ["spring"];
2657 platforms = [];
2658 source = {
2659 remotes = ["https://rubygems.org"];
2660 sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2";
2661 type = "gem";
2662 };
2663 version = "1.0.4";
2664 };
2665 sprockets = {
2666 dependencies = ["concurrent-ruby" "rack"];
2667 platforms = [];
2668 source = {
2669 remotes = ["https://rubygems.org"];
2670 sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
2671 type = "gem";
2672 };
2673 version = "3.7.2";
2674 };
2675 sprockets-rails = {
2676 dependencies = ["actionpack" "activesupport" "sprockets"];
2677 platforms = [];
2678 source = {
2679 remotes = ["https://rubygems.org"];
2680 sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
2681 type = "gem";
2682 };
2683 version = "3.2.1";
2684 };
2685 state_machines = {
2686 platforms = [];
2687 source = {
2688 remotes = ["https://rubygems.org"];
2689 sha256 = "00mi16hg3rhkxz4y58s173cbnjlba41y9bfcim90p4ja6yfj9ri3";
2690 type = "gem";
2691 };
2692 version = "0.5.0";
2693 };
2694 string-direction = {
2695 platforms = [];
2696 source = {
2697 remotes = ["https://rubygems.org"];
2698 sha256 = "0iyddwmkj425c6xbn5pmlr2yzwcq4snzlan7rky5b1yp2pvf70jj";
2699 type = "gem";
2700 };
2701 version = "1.2.1";
2702 };
2703 swd = {
2704 dependencies = ["activesupport" "attr_required" "httpclient"];
2705 platforms = [];
2706 source = {
2707 remotes = ["https://rubygems.org"];
2708 sha256 = "1s2vjb6f13za7p1iycl2p73d3p202xa6xny9fjrp8ynwsqix7lyd";
2709 type = "gem";
2710 };
2711 version = "1.1.2";
2712 };
2713 sysexits = {
2714 platforms = [];
2715 source = {
2716 remotes = ["https://rubygems.org"];
2717 sha256 = "0qjng6pllznmprzx8vb0zg0c86hdrkyjs615q41s9fjpmv2430jr";
2718 type = "gem";
2719 };
2720 version = "1.2.0";
2721 };
2722 systemu = {
2723 platforms = [];
2724 source = {
2725 remotes = ["https://rubygems.org"];
2726 sha256 = "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1";
2727 type = "gem";
2728 };
2729 version = "2.6.5";
2730 };
2731 temple = {
2732 platforms = [];
2733 source = {
2734 remotes = ["https://rubygems.org"];
2735 sha256 = "00nxf610nzi4n1i2lkby43nrnarvl89fcl6lg19406msr0k3ycmq";
2736 type = "gem";
2737 };
2738 version = "0.8.0";
2739 };
2740 term-ansicolor = {
2741 dependencies = ["tins"];
2742 platforms = [];
2743 source = {
2744 remotes = ["https://rubygems.org"];
2745 sha256 = "079hbagd9mk0839rkajsdrbzkn992gj8ah2n45qd64v25ml27i6d";
2746 type = "gem";
2747 };
2748 version = "1.7.0";
2749 };
2750 terminal-table = {
2751 dependencies = ["unicode-display_width"];
2752 platforms = [];
2753 source = {
2754 remotes = ["https://rubygems.org"];
2755 sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
2756 type = "gem";
2757 };
2758 version = "1.8.0";
2759 };
2760 thor = {
2761 platforms = [];
2762 source = {
2763 remotes = ["https://rubygems.org"];
2764 sha256 = "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns";
2765 type = "gem";
2766 };
2767 version = "0.19.4";
2768 };
2769 thread_safe = {
2770 platforms = [];
2771 source = {
2772 remotes = ["https://rubygems.org"];
2773 sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
2774 type = "gem";
2775 };
2776 version = "0.3.6";
2777 };
2778 tilt = {
2779 platforms = [];
2780 source = {
2781 remotes = ["https://rubygems.org"];
2782 sha256 = "0020mrgdf11q23hm1ddd6fv691l51vi10af00f137ilcdb2ycfra";
2783 type = "gem";
2784 };
2785 version = "2.0.8";
2786 };
2787 timecop = {
2788 platforms = [];
2789 source = {
2790 remotes = ["https://rubygems.org"];
2791 sha256 = "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp";
2792 type = "gem";
2793 };
2794 version = "0.9.1";
2795 };
2796 timers = {
2797 platforms = [];
2798 source = {
2799 remotes = ["https://rubygems.org"];
2800 sha256 = "04zbs9wyzajn7g9xfgg2zqz5kzf0qa7jgh4hgry4pfcxfmlnwdwx";
2801 type = "gem";
2802 };
2803 version = "4.2.0";
2804 };
2805 tins = {
2806 platforms = [];
2807 source = {
2808 remotes = ["https://rubygems.org"];
2809 sha256 = "1pqj45n216zrz7yckdbdknlmhh187iqzx8fp76y2h0jrgqjfkxmj";
2810 type = "gem";
2811 };
2812 version = "1.20.2";
2813 };
2814 to_regexp = {
2815 platforms = [];
2816 source = {
2817 remotes = ["https://rubygems.org"];
2818 sha256 = "1rgabfhnql6l4fx09mmj5d0vza924iczqf2blmn82l782b6qqi9v";
2819 type = "gem";
2820 };
2821 version = "0.2.1";
2822 };
2823 turbo_dev_assets = {
2824 platforms = [];
2825 source = {
2826 remotes = ["https://rubygems.org"];
2827 sha256 = "08yp7gpishjfj8b7d61hxs677288ycv6yg78a7hfzn631gxczipx";
2828 type = "gem";
2829 };
2830 version = "0.0.2";
2831 };
2832 twitter = {
2833 dependencies = ["addressable" "buftok" "equalizer" "http" "http-form_data" "http_parser.rb" "memoizable" "multipart-post" "naught" "simple_oauth"];
2834 platforms = [];
2835 source = {
2836 remotes = ["https://rubygems.org"];
2837 sha256 = "0fjyz3viabz3xs5d9aad18zgdbhfwm51jsnzigc8kxk77p1x58n5";
2838 type = "gem";
2839 };
2840 version = "6.2.0";
2841 };
2842 twitter-text = {
2843 dependencies = ["unf"];
2844 platforms = [];
2845 source = {
2846 remotes = ["https://rubygems.org"];
2847 sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
2848 type = "gem";
2849 };
2850 version = "1.14.7";
2851 };
2852 typhoeus = {
2853 dependencies = ["ethon"];
2854 platforms = [];
2855 source = {
2856 remotes = ["https://rubygems.org"];
2857 sha256 = "0cni8b1idcp0dk8kybmxydadhfpaj3lbs99w5kjibv8bsmip2zi5";
2858 type = "gem";
2859 };
2860 version = "1.3.1";
2861 };
2862 tzinfo = {
2863 dependencies = ["thread_safe"];
2864 platforms = [];
2865 source = {
2866 remotes = ["https://rubygems.org"];
2867 sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
2868 type = "gem";
2869 };
2870 version = "1.2.5";
2871 };
2872 uglifier = {
2873 dependencies = ["execjs"];
2874 platforms = [];
2875 source = {
2876 remotes = ["https://rubygems.org"];
2877 sha256 = "1g203kly5wp4qlkc7371skyvyin6iinc8i0p5wrpiqgblqxxgcf1";
2878 type = "gem";
2879 };
2880 version = "4.1.19";
2881 };
2882 unf = {
2883 dependencies = ["unf_ext"];
2884 platforms = [];
2885 source = {
2886 remotes = ["https://rubygems.org"];
2887 sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
2888 type = "gem";
2889 };
2890 version = "0.1.4";
2891 };
2892 unf_ext = {
2893 platforms = [];
2894 source = {
2895 remotes = ["https://rubygems.org"];
2896 sha256 = "06p1i6qhy34bpb8q8ms88y6f2kz86azwm098yvcc0nyqk9y729j1";
2897 type = "gem";
2898 };
2899 version = "0.0.7.5";
2900 };
2901 unicode-display_width = {
2902 platforms = [];
2903 source = {
2904 remotes = ["https://rubygems.org"];
2905 sha256 = "0040bsdpcmvp8w31lqi2s9s4p4h031zv52401qidmh25cgyh4a57";
2906 type = "gem";
2907 };
2908 version = "1.4.0";
2909 };
2910 unicorn = {
2911 dependencies = ["kgio" "raindrops"];
2912 platforms = [];
2913 source = {
2914 remotes = ["https://rubygems.org"];
2915 sha256 = "1qfhvzs4i6ja1s43j8p1kfbzm10n7a02ngki30a38y5m46a2qrak";
2916 type = "gem";
2917 };
2918 version = "5.4.1";
2919 };
2920 unicorn-worker-killer = {
2921 dependencies = ["get_process_mem" "unicorn"];
2922 platforms = [];
2923 source = {
2924 remotes = ["https://rubygems.org"];
2925 sha256 = "0rrdxpwdsapx47axjin8ymxb4f685qlpx8a26bql4ay1559c3gva";
2926 type = "gem";
2927 };
2928 version = "0.4.4";
2929 };
2930 uuid = {
2931 dependencies = ["macaddr"];
2932 platforms = [];
2933 source = {
2934 remotes = ["https://rubygems.org"];
2935 sha256 = "1mr405vg4ccnndkyf7pb49gp1fha8i6gj7iwq43nxkak41cwzh5f";
2936 type = "gem";
2937 };
2938 version = "2.3.9";
2939 };
2940 valid = {
2941 platforms = [];
2942 source = {
2943 remotes = ["https://rubygems.org"];
2944 sha256 = "0vxrgik9gxyh5j2w16nz5azjk0cbzmvv883hq9pvxm9anfbbj8d3";
2945 type = "gem";
2946 };
2947 version = "1.2.0";
2948 };
2949 validate_email = {
2950 dependencies = ["activemodel" "mail"];
2951 platforms = [];
2952 source = {
2953 remotes = ["https://rubygems.org"];
2954 sha256 = "1r1fz29l699arka177c9xw7409d1a3ff95bf7a6pmc97slb91zlx";
2955 type = "gem";
2956 };
2957 version = "0.1.6";
2958 };
2959 validate_url = {
2960 dependencies = ["activemodel" "addressable"];
2961 platforms = [];
2962 source = {
2963 remotes = ["https://rubygems.org"];
2964 sha256 = "1df4gch8dizimpbl185vfgw95yb8ffr6zwj6whzbxfil95c3f2qh";
2965 type = "gem";
2966 };
2967 version = "1.0.2";
2968 };
2969 versionist = {
2970 dependencies = ["activesupport" "railties" "yard"];
2971 platforms = [];
2972 source = {
2973 remotes = ["https://rubygems.org"];
2974 sha256 = "1p8wizg6jml7gz1qiqk7d77hy0w5650g812jhgd0zzkwwdmzm38m";
2975 type = "gem";
2976 };
2977 version = "1.7.0";
2978 };
2979 warden = {
2980 dependencies = ["rack"];
2981 platforms = [];
2982 source = {
2983 remotes = ["https://rubygems.org"];
2984 sha256 = "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454";
2985 type = "gem";
2986 };
2987 version = "1.2.8";
2988 };
2989 webfinger = {
2990 dependencies = ["activesupport" "httpclient"];
2991 platforms = [];
2992 source = {
2993 remotes = ["https://rubygems.org"];
2994 sha256 = "0m0jh8k7c0ifh2jhbn7ihqrmn5fi754wflva97zgy70hpdvxyjar";
2995 type = "gem";
2996 };
2997 version = "1.1.0";
2998 };
2999 webmock = {
3000 dependencies = ["addressable" "crack" "hashdiff"];
3001 platforms = [];
3002 source = {
3003 remotes = ["https://rubygems.org"];
3004 sha256 = "03994dxs4xayvkxqp01dd1ivhg4xxx7z35f7cxw7y2mwj3xn24ib";
3005 type = "gem";
3006 };
3007 version = "3.4.2";
3008 };
3009 websocket-driver = {
3010 dependencies = ["websocket-extensions"];
3011 platforms = [];
3012 source = {
3013 remotes = ["https://rubygems.org"];
3014 sha256 = "1943442yllhldh9dbp374x2q39cxa49xrm28nb78b7mfbv3y195l";
3015 type = "gem";
3016 };
3017 version = "0.6.5";
3018 };
3019 websocket-extensions = {
3020 platforms = [];
3021 source = {
3022 remotes = ["https://rubygems.org"];
3023 sha256 = "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270";
3024 type = "gem";
3025 };
3026 version = "0.1.3";
3027 };
3028 will_paginate = {
3029 platforms = [];
3030 source = {
3031 remotes = ["https://rubygems.org"];
3032 sha256 = "0ihf15yaj8883ddhkxq7q60zrg3zfsvqaf5853gybhcg18zq8bn9";
3033 type = "gem";
3034 };
3035 version = "3.1.6";
3036 };
3037 xpath = {
3038 dependencies = ["nokogiri"];
3039 platforms = [];
3040 source = {
3041 remotes = ["https://rubygems.org"];
3042 sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
3043 type = "gem";
3044 };
3045 version = "3.2.0";
3046 };
3047 yard = {
3048 platforms = [];
3049 source = {
3050 remotes = ["https://rubygems.org"];
3051 sha256 = "0lmmr1839qgbb3zxfa7jf5mzy17yjl1yirwlgzdhws4452gqhn67";
3052 type = "gem";
3053 };
3054 version = "0.9.16";
3055 };
3056}
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 @@
1commit 936a14e225037aca4cdeac11c843c7985e636c88
2Author: Ismaël Bouya <ismael.bouya@normalesup.org>
3Date: Mon Jul 24 19:58:24 2017 +0200
4
5 Add LDAP to diaspora
6
7diff --git a/Gemfile b/Gemfile
8index 414b0138d..2a934e9c9 100644
9--- a/Gemfile
10+++ b/Gemfile
11@@ -217,6 +217,9 @@ gem "thor", "0.19.1"
12
13 # gem "therubyracer", :platform => :ruby
14
15+# LDAP
16+gem 'net-ldap', '~> 0.16'
17+
18 group :production do # we don"t install these on travis to speed up test runs
19 # Analytics
20
21diff --git a/Gemfile.lock b/Gemfile.lock
22index 84f8172e4..cdbf19fcd 100644
23--- a/Gemfile.lock 2019-01-13 19:55:52.538561762 +0100
24+++ b/Gemfile.lock 2019-01-13 19:58:11.087099067 +0100
25@@ -398,6 +398,7 @@
26 mysql2 (0.5.2)
27 naught (1.1.0)
28 nenv (0.3.0)
29+ net-ldap (0.16.1)
30 nio4r (2.3.1)
31 nokogiri (1.8.5)
32 mini_portile2 (~> 2.3.0)
33@@ -820,6 +821,7 @@
34 minitest
35 mobile-fu (= 1.4.0)
36 mysql2 (= 0.5.2)
37+ net-ldap (~> 0.16)
38 nokogiri (= 1.8.5)
39 omniauth (= 1.8.1)
40 omniauth-tumblr (= 1.2)
41diff --git a/app/models/user.rb b/app/models/user.rb
42index 940a48f25..d1e2beeee 100644
43--- a/app/models/user.rb
44+++ b/app/models/user.rb
45@@ -337,6 +337,12 @@ class User < ActiveRecord::Base
46 end
47
48 def send_confirm_email
49+ if skip_email_confirmation?
50+ self.email = unconfirmed_email
51+ self.unconfirmed_email = nil
52+ save
53+ end
54+
55 return if unconfirmed_email.blank?
56 Workers::Mail::ConfirmEmail.perform_async(id)
57 end
58@@ -554,6 +560,14 @@ class User < ActiveRecord::Base
59 end
60 end
61
62+ def ldap_user?
63+ AppConfig.ldap.enable? && ldap_dn.present?
64+ end
65+
66+ def skip_email_confirmation?
67+ ldap_user? && AppConfig.ldap.skip_email_confirmation?
68+ end
69+
70 private
71
72 def clearable_fields
73diff --git a/config/defaults.yml b/config/defaults.yml
74index c046aff07..66e9afa13 100644
75--- a/config/defaults.yml
76+++ b/config/defaults.yml
77@@ -202,6 +202,20 @@ defaults:
78 scope: tags
79 include_user_tags: false
80 pod_tags:
81+ ldap:
82+ enable: false
83+ host: localhost
84+ port: 389
85+ only_ldap: true
86+ mail_attribute: mail
87+ skip_email_confirmation: true
88+ use_bind_dn: true
89+ bind_dn: "cn=diaspora,dc=example,dc=com"
90+ bind_pw: "password"
91+ search_base: "dc=example,dc=com"
92+ search_filter: "uid=%{username}"
93+ bind_template: "uid=%{username},dc=example,dc=com"
94+
95
96 development:
97 environment:
98diff --git a/config/diaspora.yml.example b/config/diaspora.yml.example
99index b2573625d..c357c8651 100644
100--- a/config/diaspora.yml.example
101+++ b/config/diaspora.yml.example
102@@ -710,6 +710,36 @@ configuration: ## Section
103 ## If scope is 'tags', a comma separated list of tags here can be set.
104 ## For example "linux,diaspora", to receive posts related to these tags
105 #pod_tags:
106+ ldap:
107+ # Uncomment next line if you want to use LDAP on your instance
108+ enable: true
109+ host: localhost
110+ port: 389
111+ # Use only LDAP authentication (don't try other means)
112+ only_ldap: true
113+ # LDAP attribute to find the user's e-mail. Necessary to create accounts
114+ # for not existing users
115+ mail_attribute: mail
116+ # Skip e-mail confirmation when creating an account via LDAP.
117+ skip_email_confirmation: true
118+ # ----- Using bind_dn and bind_pw
119+ # bind_dn and bind_pw may be used if the diaspora instance
120+ # should be able to connect to LDAP to find and search for users.
121+
122+ use_bind_dn: true
123+ bind_dn: "cn=diaspora,dc=example,dc=com"
124+ bind_pw: "password"
125+ search_base: "dc=example,dc=com"
126+ # This is the filter with which to search for the user. %{username} will
127+ # be replaced by the given login.
128+ search_filter: "uid=%{username}"
129+ #
130+ # ----- Using template
131+ # This setting doesn't require a diaspora LDAP user. Use a template, and
132+ # diaspora will try to login with the templated dn and password
133+ #
134+ # bind_template: "uid=%{username},dc=example,dc=com"
135+
136
137 ## Here you can override settings defined above if you need
138 ## to have them different in different environments.
139diff --git a/config/initializers/0_ldap_authenticatable.rb b/config/initializers/0_ldap_authenticatable.rb
140new file mode 100644
141index 000000000..49846502f
142--- /dev/null
143+++ b/config/initializers/0_ldap_authenticatable.rb
144@@ -0,0 +1,82 @@
145+require 'net/ldap'
146+require 'devise/strategies/authenticatable'
147+
148+module Devise
149+ module Strategies
150+ class LdapAuthenticatable < Authenticatable
151+ def valid?
152+ AppConfig.ldap.enable? && params[:user].present?
153+ end
154+
155+ def authenticate!
156+ ldap = Net::LDAP.new(
157+ host: AppConfig.ldap.host,
158+ port: AppConfig.ldap.port,
159+ encryption: :simple_tls,
160+ )
161+
162+ if AppConfig.ldap.use_bind_dn?
163+ ldap.auth AppConfig.ldap.bind_dn, AppConfig.ldap.bind_pw
164+
165+ if !ldap.bind
166+ return fail(:ldap_configuration_error)
167+ end
168+
169+ search_filter = AppConfig.ldap.search_filter % { username: params[:user][:username] }
170+
171+ result = ldap.search(base: AppConfig.ldap.search_base, filter: search_filter, result_set: true)
172+
173+ if result.count != 1
174+ return login_fail
175+ end
176+
177+ user_dn = result.first.dn
178+ user_email = result.first[AppConfig.ldap.mail_attribute].first
179+ else
180+ user_dn = AppConfig.ldap.bind_template % { username: params[:user][:username] }
181+ end
182+
183+ ldap.auth user_dn, params[:user][:password]
184+
185+ if ldap.bind
186+ user = User.find_by(ldap_dn: user_dn)
187+
188+ # We don't want to trust too much the email attribute from
189+ # LDAP: if the user can edit it himself, he may login as
190+ # anyone
191+ if user.nil?
192+ if !AppConfig.ldap.use_bind_dn?
193+ result = ldap.search(base: user_dn, scope: Net::LDAP::SearchScope_BaseObject, filter: "(objectClass=*)", result_set: true)
194+ user_email = result.first[AppConfig.ldap.mail_attribute].first
195+ end
196+
197+ if user_email.present? && User.find_by(email: user_email).nil?
198+ # Password is used for remember_me token
199+ user = User.build(email: user_email, ldap_dn: user_dn, password: SecureRandom.hex, username: params[:user][:username])
200+ user.save
201+ user.seed_aspects
202+ elsif User.find_by(email: user_email).present?
203+ return fail(:ldap_existing_email)
204+ else
205+ return fail(:ldap_cannot_create_account_without_email)
206+ end
207+ end
208+
209+ success!(user)
210+ else
211+ return login_fail
212+ end
213+ end
214+
215+ def login_fail
216+ if AppConfig.ldap.only_ldap?
217+ return fail(:ldap_invalid_login)
218+ else
219+ return pass
220+ end
221+ end
222+ end
223+ end
224+end
225+
226+Warden::Strategies.add(:ldap_authenticatable, Devise::Strategies::LdapAuthenticatable)
227diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
228index 3698e2373..14e88063e 100644
229--- a/config/initializers/devise.rb
230+++ b/config/initializers/devise.rb
231@@ -250,10 +250,9 @@ Devise.setup do |config|
232 # If you want to use other strategies, that are not supported by Devise, or
233 # change the failure app, you can configure them inside the config.warden block.
234 #
235- # config.warden do |manager|
236- # manager.intercept_401 = false
237- # manager.default_strategies(:scope => :user).unshift :some_external_strategy
238- # end
239+ config.warden do |manager|
240+ manager.default_strategies(scope: :user).unshift :ldap_authenticatable
241+ end
242
243 # ==> Mountable engine configurations
244 # When using Devise inside an engine, let's call it `MyEngine`, and this engine
245diff --git a/db/migrate/20170724182100_add_ldap_dn_to_users.rb b/db/migrate/20170724182100_add_ldap_dn_to_users.rb
246new file mode 100644
247index 000000000..f5cc84d11
248--- /dev/null
249+++ b/db/migrate/20170724182100_add_ldap_dn_to_users.rb
250@@ -0,0 +1,6 @@
251+class AddLdapDnToUsers < ActiveRecord::Migration
252+ def change
253+ add_column :users, :ldap_dn, :text, null: true, default: nil
254+ add_index :users, ['ldap_dn'], :length => { "ldap_dn" => 191 }
255+ end
256+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 @@
1{ varDir ? "/var/lib/etherpad-lite" # if you override this change the StateDirectory in service file too!
2, nodeEnv, stdenv, callPackage, src, lib, nodejs }:
3let
4 moduleNames = [
5 "ep_aa_file_menu_toolbar" "ep_adminpads" "ep_align" "ep_bookmark"
6 "ep_clear_formatting" "ep_colors" "ep_comments_page"
7 "ep_copy_paste_select_all" "ep_cursortrace" "ep_delete_empty_pads"
8 "ep_embedmedia" "ep_font_family" "ep_font_size" "ep_headings2"
9 "ep_immae_buttons" "ep_ldapauth" "ep_line_height" "ep_markdown"
10 "ep_mypads" "ep_page_view" "ep_previewimages" "ep_ruler"
11 "ep_scrollto" "ep_set_title_on_pad" "ep_subscript_and_superscript"
12 "ep_timesliderdiff"
13 ];
14 # nix files are built using node2nix -i node-packages.json
15 allModules = lib.attrsets.genAttrs moduleNames
16 (name: (callPackage (./modules + "/${name}/node-packages.nix") { nodeEnv = callPackage nodeEnv {}; }).${name});
17 toPassthru = pkg: moduleNames: {
18 inherit varDir allModules nodejs moduleNames;
19 withModules = withModules pkg;
20 };
21 withModules = pkg: toModules:
22 let
23 modules = toModules allModules;
24 toInstallModule = n: ''
25 cp -a ${n}/lib/node_modules/${n.packageName} $out/node_modules
26 if [ ! -f $out/node_modules/${n.packageName}/.ep_initialized ]; then
27 chmod u+w $out/node_modules/${n.packageName}/
28 ln -s ${varDir}/ep_initialized/${n.packageName} $out/node_modules/${n.packageName}/.ep_initialized
29 fi
30 '';
31 modulesNames = map (n: n.packageName) modules;
32 newEtherpad = pkg.overrideAttrs(old: {
33 installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallModule modules);
34 passthru = toPassthru newEtherpad moduleNames;
35 });
36 in newEtherpad;
37 # built using node2nix -l package-lock.json
38 # and changing "./." to "src"
39 node-environment = (callPackage ./node-packages.nix {
40 nodeEnv = callPackage nodeEnv {};
41 src = stdenv.mkDerivation {
42 pname = "etherpad-lite";
43 version = src.version;
44 inherit src;
45 patches = [ ./libreoffice_patch.diff ];
46 buildPhase = ''
47 touch src/.ep_initialized
48 '';
49 installPhase = ''
50 cp -a src/ $out
51 '';
52 };
53 }).package;
54 package = stdenv.mkDerivation rec {
55 name = "etherpad-lite-${src.version}";
56 src = node-environment;
57 version = src.version;
58 installPhase = ''
59 mkdir -p $out
60 mkdir $out/node_modules
61 cp -a lib/node_modules/ep_etherpad-lite $out/src
62 chmod u+w $out/src/static/js/
63 ln -s ../src $out/node_modules/ep_etherpad-lite
64 ln -s ${varDir}/var $out/var
65 '';
66 passthru = toPassthru package [];
67 };
68in 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 @@
1DO $$
2 DECLARE todelete record;
3 BEGIN
4 FOR todelete IN
5 select split_part(key, ':', 4) as k from store where key like 'mypads:jobqueue:deletePad:%'
6 LOOP
7 select * from store where key in (select 'readonly2pad:' || split_part(value, '"', 2) from store where key = 'pad2readonly:' || todelete.k);
8 select * from store where key = 'pad2readonly:' || todelete.k;
9 select * from store where key like 'pad:' || todelete.k || ':revs:%';
10 select * from store where key like 'pad:' || todelete.k || ':chats:%';
11 END LOOP;
12 END $$
13
14-- /nix/store/1i77431p6996lbyflpkb803zsiaj24kx-etherpad-lite-1.8.3/node_modules/ep_mypads/scripts/mypads-jobqueue-minion.js
15for toDelete in
16 select split_part(key, ':', 4) from store where key like 'mypads:jobqueue:deletePad:%'
17loop
18 select * from store where key in (select 'readonly2pad:' || split_part(value, '"', 2) from store where key = 'pad2readonly:' || toDelete);
19 select * from store where key = 'pad2readonly:' || toDelete;
20 select * from store where key like 'pad:' || toDelete || ':revs:%';
21 select * from store where key like 'pad:' || toDelete || ':chats:%';
22end loop
23--select * from store where key in (select 'pad2readonly:' || split_part(key, ':', 4) from store where key like 'mypads:jobqueue:deletePad:%');
24--
25--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:%'))
26--delete from store where key in (select 'pad2readonly:' || split_part(key, ':', 4) from store where key like 'mypads:jobqueue:deletePad:%');
27--delete from store where key like any(select 'pad:' || split_part(key, ':', 4) || ':revs:%' from store where key like 'mypads:jobqueue:deletePad:%');
28--delete from store where key like any(select 'pad:' || split_part(key, ':', 4) || ':chats:%' from store where key like 'mypads:jobqueue:deletePad:%');
29--delete from store where key like 'mypads:jobqueue:deletePad:%';
30
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 @@
1{
2 "nodes": {
3 "etherpad-lite": {
4 "flake": false,
5 "locked": {
6 "lastModified": 1587951095,
7 "narHash": "sha256-PjAkvkC7tJzRECUqOvuWfoZTz8QqDXk6oXEN3ig24rQ=",
8 "owner": "ether",
9 "repo": "etherpad-lite",
10 "rev": "62101147a0c3495dc80daa87ab53a3366321a205",
11 "type": "github"
12 },
13 "original": {
14 "owner": "ether",
15 "ref": "1.8.3",
16 "repo": "etherpad-lite",
17 "type": "github"
18 }
19 },
20 "flake-parts": {
21 "inputs": {
22 "nixpkgs-lib": "nixpkgs-lib"
23 },
24 "locked": {
25 "lastModified": 1675295133,
26 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
27 "owner": "hercules-ci",
28 "repo": "flake-parts",
29 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
30 "type": "github"
31 },
32 "original": {
33 "owner": "hercules-ci",
34 "repo": "flake-parts",
35 "type": "github"
36 }
37 },
38 "flake-utils": {
39 "locked": {
40 "lastModified": 1648297722,
41 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
42 "owner": "numtide",
43 "repo": "flake-utils",
44 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
45 "type": "github"
46 },
47 "original": {
48 "owner": "numtide",
49 "repo": "flake-utils",
50 "type": "github"
51 }
52 },
53 "mypackages": {
54 "inputs": {
55 "flake-parts": "flake-parts",
56 "nixpkgs": "nixpkgs",
57 "webapps-ttrss": "webapps-ttrss"
58 },
59 "locked": {
60 "lastModified": 1,
61 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
62 "path": "../mypackages",
63 "type": "path"
64 },
65 "original": {
66 "path": "../mypackages",
67 "type": "path"
68 }
69 },
70 "nixpkgs": {
71 "locked": {
72 "lastModified": 1646497237,
73 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
74 "owner": "nixos",
75 "repo": "nixpkgs",
76 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
77 "type": "github"
78 },
79 "original": {
80 "owner": "nixos",
81 "repo": "nixpkgs",
82 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
83 "type": "github"
84 }
85 },
86 "nixpkgs-lib": {
87 "locked": {
88 "dir": "lib",
89 "lastModified": 1675183161,
90 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
91 "owner": "NixOS",
92 "repo": "nixpkgs",
93 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
94 "type": "github"
95 },
96 "original": {
97 "dir": "lib",
98 "owner": "NixOS",
99 "ref": "nixos-unstable",
100 "repo": "nixpkgs",
101 "type": "github"
102 }
103 },
104 "nixpkgs_2": {
105 "flake": false,
106 "locked": {
107 "lastModified": 1596265691,
108 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
109 "owner": "NixOS",
110 "repo": "nixpkgs",
111 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
112 "type": "github"
113 },
114 "original": {
115 "owner": "NixOS",
116 "repo": "nixpkgs",
117 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
118 "type": "github"
119 }
120 },
121 "root": {
122 "inputs": {
123 "etherpad-lite": "etherpad-lite",
124 "flake-utils": "flake-utils",
125 "mypackages": "mypackages",
126 "nixpkgs": "nixpkgs_2"
127 }
128 },
129 "webapps-ttrss": {
130 "flake": false,
131 "locked": {
132 "lastModified": 1546759381,
133 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
134 "ref": "master",
135 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
136 "revCount": 9256,
137 "type": "git",
138 "url": "https://git.tt-rss.org/fox/tt-rss.git"
139 },
140 "original": {
141 "ref": "master",
142 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
143 "type": "git",
144 "url": "https://git.tt-rss.org/fox/tt-rss.git"
145 }
146 }
147 },
148 "root": "root",
149 "version": 7
150}
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 @@
1{
2 description = "Your self-hosted, globally interconnected microblogging community";
3 inputs.flake-utils.url = "github:numtide/flake-utils";
4 inputs.nixpkgs = {
5 url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
6 flake = false;
7 };
8 inputs.etherpad-lite = {
9 url = "github:ether/etherpad-lite/1.8.3";
10 flake = false;
11 };
12 inputs.mypackages.url = "path:../mypackages";
13
14 outputs = { self, nixpkgs, etherpad-lite, flake-utils, mypackages }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
15 let
16 pkgs = import nixpkgs { inherit system; overlays = []; };
17 version = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.etherpad-lite.original.ref;
18 inherit (pkgs) callPackage;
19 in rec {
20 packages.etherpad-lite = callPackage ./. { inherit (mypackages.mylibs) nodeEnv; src = etherpad-lite // { inherit version; }; };
21 defaultPackage = packages.etherpad-lite;
22 legacyPackages.etherpad-lite = packages.etherpad-lite;
23 checks = {
24 build = defaultPackage;
25 };
26 }
27 ) // rec {
28 overlays = {
29 etherpad-lite = final: prev: {
30 etherpad-lite = self.defaultPackage."${final.system}";
31 };
32 };
33 overlay = overlays.etherpad-lite;
34 nixosModule = { lib, pkgs, config, ... }:
35 let
36 name = "etherpad-lite";
37 cfg = config.services.etherpad-lite;
38 in
39 {
40 options.services.etherpad-lite = {
41 enable = lib.mkEnableOption "Enable Etherpad lite’s service";
42 user = lib.mkOption {
43 type = lib.types.str;
44 default = name;
45 description = "User account under which Etherpad lite runs";
46 };
47 group = lib.mkOption {
48 type = lib.types.str;
49 default = name;
50 description = "Group under which Etherpad lite runs";
51 };
52 dataDir = lib.mkOption {
53 type = lib.types.path;
54 default = "/var/lib/${name}";
55 description = ''
56 The directory where Etherpad lite stores its data.
57 '';
58 };
59 socketsDir = lib.mkOption {
60 type = lib.types.path;
61 default = "/run/${name}";
62 description = ''
63 The directory where Etherpad lite stores its sockets.
64 '';
65 };
66 configFile = lib.mkOption {
67 type = lib.types.path;
68 description = ''
69 The config file path for Etherpad lite.
70 '';
71 };
72 sessionKeyFile = lib.mkOption {
73 type = lib.types.path;
74 description = ''
75 The Session key file path for Etherpad lite.
76 '';
77 };
78 apiKeyFile = lib.mkOption {
79 type = lib.types.path;
80 description = ''
81 The API key file path for Etherpad lite.
82 '';
83 };
84 package = lib.mkOption {
85 type = lib.types.package;
86 default = pkgs.etherpad-lite;
87 description = ''
88 Etherpad lite package to use.
89 '';
90 example = lib.literalExample ''
91 pkgs.webapps.etherpad-lite.withModules (p: [ p.ep_align ]);
92 '';
93 };
94 modules = lib.mkOption {
95 type = lib.types.listOf lib.types.package;
96 default = [];
97 description = ''
98 Etherpad lite modules to use.
99 DEPRECATED: use package directly
100 '';
101 };
102 # Output variables
103 workdir = lib.mkOption {
104 type = lib.types.package;
105 default = cfg.package.withModules (_: cfg.modules);
106 description = ''
107 Adjusted Etherpad lite package with plugins
108 '';
109 readOnly = true;
110 };
111 systemdStateDirectory = lib.mkOption {
112 type = lib.types.str;
113 # Use ReadWritePaths= instead if varDir is outside of /var/lib
114 default = assert lib.strings.hasPrefix "/var/lib/" cfg.dataDir;
115 lib.strings.removePrefix "/var/lib/" cfg.dataDir;
116 description = ''
117 Adjusted Etherpad lite data directory for systemd
118 '';
119 readOnly = true;
120 };
121 systemdRuntimeDirectory = lib.mkOption {
122 type = lib.types.str;
123 # Use ReadWritePaths= instead if socketsDir is outside of /run
124 default = assert lib.strings.hasPrefix "/run/" cfg.socketsDir;
125 lib.strings.removePrefix "/run/" cfg.socketsDir;
126 description = ''
127 Adjusted Etherpad lite sockets directory for systemd
128 '';
129 readOnly = true;
130 };
131 sockets = lib.mkOption {
132 type = lib.types.attrsOf lib.types.path;
133 default = {
134 node = "${cfg.socketsDir}/etherpad-lite.sock";
135 };
136 readOnly = true;
137 description = ''
138 Etherpad lite sockets
139 '';
140 };
141 };
142
143 config = lib.mkIf cfg.enable {
144 nixpkgs.overlays = [ self.overlay ];
145 systemd.services.etherpad-lite-cleanup = {
146 description = "Etherpad-lite cleanup old mypads";
147 after = [ "network.target" "postgresql.service" ];
148 wants = [ "postgresql.service" ];
149
150 environment.NODE_ENV = "production";
151 environment.HOME = cfg.workdir;
152
153 path = [ cfg.workdir.nodejs ];
154
155 script = ''
156 exec ${cfg.workdir.nodejs}/bin/node ${cfg.workdir}/node_modules/ep_mypads/scripts/mypads-jobqueue-minion.js \
157 --settings ${cfg.configFile} \
158 --oneshot
159 '';
160
161 serviceConfig = {
162 DynamicUser = true;
163 User = cfg.user;
164 Group = cfg.group;
165 WorkingDirectory = "%T";
166 PrivateTmp = true;
167 NoNewPrivileges = true;
168 PrivateDevices = true;
169 ProtectHome = true;
170 ProtectControlGroups = true;
171 ProtectKernelModules = true;
172 Type = "oneshot";
173 };
174 };
175 systemd.services.etherpad-lite = {
176 description = "Etherpad-lite";
177 wantedBy = [ "multi-user.target" ];
178 after = [ "network.target" "postgresql.service" ];
179 wants = [ "postgresql.service" ];
180
181 environment.NODE_ENV = "production";
182 environment.HOME = cfg.workdir;
183
184 path = [ cfg.workdir.nodejs ];
185
186 script = ''
187 exec ${cfg.workdir.nodejs}/bin/node ${cfg.workdir}/src/node/server.js \
188 --sessionkey ${cfg.sessionKeyFile} \
189 --apikey ${cfg.apiKeyFile} \
190 --settings ${cfg.configFile}
191 '';
192
193 postStart = ''
194 while [ ! -S ${cfg.sockets.node} ]; do
195 sleep 0.5
196 done
197 chmod a+w ${cfg.sockets.node}
198 '';
199 serviceConfig = {
200 DynamicUser = true;
201 User = cfg.user;
202 Group = cfg.group;
203 WorkingDirectory = cfg.workdir;
204 PrivateTmp = true;
205 NoNewPrivileges = true;
206 PrivateDevices = true;
207 ProtectHome = true;
208 ProtectControlGroups = true;
209 ProtectKernelModules = true;
210 Restart = "always";
211 Type = "simple";
212 TimeoutSec = 60;
213 RuntimeDirectory = cfg.systemdRuntimeDirectory;
214 StateDirectory= cfg.systemdStateDirectory;
215 ExecStartPre = [
216 "+${pkgs.coreutils}/bin/install -d -m 0755 -o ${cfg.user} -g ${cfg.group} ${cfg.dataDir}/var ${cfg.dataDir}/ep_initialized"
217 "+${pkgs.coreutils}/bin/chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir} ${cfg.configFile} ${cfg.sessionKeyFile} ${cfg.apiKeyFile}"
218 ];
219 };
220 };
221
222 };
223 };
224 };
225}
226
227
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 @@
1diff --git a/src/node/utils/LibreOffice.js b/src/node/utils/LibreOffice.js
2index 267f7a0c..10518577 100644
3--- a/src/node/utils/LibreOffice.js
4+++ b/src/node/utils/LibreOffice.js
5@@ -78,6 +78,7 @@ function doConvertTask(task, callback) {
6 '--invisible',
7 '--nologo',
8 '--nolockcheck',
9+ '-env:UserInstallation=file:///tmp/',
10 '--writer',
11 '--convert-to', task.type,
12 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 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_aa_file_menu_toolbar = nodeEnv.buildNodePackage {
10 name = "ep_aa_file_menu_toolbar";
11 packageName = "ep_aa_file_menu_toolbar";
12 version = "0.1.6";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_aa_file_menu_toolbar/-/ep_aa_file_menu_toolbar-0.1.6.tgz";
15 sha1 = "aaa374d9429c9b2382311fab69e0ff819b53b7b0";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "File / Menu style toolbar";
20 homepage = https://github.com/JohnMcLear/ep_file_menu_toolbar;
21 };
22 production = true;
23 bypassCache = true;
24 reconstructLock = true;
25 };
26} \ 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 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_adminpads = nodeEnv.buildNodePackage {
10 name = "ep_adminpads";
11 packageName = "ep_adminpads";
12 version = "0.0.12";
13 src = fetchurl {
14 url = "https://github.com/spcsser/ep_adminpads/archive/master.tar.gz";
15 sha1 = "49ypihbwxmd97g813aq2rjwh7pq1y08a";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "Gives the ability to list and administrate all pads on admin page";
20 homepage = "https://github.com/spcsser/ep_adminpads#readme";
21 license = "MIT";
22 };
23 production = true;
24 bypassCache = true;
25 reconstructLock = true;
26 };
27}
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 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_align = nodeEnv.buildNodePackage {
10 name = "ep_align";
11 packageName = "ep_align";
12 version = "0.2.0";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_align/-/ep_align-0.2.0.tgz";
15 sha512 = "bMrwsieCfz3LkxuIXiNu7UKkUQ7b+ceI09XRd1cCMskDwuJow3N3hB4/gecqfF+v4lS0qmDEa7bJvSTrhHiXBQ==";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "Add Left/Center/Right/Justify to lines of text in a pad";
20 homepage = "https://github.com/johnmclear/ep_align#readme";
21 };
22 production = true;
23 bypassCache = true;
24 reconstructLock = true;
25 };
26} \ 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 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_bookmark = nodeEnv.buildNodePackage {
10 name = "ep_bookmark";
11 packageName = "ep_bookmark";
12 version = "1.2.0";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_bookmark/-/ep_bookmark-1.2.0.tgz";
15 sha512 = "sHTXIKui1l+PxeBtzlwSvRg8TZ8w9PE5aaxTg5b/siwNmprXeoiL6ZUiOTGmp18yLXs1ltJ2BzSqJX57pjGVWg==";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "Etherpad plugin for users to save a list of bookmarks of their visited pads locally in the browser's local storage";
20 homepage = "https://github.com/Gared/ep_bookmark#readme";
21 };
22 production = true;
23 bypassCache = true;
24 reconstructLock = true;
25 };
26} \ 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 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_clear_formatting = nodeEnv.buildNodePackage {
10 name = "ep_clear_formatting";
11 packageName = "ep_clear_formatting";
12 version = "0.0.2";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_clear_formatting/-/ep_clear_formatting-0.0.2.tgz";
15 sha1 = "b16970b9c6be01246d23cb5a81777aa220d06fc4";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "Clear formatting on a selection, this plugin requires the file menu";
20 };
21 production = true;
22 bypassCache = true;
23 reconstructLock = true;
24 };
25} \ 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 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_colors = nodeEnv.buildNodePackage {
10 name = "ep_colors";
11 packageName = "ep_colors";
12 version = "0.0.3";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_colors/-/ep_colors-0.0.3.tgz";
15 sha1 = "aa95e1b12e009ed6b05d0ccb188ca4829e799780";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "add colors to the etherpad";
20 };
21 production = true;
22 bypassCache = true;
23 reconstructLock = true;
24 };
25} \ 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 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {
7 "after-0.8.2" = {
8 name = "after";
9 packageName = "after";
10 version = "0.8.2";
11 src = fetchurl {
12 url = "https://registry.npmjs.org/after/-/after-0.8.2.tgz";
13 sha1 = "fedb394f9f0e02aa9768e702bda23b505fae7e1f";
14 };
15 };
16 "arraybuffer.slice-0.0.7" = {
17 name = "arraybuffer.slice";
18 packageName = "arraybuffer.slice";
19 version = "0.0.7";
20 src = fetchurl {
21 url = "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz";
22 sha512 = "wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==";
23 };
24 };
25 "async-limiter-1.0.1" = {
26 name = "async-limiter";
27 packageName = "async-limiter";
28 version = "1.0.1";
29 src = fetchurl {
30 url = "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz";
31 sha512 = "csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==";
32 };
33 };
34 "backo2-1.0.2" = {
35 name = "backo2";
36 packageName = "backo2";
37 version = "1.0.2";
38 src = fetchurl {
39 url = "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz";
40 sha1 = "31ab1ac8b129363463e35b3ebb69f4dfcfba7947";
41 };
42 };
43 "base64-arraybuffer-0.1.5" = {
44 name = "base64-arraybuffer";
45 packageName = "base64-arraybuffer";
46 version = "0.1.5";
47 src = fetchurl {
48 url = "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz";
49 sha1 = "73926771923b5a19747ad666aa5cd4bf9c6e9ce8";
50 };
51 };
52 "better-assert-1.0.2" = {
53 name = "better-assert";
54 packageName = "better-assert";
55 version = "1.0.2";
56 src = fetchurl {
57 url = "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz";
58 sha1 = "40866b9e1b9e0b55b481894311e68faffaebc522";
59 };
60 };
61 "blob-0.0.5" = {
62 name = "blob";
63 packageName = "blob";
64 version = "0.0.5";
65 src = fetchurl {
66 url = "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz";
67 sha512 = "gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==";
68 };
69 };
70 "callsite-1.0.0" = {
71 name = "callsite";
72 packageName = "callsite";
73 version = "1.0.0";
74 src = fetchurl {
75 url = "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz";
76 sha1 = "280398e5d664bd74038b6f0905153e6e8af1bc20";
77 };
78 };
79 "component-bind-1.0.0" = {
80 name = "component-bind";
81 packageName = "component-bind";
82 version = "1.0.0";
83 src = fetchurl {
84 url = "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz";
85 sha1 = "00c608ab7dcd93897c0009651b1d3a8e1e73bbd1";
86 };
87 };
88 "component-emitter-1.2.1" = {
89 name = "component-emitter";
90 packageName = "component-emitter";
91 version = "1.2.1";
92 src = fetchurl {
93 url = "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz";
94 sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6";
95 };
96 };
97 "component-inherit-0.0.3" = {
98 name = "component-inherit";
99 packageName = "component-inherit";
100 version = "0.0.3";
101 src = fetchurl {
102 url = "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz";
103 sha1 = "645fc4adf58b72b649d5cae65135619db26ff143";
104 };
105 };
106 "debug-3.1.0" = {
107 name = "debug";
108 packageName = "debug";
109 version = "3.1.0";
110 src = fetchurl {
111 url = "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz";
112 sha512 = "OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==";
113 };
114 };
115 "debug-4.1.1" = {
116 name = "debug";
117 packageName = "debug";
118 version = "4.1.1";
119 src = fetchurl {
120 url = "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz";
121 sha512 = "pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==";
122 };
123 };
124 "engine.io-client-3.4.1" = {
125 name = "engine.io-client";
126 packageName = "engine.io-client";
127 version = "3.4.1";
128 src = fetchurl {
129 url = "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.1.tgz";
130 sha512 = "RJNmA+A9Js+8Aoq815xpGAsgWH1VoSYM//2VgIiu9lNOaHFfLpTjH4tOzktBpjIs5lvOfiNY1dwf+NuU6D38Mw==";
131 };
132 };
133 "engine.io-parser-2.2.0" = {
134 name = "engine.io-parser";
135 packageName = "engine.io-parser";
136 version = "2.2.0";
137 src = fetchurl {
138 url = "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz";
139 sha512 = "6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==";
140 };
141 };
142 "formidable-1.2.2" = {
143 name = "formidable";
144 packageName = "formidable";
145 version = "1.2.2";
146 src = fetchurl {
147 url = "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz";
148 sha512 = "V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==";
149 };
150 };
151 "has-binary2-1.0.3" = {
152 name = "has-binary2";
153 packageName = "has-binary2";
154 version = "1.0.3";
155 src = fetchurl {
156 url = "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz";
157 sha512 = "G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==";
158 };
159 };
160 "has-cors-1.1.0" = {
161 name = "has-cors";
162 packageName = "has-cors";
163 version = "1.1.0";
164 src = fetchurl {
165 url = "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz";
166 sha1 = "5e474793f7ea9843d1bb99c23eef49ff126fff39";
167 };
168 };
169 "indexof-0.0.1" = {
170 name = "indexof";
171 packageName = "indexof";
172 version = "0.0.1";
173 src = fetchurl {
174 url = "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz";
175 sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
176 };
177 };
178 "isarray-2.0.1" = {
179 name = "isarray";
180 packageName = "isarray";
181 version = "2.0.1";
182 src = fetchurl {
183 url = "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz";
184 sha1 = "a37d94ed9cda2d59865c9f76fe596ee1f338741e";
185 };
186 };
187 "ms-2.0.0" = {
188 name = "ms";
189 packageName = "ms";
190 version = "2.0.0";
191 src = fetchurl {
192 url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
193 sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
194 };
195 };
196 "ms-2.1.2" = {
197 name = "ms";
198 packageName = "ms";
199 version = "2.1.2";
200 src = fetchurl {
201 url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
202 sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
203 };
204 };
205 "object-component-0.0.3" = {
206 name = "object-component";
207 packageName = "object-component";
208 version = "0.0.3";
209 src = fetchurl {
210 url = "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz";
211 sha1 = "f0c69aa50efc95b866c186f400a33769cb2f1291";
212 };
213 };
214 "parseqs-0.0.5" = {
215 name = "parseqs";
216 packageName = "parseqs";
217 version = "0.0.5";
218 src = fetchurl {
219 url = "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz";
220 sha1 = "d5208a3738e46766e291ba2ea173684921a8b89d";
221 };
222 };
223 "parseuri-0.0.5" = {
224 name = "parseuri";
225 packageName = "parseuri";
226 version = "0.0.5";
227 src = fetchurl {
228 url = "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz";
229 sha1 = "80204a50d4dbb779bfdc6ebe2778d90e4bce320a";
230 };
231 };
232 "socket.io-client-2.3.0" = {
233 name = "socket.io-client";
234 packageName = "socket.io-client";
235 version = "2.3.0";
236 src = fetchurl {
237 url = "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz";
238 sha512 = "cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==";
239 };
240 };
241 "socket.io-parser-3.3.0" = {
242 name = "socket.io-parser";
243 packageName = "socket.io-parser";
244 version = "3.3.0";
245 src = fetchurl {
246 url = "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz";
247 sha512 = "hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==";
248 };
249 };
250 "to-array-0.1.4" = {
251 name = "to-array";
252 packageName = "to-array";
253 version = "0.1.4";
254 src = fetchurl {
255 url = "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz";
256 sha1 = "17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890";
257 };
258 };
259 "ws-6.1.4" = {
260 name = "ws";
261 packageName = "ws";
262 version = "6.1.4";
263 src = fetchurl {
264 url = "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz";
265 sha512 = "eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==";
266 };
267 };
268 "xmlhttprequest-ssl-1.5.5" = {
269 name = "xmlhttprequest-ssl";
270 packageName = "xmlhttprequest-ssl";
271 version = "1.5.5";
272 src = fetchurl {
273 url = "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz";
274 sha1 = "c2876b06168aadc40e57d97e81191ac8f4398b3e";
275 };
276 };
277 "yeast-0.1.2" = {
278 name = "yeast";
279 packageName = "yeast";
280 version = "0.1.2";
281 src = fetchurl {
282 url = "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz";
283 sha1 = "008e06d8094320c372dbc2f8ed76a0ca6c8ac419";
284 };
285 };
286 };
287in
288{
289 ep_comments_page = nodeEnv.buildNodePackage {
290 name = "ep_comments_page";
291 packageName = "ep_comments_page";
292 version = "0.1.0";
293 src = fetchurl {
294 url = "https://registry.npmjs.org/ep_comments_page/-/ep_comments_page-0.1.0.tgz";
295 sha512 = "aHUfyR3HZ677wgL1hJEeaa1yIabW3PjaFXHhWnlEXdIDXL3WmgkGQ4Y1ccHp057EmquCwNb595HADQO+QUK/lw==";
296 };
297 dependencies = [
298 sources."after-0.8.2"
299 sources."arraybuffer.slice-0.0.7"
300 sources."async-limiter-1.0.1"
301 sources."backo2-1.0.2"
302 sources."base64-arraybuffer-0.1.5"
303 sources."better-assert-1.0.2"
304 sources."blob-0.0.5"
305 sources."callsite-1.0.0"
306 sources."component-bind-1.0.0"
307 sources."component-emitter-1.2.1"
308 sources."component-inherit-0.0.3"
309 sources."debug-4.1.1"
310 sources."engine.io-client-3.4.1"
311 sources."engine.io-parser-2.2.0"
312 sources."formidable-1.2.2"
313 sources."has-binary2-1.0.3"
314 sources."has-cors-1.1.0"
315 sources."indexof-0.0.1"
316 sources."isarray-2.0.1"
317 sources."ms-2.1.2"
318 sources."object-component-0.0.3"
319 sources."parseqs-0.0.5"
320 sources."parseuri-0.0.5"
321 sources."socket.io-client-2.3.0"
322 (sources."socket.io-parser-3.3.0" // {
323 dependencies = [
324 sources."debug-3.1.0"
325 sources."ms-2.0.0"
326 ];
327 })
328 sources."to-array-0.1.4"
329 sources."ws-6.1.4"
330 sources."xmlhttprequest-ssl-1.5.5"
331 sources."yeast-0.1.2"
332 ];
333 buildInputs = globalBuildInputs;
334 meta = {
335 description = "Adds comments on sidebar and link it to the text. Support for Page View, requires ep_page_view";
336 homepage = "https://github.com/ether/ep_comments#readme";
337 };
338 production = true;
339 bypassCache = true;
340 reconstructLock = true;
341 };
342} \ 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 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_copy_paste_select_all = nodeEnv.buildNodePackage {
10 name = "ep_copy_paste_select_all";
11 packageName = "ep_copy_paste_select_all";
12 version = "0.0.4";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_copy_paste_select_all/-/ep_copy_paste_select_all-0.0.4.tgz";
15 sha1 = "41b89ece9da8e549a7ca4b11cdfa0a27344f21c8";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "Add support to do Copy, Paste, Select All and Find and Replace, this plugin requires the file menu";
20 homepage = https://github.com/ether/ep_copy_paste_select_all;
21 };
22 production = true;
23 bypassCache = true;
24 reconstructLock = true;
25 };
26} \ 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 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_cursortrace = nodeEnv.buildNodePackage {
10 name = "ep_cursortrace";
11 packageName = "ep_cursortrace";
12 version = "2.0.15";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_cursortrace/-/ep_cursortrace-2.0.15.tgz";
15 sha1 = "fa374f2d4be2708af998fbb407633c55d9031326";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "Show cursor/caret movements of other users in real time";
20 homepage = https://github.com/redhog/ep_cursortrace;
21 };
22 production = true;
23 bypassCache = true;
24 reconstructLock = true;
25 };
26} \ 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 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_delete_empty_pads = nodeEnv.buildNodePackage {
10 name = "ep_delete_empty_pads";
11 packageName = "ep_delete_empty_pads";
12 version = "0.0.6";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_delete_empty_pads/-/ep_delete_empty_pads-0.0.6.tgz";
15 sha512 = "ZpVKhWYUBAz5jWXT4Ldjraa5oAmOmOiSaNUSVOdVEG7DLeoNaTrjSQx0KZl4EjF1Qp/oUQwX69ryjY0assmdrw==";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "Delete pads which were never edited";
20 license = "Apache-2.0";
21 };
22 production = true;
23 bypassCache = true;
24 reconstructLock = true;
25 };
26} \ 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 @@
1diff --git a/ep.json b/ep.json
2index 083d484..6803475 100644
3--- a/ep.json
4+++ b/ep.json
5@@ -5,6 +5,7 @@
6 "hooks": {
7 "eejsBlock_editbarMenuLeft": "ep_embedmedia/hooks:eejsBlock_editbarMenuLeft",
8 "eejsBlock_scripts": "ep_embedmedia/hooks:eejsBlock_scripts",
9+ "eejsBlock_timesliderBody": "ep_embedmedia/hooks:eejsBlock_scripts",
10 "eejsBlock_styles": "ep_embedmedia/hooks:eejsBlock_styles",
11 "eejsBlock_body": "ep_embedmedia/hooks:eejsBlock_body"
12 },
13diff --git a/static/css/main.css b/static/css/main.css
14index 72a460f..3b66d8e 100644
15--- a/static/css/main.css
16+++ b/static/css/main.css
17@@ -6,10 +6,18 @@
18 z-index:999999;
19 }
20
21+#embedMediaSrc {
22+ max-width: 100%;
23+}
24+
25 .embedMediaButton {
26 padding:10px;
27 }
28
29+#doEmbedMedia{
30+ color:blue;
31+}
32+
33 #cancelEmbedMedia{
34 color:red;
35 }
36@@ -19,6 +27,6 @@
37 }
38
39 .buttonicon-embed-media:before{
40- content:"\e80b";
41+ content:"\e83b";
42 top: 2px !important;
43 }
44diff --git a/static/js/main.js b/static/js/main.js
45index 8c94767..19415d5 100644
46--- a/static/js/main.js
47+++ b/static/js/main.js
48@@ -10,22 +10,25 @@ $(document).ready(function () {
49 } else {
50 module.slideDown("fast");
51 }
52+ module.toggleClass("popup-show");
53 });
54
55 $("#doEmbedMedia").click(function () {
56 var padeditor = require('ep_etherpad-lite/static/js/pad_editor').padeditor;
57
58 $("#embedMediaModal").slideUp("fast");
59+ $("#embedMediaModal").removeClass("popup-show");
60
61 return padeditor.ace.callWithAce(function (ace) {
62- rep = ace.ace_getRep();
63+ var rep = ace.ace_getRep();
64 ace.ace_replaceRange(rep.selStart, rep.selEnd, "E");
65 ace.ace_performSelectionChange([rep.selStart[0],rep.selStart[1]-1], rep.selStart, false);
66- ace.ace_performDocumentApplyAttributesToRange(rep.selStart, rep.selEnd, [["embedMedia", escape($("#embedMediaSrc")[0].value)]]);
67+ ace.ace_performDocumentApplyAttributesToRange(rep.selStart, rep.selEnd, [["embedMedia", escape($("#embedMediaSrc")[0].value)]]);
68 }, "embedMedia");
69 });
70
71 $("#cancelEmbedMedia").click(function () {
72 $("#embedMediaModal").slideUp("fast");
73+ $("#embedMediaModal").removeClass("popup-show");
74 });
75 });
76diff --git a/templates/modals.ejs b/templates/modals.ejs
77index 9340698..8915a3b 100644
78--- a/templates/modals.ejs
79+++ b/templates/modals.ejs
80@@ -1,4 +1,4 @@
81-<div id="embedMediaModal" class="popup">
82+<div id="embedMediaModal" class="popup popup-content">
83 <% e.begin_block("embedMediaPopup"); %>
84 <h1>Embed media into this pad</h1>
85 <p>Paste a link or "embed code" here:</p>
diff --git a/flakes/etherpad-lite/modules/ep_embedmedia/node-packages.json b/flakes/etherpad-lite/modules/ep_embedmedia/node-packages.json
new file mode 100644
index 0000000..e4961d3
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_embedmedia/node-packages.json
@@ -0,0 +1 @@
[ "ep_embedmedia" ]
diff --git a/flakes/etherpad-lite/modules/ep_embedmedia/node-packages.nix b/flakes/etherpad-lite/modules/ep_embedmedia/node-packages.nix
new file mode 100644
index 0000000..80ba484
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_embedmedia/node-packages.nix
@@ -0,0 +1,29 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_embedmedia = nodeEnv.buildNodePackage {
10 name = "ep_embedmedia";
11 packageName = "ep_embedmedia";
12 version = "0.0.4";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_embedmedia/-/ep_embedmedia-0.0.4.tgz";
15 sha1 = "b24bf0fe9702d21aa73079890e93183efc6a0975";
16 };
17 buildInputs = globalBuildInputs;
18 preRebuild = ''
19 patch -p1 < ${./fix.patch}
20 '';
21 meta = {
22 description = "Embed media (youtube, vimeo etc)";
23 homepage = https://github.com/JohnMcLear/ep_embedmedia;
24 };
25 production = true;
26 bypassCache = true;
27 reconstructLock = true;
28 };
29}
diff --git a/flakes/etherpad-lite/modules/ep_font_family/node-packages.json b/flakes/etherpad-lite/modules/ep_font_family/node-packages.json
new file mode 100644
index 0000000..a719a45
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_font_family/node-packages.json
@@ -0,0 +1 @@
[ "ep_font_family" ]
diff --git a/flakes/etherpad-lite/modules/ep_font_family/node-packages.nix b/flakes/etherpad-lite/modules/ep_font_family/node-packages.nix
new file mode 100644
index 0000000..c64f0cb
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_font_family/node-packages.nix
@@ -0,0 +1,27 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_font_family = nodeEnv.buildNodePackage {
10 name = "ep_font_family";
11 packageName = "ep_font_family";
12 version = "0.2.7";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_font_family/-/ep_font_family-0.2.7.tgz";
15 sha1 = "a31c06b1684c7fd65c1d5bf96bcf99b6faa79893";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "Add support for different Fonts";
20 homepage = https://github.com/JohnMcLear/ep_font_family;
21 license = "Apache-2.0";
22 };
23 production = true;
24 bypassCache = true;
25 reconstructLock = true;
26 };
27} \ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_font_size/node-packages.json b/flakes/etherpad-lite/modules/ep_font_size/node-packages.json
new file mode 100644
index 0000000..472df3b
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_font_size/node-packages.json
@@ -0,0 +1 @@
[ "ep_font_size" ]
diff --git a/flakes/etherpad-lite/modules/ep_font_size/node-packages.nix b/flakes/etherpad-lite/modules/ep_font_size/node-packages.nix
new file mode 100644
index 0000000..06b69f9
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_font_size/node-packages.nix
@@ -0,0 +1,27 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_font_size = nodeEnv.buildNodePackage {
10 name = "ep_font_size";
11 packageName = "ep_font_size";
12 version = "0.2.0";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_font_size/-/ep_font_size-0.2.0.tgz";
15 sha512 = "63D+PoWgXY/DpqS3NGunFanIzCTF5js7rKD8R979b1daPRc/vI6To8HD69iknb5F3APC/G64g9BiRJIYNnIYmA==";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "Add support for Font Sizes";
20 homepage = "https://github.com/JohnMcLear/ep_font_size#readme";
21 license = "Apache-2.0";
22 };
23 production = true;
24 bypassCache = true;
25 reconstructLock = true;
26 };
27} \ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_headings2/node-packages.json b/flakes/etherpad-lite/modules/ep_headings2/node-packages.json
new file mode 100644
index 0000000..adbc268
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_headings2/node-packages.json
@@ -0,0 +1 @@
[ "ep_headings2" ]
diff --git a/flakes/etherpad-lite/modules/ep_headings2/node-packages.nix b/flakes/etherpad-lite/modules/ep_headings2/node-packages.nix
new file mode 100644
index 0000000..ba6392c
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_headings2/node-packages.nix
@@ -0,0 +1,26 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_headings2 = nodeEnv.buildNodePackage {
10 name = "ep_headings2";
11 packageName = "ep_headings2";
12 version = "0.1.1";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_headings2/-/ep_headings2-0.1.1.tgz";
15 sha512 = "DcHRUMzTsTFbTNH4wY43HI7LJ1Xk85J4Lv54fI5pVTXjqkfOC3p5CHoTWwmrCP288i4aMOcDP9Xru5qv/41vqQ==";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "Adds heading support to Etherpad Lite. Includes improved suppot for export, i18n etc.";
20 homepage = https://github.com/johnmclear/ep_headings2;
21 };
22 production = true;
23 bypassCache = true;
24 reconstructLock = true;
25 };
26} \ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_immae_buttons/ep.json b/flakes/etherpad-lite/modules/ep_immae_buttons/ep.json
new file mode 100644
index 0000000..10db4ef
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_immae_buttons/ep.json
@@ -0,0 +1,13 @@
1{
2 "parts": [
3 {
4 "name": "immae_buttons",
5 "hooks": {
6 "eejsBlock_editbarMenuLeft": "ep_immae_buttons/hooks:eejsBlock_editbarMenuLeft"
7 },
8 "client_hooks": {
9 "postAceInit": "ep_immae_buttons/static/js/main:postAceInit"
10 }
11 }
12 ]
13}
diff --git a/flakes/etherpad-lite/modules/ep_immae_buttons/hooks.js b/flakes/etherpad-lite/modules/ep_immae_buttons/hooks.js
new file mode 100644
index 0000000..dcf7782
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_immae_buttons/hooks.js
@@ -0,0 +1,6 @@
1var eejs = require('ep_etherpad-lite/node/eejs/');
2
3exports.eejsBlock_editbarMenuLeft = function (hook_name, args, cb) {
4 args.content = args.content + eejs.require("ep_immae_buttons/templates/editbarButtons.ejs");
5 return cb();
6}
diff --git a/flakes/etherpad-lite/modules/ep_immae_buttons/node-packages.nix b/flakes/etherpad-lite/modules/ep_immae_buttons/node-packages.nix
new file mode 100644
index 0000000..d7045df
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_immae_buttons/node-packages.nix
@@ -0,0 +1,22 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_immae_buttons = nodeEnv.buildNodePackage {
10 name = "ep_immae_buttons";
11 packageName = "ep_immae_buttons";
12 version = "0.1.0";
13 src = ./.;
14 buildInputs = globalBuildInputs;
15 meta = {
16 description = "Additional buttons (replacing clear_formatting and copy_paste_select_all)";
17 };
18 production = true;
19 bypassCache = true;
20 reconstructLock = true;
21 };
22}
diff --git a/flakes/etherpad-lite/modules/ep_immae_buttons/package.json b/flakes/etherpad-lite/modules/ep_immae_buttons/package.json
new file mode 100644
index 0000000..39bb0a8
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_immae_buttons/package.json
@@ -0,0 +1,10 @@
1{
2 "name": "ep_immae_buttons",
3 "description": "Additional buttons (replacing clear_formatting and copy_paste_select_all)",
4 "version": "0.1.0",
5 "author": "Immae",
6 "contributors": [],
7 "dependencies": { },
8 "repository" : { "type" : "git", "url" : "" },
9 "engines": { "node": "*" }
10}
diff --git a/flakes/etherpad-lite/modules/ep_immae_buttons/static/js/main.js b/flakes/etherpad-lite/modules/ep_immae_buttons/static/js/main.js
new file mode 100644
index 0000000..07f7b9c
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_immae_buttons/static/js/main.js
@@ -0,0 +1,67 @@
1exports.postAceInit = function(hook, context){
2 $(document).ready(function () {
3 $('.clearFormatting').click(function(){
4 context.ace.callWithAce(function(ace){
5
6 var rep = ace.ace_getRep(); // get the current user selection
7 var isSelection = (rep.selStart[0] !== rep.selEnd[0] || rep.selStart[1] !== rep.selEnd[1]);
8 if(!isSelection) return false; // No point proceeding if no selection..
9
10 var attrs = rep.apool.attribToNum; // get the attributes on this document
11 $.each(attrs, function(k, v){ // for each attribute
12 var attr = k.split(",")[0]; // get the name of the attribute
13 if(attr !== "author"){ // if its not an author attribute
14 ace.ace_setAttributeOnSelection(attr, false); // set the attribute to false
15 }
16 });
17 },'clearFormatting' , true);
18 });
19
20 $('.findAndReplace').click(function(){
21 var from = prompt("Search for...");
22 var to = prompt("Replace with...");
23 var HTMLLines = $('iframe[name="ace_outer"]').contents().find('iframe').contents().find("#innerdocbody").children("div");
24 $(HTMLLines).each(function(){ // For each line
25 findAndReplace(from, to, this);
26 });
27 });
28
29 });
30}
31
32function findAndReplace(searchText, replacement, searchNode) {
33 if (!searchText || typeof replacement === 'undefined') {
34 // Throw error here if you want...
35 return;
36 }
37 var regex = typeof searchText === 'string' ?
38 new RegExp(searchText, 'gi') : searchText,
39 childNodes = (searchNode || document.body).childNodes,
40 cnLength = childNodes.length,
41 excludes = ["html","head","style","title","meta","script","object","iframe","link"];
42
43 while (cnLength--) {
44 var currentNode = childNodes[cnLength];
45 if (currentNode.nodeType === 1){
46 if(excludes.indexOf(currentNode.nodeName.toLowerCase() === -1)){
47 arguments.callee(searchText, replacement, currentNode);
48 }
49 }
50 if (currentNode.nodeType !== 3 || !regex.test(currentNode.data) ) {
51 continue;
52 }
53 var parent = currentNode.parentNode,
54 frag = (function(){
55 var html = currentNode.data.replace(regex, replacement),
56 wrap = document.createElement('div'),
57 frag = document.createDocumentFragment();
58 wrap.innerHTML = html;
59 while (wrap.firstChild) {
60 frag.appendChild(wrap.firstChild);
61 }
62 return frag;
63 })();
64 parent.insertBefore(frag, currentNode);
65 parent.removeChild(currentNode);
66 }
67}
diff --git a/flakes/etherpad-lite/modules/ep_immae_buttons/templates/editbarButtons.ejs b/flakes/etherpad-lite/modules/ep_immae_buttons/templates/editbarButtons.ejs
new file mode 100644
index 0000000..339ae3d
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_immae_buttons/templates/editbarButtons.ejs
@@ -0,0 +1,12 @@
1<li class="separator"></li>
2<li class="clearFormatting">
3 <a title="Clear Formatting">
4 <span class="buttonicon buttonicon-clear-formatting">Clear</span>
5 </a>
6</li>
7<li class="separator"></li>
8<li class="findAndReplace">
9 <a title="Find and replace">
10 <span class="buttonicon buttonicon-find-replace">Find</span>
11 </a>
12</li>
diff --git a/flakes/etherpad-lite/modules/ep_ldapauth/node-packages.json b/flakes/etherpad-lite/modules/ep_ldapauth/node-packages.json
new file mode 100644
index 0000000..cacc12a
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_ldapauth/node-packages.json
@@ -0,0 +1 @@
[ "ep_ldapauth" ]
diff --git a/flakes/etherpad-lite/modules/ep_ldapauth/node-packages.nix b/flakes/etherpad-lite/modules/ep_ldapauth/node-packages.nix
new file mode 100644
index 0000000..8140187
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_ldapauth/node-packages.nix
@@ -0,0 +1,392 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {
7 "asn1-0.2.3" = {
8 name = "asn1";
9 packageName = "asn1";
10 version = "0.2.3";
11 src = fetchurl {
12 url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz";
13 sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
14 };
15 };
16 "assert-plus-0.1.5" = {
17 name = "assert-plus";
18 packageName = "assert-plus";
19 version = "0.1.5";
20 src = fetchurl {
21 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz";
22 sha1 = "ee74009413002d84cec7219c6ac811812e723160";
23 };
24 };
25 "assert-plus-1.0.0" = {
26 name = "assert-plus";
27 packageName = "assert-plus";
28 version = "1.0.0";
29 src = fetchurl {
30 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
31 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
32 };
33 };
34 "async-stacktrace-0.0.2" = {
35 name = "async-stacktrace";
36 packageName = "async-stacktrace";
37 version = "0.0.2";
38 src = fetchurl {
39 url = "https://registry.npmjs.org/async-stacktrace/-/async-stacktrace-0.0.2.tgz";
40 sha1 = "8bbb9787e3b38c836c729a7e9d7c08630db5d1ef";
41 };
42 };
43 "backoff-2.5.0" = {
44 name = "backoff";
45 packageName = "backoff";
46 version = "2.5.0";
47 src = fetchurl {
48 url = "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz";
49 sha1 = "f616eda9d3e4b66b8ca7fca79f695722c5f8e26f";
50 };
51 };
52 "balanced-match-1.0.0" = {
53 name = "balanced-match";
54 packageName = "balanced-match";
55 version = "1.0.0";
56 src = fetchurl {
57 url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
58 sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
59 };
60 };
61 "brace-expansion-1.1.11" = {
62 name = "brace-expansion";
63 packageName = "brace-expansion";
64 version = "1.1.11";
65 src = fetchurl {
66 url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
67 sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
68 };
69 };
70 "bunyan-1.8.12" = {
71 name = "bunyan";
72 packageName = "bunyan";
73 version = "1.8.12";
74 src = fetchurl {
75 url = "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz";
76 sha1 = "f150f0f6748abdd72aeae84f04403be2ef113797";
77 };
78 };
79 "concat-map-0.0.1" = {
80 name = "concat-map";
81 packageName = "concat-map";
82 version = "0.0.1";
83 src = fetchurl {
84 url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
85 sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
86 };
87 };
88 "core-util-is-1.0.2" = {
89 name = "core-util-is";
90 packageName = "core-util-is";
91 version = "1.0.2";
92 src = fetchurl {
93 url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
94 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
95 };
96 };
97 "dashdash-1.14.1" = {
98 name = "dashdash";
99 packageName = "dashdash";
100 version = "1.14.1";
101 src = fetchurl {
102 url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
103 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
104 };
105 };
106 "dtrace-provider-0.7.1" = {
107 name = "dtrace-provider";
108 packageName = "dtrace-provider";
109 version = "0.7.1";
110 src = fetchurl {
111 url = "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.7.1.tgz";
112 sha1 = "c06b308f2f10d5d5838aec9c571e5d588dc71d04";
113 };
114 };
115 "dtrace-provider-0.8.8" = {
116 name = "dtrace-provider";
117 packageName = "dtrace-provider";
118 version = "0.8.8";
119 src = fetchurl {
120 url = "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz";
121 sha512 = "b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==";
122 };
123 };
124 "extsprintf-1.2.0" = {
125 name = "extsprintf";
126 packageName = "extsprintf";
127 version = "1.2.0";
128 src = fetchurl {
129 url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz";
130 sha1 = "5ad946c22f5b32ba7f8cd7426711c6e8a3fc2529";
131 };
132 };
133 "glob-6.0.4" = {
134 name = "glob";
135 packageName = "glob";
136 version = "6.0.4";
137 src = fetchurl {
138 url = "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz";
139 sha1 = "0f08860f6a155127b2fadd4f9ce24b1aab6e4d22";
140 };
141 };
142 "inflight-1.0.6" = {
143 name = "inflight";
144 packageName = "inflight";
145 version = "1.0.6";
146 src = fetchurl {
147 url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
148 sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
149 };
150 };
151 "inherits-2.0.4" = {
152 name = "inherits";
153 packageName = "inherits";
154 version = "2.0.4";
155 src = fetchurl {
156 url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
157 sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
158 };
159 };
160 "ldap-filter-0.2.2" = {
161 name = "ldap-filter";
162 packageName = "ldap-filter";
163 version = "0.2.2";
164 src = fetchurl {
165 url = "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz";
166 sha1 = "f2b842be0b86da3352798505b31ebcae590d77d0";
167 };
168 };
169 "ldapjs-1.0.1" = {
170 name = "ldapjs";
171 packageName = "ldapjs";
172 version = "1.0.1";
173 src = fetchurl {
174 url = "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.1.tgz";
175 sha1 = "352b812ae74b0a8e96549a4b896060eee1b9a546";
176 };
177 };
178 "minimatch-3.0.4" = {
179 name = "minimatch";
180 packageName = "minimatch";
181 version = "3.0.4";
182 src = fetchurl {
183 url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
184 sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
185 };
186 };
187 "minimist-1.2.5" = {
188 name = "minimist";
189 packageName = "minimist";
190 version = "1.2.5";
191 src = fetchurl {
192 url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
193 sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
194 };
195 };
196 "mkdirp-0.5.5" = {
197 name = "mkdirp";
198 packageName = "mkdirp";
199 version = "0.5.5";
200 src = fetchurl {
201 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
202 sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
203 };
204 };
205 "moment-2.24.0" = {
206 name = "moment";
207 packageName = "moment";
208 version = "2.24.0";
209 src = fetchurl {
210 url = "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz";
211 sha512 = "bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==";
212 };
213 };
214 "mv-2.1.1" = {
215 name = "mv";
216 packageName = "mv";
217 version = "2.1.1";
218 src = fetchurl {
219 url = "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz";
220 sha1 = "ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2";
221 };
222 };
223 "nan-2.14.1" = {
224 name = "nan";
225 packageName = "nan";
226 version = "2.14.1";
227 src = fetchurl {
228 url = "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz";
229 sha512 = "isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==";
230 };
231 };
232 "ncp-2.0.0" = {
233 name = "ncp";
234 packageName = "ncp";
235 version = "2.0.0";
236 src = fetchurl {
237 url = "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz";
238 sha1 = "195a21d6c46e361d2fb1281ba38b91e9df7bdbb3";
239 };
240 };
241 "once-1.4.0" = {
242 name = "once";
243 packageName = "once";
244 version = "1.4.0";
245 src = fetchurl {
246 url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
247 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
248 };
249 };
250 "path-is-absolute-1.0.1" = {
251 name = "path-is-absolute";
252 packageName = "path-is-absolute";
253 version = "1.0.1";
254 src = fetchurl {
255 url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
256 sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
257 };
258 };
259 "precond-0.2.3" = {
260 name = "precond";
261 packageName = "precond";
262 version = "0.2.3";
263 src = fetchurl {
264 url = "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz";
265 sha1 = "aa9591bcaa24923f1e0f4849d240f47efc1075ac";
266 };
267 };
268 "rimraf-2.4.5" = {
269 name = "rimraf";
270 packageName = "rimraf";
271 version = "2.4.5";
272 src = fetchurl {
273 url = "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz";
274 sha1 = "ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da";
275 };
276 };
277 "safe-json-stringify-1.2.0" = {
278 name = "safe-json-stringify";
279 packageName = "safe-json-stringify";
280 version = "1.2.0";
281 src = fetchurl {
282 url = "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz";
283 sha512 = "gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==";
284 };
285 };
286 "vasync-1.6.4" = {
287 name = "vasync";
288 packageName = "vasync";
289 version = "1.6.4";
290 src = fetchurl {
291 url = "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz";
292 sha1 = "dfe93616ad0e7ae801b332a9d88bfc5cdc8e1d1f";
293 };
294 };
295 "verror-1.10.0" = {
296 name = "verror";
297 packageName = "verror";
298 version = "1.10.0";
299 src = fetchurl {
300 url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
301 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
302 };
303 };
304 "verror-1.6.0" = {
305 name = "verror";
306 packageName = "verror";
307 version = "1.6.0";
308 src = fetchurl {
309 url = "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz";
310 sha1 = "7d13b27b1facc2e2da90405eb5ea6e5bdd252ea5";
311 };
312 };
313 "wrappy-1.0.2" = {
314 name = "wrappy";
315 packageName = "wrappy";
316 version = "1.0.2";
317 src = fetchurl {
318 url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
319 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
320 };
321 };
322 };
323in
324{
325 ep_ldapauth = nodeEnv.buildNodePackage {
326 name = "ep_ldapauth";
327 packageName = "ep_ldapauth";
328 version = "0.3.0";
329 src = fetchurl {
330 url = "https://registry.npmjs.org/ep_ldapauth/-/ep_ldapauth-0.3.0.tgz";
331 sha1 = "8b34ea34b20ae97d53d753cc7d1f6f191800e3b0";
332 };
333 preRebuild = ''
334 sed -i -e 's/context.message.data.type == "USERINFO_UPDATE"/context.message.data.type == "USERINFO_UPDATE" \&\& context.req \&\& context.req.session \&\& typeof(context.req.session.user) !== "undefined"/g' ep_ldapauth.js
335 '';
336 dependencies = [
337 sources."asn1-0.2.3"
338 sources."assert-plus-1.0.0"
339 sources."async-stacktrace-0.0.2"
340 sources."backoff-2.5.0"
341 sources."balanced-match-1.0.0"
342 sources."brace-expansion-1.1.11"
343 (sources."bunyan-1.8.12" // {
344 dependencies = [
345 sources."dtrace-provider-0.8.8"
346 ];
347 })
348 sources."concat-map-0.0.1"
349 sources."core-util-is-1.0.2"
350 sources."dashdash-1.14.1"
351 sources."dtrace-provider-0.7.1"
352 sources."extsprintf-1.2.0"
353 sources."glob-6.0.4"
354 sources."inflight-1.0.6"
355 sources."inherits-2.0.4"
356 (sources."ldap-filter-0.2.2" // {
357 dependencies = [
358 sources."assert-plus-0.1.5"
359 ];
360 })
361 sources."ldapjs-1.0.1"
362 sources."minimatch-3.0.4"
363 sources."minimist-1.2.5"
364 sources."mkdirp-0.5.5"
365 sources."moment-2.24.0"
366 sources."mv-2.1.1"
367 sources."nan-2.14.1"
368 sources."ncp-2.0.0"
369 sources."once-1.4.0"
370 sources."path-is-absolute-1.0.1"
371 sources."precond-0.2.3"
372 sources."rimraf-2.4.5"
373 sources."safe-json-stringify-1.2.0"
374 (sources."vasync-1.6.4" // {
375 dependencies = [
376 sources."verror-1.6.0"
377 ];
378 })
379 sources."verror-1.10.0"
380 sources."wrappy-1.0.2"
381 ];
382 buildInputs = globalBuildInputs;
383 meta = {
384 description = "Hooks into etherpad lite auth to provide LDAP authentication.";
385 homepage = "https://github.com/tykeal/ep_ldapauth#readme";
386 license = "GPL-2.0";
387 };
388 production = true;
389 bypassCache = true;
390 reconstructLock = true;
391 };
392}
diff --git a/flakes/etherpad-lite/modules/ep_line_height/fix.patch b/flakes/etherpad-lite/modules/ep_line_height/fix.patch
new file mode 100644
index 0000000..ffd65f1
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_line_height/fix.patch
@@ -0,0 +1,30 @@
1diff --git a/static/js/index.js b/static/js/index.js
2index 1884571..c0490bf 100644
3--- a/static/js/index.js
4+++ b/static/js/index.js
5@@ -23,9 +23,6 @@ var postAceInit = function(hook, context){
6 $('.line-height-menu').hover(function(){
7 $('.submenu > .height-selection').attr('size', 4);
8 });
9- $('.line-height').click(function(){
10- $('.line-height-select').toggle();
11- });
12 };
13
14 exports.aceGetFilterStack = function(name, context){
15diff --git a/templates/editbarButtons.ejs b/templates/editbarButtons.ejs
16index 89a8aaa..8af258b 100644
17--- a/templates/editbarButtons.ejs
18+++ b/templates/editbarButtons.ejs
19@@ -1,10 +1,5 @@
20 <li class="separator acl-write"></li>
21-<li class="acl-write line-height">
22- <a title="line height">
23- <span class="buttonicon" style="background-image:url('../static/plugins/ep_line_height/static/img/icon.png');"></span>
24- </a>
25-</li>
26-<li class="line-height-select" class="acl-write" style="display:none;">
27+<li class="line-height-select" class="acl-write">
28 <select class="height-selection">
29 <option value="dummy" selected data-l10n-id="ep_line_height.height">Line Height</option>
30 <option value="1">1x</option>
diff --git a/flakes/etherpad-lite/modules/ep_line_height/node-packages.json b/flakes/etherpad-lite/modules/ep_line_height/node-packages.json
new file mode 100644
index 0000000..307c2e7
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_line_height/node-packages.json
@@ -0,0 +1 @@
[ "ep_line_height" ]
diff --git a/flakes/etherpad-lite/modules/ep_line_height/node-packages.nix b/flakes/etherpad-lite/modules/ep_line_height/node-packages.nix
new file mode 100644
index 0000000..d5d5c21
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_line_height/node-packages.nix
@@ -0,0 +1,28 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_line_height = nodeEnv.buildNodePackage {
10 name = "ep_line_height";
11 packageName = "ep_line_height";
12 version = "0.0.4";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_line_height/-/ep_line_height-0.0.4.tgz";
15 sha1 = "8afbb441e6d65db97d2335887f9352b10b5d22d2";
16 };
17 buildInputs = globalBuildInputs;
18 preRebuild = ''
19 patch -p1 < ${./fix.patch}
20 '';
21 meta = {
22 description = "Change the line height";
23 };
24 production = true;
25 bypassCache = true;
26 reconstructLock = true;
27 };
28}
diff --git a/flakes/etherpad-lite/modules/ep_markdown/node-packages.json b/flakes/etherpad-lite/modules/ep_markdown/node-packages.json
new file mode 100644
index 0000000..1c5526c
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_markdown/node-packages.json
@@ -0,0 +1 @@
[ "ep_markdown" ]
diff --git a/flakes/etherpad-lite/modules/ep_markdown/node-packages.nix b/flakes/etherpad-lite/modules/ep_markdown/node-packages.nix
new file mode 100644
index 0000000..eb7a43e
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_markdown/node-packages.nix
@@ -0,0 +1,300 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {
7 "ansi-regex-4.1.0" = {
8 name = "ansi-regex";
9 packageName = "ansi-regex";
10 version = "4.1.0";
11 src = fetchurl {
12 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz";
13 sha512 = "1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==";
14 };
15 };
16 "ansi-styles-3.2.1" = {
17 name = "ansi-styles";
18 packageName = "ansi-styles";
19 version = "3.2.1";
20 src = fetchurl {
21 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz";
22 sha512 = "VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==";
23 };
24 };
25 "camelcase-5.3.1" = {
26 name = "camelcase";
27 packageName = "camelcase";
28 version = "5.3.1";
29 src = fetchurl {
30 url = "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz";
31 sha512 = "L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==";
32 };
33 };
34 "cliui-5.0.0" = {
35 name = "cliui";
36 packageName = "cliui";
37 version = "5.0.0";
38 src = fetchurl {
39 url = "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz";
40 sha512 = "PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==";
41 };
42 };
43 "color-convert-1.9.3" = {
44 name = "color-convert";
45 packageName = "color-convert";
46 version = "1.9.3";
47 src = fetchurl {
48 url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz";
49 sha512 = "QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==";
50 };
51 };
52 "color-name-1.1.3" = {
53 name = "color-name";
54 packageName = "color-name";
55 version = "1.1.3";
56 src = fetchurl {
57 url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz";
58 sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
59 };
60 };
61 "decamelize-1.2.0" = {
62 name = "decamelize";
63 packageName = "decamelize";
64 version = "1.2.0";
65 src = fetchurl {
66 url = "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz";
67 sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
68 };
69 };
70 "emoji-regex-7.0.3" = {
71 name = "emoji-regex";
72 packageName = "emoji-regex";
73 version = "7.0.3";
74 src = fetchurl {
75 url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz";
76 sha512 = "CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==";
77 };
78 };
79 "find-up-3.0.0" = {
80 name = "find-up";
81 packageName = "find-up";
82 version = "3.0.0";
83 src = fetchurl {
84 url = "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz";
85 sha512 = "1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==";
86 };
87 };
88 "get-caller-file-2.0.5" = {
89 name = "get-caller-file";
90 packageName = "get-caller-file";
91 version = "2.0.5";
92 src = fetchurl {
93 url = "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz";
94 sha512 = "DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==";
95 };
96 };
97 "is-fullwidth-code-point-2.0.0" = {
98 name = "is-fullwidth-code-point";
99 packageName = "is-fullwidth-code-point";
100 version = "2.0.0";
101 src = fetchurl {
102 url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
103 sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
104 };
105 };
106 "locate-path-3.0.0" = {
107 name = "locate-path";
108 packageName = "locate-path";
109 version = "3.0.0";
110 src = fetchurl {
111 url = "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz";
112 sha512 = "7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==";
113 };
114 };
115 "p-limit-2.3.0" = {
116 name = "p-limit";
117 packageName = "p-limit";
118 version = "2.3.0";
119 src = fetchurl {
120 url = "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz";
121 sha512 = "//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==";
122 };
123 };
124 "p-locate-3.0.0" = {
125 name = "p-locate";
126 packageName = "p-locate";
127 version = "3.0.0";
128 src = fetchurl {
129 url = "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz";
130 sha512 = "x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==";
131 };
132 };
133 "p-try-2.2.0" = {
134 name = "p-try";
135 packageName = "p-try";
136 version = "2.2.0";
137 src = fetchurl {
138 url = "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz";
139 sha512 = "R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==";
140 };
141 };
142 "path-exists-3.0.0" = {
143 name = "path-exists";
144 packageName = "path-exists";
145 version = "3.0.0";
146 src = fetchurl {
147 url = "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz";
148 sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
149 };
150 };
151 "require-directory-2.1.1" = {
152 name = "require-directory";
153 packageName = "require-directory";
154 version = "2.1.1";
155 src = fetchurl {
156 url = "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz";
157 sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
158 };
159 };
160 "require-main-filename-2.0.0" = {
161 name = "require-main-filename";
162 packageName = "require-main-filename";
163 version = "2.0.0";
164 src = fetchurl {
165 url = "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz";
166 sha512 = "NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==";
167 };
168 };
169 "set-blocking-2.0.0" = {
170 name = "set-blocking";
171 packageName = "set-blocking";
172 version = "2.0.0";
173 src = fetchurl {
174 url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
175 sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
176 };
177 };
178 "showdown-1.9.1" = {
179 name = "showdown";
180 packageName = "showdown";
181 version = "1.9.1";
182 src = fetchurl {
183 url = "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz";
184 sha512 = "9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==";
185 };
186 };
187 "string-width-3.1.0" = {
188 name = "string-width";
189 packageName = "string-width";
190 version = "3.1.0";
191 src = fetchurl {
192 url = "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz";
193 sha512 = "vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==";
194 };
195 };
196 "strip-ansi-5.2.0" = {
197 name = "strip-ansi";
198 packageName = "strip-ansi";
199 version = "5.2.0";
200 src = fetchurl {
201 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz";
202 sha512 = "DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==";
203 };
204 };
205 "which-module-2.0.0" = {
206 name = "which-module";
207 packageName = "which-module";
208 version = "2.0.0";
209 src = fetchurl {
210 url = "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz";
211 sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a";
212 };
213 };
214 "wrap-ansi-5.1.0" = {
215 name = "wrap-ansi";
216 packageName = "wrap-ansi";
217 version = "5.1.0";
218 src = fetchurl {
219 url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz";
220 sha512 = "QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==";
221 };
222 };
223 "y18n-4.0.0" = {
224 name = "y18n";
225 packageName = "y18n";
226 version = "4.0.0";
227 src = fetchurl {
228 url = "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz";
229 sha512 = "r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==";
230 };
231 };
232 "yargs-14.2.3" = {
233 name = "yargs";
234 packageName = "yargs";
235 version = "14.2.3";
236 src = fetchurl {
237 url = "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz";
238 sha512 = "ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==";
239 };
240 };
241 "yargs-parser-15.0.1" = {
242 name = "yargs-parser";
243 packageName = "yargs-parser";
244 version = "15.0.1";
245 src = fetchurl {
246 url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz";
247 sha512 = "0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==";
248 };
249 };
250 };
251in
252{
253 ep_markdown = nodeEnv.buildNodePackage {
254 name = "ep_markdown";
255 packageName = "ep_markdown";
256 version = "0.1.7";
257 src = fetchurl {
258 url = "https://registry.npmjs.org/ep_markdown/-/ep_markdown-0.1.7.tgz";
259 sha512 = "PQMFqP9P1jUEMFpwwysWaHdYzzcQIQjT/JlDRmOgfh4mloJm8honOJHnofxbqx1mxApKAW3rnEQA2t0zH8wi2w==";
260 };
261 dependencies = [
262 sources."ansi-regex-4.1.0"
263 sources."ansi-styles-3.2.1"
264 sources."camelcase-5.3.1"
265 sources."cliui-5.0.0"
266 sources."color-convert-1.9.3"
267 sources."color-name-1.1.3"
268 sources."decamelize-1.2.0"
269 sources."emoji-regex-7.0.3"
270 sources."find-up-3.0.0"
271 sources."get-caller-file-2.0.5"
272 sources."is-fullwidth-code-point-2.0.0"
273 sources."locate-path-3.0.0"
274 sources."p-limit-2.3.0"
275 sources."p-locate-3.0.0"
276 sources."p-try-2.2.0"
277 sources."path-exists-3.0.0"
278 sources."require-directory-2.1.1"
279 sources."require-main-filename-2.0.0"
280 sources."set-blocking-2.0.0"
281 sources."showdown-1.9.1"
282 sources."string-width-3.1.0"
283 sources."strip-ansi-5.2.0"
284 sources."which-module-2.0.0"
285 sources."wrap-ansi-5.1.0"
286 sources."y18n-4.0.0"
287 sources."yargs-14.2.3"
288 sources."yargs-parser-15.0.1"
289 ];
290 buildInputs = globalBuildInputs;
291 meta = {
292 description = "Edit and Export as Markdown in Etherpad";
293 homepage = "https://github.com/johnmclear/ep_markdown#readme";
294 license = "Apache-2.0";
295 };
296 production = true;
297 bypassCache = true;
298 reconstructLock = true;
299 };
300} \ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_mypads/fix_ldap.patch b/flakes/etherpad-lite/modules/ep_mypads/fix_ldap.patch
new file mode 100644
index 0000000..6ade6cb
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_mypads/fix_ldap.patch
@@ -0,0 +1,59 @@
1diff --git a/auth.js b/auth.js
2index ce77ee4..235d8e6 100644
3--- a/auth.js
4+++ b/auth.js
5@@ -91,6 +91,7 @@ var cuid = require('cuid');
6 var common = require('./model/common.js');
7 var user = require('./model/user.js');
8 var conf = require('./configuration.js');
9+var utils = require('./utils.js');
10
11 var NOT_INTERNAL_AUTH_PWD = 'soooooo_useless';
12
13@@ -232,21 +233,21 @@ module.exports = (function () {
14 // We have to create the user in mypads database
15 ldapConf = conf.get('authLdapSettings');
16 user.set({
17- login: ldapuser[props.login],
18+ login: utils.getSingleton(ldapuser[props.login]),
19 password: NOT_INTERNAL_AUTH_PWD,
20- firstname: ldapuser[props.firstname],
21- lastname: ldapuser[props.lastname],
22+ firstname: utils.getSingleton(ldapuser[props.firstname]),
23+ lastname: utils.getSingleton(ldapuser[props.lastname]),
24 email: mail,
25 lang: ldapConf.defaultLang || 'en'
26 }, callback);
27 } else if (u.email !== mail ||
28- u.firstname !== ldapuser[props.firstname] ||
29- u.lastname !== ldapuser[props.lastname]) {
30+ u.firstname !== utils.getSingleton(ldapuser[props.firstname]) ||
31+ u.lastname !== utils.getSingleton(ldapuser[props.lastname])) {
32 // Update database and cache informations if needed
33 // (i.e. update from LDAP)
34 u.email = mail;
35- u.firstname = ldapuser[props.firstname];
36- u.lastname = ldapuser[props.lastname];
37+ u.firstname = utils.getSingleton(ldapuser[props.firstname]);
38+ u.lastname = utils.getSingleton(ldapuser[props.lastname]);
39 u.password = NOT_INTERNAL_AUTH_PWD;
40 user.set(u, callback);
41 } else {
42diff --git a/utils.js b/utils.js
43index 32c2727..d381d06 100644
44--- a/utils.js
45+++ b/utils.js
46@@ -14,3 +14,13 @@ exports.callbackify2 = function (fun) {
47 return wrapPromise(fun(arg1, arg2), cb);
48 };
49 };
50+
51+exports.getSingleton = function (stringOrArray) {
52+ if (Array.isArray(stringOrArray)) {
53+ if (stringOrArray.length > 0) {
54+ return stringOrArray[0];
55+ }
56+ } else if (stringOrArray) {
57+ return stringOrArray;
58+ }
59+}
diff --git a/flakes/etherpad-lite/modules/ep_mypads/node-packages.json b/flakes/etherpad-lite/modules/ep_mypads/node-packages.json
new file mode 100644
index 0000000..36b70bd
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_mypads/node-packages.json
@@ -0,0 +1 @@
["ep_mypads"]
diff --git a/flakes/etherpad-lite/modules/ep_mypads/node-packages.nix b/flakes/etherpad-lite/modules/ep_mypads/node-packages.nix
new file mode 100644
index 0000000..13b302c
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_mypads/node-packages.nix
@@ -0,0 +1,2156 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {
7 "@types/ldapjs-1.0.7" = {
8 name = "_at_types_slash_ldapjs";
9 packageName = "@types/ldapjs";
10 version = "1.0.7";
11 src = fetchurl {
12 url = "https://registry.npmjs.org/@types/ldapjs/-/ldapjs-1.0.7.tgz";
13 sha512 = "Cacc0pQ6fw8+J5Qwebbj2+YpYANOl09WEDjJsNyPHpNSza318mUIuAhgXDfC8kXDViymlEQIvgbvuPKovRIVEQ==";
14 };
15 };
16 "@types/node-13.13.4" = {
17 name = "_at_types_slash_node";
18 packageName = "@types/node";
19 version = "13.13.4";
20 src = fetchurl {
21 url = "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz";
22 sha512 = "x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==";
23 };
24 };
25 "abstract-logging-1.0.0" = {
26 name = "abstract-logging";
27 packageName = "abstract-logging";
28 version = "1.0.0";
29 src = fetchurl {
30 url = "https://registry.npmjs.org/abstract-logging/-/abstract-logging-1.0.0.tgz";
31 sha1 = "8b7deafd310559bc28f77724dd1bb30177278c1b";
32 };
33 };
34 "addressparser-0.2.1" = {
35 name = "addressparser";
36 packageName = "addressparser";
37 version = "0.2.1";
38 src = fetchurl {
39 url = "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz";
40 sha1 = "d11a5b2eeda04cfefebdf3196c10ae13db6cd607";
41 };
42 };
43 "addressparser-0.3.2" = {
44 name = "addressparser";
45 packageName = "addressparser";
46 version = "0.3.2";
47 src = fetchurl {
48 url = "https://registry.npmjs.org/addressparser/-/addressparser-0.3.2.tgz";
49 sha1 = "59873f35e8fcf6c7361c10239261d76e15348bb2";
50 };
51 };
52 "ajv-6.12.2" = {
53 name = "ajv";
54 packageName = "ajv";
55 version = "6.12.2";
56 src = fetchurl {
57 url = "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz";
58 sha512 = "k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==";
59 };
60 };
61 "ansi-regex-2.1.1" = {
62 name = "ansi-regex";
63 packageName = "ansi-regex";
64 version = "2.1.1";
65 src = fetchurl {
66 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
67 sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
68 };
69 };
70 "ansi-regex-3.0.0" = {
71 name = "ansi-regex";
72 packageName = "ansi-regex";
73 version = "3.0.0";
74 src = fetchurl {
75 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz";
76 sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
77 };
78 };
79 "ansi-styles-2.2.1" = {
80 name = "ansi-styles";
81 packageName = "ansi-styles";
82 version = "2.2.1";
83 src = fetchurl {
84 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
85 sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
86 };
87 };
88 "asap-2.0.6" = {
89 name = "asap";
90 packageName = "asap";
91 version = "2.0.6";
92 src = fetchurl {
93 url = "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz";
94 sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
95 };
96 };
97 "asn1-0.2.3" = {
98 name = "asn1";
99 packageName = "asn1";
100 version = "0.2.3";
101 src = fetchurl {
102 url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz";
103 sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
104 };
105 };
106 "assert-plus-0.1.5" = {
107 name = "assert-plus";
108 packageName = "assert-plus";
109 version = "0.1.5";
110 src = fetchurl {
111 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz";
112 sha1 = "ee74009413002d84cec7219c6ac811812e723160";
113 };
114 };
115 "assert-plus-1.0.0" = {
116 name = "assert-plus";
117 packageName = "assert-plus";
118 version = "1.0.0";
119 src = fetchurl {
120 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
121 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
122 };
123 };
124 "async-0.1.15" = {
125 name = "async";
126 packageName = "async";
127 version = "0.1.15";
128 src = fetchurl {
129 url = "https://registry.npmjs.org/async/-/async-0.1.15.tgz";
130 sha1 = "2180eaca2cf2a6ca5280d41c0585bec9b3e49bd3";
131 };
132 };
133 "async-0.9.2" = {
134 name = "async";
135 packageName = "async";
136 version = "0.9.2";
137 src = fetchurl {
138 url = "https://registry.npmjs.org/async/-/async-0.9.2.tgz";
139 sha1 = "aea74d5e61c1f899613bf64bda66d4c78f2fd17d";
140 };
141 };
142 "async-2.6.3" = {
143 name = "async";
144 packageName = "async";
145 version = "2.6.3";
146 src = fetchurl {
147 url = "https://registry.npmjs.org/async/-/async-2.6.3.tgz";
148 sha512 = "zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==";
149 };
150 };
151 "asynckit-0.4.0" = {
152 name = "asynckit";
153 packageName = "asynckit";
154 version = "0.4.0";
155 src = fetchurl {
156 url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
157 sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
158 };
159 };
160 "aws-sign2-0.7.0" = {
161 name = "aws-sign2";
162 packageName = "aws-sign2";
163 version = "0.7.0";
164 src = fetchurl {
165 url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
166 sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
167 };
168 };
169 "aws4-1.9.1" = {
170 name = "aws4";
171 packageName = "aws4";
172 version = "1.9.1";
173 src = fetchurl {
174 url = "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz";
175 sha512 = "wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==";
176 };
177 };
178 "backoff-2.5.0" = {
179 name = "backoff";
180 packageName = "backoff";
181 version = "2.5.0";
182 src = fetchurl {
183 url = "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz";
184 sha1 = "f616eda9d3e4b66b8ca7fca79f695722c5f8e26f";
185 };
186 };
187 "balanced-match-1.0.0" = {
188 name = "balanced-match";
189 packageName = "balanced-match";
190 version = "1.0.0";
191 src = fetchurl {
192 url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
193 sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
194 };
195 };
196 "bcrypt-pbkdf-1.0.2" = {
197 name = "bcrypt-pbkdf";
198 packageName = "bcrypt-pbkdf";
199 version = "1.0.2";
200 src = fetchurl {
201 url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
202 sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
203 };
204 };
205 "bcryptjs-2.4.3" = {
206 name = "bcryptjs";
207 packageName = "bcryptjs";
208 version = "2.4.3";
209 src = fetchurl {
210 url = "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz";
211 sha1 = "9ab5627b93e60621ff7cdac5da9733027df1d0cb";
212 };
213 };
214 "bignumber.js-2.0.5" = {
215 name = "bignumber.js";
216 packageName = "bignumber.js";
217 version = "2.0.5";
218 src = fetchurl {
219 url = "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.0.5.tgz";
220 sha1 = "e1d16f495454d4229a7a483ce8d3d774ddc50659";
221 };
222 };
223 "bluebird-2.11.0" = {
224 name = "bluebird";
225 packageName = "bluebird";
226 version = "2.11.0";
227 src = fetchurl {
228 url = "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz";
229 sha1 = "534b9033c022c9579c56ba3b3e5a5caafbb650e1";
230 };
231 };
232 "body-parser-1.12.4" = {
233 name = "body-parser";
234 packageName = "body-parser";
235 version = "1.12.4";
236 src = fetchurl {
237 url = "https://registry.npmjs.org/body-parser/-/body-parser-1.12.4.tgz";
238 sha1 = "090700c4ba28862a8520ef378395fdee5f61c229";
239 };
240 };
241 "brace-expansion-1.1.11" = {
242 name = "brace-expansion";
243 packageName = "brace-expansion";
244 version = "1.1.11";
245 src = fetchurl {
246 url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
247 sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
248 };
249 };
250 "browser-fingerprint-0.0.1" = {
251 name = "browser-fingerprint";
252 packageName = "browser-fingerprint";
253 version = "0.0.1";
254 src = fetchurl {
255 url = "https://registry.npmjs.org/browser-fingerprint/-/browser-fingerprint-0.0.1.tgz";
256 sha1 = "8df3cdca25bf7d5b3542d61545d730053fce604a";
257 };
258 };
259 "browser-request-0.3.3" = {
260 name = "browser-request";
261 packageName = "browser-request";
262 version = "0.3.3";
263 src = fetchurl {
264 url = "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz";
265 sha1 = "9ece5b5aca89a29932242e18bf933def9876cc17";
266 };
267 };
268 "buffer-equal-constant-time-1.0.1" = {
269 name = "buffer-equal-constant-time";
270 packageName = "buffer-equal-constant-time";
271 version = "1.0.1";
272 src = fetchurl {
273 url = "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz";
274 sha1 = "f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819";
275 };
276 };
277 "buffer-writer-1.0.1" = {
278 name = "buffer-writer";
279 packageName = "buffer-writer";
280 version = "1.0.1";
281 src = fetchurl {
282 url = "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz";
283 sha1 = "22a936901e3029afcd7547eb4487ceb697a3bf08";
284 };
285 };
286 "bufferjs-1.1.0" = {
287 name = "bufferjs";
288 packageName = "bufferjs";
289 version = "1.1.0";
290 src = fetchurl {
291 url = "https://registry.npmjs.org/bufferjs/-/bufferjs-1.1.0.tgz";
292 sha1 = "095ffa39c5e6b40a2178a1169c9effc584a73201";
293 };
294 };
295 "bunyan-1.8.12" = {
296 name = "bunyan";
297 packageName = "bunyan";
298 version = "1.8.12";
299 src = fetchurl {
300 url = "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz";
301 sha1 = "f150f0f6748abdd72aeae84f04403be2ef113797";
302 };
303 };
304 "bytes-1.0.0" = {
305 name = "bytes";
306 packageName = "bytes";
307 version = "1.0.0";
308 src = fetchurl {
309 url = "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz";
310 sha1 = "3569ede8ba34315fab99c3e92cb04c7220de1fa8";
311 };
312 };
313 "bytes-2.1.0" = {
314 name = "bytes";
315 packageName = "bytes";
316 version = "2.1.0";
317 src = fetchurl {
318 url = "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz";
319 sha1 = "ac93c410e2ffc9cc7cf4b464b38289067f5e47b4";
320 };
321 };
322 "caseless-0.12.0" = {
323 name = "caseless";
324 packageName = "caseless";
325 version = "0.12.0";
326 src = fetchurl {
327 url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
328 sha1 = "1b681c21ff84033c826543090689420d187151dc";
329 };
330 };
331 "cassandra-driver-2.0.1" = {
332 name = "cassandra-driver";
333 packageName = "cassandra-driver";
334 version = "2.0.1";
335 src = fetchurl {
336 url = "https://registry.npmjs.org/cassandra-driver/-/cassandra-driver-2.0.1.tgz";
337 sha1 = "072759ab837628dcbcb5bc678283dcc922c767e2";
338 };
339 };
340 "chalk-1.1.3" = {
341 name = "chalk";
342 packageName = "chalk";
343 version = "1.1.3";
344 src = fetchurl {
345 url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
346 sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
347 };
348 };
349 "channels-0.0.4" = {
350 name = "channels";
351 packageName = "channels";
352 version = "0.0.4";
353 src = fetchurl {
354 url = "https://registry.npmjs.org/channels/-/channels-0.0.4.tgz";
355 sha1 = "1bee323edea152bb9ef04f41bc6e6b0f5948a941";
356 };
357 };
358 "cli-progress-2.1.1" = {
359 name = "cli-progress";
360 packageName = "cli-progress";
361 version = "2.1.1";
362 src = fetchurl {
363 url = "https://registry.npmjs.org/cli-progress/-/cli-progress-2.1.1.tgz";
364 sha512 = "TSJw3LY9ZRSis7yYzQ7flIdtQMbacd9oYoiFphJhI4SzgmqF0zErO+uNv0lbUjk1L4AGfHQJ4OVYYzW+JV66KA==";
365 };
366 };
367 "cloudant-follow-0.17.0" = {
368 name = "cloudant-follow";
369 packageName = "cloudant-follow";
370 version = "0.17.0";
371 src = fetchurl {
372 url = "https://registry.npmjs.org/cloudant-follow/-/cloudant-follow-0.17.0.tgz";
373 sha512 = "JQ1xvKAHh8rsnSVBjATLCjz/vQw1sWBGadxr2H69yFMwD7hShUGDwwEefdypaxroUJ/w6t1cSwilp/hRUxEW8w==";
374 };
375 };
376 "colors-1.4.0" = {
377 name = "colors";
378 packageName = "colors";
379 version = "1.4.0";
380 src = fetchurl {
381 url = "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz";
382 sha512 = "a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==";
383 };
384 };
385 "combined-stream-1.0.8" = {
386 name = "combined-stream";
387 packageName = "combined-stream";
388 version = "1.0.8";
389 src = fetchurl {
390 url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
391 sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
392 };
393 };
394 "commander-2.20.3" = {
395 name = "commander";
396 packageName = "commander";
397 version = "2.20.3";
398 src = fetchurl {
399 url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz";
400 sha512 = "GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==";
401 };
402 };
403 "concat-map-0.0.1" = {
404 name = "concat-map";
405 packageName = "concat-map";
406 version = "0.0.1";
407 src = fetchurl {
408 url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
409 sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
410 };
411 };
412 "content-type-1.0.4" = {
413 name = "content-type";
414 packageName = "content-type";
415 version = "1.0.4";
416 src = fetchurl {
417 url = "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz";
418 sha512 = "hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==";
419 };
420 };
421 "cookie-0.1.2" = {
422 name = "cookie";
423 packageName = "cookie";
424 version = "0.1.2";
425 src = fetchurl {
426 url = "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz";
427 sha1 = "72fec3d24e48a3432073d90c12642005061004b1";
428 };
429 };
430 "cookie-parser-1.3.4" = {
431 name = "cookie-parser";
432 packageName = "cookie-parser";
433 version = "1.3.4";
434 src = fetchurl {
435 url = "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.4.tgz";
436 sha1 = "193035a5be97117a21709b3aa737f6132717bda6";
437 };
438 };
439 "cookie-signature-1.0.6" = {
440 name = "cookie-signature";
441 packageName = "cookie-signature";
442 version = "1.0.6";
443 src = fetchurl {
444 url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";
445 sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
446 };
447 };
448 "core-js-1.2.7" = {
449 name = "core-js";
450 packageName = "core-js";
451 version = "1.2.7";
452 src = fetchurl {
453 url = "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz";
454 sha1 = "652294c14651db28fa93bd2d5ff2983a4f08c636";
455 };
456 };
457 "core-util-is-1.0.2" = {
458 name = "core-util-is";
459 packageName = "core-util-is";
460 version = "1.0.2";
461 src = fetchurl {
462 url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
463 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
464 };
465 };
466 "cuid-1.3.8" = {
467 name = "cuid";
468 packageName = "cuid";
469 version = "1.3.8";
470 src = fetchurl {
471 url = "https://registry.npmjs.org/cuid/-/cuid-1.3.8.tgz";
472 sha1 = "4b875e0969bad764f7ec0706cf44f5fb0831f6b7";
473 };
474 };
475 "dashdash-1.14.1" = {
476 name = "dashdash";
477 packageName = "dashdash";
478 version = "1.14.1";
479 src = fetchurl {
480 url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
481 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
482 };
483 };
484 "debug-2.2.0" = {
485 name = "debug";
486 packageName = "debug";
487 version = "2.2.0";
488 src = fetchurl {
489 url = "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz";
490 sha1 = "f87057e995b1a1f6ae6a4960664137bc56f039da";
491 };
492 };
493 "debug-3.2.6" = {
494 name = "debug";
495 packageName = "debug";
496 version = "3.2.6";
497 src = fetchurl {
498 url = "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz";
499 sha512 = "mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==";
500 };
501 };
502 "delayed-stream-1.0.0" = {
503 name = "delayed-stream";
504 packageName = "delayed-stream";
505 version = "1.0.0";
506 src = fetchurl {
507 url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
508 sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
509 };
510 };
511 "denque-1.4.1" = {
512 name = "denque";
513 packageName = "denque";
514 version = "1.4.1";
515 src = fetchurl {
516 url = "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz";
517 sha512 = "OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==";
518 };
519 };
520 "depd-1.0.1" = {
521 name = "depd";
522 packageName = "depd";
523 version = "1.0.1";
524 src = fetchurl {
525 url = "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz";
526 sha1 = "80aec64c9d6d97e65cc2a9caa93c0aa6abf73aaa";
527 };
528 };
529 "dirty-0.9.9" = {
530 name = "dirty";
531 packageName = "dirty";
532 version = "0.9.9";
533 src = fetchurl {
534 url = "https://registry.npmjs.org/dirty/-/dirty-0.9.9.tgz";
535 sha1 = "f785804c4cf7907220cb10fa576b22329feda545";
536 };
537 };
538 "dtrace-provider-0.8.8" = {
539 name = "dtrace-provider";
540 packageName = "dtrace-provider";
541 version = "0.8.8";
542 src = fetchurl {
543 url = "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz";
544 sha512 = "b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==";
545 };
546 };
547 "ecc-jsbn-0.1.2" = {
548 name = "ecc-jsbn";
549 packageName = "ecc-jsbn";
550 version = "0.1.2";
551 src = fetchurl {
552 url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
553 sha1 = "3a83a904e54353287874c564b7549386849a98c9";
554 };
555 };
556 "ecdsa-sig-formatter-1.0.11" = {
557 name = "ecdsa-sig-formatter";
558 packageName = "ecdsa-sig-formatter";
559 version = "1.0.11";
560 src = fetchurl {
561 url = "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz";
562 sha512 = "nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==";
563 };
564 };
565 "ee-first-1.1.0" = {
566 name = "ee-first";
567 packageName = "ee-first";
568 version = "1.1.0";
569 src = fetchurl {
570 url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz";
571 sha1 = "6a0d7c6221e490feefd92ec3f441c9ce8cd097f4";
572 };
573 };
574 "elasticsearch-11.0.1" = {
575 name = "elasticsearch";
576 packageName = "elasticsearch";
577 version = "11.0.1";
578 src = fetchurl {
579 url = "https://registry.npmjs.org/elasticsearch/-/elasticsearch-11.0.1.tgz";
580 sha1 = "d180684c6bde7ecfa0fa24e62fa1c872eeae08e7";
581 };
582 };
583 "emailjs-0.3.16" = {
584 name = "emailjs";
585 packageName = "emailjs";
586 version = "0.3.16";
587 src = fetchurl {
588 url = "https://registry.npmjs.org/emailjs/-/emailjs-0.3.16.tgz";
589 sha1 = "f162735352ce7b6615a5d811714051f90f23331d";
590 };
591 };
592 "encoding-0.1.12" = {
593 name = "encoding";
594 packageName = "encoding";
595 version = "0.1.12";
596 src = fetchurl {
597 url = "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz";
598 sha1 = "538b66f3ee62cd1ab51ec323829d1f9480c74beb";
599 };
600 };
601 "errs-0.3.2" = {
602 name = "errs";
603 packageName = "errs";
604 version = "0.3.2";
605 src = fetchurl {
606 url = "https://registry.npmjs.org/errs/-/errs-0.3.2.tgz";
607 sha1 = "798099b2dbd37ca2bc749e538a7c1307d0b50499";
608 };
609 };
610 "escape-string-regexp-1.0.5" = {
611 name = "escape-string-regexp";
612 packageName = "escape-string-regexp";
613 version = "1.0.5";
614 src = fetchurl {
615 url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
616 sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
617 };
618 };
619 "extend-3.0.2" = {
620 name = "extend";
621 packageName = "extend";
622 version = "3.0.2";
623 src = fetchurl {
624 url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
625 sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
626 };
627 };
628 "extsprintf-1.2.0" = {
629 name = "extsprintf";
630 packageName = "extsprintf";
631 version = "1.2.0";
632 src = fetchurl {
633 url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz";
634 sha1 = "5ad946c22f5b32ba7f8cd7426711c6e8a3fc2529";
635 };
636 };
637 "extsprintf-1.3.0" = {
638 name = "extsprintf";
639 packageName = "extsprintf";
640 version = "1.3.0";
641 src = fetchurl {
642 url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
643 sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
644 };
645 };
646 "fast-deep-equal-3.1.1" = {
647 name = "fast-deep-equal";
648 packageName = "fast-deep-equal";
649 version = "3.1.1";
650 src = fetchurl {
651 url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
652 sha512 = "8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==";
653 };
654 };
655 "fast-json-stable-stringify-2.1.0" = {
656 name = "fast-json-stable-stringify";
657 packageName = "fast-json-stable-stringify";
658 version = "2.1.0";
659 src = fetchurl {
660 url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
661 sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==";
662 };
663 };
664 "forever-agent-0.6.1" = {
665 name = "forever-agent";
666 packageName = "forever-agent";
667 version = "0.6.1";
668 src = fetchurl {
669 url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
670 sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
671 };
672 };
673 "form-data-2.3.3" = {
674 name = "form-data";
675 packageName = "form-data";
676 version = "2.3.3";
677 src = fetchurl {
678 url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
679 sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
680 };
681 };
682 "generic-pool-2.4.3" = {
683 name = "generic-pool";
684 packageName = "generic-pool";
685 version = "2.4.3";
686 src = fetchurl {
687 url = "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.3.tgz";
688 sha1 = "780c36f69dfad05a5a045dd37be7adca11a4f6ff";
689 };
690 };
691 "getpass-0.1.7" = {
692 name = "getpass";
693 packageName = "getpass";
694 version = "0.1.7";
695 src = fetchurl {
696 url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
697 sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
698 };
699 };
700 "glob-6.0.4" = {
701 name = "glob";
702 packageName = "glob";
703 version = "6.0.4";
704 src = fetchurl {
705 url = "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz";
706 sha1 = "0f08860f6a155127b2fadd4f9ce24b1aab6e4d22";
707 };
708 };
709 "har-schema-2.0.0" = {
710 name = "har-schema";
711 packageName = "har-schema";
712 version = "2.0.0";
713 src = fetchurl {
714 url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
715 sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
716 };
717 };
718 "har-validator-5.1.3" = {
719 name = "har-validator";
720 packageName = "har-validator";
721 version = "5.1.3";
722 src = fetchurl {
723 url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz";
724 sha512 = "sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==";
725 };
726 };
727 "has-ansi-2.0.0" = {
728 name = "has-ansi";
729 packageName = "has-ansi";
730 version = "2.0.0";
731 src = fetchurl {
732 url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
733 sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
734 };
735 };
736 "hoek-2.16.3" = {
737 name = "hoek";
738 packageName = "hoek";
739 version = "2.16.3";
740 src = fetchurl {
741 url = "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz";
742 sha1 = "20bb7403d3cea398e91dc4710a8ff1b8274a25ed";
743 };
744 };
745 "hoek-4.2.1" = {
746 name = "hoek";
747 packageName = "hoek";
748 version = "4.2.1";
749 src = fetchurl {
750 url = "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz";
751 sha512 = "QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==";
752 };
753 };
754 "http-signature-1.2.0" = {
755 name = "http-signature";
756 packageName = "http-signature";
757 version = "1.2.0";
758 src = fetchurl {
759 url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
760 sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
761 };
762 };
763 "iconv-lite-0.4.24" = {
764 name = "iconv-lite";
765 packageName = "iconv-lite";
766 version = "0.4.24";
767 src = fetchurl {
768 url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
769 sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==";
770 };
771 };
772 "iconv-lite-0.4.8" = {
773 name = "iconv-lite";
774 packageName = "iconv-lite";
775 version = "0.4.8";
776 src = fetchurl {
777 url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.8.tgz";
778 sha1 = "c6019a7595f2cefca702eab694a010bcd9298d20";
779 };
780 };
781 "inflight-1.0.6" = {
782 name = "inflight";
783 packageName = "inflight";
784 version = "1.0.6";
785 src = fetchurl {
786 url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
787 sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
788 };
789 };
790 "inherits-2.0.4" = {
791 name = "inherits";
792 packageName = "inherits";
793 version = "2.0.4";
794 src = fetchurl {
795 url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
796 sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
797 };
798 };
799 "is-fullwidth-code-point-2.0.0" = {
800 name = "is-fullwidth-code-point";
801 packageName = "is-fullwidth-code-point";
802 version = "2.0.0";
803 src = fetchurl {
804 url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
805 sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
806 };
807 };
808 "is-typedarray-1.0.0" = {
809 name = "is-typedarray";
810 packageName = "is-typedarray";
811 version = "1.0.0";
812 src = fetchurl {
813 url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
814 sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
815 };
816 };
817 "isarray-0.0.1" = {
818 name = "isarray";
819 packageName = "isarray";
820 version = "0.0.1";
821 src = fetchurl {
822 url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
823 sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
824 };
825 };
826 "isemail-1.2.0" = {
827 name = "isemail";
828 packageName = "isemail";
829 version = "1.2.0";
830 src = fetchurl {
831 url = "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz";
832 sha1 = "be03df8cc3e29de4d2c5df6501263f1fa4595e9a";
833 };
834 };
835 "isemail-2.2.1" = {
836 name = "isemail";
837 packageName = "isemail";
838 version = "2.2.1";
839 src = fetchurl {
840 url = "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz";
841 sha1 = "0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6";
842 };
843 };
844 "isstream-0.1.2" = {
845 name = "isstream";
846 packageName = "isstream";
847 version = "0.1.2";
848 src = fetchurl {
849 url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
850 sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
851 };
852 };
853 "items-2.1.2" = {
854 name = "items";
855 packageName = "items";
856 version = "2.1.2";
857 src = fetchurl {
858 url = "https://registry.npmjs.org/items/-/items-2.1.2.tgz";
859 sha512 = "kezcEqgB97BGeZZYtX/MA8AG410ptURstvnz5RAgyFZ8wQFPMxHY8GpTq+/ZHKT3frSlIthUq7EvLt9xn3TvXg==";
860 };
861 };
862 "joi-10.6.0" = {
863 name = "joi";
864 packageName = "joi";
865 version = "10.6.0";
866 src = fetchurl {
867 url = "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz";
868 sha512 = "hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==";
869 };
870 };
871 "joi-6.10.1" = {
872 name = "joi";
873 packageName = "joi";
874 version = "6.10.1";
875 src = fetchurl {
876 url = "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz";
877 sha1 = "4d50c318079122000fe5f16af1ff8e1917b77e06";
878 };
879 };
880 "js-base64-2.1.9" = {
881 name = "js-base64";
882 packageName = "js-base64";
883 version = "2.1.9";
884 src = fetchurl {
885 url = "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz";
886 sha1 = "f0e80ae039a4bd654b5f281fc93f04a914a7fcce";
887 };
888 };
889 "js-cookie-2.2.1" = {
890 name = "js-cookie";
891 packageName = "js-cookie";
892 version = "2.2.1";
893 src = fetchurl {
894 url = "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz";
895 sha512 = "HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==";
896 };
897 };
898 "jsbn-0.1.1" = {
899 name = "jsbn";
900 packageName = "jsbn";
901 version = "0.1.1";
902 src = fetchurl {
903 url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
904 sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
905 };
906 };
907 "json-beautify-1.1.1" = {
908 name = "json-beautify";
909 packageName = "json-beautify";
910 version = "1.1.1";
911 src = fetchurl {
912 url = "https://registry.npmjs.org/json-beautify/-/json-beautify-1.1.1.tgz";
913 sha512 = "17j+Hk2lado0xqKtUcyAjK0AtoHnPSIgktWRsEXgdFQFG9UnaGw6CHa0J7xsvulxRpFl6CrkDFHght1p5ZJc4A==";
914 };
915 };
916 "json-schema-0.2.3" = {
917 name = "json-schema";
918 packageName = "json-schema";
919 version = "0.2.3";
920 src = fetchurl {
921 url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
922 sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
923 };
924 };
925 "json-schema-traverse-0.4.1" = {
926 name = "json-schema-traverse";
927 packageName = "json-schema-traverse";
928 version = "0.4.1";
929 src = fetchurl {
930 url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
931 sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
932 };
933 };
934 "json-stringify-safe-5.0.1" = {
935 name = "json-stringify-safe";
936 packageName = "json-stringify-safe";
937 version = "5.0.1";
938 src = fetchurl {
939 url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
940 sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
941 };
942 };
943 "jsonminify-0.4.1" = {
944 name = "jsonminify";
945 packageName = "jsonminify";
946 version = "0.4.1";
947 src = fetchurl {
948 url = "https://registry.npmjs.org/jsonminify/-/jsonminify-0.4.1.tgz";
949 sha1 = "805dafbb39395188cee9ab582c81ef959d7e710c";
950 };
951 };
952 "jsonwebtoken-5.0.5" = {
953 name = "jsonwebtoken";
954 packageName = "jsonwebtoken";
955 version = "5.0.5";
956 src = fetchurl {
957 url = "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-5.0.5.tgz";
958 sha1 = "6592cc05ee03dd5ad9e03a910911a4da79afe0f8";
959 };
960 };
961 "jsonwebtoken-7.4.3" = {
962 name = "jsonwebtoken";
963 packageName = "jsonwebtoken";
964 version = "7.4.3";
965 src = fetchurl {
966 url = "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz";
967 sha1 = "77f5021de058b605a1783fa1283e99812e645638";
968 };
969 };
970 "jsprim-1.4.1" = {
971 name = "jsprim";
972 packageName = "jsprim";
973 version = "1.4.1";
974 src = fetchurl {
975 url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
976 sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
977 };
978 };
979 "jwa-1.4.1" = {
980 name = "jwa";
981 packageName = "jwa";
982 version = "1.4.1";
983 src = fetchurl {
984 url = "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz";
985 sha512 = "qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==";
986 };
987 };
988 "jws-3.2.2" = {
989 name = "jws";
990 packageName = "jws";
991 version = "3.2.2";
992 src = fetchurl {
993 url = "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz";
994 sha512 = "YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==";
995 };
996 };
997 "ldap-filter-0.2.2" = {
998 name = "ldap-filter";
999 packageName = "ldap-filter";
1000 version = "0.2.2";
1001 src = fetchurl {
1002 url = "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz";
1003 sha1 = "f2b842be0b86da3352798505b31ebcae590d77d0";
1004 };
1005 };
1006 "ldapauth-fork-4.3.3" = {
1007 name = "ldapauth-fork";
1008 packageName = "ldapauth-fork";
1009 version = "4.3.3";
1010 src = fetchurl {
1011 url = "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-4.3.3.tgz";
1012 sha512 = "x76VpQ5ZqkwAJmqwcD6KIwDiNEbgIGIPGwC/eA17e1dxWhlTx36w0DlLOFwjTuZ2iuaLTsZsUprlVqvSlwc/1Q==";
1013 };
1014 };
1015 "ldapjs-1.0.2" = {
1016 name = "ldapjs";
1017 packageName = "ldapjs";
1018 version = "1.0.2";
1019 src = fetchurl {
1020 url = "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.2.tgz";
1021 sha1 = "544ff7032b7b83c68f0701328d9297aa694340f9";
1022 };
1023 };
1024 "lodash-3.10.1" = {
1025 name = "lodash";
1026 packageName = "lodash";
1027 version = "3.10.1";
1028 src = fetchurl {
1029 url = "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz";
1030 sha1 = "5bf45e8e49ba4189e17d482789dfd15bd140b7b6";
1031 };
1032 };
1033 "lodash-4.17.15" = {
1034 name = "lodash";
1035 packageName = "lodash";
1036 version = "4.17.15";
1037 src = fetchurl {
1038 url = "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz";
1039 sha512 = "8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==";
1040 };
1041 };
1042 "lodash-compat-3.10.2" = {
1043 name = "lodash-compat";
1044 packageName = "lodash-compat";
1045 version = "3.10.2";
1046 src = fetchurl {
1047 url = "https://registry.npmjs.org/lodash-compat/-/lodash-compat-3.10.2.tgz";
1048 sha1 = "c6940128a9d30f8e902cd2cf99fd0cba4ecfc183";
1049 };
1050 };
1051 "lodash.isempty-4.4.0" = {
1052 name = "lodash.isempty";
1053 packageName = "lodash.isempty";
1054 version = "4.4.0";
1055 src = fetchurl {
1056 url = "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz";
1057 sha1 = "6f86cbedd8be4ec987be9aaf33c9684db1b31e7e";
1058 };
1059 };
1060 "lodash.once-4.1.1" = {
1061 name = "lodash.once";
1062 packageName = "lodash.once";
1063 version = "4.1.1";
1064 src = fetchurl {
1065 url = "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz";
1066 sha1 = "0dd3971213c7c56df880977d504c88fb471a97ac";
1067 };
1068 };
1069 "long-2.4.0" = {
1070 name = "long";
1071 packageName = "long";
1072 version = "2.4.0";
1073 src = fetchurl {
1074 url = "https://registry.npmjs.org/long/-/long-2.4.0.tgz";
1075 sha1 = "9fa180bb1d9500cdc29c4156766a1995e1f4524f";
1076 };
1077 };
1078 "lru-cache-5.1.1" = {
1079 name = "lru-cache";
1080 packageName = "lru-cache";
1081 version = "5.1.1";
1082 src = fetchurl {
1083 url = "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz";
1084 sha512 = "KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==";
1085 };
1086 };
1087 "media-typer-0.3.0" = {
1088 name = "media-typer";
1089 packageName = "media-typer";
1090 version = "0.3.0";
1091 src = fetchurl {
1092 url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz";
1093 sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
1094 };
1095 };
1096 "mime-db-1.44.0" = {
1097 name = "mime-db";
1098 packageName = "mime-db";
1099 version = "1.44.0";
1100 src = fetchurl {
1101 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz";
1102 sha512 = "/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==";
1103 };
1104 };
1105 "mime-types-2.1.27" = {
1106 name = "mime-types";
1107 packageName = "mime-types";
1108 version = "2.1.27";
1109 src = fetchurl {
1110 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz";
1111 sha512 = "JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==";
1112 };
1113 };
1114 "mimelib-0.2.14" = {
1115 name = "mimelib";
1116 packageName = "mimelib";
1117 version = "0.2.14";
1118 src = fetchurl {
1119 url = "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz";
1120 sha1 = "2a1aa724bd190b85bd526e6317ab6106edfd6831";
1121 };
1122 };
1123 "minimatch-3.0.4" = {
1124 name = "minimatch";
1125 packageName = "minimatch";
1126 version = "3.0.4";
1127 src = fetchurl {
1128 url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
1129 sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
1130 };
1131 };
1132 "minimist-1.2.5" = {
1133 name = "minimist";
1134 packageName = "minimist";
1135 version = "1.2.5";
1136 src = fetchurl {
1137 url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
1138 sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
1139 };
1140 };
1141 "mkdirp-0.5.5" = {
1142 name = "mkdirp";
1143 packageName = "mkdirp";
1144 version = "0.5.5";
1145 src = fetchurl {
1146 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
1147 sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
1148 };
1149 };
1150 "moment-1.7.0" = {
1151 name = "moment";
1152 packageName = "moment";
1153 version = "1.7.0";
1154 src = fetchurl {
1155 url = "https://registry.npmjs.org/moment/-/moment-1.7.0.tgz";
1156 sha1 = "6f3d73a446c6bd6af1b993801d0b8071efad5e28";
1157 };
1158 };
1159 "moment-2.24.0" = {
1160 name = "moment";
1161 packageName = "moment";
1162 version = "2.24.0";
1163 src = fetchurl {
1164 url = "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz";
1165 sha512 = "bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==";
1166 };
1167 };
1168 "ms-0.7.1" = {
1169 name = "ms";
1170 packageName = "ms";
1171 version = "0.7.1";
1172 src = fetchurl {
1173 url = "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz";
1174 sha1 = "9cd13c03adbff25b65effde7ce864ee952017098";
1175 };
1176 };
1177 "ms-2.1.2" = {
1178 name = "ms";
1179 packageName = "ms";
1180 version = "2.1.2";
1181 src = fetchurl {
1182 url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
1183 sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
1184 };
1185 };
1186 "mv-2.1.1" = {
1187 name = "mv";
1188 packageName = "mv";
1189 version = "2.1.1";
1190 src = fetchurl {
1191 url = "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz";
1192 sha1 = "ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2";
1193 };
1194 };
1195 "mysql-2.6.1" = {
1196 name = "mysql";
1197 packageName = "mysql";
1198 version = "2.6.1";
1199 src = fetchurl {
1200 url = "https://registry.npmjs.org/mysql/-/mysql-2.6.1.tgz";
1201 sha1 = "71bf1fb20550cf2940b831664df33f3637b5504d";
1202 };
1203 };
1204 "nan-2.14.1" = {
1205 name = "nan";
1206 packageName = "nan";
1207 version = "2.14.1";
1208 src = fetchurl {
1209 url = "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz";
1210 sha512 = "isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==";
1211 };
1212 };
1213 "nano-6.4.4" = {
1214 name = "nano";
1215 packageName = "nano";
1216 version = "6.4.4";
1217 src = fetchurl {
1218 url = "https://registry.npmjs.org/nano/-/nano-6.4.4.tgz";
1219 sha512 = "7sldMrZI1ZH8QE29PnzohxLfR67WNVzMKLa7EMl3x9Hr+0G+YpOUCq50qZ9G66APrjcb0Of2BTOZLNBCutZGag==";
1220 };
1221 };
1222 "ncp-2.0.0" = {
1223 name = "ncp";
1224 packageName = "ncp";
1225 version = "2.0.0";
1226 src = fetchurl {
1227 url = "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz";
1228 sha1 = "195a21d6c46e361d2fb1281ba38b91e9df7bdbb3";
1229 };
1230 };
1231 "node-fingerprint-0.0.2" = {
1232 name = "node-fingerprint";
1233 packageName = "node-fingerprint";
1234 version = "0.0.2";
1235 src = fetchurl {
1236 url = "https://registry.npmjs.org/node-fingerprint/-/node-fingerprint-0.0.2.tgz";
1237 sha1 = "31cbabeb71a67ae7dd5a7dc042e51c3c75868501";
1238 };
1239 };
1240 "oauth-sign-0.9.0" = {
1241 name = "oauth-sign";
1242 packageName = "oauth-sign";
1243 version = "0.9.0";
1244 src = fetchurl {
1245 url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
1246 sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
1247 };
1248 };
1249 "object-assign-4.1.0" = {
1250 name = "object-assign";
1251 packageName = "object-assign";
1252 version = "4.1.0";
1253 src = fetchurl {
1254 url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz";
1255 sha1 = "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0";
1256 };
1257 };
1258 "on-finished-2.2.1" = {
1259 name = "on-finished";
1260 packageName = "on-finished";
1261 version = "2.2.1";
1262 src = fetchurl {
1263 url = "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz";
1264 sha1 = "5c85c1cc36299f78029653f667f27b6b99ebc029";
1265 };
1266 };
1267 "once-1.4.0" = {
1268 name = "once";
1269 packageName = "once";
1270 version = "1.4.0";
1271 src = fetchurl {
1272 url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
1273 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
1274 };
1275 };
1276 "packet-reader-0.2.0" = {
1277 name = "packet-reader";
1278 packageName = "packet-reader";
1279 version = "0.2.0";
1280 src = fetchurl {
1281 url = "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz";
1282 sha1 = "819df4d010b82d5ea5671f8a1a3acf039bcd7700";
1283 };
1284 };
1285 "passport-0.2.2" = {
1286 name = "passport";
1287 packageName = "passport";
1288 version = "0.2.2";
1289 src = fetchurl {
1290 url = "https://registry.npmjs.org/passport/-/passport-0.2.2.tgz";
1291 sha1 = "9c38f17beb929f3d81af7b8838e8430db8703f2b";
1292 };
1293 };
1294 "passport-jwt-3.0.1" = {
1295 name = "passport-jwt";
1296 packageName = "passport-jwt";
1297 version = "3.0.1";
1298 src = fetchurl {
1299 url = "https://registry.npmjs.org/passport-jwt/-/passport-jwt-3.0.1.tgz";
1300 sha1 = "e4f7276dad8bd251d43c6fc38883130b963272f6";
1301 };
1302 };
1303 "passport-strategy-1.0.0" = {
1304 name = "passport-strategy";
1305 packageName = "passport-strategy";
1306 version = "1.0.0";
1307 src = fetchurl {
1308 url = "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz";
1309 sha1 = "b5539aa8fc225a3d1ad179476ddf236b440f52e4";
1310 };
1311 };
1312 "path-is-absolute-1.0.1" = {
1313 name = "path-is-absolute";
1314 packageName = "path-is-absolute";
1315 version = "1.0.1";
1316 src = fetchurl {
1317 url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
1318 sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
1319 };
1320 };
1321 "pause-0.0.1" = {
1322 name = "pause";
1323 packageName = "pause";
1324 version = "0.0.1";
1325 src = fetchurl {
1326 url = "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz";
1327 sha1 = "1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d";
1328 };
1329 };
1330 "performance-now-2.1.0" = {
1331 name = "performance-now";
1332 packageName = "performance-now";
1333 version = "2.1.0";
1334 src = fetchurl {
1335 url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
1336 sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
1337 };
1338 };
1339 "pg-6.1.3" = {
1340 name = "pg";
1341 packageName = "pg";
1342 version = "6.1.3";
1343 src = fetchurl {
1344 url = "https://registry.npmjs.org/pg/-/pg-6.1.3.tgz";
1345 sha1 = "8e5e497329c2b81dbfd563f1541c5803c7269de4";
1346 };
1347 };
1348 "pg-connection-string-0.1.3" = {
1349 name = "pg-connection-string";
1350 packageName = "pg-connection-string";
1351 version = "0.1.3";
1352 src = fetchurl {
1353 url = "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz";
1354 sha1 = "da1847b20940e42ee1492beaf65d49d91b245df7";
1355 };
1356 };
1357 "pg-int8-1.0.1" = {
1358 name = "pg-int8";
1359 packageName = "pg-int8";
1360 version = "1.0.1";
1361 src = fetchurl {
1362 url = "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz";
1363 sha512 = "WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==";
1364 };
1365 };
1366 "pg-pool-1.8.0" = {
1367 name = "pg-pool";
1368 packageName = "pg-pool";
1369 version = "1.8.0";
1370 src = fetchurl {
1371 url = "https://registry.npmjs.org/pg-pool/-/pg-pool-1.8.0.tgz";
1372 sha1 = "f7ec73824c37a03f076f51bfdf70e340147c4f37";
1373 };
1374 };
1375 "pg-types-1.13.0" = {
1376 name = "pg-types";
1377 packageName = "pg-types";
1378 version = "1.13.0";
1379 src = fetchurl {
1380 url = "https://registry.npmjs.org/pg-types/-/pg-types-1.13.0.tgz";
1381 sha512 = "lfKli0Gkl/+za/+b6lzENajczwZHc7D5kiUCZfgm914jipD2kIOIvEkAhZ8GrW3/TUoP9w8FHjwpPObBye5KQQ==";
1382 };
1383 };
1384 "pgpass-1.0.2" = {
1385 name = "pgpass";
1386 packageName = "pgpass";
1387 version = "1.0.2";
1388 src = fetchurl {
1389 url = "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz";
1390 sha1 = "2a7bb41b6065b67907e91da1b07c1847c877b306";
1391 };
1392 };
1393 "postgres-array-1.0.3" = {
1394 name = "postgres-array";
1395 packageName = "postgres-array";
1396 version = "1.0.3";
1397 src = fetchurl {
1398 url = "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.3.tgz";
1399 sha512 = "5wClXrAP0+78mcsNX3/ithQ5exKvCyK5lr5NEEEeGwwM6NJdQgzIJBVxLvRW+huFpX92F2QnZ5CcokH0VhK2qQ==";
1400 };
1401 };
1402 "postgres-bytea-1.0.0" = {
1403 name = "postgres-bytea";
1404 packageName = "postgres-bytea";
1405 version = "1.0.0";
1406 src = fetchurl {
1407 url = "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz";
1408 sha1 = "027b533c0aa890e26d172d47cf9ccecc521acd35";
1409 };
1410 };
1411 "postgres-date-1.0.5" = {
1412 name = "postgres-date";
1413 packageName = "postgres-date";
1414 version = "1.0.5";
1415 src = fetchurl {
1416 url = "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.5.tgz";
1417 sha512 = "pdau6GRPERdAYUQwkBnGKxEfPyhVZXG/JiS44iZWiNdSOWE09N2lUgN6yshuq6fVSon4Pm0VMXd1srUUkLe9iA==";
1418 };
1419 };
1420 "postgres-interval-1.2.0" = {
1421 name = "postgres-interval";
1422 packageName = "postgres-interval";
1423 version = "1.2.0";
1424 src = fetchurl {
1425 url = "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz";
1426 sha512 = "9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==";
1427 };
1428 };
1429 "precond-0.2.3" = {
1430 name = "precond";
1431 packageName = "precond";
1432 version = "0.2.3";
1433 src = fetchurl {
1434 url = "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz";
1435 sha1 = "aa9591bcaa24923f1e0f4849d240f47efc1075ac";
1436 };
1437 };
1438 "promise-7.3.1" = {
1439 name = "promise";
1440 packageName = "promise";
1441 version = "7.3.1";
1442 src = fetchurl {
1443 url = "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz";
1444 sha512 = "nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==";
1445 };
1446 };
1447 "psl-1.8.0" = {
1448 name = "psl";
1449 packageName = "psl";
1450 version = "1.8.0";
1451 src = fetchurl {
1452 url = "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz";
1453 sha512 = "RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==";
1454 };
1455 };
1456 "punycode-2.1.1" = {
1457 name = "punycode";
1458 packageName = "punycode";
1459 version = "2.1.1";
1460 src = fetchurl {
1461 url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
1462 sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==";
1463 };
1464 };
1465 "qs-2.4.2" = {
1466 name = "qs";
1467 packageName = "qs";
1468 version = "2.4.2";
1469 src = fetchurl {
1470 url = "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz";
1471 sha1 = "f7ce788e5777df0b5010da7f7c4e73ba32470f5a";
1472 };
1473 };
1474 "qs-6.5.2" = {
1475 name = "qs";
1476 packageName = "qs";
1477 version = "6.5.2";
1478 src = fetchurl {
1479 url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
1480 sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==";
1481 };
1482 };
1483 "raw-body-2.0.2" = {
1484 name = "raw-body";
1485 packageName = "raw-body";
1486 version = "2.0.2";
1487 src = fetchurl {
1488 url = "https://registry.npmjs.org/raw-body/-/raw-body-2.0.2.tgz";
1489 sha1 = "a2c2f98c8531cee99c63d8d238b7de97bb659fca";
1490 };
1491 };
1492 "readable-stream-1.1.14" = {
1493 name = "readable-stream";
1494 packageName = "readable-stream";
1495 version = "1.1.14";
1496 src = fetchurl {
1497 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz";
1498 sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9";
1499 };
1500 };
1501 "redis-3.0.2" = {
1502 name = "redis";
1503 packageName = "redis";
1504 version = "3.0.2";
1505 src = fetchurl {
1506 url = "https://registry.npmjs.org/redis/-/redis-3.0.2.tgz";
1507 sha512 = "PNhLCrjU6vKVuMOyFu7oSP296mwBkcE6lrAjruBYG5LgdSqtRBoVQIylrMyVZD/lkF24RSNNatzvYag6HRBHjQ==";
1508 };
1509 };
1510 "redis-commands-1.5.0" = {
1511 name = "redis-commands";
1512 packageName = "redis-commands";
1513 version = "1.5.0";
1514 src = fetchurl {
1515 url = "https://registry.npmjs.org/redis-commands/-/redis-commands-1.5.0.tgz";
1516 sha512 = "6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg==";
1517 };
1518 };
1519 "redis-errors-1.2.0" = {
1520 name = "redis-errors";
1521 packageName = "redis-errors";
1522 version = "1.2.0";
1523 src = fetchurl {
1524 url = "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz";
1525 sha1 = "eb62d2adb15e4eaf4610c04afe1529384250abad";
1526 };
1527 };
1528 "redis-parser-3.0.0" = {
1529 name = "redis-parser";
1530 packageName = "redis-parser";
1531 version = "3.0.0";
1532 src = fetchurl {
1533 url = "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz";
1534 sha1 = "b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4";
1535 };
1536 };
1537 "request-2.88.2" = {
1538 name = "request";
1539 packageName = "request";
1540 version = "2.88.2";
1541 src = fetchurl {
1542 url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz";
1543 sha512 = "MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==";
1544 };
1545 };
1546 "require-all-1.0.0" = {
1547 name = "require-all";
1548 packageName = "require-all";
1549 version = "1.0.0";
1550 src = fetchurl {
1551 url = "https://registry.npmjs.org/require-all/-/require-all-1.0.0.tgz";
1552 sha1 = "8483708e7ce4c6dfad988b5080f97829b92d2227";
1553 };
1554 };
1555 "rethinkdb-2.4.2" = {
1556 name = "rethinkdb";
1557 packageName = "rethinkdb";
1558 version = "2.4.2";
1559 src = fetchurl {
1560 url = "https://registry.npmjs.org/rethinkdb/-/rethinkdb-2.4.2.tgz";
1561 sha512 = "6DzwqEpFc8cqesAdo07a845oBRxLiHvWzopTKBo/uY2ypGWIsJQFJk3wjRDtSEhczxJqLS0jnf37rwgzYAw8NQ==";
1562 };
1563 };
1564 "rimraf-2.4.5" = {
1565 name = "rimraf";
1566 packageName = "rimraf";
1567 version = "2.4.5";
1568 src = fetchurl {
1569 url = "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz";
1570 sha1 = "ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da";
1571 };
1572 };
1573 "safe-buffer-5.2.0" = {
1574 name = "safe-buffer";
1575 packageName = "safe-buffer";
1576 version = "5.2.0";
1577 src = fetchurl {
1578 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz";
1579 sha512 = "fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==";
1580 };
1581 };
1582 "safe-json-stringify-1.2.0" = {
1583 name = "safe-json-stringify";
1584 packageName = "safe-json-stringify";
1585 version = "1.2.0";
1586 src = fetchurl {
1587 url = "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz";
1588 sha512 = "gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==";
1589 };
1590 };
1591 "safer-buffer-2.1.2" = {
1592 name = "safer-buffer";
1593 packageName = "safer-buffer";
1594 version = "2.1.2";
1595 src = fetchurl {
1596 url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
1597 sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
1598 };
1599 };
1600 "sax-1.2.4" = {
1601 name = "sax";
1602 packageName = "sax";
1603 version = "1.2.4";
1604 src = fetchurl {
1605 url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
1606 sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==";
1607 };
1608 };
1609 "semver-4.3.2" = {
1610 name = "semver";
1611 packageName = "semver";
1612 version = "4.3.2";
1613 src = fetchurl {
1614 url = "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz";
1615 sha1 = "c7a07158a80bedd052355b770d82d6640f803be7";
1616 };
1617 };
1618 "simple-cas-interface-1.0.2" = {
1619 name = "simple-cas-interface";
1620 packageName = "simple-cas-interface";
1621 version = "1.0.2";
1622 src = fetchurl {
1623 url = "https://registry.npmjs.org/simple-cas-interface/-/simple-cas-interface-1.0.2.tgz";
1624 sha1 = "e347b0a7955b5254dae9727984368dd534cde8ec";
1625 };
1626 };
1627 "slugg-0.1.2" = {
1628 name = "slugg";
1629 packageName = "slugg";
1630 version = "0.1.2";
1631 src = fetchurl {
1632 url = "https://registry.npmjs.org/slugg/-/slugg-0.1.2.tgz";
1633 sha1 = "3a2a65baaf24c0f62eaac8acf243740a379072b5";
1634 };
1635 };
1636 "split-1.0.1" = {
1637 name = "split";
1638 packageName = "split";
1639 version = "1.0.1";
1640 src = fetchurl {
1641 url = "https://registry.npmjs.org/split/-/split-1.0.1.tgz";
1642 sha512 = "mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==";
1643 };
1644 };
1645 "sshpk-1.16.1" = {
1646 name = "sshpk";
1647 packageName = "sshpk";
1648 version = "1.16.1";
1649 src = fetchurl {
1650 url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
1651 sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
1652 };
1653 };
1654 "starttls-0.2.1" = {
1655 name = "starttls";
1656 packageName = "starttls";
1657 version = "0.2.1";
1658 src = fetchurl {
1659 url = "https://registry.npmjs.org/starttls/-/starttls-0.2.1.tgz";
1660 sha1 = "b98d3e5e778d46f199c843a64f889f0347c6d19a";
1661 };
1662 };
1663 "string-width-2.1.1" = {
1664 name = "string-width";
1665 packageName = "string-width";
1666 version = "2.1.1";
1667 src = fetchurl {
1668 url = "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz";
1669 sha512 = "nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==";
1670 };
1671 };
1672 "string_decoder-0.10.31" = {
1673 name = "string_decoder";
1674 packageName = "string_decoder";
1675 version = "0.10.31";
1676 src = fetchurl {
1677 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
1678 sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
1679 };
1680 };
1681 "strip-ansi-3.0.1" = {
1682 name = "strip-ansi";
1683 packageName = "strip-ansi";
1684 version = "3.0.1";
1685 src = fetchurl {
1686 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
1687 sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
1688 };
1689 };
1690 "strip-ansi-4.0.0" = {
1691 name = "strip-ansi";
1692 packageName = "strip-ansi";
1693 version = "4.0.0";
1694 src = fetchurl {
1695 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz";
1696 sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
1697 };
1698 };
1699 "supports-color-2.0.0" = {
1700 name = "supports-color";
1701 packageName = "supports-color";
1702 version = "2.0.0";
1703 src = fetchurl {
1704 url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
1705 sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
1706 };
1707 };
1708 "through-2.3.8" = {
1709 name = "through";
1710 packageName = "through";
1711 version = "2.3.8";
1712 src = fetchurl {
1713 url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz";
1714 sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
1715 };
1716 };
1717 "topo-1.1.0" = {
1718 name = "topo";
1719 packageName = "topo";
1720 version = "1.1.0";
1721 src = fetchurl {
1722 url = "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz";
1723 sha1 = "e9d751615d1bb87dc865db182fa1ca0a5ef536d5";
1724 };
1725 };
1726 "topo-2.0.2" = {
1727 name = "topo";
1728 packageName = "topo";
1729 version = "2.0.2";
1730 src = fetchurl {
1731 url = "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz";
1732 sha1 = "cd5615752539057c0dc0491a621c3bc6fbe1d182";
1733 };
1734 };
1735 "tough-cookie-2.5.0" = {
1736 name = "tough-cookie";
1737 packageName = "tough-cookie";
1738 version = "2.5.0";
1739 src = fetchurl {
1740 url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
1741 sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==";
1742 };
1743 };
1744 "tunnel-agent-0.6.0" = {
1745 name = "tunnel-agent";
1746 packageName = "tunnel-agent";
1747 version = "0.6.0";
1748 src = fetchurl {
1749 url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
1750 sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
1751 };
1752 };
1753 "tweetnacl-0.14.5" = {
1754 name = "tweetnacl";
1755 packageName = "tweetnacl";
1756 version = "0.14.5";
1757 src = fetchurl {
1758 url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
1759 sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
1760 };
1761 };
1762 "type-is-1.6.18" = {
1763 name = "type-is";
1764 packageName = "type-is";
1765 version = "1.6.18";
1766 src = fetchurl {
1767 url = "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz";
1768 sha512 = "TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==";
1769 };
1770 };
1771 "ueberdb2-0.3.8" = {
1772 name = "ueberdb2";
1773 packageName = "ueberdb2";
1774 version = "0.3.8";
1775 src = fetchurl {
1776 url = "https://registry.npmjs.org/ueberdb2/-/ueberdb2-0.3.8.tgz";
1777 sha512 = "eBjKyjQ3Ehk8phoC0ijnZD5RzJSE2wKg627hoEGowQrW+QcHwL5u2K/6pT+1wv6/PkC/VDth+b68ukG/VxrCTg==";
1778 };
1779 };
1780 "uri-js-4.2.2" = {
1781 name = "uri-js";
1782 packageName = "uri-js";
1783 version = "4.2.2";
1784 src = fetchurl {
1785 url = "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz";
1786 sha512 = "KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==";
1787 };
1788 };
1789 "uuid-3.4.0" = {
1790 name = "uuid";
1791 packageName = "uuid";
1792 version = "3.4.0";
1793 src = fetchurl {
1794 url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz";
1795 sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==";
1796 };
1797 };
1798 "vasync-1.6.4" = {
1799 name = "vasync";
1800 packageName = "vasync";
1801 version = "1.6.4";
1802 src = fetchurl {
1803 url = "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz";
1804 sha1 = "dfe93616ad0e7ae801b332a9d88bfc5cdc8e1d1f";
1805 };
1806 };
1807 "verror-1.10.0" = {
1808 name = "verror";
1809 packageName = "verror";
1810 version = "1.10.0";
1811 src = fetchurl {
1812 url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
1813 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
1814 };
1815 };
1816 "verror-1.6.0" = {
1817 name = "verror";
1818 packageName = "verror";
1819 version = "1.6.0";
1820 src = fetchurl {
1821 url = "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz";
1822 sha1 = "7d13b27b1facc2e2da90405eb5ea6e5bdd252ea5";
1823 };
1824 };
1825 "wrappy-1.0.2" = {
1826 name = "wrappy";
1827 packageName = "wrappy";
1828 version = "1.0.2";
1829 src = fetchurl {
1830 url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
1831 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
1832 };
1833 };
1834 "xml2js-0.4.23" = {
1835 name = "xml2js";
1836 packageName = "xml2js";
1837 version = "0.4.23";
1838 src = fetchurl {
1839 url = "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz";
1840 sha512 = "ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==";
1841 };
1842 };
1843 "xmlbuilder-11.0.1" = {
1844 name = "xmlbuilder";
1845 packageName = "xmlbuilder";
1846 version = "11.0.1";
1847 src = fetchurl {
1848 url = "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz";
1849 sha512 = "fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==";
1850 };
1851 };
1852 "xtend-4.0.2" = {
1853 name = "xtend";
1854 packageName = "xtend";
1855 version = "4.0.2";
1856 src = fetchurl {
1857 url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz";
1858 sha512 = "LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==";
1859 };
1860 };
1861 "yallist-3.1.1" = {
1862 name = "yallist";
1863 packageName = "yallist";
1864 version = "3.1.1";
1865 src = fetchurl {
1866 url = "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz";
1867 sha512 = "a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==";
1868 };
1869 };
1870 };
1871in
1872{
1873 ep_mypads = nodeEnv.buildNodePackage {
1874 name = "ep_mypads";
1875 packageName = "ep_mypads";
1876 version = "1.7.16";
1877 preRebuild = ''
1878 patch -p1 < ${./fix_ldap.patch}
1879 '';
1880 src = fetchurl {
1881 url = "https://registry.npmjs.org/ep_mypads/-/ep_mypads-1.7.16.tgz";
1882 sha512 = "9byCSgC6Jc/0c1t/Wd+3rwtMEhXKLSWui9hI3ZacZzIf5oSwr2hcr+6W7l6xJIzdPN6jQDnA5WGi1fnX9fSjsQ==";
1883 };
1884 dependencies = [
1885 sources."@types/ldapjs-1.0.7"
1886 sources."@types/node-13.13.4"
1887 sources."abstract-logging-1.0.0"
1888 sources."addressparser-0.3.2"
1889 sources."ajv-6.12.2"
1890 sources."ansi-regex-3.0.0"
1891 sources."ansi-styles-2.2.1"
1892 sources."asap-2.0.6"
1893 sources."asn1-0.2.3"
1894 sources."assert-plus-1.0.0"
1895 (sources."async-2.6.3" // {
1896 dependencies = [
1897 sources."lodash-4.17.15"
1898 ];
1899 })
1900 sources."asynckit-0.4.0"
1901 sources."aws-sign2-0.7.0"
1902 sources."aws4-1.9.1"
1903 sources."backoff-2.5.0"
1904 sources."balanced-match-1.0.0"
1905 sources."bcrypt-pbkdf-1.0.2"
1906 sources."bcryptjs-2.4.3"
1907 sources."bignumber.js-2.0.5"
1908 sources."bluebird-2.11.0"
1909 sources."body-parser-1.12.4"
1910 sources."brace-expansion-1.1.11"
1911 sources."browser-fingerprint-0.0.1"
1912 sources."browser-request-0.3.3"
1913 sources."buffer-equal-constant-time-1.0.1"
1914 sources."buffer-writer-1.0.1"
1915 sources."bufferjs-1.1.0"
1916 (sources."bunyan-1.8.12" // {
1917 dependencies = [
1918 sources."moment-2.24.0"
1919 ];
1920 })
1921 sources."bytes-1.0.0"
1922 sources."caseless-0.12.0"
1923 (sources."cassandra-driver-2.0.1" // {
1924 dependencies = [
1925 sources."async-0.9.2"
1926 ];
1927 })
1928 (sources."chalk-1.1.3" // {
1929 dependencies = [
1930 sources."ansi-regex-2.1.1"
1931 sources."strip-ansi-3.0.1"
1932 ];
1933 })
1934 sources."channels-0.0.4"
1935 sources."cli-progress-2.1.1"
1936 (sources."cloudant-follow-0.17.0" // {
1937 dependencies = [
1938 sources."debug-3.2.6"
1939 sources."ms-2.1.2"
1940 ];
1941 })
1942 sources."colors-1.4.0"
1943 sources."combined-stream-1.0.8"
1944 sources."commander-2.20.3"
1945 sources."concat-map-0.0.1"
1946 sources."content-type-1.0.4"
1947 sources."cookie-0.1.2"
1948 sources."cookie-parser-1.3.4"
1949 sources."cookie-signature-1.0.6"
1950 sources."core-js-1.2.7"
1951 sources."core-util-is-1.0.2"
1952 sources."cuid-1.3.8"
1953 sources."dashdash-1.14.1"
1954 sources."debug-2.2.0"
1955 sources."delayed-stream-1.0.0"
1956 sources."denque-1.4.1"
1957 sources."depd-1.0.1"
1958 sources."dirty-0.9.9"
1959 sources."dtrace-provider-0.8.8"
1960 sources."ecc-jsbn-0.1.2"
1961 sources."ecdsa-sig-formatter-1.0.11"
1962 sources."ee-first-1.1.0"
1963 sources."elasticsearch-11.0.1"
1964 sources."emailjs-0.3.16"
1965 (sources."encoding-0.1.12" // {
1966 dependencies = [
1967 sources."iconv-lite-0.4.24"
1968 ];
1969 })
1970 sources."errs-0.3.2"
1971 sources."escape-string-regexp-1.0.5"
1972 sources."extend-3.0.2"
1973 sources."extsprintf-1.2.0"
1974 sources."fast-deep-equal-3.1.1"
1975 sources."fast-json-stable-stringify-2.1.0"
1976 sources."forever-agent-0.6.1"
1977 sources."form-data-2.3.3"
1978 sources."generic-pool-2.4.3"
1979 sources."getpass-0.1.7"
1980 sources."glob-6.0.4"
1981 sources."har-schema-2.0.0"
1982 sources."har-validator-5.1.3"
1983 (sources."has-ansi-2.0.0" // {
1984 dependencies = [
1985 sources."ansi-regex-2.1.1"
1986 ];
1987 })
1988 sources."hoek-2.16.3"
1989 sources."http-signature-1.2.0"
1990 sources."iconv-lite-0.4.8"
1991 sources."inflight-1.0.6"
1992 sources."inherits-2.0.4"
1993 sources."is-fullwidth-code-point-2.0.0"
1994 sources."is-typedarray-1.0.0"
1995 sources."isarray-0.0.1"
1996 sources."isemail-1.2.0"
1997 sources."isstream-0.1.2"
1998 sources."items-2.1.2"
1999 (sources."joi-6.10.1" // {
2000 dependencies = [
2001 sources."moment-2.24.0"
2002 ];
2003 })
2004 sources."js-base64-2.1.9"
2005 sources."js-cookie-2.2.1"
2006 sources."jsbn-0.1.1"
2007 sources."json-beautify-1.1.1"
2008 sources."json-schema-0.2.3"
2009 sources."json-schema-traverse-0.4.1"
2010 sources."json-stringify-safe-5.0.1"
2011 sources."jsonminify-0.4.1"
2012 sources."jsonwebtoken-5.0.5"
2013 (sources."jsprim-1.4.1" // {
2014 dependencies = [
2015 sources."extsprintf-1.3.0"
2016 ];
2017 })
2018 sources."jwa-1.4.1"
2019 sources."jws-3.2.2"
2020 (sources."ldap-filter-0.2.2" // {
2021 dependencies = [
2022 sources."assert-plus-0.1.5"
2023 ];
2024 })
2025 sources."ldapauth-fork-4.3.3"
2026 sources."ldapjs-1.0.2"
2027 sources."lodash-3.10.1"
2028 sources."lodash-compat-3.10.2"
2029 sources."lodash.isempty-4.4.0"
2030 sources."lodash.once-4.1.1"
2031 sources."long-2.4.0"
2032 sources."lru-cache-5.1.1"
2033 sources."media-typer-0.3.0"
2034 sources."mime-db-1.44.0"
2035 sources."mime-types-2.1.27"
2036 (sources."mimelib-0.2.14" // {
2037 dependencies = [
2038 sources."addressparser-0.2.1"
2039 ];
2040 })
2041 sources."minimatch-3.0.4"
2042 sources."minimist-1.2.5"
2043 sources."mkdirp-0.5.5"
2044 sources."moment-1.7.0"
2045 sources."ms-0.7.1"
2046 sources."mv-2.1.1"
2047 sources."mysql-2.6.1"
2048 sources."nan-2.14.1"
2049 sources."nano-6.4.4"
2050 sources."ncp-2.0.0"
2051 sources."node-fingerprint-0.0.2"
2052 sources."oauth-sign-0.9.0"
2053 sources."object-assign-4.1.0"
2054 sources."on-finished-2.2.1"
2055 sources."once-1.4.0"
2056 sources."packet-reader-0.2.0"
2057 sources."passport-0.2.2"
2058 (sources."passport-jwt-3.0.1" // {
2059 dependencies = [
2060 sources."jsonwebtoken-7.4.3"
2061 sources."ms-2.1.2"
2062 ];
2063 })
2064 sources."passport-strategy-1.0.0"
2065 sources."path-is-absolute-1.0.1"
2066 sources."pause-0.0.1"
2067 sources."performance-now-2.1.0"
2068 sources."pg-6.1.3"
2069 sources."pg-connection-string-0.1.3"
2070 sources."pg-int8-1.0.1"
2071 sources."pg-pool-1.8.0"
2072 sources."pg-types-1.13.0"
2073 sources."pgpass-1.0.2"
2074 sources."postgres-array-1.0.3"
2075 sources."postgres-bytea-1.0.0"
2076 sources."postgres-date-1.0.5"
2077 sources."postgres-interval-1.2.0"
2078 sources."precond-0.2.3"
2079 sources."promise-7.3.1"
2080 sources."psl-1.8.0"
2081 sources."punycode-2.1.1"
2082 sources."qs-2.4.2"
2083 (sources."raw-body-2.0.2" // {
2084 dependencies = [
2085 sources."bytes-2.1.0"
2086 ];
2087 })
2088 sources."readable-stream-1.1.14"
2089 sources."redis-3.0.2"
2090 sources."redis-commands-1.5.0"
2091 sources."redis-errors-1.2.0"
2092 sources."redis-parser-3.0.0"
2093 (sources."request-2.88.2" // {
2094 dependencies = [
2095 sources."qs-6.5.2"
2096 ];
2097 })
2098 sources."require-all-1.0.0"
2099 sources."rethinkdb-2.4.2"
2100 sources."rimraf-2.4.5"
2101 sources."safe-buffer-5.2.0"
2102 sources."safe-json-stringify-1.2.0"
2103 sources."safer-buffer-2.1.2"
2104 sources."sax-1.2.4"
2105 sources."semver-4.3.2"
2106 (sources."simple-cas-interface-1.0.2" // {
2107 dependencies = [
2108 sources."hoek-4.2.1"
2109 sources."isemail-2.2.1"
2110 sources."joi-10.6.0"
2111 sources."topo-2.0.2"
2112 ];
2113 })
2114 sources."slugg-0.1.2"
2115 sources."split-1.0.1"
2116 sources."sshpk-1.16.1"
2117 sources."starttls-0.2.1"
2118 sources."string-width-2.1.1"
2119 sources."string_decoder-0.10.31"
2120 sources."strip-ansi-4.0.0"
2121 sources."supports-color-2.0.0"
2122 sources."through-2.3.8"
2123 sources."topo-1.1.0"
2124 sources."tough-cookie-2.5.0"
2125 sources."tunnel-agent-0.6.0"
2126 sources."tweetnacl-0.14.5"
2127 sources."type-is-1.6.18"
2128 (sources."ueberdb2-0.3.8" // {
2129 dependencies = [
2130 sources."async-0.1.15"
2131 ];
2132 })
2133 sources."uri-js-4.2.2"
2134 sources."uuid-3.4.0"
2135 (sources."vasync-1.6.4" // {
2136 dependencies = [
2137 sources."verror-1.6.0"
2138 ];
2139 })
2140 sources."verror-1.10.0"
2141 sources."wrappy-1.0.2"
2142 sources."xml2js-0.4.23"
2143 sources."xmlbuilder-11.0.1"
2144 sources."xtend-4.0.2"
2145 sources."yallist-3.1.1"
2146 ];
2147 buildInputs = globalBuildInputs;
2148 meta = {
2149 description = "Groups and private pads for etherpad";
2150 license = "Apache-2.0";
2151 };
2152 production = true;
2153 bypassCache = true;
2154 reconstructLock = true;
2155 };
2156}
diff --git a/flakes/etherpad-lite/modules/ep_page_view/node-packages.json b/flakes/etherpad-lite/modules/ep_page_view/node-packages.json
new file mode 100644
index 0000000..c5f4a7b
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_page_view/node-packages.json
@@ -0,0 +1 @@
["ep_page_view"]
diff --git a/flakes/etherpad-lite/modules/ep_page_view/node-packages.nix b/flakes/etherpad-lite/modules/ep_page_view/node-packages.nix
new file mode 100644
index 0000000..e6c6b65
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_page_view/node-packages.nix
@@ -0,0 +1,26 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_page_view = nodeEnv.buildNodePackage {
10 name = "ep_page_view";
11 packageName = "ep_page_view";
12 version = "0.5.24";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_page_view/-/ep_page_view-0.5.24.tgz";
15 sha1 = "26437c23169678f5bd53545b621b492b5b6f2ce4";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "Add support to do 'page view', with a toggle on/off option in Settings, also Page Breaks with Control Enter";
20 homepage = "https://github.com/ether/ep_page_view#readme";
21 };
22 production = true;
23 bypassCache = true;
24 reconstructLock = true;
25 };
26} \ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_previewimages/node-packages.json b/flakes/etherpad-lite/modules/ep_previewimages/node-packages.json
new file mode 100644
index 0000000..cc14ec4
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_previewimages/node-packages.json
@@ -0,0 +1 @@
[ "ep_previewimages" ]
diff --git a/flakes/etherpad-lite/modules/ep_previewimages/node-packages.nix b/flakes/etherpad-lite/modules/ep_previewimages/node-packages.nix
new file mode 100644
index 0000000..cd0972b
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_previewimages/node-packages.nix
@@ -0,0 +1,26 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_previewimages = nodeEnv.buildNodePackage {
10 name = "ep_previewimages";
11 packageName = "ep_previewimages";
12 version = "0.0.9";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_previewimages/-/ep_previewimages-0.0.9.tgz";
15 sha1 = "417d96249c50f8a59a1ef6c640e4ac98c26a106b";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "Image previewer, paste the URL of an image or upload an image using ep_fileupload";
20 homepage = https://github.com/JohnMcLear/ep_previewimages;
21 };
22 production = true;
23 bypassCache = true;
24 reconstructLock = true;
25 };
26} \ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_private_pad/node-packages.json b/flakes/etherpad-lite/modules/ep_private_pad/node-packages.json
new file mode 100644
index 0000000..c25d8c9
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_private_pad/node-packages.json
@@ -0,0 +1 @@
["ep_private_pad"]
diff --git a/flakes/etherpad-lite/modules/ep_private_pad/node-packages.nix b/flakes/etherpad-lite/modules/ep_private_pad/node-packages.nix
new file mode 100644
index 0000000..1744f52
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_private_pad/node-packages.nix
@@ -0,0 +1,2056 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {
7 "abbrev-1.1.1" = {
8 name = "abbrev";
9 packageName = "abbrev";
10 version = "1.1.1";
11 src = fetchurl {
12 url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
13 sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
14 };
15 };
16 "accepts-1.3.7" = {
17 name = "accepts";
18 packageName = "accepts";
19 version = "1.3.7";
20 src = fetchurl {
21 url = "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz";
22 sha512 = "Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==";
23 };
24 };
25 "ajv-6.12.2" = {
26 name = "ajv";
27 packageName = "ajv";
28 version = "6.12.2";
29 src = fetchurl {
30 url = "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz";
31 sha512 = "k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==";
32 };
33 };
34 "align-text-0.1.4" = {
35 name = "align-text";
36 packageName = "align-text";
37 version = "0.1.4";
38 src = fetchurl {
39 url = "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz";
40 sha1 = "0cd90a561093f35d0a99256c22b7069433fad117";
41 };
42 };
43 "ansi-regex-2.1.1" = {
44 name = "ansi-regex";
45 packageName = "ansi-regex";
46 version = "2.1.1";
47 src = fetchurl {
48 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
49 sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
50 };
51 };
52 "any-1.0.0" = {
53 name = "any";
54 packageName = "any";
55 version = "1.0.0";
56 src = fetchurl {
57 url = "https://registry.npmjs.org/any/-/any-1.0.0.tgz";
58 sha1 = "0a7b348c589faf6ba708d4a2241069ea51628b5e";
59 };
60 };
61 "aproba-1.2.0" = {
62 name = "aproba";
63 packageName = "aproba";
64 version = "1.2.0";
65 src = fetchurl {
66 url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";
67 sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==";
68 };
69 };
70 "are-we-there-yet-1.1.5" = {
71 name = "are-we-there-yet";
72 packageName = "are-we-there-yet";
73 version = "1.1.5";
74 src = fetchurl {
75 url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
76 sha512 = "5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==";
77 };
78 };
79 "arr-diff-1.1.0" = {
80 name = "arr-diff";
81 packageName = "arr-diff";
82 version = "1.1.0";
83 src = fetchurl {
84 url = "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz";
85 sha1 = "687c32758163588fef7de7b36fabe495eb1a399a";
86 };
87 };
88 "arr-flatten-1.1.0" = {
89 name = "arr-flatten";
90 packageName = "arr-flatten";
91 version = "1.1.0";
92 src = fetchurl {
93 url = "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz";
94 sha512 = "L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==";
95 };
96 };
97 "arr-map-2.0.2" = {
98 name = "arr-map";
99 packageName = "arr-map";
100 version = "2.0.2";
101 src = fetchurl {
102 url = "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz";
103 sha1 = "3a77345ffc1cf35e2a91825601f9e58f2e24cac4";
104 };
105 };
106 "arr-union-3.1.0" = {
107 name = "arr-union";
108 packageName = "arr-union";
109 version = "3.1.0";
110 src = fetchurl {
111 url = "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz";
112 sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
113 };
114 };
115 "array-each-0.1.1" = {
116 name = "array-each";
117 packageName = "array-each";
118 version = "0.1.1";
119 src = fetchurl {
120 url = "https://registry.npmjs.org/array-each/-/array-each-0.1.1.tgz";
121 sha1 = "c5d52ba8225f36d728178ba7aec413acfaddd0f9";
122 };
123 };
124 "array-flatten-1.1.1" = {
125 name = "array-flatten";
126 packageName = "array-flatten";
127 version = "1.1.1";
128 src = fetchurl {
129 url = "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz";
130 sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
131 };
132 };
133 "array-slice-0.2.3" = {
134 name = "array-slice";
135 packageName = "array-slice";
136 version = "0.2.3";
137 src = fetchurl {
138 url = "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz";
139 sha1 = "dd3cfb80ed7973a75117cdac69b0b99ec86186f5";
140 };
141 };
142 "array-unique-0.2.1" = {
143 name = "array-unique";
144 packageName = "array-unique";
145 version = "0.2.1";
146 src = fetchurl {
147 url = "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz";
148 sha1 = "a1d97ccafcbc2625cc70fadceb36a50c58b01a53";
149 };
150 };
151 "asn1-0.2.4" = {
152 name = "asn1";
153 packageName = "asn1";
154 version = "0.2.4";
155 src = fetchurl {
156 url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz";
157 sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==";
158 };
159 };
160 "assert-plus-1.0.0" = {
161 name = "assert-plus";
162 packageName = "assert-plus";
163 version = "1.0.0";
164 src = fetchurl {
165 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
166 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
167 };
168 };
169 "asynckit-0.4.0" = {
170 name = "asynckit";
171 packageName = "asynckit";
172 version = "0.4.0";
173 src = fetchurl {
174 url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
175 sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
176 };
177 };
178 "aws-sign2-0.7.0" = {
179 name = "aws-sign2";
180 packageName = "aws-sign2";
181 version = "0.7.0";
182 src = fetchurl {
183 url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
184 sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
185 };
186 };
187 "aws4-1.9.1" = {
188 name = "aws4";
189 packageName = "aws4";
190 version = "1.9.1";
191 src = fetchurl {
192 url = "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz";
193 sha512 = "wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==";
194 };
195 };
196 "balanced-match-1.0.0" = {
197 name = "balanced-match";
198 packageName = "balanced-match";
199 version = "1.0.0";
200 src = fetchurl {
201 url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
202 sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
203 };
204 };
205 "bcrypt-pbkdf-1.0.2" = {
206 name = "bcrypt-pbkdf";
207 packageName = "bcrypt-pbkdf";
208 version = "1.0.2";
209 src = fetchurl {
210 url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
211 sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
212 };
213 };
214 "bignumber.js-9.0.0" = {
215 name = "bignumber.js";
216 packageName = "bignumber.js";
217 version = "9.0.0";
218 src = fetchurl {
219 url = "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz";
220 sha512 = "t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==";
221 };
222 };
223 "block-stream-0.0.9" = {
224 name = "block-stream";
225 packageName = "block-stream";
226 version = "0.0.9";
227 src = fetchurl {
228 url = "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz";
229 sha1 = "13ebfe778a03205cfe03751481ebb4b3300c126a";
230 };
231 };
232 "body-parser-1.19.0" = {
233 name = "body-parser";
234 packageName = "body-parser";
235 version = "1.19.0";
236 src = fetchurl {
237 url = "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz";
238 sha512 = "dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==";
239 };
240 };
241 "brace-expansion-1.1.11" = {
242 name = "brace-expansion";
243 packageName = "brace-expansion";
244 version = "1.1.11";
245 src = fetchurl {
246 url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
247 sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
248 };
249 };
250 "bytes-3.1.0" = {
251 name = "bytes";
252 packageName = "bytes";
253 version = "3.1.0";
254 src = fetchurl {
255 url = "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz";
256 sha512 = "zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==";
257 };
258 };
259 "caseless-0.12.0" = {
260 name = "caseless";
261 packageName = "caseless";
262 version = "0.12.0";
263 src = fetchurl {
264 url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
265 sha1 = "1b681c21ff84033c826543090689420d187151dc";
266 };
267 };
268 "center-align-0.1.3" = {
269 name = "center-align";
270 packageName = "center-align";
271 version = "0.1.3";
272 src = fetchurl {
273 url = "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz";
274 sha1 = "aa0d32629b6ee972200411cbd4461c907bc2b7ad";
275 };
276 };
277 "client-sessions-0.8.0" = {
278 name = "client-sessions";
279 packageName = "client-sessions";
280 version = "0.8.0";
281 src = fetchurl {
282 url = "https://registry.npmjs.org/client-sessions/-/client-sessions-0.8.0.tgz";
283 sha1 = "a7d8c5558ad5d56f2a199f3533eb654b5df893fd";
284 };
285 };
286 "code-point-at-1.1.0" = {
287 name = "code-point-at";
288 packageName = "code-point-at";
289 version = "1.1.0";
290 src = fetchurl {
291 url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
292 sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
293 };
294 };
295 "combined-stream-1.0.8" = {
296 name = "combined-stream";
297 packageName = "combined-stream";
298 version = "1.0.8";
299 src = fetchurl {
300 url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
301 sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
302 };
303 };
304 "concat-map-0.0.1" = {
305 name = "concat-map";
306 packageName = "concat-map";
307 version = "0.0.1";
308 src = fetchurl {
309 url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
310 sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
311 };
312 };
313 "console-control-strings-1.1.0" = {
314 name = "console-control-strings";
315 packageName = "console-control-strings";
316 version = "1.1.0";
317 src = fetchurl {
318 url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz";
319 sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
320 };
321 };
322 "content-disposition-0.5.3" = {
323 name = "content-disposition";
324 packageName = "content-disposition";
325 version = "0.5.3";
326 src = fetchurl {
327 url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz";
328 sha512 = "ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==";
329 };
330 };
331 "content-type-1.0.4" = {
332 name = "content-type";
333 packageName = "content-type";
334 version = "1.0.4";
335 src = fetchurl {
336 url = "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz";
337 sha512 = "hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==";
338 };
339 };
340 "cookie-0.4.0" = {
341 name = "cookie";
342 packageName = "cookie";
343 version = "0.4.0";
344 src = fetchurl {
345 url = "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz";
346 sha512 = "+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==";
347 };
348 };
349 "cookie-parser-1.4.5" = {
350 name = "cookie-parser";
351 packageName = "cookie-parser";
352 version = "1.4.5";
353 src = fetchurl {
354 url = "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.5.tgz";
355 sha512 = "f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw==";
356 };
357 };
358 "cookie-signature-1.0.6" = {
359 name = "cookie-signature";
360 packageName = "cookie-signature";
361 version = "1.0.6";
362 src = fetchurl {
363 url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";
364 sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
365 };
366 };
367 "cookies-0.7.3" = {
368 name = "cookies";
369 packageName = "cookies";
370 version = "0.7.3";
371 src = fetchurl {
372 url = "https://registry.npmjs.org/cookies/-/cookies-0.7.3.tgz";
373 sha512 = "+gixgxYSgQLTaTIilDHAdlNPZDENDQernEMiIcZpYYP14zgHsCt4Ce1FEjFtcp6GefhozebB6orvhAAWx/IS0A==";
374 };
375 };
376 "core-util-is-1.0.2" = {
377 name = "core-util-is";
378 packageName = "core-util-is";
379 version = "1.0.2";
380 src = fetchurl {
381 url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
382 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
383 };
384 };
385 "dashdash-1.14.1" = {
386 name = "dashdash";
387 packageName = "dashdash";
388 version = "1.14.1";
389 src = fetchurl {
390 url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
391 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
392 };
393 };
394 "debug-2.6.9" = {
395 name = "debug";
396 packageName = "debug";
397 version = "2.6.9";
398 src = fetchurl {
399 url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
400 sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
401 };
402 };
403 "delayed-stream-1.0.0" = {
404 name = "delayed-stream";
405 packageName = "delayed-stream";
406 version = "1.0.0";
407 src = fetchurl {
408 url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
409 sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
410 };
411 };
412 "delegates-1.0.0" = {
413 name = "delegates";
414 packageName = "delegates";
415 version = "1.0.0";
416 src = fetchurl {
417 url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz";
418 sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
419 };
420 };
421 "depd-1.1.2" = {
422 name = "depd";
423 packageName = "depd";
424 version = "1.1.2";
425 src = fetchurl {
426 url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz";
427 sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
428 };
429 };
430 "depd-2.0.0" = {
431 name = "depd";
432 packageName = "depd";
433 version = "2.0.0";
434 src = fetchurl {
435 url = "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz";
436 sha512 = "g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==";
437 };
438 };
439 "destroy-1.0.4" = {
440 name = "destroy";
441 packageName = "destroy";
442 version = "1.0.4";
443 src = fetchurl {
444 url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz";
445 sha1 = "978857442c44749e4206613e37946205826abd80";
446 };
447 };
448 "ecc-jsbn-0.1.2" = {
449 name = "ecc-jsbn";
450 packageName = "ecc-jsbn";
451 version = "0.1.2";
452 src = fetchurl {
453 url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
454 sha1 = "3a83a904e54353287874c564b7549386849a98c9";
455 };
456 };
457 "ee-first-1.1.1" = {
458 name = "ee-first";
459 packageName = "ee-first";
460 version = "1.1.1";
461 src = fetchurl {
462 url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
463 sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
464 };
465 };
466 "eejs-1.0.0" = {
467 name = "eejs";
468 packageName = "eejs";
469 version = "1.0.0";
470 src = fetchurl {
471 url = "https://registry.npmjs.org/eejs/-/eejs-1.0.0.tgz";
472 sha1 = "9173f565da10c5d0a7943df7f76bed8381f5bb6b";
473 };
474 };
475 "ejs-1.0.0" = {
476 name = "ejs";
477 packageName = "ejs";
478 version = "1.0.0";
479 src = fetchurl {
480 url = "https://registry.npmjs.org/ejs/-/ejs-1.0.0.tgz";
481 sha1 = "c9c60a48a46ee452fb32a71c317b95e5aa1fcb3d";
482 };
483 };
484 "encodeurl-1.0.2" = {
485 name = "encodeurl";
486 packageName = "encodeurl";
487 version = "1.0.2";
488 src = fetchurl {
489 url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz";
490 sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
491 };
492 };
493 "escape-html-1.0.3" = {
494 name = "escape-html";
495 packageName = "escape-html";
496 version = "1.0.3";
497 src = fetchurl {
498 url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
499 sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
500 };
501 };
502 "etag-1.8.1" = {
503 name = "etag";
504 packageName = "etag";
505 version = "1.8.1";
506 src = fetchurl {
507 url = "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz";
508 sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
509 };
510 };
511 "etherpad-lite-client-0.8.0" = {
512 name = "etherpad-lite-client";
513 packageName = "etherpad-lite-client";
514 version = "0.8.0";
515 src = fetchurl {
516 url = "https://registry.npmjs.org/etherpad-lite-client/-/etherpad-lite-client-0.8.0.tgz";
517 sha1 = "c7db6240f5ca1b09d039b40eaecf3ca2f00a0979";
518 };
519 };
520 "export-dirs-0.2.4" = {
521 name = "export-dirs";
522 packageName = "export-dirs";
523 version = "0.2.4";
524 src = fetchurl {
525 url = "https://registry.npmjs.org/export-dirs/-/export-dirs-0.2.4.tgz";
526 sha1 = "2e16b9b46ebc2c07acb657ccdfbe3845393fe742";
527 };
528 };
529 "export-files-2.1.1" = {
530 name = "export-files";
531 packageName = "export-files";
532 version = "2.1.1";
533 src = fetchurl {
534 url = "https://registry.npmjs.org/export-files/-/export-files-2.1.1.tgz";
535 sha1 = "bbf64574053a09e4eb98e5f43501d572b2c3ce7f";
536 };
537 };
538 "express-4.17.1" = {
539 name = "express";
540 packageName = "express";
541 version = "4.17.1";
542 src = fetchurl {
543 url = "https://registry.npmjs.org/express/-/express-4.17.1.tgz";
544 sha512 = "mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==";
545 };
546 };
547 "express-session-1.17.1" = {
548 name = "express-session";
549 packageName = "express-session";
550 version = "1.17.1";
551 src = fetchurl {
552 url = "https://registry.npmjs.org/express-session/-/express-session-1.17.1.tgz";
553 sha512 = "UbHwgqjxQZJiWRTMyhvWGvjBQduGCSBDhhZXYenziMFjxst5rMV+aJZ6hKPHZnPyHGsrqRICxtX8jtEbm/z36Q==";
554 };
555 };
556 "extend-3.0.2" = {
557 name = "extend";
558 packageName = "extend";
559 version = "3.0.2";
560 src = fetchurl {
561 url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
562 sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
563 };
564 };
565 "extsprintf-1.3.0" = {
566 name = "extsprintf";
567 packageName = "extsprintf";
568 version = "1.3.0";
569 src = fetchurl {
570 url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
571 sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
572 };
573 };
574 "fast-deep-equal-3.1.1" = {
575 name = "fast-deep-equal";
576 packageName = "fast-deep-equal";
577 version = "3.1.1";
578 src = fetchurl {
579 url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
580 sha512 = "8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==";
581 };
582 };
583 "fast-json-stable-stringify-2.1.0" = {
584 name = "fast-json-stable-stringify";
585 packageName = "fast-json-stable-stringify";
586 version = "2.1.0";
587 src = fetchurl {
588 url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
589 sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==";
590 };
591 };
592 "finalhandler-1.1.2" = {
593 name = "finalhandler";
594 packageName = "finalhandler";
595 version = "1.1.2";
596 src = fetchurl {
597 url = "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz";
598 sha512 = "aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==";
599 };
600 };
601 "for-in-0.1.8" = {
602 name = "for-in";
603 packageName = "for-in";
604 version = "0.1.8";
605 src = fetchurl {
606 url = "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz";
607 sha1 = "d8773908e31256109952b1fdb9b3fa867d2775e1";
608 };
609 };
610 "for-in-1.0.2" = {
611 name = "for-in";
612 packageName = "for-in";
613 version = "1.0.2";
614 src = fetchurl {
615 url = "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz";
616 sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
617 };
618 };
619 "for-own-0.1.5" = {
620 name = "for-own";
621 packageName = "for-own";
622 version = "0.1.5";
623 src = fetchurl {
624 url = "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz";
625 sha1 = "5265c681a4f294dabbf17c9509b6763aa84510ce";
626 };
627 };
628 "forever-agent-0.6.1" = {
629 name = "forever-agent";
630 packageName = "forever-agent";
631 version = "0.6.1";
632 src = fetchurl {
633 url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
634 sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
635 };
636 };
637 "form-data-2.3.3" = {
638 name = "form-data";
639 packageName = "form-data";
640 version = "2.3.3";
641 src = fetchurl {
642 url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
643 sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
644 };
645 };
646 "forwarded-0.1.2" = {
647 name = "forwarded";
648 packageName = "forwarded";
649 version = "0.1.2";
650 src = fetchurl {
651 url = "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz";
652 sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
653 };
654 };
655 "fresh-0.5.2" = {
656 name = "fresh";
657 packageName = "fresh";
658 version = "0.5.2";
659 src = fetchurl {
660 url = "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz";
661 sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
662 };
663 };
664 "fs.realpath-1.0.0" = {
665 name = "fs.realpath";
666 packageName = "fs.realpath";
667 version = "1.0.0";
668 src = fetchurl {
669 url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
670 sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
671 };
672 };
673 "fstream-1.0.12" = {
674 name = "fstream";
675 packageName = "fstream";
676 version = "1.0.12";
677 src = fetchurl {
678 url = "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz";
679 sha512 = "WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==";
680 };
681 };
682 "gauge-2.7.4" = {
683 name = "gauge";
684 packageName = "gauge";
685 version = "2.7.4";
686 src = fetchurl {
687 url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz";
688 sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
689 };
690 };
691 "getpass-0.1.7" = {
692 name = "getpass";
693 packageName = "getpass";
694 version = "0.1.7";
695 src = fetchurl {
696 url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
697 sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
698 };
699 };
700 "glob-7.1.6" = {
701 name = "glob";
702 packageName = "glob";
703 version = "7.1.6";
704 src = fetchurl {
705 url = "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz";
706 sha512 = "LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==";
707 };
708 };
709 "graceful-fs-4.2.4" = {
710 name = "graceful-fs";
711 packageName = "graceful-fs";
712 version = "4.2.4";
713 src = fetchurl {
714 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz";
715 sha512 = "WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==";
716 };
717 };
718 "har-schema-2.0.0" = {
719 name = "har-schema";
720 packageName = "har-schema";
721 version = "2.0.0";
722 src = fetchurl {
723 url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
724 sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
725 };
726 };
727 "har-validator-5.1.3" = {
728 name = "har-validator";
729 packageName = "har-validator";
730 version = "5.1.3";
731 src = fetchurl {
732 url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz";
733 sha512 = "sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==";
734 };
735 };
736 "has-unicode-2.0.1" = {
737 name = "has-unicode";
738 packageName = "has-unicode";
739 version = "2.0.1";
740 src = fetchurl {
741 url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz";
742 sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
743 };
744 };
745 "has-values-0.1.4" = {
746 name = "has-values";
747 packageName = "has-values";
748 version = "0.1.4";
749 src = fetchurl {
750 url = "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz";
751 sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
752 };
753 };
754 "http-errors-1.7.2" = {
755 name = "http-errors";
756 packageName = "http-errors";
757 version = "1.7.2";
758 src = fetchurl {
759 url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz";
760 sha512 = "uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==";
761 };
762 };
763 "http-signature-1.2.0" = {
764 name = "http-signature";
765 packageName = "http-signature";
766 version = "1.2.0";
767 src = fetchurl {
768 url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
769 sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
770 };
771 };
772 "iconv-lite-0.4.24" = {
773 name = "iconv-lite";
774 packageName = "iconv-lite";
775 version = "0.4.24";
776 src = fetchurl {
777 url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
778 sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==";
779 };
780 };
781 "inflight-1.0.6" = {
782 name = "inflight";
783 packageName = "inflight";
784 version = "1.0.6";
785 src = fetchurl {
786 url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
787 sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
788 };
789 };
790 "inherits-2.0.3" = {
791 name = "inherits";
792 packageName = "inherits";
793 version = "2.0.3";
794 src = fetchurl {
795 url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
796 sha1 = "633c2c83e3da42a502f52466022480f4208261de";
797 };
798 };
799 "ipaddr.js-1.9.1" = {
800 name = "ipaddr.js";
801 packageName = "ipaddr.js";
802 version = "1.9.1";
803 src = fetchurl {
804 url = "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz";
805 sha512 = "0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==";
806 };
807 };
808 "is-buffer-1.1.6" = {
809 name = "is-buffer";
810 packageName = "is-buffer";
811 version = "1.1.6";
812 src = fetchurl {
813 url = "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz";
814 sha512 = "NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==";
815 };
816 };
817 "is-extendable-0.1.1" = {
818 name = "is-extendable";
819 packageName = "is-extendable";
820 version = "0.1.1";
821 src = fetchurl {
822 url = "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz";
823 sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
824 };
825 };
826 "is-fullwidth-code-point-1.0.0" = {
827 name = "is-fullwidth-code-point";
828 packageName = "is-fullwidth-code-point";
829 version = "1.0.0";
830 src = fetchurl {
831 url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
832 sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
833 };
834 };
835 "is-number-2.1.0" = {
836 name = "is-number";
837 packageName = "is-number";
838 version = "2.1.0";
839 src = fetchurl {
840 url = "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz";
841 sha1 = "01fcbbb393463a548f2f466cce16dece49db908f";
842 };
843 };
844 "is-plain-object-2.0.4" = {
845 name = "is-plain-object";
846 packageName = "is-plain-object";
847 version = "2.0.4";
848 src = fetchurl {
849 url = "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz";
850 sha512 = "h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==";
851 };
852 };
853 "is-typedarray-1.0.0" = {
854 name = "is-typedarray";
855 packageName = "is-typedarray";
856 version = "1.0.0";
857 src = fetchurl {
858 url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
859 sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
860 };
861 };
862 "isarray-1.0.0" = {
863 name = "isarray";
864 packageName = "isarray";
865 version = "1.0.0";
866 src = fetchurl {
867 url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
868 sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
869 };
870 };
871 "isexe-2.0.0" = {
872 name = "isexe";
873 packageName = "isexe";
874 version = "2.0.0";
875 src = fetchurl {
876 url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz";
877 sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
878 };
879 };
880 "isobject-1.0.2" = {
881 name = "isobject";
882 packageName = "isobject";
883 version = "1.0.2";
884 src = fetchurl {
885 url = "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz";
886 sha1 = "f0f9b8ce92dd540fa0740882e3835a2e022ec78a";
887 };
888 };
889 "isobject-3.0.1" = {
890 name = "isobject";
891 packageName = "isobject";
892 version = "3.0.1";
893 src = fetchurl {
894 url = "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz";
895 sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
896 };
897 };
898 "isstream-0.1.2" = {
899 name = "isstream";
900 packageName = "isstream";
901 version = "0.1.2";
902 src = fetchurl {
903 url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
904 sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
905 };
906 };
907 "jsbn-0.1.1" = {
908 name = "jsbn";
909 packageName = "jsbn";
910 version = "0.1.1";
911 src = fetchurl {
912 url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
913 sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
914 };
915 };
916 "json-schema-0.2.3" = {
917 name = "json-schema";
918 packageName = "json-schema";
919 version = "0.2.3";
920 src = fetchurl {
921 url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
922 sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
923 };
924 };
925 "json-schema-traverse-0.4.1" = {
926 name = "json-schema-traverse";
927 packageName = "json-schema-traverse";
928 version = "0.4.1";
929 src = fetchurl {
930 url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
931 sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
932 };
933 };
934 "json-stringify-safe-5.0.1" = {
935 name = "json-stringify-safe";
936 packageName = "json-stringify-safe";
937 version = "5.0.1";
938 src = fetchurl {
939 url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
940 sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
941 };
942 };
943 "jsprim-1.4.1" = {
944 name = "jsprim";
945 packageName = "jsprim";
946 version = "1.4.1";
947 src = fetchurl {
948 url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
949 sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
950 };
951 };
952 "keygrip-1.0.3" = {
953 name = "keygrip";
954 packageName = "keygrip";
955 version = "1.0.3";
956 src = fetchurl {
957 url = "https://registry.npmjs.org/keygrip/-/keygrip-1.0.3.tgz";
958 sha512 = "/PpesirAIfaklxUzp4Yb7xBper9MwP6hNRA6BGGUFCgbJ+BM5CKBtsoxinNXkLHAr+GXS1/lSlF2rP7cv5Fl+g==";
959 };
960 };
961 "kind-of-2.0.1" = {
962 name = "kind-of";
963 packageName = "kind-of";
964 version = "2.0.1";
965 src = fetchurl {
966 url = "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz";
967 sha1 = "018ec7a4ce7e3a86cb9141be519d24c8faa981b5";
968 };
969 };
970 "kind-of-3.2.2" = {
971 name = "kind-of";
972 packageName = "kind-of";
973 version = "3.2.2";
974 src = fetchurl {
975 url = "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz";
976 sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
977 };
978 };
979 "kind-of-6.0.3" = {
980 name = "kind-of";
981 packageName = "kind-of";
982 version = "6.0.3";
983 src = fetchurl {
984 url = "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz";
985 sha512 = "dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==";
986 };
987 };
988 "lazy-cache-1.0.4" = {
989 name = "lazy-cache";
990 packageName = "lazy-cache";
991 version = "1.0.4";
992 src = fetchurl {
993 url = "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz";
994 sha1 = "a1d78fc3a50474cb80845d3b3b6e1da49a446e8e";
995 };
996 };
997 "longest-1.0.1" = {
998 name = "longest";
999 packageName = "longest";
1000 version = "1.0.1";
1001 src = fetchurl {
1002 url = "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz";
1003 sha1 = "30a0b2da38f73770e8294a0d22e6625ed77d0097";
1004 };
1005 };
1006 "make-iterator-0.1.1" = {
1007 name = "make-iterator";
1008 packageName = "make-iterator";
1009 version = "0.1.1";
1010 src = fetchurl {
1011 url = "https://registry.npmjs.org/make-iterator/-/make-iterator-0.1.1.tgz";
1012 sha1 = "873d27b8198a465a81483b6f5d16da4e863ecf5b";
1013 };
1014 };
1015 "make-iterator-0.2.1" = {
1016 name = "make-iterator";
1017 packageName = "make-iterator";
1018 version = "0.2.1";
1019 src = fetchurl {
1020 url = "https://registry.npmjs.org/make-iterator/-/make-iterator-0.2.1.tgz";
1021 sha1 = "a19c660132b54ae6d64f881ec14056c746dbe972";
1022 };
1023 };
1024 "make-iterator-1.0.1" = {
1025 name = "make-iterator";
1026 packageName = "make-iterator";
1027 version = "1.0.1";
1028 src = fetchurl {
1029 url = "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz";
1030 sha512 = "pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==";
1031 };
1032 };
1033 "media-typer-0.3.0" = {
1034 name = "media-typer";
1035 packageName = "media-typer";
1036 version = "0.3.0";
1037 src = fetchurl {
1038 url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz";
1039 sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
1040 };
1041 };
1042 "merge-descriptors-1.0.1" = {
1043 name = "merge-descriptors";
1044 packageName = "merge-descriptors";
1045 version = "1.0.1";
1046 src = fetchurl {
1047 url = "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
1048 sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
1049 };
1050 };
1051 "methods-1.1.2" = {
1052 name = "methods";
1053 packageName = "methods";
1054 version = "1.1.2";
1055 src = fetchurl {
1056 url = "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz";
1057 sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
1058 };
1059 };
1060 "mime-1.6.0" = {
1061 name = "mime";
1062 packageName = "mime";
1063 version = "1.6.0";
1064 src = fetchurl {
1065 url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz";
1066 sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
1067 };
1068 };
1069 "mime-db-1.44.0" = {
1070 name = "mime-db";
1071 packageName = "mime-db";
1072 version = "1.44.0";
1073 src = fetchurl {
1074 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz";
1075 sha512 = "/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==";
1076 };
1077 };
1078 "mime-types-2.1.27" = {
1079 name = "mime-types";
1080 packageName = "mime-types";
1081 version = "2.1.27";
1082 src = fetchurl {
1083 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz";
1084 sha512 = "JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==";
1085 };
1086 };
1087 "minimatch-3.0.4" = {
1088 name = "minimatch";
1089 packageName = "minimatch";
1090 version = "3.0.4";
1091 src = fetchurl {
1092 url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
1093 sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
1094 };
1095 };
1096 "minimist-1.2.5" = {
1097 name = "minimist";
1098 packageName = "minimist";
1099 version = "1.2.5";
1100 src = fetchurl {
1101 url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
1102 sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
1103 };
1104 };
1105 "mkdirp-0.5.5" = {
1106 name = "mkdirp";
1107 packageName = "mkdirp";
1108 version = "0.5.5";
1109 src = fetchurl {
1110 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
1111 sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
1112 };
1113 };
1114 "ms-2.0.0" = {
1115 name = "ms";
1116 packageName = "ms";
1117 version = "2.0.0";
1118 src = fetchurl {
1119 url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
1120 sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
1121 };
1122 };
1123 "ms-2.1.1" = {
1124 name = "ms";
1125 packageName = "ms";
1126 version = "2.1.1";
1127 src = fetchurl {
1128 url = "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz";
1129 sha512 = "tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==";
1130 };
1131 };
1132 "mysql-2.18.1" = {
1133 name = "mysql";
1134 packageName = "mysql";
1135 version = "2.18.1";
1136 src = fetchurl {
1137 url = "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz";
1138 sha512 = "Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==";
1139 };
1140 };
1141 "negotiator-0.6.2" = {
1142 name = "negotiator";
1143 packageName = "negotiator";
1144 version = "0.6.2";
1145 src = fetchurl {
1146 url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz";
1147 sha512 = "hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==";
1148 };
1149 };
1150 "node-gyp-3.8.0" = {
1151 name = "node-gyp";
1152 packageName = "node-gyp";
1153 version = "3.8.0";
1154 src = fetchurl {
1155 url = "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz";
1156 sha512 = "3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==";
1157 };
1158 };
1159 "nopt-3.0.6" = {
1160 name = "nopt";
1161 packageName = "nopt";
1162 version = "3.0.6";
1163 src = fetchurl {
1164 url = "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz";
1165 sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
1166 };
1167 };
1168 "npmlog-4.1.2" = {
1169 name = "npmlog";
1170 packageName = "npmlog";
1171 version = "4.1.2";
1172 src = fetchurl {
1173 url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz";
1174 sha512 = "2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==";
1175 };
1176 };
1177 "number-is-nan-1.0.1" = {
1178 name = "number-is-nan";
1179 packageName = "number-is-nan";
1180 version = "1.0.1";
1181 src = fetchurl {
1182 url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
1183 sha1 = "097b602b53422a522c1afb8790318336941a011d";
1184 };
1185 };
1186 "oauth-sign-0.9.0" = {
1187 name = "oauth-sign";
1188 packageName = "oauth-sign";
1189 version = "0.9.0";
1190 src = fetchurl {
1191 url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
1192 sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
1193 };
1194 };
1195 "object-assign-4.1.1" = {
1196 name = "object-assign";
1197 packageName = "object-assign";
1198 version = "4.1.1";
1199 src = fetchurl {
1200 url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
1201 sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
1202 };
1203 };
1204 "object.defaults-0.3.0" = {
1205 name = "object.defaults";
1206 packageName = "object.defaults";
1207 version = "0.3.0";
1208 src = fetchurl {
1209 url = "https://registry.npmjs.org/object.defaults/-/object.defaults-0.3.0.tgz";
1210 sha1 = "b1eb9cbc78c4c7bd56cac6cae3dead5a7113882a";
1211 };
1212 };
1213 "object.filter-0.3.0" = {
1214 name = "object.filter";
1215 packageName = "object.filter";
1216 version = "0.3.0";
1217 src = fetchurl {
1218 url = "https://registry.npmjs.org/object.filter/-/object.filter-0.3.0.tgz";
1219 sha1 = "1091c69394b44f96d9d6356dd08785028ad6bff9";
1220 };
1221 };
1222 "object.omit-2.0.1" = {
1223 name = "object.omit";
1224 packageName = "object.omit";
1225 version = "2.0.1";
1226 src = fetchurl {
1227 url = "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz";
1228 sha1 = "1a9c744829f39dbb858c76ca3579ae2a54ebd1fa";
1229 };
1230 };
1231 "object.pick-1.3.0" = {
1232 name = "object.pick";
1233 packageName = "object.pick";
1234 version = "1.3.0";
1235 src = fetchurl {
1236 url = "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz";
1237 sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
1238 };
1239 };
1240 "object.reduce-0.1.7" = {
1241 name = "object.reduce";
1242 packageName = "object.reduce";
1243 version = "0.1.7";
1244 src = fetchurl {
1245 url = "https://registry.npmjs.org/object.reduce/-/object.reduce-0.1.7.tgz";
1246 sha1 = "d180e84f72d218348af45352b55165246b95046d";
1247 };
1248 };
1249 "on-finished-2.3.0" = {
1250 name = "on-finished";
1251 packageName = "on-finished";
1252 version = "2.3.0";
1253 src = fetchurl {
1254 url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
1255 sha1 = "20f1336481b083cd75337992a16971aa2d906947";
1256 };
1257 };
1258 "on-headers-1.0.2" = {
1259 name = "on-headers";
1260 packageName = "on-headers";
1261 version = "1.0.2";
1262 src = fetchurl {
1263 url = "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz";
1264 sha512 = "pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==";
1265 };
1266 };
1267 "once-1.4.0" = {
1268 name = "once";
1269 packageName = "once";
1270 version = "1.4.0";
1271 src = fetchurl {
1272 url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
1273 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
1274 };
1275 };
1276 "os-homedir-1.0.2" = {
1277 name = "os-homedir";
1278 packageName = "os-homedir";
1279 version = "1.0.2";
1280 src = fetchurl {
1281 url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
1282 sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
1283 };
1284 };
1285 "os-tmpdir-1.0.2" = {
1286 name = "os-tmpdir";
1287 packageName = "os-tmpdir";
1288 version = "1.0.2";
1289 src = fetchurl {
1290 url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
1291 sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
1292 };
1293 };
1294 "osenv-0.1.5" = {
1295 name = "osenv";
1296 packageName = "osenv";
1297 version = "0.1.5";
1298 src = fetchurl {
1299 url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
1300 sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==";
1301 };
1302 };
1303 "parseurl-1.3.3" = {
1304 name = "parseurl";
1305 packageName = "parseurl";
1306 version = "1.3.3";
1307 src = fetchurl {
1308 url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz";
1309 sha512 = "CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==";
1310 };
1311 };
1312 "password-hash-1.2.2" = {
1313 name = "password-hash";
1314 packageName = "password-hash";
1315 version = "1.2.2";
1316 src = fetchurl {
1317 url = "https://registry.npmjs.org/password-hash/-/password-hash-1.2.2.tgz";
1318 sha1 = "3b451f014de4b2e1ebfa0e5493b9517b1063af1d";
1319 };
1320 };
1321 "path-is-absolute-1.0.1" = {
1322 name = "path-is-absolute";
1323 packageName = "path-is-absolute";
1324 version = "1.0.1";
1325 src = fetchurl {
1326 url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
1327 sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
1328 };
1329 };
1330 "path-to-regexp-0.1.7" = {
1331 name = "path-to-regexp";
1332 packageName = "path-to-regexp";
1333 version = "0.1.7";
1334 src = fetchurl {
1335 url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
1336 sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
1337 };
1338 };
1339 "performance-now-2.1.0" = {
1340 name = "performance-now";
1341 packageName = "performance-now";
1342 version = "2.1.0";
1343 src = fetchurl {
1344 url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
1345 sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
1346 };
1347 };
1348 "process-nextick-args-2.0.1" = {
1349 name = "process-nextick-args";
1350 packageName = "process-nextick-args";
1351 version = "2.0.1";
1352 src = fetchurl {
1353 url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
1354 sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
1355 };
1356 };
1357 "proxy-addr-2.0.6" = {
1358 name = "proxy-addr";
1359 packageName = "proxy-addr";
1360 version = "2.0.6";
1361 src = fetchurl {
1362 url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz";
1363 sha512 = "dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==";
1364 };
1365 };
1366 "psl-1.8.0" = {
1367 name = "psl";
1368 packageName = "psl";
1369 version = "1.8.0";
1370 src = fetchurl {
1371 url = "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz";
1372 sha512 = "RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==";
1373 };
1374 };
1375 "punycode-2.1.1" = {
1376 name = "punycode";
1377 packageName = "punycode";
1378 version = "2.1.1";
1379 src = fetchurl {
1380 url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
1381 sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==";
1382 };
1383 };
1384 "qs-6.5.2" = {
1385 name = "qs";
1386 packageName = "qs";
1387 version = "6.5.2";
1388 src = fetchurl {
1389 url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
1390 sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==";
1391 };
1392 };
1393 "qs-6.7.0" = {
1394 name = "qs";
1395 packageName = "qs";
1396 version = "6.7.0";
1397 src = fetchurl {
1398 url = "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz";
1399 sha512 = "VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==";
1400 };
1401 };
1402 "random-bytes-1.0.0" = {
1403 name = "random-bytes";
1404 packageName = "random-bytes";
1405 version = "1.0.0";
1406 src = fetchurl {
1407 url = "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz";
1408 sha1 = "4f68a1dc0ae58bd3fb95848c30324db75d64360b";
1409 };
1410 };
1411 "range-parser-1.2.1" = {
1412 name = "range-parser";
1413 packageName = "range-parser";
1414 version = "1.2.1";
1415 src = fetchurl {
1416 url = "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz";
1417 sha512 = "Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==";
1418 };
1419 };
1420 "raw-body-2.4.0" = {
1421 name = "raw-body";
1422 packageName = "raw-body";
1423 version = "2.4.0";
1424 src = fetchurl {
1425 url = "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz";
1426 sha512 = "4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==";
1427 };
1428 };
1429 "readable-stream-2.3.7" = {
1430 name = "readable-stream";
1431 packageName = "readable-stream";
1432 version = "2.3.7";
1433 src = fetchurl {
1434 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
1435 sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
1436 };
1437 };
1438 "repeat-string-1.6.1" = {
1439 name = "repeat-string";
1440 packageName = "repeat-string";
1441 version = "1.6.1";
1442 src = fetchurl {
1443 url = "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz";
1444 sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
1445 };
1446 };
1447 "request-2.88.2" = {
1448 name = "request";
1449 packageName = "request";
1450 version = "2.88.2";
1451 src = fetchurl {
1452 url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz";
1453 sha512 = "MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==";
1454 };
1455 };
1456 "right-align-0.1.3" = {
1457 name = "right-align";
1458 packageName = "right-align";
1459 version = "0.1.3";
1460 src = fetchurl {
1461 url = "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz";
1462 sha1 = "61339b722fe6a3515689210d24e14c96148613ef";
1463 };
1464 };
1465 "rimraf-2.7.1" = {
1466 name = "rimraf";
1467 packageName = "rimraf";
1468 version = "2.7.1";
1469 src = fetchurl {
1470 url = "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz";
1471 sha512 = "uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==";
1472 };
1473 };
1474 "safe-buffer-5.1.2" = {
1475 name = "safe-buffer";
1476 packageName = "safe-buffer";
1477 version = "5.1.2";
1478 src = fetchurl {
1479 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
1480 sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
1481 };
1482 };
1483 "safe-buffer-5.2.0" = {
1484 name = "safe-buffer";
1485 packageName = "safe-buffer";
1486 version = "5.2.0";
1487 src = fetchurl {
1488 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz";
1489 sha512 = "fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==";
1490 };
1491 };
1492 "safer-buffer-2.1.2" = {
1493 name = "safer-buffer";
1494 packageName = "safer-buffer";
1495 version = "2.1.2";
1496 src = fetchurl {
1497 url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
1498 sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
1499 };
1500 };
1501 "semver-5.3.0" = {
1502 name = "semver";
1503 packageName = "semver";
1504 version = "5.3.0";
1505 src = fetchurl {
1506 url = "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz";
1507 sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f";
1508 };
1509 };
1510 "send-0.17.1" = {
1511 name = "send";
1512 packageName = "send";
1513 version = "0.17.1";
1514 src = fetchurl {
1515 url = "https://registry.npmjs.org/send/-/send-0.17.1.tgz";
1516 sha512 = "BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==";
1517 };
1518 };
1519 "serve-static-1.14.1" = {
1520 name = "serve-static";
1521 packageName = "serve-static";
1522 version = "1.14.1";
1523 src = fetchurl {
1524 url = "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz";
1525 sha512 = "JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==";
1526 };
1527 };
1528 "set-blocking-2.0.0" = {
1529 name = "set-blocking";
1530 packageName = "set-blocking";
1531 version = "2.0.0";
1532 src = fetchurl {
1533 url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
1534 sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
1535 };
1536 };
1537 "setprototypeof-1.1.1" = {
1538 name = "setprototypeof";
1539 packageName = "setprototypeof";
1540 version = "1.1.1";
1541 src = fetchurl {
1542 url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz";
1543 sha512 = "JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==";
1544 };
1545 };
1546 "signal-exit-3.0.3" = {
1547 name = "signal-exit";
1548 packageName = "signal-exit";
1549 version = "3.0.3";
1550 src = fetchurl {
1551 url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz";
1552 sha512 = "VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==";
1553 };
1554 };
1555 "sqlstring-2.3.1" = {
1556 name = "sqlstring";
1557 packageName = "sqlstring";
1558 version = "2.3.1";
1559 src = fetchurl {
1560 url = "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz";
1561 sha1 = "475393ff9e91479aea62dcaf0ca3d14983a7fb40";
1562 };
1563 };
1564 "sshpk-1.16.1" = {
1565 name = "sshpk";
1566 packageName = "sshpk";
1567 version = "1.16.1";
1568 src = fetchurl {
1569 url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
1570 sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
1571 };
1572 };
1573 "statuses-1.5.0" = {
1574 name = "statuses";
1575 packageName = "statuses";
1576 version = "1.5.0";
1577 src = fetchurl {
1578 url = "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz";
1579 sha1 = "161c7dac177659fd9811f43771fa99381478628c";
1580 };
1581 };
1582 "string-width-1.0.2" = {
1583 name = "string-width";
1584 packageName = "string-width";
1585 version = "1.0.2";
1586 src = fetchurl {
1587 url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
1588 sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
1589 };
1590 };
1591 "string_decoder-1.1.1" = {
1592 name = "string_decoder";
1593 packageName = "string_decoder";
1594 version = "1.1.1";
1595 src = fetchurl {
1596 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
1597 sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
1598 };
1599 };
1600 "strip-ansi-3.0.1" = {
1601 name = "strip-ansi";
1602 packageName = "strip-ansi";
1603 version = "3.0.1";
1604 src = fetchurl {
1605 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
1606 sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
1607 };
1608 };
1609 "striptags-2.2.1" = {
1610 name = "striptags";
1611 packageName = "striptags";
1612 version = "2.2.1";
1613 src = fetchurl {
1614 url = "https://registry.npmjs.org/striptags/-/striptags-2.2.1.tgz";
1615 sha1 = "4c450b708d41b8bf39cf24c49ff234fc6aabfd32";
1616 };
1617 };
1618 "tar-2.2.2" = {
1619 name = "tar";
1620 packageName = "tar";
1621 version = "2.2.2";
1622 src = fetchurl {
1623 url = "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz";
1624 sha512 = "FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==";
1625 };
1626 };
1627 "toidentifier-1.0.0" = {
1628 name = "toidentifier";
1629 packageName = "toidentifier";
1630 version = "1.0.0";
1631 src = fetchurl {
1632 url = "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz";
1633 sha512 = "yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==";
1634 };
1635 };
1636 "tough-cookie-2.5.0" = {
1637 name = "tough-cookie";
1638 packageName = "tough-cookie";
1639 version = "2.5.0";
1640 src = fetchurl {
1641 url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
1642 sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==";
1643 };
1644 };
1645 "tunnel-agent-0.6.0" = {
1646 name = "tunnel-agent";
1647 packageName = "tunnel-agent";
1648 version = "0.6.0";
1649 src = fetchurl {
1650 url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
1651 sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
1652 };
1653 };
1654 "tweetnacl-0.14.5" = {
1655 name = "tweetnacl";
1656 packageName = "tweetnacl";
1657 version = "0.14.5";
1658 src = fetchurl {
1659 url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
1660 sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
1661 };
1662 };
1663 "type-is-1.6.18" = {
1664 name = "type-is";
1665 packageName = "type-is";
1666 version = "1.6.18";
1667 src = fetchurl {
1668 url = "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz";
1669 sha512 = "TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==";
1670 };
1671 };
1672 "uid-safe-2.1.5" = {
1673 name = "uid-safe";
1674 packageName = "uid-safe";
1675 version = "2.1.5";
1676 src = fetchurl {
1677 url = "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz";
1678 sha512 = "KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==";
1679 };
1680 };
1681 "underscore-1.3.3" = {
1682 name = "underscore";
1683 packageName = "underscore";
1684 version = "1.3.3";
1685 src = fetchurl {
1686 url = "https://registry.npmjs.org/underscore/-/underscore-1.3.3.tgz";
1687 sha1 = "47ac53683daf832bfa952e1774417da47817ae42";
1688 };
1689 };
1690 "unpipe-1.0.0" = {
1691 name = "unpipe";
1692 packageName = "unpipe";
1693 version = "1.0.0";
1694 src = fetchurl {
1695 url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz";
1696 sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
1697 };
1698 };
1699 "uri-js-4.2.2" = {
1700 name = "uri-js";
1701 packageName = "uri-js";
1702 version = "4.2.2";
1703 src = fetchurl {
1704 url = "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz";
1705 sha512 = "KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==";
1706 };
1707 };
1708 "util-deprecate-1.0.2" = {
1709 name = "util-deprecate";
1710 packageName = "util-deprecate";
1711 version = "1.0.2";
1712 src = fetchurl {
1713 url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
1714 sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
1715 };
1716 };
1717 "utils-0.3.1" = {
1718 name = "utils";
1719 packageName = "utils";
1720 version = "0.3.1";
1721 src = fetchurl {
1722 url = "https://registry.npmjs.org/utils/-/utils-0.3.1.tgz";
1723 sha1 = "04efaeb4290a67037a4cddfd2ff56144cc3a4581";
1724 };
1725 };
1726 "utils-merge-1.0.1" = {
1727 name = "utils-merge";
1728 packageName = "utils-merge";
1729 version = "1.0.1";
1730 src = fetchurl {
1731 url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz";
1732 sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
1733 };
1734 };
1735 "uuid-3.4.0" = {
1736 name = "uuid";
1737 packageName = "uuid";
1738 version = "3.4.0";
1739 src = fetchurl {
1740 url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz";
1741 sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==";
1742 };
1743 };
1744 "vary-1.1.2" = {
1745 name = "vary";
1746 packageName = "vary";
1747 version = "1.1.2";
1748 src = fetchurl {
1749 url = "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz";
1750 sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
1751 };
1752 };
1753 "verror-1.10.0" = {
1754 name = "verror";
1755 packageName = "verror";
1756 version = "1.10.0";
1757 src = fetchurl {
1758 url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
1759 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
1760 };
1761 };
1762 "which-1.3.1" = {
1763 name = "which";
1764 packageName = "which";
1765 version = "1.3.1";
1766 src = fetchurl {
1767 url = "https://registry.npmjs.org/which/-/which-1.3.1.tgz";
1768 sha512 = "HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==";
1769 };
1770 };
1771 "wide-align-1.1.3" = {
1772 name = "wide-align";
1773 packageName = "wide-align";
1774 version = "1.1.3";
1775 src = fetchurl {
1776 url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz";
1777 sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==";
1778 };
1779 };
1780 "word-wrap-1.2.3" = {
1781 name = "word-wrap";
1782 packageName = "word-wrap";
1783 version = "1.2.3";
1784 src = fetchurl {
1785 url = "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz";
1786 sha512 = "Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==";
1787 };
1788 };
1789 "wrappy-1.0.2" = {
1790 name = "wrappy";
1791 packageName = "wrappy";
1792 version = "1.0.2";
1793 src = fetchurl {
1794 url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
1795 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
1796 };
1797 };
1798 };
1799in
1800{
1801 ep_private_pad = nodeEnv.buildNodePackage {
1802 name = "ep_private_pad";
1803 packageName = "ep_private_pad";
1804 version = "1.0.2";
1805 src = fetchurl {
1806 url = "https://registry.npmjs.org/ep_private_pad/-/ep_private_pad-1.0.2.tgz";
1807 sha512 = "3cw9br4cg5ctv+w0XoMCXxM0tjYZd0LifH6ci/1wnv3LEkVnkiT19CtKGleOpHBVcQKLDf0aegjP9VaTW3rtHg==";
1808 };
1809 dependencies = [
1810 sources."abbrev-1.1.1"
1811 sources."accepts-1.3.7"
1812 sources."ajv-6.12.2"
1813 (sources."align-text-0.1.4" // {
1814 dependencies = [
1815 sources."kind-of-3.2.2"
1816 ];
1817 })
1818 sources."ansi-regex-2.1.1"
1819 (sources."any-1.0.0" // {
1820 dependencies = [
1821 sources."make-iterator-0.1.1"
1822 ];
1823 })
1824 sources."aproba-1.2.0"
1825 sources."are-we-there-yet-1.1.5"
1826 sources."arr-diff-1.1.0"
1827 sources."arr-flatten-1.1.0"
1828 (sources."arr-map-2.0.2" // {
1829 dependencies = [
1830 sources."kind-of-6.0.3"
1831 sources."make-iterator-1.0.1"
1832 ];
1833 })
1834 sources."arr-union-3.1.0"
1835 sources."array-each-0.1.1"
1836 sources."array-flatten-1.1.1"
1837 sources."array-slice-0.2.3"
1838 sources."array-unique-0.2.1"
1839 sources."asn1-0.2.4"
1840 sources."assert-plus-1.0.0"
1841 sources."asynckit-0.4.0"
1842 sources."aws-sign2-0.7.0"
1843 sources."aws4-1.9.1"
1844 sources."balanced-match-1.0.0"
1845 sources."bcrypt-pbkdf-1.0.2"
1846 sources."bignumber.js-9.0.0"
1847 sources."block-stream-0.0.9"
1848 sources."body-parser-1.19.0"
1849 sources."brace-expansion-1.1.11"
1850 sources."bytes-3.1.0"
1851 sources."caseless-0.12.0"
1852 sources."center-align-0.1.3"
1853 sources."client-sessions-0.8.0"
1854 sources."code-point-at-1.1.0"
1855 sources."combined-stream-1.0.8"
1856 sources."concat-map-0.0.1"
1857 sources."console-control-strings-1.1.0"
1858 sources."content-disposition-0.5.3"
1859 sources."content-type-1.0.4"
1860 sources."cookie-0.4.0"
1861 sources."cookie-parser-1.4.5"
1862 sources."cookie-signature-1.0.6"
1863 sources."cookies-0.7.3"
1864 sources."core-util-is-1.0.2"
1865 sources."dashdash-1.14.1"
1866 sources."debug-2.6.9"
1867 sources."delayed-stream-1.0.0"
1868 sources."delegates-1.0.0"
1869 sources."depd-1.1.2"
1870 sources."destroy-1.0.4"
1871 sources."ecc-jsbn-0.1.2"
1872 sources."ee-first-1.1.1"
1873 sources."eejs-1.0.0"
1874 sources."ejs-1.0.0"
1875 sources."encodeurl-1.0.2"
1876 sources."escape-html-1.0.3"
1877 sources."etag-1.8.1"
1878 sources."etherpad-lite-client-0.8.0"
1879 sources."export-dirs-0.2.4"
1880 sources."export-files-2.1.1"
1881 sources."express-4.17.1"
1882 (sources."express-session-1.17.1" // {
1883 dependencies = [
1884 sources."depd-2.0.0"
1885 sources."safe-buffer-5.2.0"
1886 ];
1887 })
1888 sources."extend-3.0.2"
1889 sources."extsprintf-1.3.0"
1890 sources."fast-deep-equal-3.1.1"
1891 sources."fast-json-stable-stringify-2.1.0"
1892 sources."finalhandler-1.1.2"
1893 sources."for-in-0.1.8"
1894 (sources."for-own-0.1.5" // {
1895 dependencies = [
1896 sources."for-in-1.0.2"
1897 ];
1898 })
1899 sources."forever-agent-0.6.1"
1900 sources."form-data-2.3.3"
1901 sources."forwarded-0.1.2"
1902 sources."fresh-0.5.2"
1903 sources."fs.realpath-1.0.0"
1904 sources."fstream-1.0.12"
1905 sources."gauge-2.7.4"
1906 sources."getpass-0.1.7"
1907 sources."glob-7.1.6"
1908 sources."graceful-fs-4.2.4"
1909 sources."har-schema-2.0.0"
1910 sources."har-validator-5.1.3"
1911 sources."has-unicode-2.0.1"
1912 sources."has-values-0.1.4"
1913 sources."http-errors-1.7.2"
1914 sources."http-signature-1.2.0"
1915 sources."iconv-lite-0.4.24"
1916 sources."inflight-1.0.6"
1917 sources."inherits-2.0.3"
1918 sources."ipaddr.js-1.9.1"
1919 sources."is-buffer-1.1.6"
1920 sources."is-extendable-0.1.1"
1921 sources."is-fullwidth-code-point-1.0.0"
1922 (sources."is-number-2.1.0" // {
1923 dependencies = [
1924 sources."kind-of-3.2.2"
1925 ];
1926 })
1927 sources."is-plain-object-2.0.4"
1928 sources."is-typedarray-1.0.0"
1929 sources."isarray-1.0.0"
1930 sources."isexe-2.0.0"
1931 sources."isobject-3.0.1"
1932 sources."isstream-0.1.2"
1933 sources."jsbn-0.1.1"
1934 sources."json-schema-0.2.3"
1935 sources."json-schema-traverse-0.4.1"
1936 sources."json-stringify-safe-5.0.1"
1937 sources."jsprim-1.4.1"
1938 sources."keygrip-1.0.3"
1939 sources."kind-of-2.0.1"
1940 sources."lazy-cache-1.0.4"
1941 sources."longest-1.0.1"
1942 (sources."make-iterator-0.2.1" // {
1943 dependencies = [
1944 sources."kind-of-3.2.2"
1945 ];
1946 })
1947 sources."media-typer-0.3.0"
1948 sources."merge-descriptors-1.0.1"
1949 sources."methods-1.1.2"
1950 sources."mime-1.6.0"
1951 sources."mime-db-1.44.0"
1952 sources."mime-types-2.1.27"
1953 sources."minimatch-3.0.4"
1954 sources."minimist-1.2.5"
1955 sources."mkdirp-0.5.5"
1956 sources."ms-2.0.0"
1957 sources."mysql-2.18.1"
1958 sources."negotiator-0.6.2"
1959 sources."node-gyp-3.8.0"
1960 sources."nopt-3.0.6"
1961 sources."npmlog-4.1.2"
1962 sources."number-is-nan-1.0.1"
1963 sources."oauth-sign-0.9.0"
1964 sources."object-assign-4.1.1"
1965 (sources."object.defaults-0.3.0" // {
1966 dependencies = [
1967 sources."isobject-1.0.2"
1968 ];
1969 })
1970 (sources."object.filter-0.3.0" // {
1971 dependencies = [
1972 sources."make-iterator-0.1.1"
1973 ];
1974 })
1975 sources."object.omit-2.0.1"
1976 sources."object.pick-1.3.0"
1977 sources."object.reduce-0.1.7"
1978 sources."on-finished-2.3.0"
1979 sources."on-headers-1.0.2"
1980 sources."once-1.4.0"
1981 sources."os-homedir-1.0.2"
1982 sources."os-tmpdir-1.0.2"
1983 sources."osenv-0.1.5"
1984 sources."parseurl-1.3.3"
1985 sources."password-hash-1.2.2"
1986 sources."path-is-absolute-1.0.1"
1987 sources."path-to-regexp-0.1.7"
1988 sources."performance-now-2.1.0"
1989 sources."process-nextick-args-2.0.1"
1990 sources."proxy-addr-2.0.6"
1991 sources."psl-1.8.0"
1992 sources."punycode-2.1.1"
1993 sources."qs-6.7.0"
1994 sources."random-bytes-1.0.0"
1995 sources."range-parser-1.2.1"
1996 sources."raw-body-2.4.0"
1997 sources."readable-stream-2.3.7"
1998 sources."repeat-string-1.6.1"
1999 (sources."request-2.88.2" // {
2000 dependencies = [
2001 sources."qs-6.5.2"
2002 ];
2003 })
2004 sources."right-align-0.1.3"
2005 sources."rimraf-2.7.1"
2006 sources."safe-buffer-5.1.2"
2007 sources."safer-buffer-2.1.2"
2008 sources."semver-5.3.0"
2009 (sources."send-0.17.1" // {
2010 dependencies = [
2011 sources."ms-2.1.1"
2012 ];
2013 })
2014 sources."serve-static-1.14.1"
2015 sources."set-blocking-2.0.0"
2016 sources."setprototypeof-1.1.1"
2017 sources."signal-exit-3.0.3"
2018 sources."sqlstring-2.3.1"
2019 sources."sshpk-1.16.1"
2020 sources."statuses-1.5.0"
2021 sources."string-width-1.0.2"
2022 sources."string_decoder-1.1.1"
2023 sources."strip-ansi-3.0.1"
2024 sources."striptags-2.2.1"
2025 sources."tar-2.2.2"
2026 sources."toidentifier-1.0.0"
2027 sources."tough-cookie-2.5.0"
2028 sources."tunnel-agent-0.6.0"
2029 sources."tweetnacl-0.14.5"
2030 sources."type-is-1.6.18"
2031 sources."uid-safe-2.1.5"
2032 sources."underscore-1.3.3"
2033 sources."unpipe-1.0.0"
2034 sources."uri-js-4.2.2"
2035 sources."util-deprecate-1.0.2"
2036 sources."utils-0.3.1"
2037 sources."utils-merge-1.0.1"
2038 sources."uuid-3.4.0"
2039 sources."vary-1.1.2"
2040 sources."verror-1.10.0"
2041 sources."which-1.3.1"
2042 sources."wide-align-1.1.3"
2043 sources."word-wrap-1.2.3"
2044 sources."wrappy-1.0.2"
2045 ];
2046 buildInputs = globalBuildInputs;
2047 meta = {
2048 description = "Signup and login to manage private pad, share your pad with other users, add roles to users for your pads.";
2049 homepage = "https://github.com/angelopiccolella/ep_private_pad#readme";
2050 license = "";
2051 };
2052 production = true;
2053 bypassCache = true;
2054 reconstructLock = true;
2055 };
2056} \ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_ruler/node-packages.json b/flakes/etherpad-lite/modules/ep_ruler/node-packages.json
new file mode 100644
index 0000000..d31b236
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_ruler/node-packages.json
@@ -0,0 +1 @@
[ "ep_ruler" ]
diff --git a/flakes/etherpad-lite/modules/ep_ruler/node-packages.nix b/flakes/etherpad-lite/modules/ep_ruler/node-packages.nix
new file mode 100644
index 0000000..c8697d4
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_ruler/node-packages.nix
@@ -0,0 +1,27 @@
1{stdenv, nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
2
3let
4 sources = {};
5in
6{
7 ep_ruler = nodeEnv.buildNodePackage {
8 name = "ep_ruler";
9 packageName = "ep_ruler";
10 version = "0.0.2";
11 src = fetchurl {
12 url = "https://registry.npmjs.org/ep_ruler/-/ep_ruler-0.0.2.tgz";
13 sha1 = "5af10dfe0b5f33459566ce649cc483c680ed7811";
14 };
15 preRebuild = ''
16 sed -i -e 's/"dependencies"/"peerDependencies"/' package.json
17 '';
18 buildInputs = globalBuildInputs;
19 meta = {
20 description = "Adds a ruler to Etherpad lite";
21 homepage = https://github.com/iquidus/ep_ruler;
22 };
23 production = true;
24 bypassCache = false;
25 };
26}
27
diff --git a/flakes/etherpad-lite/modules/ep_scrollto/node-packages.json b/flakes/etherpad-lite/modules/ep_scrollto/node-packages.json
new file mode 100644
index 0000000..6d068d0
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_scrollto/node-packages.json
@@ -0,0 +1 @@
[ "ep_scrollto" ]
diff --git a/flakes/etherpad-lite/modules/ep_scrollto/node-packages.nix b/flakes/etherpad-lite/modules/ep_scrollto/node-packages.nix
new file mode 100644
index 0000000..8f7656f
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_scrollto/node-packages.nix
@@ -0,0 +1,29 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_scrollto = nodeEnv.buildNodePackage {
10 name = "ep_scrollto";
11 packageName = "ep_scrollto";
12 version = "0.0.7";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_scrollto/-/ep_scrollto-0.0.7.tgz";
15 sha512 = "uUfpiUWO0xLhN2R89jMPUYD+vhyiPyH6b8QL7y+0bKiOYOqf9l/rgXwTLuf4iB3p0J1/oVXhgSkG0dlZ35bUWw==";
16 };
17 buildInputs = globalBuildInputs;
18 preRebuild = ''
19 sed -i -e "s/is_old_ie = browser.msie.*$/is_old_ie = false;/" static/js/postAceInit.js
20 '';
21 meta = {
22 description = "Scroll to a specific line number based on a parameter of lineNumber in the URL IE http://test.com/p/foo#lineNumber=10 -- Users can click on the line number to get a link";
23 homepage = "https://github.com/johnmclear/ep_scrollto#readme";
24 };
25 production = true;
26 bypassCache = true;
27 reconstructLock = true;
28 };
29}
diff --git a/flakes/etherpad-lite/modules/ep_set_title_on_pad/node-packages.json b/flakes/etherpad-lite/modules/ep_set_title_on_pad/node-packages.json
new file mode 100644
index 0000000..8755cd2
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_set_title_on_pad/node-packages.json
@@ -0,0 +1 @@
[ "ep_set_title_on_pad" ]
diff --git a/flakes/etherpad-lite/modules/ep_set_title_on_pad/node-packages.nix b/flakes/etherpad-lite/modules/ep_set_title_on_pad/node-packages.nix
new file mode 100644
index 0000000..74f9612
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_set_title_on_pad/node-packages.nix
@@ -0,0 +1,26 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_set_title_on_pad = nodeEnv.buildNodePackage {
10 name = "ep_set_title_on_pad";
11 packageName = "ep_set_title_on_pad";
12 version = "0.2.0";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_set_title_on_pad/-/ep_set_title_on_pad-0.2.0.tgz";
15 sha512 = "qt7Z+xJscGUB6A5R/vHsYbdOhmN3XG56LLtIxOzg/x3/ppHpBCmAf/y4cMNYyrm+6+lgwjt77aa6CchVRyUF7Q==";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "Set the title on a pad in Etherpad, also includes real time updates to the UI";
20 homepage = "https://github.com/JohnMcLear/ep_set_title_on_pad#readme";
21 };
22 production = true;
23 bypassCache = true;
24 reconstructLock = true;
25 };
26} \ No newline at end of file
diff --git a/flakes/etherpad-lite/modules/ep_subscript_and_superscript/font.patch b/flakes/etherpad-lite/modules/ep_subscript_and_superscript/font.patch
new file mode 100644
index 0000000..474e823
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_subscript_and_superscript/font.patch
@@ -0,0 +1,22 @@
1diff --git a/templates/editbarButtons.ejs b/templates/editbarButtons.ejs
2index 7511025..f71a491 100644
3--- a/templates/editbarButtons.ejs
4+++ b/templates/editbarButtons.ejs
5@@ -20,7 +20,7 @@
6 }
7
8 .subscript .buttonicon:before{
9- content:"\e81a";
10+ content:"\e834";
11 }
12
13 .superscript{
14@@ -32,7 +32,7 @@
15 }
16
17 .superscript .buttonicon:before{
18- content:"\e819";
19+ content:"\e833";
20 }
21
22 </style>
diff --git a/flakes/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.json b/flakes/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.json
new file mode 100644
index 0000000..aa1cf21
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.json
@@ -0,0 +1 @@
[ "ep_subscript_and_superscript" ]
diff --git a/flakes/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.nix b/flakes/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.nix
new file mode 100644
index 0000000..04065dd
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_subscript_and_superscript/node-packages.nix
@@ -0,0 +1,28 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_subscript_and_superscript = nodeEnv.buildNodePackage {
10 name = "ep_subscript_and_superscript";
11 packageName = "ep_subscript_and_superscript";
12 version = "0.0.3";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_subscript_and_superscript/-/ep_subscript_and_superscript-0.0.3.tgz";
15 sha1 = "47f74a242fe8be5911391943f718eab81c390620";
16 };
17 preRebuild = ''
18 patch -p1 < ${./font.patch}
19 '';
20 buildInputs = globalBuildInputs;
21 meta = {
22 description = "Add support for Subscript and Superscript";
23 };
24 production = true;
25 bypassCache = true;
26 reconstructLock = true;
27 };
28}
diff --git a/flakes/etherpad-lite/modules/ep_timesliderdiff/node-packages.json b/flakes/etherpad-lite/modules/ep_timesliderdiff/node-packages.json
new file mode 100644
index 0000000..d50e856
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_timesliderdiff/node-packages.json
@@ -0,0 +1 @@
[ "ep_timesliderdiff" ]
diff --git a/flakes/etherpad-lite/modules/ep_timesliderdiff/node-packages.nix b/flakes/etherpad-lite/modules/ep_timesliderdiff/node-packages.nix
new file mode 100644
index 0000000..e3ddb1f
--- /dev/null
+++ b/flakes/etherpad-lite/modules/ep_timesliderdiff/node-packages.nix
@@ -0,0 +1,26 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {};
7in
8{
9 ep_timesliderdiff = nodeEnv.buildNodePackage {
10 name = "ep_timesliderdiff";
11 packageName = "ep_timesliderdiff";
12 version = "0.0.5";
13 src = fetchurl {
14 url = "https://registry.npmjs.org/ep_timesliderdiff/-/ep_timesliderdiff-0.0.5.tgz";
15 sha1 = "f8e0543677f7ac643936a2afce9f370d08a43310";
16 };
17 buildInputs = globalBuildInputs;
18 meta = {
19 description = "See a diff view showing the changes between the latest pad and a revision";
20 homepage = https://github.com/JohnMcLear/ep_timesliderdiff;
21 };
22 production = true;
23 bypassCache = true;
24 reconstructLock = true;
25 };
26} \ No newline at end of file
diff --git a/flakes/etherpad-lite/node-packages.nix b/flakes/etherpad-lite/node-packages.nix
new file mode 100644
index 0000000..0058508
--- /dev/null
+++ b/flakes/etherpad-lite/node-packages.nix
@@ -0,0 +1,2934 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{src, nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {
7 "@apidevtools/json-schema-ref-parser-8.0.0" = {
8 name = "_at_apidevtools_slash_json-schema-ref-parser";
9 packageName = "@apidevtools/json-schema-ref-parser";
10 version = "8.0.0";
11 src = fetchurl {
12 url = "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-8.0.0.tgz";
13 sha512 = "n4YBtwQhdpLto1BaUCyAeflizmIbaloGShsPyRtFf5qdFJxfssj+GgLavczgKJFa3Bq+3St2CKcpRJdjtB4EBw==";
14 };
15 };
16 "@apidevtools/openapi-schemas-2.0.3" = {
17 name = "_at_apidevtools_slash_openapi-schemas";
18 packageName = "@apidevtools/openapi-schemas";
19 version = "2.0.3";
20 src = fetchurl {
21 url = "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.0.3.tgz";
22 sha512 = "QoPaxGXfgqgGpK1p21FJ400z56hV681a8DOcZt3J5z0WIHgFeaIZ4+6bX5ATqmOoCpRCsH4ITEwKaOyFMz7wOA==";
23 };
24 };
25 "@apidevtools/swagger-methods-3.0.1" = {
26 name = "_at_apidevtools_slash_swagger-methods";
27 packageName = "@apidevtools/swagger-methods";
28 version = "3.0.1";
29 src = fetchurl {
30 url = "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.1.tgz";
31 sha512 = "1Vlm18XYW6Yg7uHunroXeunWz5FShPFAdxBbPy8H6niB2Elz9QQsCoYHMbcc11EL1pTxaIr9HXz2An/mHXlX1Q==";
32 };
33 };
34 "@apidevtools/swagger-parser-9.0.1" = {
35 name = "_at_apidevtools_slash_swagger-parser";
36 packageName = "@apidevtools/swagger-parser";
37 version = "9.0.1";
38 src = fetchurl {
39 url = "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-9.0.1.tgz";
40 sha512 = "Irqybg4dQrcHhZcxJc/UM4vO7Ksoj1Id5e+K94XUOzllqX1n47HEA50EKiXTCQbykxuJ4cYGIivjx/MRSTC5OA==";
41 };
42 };
43 "@jsdevtools/ono-7.1.2" = {
44 name = "_at_jsdevtools_slash_ono";
45 packageName = "@jsdevtools/ono";
46 version = "7.1.2";
47 src = fetchurl {
48 url = "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.2.tgz";
49 sha512 = "qS/a24RA5FEoiJS9wiv6Pwg2c/kiUo3IVUQcfeM9JvsR6pM8Yx+yl/6xWYLckZCT5jpLNhslgjiA8p/XcGyMRQ==";
50 };
51 };
52 "@types/caseless-0.12.2" = {
53 name = "_at_types_slash_caseless";
54 packageName = "@types/caseless";
55 version = "0.12.2";
56 src = fetchurl {
57 url = "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz";
58 sha512 = "6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==";
59 };
60 };
61 "@types/long-4.0.1" = {
62 name = "_at_types_slash_long";
63 packageName = "@types/long";
64 version = "4.0.1";
65 src = fetchurl {
66 url = "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz";
67 sha512 = "5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==";
68 };
69 };
70 "@types/node-13.13.4" = {
71 name = "_at_types_slash_node";
72 packageName = "@types/node";
73 version = "13.13.4";
74 src = fetchurl {
75 url = "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz";
76 sha512 = "x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==";
77 };
78 };
79 "@types/request-2.48.4" = {
80 name = "_at_types_slash_request";
81 packageName = "@types/request";
82 version = "2.48.4";
83 src = fetchurl {
84 url = "https://registry.npmjs.org/@types/request/-/request-2.48.4.tgz";
85 sha512 = "W1t1MTKYR8PxICH+A4HgEIPuAC3sbljoEVfyZbeFJJDbr30guDspJri2XOaM2E+Un7ZjrihaDi7cf6fPa2tbgw==";
86 };
87 };
88 "@types/tough-cookie-4.0.0" = {
89 name = "_at_types_slash_tough-cookie";
90 packageName = "@types/tough-cookie";
91 version = "4.0.0";
92 src = fetchurl {
93 url = "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz";
94 sha512 = "I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==";
95 };
96 };
97 "accepts-1.3.7" = {
98 name = "accepts";
99 packageName = "accepts";
100 version = "1.3.7";
101 src = fetchurl {
102 url = "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz";
103 sha512 = "Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==";
104 };
105 };
106 "adm-zip-0.4.14" = {
107 name = "adm-zip";
108 packageName = "adm-zip";
109 version = "0.4.14";
110 src = fetchurl {
111 url = "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.14.tgz";
112 sha512 = "/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==";
113 };
114 };
115 "after-0.8.2" = {
116 name = "after";
117 packageName = "after";
118 version = "0.8.2";
119 src = fetchurl {
120 url = "https://registry.npmjs.org/after/-/after-0.8.2.tgz";
121 sha1 = "fedb394f9f0e02aa9768e702bda23b505fae7e1f";
122 };
123 };
124 "agentkeepalive-3.5.2" = {
125 name = "agentkeepalive";
126 packageName = "agentkeepalive";
127 version = "3.5.2";
128 src = fetchurl {
129 url = "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz";
130 sha512 = "e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==";
131 };
132 };
133 "ajv-6.12.2" = {
134 name = "ajv";
135 packageName = "ajv";
136 version = "6.12.2";
137 src = fetchurl {
138 url = "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz";
139 sha512 = "k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==";
140 };
141 };
142 "ansi-regex-2.1.1" = {
143 name = "ansi-regex";
144 packageName = "ansi-regex";
145 version = "2.1.1";
146 src = fetchurl {
147 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
148 sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
149 };
150 };
151 "ansi-styles-2.2.1" = {
152 name = "ansi-styles";
153 packageName = "ansi-styles";
154 version = "2.2.1";
155 src = fetchurl {
156 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
157 sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
158 };
159 };
160 "argparse-1.0.10" = {
161 name = "argparse";
162 packageName = "argparse";
163 version = "1.0.10";
164 src = fetchurl {
165 url = "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz";
166 sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==";
167 };
168 };
169 "array-flatten-1.1.1" = {
170 name = "array-flatten";
171 packageName = "array-flatten";
172 version = "1.1.1";
173 src = fetchurl {
174 url = "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz";
175 sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
176 };
177 };
178 "arraybuffer.slice-0.0.7" = {
179 name = "arraybuffer.slice";
180 packageName = "arraybuffer.slice";
181 version = "0.0.7";
182 src = fetchurl {
183 url = "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz";
184 sha512 = "wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==";
185 };
186 };
187 "asn1-0.2.4" = {
188 name = "asn1";
189 packageName = "asn1";
190 version = "0.2.4";
191 src = fetchurl {
192 url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz";
193 sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==";
194 };
195 };
196 "assert-plus-1.0.0" = {
197 name = "assert-plus";
198 packageName = "assert-plus";
199 version = "1.0.0";
200 src = fetchurl {
201 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
202 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
203 };
204 };
205 "async-0.9.0" = {
206 name = "async";
207 packageName = "async";
208 version = "0.9.0";
209 src = fetchurl {
210 url = "https://registry.npmjs.org/async/-/async-0.9.0.tgz";
211 sha1 = "ac3613b1da9bed1b47510bb4651b8931e47146c7";
212 };
213 };
214 "async-3.2.0" = {
215 name = "async";
216 packageName = "async";
217 version = "3.2.0";
218 src = fetchurl {
219 url = "https://registry.npmjs.org/async/-/async-3.2.0.tgz";
220 sha512 = "TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==";
221 };
222 };
223 "async-limiter-1.0.1" = {
224 name = "async-limiter";
225 packageName = "async-limiter";
226 version = "1.0.1";
227 src = fetchurl {
228 url = "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz";
229 sha512 = "csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==";
230 };
231 };
232 "async-stacktrace-0.0.2" = {
233 name = "async-stacktrace";
234 packageName = "async-stacktrace";
235 version = "0.0.2";
236 src = fetchurl {
237 url = "https://registry.npmjs.org/async-stacktrace/-/async-stacktrace-0.0.2.tgz";
238 sha1 = "8bbb9787e3b38c836c729a7e9d7c08630db5d1ef";
239 };
240 };
241 "asynckit-0.4.0" = {
242 name = "asynckit";
243 packageName = "asynckit";
244 version = "0.4.0";
245 src = fetchurl {
246 url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
247 sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
248 };
249 };
250 "aws-sign2-0.7.0" = {
251 name = "aws-sign2";
252 packageName = "aws-sign2";
253 version = "0.7.0";
254 src = fetchurl {
255 url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
256 sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
257 };
258 };
259 "aws4-1.9.1" = {
260 name = "aws4";
261 packageName = "aws4";
262 version = "1.9.1";
263 src = fetchurl {
264 url = "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz";
265 sha512 = "wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==";
266 };
267 };
268 "backo2-1.0.2" = {
269 name = "backo2";
270 packageName = "backo2";
271 version = "1.0.2";
272 src = fetchurl {
273 url = "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz";
274 sha1 = "31ab1ac8b129363463e35b3ebb69f4dfcfba7947";
275 };
276 };
277 "base64-arraybuffer-0.1.5" = {
278 name = "base64-arraybuffer";
279 packageName = "base64-arraybuffer";
280 version = "0.1.5";
281 src = fetchurl {
282 url = "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz";
283 sha1 = "73926771923b5a19747ad666aa5cd4bf9c6e9ce8";
284 };
285 };
286 "base64id-1.0.0" = {
287 name = "base64id";
288 packageName = "base64id";
289 version = "1.0.0";
290 src = fetchurl {
291 url = "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz";
292 sha1 = "47688cb99bb6804f0e06d3e763b1c32e57d8e6b6";
293 };
294 };
295 "bath-es5-3.0.3" = {
296 name = "bath-es5";
297 packageName = "bath-es5";
298 version = "3.0.3";
299 src = fetchurl {
300 url = "https://registry.npmjs.org/bath-es5/-/bath-es5-3.0.3.tgz";
301 sha512 = "PdCioDToH3t84lP40kUFCKWCOCH389Dl1kbC8FGoqOwamxsmqxxnJSXdkTOsPoNHXjem4+sJ+bbNoQm5zeCqxg==";
302 };
303 };
304 "bcrypt-pbkdf-1.0.2" = {
305 name = "bcrypt-pbkdf";
306 packageName = "bcrypt-pbkdf";
307 version = "1.0.2";
308 src = fetchurl {
309 url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
310 sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
311 };
312 };
313 "better-assert-1.0.2" = {
314 name = "better-assert";
315 packageName = "better-assert";
316 version = "1.0.2";
317 src = fetchurl {
318 url = "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz";
319 sha1 = "40866b9e1b9e0b55b481894311e68faffaebc522";
320 };
321 };
322 "bignumber.js-9.0.0" = {
323 name = "bignumber.js";
324 packageName = "bignumber.js";
325 version = "9.0.0";
326 src = fetchurl {
327 url = "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz";
328 sha512 = "t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==";
329 };
330 };
331 "binary-search-1.3.6" = {
332 name = "binary-search";
333 packageName = "binary-search";
334 version = "1.3.6";
335 src = fetchurl {
336 url = "https://registry.npmjs.org/binary-search/-/binary-search-1.3.6.tgz";
337 sha512 = "nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==";
338 };
339 };
340 "blob-0.0.5" = {
341 name = "blob";
342 packageName = "blob";
343 version = "0.0.5";
344 src = fetchurl {
345 url = "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz";
346 sha512 = "gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==";
347 };
348 };
349 "bluebird-2.11.0" = {
350 name = "bluebird";
351 packageName = "bluebird";
352 version = "2.11.0";
353 src = fetchurl {
354 url = "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz";
355 sha1 = "534b9033c022c9579c56ba3b3e5a5caafbb650e1";
356 };
357 };
358 "body-parser-1.19.0" = {
359 name = "body-parser";
360 packageName = "body-parser";
361 version = "1.19.0";
362 src = fetchurl {
363 url = "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz";
364 sha512 = "dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==";
365 };
366 };
367 "boolbase-1.0.0" = {
368 name = "boolbase";
369 packageName = "boolbase";
370 version = "1.0.0";
371 src = fetchurl {
372 url = "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz";
373 sha1 = "68dff5fbe60c51eb37725ea9e3ed310dcc1e776e";
374 };
375 };
376 "browser-request-0.3.3" = {
377 name = "browser-request";
378 packageName = "browser-request";
379 version = "0.3.3";
380 src = fetchurl {
381 url = "https://registry.npmjs.org/browser-request/-/browser-request-0.3.3.tgz";
382 sha1 = "9ece5b5aca89a29932242e18bf933def9876cc17";
383 };
384 };
385 "buffer-writer-2.0.0" = {
386 name = "buffer-writer";
387 packageName = "buffer-writer";
388 version = "2.0.0";
389 src = fetchurl {
390 url = "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz";
391 sha512 = "a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==";
392 };
393 };
394 "bytes-3.1.0" = {
395 name = "bytes";
396 packageName = "bytes";
397 version = "3.1.0";
398 src = fetchurl {
399 url = "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz";
400 sha512 = "zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==";
401 };
402 };
403 "call-me-maybe-1.0.1" = {
404 name = "call-me-maybe";
405 packageName = "call-me-maybe";
406 version = "1.0.1";
407 src = fetchurl {
408 url = "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz";
409 sha1 = "26d208ea89e37b5cbde60250a15f031c16a4d66b";
410 };
411 };
412 "callsite-1.0.0" = {
413 name = "callsite";
414 packageName = "callsite";
415 version = "1.0.0";
416 src = fetchurl {
417 url = "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz";
418 sha1 = "280398e5d664bd74038b6f0905153e6e8af1bc20";
419 };
420 };
421 "caseless-0.12.0" = {
422 name = "caseless";
423 packageName = "caseless";
424 version = "0.12.0";
425 src = fetchurl {
426 url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
427 sha1 = "1b681c21ff84033c826543090689420d187151dc";
428 };
429 };
430 "cassandra-driver-4.5.1" = {
431 name = "cassandra-driver";
432 packageName = "cassandra-driver";
433 version = "4.5.1";
434 src = fetchurl {
435 url = "https://registry.npmjs.org/cassandra-driver/-/cassandra-driver-4.5.1.tgz";
436 sha512 = "N5pxCxi9jPJzHuhx7ObClJtePcby8xuSb3mQkik1EE57CWqI7dEAuZZUaM7Flboasbwf/uSmw9oTfuf6sZMq9A==";
437 };
438 };
439 "chalk-1.1.3" = {
440 name = "chalk";
441 packageName = "chalk";
442 version = "1.1.3";
443 src = fetchurl {
444 url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
445 sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
446 };
447 };
448 "channels-0.0.4" = {
449 name = "channels";
450 packageName = "channels";
451 version = "0.0.4";
452 src = fetchurl {
453 url = "https://registry.npmjs.org/channels/-/channels-0.0.4.tgz";
454 sha1 = "1bee323edea152bb9ef04f41bc6e6b0f5948a941";
455 };
456 };
457 "cheerio-0.22.0" = {
458 name = "cheerio";
459 packageName = "cheerio";
460 version = "0.22.0";
461 src = fetchurl {
462 url = "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz";
463 sha1 = "a9baa860a3f9b595a6b81b1a86873121ed3a269e";
464 };
465 };
466 "clean-css-4.2.3" = {
467 name = "clean-css";
468 packageName = "clean-css";
469 version = "4.2.3";
470 src = fetchurl {
471 url = "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz";
472 sha512 = "VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==";
473 };
474 };
475 "cloudant-follow-0.18.2" = {
476 name = "cloudant-follow";
477 packageName = "cloudant-follow";
478 version = "0.18.2";
479 src = fetchurl {
480 url = "https://registry.npmjs.org/cloudant-follow/-/cloudant-follow-0.18.2.tgz";
481 sha512 = "qu/AmKxDqJds+UmT77+0NbM7Yab2K3w0qSeJRzsq5dRWJTEJdWeb+XpG4OpKuTE9RKOa/Awn2gR3TTnvNr3TeA==";
482 };
483 };
484 "combined-stream-1.0.8" = {
485 name = "combined-stream";
486 packageName = "combined-stream";
487 version = "1.0.8";
488 src = fetchurl {
489 url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
490 sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
491 };
492 };
493 "commander-2.20.3" = {
494 name = "commander";
495 packageName = "commander";
496 version = "2.20.3";
497 src = fetchurl {
498 url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz";
499 sha512 = "GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==";
500 };
501 };
502 "component-bind-1.0.0" = {
503 name = "component-bind";
504 packageName = "component-bind";
505 version = "1.0.0";
506 src = fetchurl {
507 url = "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz";
508 sha1 = "00c608ab7dcd93897c0009651b1d3a8e1e73bbd1";
509 };
510 };
511 "component-emitter-1.2.1" = {
512 name = "component-emitter";
513 packageName = "component-emitter";
514 version = "1.2.1";
515 src = fetchurl {
516 url = "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz";
517 sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6";
518 };
519 };
520 "component-inherit-0.0.3" = {
521 name = "component-inherit";
522 packageName = "component-inherit";
523 version = "0.0.3";
524 src = fetchurl {
525 url = "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz";
526 sha1 = "645fc4adf58b72b649d5cae65135619db26ff143";
527 };
528 };
529 "content-disposition-0.5.3" = {
530 name = "content-disposition";
531 packageName = "content-disposition";
532 version = "0.5.3";
533 src = fetchurl {
534 url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz";
535 sha512 = "ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==";
536 };
537 };
538 "content-type-1.0.4" = {
539 name = "content-type";
540 packageName = "content-type";
541 version = "1.0.4";
542 src = fetchurl {
543 url = "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz";
544 sha512 = "hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==";
545 };
546 };
547 "cookie-0.3.1" = {
548 name = "cookie";
549 packageName = "cookie";
550 version = "0.3.1";
551 src = fetchurl {
552 url = "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz";
553 sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
554 };
555 };
556 "cookie-0.4.0" = {
557 name = "cookie";
558 packageName = "cookie";
559 version = "0.4.0";
560 src = fetchurl {
561 url = "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz";
562 sha512 = "+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==";
563 };
564 };
565 "cookie-0.4.1" = {
566 name = "cookie";
567 packageName = "cookie";
568 version = "0.4.1";
569 src = fetchurl {
570 url = "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz";
571 sha512 = "ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==";
572 };
573 };
574 "cookie-parser-1.4.4" = {
575 name = "cookie-parser";
576 packageName = "cookie-parser";
577 version = "1.4.4";
578 src = fetchurl {
579 url = "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.4.tgz";
580 sha512 = "lo13tqF3JEtFO7FyA49CqbhaFkskRJ0u/UAiINgrIXeRCY41c88/zxtrECl8AKH3B0hj9q10+h3Kt8I7KlW4tw==";
581 };
582 };
583 "cookie-signature-1.0.6" = {
584 name = "cookie-signature";
585 packageName = "cookie-signature";
586 version = "1.0.6";
587 src = fetchurl {
588 url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";
589 sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
590 };
591 };
592 "core-util-is-1.0.2" = {
593 name = "core-util-is";
594 packageName = "core-util-is";
595 version = "1.0.2";
596 src = fetchurl {
597 url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
598 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
599 };
600 };
601 "css-select-1.2.0" = {
602 name = "css-select";
603 packageName = "css-select";
604 version = "1.2.0";
605 src = fetchurl {
606 url = "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz";
607 sha1 = "2b3a110539c5355f1cd8d314623e870b121ec858";
608 };
609 };
610 "css-what-2.1.3" = {
611 name = "css-what";
612 packageName = "css-what";
613 version = "2.1.3";
614 src = fetchurl {
615 url = "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz";
616 sha512 = "a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==";
617 };
618 };
619 "dashdash-1.14.1" = {
620 name = "dashdash";
621 packageName = "dashdash";
622 version = "1.14.1";
623 src = fetchurl {
624 url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
625 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
626 };
627 };
628 "debug-2.6.9" = {
629 name = "debug";
630 packageName = "debug";
631 version = "2.6.9";
632 src = fetchurl {
633 url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
634 sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
635 };
636 };
637 "debug-3.1.0" = {
638 name = "debug";
639 packageName = "debug";
640 version = "3.1.0";
641 src = fetchurl {
642 url = "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz";
643 sha512 = "OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==";
644 };
645 };
646 "debug-4.1.1" = {
647 name = "debug";
648 packageName = "debug";
649 version = "4.1.1";
650 src = fetchurl {
651 url = "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz";
652 sha512 = "pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==";
653 };
654 };
655 "delayed-stream-1.0.0" = {
656 name = "delayed-stream";
657 packageName = "delayed-stream";
658 version = "1.0.0";
659 src = fetchurl {
660 url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
661 sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
662 };
663 };
664 "denque-1.4.1" = {
665 name = "denque";
666 packageName = "denque";
667 version = "1.4.1";
668 src = fetchurl {
669 url = "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz";
670 sha512 = "OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==";
671 };
672 };
673 "depd-1.1.2" = {
674 name = "depd";
675 packageName = "depd";
676 version = "1.1.2";
677 src = fetchurl {
678 url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz";
679 sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
680 };
681 };
682 "depd-2.0.0" = {
683 name = "depd";
684 packageName = "depd";
685 version = "2.0.0";
686 src = fetchurl {
687 url = "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz";
688 sha512 = "g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==";
689 };
690 };
691 "destroy-1.0.4" = {
692 name = "destroy";
693 packageName = "destroy";
694 version = "1.0.4";
695 src = fetchurl {
696 url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz";
697 sha1 = "978857442c44749e4206613e37946205826abd80";
698 };
699 };
700 "dirty-1.1.0" = {
701 name = "dirty";
702 packageName = "dirty";
703 version = "1.1.0";
704 src = fetchurl {
705 url = "https://registry.npmjs.org/dirty/-/dirty-1.1.0.tgz";
706 sha1 = "70edd2b999541dc9974fd3a8cbd0c670fe236078";
707 };
708 };
709 "dom-serializer-0.1.1" = {
710 name = "dom-serializer";
711 packageName = "dom-serializer";
712 version = "0.1.1";
713 src = fetchurl {
714 url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz";
715 sha512 = "l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==";
716 };
717 };
718 "domelementtype-1.3.1" = {
719 name = "domelementtype";
720 packageName = "domelementtype";
721 version = "1.3.1";
722 src = fetchurl {
723 url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz";
724 sha512 = "BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==";
725 };
726 };
727 "domhandler-2.4.2" = {
728 name = "domhandler";
729 packageName = "domhandler";
730 version = "2.4.2";
731 src = fetchurl {
732 url = "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz";
733 sha512 = "JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==";
734 };
735 };
736 "domutils-1.5.1" = {
737 name = "domutils";
738 packageName = "domutils";
739 version = "1.5.1";
740 src = fetchurl {
741 url = "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz";
742 sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
743 };
744 };
745 "ecc-jsbn-0.1.2" = {
746 name = "ecc-jsbn";
747 packageName = "ecc-jsbn";
748 version = "0.1.2";
749 src = fetchurl {
750 url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
751 sha1 = "3a83a904e54353287874c564b7549386849a98c9";
752 };
753 };
754 "ee-first-1.1.1" = {
755 name = "ee-first";
756 packageName = "ee-first";
757 version = "1.1.1";
758 src = fetchurl {
759 url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
760 sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
761 };
762 };
763 "ejs-2.6.1" = {
764 name = "ejs";
765 packageName = "ejs";
766 version = "2.6.1";
767 src = fetchurl {
768 url = "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz";
769 sha512 = "0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==";
770 };
771 };
772 "elasticsearch-16.7.1" = {
773 name = "elasticsearch";
774 packageName = "elasticsearch";
775 version = "16.7.1";
776 src = fetchurl {
777 url = "https://registry.npmjs.org/elasticsearch/-/elasticsearch-16.7.1.tgz";
778 sha512 = "PL/BxB03VGbbghJwISYvVcrR9KbSSkuQ7OM//jHJg/End/uC2fvXg4QI7RXLvCGbhBuNQ8dPue7DOOPra73PCw==";
779 };
780 };
781 "encodeurl-1.0.2" = {
782 name = "encodeurl";
783 packageName = "encodeurl";
784 version = "1.0.2";
785 src = fetchurl {
786 url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz";
787 sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
788 };
789 };
790 "engine.io-3.2.1" = {
791 name = "engine.io";
792 packageName = "engine.io";
793 version = "3.2.1";
794 src = fetchurl {
795 url = "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz";
796 sha512 = "+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==";
797 };
798 };
799 "engine.io-client-3.2.1" = {
800 name = "engine.io-client";
801 packageName = "engine.io-client";
802 version = "3.2.1";
803 src = fetchurl {
804 url = "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz";
805 sha512 = "y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==";
806 };
807 };
808 "engine.io-parser-2.1.3" = {
809 name = "engine.io-parser";
810 packageName = "engine.io-parser";
811 version = "2.1.3";
812 src = fetchurl {
813 url = "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz";
814 sha512 = "6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==";
815 };
816 };
817 "entities-1.1.2" = {
818 name = "entities";
819 packageName = "entities";
820 version = "1.1.2";
821 src = fetchurl {
822 url = "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz";
823 sha512 = "f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==";
824 };
825 };
826 "errs-0.3.2" = {
827 name = "errs";
828 packageName = "errs";
829 version = "0.3.2";
830 src = fetchurl {
831 url = "https://registry.npmjs.org/errs/-/errs-0.3.2.tgz";
832 sha1 = "798099b2dbd37ca2bc749e538a7c1307d0b50499";
833 };
834 };
835 "escape-html-1.0.3" = {
836 name = "escape-html";
837 packageName = "escape-html";
838 version = "1.0.3";
839 src = fetchurl {
840 url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
841 sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
842 };
843 };
844 "escape-string-regexp-1.0.5" = {
845 name = "escape-string-regexp";
846 packageName = "escape-string-regexp";
847 version = "1.0.5";
848 src = fetchurl {
849 url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
850 sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
851 };
852 };
853 "esprima-4.0.1" = {
854 name = "esprima";
855 packageName = "esprima";
856 version = "4.0.1";
857 src = fetchurl {
858 url = "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz";
859 sha512 = "eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==";
860 };
861 };
862 "etag-1.8.1" = {
863 name = "etag";
864 packageName = "etag";
865 version = "1.8.1";
866 src = fetchurl {
867 url = "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz";
868 sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
869 };
870 };
871 "etherpad-require-kernel-1.0.9" = {
872 name = "etherpad-require-kernel";
873 packageName = "etherpad-require-kernel";
874 version = "1.0.9";
875 src = fetchurl {
876 url = "https://registry.npmjs.org/etherpad-require-kernel/-/etherpad-require-kernel-1.0.9.tgz";
877 sha1 = "ed8f04e9fd2ccec3a0055bb6d2dfe9d99912e7e2";
878 };
879 };
880 "etherpad-yajsml-0.0.2" = {
881 name = "etherpad-yajsml";
882 packageName = "etherpad-yajsml";
883 version = "0.0.2";
884 src = fetchurl {
885 url = "https://registry.npmjs.org/etherpad-yajsml/-/etherpad-yajsml-0.0.2.tgz";
886 sha1 = "1c24d268b09476e637d049cddb1c6df8c729b46e";
887 };
888 };
889 "express-4.17.1" = {
890 name = "express";
891 packageName = "express";
892 version = "4.17.1";
893 src = fetchurl {
894 url = "https://registry.npmjs.org/express/-/express-4.17.1.tgz";
895 sha512 = "mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==";
896 };
897 };
898 "express-rate-limit-5.1.1" = {
899 name = "express-rate-limit";
900 packageName = "express-rate-limit";
901 version = "5.1.1";
902 src = fetchurl {
903 url = "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.1.1.tgz";
904 sha512 = "puA1zcCx/quwWUOU6pT6daCt6t7SweD9wKChKhb+KSgFMKRwS81C224hiSAUANw/gnSHiwEhgozM/2ezEBZPeA==";
905 };
906 };
907 "express-session-1.17.0" = {
908 name = "express-session";
909 packageName = "express-session";
910 version = "1.17.0";
911 src = fetchurl {
912 url = "https://registry.npmjs.org/express-session/-/express-session-1.17.0.tgz";
913 sha512 = "t4oX2z7uoSqATbMfsxWMbNjAL0T5zpvcJCk3Z9wnPPN7ibddhnmDZXHfEcoBMG2ojKXZoCyPMc5FbtK+G7SoDg==";
914 };
915 };
916 "extend-3.0.2" = {
917 name = "extend";
918 packageName = "extend";
919 version = "3.0.2";
920 src = fetchurl {
921 url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
922 sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
923 };
924 };
925 "extsprintf-1.3.0" = {
926 name = "extsprintf";
927 packageName = "extsprintf";
928 version = "1.3.0";
929 src = fetchurl {
930 url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
931 sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
932 };
933 };
934 "fast-deep-equal-3.1.1" = {
935 name = "fast-deep-equal";
936 packageName = "fast-deep-equal";
937 version = "3.1.1";
938 src = fetchurl {
939 url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
940 sha512 = "8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==";
941 };
942 };
943 "fast-json-stable-stringify-2.1.0" = {
944 name = "fast-json-stable-stringify";
945 packageName = "fast-json-stable-stringify";
946 version = "2.1.0";
947 src = fetchurl {
948 url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
949 sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==";
950 };
951 };
952 "finalhandler-1.1.2" = {
953 name = "finalhandler";
954 packageName = "finalhandler";
955 version = "1.1.2";
956 src = fetchurl {
957 url = "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz";
958 sha512 = "aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==";
959 };
960 };
961 "find-root-1.1.0" = {
962 name = "find-root";
963 packageName = "find-root";
964 version = "1.1.0";
965 src = fetchurl {
966 url = "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz";
967 sha512 = "NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==";
968 };
969 };
970 "forever-agent-0.6.1" = {
971 name = "forever-agent";
972 packageName = "forever-agent";
973 version = "0.6.1";
974 src = fetchurl {
975 url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
976 sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
977 };
978 };
979 "form-data-2.3.3" = {
980 name = "form-data";
981 packageName = "form-data";
982 version = "2.3.3";
983 src = fetchurl {
984 url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
985 sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
986 };
987 };
988 "form-data-2.5.1" = {
989 name = "form-data";
990 packageName = "form-data";
991 version = "2.5.1";
992 src = fetchurl {
993 url = "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz";
994 sha512 = "m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==";
995 };
996 };
997 "formidable-1.2.1" = {
998 name = "formidable";
999 packageName = "formidable";
1000 version = "1.2.1";
1001 src = fetchurl {
1002 url = "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz";
1003 sha512 = "Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==";
1004 };
1005 };
1006 "forwarded-0.1.2" = {
1007 name = "forwarded";
1008 packageName = "forwarded";
1009 version = "0.1.2";
1010 src = fetchurl {
1011 url = "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz";
1012 sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
1013 };
1014 };
1015 "fresh-0.5.2" = {
1016 name = "fresh";
1017 packageName = "fresh";
1018 version = "0.5.2";
1019 src = fetchurl {
1020 url = "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz";
1021 sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
1022 };
1023 };
1024 "getpass-0.1.7" = {
1025 name = "getpass";
1026 packageName = "getpass";
1027 version = "0.1.7";
1028 src = fetchurl {
1029 url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
1030 sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
1031 };
1032 };
1033 "graceful-fs-4.2.2" = {
1034 name = "graceful-fs";
1035 packageName = "graceful-fs";
1036 version = "4.2.2";
1037 src = fetchurl {
1038 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz";
1039 sha512 = "IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==";
1040 };
1041 };
1042 "har-schema-2.0.0" = {
1043 name = "har-schema";
1044 packageName = "har-schema";
1045 version = "2.0.0";
1046 src = fetchurl {
1047 url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
1048 sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
1049 };
1050 };
1051 "har-validator-5.1.3" = {
1052 name = "har-validator";
1053 packageName = "har-validator";
1054 version = "5.1.3";
1055 src = fetchurl {
1056 url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz";
1057 sha512 = "sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==";
1058 };
1059 };
1060 "has-ansi-2.0.0" = {
1061 name = "has-ansi";
1062 packageName = "has-ansi";
1063 version = "2.0.0";
1064 src = fetchurl {
1065 url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
1066 sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
1067 };
1068 };
1069 "has-binary2-1.0.3" = {
1070 name = "has-binary2";
1071 packageName = "has-binary2";
1072 version = "1.0.3";
1073 src = fetchurl {
1074 url = "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz";
1075 sha512 = "G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==";
1076 };
1077 };
1078 "has-cors-1.1.0" = {
1079 name = "has-cors";
1080 packageName = "has-cors";
1081 version = "1.1.0";
1082 src = fetchurl {
1083 url = "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz";
1084 sha1 = "5e474793f7ea9843d1bb99c23eef49ff126fff39";
1085 };
1086 };
1087 "htmlparser2-3.10.1" = {
1088 name = "htmlparser2";
1089 packageName = "htmlparser2";
1090 version = "3.10.1";
1091 src = fetchurl {
1092 url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz";
1093 sha512 = "IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==";
1094 };
1095 };
1096 "http-errors-1.7.2" = {
1097 name = "http-errors";
1098 packageName = "http-errors";
1099 version = "1.7.2";
1100 src = fetchurl {
1101 url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz";
1102 sha512 = "uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==";
1103 };
1104 };
1105 "http-errors-1.7.3" = {
1106 name = "http-errors";
1107 packageName = "http-errors";
1108 version = "1.7.3";
1109 src = fetchurl {
1110 url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz";
1111 sha512 = "ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==";
1112 };
1113 };
1114 "http-signature-1.2.0" = {
1115 name = "http-signature";
1116 packageName = "http-signature";
1117 version = "1.2.0";
1118 src = fetchurl {
1119 url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
1120 sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
1121 };
1122 };
1123 "humanize-ms-1.2.1" = {
1124 name = "humanize-ms";
1125 packageName = "humanize-ms";
1126 version = "1.2.1";
1127 src = fetchurl {
1128 url = "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz";
1129 sha1 = "c46e3159a293f6b896da29316d8b6fe8bb79bbed";
1130 };
1131 };
1132 "iconv-lite-0.4.24" = {
1133 name = "iconv-lite";
1134 packageName = "iconv-lite";
1135 version = "0.4.24";
1136 src = fetchurl {
1137 url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz";
1138 sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==";
1139 };
1140 };
1141 "indexof-0.0.1" = {
1142 name = "indexof";
1143 packageName = "indexof";
1144 version = "0.0.1";
1145 src = fetchurl {
1146 url = "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz";
1147 sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
1148 };
1149 };
1150 "inherits-2.0.3" = {
1151 name = "inherits";
1152 packageName = "inherits";
1153 version = "2.0.3";
1154 src = fetchurl {
1155 url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
1156 sha1 = "633c2c83e3da42a502f52466022480f4208261de";
1157 };
1158 };
1159 "inherits-2.0.4" = {
1160 name = "inherits";
1161 packageName = "inherits";
1162 version = "2.0.4";
1163 src = fetchurl {
1164 url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
1165 sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
1166 };
1167 };
1168 "ipaddr.js-1.9.1" = {
1169 name = "ipaddr.js";
1170 packageName = "ipaddr.js";
1171 version = "1.9.1";
1172 src = fetchurl {
1173 url = "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz";
1174 sha512 = "0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==";
1175 };
1176 };
1177 "is-promise-1.0.1" = {
1178 name = "is-promise";
1179 packageName = "is-promise";
1180 version = "1.0.1";
1181 src = fetchurl {
1182 url = "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz";
1183 sha1 = "31573761c057e33c2e91aab9e96da08cefbe76e5";
1184 };
1185 };
1186 "is-typedarray-1.0.0" = {
1187 name = "is-typedarray";
1188 packageName = "is-typedarray";
1189 version = "1.0.0";
1190 src = fetchurl {
1191 url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
1192 sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
1193 };
1194 };
1195 "isarray-0.0.1" = {
1196 name = "isarray";
1197 packageName = "isarray";
1198 version = "0.0.1";
1199 src = fetchurl {
1200 url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
1201 sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
1202 };
1203 };
1204 "isarray-1.0.0" = {
1205 name = "isarray";
1206 packageName = "isarray";
1207 version = "1.0.0";
1208 src = fetchurl {
1209 url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
1210 sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
1211 };
1212 };
1213 "isarray-2.0.1" = {
1214 name = "isarray";
1215 packageName = "isarray";
1216 version = "2.0.1";
1217 src = fetchurl {
1218 url = "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz";
1219 sha1 = "a37d94ed9cda2d59865c9f76fe596ee1f338741e";
1220 };
1221 };
1222 "isstream-0.1.2" = {
1223 name = "isstream";
1224 packageName = "isstream";
1225 version = "0.1.2";
1226 src = fetchurl {
1227 url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
1228 sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
1229 };
1230 };
1231 "js-yaml-3.13.1" = {
1232 name = "js-yaml";
1233 packageName = "js-yaml";
1234 version = "3.13.1";
1235 src = fetchurl {
1236 url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz";
1237 sha512 = "YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==";
1238 };
1239 };
1240 "jsbn-0.1.1" = {
1241 name = "jsbn";
1242 packageName = "jsbn";
1243 version = "0.1.1";
1244 src = fetchurl {
1245 url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
1246 sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
1247 };
1248 };
1249 "json-schema-0.2.3" = {
1250 name = "json-schema";
1251 packageName = "json-schema";
1252 version = "0.2.3";
1253 src = fetchurl {
1254 url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
1255 sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
1256 };
1257 };
1258 "json-schema-traverse-0.4.1" = {
1259 name = "json-schema-traverse";
1260 packageName = "json-schema-traverse";
1261 version = "0.4.1";
1262 src = fetchurl {
1263 url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
1264 sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
1265 };
1266 };
1267 "json-stringify-safe-5.0.1" = {
1268 name = "json-stringify-safe";
1269 packageName = "json-stringify-safe";
1270 version = "5.0.1";
1271 src = fetchurl {
1272 url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
1273 sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
1274 };
1275 };
1276 "jsonminify-0.4.1" = {
1277 name = "jsonminify";
1278 packageName = "jsonminify";
1279 version = "0.4.1";
1280 src = fetchurl {
1281 url = "https://registry.npmjs.org/jsonminify/-/jsonminify-0.4.1.tgz";
1282 sha1 = "805dafbb39395188cee9ab582c81ef959d7e710c";
1283 };
1284 };
1285 "jsonschema-1.2.4" = {
1286 name = "jsonschema";
1287 packageName = "jsonschema";
1288 version = "1.2.4";
1289 src = fetchurl {
1290 url = "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.4.tgz";
1291 sha512 = "lz1nOH69GbsVHeVgEdvyavc/33oymY1AZwtePMiMj4HZPMbP5OIKK3zT9INMWjwua/V4Z4yq7wSlBbSG+g4AEw==";
1292 };
1293 };
1294 "jsonschema-draft4-1.0.0" = {
1295 name = "jsonschema-draft4";
1296 packageName = "jsonschema-draft4";
1297 version = "1.0.0";
1298 src = fetchurl {
1299 url = "https://registry.npmjs.org/jsonschema-draft4/-/jsonschema-draft4-1.0.0.tgz";
1300 sha1 = "f0af2005054f0f0ade7ea2118614b69dc512d865";
1301 };
1302 };
1303 "jsprim-1.4.1" = {
1304 name = "jsprim";
1305 packageName = "jsprim";
1306 version = "1.4.1";
1307 src = fetchurl {
1308 url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
1309 sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
1310 };
1311 };
1312 "languages4translatewiki-0.1.3" = {
1313 name = "languages4translatewiki";
1314 packageName = "languages4translatewiki";
1315 version = "0.1.3";
1316 src = fetchurl {
1317 url = "https://registry.npmjs.org/languages4translatewiki/-/languages4translatewiki-0.1.3.tgz";
1318 sha1 = "c436206e052d21490b11017a44d5118f9221e5db";
1319 };
1320 };
1321 "lodash-4.17.15" = {
1322 name = "lodash";
1323 packageName = "lodash";
1324 version = "4.17.15";
1325 src = fetchurl {
1326 url = "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz";
1327 sha512 = "8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==";
1328 };
1329 };
1330 "lodash.assignin-4.2.0" = {
1331 name = "lodash.assignin";
1332 packageName = "lodash.assignin";
1333 version = "4.2.0";
1334 src = fetchurl {
1335 url = "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz";
1336 sha1 = "ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2";
1337 };
1338 };
1339 "lodash.bind-4.2.1" = {
1340 name = "lodash.bind";
1341 packageName = "lodash.bind";
1342 version = "4.2.1";
1343 src = fetchurl {
1344 url = "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz";
1345 sha1 = "7ae3017e939622ac31b7d7d7dcb1b34db1690d35";
1346 };
1347 };
1348 "lodash.clonedeep-4.5.0" = {
1349 name = "lodash.clonedeep";
1350 packageName = "lodash.clonedeep";
1351 version = "4.5.0";
1352 src = fetchurl {
1353 url = "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz";
1354 sha1 = "e23f3f9c4f8fbdde872529c1071857a086e5ccef";
1355 };
1356 };
1357 "lodash.defaults-4.2.0" = {
1358 name = "lodash.defaults";
1359 packageName = "lodash.defaults";
1360 version = "4.2.0";
1361 src = fetchurl {
1362 url = "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz";
1363 sha1 = "d09178716ffea4dde9e5fb7b37f6f0802274580c";
1364 };
1365 };
1366 "lodash.filter-4.6.0" = {
1367 name = "lodash.filter";
1368 packageName = "lodash.filter";
1369 version = "4.6.0";
1370 src = fetchurl {
1371 url = "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz";
1372 sha1 = "668b1d4981603ae1cc5a6fa760143e480b4c4ace";
1373 };
1374 };
1375 "lodash.flatten-4.4.0" = {
1376 name = "lodash.flatten";
1377 packageName = "lodash.flatten";
1378 version = "4.4.0";
1379 src = fetchurl {
1380 url = "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz";
1381 sha1 = "f31c22225a9632d2bbf8e4addbef240aa765a61f";
1382 };
1383 };
1384 "lodash.foreach-4.5.0" = {
1385 name = "lodash.foreach";
1386 packageName = "lodash.foreach";
1387 version = "4.5.0";
1388 src = fetchurl {
1389 url = "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz";
1390 sha1 = "1a6a35eace401280c7f06dddec35165ab27e3e53";
1391 };
1392 };
1393 "lodash.get-4.4.2" = {
1394 name = "lodash.get";
1395 packageName = "lodash.get";
1396 version = "4.4.2";
1397 src = fetchurl {
1398 url = "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz";
1399 sha1 = "2d177f652fa31e939b4438d5341499dfa3825e99";
1400 };
1401 };
1402 "lodash.isequal-4.5.0" = {
1403 name = "lodash.isequal";
1404 packageName = "lodash.isequal";
1405 version = "4.5.0";
1406 src = fetchurl {
1407 url = "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz";
1408 sha1 = "415c4478f2bcc30120c22ce10ed3226f7d3e18e0";
1409 };
1410 };
1411 "lodash.map-4.6.0" = {
1412 name = "lodash.map";
1413 packageName = "lodash.map";
1414 version = "4.6.0";
1415 src = fetchurl {
1416 url = "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz";
1417 sha1 = "771ec7839e3473d9c4cde28b19394c3562f4f6d3";
1418 };
1419 };
1420 "lodash.merge-4.6.2" = {
1421 name = "lodash.merge";
1422 packageName = "lodash.merge";
1423 version = "4.6.2";
1424 src = fetchurl {
1425 url = "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz";
1426 sha512 = "0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==";
1427 };
1428 };
1429 "lodash.pick-4.4.0" = {
1430 name = "lodash.pick";
1431 packageName = "lodash.pick";
1432 version = "4.4.0";
1433 src = fetchurl {
1434 url = "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz";
1435 sha1 = "52f05610fff9ded422611441ed1fc123a03001b3";
1436 };
1437 };
1438 "lodash.reduce-4.6.0" = {
1439 name = "lodash.reduce";
1440 packageName = "lodash.reduce";
1441 version = "4.6.0";
1442 src = fetchurl {
1443 url = "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz";
1444 sha1 = "f1ab6b839299ad48f784abbf476596f03b914d3b";
1445 };
1446 };
1447 "lodash.reject-4.6.0" = {
1448 name = "lodash.reject";
1449 packageName = "lodash.reject";
1450 version = "4.6.0";
1451 src = fetchurl {
1452 url = "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz";
1453 sha1 = "80d6492dc1470864bbf583533b651f42a9f52415";
1454 };
1455 };
1456 "lodash.some-4.6.0" = {
1457 name = "lodash.some";
1458 packageName = "lodash.some";
1459 version = "4.6.0";
1460 src = fetchurl {
1461 url = "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz";
1462 sha1 = "1bb9f314ef6b8baded13b549169b2a945eb68e4d";
1463 };
1464 };
1465 "log4js-0.6.35" = {
1466 name = "log4js";
1467 packageName = "log4js";
1468 version = "0.6.35";
1469 src = fetchurl {
1470 url = "https://registry.npmjs.org/log4js/-/log4js-0.6.35.tgz";
1471 sha1 = "3ab1da7cb14823b74ed3865c48593acdf11f1b59";
1472 };
1473 };
1474 "long-2.4.0" = {
1475 name = "long";
1476 packageName = "long";
1477 version = "2.4.0";
1478 src = fetchurl {
1479 url = "https://registry.npmjs.org/long/-/long-2.4.0.tgz";
1480 sha1 = "9fa180bb1d9500cdc29c4156766a1995e1f4524f";
1481 };
1482 };
1483 "measured-core-1.11.2" = {
1484 name = "measured-core";
1485 packageName = "measured-core";
1486 version = "1.11.2";
1487 src = fetchurl {
1488 url = "https://registry.npmjs.org/measured-core/-/measured-core-1.11.2.tgz";
1489 sha1 = "9dbea6d20741b56f61abd866e496eb8b85e69349";
1490 };
1491 };
1492 "media-typer-0.3.0" = {
1493 name = "media-typer";
1494 packageName = "media-typer";
1495 version = "0.3.0";
1496 src = fetchurl {
1497 url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz";
1498 sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
1499 };
1500 };
1501 "merge-descriptors-1.0.1" = {
1502 name = "merge-descriptors";
1503 packageName = "merge-descriptors";
1504 version = "1.0.1";
1505 src = fetchurl {
1506 url = "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
1507 sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
1508 };
1509 };
1510 "methods-1.1.2" = {
1511 name = "methods";
1512 packageName = "methods";
1513 version = "1.1.2";
1514 src = fetchurl {
1515 url = "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz";
1516 sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
1517 };
1518 };
1519 "mime-1.6.0" = {
1520 name = "mime";
1521 packageName = "mime";
1522 version = "1.6.0";
1523 src = fetchurl {
1524 url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz";
1525 sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
1526 };
1527 };
1528 "mime-db-1.44.0" = {
1529 name = "mime-db";
1530 packageName = "mime-db";
1531 version = "1.44.0";
1532 src = fetchurl {
1533 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz";
1534 sha512 = "/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==";
1535 };
1536 };
1537 "mime-types-2.1.27" = {
1538 name = "mime-types";
1539 packageName = "mime-types";
1540 version = "2.1.27";
1541 src = fetchurl {
1542 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz";
1543 sha512 = "JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==";
1544 };
1545 };
1546 "mock-json-schema-1.0.8" = {
1547 name = "mock-json-schema";
1548 packageName = "mock-json-schema";
1549 version = "1.0.8";
1550 src = fetchurl {
1551 url = "https://registry.npmjs.org/mock-json-schema/-/mock-json-schema-1.0.8.tgz";
1552 sha512 = "22yL+WggSo8HXqw0HkXgXXJjJMSBCfv54htfwN4BabaFdJ3808jL0CzE+VaBRlj8Nr0+pnSVE9YvsDG5Quu6hQ==";
1553 };
1554 };
1555 "ms-2.0.0" = {
1556 name = "ms";
1557 packageName = "ms";
1558 version = "2.0.0";
1559 src = fetchurl {
1560 url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
1561 sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
1562 };
1563 };
1564 "ms-2.1.1" = {
1565 name = "ms";
1566 packageName = "ms";
1567 version = "2.1.1";
1568 src = fetchurl {
1569 url = "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz";
1570 sha512 = "tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==";
1571 };
1572 };
1573 "ms-2.1.2" = {
1574 name = "ms";
1575 packageName = "ms";
1576 version = "2.1.2";
1577 src = fetchurl {
1578 url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
1579 sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
1580 };
1581 };
1582 "mysql-2.18.1" = {
1583 name = "mysql";
1584 packageName = "mysql";
1585 version = "2.18.1";
1586 src = fetchurl {
1587 url = "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz";
1588 sha512 = "Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==";
1589 };
1590 };
1591 "nano-8.2.2" = {
1592 name = "nano";
1593 packageName = "nano";
1594 version = "8.2.2";
1595 src = fetchurl {
1596 url = "https://registry.npmjs.org/nano/-/nano-8.2.2.tgz";
1597 sha512 = "1/rAvpd1J0Os0SazgutWQBx2buAq3KwJpmdIylPDqOwy73iQeAhTSCq3uzbGzvcNNW16Vv/BLXkk+DYcdcH+aw==";
1598 };
1599 };
1600 "negotiator-0.6.2" = {
1601 name = "negotiator";
1602 packageName = "negotiator";
1603 version = "0.6.2";
1604 src = fetchurl {
1605 url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz";
1606 sha512 = "hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==";
1607 };
1608 };
1609 "nodeify-1.0.1" = {
1610 name = "nodeify";
1611 packageName = "nodeify";
1612 version = "1.0.1";
1613 src = fetchurl {
1614 url = "https://registry.npmjs.org/nodeify/-/nodeify-1.0.1.tgz";
1615 sha1 = "64ab69a7bdbaf03ce107b4f0335c87c0b9e91b1d";
1616 };
1617 };
1618 "npm-6.14.4" = {
1619 name = "npm";
1620 packageName = "npm";
1621 version = "6.14.4";
1622 src = fetchurl {
1623 url = "https://registry.npmjs.org/npm/-/npm-6.14.4.tgz";
1624 sha512 = "B8UDDbWvdkW6RgXFn8/h2cHJP/u/FPa4HWeGzW23aNEBARN3QPrRaHqPIZW2NSN3fW649gtgUDNZpaRs0zTMPw==";
1625 };
1626 };
1627 "nth-check-1.0.2" = {
1628 name = "nth-check";
1629 packageName = "nth-check";
1630 version = "1.0.2";
1631 src = fetchurl {
1632 url = "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz";
1633 sha512 = "WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==";
1634 };
1635 };
1636 "oauth-sign-0.9.0" = {
1637 name = "oauth-sign";
1638 packageName = "oauth-sign";
1639 version = "0.9.0";
1640 src = fetchurl {
1641 url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
1642 sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
1643 };
1644 };
1645 "object-component-0.0.3" = {
1646 name = "object-component";
1647 packageName = "object-component";
1648 version = "0.0.3";
1649 src = fetchurl {
1650 url = "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz";
1651 sha1 = "f0c69aa50efc95b866c186f400a33769cb2f1291";
1652 };
1653 };
1654 "on-finished-2.3.0" = {
1655 name = "on-finished";
1656 packageName = "on-finished";
1657 version = "2.3.0";
1658 src = fetchurl {
1659 url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
1660 sha1 = "20f1336481b083cd75337992a16971aa2d906947";
1661 };
1662 };
1663 "on-headers-1.0.2" = {
1664 name = "on-headers";
1665 packageName = "on-headers";
1666 version = "1.0.2";
1667 src = fetchurl {
1668 url = "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz";
1669 sha512 = "pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==";
1670 };
1671 };
1672 "openapi-backend-2.4.1" = {
1673 name = "openapi-backend";
1674 packageName = "openapi-backend";
1675 version = "2.4.1";
1676 src = fetchurl {
1677 url = "https://registry.npmjs.org/openapi-backend/-/openapi-backend-2.4.1.tgz";
1678 sha512 = "48j8QhDD9sfV6t7Zgn9JrfJtCpJ53bmoT2bzXYYig1HhG/Xn0Aa5fJhM0cQSZq9nq78/XbU7RDEa3e+IADNkmA==";
1679 };
1680 };
1681 "openapi-schema-validation-0.4.2" = {
1682 name = "openapi-schema-validation";
1683 packageName = "openapi-schema-validation";
1684 version = "0.4.2";
1685 src = fetchurl {
1686 url = "https://registry.npmjs.org/openapi-schema-validation/-/openapi-schema-validation-0.4.2.tgz";
1687 sha512 = "K8LqLpkUf2S04p2Nphq9L+3bGFh/kJypxIG2NVGKX0ffzT4NQI9HirhiY6Iurfej9lCu7y4Ndm4tv+lm86Ck7w==";
1688 };
1689 };
1690 "openapi-types-1.3.5" = {
1691 name = "openapi-types";
1692 packageName = "openapi-types";
1693 version = "1.3.5";
1694 src = fetchurl {
1695 url = "https://registry.npmjs.org/openapi-types/-/openapi-types-1.3.5.tgz";
1696 sha512 = "11oi4zYorsgvg5yBarZplAqbpev5HkuVNPlZaPTknPDzAynq+lnJdXAmruGWP0s+dNYZS7bjM+xrTpJw7184Fg==";
1697 };
1698 };
1699 "optional-js-2.1.1" = {
1700 name = "optional-js";
1701 packageName = "optional-js";
1702 version = "2.1.1";
1703 src = fetchurl {
1704 url = "https://registry.npmjs.org/optional-js/-/optional-js-2.1.1.tgz";
1705 sha512 = "mUS4bDngcD5kKzzRUd1HVQkr9Lzzby3fSrrPR9wOHhQiyYo+hDS5NVli5YQzGjQRQ15k5Sno4xH9pfykJdeEUA==";
1706 };
1707 };
1708 "packet-reader-1.0.0" = {
1709 name = "packet-reader";
1710 packageName = "packet-reader";
1711 version = "1.0.0";
1712 src = fetchurl {
1713 url = "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz";
1714 sha512 = "HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==";
1715 };
1716 };
1717 "parseqs-0.0.5" = {
1718 name = "parseqs";
1719 packageName = "parseqs";
1720 version = "0.0.5";
1721 src = fetchurl {
1722 url = "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz";
1723 sha1 = "d5208a3738e46766e291ba2ea173684921a8b89d";
1724 };
1725 };
1726 "parseuri-0.0.5" = {
1727 name = "parseuri";
1728 packageName = "parseuri";
1729 version = "0.0.5";
1730 src = fetchurl {
1731 url = "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz";
1732 sha1 = "80204a50d4dbb779bfdc6ebe2778d90e4bce320a";
1733 };
1734 };
1735 "parseurl-1.3.3" = {
1736 name = "parseurl";
1737 packageName = "parseurl";
1738 version = "1.3.3";
1739 src = fetchurl {
1740 url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz";
1741 sha512 = "CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==";
1742 };
1743 };
1744 "path-to-regexp-0.1.7" = {
1745 name = "path-to-regexp";
1746 packageName = "path-to-regexp";
1747 version = "0.1.7";
1748 src = fetchurl {
1749 url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
1750 sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
1751 };
1752 };
1753 "performance-now-2.1.0" = {
1754 name = "performance-now";
1755 packageName = "performance-now";
1756 version = "2.1.0";
1757 src = fetchurl {
1758 url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
1759 sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
1760 };
1761 };
1762 "pg-7.18.2" = {
1763 name = "pg";
1764 packageName = "pg";
1765 version = "7.18.2";
1766 src = fetchurl {
1767 url = "https://registry.npmjs.org/pg/-/pg-7.18.2.tgz";
1768 sha512 = "Mvt0dGYMwvEADNKy5PMQGlzPudKcKKzJds/VbOeZJpb6f/pI3mmoXX0JksPgI3l3JPP/2Apq7F36O63J7mgveA==";
1769 };
1770 };
1771 "pg-connection-string-0.1.3" = {
1772 name = "pg-connection-string";
1773 packageName = "pg-connection-string";
1774 version = "0.1.3";
1775 src = fetchurl {
1776 url = "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz";
1777 sha1 = "da1847b20940e42ee1492beaf65d49d91b245df7";
1778 };
1779 };
1780 "pg-int8-1.0.1" = {
1781 name = "pg-int8";
1782 packageName = "pg-int8";
1783 version = "1.0.1";
1784 src = fetchurl {
1785 url = "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz";
1786 sha512 = "WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==";
1787 };
1788 };
1789 "pg-packet-stream-1.1.0" = {
1790 name = "pg-packet-stream";
1791 packageName = "pg-packet-stream";
1792 version = "1.1.0";
1793 src = fetchurl {
1794 url = "https://registry.npmjs.org/pg-packet-stream/-/pg-packet-stream-1.1.0.tgz";
1795 sha512 = "kRBH0tDIW/8lfnnOyTwKD23ygJ/kexQVXZs7gEyBljw4FYqimZFxnMMx50ndZ8In77QgfGuItS5LLclC2TtjYg==";
1796 };
1797 };
1798 "pg-pool-2.0.10" = {
1799 name = "pg-pool";
1800 packageName = "pg-pool";
1801 version = "2.0.10";
1802 src = fetchurl {
1803 url = "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.10.tgz";
1804 sha512 = "qdwzY92bHf3nwzIUcj+zJ0Qo5lpG/YxchahxIN8+ZVmXqkahKXsnl2aiJPHLYN9o5mB/leG+Xh6XKxtP7e0sjg==";
1805 };
1806 };
1807 "pg-types-2.2.0" = {
1808 name = "pg-types";
1809 packageName = "pg-types";
1810 version = "2.2.0";
1811 src = fetchurl {
1812 url = "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz";
1813 sha512 = "qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==";
1814 };
1815 };
1816 "pgpass-1.0.2" = {
1817 name = "pgpass";
1818 packageName = "pgpass";
1819 version = "1.0.2";
1820 src = fetchurl {
1821 url = "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz";
1822 sha1 = "2a7bb41b6065b67907e91da1b07c1847c877b306";
1823 };
1824 };
1825 "postgres-array-2.0.0" = {
1826 name = "postgres-array";
1827 packageName = "postgres-array";
1828 version = "2.0.0";
1829 src = fetchurl {
1830 url = "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz";
1831 sha512 = "VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==";
1832 };
1833 };
1834 "postgres-bytea-1.0.0" = {
1835 name = "postgres-bytea";
1836 packageName = "postgres-bytea";
1837 version = "1.0.0";
1838 src = fetchurl {
1839 url = "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz";
1840 sha1 = "027b533c0aa890e26d172d47cf9ccecc521acd35";
1841 };
1842 };
1843 "postgres-date-1.0.5" = {
1844 name = "postgres-date";
1845 packageName = "postgres-date";
1846 version = "1.0.5";
1847 src = fetchurl {
1848 url = "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.5.tgz";
1849 sha512 = "pdau6GRPERdAYUQwkBnGKxEfPyhVZXG/JiS44iZWiNdSOWE09N2lUgN6yshuq6fVSon4Pm0VMXd1srUUkLe9iA==";
1850 };
1851 };
1852 "postgres-interval-1.2.0" = {
1853 name = "postgres-interval";
1854 packageName = "postgres-interval";
1855 version = "1.2.0";
1856 src = fetchurl {
1857 url = "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz";
1858 sha512 = "9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==";
1859 };
1860 };
1861 "process-nextick-args-2.0.1" = {
1862 name = "process-nextick-args";
1863 packageName = "process-nextick-args";
1864 version = "2.0.1";
1865 src = fetchurl {
1866 url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
1867 sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
1868 };
1869 };
1870 "promise-1.3.0" = {
1871 name = "promise";
1872 packageName = "promise";
1873 version = "1.3.0";
1874 src = fetchurl {
1875 url = "https://registry.npmjs.org/promise/-/promise-1.3.0.tgz";
1876 sha1 = "e5cc9a4c8278e4664ffedc01c7da84842b040175";
1877 };
1878 };
1879 "proxy-addr-2.0.6" = {
1880 name = "proxy-addr";
1881 packageName = "proxy-addr";
1882 version = "2.0.6";
1883 src = fetchurl {
1884 url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz";
1885 sha512 = "dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==";
1886 };
1887 };
1888 "psl-1.8.0" = {
1889 name = "psl";
1890 packageName = "psl";
1891 version = "1.8.0";
1892 src = fetchurl {
1893 url = "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz";
1894 sha512 = "RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==";
1895 };
1896 };
1897 "punycode-1.4.1" = {
1898 name = "punycode";
1899 packageName = "punycode";
1900 version = "1.4.1";
1901 src = fetchurl {
1902 url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
1903 sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
1904 };
1905 };
1906 "punycode-2.1.1" = {
1907 name = "punycode";
1908 packageName = "punycode";
1909 version = "2.1.1";
1910 src = fetchurl {
1911 url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
1912 sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==";
1913 };
1914 };
1915 "qs-6.5.2" = {
1916 name = "qs";
1917 packageName = "qs";
1918 version = "6.5.2";
1919 src = fetchurl {
1920 url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
1921 sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==";
1922 };
1923 };
1924 "qs-6.7.0" = {
1925 name = "qs";
1926 packageName = "qs";
1927 version = "6.7.0";
1928 src = fetchurl {
1929 url = "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz";
1930 sha512 = "VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==";
1931 };
1932 };
1933 "random-bytes-1.0.0" = {
1934 name = "random-bytes";
1935 packageName = "random-bytes";
1936 version = "1.0.0";
1937 src = fetchurl {
1938 url = "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz";
1939 sha1 = "4f68a1dc0ae58bd3fb95848c30324db75d64360b";
1940 };
1941 };
1942 "range-parser-1.2.1" = {
1943 name = "range-parser";
1944 packageName = "range-parser";
1945 version = "1.2.1";
1946 src = fetchurl {
1947 url = "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz";
1948 sha512 = "Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==";
1949 };
1950 };
1951 "raw-body-2.4.0" = {
1952 name = "raw-body";
1953 packageName = "raw-body";
1954 version = "2.4.0";
1955 src = fetchurl {
1956 url = "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz";
1957 sha512 = "4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==";
1958 };
1959 };
1960 "readable-stream-1.0.34" = {
1961 name = "readable-stream";
1962 packageName = "readable-stream";
1963 version = "1.0.34";
1964 src = fetchurl {
1965 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz";
1966 sha1 = "125820e34bc842d2f2aaafafe4c2916ee32c157c";
1967 };
1968 };
1969 "readable-stream-2.3.7" = {
1970 name = "readable-stream";
1971 packageName = "readable-stream";
1972 version = "2.3.7";
1973 src = fetchurl {
1974 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
1975 sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
1976 };
1977 };
1978 "readable-stream-3.6.0" = {
1979 name = "readable-stream";
1980 packageName = "readable-stream";
1981 version = "3.6.0";
1982 src = fetchurl {
1983 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz";
1984 sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==";
1985 };
1986 };
1987 "redis-3.0.2" = {
1988 name = "redis";
1989 packageName = "redis";
1990 version = "3.0.2";
1991 src = fetchurl {
1992 url = "https://registry.npmjs.org/redis/-/redis-3.0.2.tgz";
1993 sha512 = "PNhLCrjU6vKVuMOyFu7oSP296mwBkcE6lrAjruBYG5LgdSqtRBoVQIylrMyVZD/lkF24RSNNatzvYag6HRBHjQ==";
1994 };
1995 };
1996 "redis-commands-1.5.0" = {
1997 name = "redis-commands";
1998 packageName = "redis-commands";
1999 version = "1.5.0";
2000 src = fetchurl {
2001 url = "https://registry.npmjs.org/redis-commands/-/redis-commands-1.5.0.tgz";
2002 sha512 = "6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg==";
2003 };
2004 };
2005 "redis-errors-1.2.0" = {
2006 name = "redis-errors";
2007 packageName = "redis-errors";
2008 version = "1.2.0";
2009 src = fetchurl {
2010 url = "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz";
2011 sha1 = "eb62d2adb15e4eaf4610c04afe1529384250abad";
2012 };
2013 };
2014 "redis-parser-3.0.0" = {
2015 name = "redis-parser";
2016 packageName = "redis-parser";
2017 version = "3.0.0";
2018 src = fetchurl {
2019 url = "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz";
2020 sha1 = "b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4";
2021 };
2022 };
2023 "request-2.88.0" = {
2024 name = "request";
2025 packageName = "request";
2026 version = "2.88.0";
2027 src = fetchurl {
2028 url = "https://registry.npmjs.org/request/-/request-2.88.0.tgz";
2029 sha512 = "NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==";
2030 };
2031 };
2032 "resolve-1.1.7" = {
2033 name = "resolve";
2034 packageName = "resolve";
2035 version = "1.1.7";
2036 src = fetchurl {
2037 url = "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz";
2038 sha1 = "203114d82ad2c5ed9e8e0411b3932875e889e97b";
2039 };
2040 };
2041 "rethinkdb-2.4.2" = {
2042 name = "rethinkdb";
2043 packageName = "rethinkdb";
2044 version = "2.4.2";
2045 src = fetchurl {
2046 url = "https://registry.npmjs.org/rethinkdb/-/rethinkdb-2.4.2.tgz";
2047 sha512 = "6DzwqEpFc8cqesAdo07a845oBRxLiHvWzopTKBo/uY2ypGWIsJQFJk3wjRDtSEhczxJqLS0jnf37rwgzYAw8NQ==";
2048 };
2049 };
2050 "safe-buffer-5.1.2" = {
2051 name = "safe-buffer";
2052 packageName = "safe-buffer";
2053 version = "5.1.2";
2054 src = fetchurl {
2055 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
2056 sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
2057 };
2058 };
2059 "safe-buffer-5.2.0" = {
2060 name = "safe-buffer";
2061 packageName = "safe-buffer";
2062 version = "5.2.0";
2063 src = fetchurl {
2064 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz";
2065 sha512 = "fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==";
2066 };
2067 };
2068 "safer-buffer-2.1.2" = {
2069 name = "safer-buffer";
2070 packageName = "safer-buffer";
2071 version = "2.1.2";
2072 src = fetchurl {
2073 url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
2074 sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
2075 };
2076 };
2077 "security-1.0.0" = {
2078 name = "security";
2079 packageName = "security";
2080 version = "1.0.0";
2081 src = fetchurl {
2082 url = "https://registry.npmjs.org/security/-/security-1.0.0.tgz";
2083 sha1 = "811c300313686133ef0007125e3b0ed700978815";
2084 };
2085 };
2086 "semver-4.3.2" = {
2087 name = "semver";
2088 packageName = "semver";
2089 version = "4.3.2";
2090 src = fetchurl {
2091 url = "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz";
2092 sha1 = "c7a07158a80bedd052355b770d82d6640f803be7";
2093 };
2094 };
2095 "semver-4.3.6" = {
2096 name = "semver";
2097 packageName = "semver";
2098 version = "4.3.6";
2099 src = fetchurl {
2100 url = "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz";
2101 sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da";
2102 };
2103 };
2104 "semver-5.6.0" = {
2105 name = "semver";
2106 packageName = "semver";
2107 version = "5.6.0";
2108 src = fetchurl {
2109 url = "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz";
2110 sha512 = "RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==";
2111 };
2112 };
2113 "send-0.17.1" = {
2114 name = "send";
2115 packageName = "send";
2116 version = "0.17.1";
2117 src = fetchurl {
2118 url = "https://registry.npmjs.org/send/-/send-0.17.1.tgz";
2119 sha512 = "BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==";
2120 };
2121 };
2122 "serve-static-1.14.1" = {
2123 name = "serve-static";
2124 packageName = "serve-static";
2125 version = "1.14.1";
2126 src = fetchurl {
2127 url = "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz";
2128 sha512 = "JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==";
2129 };
2130 };
2131 "setprototypeof-1.1.1" = {
2132 name = "setprototypeof";
2133 packageName = "setprototypeof";
2134 version = "1.1.1";
2135 src = fetchurl {
2136 url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz";
2137 sha512 = "JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==";
2138 };
2139 };
2140 "slide-1.1.6" = {
2141 name = "slide";
2142 packageName = "slide";
2143 version = "1.1.6";
2144 src = fetchurl {
2145 url = "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz";
2146 sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707";
2147 };
2148 };
2149 "socket.io-2.1.1" = {
2150 name = "socket.io";
2151 packageName = "socket.io";
2152 version = "2.1.1";
2153 src = fetchurl {
2154 url = "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz";
2155 sha512 = "rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==";
2156 };
2157 };
2158 "socket.io-adapter-1.1.2" = {
2159 name = "socket.io-adapter";
2160 packageName = "socket.io-adapter";
2161 version = "1.1.2";
2162 src = fetchurl {
2163 url = "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz";
2164 sha512 = "WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==";
2165 };
2166 };
2167 "socket.io-client-2.1.1" = {
2168 name = "socket.io-client";
2169 packageName = "socket.io-client";
2170 version = "2.1.1";
2171 src = fetchurl {
2172 url = "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz";
2173 sha512 = "jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==";
2174 };
2175 };
2176 "socket.io-parser-3.2.0" = {
2177 name = "socket.io-parser";
2178 packageName = "socket.io-parser";
2179 version = "3.2.0";
2180 src = fetchurl {
2181 url = "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz";
2182 sha512 = "FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==";
2183 };
2184 };
2185 "source-map-0.6.1" = {
2186 name = "source-map";
2187 packageName = "source-map";
2188 version = "0.6.1";
2189 src = fetchurl {
2190 url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";
2191 sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==";
2192 };
2193 };
2194 "split-1.0.1" = {
2195 name = "split";
2196 packageName = "split";
2197 version = "1.0.1";
2198 src = fetchurl {
2199 url = "https://registry.npmjs.org/split/-/split-1.0.1.tgz";
2200 sha512 = "mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==";
2201 };
2202 };
2203 "sprintf-js-1.0.3" = {
2204 name = "sprintf-js";
2205 packageName = "sprintf-js";
2206 version = "1.0.3";
2207 src = fetchurl {
2208 url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz";
2209 sha1 = "04e6926f662895354f3dd015203633b857297e2c";
2210 };
2211 };
2212 "sqlstring-2.3.1" = {
2213 name = "sqlstring";
2214 packageName = "sqlstring";
2215 version = "2.3.1";
2216 src = fetchurl {
2217 url = "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz";
2218 sha1 = "475393ff9e91479aea62dcaf0ca3d14983a7fb40";
2219 };
2220 };
2221 "sshpk-1.16.1" = {
2222 name = "sshpk";
2223 packageName = "sshpk";
2224 version = "1.16.1";
2225 src = fetchurl {
2226 url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
2227 sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
2228 };
2229 };
2230 "statuses-1.5.0" = {
2231 name = "statuses";
2232 packageName = "statuses";
2233 version = "1.5.0";
2234 src = fetchurl {
2235 url = "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz";
2236 sha1 = "161c7dac177659fd9811f43771fa99381478628c";
2237 };
2238 };
2239 "string_decoder-0.10.31" = {
2240 name = "string_decoder";
2241 packageName = "string_decoder";
2242 version = "0.10.31";
2243 src = fetchurl {
2244 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
2245 sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
2246 };
2247 };
2248 "string_decoder-1.1.1" = {
2249 name = "string_decoder";
2250 packageName = "string_decoder";
2251 version = "1.1.1";
2252 src = fetchurl {
2253 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
2254 sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
2255 };
2256 };
2257 "string_decoder-1.3.0" = {
2258 name = "string_decoder";
2259 packageName = "string_decoder";
2260 version = "1.3.0";
2261 src = fetchurl {
2262 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz";
2263 sha512 = "hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==";
2264 };
2265 };
2266 "strip-ansi-3.0.1" = {
2267 name = "strip-ansi";
2268 packageName = "strip-ansi";
2269 version = "3.0.1";
2270 src = fetchurl {
2271 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
2272 sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
2273 };
2274 };
2275 "supports-color-2.0.0" = {
2276 name = "supports-color";
2277 packageName = "supports-color";
2278 version = "2.0.0";
2279 src = fetchurl {
2280 url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
2281 sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
2282 };
2283 };
2284 "swagger-parser-9.0.1" = {
2285 name = "swagger-parser";
2286 packageName = "swagger-parser";
2287 version = "9.0.1";
2288 src = fetchurl {
2289 url = "https://registry.npmjs.org/swagger-parser/-/swagger-parser-9.0.1.tgz";
2290 sha512 = "oxOHUaeNetO9ChhTJm2fD+48DbGbLD09ZEOwPOWEqcW8J6zmjWxutXtSuOiXsoRgDWvORYlImbwM21Pn+EiuvQ==";
2291 };
2292 };
2293 "swagger-schema-official-2.0.0-bab6bed" = {
2294 name = "swagger-schema-official";
2295 packageName = "swagger-schema-official";
2296 version = "2.0.0-bab6bed";
2297 src = fetchurl {
2298 url = "https://registry.npmjs.org/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz";
2299 sha1 = "70070468d6d2977ca5237b2e519ca7d06a2ea3fd";
2300 };
2301 };
2302 "through-2.3.8" = {
2303 name = "through";
2304 packageName = "through";
2305 version = "2.3.8";
2306 src = fetchurl {
2307 url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz";
2308 sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
2309 };
2310 };
2311 "tinycon-0.0.1" = {
2312 name = "tinycon";
2313 packageName = "tinycon";
2314 version = "0.0.1";
2315 src = fetchurl {
2316 url = "https://registry.npmjs.org/tinycon/-/tinycon-0.0.1.tgz";
2317 sha1 = "6de10cd5219a1f121d9a0a24b2c11b3fb24dffed";
2318 };
2319 };
2320 "to-array-0.1.4" = {
2321 name = "to-array";
2322 packageName = "to-array";
2323 version = "0.1.4";
2324 src = fetchurl {
2325 url = "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz";
2326 sha1 = "17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890";
2327 };
2328 };
2329 "toidentifier-1.0.0" = {
2330 name = "toidentifier";
2331 packageName = "toidentifier";
2332 version = "1.0.0";
2333 src = fetchurl {
2334 url = "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz";
2335 sha512 = "yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==";
2336 };
2337 };
2338 "tough-cookie-2.4.3" = {
2339 name = "tough-cookie";
2340 packageName = "tough-cookie";
2341 version = "2.4.3";
2342 src = fetchurl {
2343 url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz";
2344 sha512 = "Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==";
2345 };
2346 };
2347 "tunnel-agent-0.6.0" = {
2348 name = "tunnel-agent";
2349 packageName = "tunnel-agent";
2350 version = "0.6.0";
2351 src = fetchurl {
2352 url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
2353 sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
2354 };
2355 };
2356 "tweetnacl-0.14.5" = {
2357 name = "tweetnacl";
2358 packageName = "tweetnacl";
2359 version = "0.14.5";
2360 src = fetchurl {
2361 url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
2362 sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
2363 };
2364 };
2365 "type-is-1.6.18" = {
2366 name = "type-is";
2367 packageName = "type-is";
2368 version = "1.6.18";
2369 src = fetchurl {
2370 url = "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz";
2371 sha512 = "TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==";
2372 };
2373 };
2374 "ueberdb2-0.4.5" = {
2375 name = "ueberdb2";
2376 packageName = "ueberdb2";
2377 version = "0.4.5";
2378 src = fetchurl {
2379 url = "https://registry.npmjs.org/ueberdb2/-/ueberdb2-0.4.5.tgz";
2380 sha512 = "D8TogZ6Dc4Ot909b0D0QQRSanVB3W4EtqA8smKEZS7H5eIbAWFOyBF74XADIB9f+NASSjdu8DU3EJeKe9Xdzjg==";
2381 };
2382 };
2383 "uglify-js-3.8.1" = {
2384 name = "uglify-js";
2385 packageName = "uglify-js";
2386 version = "3.8.1";
2387 src = fetchurl {
2388 url = "https://registry.npmjs.org/uglify-js/-/uglify-js-3.8.1.tgz";
2389 sha512 = "W7KxyzeaQmZvUFbGj4+YFshhVrMBGSg2IbcYAjGWGvx8DHvJMclbTDMpffdxFUGPBHjIytk7KJUR/KUXstUGDw==";
2390 };
2391 };
2392 "uid-safe-2.1.5" = {
2393 name = "uid-safe";
2394 packageName = "uid-safe";
2395 version = "2.1.5";
2396 src = fetchurl {
2397 url = "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz";
2398 sha512 = "KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==";
2399 };
2400 };
2401 "ultron-1.1.1" = {
2402 name = "ultron";
2403 packageName = "ultron";
2404 version = "1.1.1";
2405 src = fetchurl {
2406 url = "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz";
2407 sha512 = "UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==";
2408 };
2409 };
2410 "underscore-1.8.3" = {
2411 name = "underscore";
2412 packageName = "underscore";
2413 version = "1.8.3";
2414 src = fetchurl {
2415 url = "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz";
2416 sha1 = "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022";
2417 };
2418 };
2419 "unorm-1.4.1" = {
2420 name = "unorm";
2421 packageName = "unorm";
2422 version = "1.4.1";
2423 src = fetchurl {
2424 url = "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz";
2425 sha1 = "364200d5f13646ca8bcd44490271335614792300";
2426 };
2427 };
2428 "unpipe-1.0.0" = {
2429 name = "unpipe";
2430 packageName = "unpipe";
2431 version = "1.0.0";
2432 src = fetchurl {
2433 url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz";
2434 sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
2435 };
2436 };
2437 "uri-js-4.2.2" = {
2438 name = "uri-js";
2439 packageName = "uri-js";
2440 version = "4.2.2";
2441 src = fetchurl {
2442 url = "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz";
2443 sha512 = "KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==";
2444 };
2445 };
2446 "util-deprecate-1.0.2" = {
2447 name = "util-deprecate";
2448 packageName = "util-deprecate";
2449 version = "1.0.2";
2450 src = fetchurl {
2451 url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
2452 sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
2453 };
2454 };
2455 "utils-merge-1.0.1" = {
2456 name = "utils-merge";
2457 packageName = "utils-merge";
2458 version = "1.0.1";
2459 src = fetchurl {
2460 url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz";
2461 sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
2462 };
2463 };
2464 "uuid-3.4.0" = {
2465 name = "uuid";
2466 packageName = "uuid";
2467 version = "3.4.0";
2468 src = fetchurl {
2469 url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz";
2470 sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==";
2471 };
2472 };
2473 "validator-12.2.0" = {
2474 name = "validator";
2475 packageName = "validator";
2476 version = "12.2.0";
2477 src = fetchurl {
2478 url = "https://registry.npmjs.org/validator/-/validator-12.2.0.tgz";
2479 sha512 = "jJfE/DW6tIK1Ek8nCfNFqt8Wb3nzMoAbocBF6/Icgg1ZFSBpObdnwVY2jQj6qUqzhx5jc71fpvBWyLGO7Xl+nQ==";
2480 };
2481 };
2482 "vary-1.1.2" = {
2483 name = "vary";
2484 packageName = "vary";
2485 version = "1.1.2";
2486 src = fetchurl {
2487 url = "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz";
2488 sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
2489 };
2490 };
2491 "verror-1.10.0" = {
2492 name = "verror";
2493 packageName = "verror";
2494 version = "1.10.0";
2495 src = fetchurl {
2496 url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
2497 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
2498 };
2499 };
2500 "ws-3.3.3" = {
2501 name = "ws";
2502 packageName = "ws";
2503 version = "3.3.3";
2504 src = fetchurl {
2505 url = "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz";
2506 sha512 = "nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==";
2507 };
2508 };
2509 "xmlhttprequest-ssl-1.5.5" = {
2510 name = "xmlhttprequest-ssl";
2511 packageName = "xmlhttprequest-ssl";
2512 version = "1.5.5";
2513 src = fetchurl {
2514 url = "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz";
2515 sha1 = "c2876b06168aadc40e57d97e81191ac8f4398b3e";
2516 };
2517 };
2518 "xtend-4.0.2" = {
2519 name = "xtend";
2520 packageName = "xtend";
2521 version = "4.0.2";
2522 src = fetchurl {
2523 url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz";
2524 sha512 = "LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==";
2525 };
2526 };
2527 "yeast-0.1.2" = {
2528 name = "yeast";
2529 packageName = "yeast";
2530 version = "0.1.2";
2531 src = fetchurl {
2532 url = "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz";
2533 sha1 = "008e06d8094320c372dbc2f8ed76a0ca6c8ac419";
2534 };
2535 };
2536 "z-schema-4.2.3" = {
2537 name = "z-schema";
2538 packageName = "z-schema";
2539 version = "4.2.3";
2540 src = fetchurl {
2541 url = "https://registry.npmjs.org/z-schema/-/z-schema-4.2.3.tgz";
2542 sha512 = "zkvK/9TC6p38IwcrbnT3ul9in1UX4cm1y/VZSs4GHKIiDCrlafc+YQBgQBUdDXLAoZHf2qvQ7gJJOo6yT1LH6A==";
2543 };
2544 };
2545 };
2546 args = {
2547 name = "ep_etherpad-lite";
2548 packageName = "ep_etherpad-lite";
2549 version = "1.8.3";
2550 inherit src;
2551 dependencies = [
2552 sources."@apidevtools/json-schema-ref-parser-8.0.0"
2553 sources."@apidevtools/openapi-schemas-2.0.3"
2554 sources."@apidevtools/swagger-methods-3.0.1"
2555 sources."@apidevtools/swagger-parser-9.0.1"
2556 sources."@jsdevtools/ono-7.1.2"
2557 sources."@types/caseless-0.12.2"
2558 sources."@types/long-4.0.1"
2559 sources."@types/node-13.13.4"
2560 (sources."@types/request-2.48.4" // {
2561 dependencies = [
2562 sources."form-data-2.5.1"
2563 ];
2564 })
2565 sources."@types/tough-cookie-4.0.0"
2566 sources."accepts-1.3.7"
2567 sources."adm-zip-0.4.14"
2568 sources."after-0.8.2"
2569 sources."agentkeepalive-3.5.2"
2570 sources."ajv-6.12.2"
2571 sources."ansi-regex-2.1.1"
2572 sources."ansi-styles-2.2.1"
2573 sources."argparse-1.0.10"
2574 sources."array-flatten-1.1.1"
2575 sources."arraybuffer.slice-0.0.7"
2576 sources."asn1-0.2.4"
2577 sources."assert-plus-1.0.0"
2578 sources."async-0.9.0"
2579 sources."async-limiter-1.0.1"
2580 sources."async-stacktrace-0.0.2"
2581 sources."asynckit-0.4.0"
2582 sources."aws-sign2-0.7.0"
2583 sources."aws4-1.9.1"
2584 sources."backo2-1.0.2"
2585 sources."base64-arraybuffer-0.1.5"
2586 sources."base64id-1.0.0"
2587 sources."bath-es5-3.0.3"
2588 sources."bcrypt-pbkdf-1.0.2"
2589 sources."better-assert-1.0.2"
2590 sources."bignumber.js-9.0.0"
2591 sources."binary-search-1.3.6"
2592 sources."blob-0.0.5"
2593 sources."bluebird-2.11.0"
2594 (sources."body-parser-1.19.0" // {
2595 dependencies = [
2596 sources."http-errors-1.7.2"
2597 sources."inherits-2.0.3"
2598 ];
2599 })
2600 sources."boolbase-1.0.0"
2601 sources."browser-request-0.3.3"
2602 sources."buffer-writer-2.0.0"
2603 sources."bytes-3.1.0"
2604 sources."call-me-maybe-1.0.1"
2605 sources."callsite-1.0.0"
2606 sources."caseless-0.12.0"
2607 sources."cassandra-driver-4.5.1"
2608 sources."chalk-1.1.3"
2609 sources."channels-0.0.4"
2610 sources."cheerio-0.22.0"
2611 sources."clean-css-4.2.3"
2612 (sources."cloudant-follow-0.18.2" // {
2613 dependencies = [
2614 sources."debug-4.1.1"
2615 sources."ms-2.1.2"
2616 ];
2617 })
2618 sources."combined-stream-1.0.8"
2619 sources."commander-2.20.3"
2620 sources."component-bind-1.0.0"
2621 sources."component-emitter-1.2.1"
2622 sources."component-inherit-0.0.3"
2623 (sources."content-disposition-0.5.3" // {
2624 dependencies = [
2625 sources."safe-buffer-5.1.2"
2626 ];
2627 })
2628 sources."content-type-1.0.4"
2629 sources."cookie-0.3.1"
2630 sources."cookie-parser-1.4.4"
2631 sources."cookie-signature-1.0.6"
2632 sources."core-util-is-1.0.2"
2633 sources."css-select-1.2.0"
2634 sources."css-what-2.1.3"
2635 sources."dashdash-1.14.1"
2636 sources."debug-2.6.9"
2637 sources."delayed-stream-1.0.0"
2638 sources."denque-1.4.1"
2639 sources."depd-1.1.2"
2640 sources."destroy-1.0.4"
2641 sources."dirty-1.1.0"
2642 sources."dom-serializer-0.1.1"
2643 sources."domelementtype-1.3.1"
2644 sources."domhandler-2.4.2"
2645 sources."domutils-1.5.1"
2646 sources."ecc-jsbn-0.1.2"
2647 sources."ee-first-1.1.1"
2648 sources."ejs-2.6.1"
2649 sources."elasticsearch-16.7.1"
2650 sources."encodeurl-1.0.2"
2651 (sources."engine.io-3.2.1" // {
2652 dependencies = [
2653 sources."debug-3.1.0"
2654 ];
2655 })
2656 (sources."engine.io-client-3.2.1" // {
2657 dependencies = [
2658 sources."debug-3.1.0"
2659 ];
2660 })
2661 sources."engine.io-parser-2.1.3"
2662 sources."entities-1.1.2"
2663 sources."errs-0.3.2"
2664 sources."escape-html-1.0.3"
2665 sources."escape-string-regexp-1.0.5"
2666 sources."esprima-4.0.1"
2667 sources."etag-1.8.1"
2668 sources."etherpad-require-kernel-1.0.9"
2669 sources."etherpad-yajsml-0.0.2"
2670 (sources."express-4.17.1" // {
2671 dependencies = [
2672 sources."cookie-0.4.0"
2673 sources."safe-buffer-5.1.2"
2674 ];
2675 })
2676 sources."express-rate-limit-5.1.1"
2677 (sources."express-session-1.17.0" // {
2678 dependencies = [
2679 sources."cookie-0.4.0"
2680 sources."depd-2.0.0"
2681 ];
2682 })
2683 sources."extend-3.0.2"
2684 sources."extsprintf-1.3.0"
2685 sources."fast-deep-equal-3.1.1"
2686 sources."fast-json-stable-stringify-2.1.0"
2687 sources."finalhandler-1.1.2"
2688 sources."find-root-1.1.0"
2689 sources."forever-agent-0.6.1"
2690 sources."form-data-2.3.3"
2691 sources."formidable-1.2.1"
2692 sources."forwarded-0.1.2"
2693 sources."fresh-0.5.2"
2694 sources."getpass-0.1.7"
2695 sources."graceful-fs-4.2.2"
2696 sources."har-schema-2.0.0"
2697 sources."har-validator-5.1.3"
2698 sources."has-ansi-2.0.0"
2699 (sources."has-binary2-1.0.3" // {
2700 dependencies = [
2701 sources."isarray-2.0.1"
2702 ];
2703 })
2704 sources."has-cors-1.1.0"
2705 sources."htmlparser2-3.10.1"
2706 sources."http-errors-1.7.3"
2707 sources."http-signature-1.2.0"
2708 sources."humanize-ms-1.2.1"
2709 sources."iconv-lite-0.4.24"
2710 sources."indexof-0.0.1"
2711 sources."inherits-2.0.4"
2712 sources."ipaddr.js-1.9.1"
2713 sources."is-promise-1.0.1"
2714 sources."is-typedarray-1.0.0"
2715 sources."isarray-0.0.1"
2716 sources."isstream-0.1.2"
2717 sources."js-yaml-3.13.1"
2718 sources."jsbn-0.1.1"
2719 sources."json-schema-0.2.3"
2720 sources."json-schema-traverse-0.4.1"
2721 sources."json-stringify-safe-5.0.1"
2722 sources."jsonminify-0.4.1"
2723 sources."jsonschema-1.2.4"
2724 sources."jsonschema-draft4-1.0.0"
2725 sources."jsprim-1.4.1"
2726 sources."languages4translatewiki-0.1.3"
2727 sources."lodash-4.17.15"
2728 sources."lodash.assignin-4.2.0"
2729 sources."lodash.bind-4.2.1"
2730 sources."lodash.clonedeep-4.5.0"
2731 sources."lodash.defaults-4.2.0"
2732 sources."lodash.filter-4.6.0"
2733 sources."lodash.flatten-4.4.0"
2734 sources."lodash.foreach-4.5.0"
2735 sources."lodash.get-4.4.2"
2736 sources."lodash.isequal-4.5.0"
2737 sources."lodash.map-4.6.0"
2738 sources."lodash.merge-4.6.2"
2739 sources."lodash.pick-4.4.0"
2740 sources."lodash.reduce-4.6.0"
2741 sources."lodash.reject-4.6.0"
2742 sources."lodash.some-4.6.0"
2743 (sources."log4js-0.6.35" // {
2744 dependencies = [
2745 sources."readable-stream-1.0.34"
2746 sources."semver-4.3.6"
2747 sources."string_decoder-0.10.31"
2748 ];
2749 })
2750 sources."long-2.4.0"
2751 sources."measured-core-1.11.2"
2752 sources."media-typer-0.3.0"
2753 sources."merge-descriptors-1.0.1"
2754 sources."methods-1.1.2"
2755 sources."mime-1.6.0"
2756 sources."mime-db-1.44.0"
2757 sources."mime-types-2.1.27"
2758 sources."mock-json-schema-1.0.8"
2759 sources."ms-2.0.0"
2760 (sources."mysql-2.18.1" // {
2761 dependencies = [
2762 sources."isarray-1.0.0"
2763 sources."readable-stream-2.3.7"
2764 sources."safe-buffer-5.1.2"
2765 sources."string_decoder-1.1.1"
2766 ];
2767 })
2768 (sources."nano-8.2.2" // {
2769 dependencies = [
2770 sources."debug-4.1.1"
2771 sources."ms-2.1.2"
2772 ];
2773 })
2774 sources."negotiator-0.6.2"
2775 sources."nodeify-1.0.1"
2776 sources."npm-6.14.4"
2777 sources."nth-check-1.0.2"
2778 sources."oauth-sign-0.9.0"
2779 sources."object-component-0.0.3"
2780 sources."on-finished-2.3.0"
2781 sources."on-headers-1.0.2"
2782 (sources."openapi-backend-2.4.1" // {
2783 dependencies = [
2784 sources."cookie-0.4.1"
2785 ];
2786 })
2787 sources."openapi-schema-validation-0.4.2"
2788 sources."openapi-types-1.3.5"
2789 sources."optional-js-2.1.1"
2790 sources."packet-reader-1.0.0"
2791 sources."parseqs-0.0.5"
2792 sources."parseuri-0.0.5"
2793 sources."parseurl-1.3.3"
2794 sources."path-to-regexp-0.1.7"
2795 sources."performance-now-2.1.0"
2796 (sources."pg-7.18.2" // {
2797 dependencies = [
2798 sources."semver-4.3.2"
2799 ];
2800 })
2801 sources."pg-connection-string-0.1.3"
2802 sources."pg-int8-1.0.1"
2803 sources."pg-packet-stream-1.1.0"
2804 sources."pg-pool-2.0.10"
2805 sources."pg-types-2.2.0"
2806 sources."pgpass-1.0.2"
2807 sources."postgres-array-2.0.0"
2808 sources."postgres-bytea-1.0.0"
2809 sources."postgres-date-1.0.5"
2810 sources."postgres-interval-1.2.0"
2811 sources."process-nextick-args-2.0.1"
2812 sources."promise-1.3.0"
2813 sources."proxy-addr-2.0.6"
2814 sources."psl-1.8.0"
2815 sources."punycode-2.1.1"
2816 sources."qs-6.7.0"
2817 sources."random-bytes-1.0.0"
2818 sources."range-parser-1.2.1"
2819 (sources."raw-body-2.4.0" // {
2820 dependencies = [
2821 sources."http-errors-1.7.2"
2822 sources."inherits-2.0.3"
2823 ];
2824 })
2825 sources."readable-stream-3.6.0"
2826 sources."redis-3.0.2"
2827 sources."redis-commands-1.5.0"
2828 sources."redis-errors-1.2.0"
2829 sources."redis-parser-3.0.0"
2830 (sources."request-2.88.0" // {
2831 dependencies = [
2832 sources."qs-6.5.2"
2833 ];
2834 })
2835 sources."resolve-1.1.7"
2836 sources."rethinkdb-2.4.2"
2837 sources."safe-buffer-5.2.0"
2838 sources."safer-buffer-2.1.2"
2839 sources."security-1.0.0"
2840 sources."semver-5.6.0"
2841 (sources."send-0.17.1" // {
2842 dependencies = [
2843 sources."ms-2.1.1"
2844 ];
2845 })
2846 sources."serve-static-1.14.1"
2847 sources."setprototypeof-1.1.1"
2848 sources."slide-1.1.6"
2849 (sources."socket.io-2.1.1" // {
2850 dependencies = [
2851 sources."debug-3.1.0"
2852 ];
2853 })
2854 sources."socket.io-adapter-1.1.2"
2855 (sources."socket.io-client-2.1.1" // {
2856 dependencies = [
2857 sources."debug-3.1.0"
2858 ];
2859 })
2860 (sources."socket.io-parser-3.2.0" // {
2861 dependencies = [
2862 sources."debug-3.1.0"
2863 sources."isarray-2.0.1"
2864 ];
2865 })
2866 sources."source-map-0.6.1"
2867 sources."split-1.0.1"
2868 sources."sprintf-js-1.0.3"
2869 sources."sqlstring-2.3.1"
2870 sources."sshpk-1.16.1"
2871 sources."statuses-1.5.0"
2872 sources."string_decoder-1.3.0"
2873 sources."strip-ansi-3.0.1"
2874 sources."supports-color-2.0.0"
2875 sources."swagger-parser-9.0.1"
2876 sources."swagger-schema-official-2.0.0-bab6bed"
2877 sources."through-2.3.8"
2878 sources."tinycon-0.0.1"
2879 sources."to-array-0.1.4"
2880 sources."toidentifier-1.0.0"
2881 (sources."tough-cookie-2.4.3" // {
2882 dependencies = [
2883 sources."punycode-1.4.1"
2884 ];
2885 })
2886 sources."tunnel-agent-0.6.0"
2887 sources."tweetnacl-0.14.5"
2888 sources."type-is-1.6.18"
2889 (sources."ueberdb2-0.4.5" // {
2890 dependencies = [
2891 sources."async-3.2.0"
2892 ];
2893 })
2894 sources."uglify-js-3.8.1"
2895 sources."uid-safe-2.1.5"
2896 sources."ultron-1.1.1"
2897 sources."underscore-1.8.3"
2898 sources."unorm-1.4.1"
2899 sources."unpipe-1.0.0"
2900 sources."uri-js-4.2.2"
2901 sources."util-deprecate-1.0.2"
2902 sources."utils-merge-1.0.1"
2903 sources."uuid-3.4.0"
2904 sources."validator-12.2.0"
2905 sources."vary-1.1.2"
2906 sources."verror-1.10.0"
2907 (sources."ws-3.3.3" // {
2908 dependencies = [
2909 sources."safe-buffer-5.1.2"
2910 ];
2911 })
2912 sources."xmlhttprequest-ssl-1.5.5"
2913 sources."xtend-4.0.2"
2914 sources."yeast-0.1.2"
2915 sources."z-schema-4.2.3"
2916 ];
2917 buildInputs = globalBuildInputs;
2918 meta = {
2919 description = "A free and open source realtime collaborative editor";
2920 homepage = https://etherpad.org/;
2921 license = "Apache-2.0";
2922 };
2923 production = true;
2924 bypassCache = true;
2925 reconstructLock = false;
2926 };
2927in
2928{
2929 args = args;
2930 sources = sources;
2931 tarball = nodeEnv.buildNodeSourceDist args;
2932 package = nodeEnv.buildNodePackage args;
2933 shell = nodeEnv.buildNodeShell args;
2934}
diff --git a/flakes/files-watcher/flake.nix b/flakes/files-watcher/flake.nix
index 29ea428..3be566d 100644
--- a/flakes/files-watcher/flake.nix
+++ b/flakes/files-watcher/flake.nix
@@ -2,6 +2,8 @@
2 description = "Module to watch fo file changes to force restart systemd service"; 2 description = "Module to watch fo file changes to force restart systemd service";
3 outputs = { self }: { 3 outputs = { self }: {
4 nixosModule = { config, lib, pkgs, ... }: let cfg = config.services.filesWatcher; in with lib; { 4 nixosModule = { config, lib, pkgs, ... }: let cfg = config.services.filesWatcher; in with lib; {
5 # Necessary for situations where flake gets included multiple times
6 key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
5 options = { 7 options = {
6 services.filesWatcher = with lib.types; mkOption { 8 services.filesWatcher = with lib.types; mkOption {
7 default = {}; 9 default = {};
diff --git a/flakes/flake.lock b/flakes/flake.lock
new file mode 100644
index 0000000..c65312c
--- /dev/null
+++ b/flakes/flake.lock
@@ -0,0 +1,9669 @@
1{
2 "nodes": {
3 "backports": {
4 "inputs": {
5 "flake-utils": "flake-utils_6",
6 "nixpkgs": "nixpkgs_10"
7 },
8 "locked": {
9 "lastModified": 1,
10 "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
11 "path": "../../backports",
12 "type": "path"
13 },
14 "original": {
15 "path": "../../backports",
16 "type": "path"
17 }
18 },
19 "backports_2": {
20 "inputs": {
21 "flake-utils": "flake-utils_8",
22 "nixpkgs": "nixpkgs_17"
23 },
24 "locked": {
25 "lastModified": 1,
26 "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
27 "path": "../../backports",
28 "type": "path"
29 },
30 "original": {
31 "path": "../../backports",
32 "type": "path"
33 }
34 },
35 "backports_3": {
36 "inputs": {
37 "flake-utils": "flake-utils_20",
38 "nixpkgs": "nixpkgs_33"
39 },
40 "locked": {
41 "lastModified": 1,
42 "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
43 "path": "../../backports",
44 "type": "path"
45 },
46 "original": {
47 "path": "../../backports",
48 "type": "path"
49 }
50 },
51 "backports_4": {
52 "inputs": {
53 "flake-utils": "flake-utils_34",
54 "nixpkgs": "nixpkgs_56"
55 },
56 "locked": {
57 "lastModified": 1,
58 "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
59 "path": "../../backports",
60 "type": "path"
61 },
62 "original": {
63 "path": "../../backports",
64 "type": "path"
65 }
66 },
67 "backports_5": {
68 "inputs": {
69 "flake-utils": "flake-utils_37",
70 "nixpkgs": "nixpkgs_64"
71 },
72 "locked": {
73 "lastModified": 1,
74 "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
75 "path": "../../backports",
76 "type": "path"
77 },
78 "original": {
79 "path": "../../backports",
80 "type": "path"
81 }
82 },
83 "backports_6": {
84 "inputs": {
85 "flake-utils": "flake-utils_39",
86 "nixpkgs": "nixpkgs_71"
87 },
88 "locked": {
89 "lastModified": 1,
90 "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
91 "path": "../../backports",
92 "type": "path"
93 },
94 "original": {
95 "path": "../../backports",
96 "type": "path"
97 }
98 },
99 "backports_7": {
100 "inputs": {
101 "flake-utils": "flake-utils_61",
102 "nixpkgs": "nixpkgs_100"
103 },
104 "locked": {
105 "lastModified": 1,
106 "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
107 "path": "../../backports",
108 "type": "path"
109 },
110 "original": {
111 "path": "../../backports",
112 "type": "path"
113 }
114 },
115 "buildslist": {
116 "flake": false,
117 "locked": {
118 "lastModified": 1585697026,
119 "narHash": "sha256-7CO89q6Bmg59eN5tFGYaqJR/rpJrLu7dpulXgJUv/0E=",
120 "ref": "master",
121 "rev": "fb8641f2badcec9f232cc5f727009911fc1c89b0",
122 "revCount": 4,
123 "type": "git",
124 "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
125 },
126 "original": {
127 "type": "git",
128 "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
129 }
130 },
131 "buildslist_2": {
132 "flake": false,
133 "locked": {
134 "lastModified": 1585697026,
135 "narHash": "sha256-7CO89q6Bmg59eN5tFGYaqJR/rpJrLu7dpulXgJUv/0E=",
136 "ref": "master",
137 "rev": "fb8641f2badcec9f232cc5f727009911fc1c89b0",
138 "revCount": 4,
139 "type": "git",
140 "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
141 },
142 "original": {
143 "type": "git",
144 "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
145 }
146 },
147 "chatons": {
148 "inputs": {
149 "environment": "environment"
150 },
151 "locked": {
152 "lastModified": 1,
153 "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
154 "path": "../../flakes/private/chatons",
155 "type": "path"
156 },
157 "original": {
158 "path": "../../flakes/private/chatons",
159 "type": "path"
160 }
161 },
162 "chatons_2": {
163 "inputs": {
164 "environment": "environment_18"
165 },
166 "locked": {
167 "lastModified": 1,
168 "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
169 "path": "../../flakes/private/chatons",
170 "type": "path"
171 },
172 "original": {
173 "path": "../../flakes/private/chatons",
174 "type": "path"
175 }
176 },
177 "colmena": {
178 "inputs": {
179 "flake-compat": "flake-compat",
180 "flake-utils": "flake-utils_3",
181 "nixpkgs": "nixpkgs_3",
182 "stable": "stable"
183 },
184 "locked": {
185 "lastModified": 1687954574,
186 "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
187 "owner": "immae",
188 "repo": "colmena",
189 "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
190 "type": "github"
191 },
192 "original": {
193 "owner": "immae",
194 "ref": "add-lib-get-flake",
195 "repo": "colmena",
196 "type": "github"
197 }
198 },
199 "colmena_2": {
200 "inputs": {
201 "flake-compat": "flake-compat_2",
202 "flake-utils": "flake-utils_7",
203 "nixpkgs": "nixpkgs_12",
204 "stable": "stable_2"
205 },
206 "locked": {
207 "lastModified": 1687954574,
208 "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
209 "owner": "immae",
210 "repo": "colmena",
211 "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
212 "type": "github"
213 },
214 "original": {
215 "owner": "immae",
216 "ref": "add-lib-get-flake",
217 "repo": "colmena",
218 "type": "github"
219 }
220 },
221 "colmena_3": {
222 "inputs": {
223 "flake-compat": "flake-compat_3",
224 "flake-utils": "flake-utils_10",
225 "nixpkgs": "nixpkgs_19",
226 "stable": "stable_3"
227 },
228 "locked": {
229 "lastModified": 1687954574,
230 "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
231 "owner": "immae",
232 "repo": "colmena",
233 "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
234 "type": "github"
235 },
236 "original": {
237 "owner": "immae",
238 "ref": "add-lib-get-flake",
239 "repo": "colmena",
240 "type": "github"
241 }
242 },
243 "colmena_4": {
244 "inputs": {
245 "flake-compat": "flake-compat_4",
246 "flake-utils": "flake-utils_32",
247 "nixpkgs": "nixpkgs_50",
248 "stable": "stable_4"
249 },
250 "locked": {
251 "lastModified": 1687954574,
252 "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
253 "owner": "immae",
254 "repo": "colmena",
255 "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
256 "type": "github"
257 },
258 "original": {
259 "owner": "immae",
260 "ref": "add-lib-get-flake",
261 "repo": "colmena",
262 "type": "github"
263 }
264 },
265 "colmena_5": {
266 "inputs": {
267 "flake-compat": "flake-compat_5",
268 "flake-utils": "flake-utils_35",
269 "nixpkgs": "nixpkgs_58",
270 "stable": "stable_5"
271 },
272 "locked": {
273 "lastModified": 1687954574,
274 "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
275 "owner": "immae",
276 "repo": "colmena",
277 "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
278 "type": "github"
279 },
280 "original": {
281 "owner": "immae",
282 "ref": "add-lib-get-flake",
283 "repo": "colmena",
284 "type": "github"
285 }
286 },
287 "colmena_6": {
288 "inputs": {
289 "flake-compat": "flake-compat_6",
290 "flake-utils": "flake-utils_38",
291 "nixpkgs": "nixpkgs_66",
292 "stable": "stable_6"
293 },
294 "locked": {
295 "lastModified": 1687954574,
296 "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
297 "owner": "immae",
298 "repo": "colmena",
299 "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
300 "type": "github"
301 },
302 "original": {
303 "owner": "immae",
304 "ref": "add-lib-get-flake",
305 "repo": "colmena",
306 "type": "github"
307 }
308 },
309 "colmena_7": {
310 "inputs": {
311 "flake-compat": "flake-compat_7",
312 "flake-utils": "flake-utils_45",
313 "nixpkgs": "nixpkgs_80",
314 "stable": "stable_7"
315 },
316 "locked": {
317 "lastModified": 1687954574,
318 "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
319 "owner": "immae",
320 "repo": "colmena",
321 "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
322 "type": "github"
323 },
324 "original": {
325 "owner": "immae",
326 "ref": "add-lib-get-flake",
327 "repo": "colmena",
328 "type": "github"
329 }
330 },
331 "copanier": {
332 "flake": false,
333 "locked": {
334 "lastModified": 1633895178,
335 "narHash": "sha256-0xrh12eBSVpgVeniSbKQAuGBhIyVB/rB/H3Tt7EJ1vQ=",
336 "owner": "spiral-project",
337 "repo": "copanier",
338 "rev": "d1b92cc639f4d25ad31baf4a6579a33c44a0d837",
339 "type": "github"
340 },
341 "original": {
342 "owner": "spiral-project",
343 "repo": "copanier",
344 "type": "github"
345 }
346 },
347 "copanier_2": {
348 "flake": false,
349 "locked": {
350 "lastModified": 1633895178,
351 "narHash": "sha256-0xrh12eBSVpgVeniSbKQAuGBhIyVB/rB/H3Tt7EJ1vQ=",
352 "owner": "spiral-project",
353 "repo": "copanier",
354 "rev": "d1b92cc639f4d25ad31baf4a6579a33c44a0d837",
355 "type": "github"
356 },
357 "original": {
358 "owner": "spiral-project",
359 "repo": "copanier",
360 "type": "github"
361 }
362 },
363 "diaspora": {
364 "flake": false,
365 "locked": {
366 "lastModified": 1551139311,
367 "narHash": "sha256-Fyv7Af68YccJL2OGz6l9d71UmnLB+LstlWbOlgFZtgo=",
368 "owner": "diaspora",
369 "repo": "diaspora",
370 "rev": "663da1ef2573863eb870e0edbd50050f261f3d30",
371 "type": "github"
372 },
373 "original": {
374 "owner": "diaspora",
375 "ref": "v0.7.10.0",
376 "repo": "diaspora",
377 "type": "github"
378 }
379 },
380 "diaspora_2": {
381 "flake": false,
382 "locked": {
383 "lastModified": 1551139311,
384 "narHash": "sha256-Fyv7Af68YccJL2OGz6l9d71UmnLB+LstlWbOlgFZtgo=",
385 "owner": "diaspora",
386 "repo": "diaspora",
387 "rev": "663da1ef2573863eb870e0edbd50050f261f3d30",
388 "type": "github"
389 },
390 "original": {
391 "owner": "diaspora",
392 "ref": "v0.7.10.0",
393 "repo": "diaspora",
394 "type": "github"
395 }
396 },
397 "disko": {
398 "inputs": {
399 "nixpkgs": "nixpkgs_4"
400 },
401 "locked": {
402 "lastModified": 1687968164,
403 "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
404 "owner": "nix-community",
405 "repo": "disko",
406 "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
407 "type": "github"
408 },
409 "original": {
410 "owner": "nix-community",
411 "repo": "disko",
412 "type": "github"
413 }
414 },
415 "disko_2": {
416 "inputs": {
417 "nixpkgs": "nixpkgs_13"
418 },
419 "locked": {
420 "lastModified": 1687968164,
421 "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
422 "owner": "nix-community",
423 "repo": "disko",
424 "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
425 "type": "github"
426 },
427 "original": {
428 "owner": "nix-community",
429 "repo": "disko",
430 "type": "github"
431 }
432 },
433 "disko_3": {
434 "inputs": {
435 "nixpkgs": "nixpkgs_20"
436 },
437 "locked": {
438 "lastModified": 1687968164,
439 "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
440 "owner": "nix-community",
441 "repo": "disko",
442 "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
443 "type": "github"
444 },
445 "original": {
446 "owner": "nix-community",
447 "repo": "disko",
448 "type": "github"
449 }
450 },
451 "disko_4": {
452 "inputs": {
453 "nixpkgs": "nixpkgs_51"
454 },
455 "locked": {
456 "lastModified": 1687968164,
457 "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
458 "owner": "nix-community",
459 "repo": "disko",
460 "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
461 "type": "github"
462 },
463 "original": {
464 "owner": "nix-community",
465 "repo": "disko",
466 "type": "github"
467 }
468 },
469 "disko_5": {
470 "inputs": {
471 "nixpkgs": "nixpkgs_59"
472 },
473 "locked": {
474 "lastModified": 1687968164,
475 "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
476 "owner": "nix-community",
477 "repo": "disko",
478 "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
479 "type": "github"
480 },
481 "original": {
482 "owner": "nix-community",
483 "repo": "disko",
484 "type": "github"
485 }
486 },
487 "disko_6": {
488 "inputs": {
489 "nixpkgs": "nixpkgs_67"
490 },
491 "locked": {
492 "lastModified": 1687968164,
493 "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
494 "owner": "nix-community",
495 "repo": "disko",
496 "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
497 "type": "github"
498 },
499 "original": {
500 "owner": "nix-community",
501 "repo": "disko",
502 "type": "github"
503 }
504 },
505 "disko_7": {
506 "inputs": {
507 "nixpkgs": "nixpkgs_81"
508 },
509 "locked": {
510 "lastModified": 1687968164,
511 "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
512 "owner": "nix-community",
513 "repo": "disko",
514 "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
515 "type": "github"
516 },
517 "original": {
518 "owner": "nix-community",
519 "repo": "disko",
520 "type": "github"
521 }
522 },
523 "dns-nix": {
524 "inputs": {
525 "flake-utils": "flake-utils_9",
526 "nixpkgs": [
527 "n-eldiron",
528 "nixpkgs"
529 ]
530 },
531 "locked": {
532 "lastModified": 1635273082,
533 "narHash": "sha256-EHiDP2jEa7Ai5ZwIf5uld9RVFcV77+2SUxjQXwJsJa0=",
534 "owner": "kirelagin",
535 "repo": "dns.nix",
536 "rev": "c7b9645da9c0ddce4f9de4ef27ec01bb8108039a",
537 "type": "github"
538 },
539 "original": {
540 "owner": "kirelagin",
541 "repo": "dns.nix",
542 "type": "github"
543 }
544 },
545 "environment": {
546 "locked": {
547 "lastModified": 1,
548 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
549 "path": "../environment",
550 "type": "path"
551 },
552 "original": {
553 "path": "../environment",
554 "type": "path"
555 }
556 },
557 "environment_10": {
558 "locked": {
559 "lastModified": 1,
560 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
561 "path": "../environment",
562 "type": "path"
563 },
564 "original": {
565 "path": "../environment",
566 "type": "path"
567 }
568 },
569 "environment_11": {
570 "locked": {
571 "lastModified": 1,
572 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
573 "path": "../environment",
574 "type": "path"
575 },
576 "original": {
577 "path": "../environment",
578 "type": "path"
579 }
580 },
581 "environment_12": {
582 "locked": {
583 "lastModified": 1,
584 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
585 "path": "../environment",
586 "type": "path"
587 },
588 "original": {
589 "path": "../environment",
590 "type": "path"
591 }
592 },
593 "environment_13": {
594 "locked": {
595 "lastModified": 1,
596 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
597 "path": "../environment",
598 "type": "path"
599 },
600 "original": {
601 "path": "../environment",
602 "type": "path"
603 }
604 },
605 "environment_14": {
606 "locked": {
607 "lastModified": 1,
608 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
609 "path": "../environment",
610 "type": "path"
611 },
612 "original": {
613 "path": "../environment",
614 "type": "path"
615 }
616 },
617 "environment_15": {
618 "locked": {
619 "lastModified": 1,
620 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
621 "path": "../environment",
622 "type": "path"
623 },
624 "original": {
625 "path": "../environment",
626 "type": "path"
627 }
628 },
629 "environment_16": {
630 "locked": {
631 "lastModified": 1,
632 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
633 "path": "../environment",
634 "type": "path"
635 },
636 "original": {
637 "path": "../environment",
638 "type": "path"
639 }
640 },
641 "environment_17": {
642 "locked": {
643 "lastModified": 1,
644 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
645 "path": "../environment",
646 "type": "path"
647 },
648 "original": {
649 "path": "../environment",
650 "type": "path"
651 }
652 },
653 "environment_18": {
654 "locked": {
655 "lastModified": 1,
656 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
657 "path": "../environment",
658 "type": "path"
659 },
660 "original": {
661 "path": "../environment",
662 "type": "path"
663 }
664 },
665 "environment_19": {
666 "locked": {
667 "lastModified": 1,
668 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
669 "path": "../../flakes/private/environment",
670 "type": "path"
671 },
672 "original": {
673 "path": "../../flakes/private/environment",
674 "type": "path"
675 }
676 },
677 "environment_2": {
678 "locked": {
679 "lastModified": 1,
680 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
681 "path": "../../flakes/private/environment",
682 "type": "path"
683 },
684 "original": {
685 "path": "../../flakes/private/environment",
686 "type": "path"
687 }
688 },
689 "environment_20": {
690 "locked": {
691 "lastModified": 1,
692 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
693 "path": "../environment",
694 "type": "path"
695 },
696 "original": {
697 "path": "../environment",
698 "type": "path"
699 }
700 },
701 "environment_21": {
702 "locked": {
703 "lastModified": 1,
704 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
705 "path": "../environment",
706 "type": "path"
707 },
708 "original": {
709 "path": "../environment",
710 "type": "path"
711 }
712 },
713 "environment_22": {
714 "locked": {
715 "lastModified": 1,
716 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
717 "path": "../environment",
718 "type": "path"
719 },
720 "original": {
721 "path": "../environment",
722 "type": "path"
723 }
724 },
725 "environment_23": {
726 "locked": {
727 "lastModified": 1,
728 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
729 "path": "../../flakes/private/environment",
730 "type": "path"
731 },
732 "original": {
733 "path": "../../flakes/private/environment",
734 "type": "path"
735 }
736 },
737 "environment_24": {
738 "locked": {
739 "lastModified": 1,
740 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
741 "path": "../environment",
742 "type": "path"
743 },
744 "original": {
745 "path": "../environment",
746 "type": "path"
747 }
748 },
749 "environment_25": {
750 "locked": {
751 "lastModified": 1,
752 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
753 "path": "../environment",
754 "type": "path"
755 },
756 "original": {
757 "path": "../environment",
758 "type": "path"
759 }
760 },
761 "environment_26": {
762 "locked": {
763 "lastModified": 1,
764 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
765 "path": "../environment",
766 "type": "path"
767 },
768 "original": {
769 "path": "../environment",
770 "type": "path"
771 }
772 },
773 "environment_27": {
774 "locked": {
775 "lastModified": 1,
776 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
777 "path": "../environment",
778 "type": "path"
779 },
780 "original": {
781 "path": "../environment",
782 "type": "path"
783 }
784 },
785 "environment_28": {
786 "locked": {
787 "lastModified": 1,
788 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
789 "path": "../environment",
790 "type": "path"
791 },
792 "original": {
793 "path": "../environment",
794 "type": "path"
795 }
796 },
797 "environment_29": {
798 "locked": {
799 "lastModified": 1,
800 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
801 "path": "../environment",
802 "type": "path"
803 },
804 "original": {
805 "path": "../environment",
806 "type": "path"
807 }
808 },
809 "environment_3": {
810 "locked": {
811 "lastModified": 1,
812 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
813 "path": "../environment",
814 "type": "path"
815 },
816 "original": {
817 "path": "../environment",
818 "type": "path"
819 }
820 },
821 "environment_30": {
822 "locked": {
823 "lastModified": 1,
824 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
825 "path": "../environment",
826 "type": "path"
827 },
828 "original": {
829 "path": "../environment",
830 "type": "path"
831 }
832 },
833 "environment_31": {
834 "locked": {
835 "lastModified": 1,
836 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
837 "path": "../environment",
838 "type": "path"
839 },
840 "original": {
841 "path": "../environment",
842 "type": "path"
843 }
844 },
845 "environment_32": {
846 "locked": {
847 "lastModified": 1,
848 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
849 "path": "../environment",
850 "type": "path"
851 },
852 "original": {
853 "path": "../environment",
854 "type": "path"
855 }
856 },
857 "environment_33": {
858 "locked": {
859 "lastModified": 1,
860 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
861 "path": "../environment",
862 "type": "path"
863 },
864 "original": {
865 "path": "../environment",
866 "type": "path"
867 }
868 },
869 "environment_4": {
870 "locked": {
871 "lastModified": 1,
872 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
873 "path": "../environment",
874 "type": "path"
875 },
876 "original": {
877 "path": "../environment",
878 "type": "path"
879 }
880 },
881 "environment_5": {
882 "locked": {
883 "lastModified": 1,
884 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
885 "path": "../environment",
886 "type": "path"
887 },
888 "original": {
889 "path": "../environment",
890 "type": "path"
891 }
892 },
893 "environment_6": {
894 "locked": {
895 "lastModified": 1,
896 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
897 "path": "../environment",
898 "type": "path"
899 },
900 "original": {
901 "path": "../environment",
902 "type": "path"
903 }
904 },
905 "environment_7": {
906 "locked": {
907 "lastModified": 1,
908 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
909 "path": "../environment",
910 "type": "path"
911 },
912 "original": {
913 "path": "../environment",
914 "type": "path"
915 }
916 },
917 "environment_8": {
918 "locked": {
919 "lastModified": 1,
920 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
921 "path": "../../flakes/private/environment",
922 "type": "path"
923 },
924 "original": {
925 "path": "../../flakes/private/environment",
926 "type": "path"
927 }
928 },
929 "environment_9": {
930 "locked": {
931 "lastModified": 1,
932 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
933 "path": "../environment",
934 "type": "path"
935 },
936 "original": {
937 "path": "../environment",
938 "type": "path"
939 }
940 },
941 "etherpad-lite": {
942 "flake": false,
943 "locked": {
944 "lastModified": 1587951095,
945 "narHash": "sha256-PjAkvkC7tJzRECUqOvuWfoZTz8QqDXk6oXEN3ig24rQ=",
946 "owner": "ether",
947 "repo": "etherpad-lite",
948 "rev": "62101147a0c3495dc80daa87ab53a3366321a205",
949 "type": "github"
950 },
951 "original": {
952 "owner": "ether",
953 "ref": "1.8.3",
954 "repo": "etherpad-lite",
955 "type": "github"
956 }
957 },
958 "etherpad-lite_2": {
959 "flake": false,
960 "locked": {
961 "lastModified": 1587951095,
962 "narHash": "sha256-PjAkvkC7tJzRECUqOvuWfoZTz8QqDXk6oXEN3ig24rQ=",
963 "owner": "ether",
964 "repo": "etherpad-lite",
965 "rev": "62101147a0c3495dc80daa87ab53a3366321a205",
966 "type": "github"
967 },
968 "original": {
969 "owner": "ether",
970 "ref": "1.8.3",
971 "repo": "etherpad-lite",
972 "type": "github"
973 }
974 },
975 "files-watcher": {
976 "locked": {
977 "lastModified": 1,
978 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
979 "path": "../../files-watcher",
980 "type": "path"
981 },
982 "original": {
983 "path": "../../files-watcher",
984 "type": "path"
985 }
986 },
987 "files-watcher_10": {
988 "locked": {
989 "lastModified": 1,
990 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
991 "path": "../../flakes/files-watcher",
992 "type": "path"
993 },
994 "original": {
995 "path": "../../flakes/files-watcher",
996 "type": "path"
997 }
998 },
999 "files-watcher_11": {
1000 "locked": {
1001 "lastModified": 1,
1002 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
1003 "path": "../files-watcher",
1004 "type": "path"
1005 },
1006 "original": {
1007 "path": "../files-watcher",
1008 "type": "path"
1009 }
1010 },
1011 "files-watcher_12": {
1012 "locked": {
1013 "lastModified": 1,
1014 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
1015 "path": "../files-watcher",
1016 "type": "path"
1017 },
1018 "original": {
1019 "path": "../files-watcher",
1020 "type": "path"
1021 }
1022 },
1023 "files-watcher_13": {
1024 "locked": {
1025 "lastModified": 1,
1026 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
1027 "path": "../../files-watcher",
1028 "type": "path"
1029 },
1030 "original": {
1031 "path": "../../files-watcher",
1032 "type": "path"
1033 }
1034 },
1035 "files-watcher_14": {
1036 "locked": {
1037 "lastModified": 1,
1038 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
1039 "path": "../../files-watcher",
1040 "type": "path"
1041 },
1042 "original": {
1043 "path": "../../files-watcher",
1044 "type": "path"
1045 }
1046 },
1047 "files-watcher_15": {
1048 "locked": {
1049 "lastModified": 1,
1050 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
1051 "path": "../../files-watcher",
1052 "type": "path"
1053 },
1054 "original": {
1055 "path": "../../files-watcher",
1056 "type": "path"
1057 }
1058 },
1059 "files-watcher_2": {
1060 "locked": {
1061 "lastModified": 1,
1062 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
1063 "path": "../../files-watcher",
1064 "type": "path"
1065 },
1066 "original": {
1067 "path": "../../files-watcher",
1068 "type": "path"
1069 }
1070 },
1071 "files-watcher_3": {
1072 "locked": {
1073 "lastModified": 1,
1074 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
1075 "path": "../../files-watcher",
1076 "type": "path"
1077 },
1078 "original": {
1079 "path": "../../files-watcher",
1080 "type": "path"
1081 }
1082 },
1083 "files-watcher_4": {
1084 "locked": {
1085 "lastModified": 1,
1086 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
1087 "path": "../../flakes/files-watcher",
1088 "type": "path"
1089 },
1090 "original": {
1091 "path": "../../flakes/files-watcher",
1092 "type": "path"
1093 }
1094 },
1095 "files-watcher_5": {
1096 "locked": {
1097 "lastModified": 1,
1098 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
1099 "path": "../../files-watcher",
1100 "type": "path"
1101 },
1102 "original": {
1103 "path": "../../files-watcher",
1104 "type": "path"
1105 }
1106 },
1107 "files-watcher_6": {
1108 "locked": {
1109 "lastModified": 1,
1110 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
1111 "path": "../../files-watcher",
1112 "type": "path"
1113 },
1114 "original": {
1115 "path": "../../files-watcher",
1116 "type": "path"
1117 }
1118 },
1119 "files-watcher_7": {
1120 "locked": {
1121 "lastModified": 1,
1122 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
1123 "path": "../../files-watcher",
1124 "type": "path"
1125 },
1126 "original": {
1127 "path": "../../files-watcher",
1128 "type": "path"
1129 }
1130 },
1131 "files-watcher_8": {
1132 "locked": {
1133 "lastModified": 1,
1134 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
1135 "path": "../files-watcher",
1136 "type": "path"
1137 },
1138 "original": {
1139 "path": "../files-watcher",
1140 "type": "path"
1141 }
1142 },
1143 "files-watcher_9": {
1144 "locked": {
1145 "lastModified": 1,
1146 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
1147 "path": "../../flakes/files-watcher",
1148 "type": "path"
1149 },
1150 "original": {
1151 "path": "../../flakes/files-watcher",
1152 "type": "path"
1153 }
1154 },
1155 "flake-compat": {
1156 "flake": false,
1157 "locked": {
1158 "lastModified": 1650374568,
1159 "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
1160 "owner": "edolstra",
1161 "repo": "flake-compat",
1162 "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
1163 "type": "github"
1164 },
1165 "original": {
1166 "owner": "edolstra",
1167 "repo": "flake-compat",
1168 "type": "github"
1169 }
1170 },
1171 "flake-compat_2": {
1172 "flake": false,
1173 "locked": {
1174 "lastModified": 1650374568,
1175 "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
1176 "owner": "edolstra",
1177 "repo": "flake-compat",
1178 "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
1179 "type": "github"
1180 },
1181 "original": {
1182 "owner": "edolstra",
1183 "repo": "flake-compat",
1184 "type": "github"
1185 }
1186 },
1187 "flake-compat_3": {
1188 "flake": false,
1189 "locked": {
1190 "lastModified": 1650374568,
1191 "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
1192 "owner": "edolstra",
1193 "repo": "flake-compat",
1194 "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
1195 "type": "github"
1196 },
1197 "original": {
1198 "owner": "edolstra",
1199 "repo": "flake-compat",
1200 "type": "github"
1201 }
1202 },
1203 "flake-compat_4": {
1204 "flake": false,
1205 "locked": {
1206 "lastModified": 1650374568,
1207 "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
1208 "owner": "edolstra",
1209 "repo": "flake-compat",
1210 "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
1211 "type": "github"
1212 },
1213 "original": {
1214 "owner": "edolstra",
1215 "repo": "flake-compat",
1216 "type": "github"
1217 }
1218 },
1219 "flake-compat_5": {
1220 "flake": false,
1221 "locked": {
1222 "lastModified": 1650374568,
1223 "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
1224 "owner": "edolstra",
1225 "repo": "flake-compat",
1226 "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
1227 "type": "github"
1228 },
1229 "original": {
1230 "owner": "edolstra",
1231 "repo": "flake-compat",
1232 "type": "github"
1233 }
1234 },
1235 "flake-compat_6": {
1236 "flake": false,
1237 "locked": {
1238 "lastModified": 1650374568,
1239 "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
1240 "owner": "edolstra",
1241 "repo": "flake-compat",
1242 "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
1243 "type": "github"
1244 },
1245 "original": {
1246 "owner": "edolstra",
1247 "repo": "flake-compat",
1248 "type": "github"
1249 }
1250 },
1251 "flake-compat_7": {
1252 "flake": false,
1253 "locked": {
1254 "lastModified": 1650374568,
1255 "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
1256 "owner": "edolstra",
1257 "repo": "flake-compat",
1258 "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
1259 "type": "github"
1260 },
1261 "original": {
1262 "owner": "edolstra",
1263 "repo": "flake-compat",
1264 "type": "github"
1265 }
1266 },
1267 "flake-parts": {
1268 "inputs": {
1269 "nixpkgs-lib": "nixpkgs-lib_2"
1270 },
1271 "locked": {
1272 "lastModified": 1687762428,
1273 "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
1274 "owner": "hercules-ci",
1275 "repo": "flake-parts",
1276 "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
1277 "type": "github"
1278 },
1279 "original": {
1280 "owner": "hercules-ci",
1281 "repo": "flake-parts",
1282 "type": "github"
1283 }
1284 },
1285 "flake-parts_10": {
1286 "inputs": {
1287 "nixpkgs-lib": "nixpkgs-lib_13"
1288 },
1289 "locked": {
1290 "lastModified": 1675295133,
1291 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1292 "owner": "hercules-ci",
1293 "repo": "flake-parts",
1294 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1295 "type": "github"
1296 },
1297 "original": {
1298 "owner": "hercules-ci",
1299 "repo": "flake-parts",
1300 "type": "github"
1301 }
1302 },
1303 "flake-parts_11": {
1304 "inputs": {
1305 "nixpkgs-lib": "nixpkgs-lib_15"
1306 },
1307 "locked": {
1308 "lastModified": 1687762428,
1309 "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
1310 "owner": "hercules-ci",
1311 "repo": "flake-parts",
1312 "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
1313 "type": "github"
1314 },
1315 "original": {
1316 "owner": "hercules-ci",
1317 "repo": "flake-parts",
1318 "type": "github"
1319 }
1320 },
1321 "flake-parts_12": {
1322 "inputs": {
1323 "nixpkgs-lib": "nixpkgs-lib_16"
1324 },
1325 "locked": {
1326 "lastModified": 1675295133,
1327 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1328 "owner": "hercules-ci",
1329 "repo": "flake-parts",
1330 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1331 "type": "github"
1332 },
1333 "original": {
1334 "owner": "hercules-ci",
1335 "repo": "flake-parts",
1336 "type": "github"
1337 }
1338 },
1339 "flake-parts_13": {
1340 "inputs": {
1341 "nixpkgs-lib": "nixpkgs-lib_18"
1342 },
1343 "locked": {
1344 "lastModified": 1687762428,
1345 "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
1346 "owner": "hercules-ci",
1347 "repo": "flake-parts",
1348 "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
1349 "type": "github"
1350 },
1351 "original": {
1352 "owner": "hercules-ci",
1353 "repo": "flake-parts",
1354 "type": "github"
1355 }
1356 },
1357 "flake-parts_14": {
1358 "inputs": {
1359 "nixpkgs-lib": "nixpkgs-lib_19"
1360 },
1361 "locked": {
1362 "lastModified": 1675295133,
1363 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1364 "owner": "hercules-ci",
1365 "repo": "flake-parts",
1366 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1367 "type": "github"
1368 },
1369 "original": {
1370 "owner": "hercules-ci",
1371 "repo": "flake-parts",
1372 "type": "github"
1373 }
1374 },
1375 "flake-parts_15": {
1376 "inputs": {
1377 "nixpkgs-lib": "nixpkgs-lib_20"
1378 },
1379 "locked": {
1380 "lastModified": 1687762428,
1381 "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
1382 "owner": "hercules-ci",
1383 "repo": "flake-parts",
1384 "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
1385 "type": "github"
1386 },
1387 "original": {
1388 "owner": "hercules-ci",
1389 "repo": "flake-parts",
1390 "type": "github"
1391 }
1392 },
1393 "flake-parts_16": {
1394 "inputs": {
1395 "nixpkgs-lib": "nixpkgs-lib_21"
1396 },
1397 "locked": {
1398 "lastModified": 1675295133,
1399 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1400 "owner": "hercules-ci",
1401 "repo": "flake-parts",
1402 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1403 "type": "github"
1404 },
1405 "original": {
1406 "owner": "hercules-ci",
1407 "repo": "flake-parts",
1408 "type": "github"
1409 }
1410 },
1411 "flake-parts_17": {
1412 "inputs": {
1413 "nixpkgs-lib": "nixpkgs-lib_22"
1414 },
1415 "locked": {
1416 "lastModified": 1675295133,
1417 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1418 "owner": "hercules-ci",
1419 "repo": "flake-parts",
1420 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1421 "type": "github"
1422 },
1423 "original": {
1424 "owner": "hercules-ci",
1425 "repo": "flake-parts",
1426 "type": "github"
1427 }
1428 },
1429 "flake-parts_18": {
1430 "inputs": {
1431 "nixpkgs-lib": "nixpkgs-lib_23"
1432 },
1433 "locked": {
1434 "lastModified": 1675295133,
1435 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1436 "owner": "hercules-ci",
1437 "repo": "flake-parts",
1438 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1439 "type": "github"
1440 },
1441 "original": {
1442 "owner": "hercules-ci",
1443 "repo": "flake-parts",
1444 "type": "github"
1445 }
1446 },
1447 "flake-parts_19": {
1448 "inputs": {
1449 "nixpkgs-lib": "nixpkgs-lib_24"
1450 },
1451 "locked": {
1452 "lastModified": 1687762428,
1453 "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
1454 "owner": "hercules-ci",
1455 "repo": "flake-parts",
1456 "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
1457 "type": "github"
1458 },
1459 "original": {
1460 "owner": "hercules-ci",
1461 "repo": "flake-parts",
1462 "type": "github"
1463 }
1464 },
1465 "flake-parts_2": {
1466 "inputs": {
1467 "nixpkgs-lib": "nixpkgs-lib_3"
1468 },
1469 "locked": {
1470 "lastModified": 1675295133,
1471 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1472 "owner": "hercules-ci",
1473 "repo": "flake-parts",
1474 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1475 "type": "github"
1476 },
1477 "original": {
1478 "owner": "hercules-ci",
1479 "repo": "flake-parts",
1480 "type": "github"
1481 }
1482 },
1483 "flake-parts_20": {
1484 "inputs": {
1485 "nixpkgs-lib": "nixpkgs-lib_25"
1486 },
1487 "locked": {
1488 "lastModified": 1675295133,
1489 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1490 "owner": "hercules-ci",
1491 "repo": "flake-parts",
1492 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1493 "type": "github"
1494 },
1495 "original": {
1496 "owner": "hercules-ci",
1497 "repo": "flake-parts",
1498 "type": "github"
1499 }
1500 },
1501 "flake-parts_21": {
1502 "inputs": {
1503 "nixpkgs-lib": "nixpkgs-lib_27"
1504 },
1505 "locked": {
1506 "lastModified": 1675295133,
1507 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1508 "owner": "hercules-ci",
1509 "repo": "flake-parts",
1510 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1511 "type": "github"
1512 },
1513 "original": {
1514 "owner": "hercules-ci",
1515 "repo": "flake-parts",
1516 "type": "github"
1517 }
1518 },
1519 "flake-parts_22": {
1520 "inputs": {
1521 "nixpkgs-lib": "nixpkgs-lib_28"
1522 },
1523 "locked": {
1524 "lastModified": 1675295133,
1525 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1526 "owner": "hercules-ci",
1527 "repo": "flake-parts",
1528 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1529 "type": "github"
1530 },
1531 "original": {
1532 "owner": "hercules-ci",
1533 "repo": "flake-parts",
1534 "type": "github"
1535 }
1536 },
1537 "flake-parts_3": {
1538 "inputs": {
1539 "nixpkgs-lib": "nixpkgs-lib_5"
1540 },
1541 "locked": {
1542 "lastModified": 1687762428,
1543 "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
1544 "owner": "hercules-ci",
1545 "repo": "flake-parts",
1546 "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
1547 "type": "github"
1548 },
1549 "original": {
1550 "owner": "hercules-ci",
1551 "repo": "flake-parts",
1552 "type": "github"
1553 }
1554 },
1555 "flake-parts_4": {
1556 "inputs": {
1557 "nixpkgs-lib": "nixpkgs-lib_6"
1558 },
1559 "locked": {
1560 "lastModified": 1675295133,
1561 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1562 "owner": "hercules-ci",
1563 "repo": "flake-parts",
1564 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1565 "type": "github"
1566 },
1567 "original": {
1568 "owner": "hercules-ci",
1569 "repo": "flake-parts",
1570 "type": "github"
1571 }
1572 },
1573 "flake-parts_5": {
1574 "inputs": {
1575 "nixpkgs-lib": "nixpkgs-lib_7"
1576 },
1577 "locked": {
1578 "lastModified": 1687762428,
1579 "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
1580 "owner": "hercules-ci",
1581 "repo": "flake-parts",
1582 "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
1583 "type": "github"
1584 },
1585 "original": {
1586 "owner": "hercules-ci",
1587 "repo": "flake-parts",
1588 "type": "github"
1589 }
1590 },
1591 "flake-parts_6": {
1592 "inputs": {
1593 "nixpkgs-lib": "nixpkgs-lib_9"
1594 },
1595 "locked": {
1596 "lastModified": 1675295133,
1597 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1598 "owner": "hercules-ci",
1599 "repo": "flake-parts",
1600 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1601 "type": "github"
1602 },
1603 "original": {
1604 "owner": "hercules-ci",
1605 "repo": "flake-parts",
1606 "type": "github"
1607 }
1608 },
1609 "flake-parts_7": {
1610 "inputs": {
1611 "nixpkgs-lib": "nixpkgs-lib_10"
1612 },
1613 "locked": {
1614 "lastModified": 1675295133,
1615 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1616 "owner": "hercules-ci",
1617 "repo": "flake-parts",
1618 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1619 "type": "github"
1620 },
1621 "original": {
1622 "owner": "hercules-ci",
1623 "repo": "flake-parts",
1624 "type": "github"
1625 }
1626 },
1627 "flake-parts_8": {
1628 "inputs": {
1629 "nixpkgs-lib": "nixpkgs-lib_11"
1630 },
1631 "locked": {
1632 "lastModified": 1675295133,
1633 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1634 "owner": "hercules-ci",
1635 "repo": "flake-parts",
1636 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1637 "type": "github"
1638 },
1639 "original": {
1640 "owner": "hercules-ci",
1641 "repo": "flake-parts",
1642 "type": "github"
1643 }
1644 },
1645 "flake-parts_9": {
1646 "inputs": {
1647 "nixpkgs-lib": "nixpkgs-lib_12"
1648 },
1649 "locked": {
1650 "lastModified": 1675295133,
1651 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
1652 "owner": "hercules-ci",
1653 "repo": "flake-parts",
1654 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
1655 "type": "github"
1656 },
1657 "original": {
1658 "owner": "hercules-ci",
1659 "repo": "flake-parts",
1660 "type": "github"
1661 }
1662 },
1663 "flake-utils": {
1664 "locked": {
1665 "lastModified": 1609246779,
1666 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
1667 "owner": "numtide",
1668 "repo": "flake-utils",
1669 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
1670 "type": "github"
1671 },
1672 "original": {
1673 "owner": "numtide",
1674 "repo": "flake-utils",
1675 "type": "github"
1676 }
1677 },
1678 "flake-utils_10": {
1679 "locked": {
1680 "lastModified": 1659877975,
1681 "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
1682 "owner": "numtide",
1683 "repo": "flake-utils",
1684 "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
1685 "type": "github"
1686 },
1687 "original": {
1688 "owner": "numtide",
1689 "repo": "flake-utils",
1690 "type": "github"
1691 }
1692 },
1693 "flake-utils_11": {
1694 "locked": {
1695 "lastModified": 1648297722,
1696 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
1697 "owner": "numtide",
1698 "repo": "flake-utils",
1699 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
1700 "type": "github"
1701 },
1702 "original": {
1703 "owner": "numtide",
1704 "repo": "flake-utils",
1705 "type": "github"
1706 }
1707 },
1708 "flake-utils_12": {
1709 "locked": {
1710 "lastModified": 1609246779,
1711 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
1712 "owner": "numtide",
1713 "repo": "flake-utils",
1714 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
1715 "type": "github"
1716 },
1717 "original": {
1718 "owner": "numtide",
1719 "repo": "flake-utils",
1720 "type": "github"
1721 }
1722 },
1723 "flake-utils_13": {
1724 "locked": {
1725 "lastModified": 1609246779,
1726 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
1727 "owner": "numtide",
1728 "repo": "flake-utils",
1729 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
1730 "type": "github"
1731 },
1732 "original": {
1733 "owner": "numtide",
1734 "repo": "flake-utils",
1735 "type": "github"
1736 }
1737 },
1738 "flake-utils_14": {
1739 "locked": {
1740 "lastModified": 1609246779,
1741 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
1742 "owner": "numtide",
1743 "repo": "flake-utils",
1744 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
1745 "type": "github"
1746 },
1747 "original": {
1748 "owner": "numtide",
1749 "repo": "flake-utils",
1750 "type": "github"
1751 }
1752 },
1753 "flake-utils_15": {
1754 "locked": {
1755 "lastModified": 1609246779,
1756 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
1757 "owner": "numtide",
1758 "repo": "flake-utils",
1759 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
1760 "type": "github"
1761 },
1762 "original": {
1763 "owner": "numtide",
1764 "repo": "flake-utils",
1765 "type": "github"
1766 }
1767 },
1768 "flake-utils_16": {
1769 "locked": {
1770 "lastModified": 1631561581,
1771 "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
1772 "owner": "numtide",
1773 "repo": "flake-utils",
1774 "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
1775 "type": "github"
1776 },
1777 "original": {
1778 "owner": "numtide",
1779 "repo": "flake-utils",
1780 "type": "github"
1781 }
1782 },
1783 "flake-utils_17": {
1784 "locked": {
1785 "lastModified": 1610051610,
1786 "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
1787 "owner": "numtide",
1788 "repo": "flake-utils",
1789 "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
1790 "type": "github"
1791 },
1792 "original": {
1793 "owner": "numtide",
1794 "repo": "flake-utils",
1795 "type": "github"
1796 }
1797 },
1798 "flake-utils_18": {
1799 "locked": {
1800 "lastModified": 1610051610,
1801 "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
1802 "owner": "numtide",
1803 "repo": "flake-utils",
1804 "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
1805 "type": "github"
1806 },
1807 "original": {
1808 "owner": "numtide",
1809 "repo": "flake-utils",
1810 "type": "github"
1811 }
1812 },
1813 "flake-utils_19": {
1814 "locked": {
1815 "lastModified": 1648297722,
1816 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
1817 "owner": "numtide",
1818 "repo": "flake-utils",
1819 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
1820 "type": "github"
1821 },
1822 "original": {
1823 "owner": "numtide",
1824 "repo": "flake-utils",
1825 "type": "github"
1826 }
1827 },
1828 "flake-utils_2": {
1829 "locked": {
1830 "lastModified": 1609246779,
1831 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
1832 "owner": "numtide",
1833 "repo": "flake-utils",
1834 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
1835 "type": "github"
1836 },
1837 "original": {
1838 "owner": "numtide",
1839 "repo": "flake-utils",
1840 "type": "github"
1841 }
1842 },
1843 "flake-utils_20": {
1844 "locked": {
1845 "lastModified": 1667395993,
1846 "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
1847 "owner": "numtide",
1848 "repo": "flake-utils",
1849 "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
1850 "type": "github"
1851 },
1852 "original": {
1853 "owner": "numtide",
1854 "repo": "flake-utils",
1855 "type": "github"
1856 }
1857 },
1858 "flake-utils_21": {
1859 "locked": {
1860 "lastModified": 1631561581,
1861 "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
1862 "owner": "numtide",
1863 "repo": "flake-utils",
1864 "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
1865 "type": "github"
1866 },
1867 "original": {
1868 "owner": "numtide",
1869 "repo": "flake-utils",
1870 "type": "github"
1871 }
1872 },
1873 "flake-utils_22": {
1874 "locked": {
1875 "lastModified": 1648297722,
1876 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
1877 "owner": "numtide",
1878 "repo": "flake-utils",
1879 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
1880 "type": "github"
1881 },
1882 "original": {
1883 "owner": "numtide",
1884 "repo": "flake-utils",
1885 "type": "github"
1886 }
1887 },
1888 "flake-utils_23": {
1889 "locked": {
1890 "lastModified": 1648297722,
1891 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
1892 "owner": "numtide",
1893 "repo": "flake-utils",
1894 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
1895 "type": "github"
1896 },
1897 "original": {
1898 "owner": "numtide",
1899 "repo": "flake-utils",
1900 "type": "github"
1901 }
1902 },
1903 "flake-utils_24": {
1904 "locked": {
1905 "lastModified": 1648297722,
1906 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
1907 "owner": "numtide",
1908 "repo": "flake-utils",
1909 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
1910 "type": "github"
1911 },
1912 "original": {
1913 "owner": "numtide",
1914 "repo": "flake-utils",
1915 "type": "github"
1916 }
1917 },
1918 "flake-utils_25": {
1919 "locked": {
1920 "lastModified": 1648297722,
1921 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
1922 "owner": "numtide",
1923 "repo": "flake-utils",
1924 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
1925 "type": "github"
1926 },
1927 "original": {
1928 "owner": "numtide",
1929 "repo": "flake-utils",
1930 "type": "github"
1931 }
1932 },
1933 "flake-utils_26": {
1934 "locked": {
1935 "lastModified": 1649676176,
1936 "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
1937 "owner": "numtide",
1938 "repo": "flake-utils",
1939 "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678",
1940 "type": "github"
1941 },
1942 "original": {
1943 "owner": "numtide",
1944 "repo": "flake-utils",
1945 "type": "github"
1946 }
1947 },
1948 "flake-utils_27": {
1949 "locked": {
1950 "lastModified": 1609246779,
1951 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
1952 "owner": "numtide",
1953 "repo": "flake-utils",
1954 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
1955 "type": "github"
1956 },
1957 "original": {
1958 "owner": "numtide",
1959 "repo": "flake-utils",
1960 "type": "github"
1961 }
1962 },
1963 "flake-utils_28": {
1964 "locked": {
1965 "lastModified": 1609246779,
1966 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
1967 "owner": "numtide",
1968 "repo": "flake-utils",
1969 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
1970 "type": "github"
1971 },
1972 "original": {
1973 "owner": "numtide",
1974 "repo": "flake-utils",
1975 "type": "github"
1976 }
1977 },
1978 "flake-utils_29": {
1979 "locked": {
1980 "lastModified": 1610051610,
1981 "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
1982 "owner": "numtide",
1983 "repo": "flake-utils",
1984 "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
1985 "type": "github"
1986 },
1987 "original": {
1988 "owner": "numtide",
1989 "repo": "flake-utils",
1990 "type": "github"
1991 }
1992 },
1993 "flake-utils_3": {
1994 "locked": {
1995 "lastModified": 1659877975,
1996 "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
1997 "owner": "numtide",
1998 "repo": "flake-utils",
1999 "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
2000 "type": "github"
2001 },
2002 "original": {
2003 "owner": "numtide",
2004 "repo": "flake-utils",
2005 "type": "github"
2006 }
2007 },
2008 "flake-utils_30": {
2009 "locked": {
2010 "lastModified": 1648297722,
2011 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
2012 "owner": "numtide",
2013 "repo": "flake-utils",
2014 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
2015 "type": "github"
2016 },
2017 "original": {
2018 "owner": "numtide",
2019 "repo": "flake-utils",
2020 "type": "github"
2021 }
2022 },
2023 "flake-utils_31": {
2024 "locked": {
2025 "lastModified": 1648297722,
2026 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
2027 "owner": "numtide",
2028 "repo": "flake-utils",
2029 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
2030 "type": "github"
2031 },
2032 "original": {
2033 "owner": "numtide",
2034 "repo": "flake-utils",
2035 "type": "github"
2036 }
2037 },
2038 "flake-utils_32": {
2039 "locked": {
2040 "lastModified": 1659877975,
2041 "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
2042 "owner": "numtide",
2043 "repo": "flake-utils",
2044 "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
2045 "type": "github"
2046 },
2047 "original": {
2048 "owner": "numtide",
2049 "repo": "flake-utils",
2050 "type": "github"
2051 }
2052 },
2053 "flake-utils_33": {
2054 "locked": {
2055 "lastModified": 1648297722,
2056 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
2057 "owner": "numtide",
2058 "repo": "flake-utils",
2059 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
2060 "type": "github"
2061 },
2062 "original": {
2063 "owner": "numtide",
2064 "repo": "flake-utils",
2065 "type": "github"
2066 }
2067 },
2068 "flake-utils_34": {
2069 "locked": {
2070 "lastModified": 1667395993,
2071 "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
2072 "owner": "numtide",
2073 "repo": "flake-utils",
2074 "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
2075 "type": "github"
2076 },
2077 "original": {
2078 "owner": "numtide",
2079 "repo": "flake-utils",
2080 "type": "github"
2081 }
2082 },
2083 "flake-utils_35": {
2084 "locked": {
2085 "lastModified": 1659877975,
2086 "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
2087 "owner": "numtide",
2088 "repo": "flake-utils",
2089 "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
2090 "type": "github"
2091 },
2092 "original": {
2093 "owner": "numtide",
2094 "repo": "flake-utils",
2095 "type": "github"
2096 }
2097 },
2098 "flake-utils_36": {
2099 "locked": {
2100 "lastModified": 1648297722,
2101 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
2102 "owner": "numtide",
2103 "repo": "flake-utils",
2104 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
2105 "type": "github"
2106 },
2107 "original": {
2108 "owner": "numtide",
2109 "repo": "flake-utils",
2110 "type": "github"
2111 }
2112 },
2113 "flake-utils_37": {
2114 "locked": {
2115 "lastModified": 1667395993,
2116 "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
2117 "owner": "numtide",
2118 "repo": "flake-utils",
2119 "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
2120 "type": "github"
2121 },
2122 "original": {
2123 "owner": "numtide",
2124 "repo": "flake-utils",
2125 "type": "github"
2126 }
2127 },
2128 "flake-utils_38": {
2129 "locked": {
2130 "lastModified": 1659877975,
2131 "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
2132 "owner": "numtide",
2133 "repo": "flake-utils",
2134 "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
2135 "type": "github"
2136 },
2137 "original": {
2138 "owner": "numtide",
2139 "repo": "flake-utils",
2140 "type": "github"
2141 }
2142 },
2143 "flake-utils_39": {
2144 "locked": {
2145 "lastModified": 1667395993,
2146 "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
2147 "owner": "numtide",
2148 "repo": "flake-utils",
2149 "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
2150 "type": "github"
2151 },
2152 "original": {
2153 "owner": "numtide",
2154 "repo": "flake-utils",
2155 "type": "github"
2156 }
2157 },
2158 "flake-utils_4": {
2159 "locked": {
2160 "lastModified": 1609246779,
2161 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
2162 "owner": "numtide",
2163 "repo": "flake-utils",
2164 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
2165 "type": "github"
2166 },
2167 "original": {
2168 "owner": "numtide",
2169 "repo": "flake-utils",
2170 "type": "github"
2171 }
2172 },
2173 "flake-utils_40": {
2174 "locked": {
2175 "lastModified": 1667395993,
2176 "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
2177 "owner": "numtide",
2178 "repo": "flake-utils",
2179 "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
2180 "type": "github"
2181 },
2182 "original": {
2183 "owner": "numtide",
2184 "repo": "flake-utils",
2185 "type": "github"
2186 }
2187 },
2188 "flake-utils_41": {
2189 "locked": {
2190 "lastModified": 1631561581,
2191 "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
2192 "owner": "numtide",
2193 "repo": "flake-utils",
2194 "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
2195 "type": "github"
2196 },
2197 "original": {
2198 "owner": "numtide",
2199 "repo": "flake-utils",
2200 "type": "github"
2201 }
2202 },
2203 "flake-utils_42": {
2204 "locked": {
2205 "lastModified": 1648297722,
2206 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
2207 "owner": "numtide",
2208 "repo": "flake-utils",
2209 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
2210 "type": "github"
2211 },
2212 "original": {
2213 "owner": "numtide",
2214 "repo": "flake-utils",
2215 "type": "github"
2216 }
2217 },
2218 "flake-utils_43": {
2219 "locked": {
2220 "lastModified": 1648297722,
2221 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
2222 "owner": "numtide",
2223 "repo": "flake-utils",
2224 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
2225 "type": "github"
2226 },
2227 "original": {
2228 "owner": "numtide",
2229 "repo": "flake-utils",
2230 "type": "github"
2231 }
2232 },
2233 "flake-utils_44": {
2234 "locked": {
2235 "lastModified": 1648297722,
2236 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
2237 "owner": "numtide",
2238 "repo": "flake-utils",
2239 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
2240 "type": "github"
2241 },
2242 "original": {
2243 "owner": "numtide",
2244 "repo": "flake-utils",
2245 "type": "github"
2246 }
2247 },
2248 "flake-utils_45": {
2249 "locked": {
2250 "lastModified": 1659877975,
2251 "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
2252 "owner": "numtide",
2253 "repo": "flake-utils",
2254 "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
2255 "type": "github"
2256 },
2257 "original": {
2258 "owner": "numtide",
2259 "repo": "flake-utils",
2260 "type": "github"
2261 }
2262 },
2263 "flake-utils_46": {
2264 "locked": {
2265 "lastModified": 1648297722,
2266 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
2267 "owner": "numtide",
2268 "repo": "flake-utils",
2269 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
2270 "type": "github"
2271 },
2272 "original": {
2273 "owner": "numtide",
2274 "repo": "flake-utils",
2275 "type": "github"
2276 }
2277 },
2278 "flake-utils_47": {
2279 "locked": {
2280 "lastModified": 1649676176,
2281 "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
2282 "owner": "numtide",
2283 "repo": "flake-utils",
2284 "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678",
2285 "type": "github"
2286 },
2287 "original": {
2288 "owner": "numtide",
2289 "repo": "flake-utils",
2290 "type": "github"
2291 }
2292 },
2293 "flake-utils_48": {
2294 "locked": {
2295 "lastModified": 1609246779,
2296 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
2297 "owner": "numtide",
2298 "repo": "flake-utils",
2299 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
2300 "type": "github"
2301 },
2302 "original": {
2303 "owner": "numtide",
2304 "repo": "flake-utils",
2305 "type": "github"
2306 }
2307 },
2308 "flake-utils_49": {
2309 "locked": {
2310 "lastModified": 1609246779,
2311 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
2312 "owner": "numtide",
2313 "repo": "flake-utils",
2314 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
2315 "type": "github"
2316 },
2317 "original": {
2318 "owner": "numtide",
2319 "repo": "flake-utils",
2320 "type": "github"
2321 }
2322 },
2323 "flake-utils_5": {
2324 "locked": {
2325 "lastModified": 1609246779,
2326 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
2327 "owner": "numtide",
2328 "repo": "flake-utils",
2329 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
2330 "type": "github"
2331 },
2332 "original": {
2333 "owner": "numtide",
2334 "repo": "flake-utils",
2335 "type": "github"
2336 }
2337 },
2338 "flake-utils_50": {
2339 "locked": {
2340 "lastModified": 1631561581,
2341 "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
2342 "owner": "numtide",
2343 "repo": "flake-utils",
2344 "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
2345 "type": "github"
2346 },
2347 "original": {
2348 "owner": "numtide",
2349 "repo": "flake-utils",
2350 "type": "github"
2351 }
2352 },
2353 "flake-utils_51": {
2354 "locked": {
2355 "lastModified": 1610051610,
2356 "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
2357 "owner": "numtide",
2358 "repo": "flake-utils",
2359 "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
2360 "type": "github"
2361 },
2362 "original": {
2363 "owner": "numtide",
2364 "repo": "flake-utils",
2365 "type": "github"
2366 }
2367 },
2368 "flake-utils_52": {
2369 "locked": {
2370 "lastModified": 1648297722,
2371 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
2372 "owner": "numtide",
2373 "repo": "flake-utils",
2374 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
2375 "type": "github"
2376 },
2377 "original": {
2378 "owner": "numtide",
2379 "repo": "flake-utils",
2380 "type": "github"
2381 }
2382 },
2383 "flake-utils_53": {
2384 "locked": {
2385 "lastModified": 1609246779,
2386 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
2387 "owner": "numtide",
2388 "repo": "flake-utils",
2389 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
2390 "type": "github"
2391 },
2392 "original": {
2393 "owner": "numtide",
2394 "repo": "flake-utils",
2395 "type": "github"
2396 }
2397 },
2398 "flake-utils_54": {
2399 "locked": {
2400 "lastModified": 1609246779,
2401 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
2402 "owner": "numtide",
2403 "repo": "flake-utils",
2404 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
2405 "type": "github"
2406 },
2407 "original": {
2408 "owner": "numtide",
2409 "repo": "flake-utils",
2410 "type": "github"
2411 }
2412 },
2413 "flake-utils_55": {
2414 "locked": {
2415 "lastModified": 1609246779,
2416 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
2417 "owner": "numtide",
2418 "repo": "flake-utils",
2419 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
2420 "type": "github"
2421 },
2422 "original": {
2423 "owner": "numtide",
2424 "repo": "flake-utils",
2425 "type": "github"
2426 }
2427 },
2428 "flake-utils_56": {
2429 "locked": {
2430 "lastModified": 1609246779,
2431 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
2432 "owner": "numtide",
2433 "repo": "flake-utils",
2434 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
2435 "type": "github"
2436 },
2437 "original": {
2438 "owner": "numtide",
2439 "repo": "flake-utils",
2440 "type": "github"
2441 }
2442 },
2443 "flake-utils_57": {
2444 "locked": {
2445 "lastModified": 1631561581,
2446 "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
2447 "owner": "numtide",
2448 "repo": "flake-utils",
2449 "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
2450 "type": "github"
2451 },
2452 "original": {
2453 "owner": "numtide",
2454 "repo": "flake-utils",
2455 "type": "github"
2456 }
2457 },
2458 "flake-utils_58": {
2459 "locked": {
2460 "lastModified": 1610051610,
2461 "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
2462 "owner": "numtide",
2463 "repo": "flake-utils",
2464 "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
2465 "type": "github"
2466 },
2467 "original": {
2468 "owner": "numtide",
2469 "repo": "flake-utils",
2470 "type": "github"
2471 }
2472 },
2473 "flake-utils_59": {
2474 "locked": {
2475 "lastModified": 1610051610,
2476 "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
2477 "owner": "numtide",
2478 "repo": "flake-utils",
2479 "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
2480 "type": "github"
2481 },
2482 "original": {
2483 "owner": "numtide",
2484 "repo": "flake-utils",
2485 "type": "github"
2486 }
2487 },
2488 "flake-utils_6": {
2489 "locked": {
2490 "lastModified": 1667395993,
2491 "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
2492 "owner": "numtide",
2493 "repo": "flake-utils",
2494 "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
2495 "type": "github"
2496 },
2497 "original": {
2498 "owner": "numtide",
2499 "repo": "flake-utils",
2500 "type": "github"
2501 }
2502 },
2503 "flake-utils_60": {
2504 "locked": {
2505 "lastModified": 1648297722,
2506 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
2507 "owner": "numtide",
2508 "repo": "flake-utils",
2509 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
2510 "type": "github"
2511 },
2512 "original": {
2513 "owner": "numtide",
2514 "repo": "flake-utils",
2515 "type": "github"
2516 }
2517 },
2518 "flake-utils_61": {
2519 "locked": {
2520 "lastModified": 1667395993,
2521 "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
2522 "owner": "numtide",
2523 "repo": "flake-utils",
2524 "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
2525 "type": "github"
2526 },
2527 "original": {
2528 "owner": "numtide",
2529 "repo": "flake-utils",
2530 "type": "github"
2531 }
2532 },
2533 "flake-utils_62": {
2534 "locked": {
2535 "lastModified": 1648297722,
2536 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
2537 "owner": "numtide",
2538 "repo": "flake-utils",
2539 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
2540 "type": "github"
2541 },
2542 "original": {
2543 "owner": "numtide",
2544 "repo": "flake-utils",
2545 "type": "github"
2546 }
2547 },
2548 "flake-utils_63": {
2549 "locked": {
2550 "lastModified": 1648297722,
2551 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
2552 "owner": "numtide",
2553 "repo": "flake-utils",
2554 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
2555 "type": "github"
2556 },
2557 "original": {
2558 "owner": "numtide",
2559 "repo": "flake-utils",
2560 "type": "github"
2561 }
2562 },
2563 "flake-utils_7": {
2564 "locked": {
2565 "lastModified": 1659877975,
2566 "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
2567 "owner": "numtide",
2568 "repo": "flake-utils",
2569 "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
2570 "type": "github"
2571 },
2572 "original": {
2573 "owner": "numtide",
2574 "repo": "flake-utils",
2575 "type": "github"
2576 }
2577 },
2578 "flake-utils_8": {
2579 "locked": {
2580 "lastModified": 1667395993,
2581 "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
2582 "owner": "numtide",
2583 "repo": "flake-utils",
2584 "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
2585 "type": "github"
2586 },
2587 "original": {
2588 "owner": "numtide",
2589 "repo": "flake-utils",
2590 "type": "github"
2591 }
2592 },
2593 "flake-utils_9": {
2594 "locked": {
2595 "lastModified": 1614513358,
2596 "narHash": "sha256-LakhOx3S1dRjnh0b5Dg3mbZyH0ToC9I8Y2wKSkBaTzU=",
2597 "owner": "numtide",
2598 "repo": "flake-utils",
2599 "rev": "5466c5bbece17adaab2d82fae80b46e807611bf3",
2600 "type": "github"
2601 },
2602 "original": {
2603 "owner": "numtide",
2604 "repo": "flake-utils",
2605 "type": "github"
2606 }
2607 },
2608 "grocy": {
2609 "flake": false,
2610 "locked": {
2611 "lastModified": 1585166193,
2612 "narHash": "sha256-rq1Fma/VgU01qXQmCghrt5k+LXWYt8z9b0NvGA7+/Y8=",
2613 "owner": "grocy",
2614 "repo": "grocy",
2615 "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
2616 "type": "github"
2617 },
2618 "original": {
2619 "owner": "grocy",
2620 "repo": "grocy",
2621 "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
2622 "type": "github"
2623 }
2624 },
2625 "grocy_2": {
2626 "flake": false,
2627 "locked": {
2628 "lastModified": 1585166193,
2629 "narHash": "sha256-rq1Fma/VgU01qXQmCghrt5k+LXWYt8z9b0NvGA7+/Y8=",
2630 "owner": "grocy",
2631 "repo": "grocy",
2632 "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
2633 "type": "github"
2634 },
2635 "original": {
2636 "owner": "grocy",
2637 "repo": "grocy",
2638 "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
2639 "type": "github"
2640 }
2641 },
2642 "impermanence": {
2643 "locked": {
2644 "lastModified": 1684264534,
2645 "narHash": "sha256-K0zr+ry3FwIo3rN2U/VWAkCJSgBslBisvfRIPwMbuCQ=",
2646 "owner": "nix-community",
2647 "repo": "impermanence",
2648 "rev": "89253fb1518063556edd5e54509c30ac3089d5e6",
2649 "type": "github"
2650 },
2651 "original": {
2652 "owner": "nix-community",
2653 "ref": "master",
2654 "repo": "impermanence",
2655 "type": "github"
2656 }
2657 },
2658 "landing-page": {
2659 "flake": false,
2660 "locked": {
2661 "lastModified": 1691524124,
2662 "narHash": "sha256-JyHb02qUrct2t+dgaiOcT5KS8RHkXygjWQXl+55gSMY=",
2663 "ref": "main",
2664 "rev": "018344d9116b506c662ecdcee2d0d505c857f1cf",
2665 "revCount": 573,
2666 "type": "git",
2667 "url": "https://github.com/bastienwirtz/homer.git"
2668 },
2669 "original": {
2670 "ref": "main",
2671 "type": "git",
2672 "url": "https://github.com/bastienwirtz/homer.git"
2673 }
2674 },
2675 "loginctl-linger": {
2676 "locked": {
2677 "lastModified": 1,
2678 "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
2679 "path": "../../flakes/loginctl-linger",
2680 "type": "path"
2681 },
2682 "original": {
2683 "path": "../../flakes/loginctl-linger",
2684 "type": "path"
2685 }
2686 },
2687 "loginctl-linger_2": {
2688 "locked": {
2689 "lastModified": 1,
2690 "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
2691 "path": "../../flakes/loginctl-linger",
2692 "type": "path"
2693 },
2694 "original": {
2695 "path": "../../flakes/loginctl-linger",
2696 "type": "path"
2697 }
2698 },
2699 "loginctl-linger_3": {
2700 "locked": {
2701 "lastModified": 1,
2702 "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
2703 "path": "../../flakes/loginctl-linger",
2704 "type": "path"
2705 },
2706 "original": {
2707 "path": "../../flakes/loginctl-linger",
2708 "type": "path"
2709 }
2710 },
2711 "mail-relay": {
2712 "inputs": {
2713 "environment": "environment_3",
2714 "secrets": "secrets"
2715 },
2716 "locked": {
2717 "lastModified": 1,
2718 "narHash": "sha256-xISja892g6YTu9YjGwaD36BBWi/1+IcuREw6iUDqfVw=",
2719 "path": "../../flakes/private/mail-relay",
2720 "type": "path"
2721 },
2722 "original": {
2723 "path": "../../flakes/private/mail-relay",
2724 "type": "path"
2725 }
2726 },
2727 "mail-relay_2": {
2728 "inputs": {
2729 "environment": "environment_20",
2730 "secrets": "secrets_15"
2731 },
2732 "locked": {
2733 "lastModified": 1,
2734 "narHash": "sha256-xISja892g6YTu9YjGwaD36BBWi/1+IcuREw6iUDqfVw=",
2735 "path": "../../flakes/private/mail-relay",
2736 "type": "path"
2737 },
2738 "original": {
2739 "path": "../../flakes/private/mail-relay",
2740 "type": "path"
2741 }
2742 },
2743 "mastodon": {
2744 "flake": false,
2745 "locked": {
2746 "lastModified": 1582790581,
2747 "narHash": "sha256-YImWfvsJQzJHyKoWI6OP6BA+NvmHF2RiwJqOg0NUN/U=",
2748 "owner": "tootsuite",
2749 "repo": "mastodon",
2750 "rev": "9bace2dd88d127d396794375c8fcb2132619a799",
2751 "type": "github"
2752 },
2753 "original": {
2754 "owner": "tootsuite",
2755 "ref": "v2.9.4",
2756 "repo": "mastodon",
2757 "type": "github"
2758 }
2759 },
2760 "mastodon_2": {
2761 "flake": false,
2762 "locked": {
2763 "lastModified": 1582790581,
2764 "narHash": "sha256-YImWfvsJQzJHyKoWI6OP6BA+NvmHF2RiwJqOg0NUN/U=",
2765 "owner": "tootsuite",
2766 "repo": "mastodon",
2767 "rev": "9bace2dd88d127d396794375c8fcb2132619a799",
2768 "type": "github"
2769 },
2770 "original": {
2771 "owner": "tootsuite",
2772 "ref": "v2.9.4",
2773 "repo": "mastodon",
2774 "type": "github"
2775 }
2776 },
2777 "mediagoblin": {
2778 "flake": false,
2779 "locked": {
2780 "lastModified": 1531090939,
2781 "narHash": "sha256-vSajRbuE/bu2HVsUZm25fkm/vNLXKDIK7Xn8kyKJ5Ps=",
2782 "ref": "stable",
2783 "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
2784 "revCount": 4805,
2785 "submodules": true,
2786 "type": "git",
2787 "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
2788 },
2789 "original": {
2790 "ref": "stable",
2791 "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
2792 "submodules": true,
2793 "type": "git",
2794 "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
2795 }
2796 },
2797 "mediagoblin_2": {
2798 "flake": false,
2799 "locked": {
2800 "lastModified": 1531090939,
2801 "narHash": "sha256-vSajRbuE/bu2HVsUZm25fkm/vNLXKDIK7Xn8kyKJ5Ps=",
2802 "ref": "stable",
2803 "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
2804 "revCount": 4805,
2805 "submodules": true,
2806 "type": "git",
2807 "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
2808 },
2809 "original": {
2810 "ref": "stable",
2811 "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
2812 "submodules": true,
2813 "type": "git",
2814 "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
2815 }
2816 },
2817 "milters": {
2818 "inputs": {
2819 "environment": "environment_4",
2820 "files-watcher": "files-watcher",
2821 "openarc": "openarc",
2822 "opendmarc": "opendmarc",
2823 "secrets": "secrets_2"
2824 },
2825 "locked": {
2826 "lastModified": 1,
2827 "narHash": "sha256-+FlrtZ2sR58VeLsYFeQ6ccaAiGQRFoc9ofs/X/S0Bkg=",
2828 "path": "../../flakes/private/milters",
2829 "type": "path"
2830 },
2831 "original": {
2832 "path": "../../flakes/private/milters",
2833 "type": "path"
2834 }
2835 },
2836 "monitoring": {
2837 "inputs": {
2838 "environment": "environment_5",
2839 "naemon": "naemon",
2840 "nixpkgs-lib": "nixpkgs-lib",
2841 "secrets": "secrets_3"
2842 },
2843 "locked": {
2844 "lastModified": 1,
2845 "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
2846 "path": "../../flakes/private/monitoring",
2847 "type": "path"
2848 },
2849 "original": {
2850 "path": "../../flakes/private/monitoring",
2851 "type": "path"
2852 }
2853 },
2854 "monitoring_2": {
2855 "inputs": {
2856 "environment": "environment_9",
2857 "naemon": "naemon_2",
2858 "nixpkgs-lib": "nixpkgs-lib_4",
2859 "secrets": "secrets_7"
2860 },
2861 "locked": {
2862 "lastModified": 1,
2863 "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
2864 "path": "../../flakes/private/monitoring",
2865 "type": "path"
2866 },
2867 "original": {
2868 "path": "../../flakes/private/monitoring",
2869 "type": "path"
2870 }
2871 },
2872 "monitoring_3": {
2873 "inputs": {
2874 "environment": "environment_21",
2875 "naemon": "naemon_4",
2876 "nixpkgs-lib": "nixpkgs-lib_14",
2877 "secrets": "secrets_16"
2878 },
2879 "locked": {
2880 "lastModified": 1,
2881 "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
2882 "path": "../../flakes/private/monitoring",
2883 "type": "path"
2884 },
2885 "original": {
2886 "path": "../../flakes/private/monitoring",
2887 "type": "path"
2888 }
2889 },
2890 "monitoring_4": {
2891 "inputs": {
2892 "environment": "environment_24",
2893 "naemon": "naemon_5",
2894 "nixpkgs-lib": "nixpkgs-lib_17",
2895 "secrets": "secrets_18"
2896 },
2897 "locked": {
2898 "lastModified": 1,
2899 "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
2900 "path": "../../flakes/private/monitoring",
2901 "type": "path"
2902 },
2903 "original": {
2904 "path": "../../flakes/private/monitoring",
2905 "type": "path"
2906 }
2907 },
2908 "multi-apache-container": {
2909 "inputs": {
2910 "files-watcher": "files-watcher_11",
2911 "myuids": "myuids_25"
2912 },
2913 "locked": {
2914 "lastModified": 1,
2915 "narHash": "sha256-euh+K7DLk5B3hKTeK5Xwo6dvnvHk+7ZDCqaRdG48i8I=",
2916 "path": "../../flakes/multi-apache-container",
2917 "type": "path"
2918 },
2919 "original": {
2920 "path": "../../flakes/multi-apache-container",
2921 "type": "path"
2922 }
2923 },
2924 "my-lib": {
2925 "inputs": {
2926 "colmena": "colmena",
2927 "disko": "disko",
2928 "flake-parts": "flake-parts",
2929 "nixos-anywhere": "nixos-anywhere",
2930 "nixpkgs": "nixpkgs_6"
2931 },
2932 "locked": {
2933 "lastModified": 1,
2934 "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
2935 "path": "../../flakes/lib",
2936 "type": "path"
2937 },
2938 "original": {
2939 "path": "../../flakes/lib",
2940 "type": "path"
2941 }
2942 },
2943 "my-lib_2": {
2944 "inputs": {
2945 "colmena": "colmena_2",
2946 "disko": "disko_2",
2947 "flake-parts": "flake-parts_3",
2948 "nixos-anywhere": "nixos-anywhere_2",
2949 "nixpkgs": "nixpkgs_15"
2950 },
2951 "locked": {
2952 "lastModified": 1,
2953 "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
2954 "path": "../../flakes/lib",
2955 "type": "path"
2956 },
2957 "original": {
2958 "path": "../../flakes/lib",
2959 "type": "path"
2960 }
2961 },
2962 "my-lib_3": {
2963 "inputs": {
2964 "colmena": "colmena_3",
2965 "disko": "disko_3",
2966 "flake-parts": "flake-parts_5",
2967 "nixos-anywhere": "nixos-anywhere_3",
2968 "nixpkgs": "nixpkgs_22"
2969 },
2970 "locked": {
2971 "lastModified": 1,
2972 "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
2973 "path": "../../flakes/lib",
2974 "type": "path"
2975 },
2976 "original": {
2977 "path": "../../flakes/lib",
2978 "type": "path"
2979 }
2980 },
2981 "my-lib_4": {
2982 "inputs": {
2983 "colmena": "colmena_4",
2984 "disko": "disko_4",
2985 "flake-parts": "flake-parts_11",
2986 "nixos-anywhere": "nixos-anywhere_4",
2987 "nixpkgs": "nixpkgs_53"
2988 },
2989 "locked": {
2990 "lastModified": 1,
2991 "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
2992 "path": "../../flakes/lib",
2993 "type": "path"
2994 },
2995 "original": {
2996 "path": "../../flakes/lib",
2997 "type": "path"
2998 }
2999 },
3000 "my-lib_5": {
3001 "inputs": {
3002 "colmena": "colmena_5",
3003 "disko": "disko_5",
3004 "flake-parts": "flake-parts_13",
3005 "nixos-anywhere": "nixos-anywhere_5",
3006 "nixpkgs": "nixpkgs_61"
3007 },
3008 "locked": {
3009 "lastModified": 1,
3010 "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
3011 "path": "../../flakes/lib",
3012 "type": "path"
3013 },
3014 "original": {
3015 "path": "../../flakes/lib",
3016 "type": "path"
3017 }
3018 },
3019 "my-lib_6": {
3020 "inputs": {
3021 "colmena": "colmena_6",
3022 "disko": "disko_6",
3023 "flake-parts": "flake-parts_15",
3024 "nixos-anywhere": "nixos-anywhere_6",
3025 "nixpkgs": "nixpkgs_69"
3026 },
3027 "locked": {
3028 "lastModified": 1,
3029 "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
3030 "path": "../../flakes/lib",
3031 "type": "path"
3032 },
3033 "original": {
3034 "path": "../../flakes/lib",
3035 "type": "path"
3036 }
3037 },
3038 "mypackages": {
3039 "inputs": {
3040 "flake-parts": "flake-parts_2",
3041 "nixpkgs": "nixpkgs_11",
3042 "webapps-ttrss": "webapps-ttrss"
3043 },
3044 "locked": {
3045 "lastModified": 1,
3046 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
3047 "path": "../../mypackages",
3048 "type": "path"
3049 },
3050 "original": {
3051 "path": "../../mypackages",
3052 "type": "path"
3053 }
3054 },
3055 "mypackages_10": {
3056 "inputs": {
3057 "flake-parts": "flake-parts_17",
3058 "nixpkgs": "nixpkgs_76",
3059 "webapps-ttrss": "webapps-ttrss_11"
3060 },
3061 "locked": {
3062 "lastModified": 1,
3063 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
3064 "path": "../mypackages",
3065 "type": "path"
3066 },
3067 "original": {
3068 "path": "../mypackages",
3069 "type": "path"
3070 }
3071 },
3072 "mypackages_11": {
3073 "inputs": {
3074 "flake-parts": "flake-parts_18",
3075 "nixpkgs": "nixpkgs_78",
3076 "webapps-ttrss": "webapps-ttrss_12"
3077 },
3078 "locked": {
3079 "lastModified": 1,
3080 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
3081 "path": "../mypackages",
3082 "type": "path"
3083 },
3084 "original": {
3085 "path": "../mypackages",
3086 "type": "path"
3087 }
3088 },
3089 "mypackages_12": {
3090 "inputs": {
3091 "flake-parts": "flake-parts_21",
3092 "nixpkgs": "nixpkgs_101",
3093 "webapps-ttrss": "webapps-ttrss_14"
3094 },
3095 "locked": {
3096 "lastModified": 1,
3097 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
3098 "path": "../../mypackages",
3099 "type": "path"
3100 },
3101 "original": {
3102 "path": "../../mypackages",
3103 "type": "path"
3104 }
3105 },
3106 "mypackages_13": {
3107 "inputs": {
3108 "flake-parts": "flake-parts_22",
3109 "nixpkgs": "nixpkgs_102",
3110 "webapps-ttrss": "webapps-ttrss_15"
3111 },
3112 "locked": {
3113 "lastModified": 1,
3114 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
3115 "path": "../mypackages",
3116 "type": "path"
3117 },
3118 "original": {
3119 "path": "../mypackages",
3120 "type": "path"
3121 }
3122 },
3123 "mypackages_2": {
3124 "inputs": {
3125 "flake-parts": "flake-parts_4",
3126 "nixpkgs": "nixpkgs_18",
3127 "webapps-ttrss": "webapps-ttrss_2"
3128 },
3129 "locked": {
3130 "lastModified": 1,
3131 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
3132 "path": "../../mypackages",
3133 "type": "path"
3134 },
3135 "original": {
3136 "path": "../../mypackages",
3137 "type": "path"
3138 }
3139 },
3140 "mypackages_3": {
3141 "inputs": {
3142 "flake-parts": "flake-parts_6",
3143 "nixpkgs": "nixpkgs_34",
3144 "webapps-ttrss": "webapps-ttrss_3"
3145 },
3146 "locked": {
3147 "lastModified": 1,
3148 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
3149 "path": "../../mypackages",
3150 "type": "path"
3151 },
3152 "original": {
3153 "path": "../../mypackages",
3154 "type": "path"
3155 }
3156 },
3157 "mypackages_4": {
3158 "inputs": {
3159 "flake-parts": "flake-parts_7",
3160 "nixpkgs": "nixpkgs_37",
3161 "webapps-ttrss": "webapps-ttrss_4"
3162 },
3163 "locked": {
3164 "lastModified": 1,
3165 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
3166 "path": "../mypackages",
3167 "type": "path"
3168 },
3169 "original": {
3170 "path": "../mypackages",
3171 "type": "path"
3172 }
3173 },
3174 "mypackages_5": {
3175 "inputs": {
3176 "flake-parts": "flake-parts_8",
3177 "nixpkgs": "nixpkgs_39",
3178 "webapps-ttrss": "webapps-ttrss_5"
3179 },
3180 "locked": {
3181 "lastModified": 1,
3182 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
3183 "path": "../mypackages",
3184 "type": "path"
3185 },
3186 "original": {
3187 "path": "../mypackages",
3188 "type": "path"
3189 }
3190 },
3191 "mypackages_6": {
3192 "inputs": {
3193 "flake-parts": "flake-parts_10",
3194 "nixpkgs": "nixpkgs_47",
3195 "webapps-ttrss": "webapps-ttrss_7"
3196 },
3197 "locked": {
3198 "lastModified": 1,
3199 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
3200 "path": "../mypackages",
3201 "type": "path"
3202 },
3203 "original": {
3204 "path": "../mypackages",
3205 "type": "path"
3206 }
3207 },
3208 "mypackages_7": {
3209 "inputs": {
3210 "flake-parts": "flake-parts_12",
3211 "nixpkgs": "nixpkgs_57",
3212 "webapps-ttrss": "webapps-ttrss_8"
3213 },
3214 "locked": {
3215 "lastModified": 1,
3216 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
3217 "path": "../../mypackages",
3218 "type": "path"
3219 },
3220 "original": {
3221 "path": "../../mypackages",
3222 "type": "path"
3223 }
3224 },
3225 "mypackages_8": {
3226 "inputs": {
3227 "flake-parts": "flake-parts_14",
3228 "nixpkgs": "nixpkgs_65",
3229 "webapps-ttrss": "webapps-ttrss_9"
3230 },
3231 "locked": {
3232 "lastModified": 1,
3233 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
3234 "path": "../../mypackages",
3235 "type": "path"
3236 },
3237 "original": {
3238 "path": "../../mypackages",
3239 "type": "path"
3240 }
3241 },
3242 "mypackages_9": {
3243 "inputs": {
3244 "flake-parts": "flake-parts_16",
3245 "nixpkgs": "nixpkgs_72",
3246 "webapps-ttrss": "webapps-ttrss_10"
3247 },
3248 "locked": {
3249 "lastModified": 1,
3250 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
3251 "path": "../../mypackages",
3252 "type": "path"
3253 },
3254 "original": {
3255 "path": "../../mypackages",
3256 "type": "path"
3257 }
3258 },
3259 "myuids": {
3260 "locked": {
3261 "lastModified": 1,
3262 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3263 "path": "../myuids",
3264 "type": "path"
3265 },
3266 "original": {
3267 "path": "../myuids",
3268 "type": "path"
3269 }
3270 },
3271 "myuids_10": {
3272 "locked": {
3273 "lastModified": 1,
3274 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3275 "path": "../myuids",
3276 "type": "path"
3277 },
3278 "original": {
3279 "path": "../myuids",
3280 "type": "path"
3281 }
3282 },
3283 "myuids_11": {
3284 "locked": {
3285 "lastModified": 1,
3286 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3287 "path": "../myuids",
3288 "type": "path"
3289 },
3290 "original": {
3291 "path": "../myuids",
3292 "type": "path"
3293 }
3294 },
3295 "myuids_12": {
3296 "locked": {
3297 "lastModified": 1,
3298 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3299 "path": "../myuids",
3300 "type": "path"
3301 },
3302 "original": {
3303 "path": "../myuids",
3304 "type": "path"
3305 }
3306 },
3307 "myuids_13": {
3308 "locked": {
3309 "lastModified": 1,
3310 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3311 "path": "../myuids",
3312 "type": "path"
3313 },
3314 "original": {
3315 "path": "../myuids",
3316 "type": "path"
3317 }
3318 },
3319 "myuids_14": {
3320 "locked": {
3321 "lastModified": 1,
3322 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3323 "path": "../myuids",
3324 "type": "path"
3325 },
3326 "original": {
3327 "path": "../myuids",
3328 "type": "path"
3329 }
3330 },
3331 "myuids_15": {
3332 "locked": {
3333 "lastModified": 1,
3334 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3335 "path": "../../myuids",
3336 "type": "path"
3337 },
3338 "original": {
3339 "path": "../../myuids",
3340 "type": "path"
3341 }
3342 },
3343 "myuids_16": {
3344 "locked": {
3345 "lastModified": 1,
3346 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3347 "path": "../myuids",
3348 "type": "path"
3349 },
3350 "original": {
3351 "path": "../myuids",
3352 "type": "path"
3353 }
3354 },
3355 "myuids_17": {
3356 "locked": {
3357 "lastModified": 1,
3358 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3359 "path": "../myuids",
3360 "type": "path"
3361 },
3362 "original": {
3363 "path": "../myuids",
3364 "type": "path"
3365 }
3366 },
3367 "myuids_18": {
3368 "locked": {
3369 "lastModified": 1,
3370 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3371 "path": "../myuids",
3372 "type": "path"
3373 },
3374 "original": {
3375 "path": "../myuids",
3376 "type": "path"
3377 }
3378 },
3379 "myuids_19": {
3380 "locked": {
3381 "lastModified": 1,
3382 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3383 "path": "../myuids",
3384 "type": "path"
3385 },
3386 "original": {
3387 "path": "../myuids",
3388 "type": "path"
3389 }
3390 },
3391 "myuids_2": {
3392 "locked": {
3393 "lastModified": 1,
3394 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3395 "path": "../myuids",
3396 "type": "path"
3397 },
3398 "original": {
3399 "path": "../myuids",
3400 "type": "path"
3401 }
3402 },
3403 "myuids_20": {
3404 "locked": {
3405 "lastModified": 1,
3406 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3407 "path": "../myuids",
3408 "type": "path"
3409 },
3410 "original": {
3411 "path": "../myuids",
3412 "type": "path"
3413 }
3414 },
3415 "myuids_21": {
3416 "locked": {
3417 "lastModified": 1,
3418 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3419 "path": "../myuids",
3420 "type": "path"
3421 },
3422 "original": {
3423 "path": "../myuids",
3424 "type": "path"
3425 }
3426 },
3427 "myuids_22": {
3428 "locked": {
3429 "lastModified": 1,
3430 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3431 "path": "../myuids",
3432 "type": "path"
3433 },
3434 "original": {
3435 "path": "../myuids",
3436 "type": "path"
3437 }
3438 },
3439 "myuids_23": {
3440 "locked": {
3441 "lastModified": 1,
3442 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3443 "path": "../../flakes/myuids",
3444 "type": "path"
3445 },
3446 "original": {
3447 "path": "../../flakes/myuids",
3448 "type": "path"
3449 }
3450 },
3451 "myuids_24": {
3452 "locked": {
3453 "lastModified": 1,
3454 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3455 "path": "../../myuids",
3456 "type": "path"
3457 },
3458 "original": {
3459 "path": "../../myuids",
3460 "type": "path"
3461 }
3462 },
3463 "myuids_25": {
3464 "locked": {
3465 "lastModified": 1,
3466 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3467 "path": "../myuids",
3468 "type": "path"
3469 },
3470 "original": {
3471 "path": "../myuids",
3472 "type": "path"
3473 }
3474 },
3475 "myuids_26": {
3476 "locked": {
3477 "lastModified": 1,
3478 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3479 "path": "../../flakes/myuids",
3480 "type": "path"
3481 },
3482 "original": {
3483 "path": "../../flakes/myuids",
3484 "type": "path"
3485 }
3486 },
3487 "myuids_27": {
3488 "locked": {
3489 "lastModified": 1,
3490 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3491 "path": "../../myuids",
3492 "type": "path"
3493 },
3494 "original": {
3495 "path": "../../myuids",
3496 "type": "path"
3497 }
3498 },
3499 "myuids_28": {
3500 "locked": {
3501 "lastModified": 1,
3502 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3503 "path": "../../myuids",
3504 "type": "path"
3505 },
3506 "original": {
3507 "path": "../../myuids",
3508 "type": "path"
3509 }
3510 },
3511 "myuids_29": {
3512 "locked": {
3513 "lastModified": 1,
3514 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3515 "path": "../myuids",
3516 "type": "path"
3517 },
3518 "original": {
3519 "path": "../myuids",
3520 "type": "path"
3521 }
3522 },
3523 "myuids_3": {
3524 "locked": {
3525 "lastModified": 1,
3526 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3527 "path": "../../flakes/myuids",
3528 "type": "path"
3529 },
3530 "original": {
3531 "path": "../../flakes/myuids",
3532 "type": "path"
3533 }
3534 },
3535 "myuids_30": {
3536 "locked": {
3537 "lastModified": 1,
3538 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3539 "path": "../myuids",
3540 "type": "path"
3541 },
3542 "original": {
3543 "path": "../myuids",
3544 "type": "path"
3545 }
3546 },
3547 "myuids_31": {
3548 "locked": {
3549 "lastModified": 1,
3550 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3551 "path": "../myuids",
3552 "type": "path"
3553 },
3554 "original": {
3555 "path": "../myuids",
3556 "type": "path"
3557 }
3558 },
3559 "myuids_32": {
3560 "locked": {
3561 "lastModified": 1,
3562 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3563 "path": "../myuids",
3564 "type": "path"
3565 },
3566 "original": {
3567 "path": "../myuids",
3568 "type": "path"
3569 }
3570 },
3571 "myuids_33": {
3572 "locked": {
3573 "lastModified": 1,
3574 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3575 "path": "../myuids",
3576 "type": "path"
3577 },
3578 "original": {
3579 "path": "../myuids",
3580 "type": "path"
3581 }
3582 },
3583 "myuids_34": {
3584 "locked": {
3585 "lastModified": 1,
3586 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3587 "path": "../myuids",
3588 "type": "path"
3589 },
3590 "original": {
3591 "path": "../myuids",
3592 "type": "path"
3593 }
3594 },
3595 "myuids_35": {
3596 "locked": {
3597 "lastModified": 1,
3598 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3599 "path": "../myuids",
3600 "type": "path"
3601 },
3602 "original": {
3603 "path": "../myuids",
3604 "type": "path"
3605 }
3606 },
3607 "myuids_36": {
3608 "locked": {
3609 "lastModified": 1,
3610 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3611 "path": "../myuids",
3612 "type": "path"
3613 },
3614 "original": {
3615 "path": "../myuids",
3616 "type": "path"
3617 }
3618 },
3619 "myuids_37": {
3620 "locked": {
3621 "lastModified": 1,
3622 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3623 "path": "../myuids",
3624 "type": "path"
3625 },
3626 "original": {
3627 "path": "../myuids",
3628 "type": "path"
3629 }
3630 },
3631 "myuids_38": {
3632 "locked": {
3633 "lastModified": 1,
3634 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3635 "path": "../myuids",
3636 "type": "path"
3637 },
3638 "original": {
3639 "path": "../myuids",
3640 "type": "path"
3641 }
3642 },
3643 "myuids_39": {
3644 "locked": {
3645 "lastModified": 1,
3646 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3647 "path": "../myuids",
3648 "type": "path"
3649 },
3650 "original": {
3651 "path": "../myuids",
3652 "type": "path"
3653 }
3654 },
3655 "myuids_4": {
3656 "locked": {
3657 "lastModified": 1,
3658 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3659 "path": "../myuids",
3660 "type": "path"
3661 },
3662 "original": {
3663 "path": "../myuids",
3664 "type": "path"
3665 }
3666 },
3667 "myuids_40": {
3668 "locked": {
3669 "lastModified": 1,
3670 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3671 "path": "../myuids",
3672 "type": "path"
3673 },
3674 "original": {
3675 "path": "../myuids",
3676 "type": "path"
3677 }
3678 },
3679 "myuids_41": {
3680 "locked": {
3681 "lastModified": 1,
3682 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3683 "path": "../myuids",
3684 "type": "path"
3685 },
3686 "original": {
3687 "path": "../myuids",
3688 "type": "path"
3689 }
3690 },
3691 "myuids_42": {
3692 "locked": {
3693 "lastModified": 1,
3694 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3695 "path": "../../myuids",
3696 "type": "path"
3697 },
3698 "original": {
3699 "path": "../../myuids",
3700 "type": "path"
3701 }
3702 },
3703 "myuids_5": {
3704 "locked": {
3705 "lastModified": 1,
3706 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3707 "path": "../myuids",
3708 "type": "path"
3709 },
3710 "original": {
3711 "path": "../myuids",
3712 "type": "path"
3713 }
3714 },
3715 "myuids_6": {
3716 "locked": {
3717 "lastModified": 1,
3718 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3719 "path": "../../myuids",
3720 "type": "path"
3721 },
3722 "original": {
3723 "path": "../../myuids",
3724 "type": "path"
3725 }
3726 },
3727 "myuids_7": {
3728 "locked": {
3729 "lastModified": 1,
3730 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3731 "path": "../../flakes/myuids",
3732 "type": "path"
3733 },
3734 "original": {
3735 "path": "../../flakes/myuids",
3736 "type": "path"
3737 }
3738 },
3739 "myuids_8": {
3740 "locked": {
3741 "lastModified": 1,
3742 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3743 "path": "../../myuids",
3744 "type": "path"
3745 },
3746 "original": {
3747 "path": "../../myuids",
3748 "type": "path"
3749 }
3750 },
3751 "myuids_9": {
3752 "locked": {
3753 "lastModified": 1,
3754 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
3755 "path": "../myuids",
3756 "type": "path"
3757 },
3758 "original": {
3759 "path": "../myuids",
3760 "type": "path"
3761 }
3762 },
3763 "n-backup-2": {
3764 "inputs": {
3765 "chatons": "chatons",
3766 "environment": "environment_2",
3767 "loginctl-linger": "loginctl-linger",
3768 "mail-relay": "mail-relay",
3769 "milters": "milters",
3770 "monitoring": "monitoring",
3771 "my-lib": "my-lib",
3772 "myuids": "myuids_3",
3773 "nixpkgs": "nixpkgs_7",
3774 "openarc": "openarc_3",
3775 "opendmarc": "opendmarc_2",
3776 "openldap": "openldap",
3777 "rsync_backup": "rsync_backup",
3778 "secrets": "secrets_6",
3779 "system": "system"
3780 },
3781 "locked": {
3782 "lastModified": 1,
3783 "narHash": "sha256-0CPGGyOWQadU9c8y+A4XtveOrmkMlFiH+WJ55RPzJnE=",
3784 "path": "../systems/backup-2",
3785 "type": "path"
3786 },
3787 "original": {
3788 "path": "../systems/backup-2",
3789 "type": "path"
3790 }
3791 },
3792 "n-dilion": {
3793 "inputs": {
3794 "environment": "environment_8",
3795 "files-watcher": "files-watcher_4",
3796 "loginctl-linger": "loginctl-linger_2",
3797 "monitoring": "monitoring_2",
3798 "my-lib": "my-lib_2",
3799 "myuids": "myuids_7",
3800 "nixpkgs": "nixpkgs_16",
3801 "secrets": "secrets_8",
3802 "ssh": "ssh",
3803 "system": "system_2"
3804 },
3805 "locked": {
3806 "lastModified": 1,
3807 "narHash": "sha256-Ctp8QY0OkGwv/YkOlipwM1ldEz7OebVDbAqg1O/tRe8=",
3808 "path": "../systems/dilion",
3809 "type": "path"
3810 },
3811 "original": {
3812 "path": "../systems/dilion",
3813 "type": "path"
3814 }
3815 },
3816 "n-eldiron": {
3817 "inputs": {
3818 "dns-nix": "dns-nix",
3819 "my-lib": "my-lib_3",
3820 "nixpkgs": "nixpkgs_23",
3821 "private-buildbot": "private-buildbot",
3822 "private-chatons": "private-chatons",
3823 "private-environment": "private-environment",
3824 "private-milters": "private-milters",
3825 "private-monitoring": "private-monitoring",
3826 "private-openarc": "private-openarc",
3827 "private-opendmarc": "private-opendmarc",
3828 "private-openldap": "private-openldap",
3829 "private-paste": "private-paste",
3830 "private-peertube": "private-peertube",
3831 "private-php": "private-php",
3832 "private-ssh": "private-ssh",
3833 "private-system": "private-system",
3834 "public-copanier": "public-copanier",
3835 "public-diaspora": "public-diaspora",
3836 "public-etherpad-lite": "public-etherpad-lite",
3837 "public-fiche": "public-fiche",
3838 "public-files-watcher": "public-files-watcher",
3839 "public-grocy": "public-grocy",
3840 "public-loginctl-linger": "public-loginctl-linger",
3841 "public-mastodon": "public-mastodon",
3842 "public-mediagoblin": "public-mediagoblin",
3843 "public-multi-apache-container": "public-multi-apache-container",
3844 "public-mypackages": "public-mypackages",
3845 "public-myuids": "public-myuids",
3846 "public-openarc": "public-openarc",
3847 "public-opendmarc": "public-opendmarc",
3848 "public-peertube": "public-peertube",
3849 "public-secrets": "public-secrets",
3850 "public-surfer": "public-surfer",
3851 "public-taskwarrior-web": "public-taskwarrior-web"
3852 },
3853 "locked": {
3854 "lastModified": 1,
3855 "narHash": "sha256-g9f3SCavl9ssNr8Xw9Z8KkpeEwCYv+47dqwoIPneMSs=",
3856 "path": "../systems/eldiron",
3857 "type": "path"
3858 },
3859 "original": {
3860 "path": "../systems/eldiron",
3861 "type": "path"
3862 }
3863 },
3864 "n-monitoring-1": {
3865 "inputs": {
3866 "chatons": "chatons_2",
3867 "environment": "environment_19",
3868 "files-watcher": "files-watcher_9",
3869 "loginctl-linger": "loginctl-linger_3",
3870 "mail-relay": "mail-relay_2",
3871 "monitoring": "monitoring_3",
3872 "my-lib": "my-lib_4",
3873 "myuids": "myuids_23",
3874 "nixpkgs": "nixpkgs_54",
3875 "php": "php",
3876 "secrets": "secrets_17",
3877 "system": "system_3"
3878 },
3879 "locked": {
3880 "lastModified": 1,
3881 "narHash": "sha256-kLIVhZAxEWcN3W1AaF/gmopYuRdq0U43jkA4hliY50I=",
3882 "path": "../systems/monitoring-1",
3883 "type": "path"
3884 },
3885 "original": {
3886 "path": "../systems/monitoring-1",
3887 "type": "path"
3888 }
3889 },
3890 "n-quatresaisons": {
3891 "inputs": {
3892 "environment": "environment_23",
3893 "files-watcher": "files-watcher_10",
3894 "landing-page": "landing-page",
3895 "monitoring": "monitoring_4",
3896 "multi-apache-container": "multi-apache-container",
3897 "my-lib": "my-lib_5",
3898 "myuids": "myuids_26",
3899 "nixpkgs": "nixpkgs_62",
3900 "php": "php_2",
3901 "secrets": "secrets_19",
3902 "system": "system_4"
3903 },
3904 "locked": {
3905 "lastModified": 1,
3906 "narHash": "sha256-FtjFgqcSXs0dTkbUggbPwaDeCoOoYZragHCUkcyq538=",
3907 "path": "../systems/quatresaisons",
3908 "type": "path"
3909 },
3910 "original": {
3911 "path": "../systems/quatresaisons",
3912 "type": "path"
3913 }
3914 },
3915 "n-zoldene": {
3916 "inputs": {
3917 "impermanence": "impermanence",
3918 "my-lib": "my-lib_6",
3919 "nixpkgs": "nixpkgs_70",
3920 "private-environment": "private-environment_2",
3921 "private-system": "private-system_2",
3922 "public-secrets": "public-secrets_2"
3923 },
3924 "locked": {
3925 "lastModified": 1,
3926 "narHash": "sha256-YSYLjETf7yMwdHeEisU1V7e5O3yB+YxVoIPLi00PCdo=",
3927 "path": "../systems/zoldene",
3928 "type": "path"
3929 },
3930 "original": {
3931 "path": "../systems/zoldene",
3932 "type": "path"
3933 }
3934 },
3935 "naemon": {
3936 "locked": {
3937 "lastModified": 1,
3938 "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
3939 "path": "../../naemon",
3940 "type": "path"
3941 },
3942 "original": {
3943 "path": "../../naemon",
3944 "type": "path"
3945 }
3946 },
3947 "naemon_2": {
3948 "locked": {
3949 "lastModified": 1,
3950 "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
3951 "path": "../../naemon",
3952 "type": "path"
3953 },
3954 "original": {
3955 "path": "../../naemon",
3956 "type": "path"
3957 }
3958 },
3959 "naemon_3": {
3960 "locked": {
3961 "lastModified": 1,
3962 "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
3963 "path": "../../naemon",
3964 "type": "path"
3965 },
3966 "original": {
3967 "path": "../../naemon",
3968 "type": "path"
3969 }
3970 },
3971 "naemon_4": {
3972 "locked": {
3973 "lastModified": 1,
3974 "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
3975 "path": "../../naemon",
3976 "type": "path"
3977 },
3978 "original": {
3979 "path": "../../naemon",
3980 "type": "path"
3981 }
3982 },
3983 "naemon_5": {
3984 "locked": {
3985 "lastModified": 1,
3986 "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
3987 "path": "../../naemon",
3988 "type": "path"
3989 },
3990 "original": {
3991 "path": "../../naemon",
3992 "type": "path"
3993 }
3994 },
3995 "naemon_6": {
3996 "locked": {
3997 "lastModified": 1,
3998 "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
3999 "path": "../../naemon",
4000 "type": "path"
4001 },
4002 "original": {
4003 "path": "../../naemon",
4004 "type": "path"
4005 }
4006 },
4007 "nixos-2305": {
4008 "locked": {
4009 "lastModified": 1687938137,
4010 "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
4011 "owner": "NixOS",
4012 "repo": "nixpkgs",
4013 "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
4014 "type": "github"
4015 },
4016 "original": {
4017 "owner": "NixOS",
4018 "ref": "release-23.05",
4019 "repo": "nixpkgs",
4020 "type": "github"
4021 }
4022 },
4023 "nixos-2305_2": {
4024 "locked": {
4025 "lastModified": 1687938137,
4026 "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
4027 "owner": "NixOS",
4028 "repo": "nixpkgs",
4029 "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
4030 "type": "github"
4031 },
4032 "original": {
4033 "owner": "NixOS",
4034 "ref": "release-23.05",
4035 "repo": "nixpkgs",
4036 "type": "github"
4037 }
4038 },
4039 "nixos-2305_3": {
4040 "locked": {
4041 "lastModified": 1687938137,
4042 "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
4043 "owner": "NixOS",
4044 "repo": "nixpkgs",
4045 "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
4046 "type": "github"
4047 },
4048 "original": {
4049 "owner": "NixOS",
4050 "ref": "release-23.05",
4051 "repo": "nixpkgs",
4052 "type": "github"
4053 }
4054 },
4055 "nixos-2305_4": {
4056 "locked": {
4057 "lastModified": 1687938137,
4058 "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
4059 "owner": "NixOS",
4060 "repo": "nixpkgs",
4061 "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
4062 "type": "github"
4063 },
4064 "original": {
4065 "owner": "NixOS",
4066 "ref": "release-23.05",
4067 "repo": "nixpkgs",
4068 "type": "github"
4069 }
4070 },
4071 "nixos-2305_5": {
4072 "locked": {
4073 "lastModified": 1687938137,
4074 "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
4075 "owner": "NixOS",
4076 "repo": "nixpkgs",
4077 "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
4078 "type": "github"
4079 },
4080 "original": {
4081 "owner": "NixOS",
4082 "ref": "release-23.05",
4083 "repo": "nixpkgs",
4084 "type": "github"
4085 }
4086 },
4087 "nixos-2305_6": {
4088 "locked": {
4089 "lastModified": 1687938137,
4090 "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
4091 "owner": "NixOS",
4092 "repo": "nixpkgs",
4093 "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
4094 "type": "github"
4095 },
4096 "original": {
4097 "owner": "NixOS",
4098 "ref": "release-23.05",
4099 "repo": "nixpkgs",
4100 "type": "github"
4101 }
4102 },
4103 "nixos-2305_7": {
4104 "locked": {
4105 "lastModified": 1687938137,
4106 "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
4107 "owner": "NixOS",
4108 "repo": "nixpkgs",
4109 "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
4110 "type": "github"
4111 },
4112 "original": {
4113 "owner": "NixOS",
4114 "ref": "release-23.05",
4115 "repo": "nixpkgs",
4116 "type": "github"
4117 }
4118 },
4119 "nixos-anywhere": {
4120 "inputs": {
4121 "disko": [
4122 "n-backup-2",
4123 "my-lib",
4124 "disko"
4125 ],
4126 "flake-parts": [
4127 "n-backup-2",
4128 "my-lib",
4129 "flake-parts"
4130 ],
4131 "nixos-2305": "nixos-2305",
4132 "nixos-images": "nixos-images",
4133 "nixpkgs": "nixpkgs_5",
4134 "treefmt-nix": "treefmt-nix"
4135 },
4136 "locked": {
4137 "lastModified": 1689945193,
4138 "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
4139 "owner": "numtide",
4140 "repo": "nixos-anywhere",
4141 "rev": "27161266077a177ac116e2cb72cc70af5f145189",
4142 "type": "github"
4143 },
4144 "original": {
4145 "owner": "numtide",
4146 "repo": "nixos-anywhere",
4147 "type": "github"
4148 }
4149 },
4150 "nixos-anywhere_2": {
4151 "inputs": {
4152 "disko": [
4153 "n-dilion",
4154 "my-lib",
4155 "disko"
4156 ],
4157 "flake-parts": [
4158 "n-dilion",
4159 "my-lib",
4160 "flake-parts"
4161 ],
4162 "nixos-2305": "nixos-2305_2",
4163 "nixos-images": "nixos-images_2",
4164 "nixpkgs": "nixpkgs_14",
4165 "treefmt-nix": "treefmt-nix_2"
4166 },
4167 "locked": {
4168 "lastModified": 1689945193,
4169 "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
4170 "owner": "numtide",
4171 "repo": "nixos-anywhere",
4172 "rev": "27161266077a177ac116e2cb72cc70af5f145189",
4173 "type": "github"
4174 },
4175 "original": {
4176 "owner": "numtide",
4177 "repo": "nixos-anywhere",
4178 "type": "github"
4179 }
4180 },
4181 "nixos-anywhere_3": {
4182 "inputs": {
4183 "disko": [
4184 "n-eldiron",
4185 "my-lib",
4186 "disko"
4187 ],
4188 "flake-parts": [
4189 "n-eldiron",
4190 "my-lib",
4191 "flake-parts"
4192 ],
4193 "nixos-2305": "nixos-2305_3",
4194 "nixos-images": "nixos-images_3",
4195 "nixpkgs": "nixpkgs_21",
4196 "treefmt-nix": "treefmt-nix_3"
4197 },
4198 "locked": {
4199 "lastModified": 1689945193,
4200 "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
4201 "owner": "numtide",
4202 "repo": "nixos-anywhere",
4203 "rev": "27161266077a177ac116e2cb72cc70af5f145189",
4204 "type": "github"
4205 },
4206 "original": {
4207 "owner": "numtide",
4208 "repo": "nixos-anywhere",
4209 "type": "github"
4210 }
4211 },
4212 "nixos-anywhere_4": {
4213 "inputs": {
4214 "disko": [
4215 "n-monitoring-1",
4216 "my-lib",
4217 "disko"
4218 ],
4219 "flake-parts": [
4220 "n-monitoring-1",
4221 "my-lib",
4222 "flake-parts"
4223 ],
4224 "nixos-2305": "nixos-2305_4",
4225 "nixos-images": "nixos-images_4",
4226 "nixpkgs": "nixpkgs_52",
4227 "treefmt-nix": "treefmt-nix_4"
4228 },
4229 "locked": {
4230 "lastModified": 1689945193,
4231 "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
4232 "owner": "numtide",
4233 "repo": "nixos-anywhere",
4234 "rev": "27161266077a177ac116e2cb72cc70af5f145189",
4235 "type": "github"
4236 },
4237 "original": {
4238 "owner": "numtide",
4239 "repo": "nixos-anywhere",
4240 "type": "github"
4241 }
4242 },
4243 "nixos-anywhere_5": {
4244 "inputs": {
4245 "disko": [
4246 "n-quatresaisons",
4247 "my-lib",
4248 "disko"
4249 ],
4250 "flake-parts": [
4251 "n-quatresaisons",
4252 "my-lib",
4253 "flake-parts"
4254 ],
4255 "nixos-2305": "nixos-2305_5",
4256 "nixos-images": "nixos-images_5",
4257 "nixpkgs": "nixpkgs_60",
4258 "treefmt-nix": "treefmt-nix_5"
4259 },
4260 "locked": {
4261 "lastModified": 1689945193,
4262 "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
4263 "owner": "numtide",
4264 "repo": "nixos-anywhere",
4265 "rev": "27161266077a177ac116e2cb72cc70af5f145189",
4266 "type": "github"
4267 },
4268 "original": {
4269 "owner": "numtide",
4270 "repo": "nixos-anywhere",
4271 "type": "github"
4272 }
4273 },
4274 "nixos-anywhere_6": {
4275 "inputs": {
4276 "disko": [
4277 "n-zoldene",
4278 "my-lib",
4279 "disko"
4280 ],
4281 "flake-parts": [
4282 "n-zoldene",
4283 "my-lib",
4284 "flake-parts"
4285 ],
4286 "nixos-2305": "nixos-2305_6",
4287 "nixos-images": "nixos-images_6",
4288 "nixpkgs": "nixpkgs_68",
4289 "treefmt-nix": "treefmt-nix_6"
4290 },
4291 "locked": {
4292 "lastModified": 1689945193,
4293 "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
4294 "owner": "numtide",
4295 "repo": "nixos-anywhere",
4296 "rev": "27161266077a177ac116e2cb72cc70af5f145189",
4297 "type": "github"
4298 },
4299 "original": {
4300 "owner": "numtide",
4301 "repo": "nixos-anywhere",
4302 "type": "github"
4303 }
4304 },
4305 "nixos-anywhere_7": {
4306 "inputs": {
4307 "disko": [
4308 "s-lib",
4309 "disko"
4310 ],
4311 "flake-parts": [
4312 "s-lib",
4313 "flake-parts"
4314 ],
4315 "nixos-2305": "nixos-2305_7",
4316 "nixos-images": "nixos-images_7",
4317 "nixpkgs": "nixpkgs_82",
4318 "treefmt-nix": "treefmt-nix_7"
4319 },
4320 "locked": {
4321 "lastModified": 1689945193,
4322 "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
4323 "owner": "numtide",
4324 "repo": "nixos-anywhere",
4325 "rev": "27161266077a177ac116e2cb72cc70af5f145189",
4326 "type": "github"
4327 },
4328 "original": {
4329 "owner": "numtide",
4330 "repo": "nixos-anywhere",
4331 "type": "github"
4332 }
4333 },
4334 "nixos-images": {
4335 "inputs": {
4336 "nixos-2305": [
4337 "n-backup-2",
4338 "my-lib",
4339 "nixos-anywhere",
4340 "nixos-2305"
4341 ],
4342 "nixos-unstable": [
4343 "n-backup-2",
4344 "my-lib",
4345 "nixos-anywhere",
4346 "nixpkgs"
4347 ]
4348 },
4349 "locked": {
4350 "lastModified": 1686819168,
4351 "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
4352 "owner": "nix-community",
4353 "repo": "nixos-images",
4354 "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
4355 "type": "github"
4356 },
4357 "original": {
4358 "owner": "nix-community",
4359 "repo": "nixos-images",
4360 "type": "github"
4361 }
4362 },
4363 "nixos-images_2": {
4364 "inputs": {
4365 "nixos-2305": [
4366 "n-dilion",
4367 "my-lib",
4368 "nixos-anywhere",
4369 "nixos-2305"
4370 ],
4371 "nixos-unstable": [
4372 "n-dilion",
4373 "my-lib",
4374 "nixos-anywhere",
4375 "nixpkgs"
4376 ]
4377 },
4378 "locked": {
4379 "lastModified": 1686819168,
4380 "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
4381 "owner": "nix-community",
4382 "repo": "nixos-images",
4383 "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
4384 "type": "github"
4385 },
4386 "original": {
4387 "owner": "nix-community",
4388 "repo": "nixos-images",
4389 "type": "github"
4390 }
4391 },
4392 "nixos-images_3": {
4393 "inputs": {
4394 "nixos-2305": [
4395 "n-eldiron",
4396 "my-lib",
4397 "nixos-anywhere",
4398 "nixos-2305"
4399 ],
4400 "nixos-unstable": [
4401 "n-eldiron",
4402 "my-lib",
4403 "nixos-anywhere",
4404 "nixpkgs"
4405 ]
4406 },
4407 "locked": {
4408 "lastModified": 1686819168,
4409 "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
4410 "owner": "nix-community",
4411 "repo": "nixos-images",
4412 "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
4413 "type": "github"
4414 },
4415 "original": {
4416 "owner": "nix-community",
4417 "repo": "nixos-images",
4418 "type": "github"
4419 }
4420 },
4421 "nixos-images_4": {
4422 "inputs": {
4423 "nixos-2305": [
4424 "n-monitoring-1",
4425 "my-lib",
4426 "nixos-anywhere",
4427 "nixos-2305"
4428 ],
4429 "nixos-unstable": [
4430 "n-monitoring-1",
4431 "my-lib",
4432 "nixos-anywhere",
4433 "nixpkgs"
4434 ]
4435 },
4436 "locked": {
4437 "lastModified": 1686819168,
4438 "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
4439 "owner": "nix-community",
4440 "repo": "nixos-images",
4441 "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
4442 "type": "github"
4443 },
4444 "original": {
4445 "owner": "nix-community",
4446 "repo": "nixos-images",
4447 "type": "github"
4448 }
4449 },
4450 "nixos-images_5": {
4451 "inputs": {
4452 "nixos-2305": [
4453 "n-quatresaisons",
4454 "my-lib",
4455 "nixos-anywhere",
4456 "nixos-2305"
4457 ],
4458 "nixos-unstable": [
4459 "n-quatresaisons",
4460 "my-lib",
4461 "nixos-anywhere",
4462 "nixpkgs"
4463 ]
4464 },
4465 "locked": {
4466 "lastModified": 1686819168,
4467 "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
4468 "owner": "nix-community",
4469 "repo": "nixos-images",
4470 "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
4471 "type": "github"
4472 },
4473 "original": {
4474 "owner": "nix-community",
4475 "repo": "nixos-images",
4476 "type": "github"
4477 }
4478 },
4479 "nixos-images_6": {
4480 "inputs": {
4481 "nixos-2305": [
4482 "n-zoldene",
4483 "my-lib",
4484 "nixos-anywhere",
4485 "nixos-2305"
4486 ],
4487 "nixos-unstable": [
4488 "n-zoldene",
4489 "my-lib",
4490 "nixos-anywhere",
4491 "nixpkgs"
4492 ]
4493 },
4494 "locked": {
4495 "lastModified": 1686819168,
4496 "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
4497 "owner": "nix-community",
4498 "repo": "nixos-images",
4499 "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
4500 "type": "github"
4501 },
4502 "original": {
4503 "owner": "nix-community",
4504 "repo": "nixos-images",
4505 "type": "github"
4506 }
4507 },
4508 "nixos-images_7": {
4509 "inputs": {
4510 "nixos-2305": [
4511 "s-lib",
4512 "nixos-anywhere",
4513 "nixos-2305"
4514 ],
4515 "nixos-unstable": [
4516 "s-lib",
4517 "nixos-anywhere",
4518 "nixpkgs"
4519 ]
4520 },
4521 "locked": {
4522 "lastModified": 1686819168,
4523 "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
4524 "owner": "nix-community",
4525 "repo": "nixos-images",
4526 "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
4527 "type": "github"
4528 },
4529 "original": {
4530 "owner": "nix-community",
4531 "repo": "nixos-images",
4532 "type": "github"
4533 }
4534 },
4535 "nixpkgs": {
4536 "locked": {
4537 "lastModified": 1597943282,
4538 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
4539 "owner": "NixOS",
4540 "repo": "nixpkgs",
4541 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
4542 "type": "github"
4543 },
4544 "original": {
4545 "owner": "NixOS",
4546 "repo": "nixpkgs",
4547 "type": "github"
4548 }
4549 },
4550 "nixpkgs-4": {
4551 "flake": false,
4552 "locked": {
4553 "lastModified": 1646497237,
4554 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
4555 "owner": "NixOS",
4556 "repo": "nixpkgs",
4557 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
4558 "type": "github"
4559 },
4560 "original": {
4561 "owner": "NixOS",
4562 "repo": "nixpkgs",
4563 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
4564 "type": "github"
4565 }
4566 },
4567 "nixpkgs-4_2": {
4568 "flake": false,
4569 "locked": {
4570 "lastModified": 1646497237,
4571 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
4572 "owner": "NixOS",
4573 "repo": "nixpkgs",
4574 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
4575 "type": "github"
4576 },
4577 "original": {
4578 "owner": "NixOS",
4579 "repo": "nixpkgs",
4580 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
4581 "type": "github"
4582 }
4583 },
4584 "nixpkgs-4_3": {
4585 "flake": false,
4586 "locked": {
4587 "lastModified": 1646497237,
4588 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
4589 "owner": "NixOS",
4590 "repo": "nixpkgs",
4591 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
4592 "type": "github"
4593 },
4594 "original": {
4595 "owner": "NixOS",
4596 "repo": "nixpkgs",
4597 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
4598 "type": "github"
4599 }
4600 },
4601 "nixpkgs-4_4": {
4602 "flake": false,
4603 "locked": {
4604 "lastModified": 1646497237,
4605 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
4606 "owner": "NixOS",
4607 "repo": "nixpkgs",
4608 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
4609 "type": "github"
4610 },
4611 "original": {
4612 "owner": "NixOS",
4613 "repo": "nixpkgs",
4614 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
4615 "type": "github"
4616 }
4617 },
4618 "nixpkgs-lib": {
4619 "locked": {
4620 "dir": "lib",
4621 "lastModified": 1691269286,
4622 "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
4623 "owner": "NixOS",
4624 "repo": "nixpkgs",
4625 "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
4626 "type": "github"
4627 },
4628 "original": {
4629 "dir": "lib",
4630 "owner": "NixOS",
4631 "repo": "nixpkgs",
4632 "type": "github"
4633 }
4634 },
4635 "nixpkgs-lib_10": {
4636 "locked": {
4637 "dir": "lib",
4638 "lastModified": 1675183161,
4639 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
4640 "owner": "NixOS",
4641 "repo": "nixpkgs",
4642 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
4643 "type": "github"
4644 },
4645 "original": {
4646 "dir": "lib",
4647 "owner": "NixOS",
4648 "ref": "nixos-unstable",
4649 "repo": "nixpkgs",
4650 "type": "github"
4651 }
4652 },
4653 "nixpkgs-lib_11": {
4654 "locked": {
4655 "dir": "lib",
4656 "lastModified": 1675183161,
4657 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
4658 "owner": "NixOS",
4659 "repo": "nixpkgs",
4660 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
4661 "type": "github"
4662 },
4663 "original": {
4664 "dir": "lib",
4665 "owner": "NixOS",
4666 "ref": "nixos-unstable",
4667 "repo": "nixpkgs",
4668 "type": "github"
4669 }
4670 },
4671 "nixpkgs-lib_12": {
4672 "locked": {
4673 "dir": "lib",
4674 "lastModified": 1675183161,
4675 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
4676 "owner": "NixOS",
4677 "repo": "nixpkgs",
4678 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
4679 "type": "github"
4680 },
4681 "original": {
4682 "dir": "lib",
4683 "owner": "NixOS",
4684 "ref": "nixos-unstable",
4685 "repo": "nixpkgs",
4686 "type": "github"
4687 }
4688 },
4689 "nixpkgs-lib_13": {
4690 "locked": {
4691 "dir": "lib",
4692 "lastModified": 1675183161,
4693 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
4694 "owner": "NixOS",
4695 "repo": "nixpkgs",
4696 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
4697 "type": "github"
4698 },
4699 "original": {
4700 "dir": "lib",
4701 "owner": "NixOS",
4702 "ref": "nixos-unstable",
4703 "repo": "nixpkgs",
4704 "type": "github"
4705 }
4706 },
4707 "nixpkgs-lib_14": {
4708 "locked": {
4709 "dir": "lib",
4710 "lastModified": 1691269286,
4711 "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
4712 "owner": "NixOS",
4713 "repo": "nixpkgs",
4714 "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
4715 "type": "github"
4716 },
4717 "original": {
4718 "dir": "lib",
4719 "owner": "NixOS",
4720 "repo": "nixpkgs",
4721 "type": "github"
4722 }
4723 },
4724 "nixpkgs-lib_15": {
4725 "locked": {
4726 "dir": "lib",
4727 "lastModified": 1685564631,
4728 "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
4729 "owner": "NixOS",
4730 "repo": "nixpkgs",
4731 "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
4732 "type": "github"
4733 },
4734 "original": {
4735 "dir": "lib",
4736 "owner": "NixOS",
4737 "ref": "nixos-unstable",
4738 "repo": "nixpkgs",
4739 "type": "github"
4740 }
4741 },
4742 "nixpkgs-lib_16": {
4743 "locked": {
4744 "dir": "lib",
4745 "lastModified": 1675183161,
4746 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
4747 "owner": "NixOS",
4748 "repo": "nixpkgs",
4749 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
4750 "type": "github"
4751 },
4752 "original": {
4753 "dir": "lib",
4754 "owner": "NixOS",
4755 "ref": "nixos-unstable",
4756 "repo": "nixpkgs",
4757 "type": "github"
4758 }
4759 },
4760 "nixpkgs-lib_17": {
4761 "locked": {
4762 "dir": "lib",
4763 "lastModified": 1691269286,
4764 "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
4765 "owner": "NixOS",
4766 "repo": "nixpkgs",
4767 "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
4768 "type": "github"
4769 },
4770 "original": {
4771 "dir": "lib",
4772 "owner": "NixOS",
4773 "repo": "nixpkgs",
4774 "type": "github"
4775 }
4776 },
4777 "nixpkgs-lib_18": {
4778 "locked": {
4779 "dir": "lib",
4780 "lastModified": 1685564631,
4781 "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
4782 "owner": "NixOS",
4783 "repo": "nixpkgs",
4784 "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
4785 "type": "github"
4786 },
4787 "original": {
4788 "dir": "lib",
4789 "owner": "NixOS",
4790 "ref": "nixos-unstable",
4791 "repo": "nixpkgs",
4792 "type": "github"
4793 }
4794 },
4795 "nixpkgs-lib_19": {
4796 "locked": {
4797 "dir": "lib",
4798 "lastModified": 1675183161,
4799 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
4800 "owner": "NixOS",
4801 "repo": "nixpkgs",
4802 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
4803 "type": "github"
4804 },
4805 "original": {
4806 "dir": "lib",
4807 "owner": "NixOS",
4808 "ref": "nixos-unstable",
4809 "repo": "nixpkgs",
4810 "type": "github"
4811 }
4812 },
4813 "nixpkgs-lib_2": {
4814 "locked": {
4815 "dir": "lib",
4816 "lastModified": 1685564631,
4817 "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
4818 "owner": "NixOS",
4819 "repo": "nixpkgs",
4820 "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
4821 "type": "github"
4822 },
4823 "original": {
4824 "dir": "lib",
4825 "owner": "NixOS",
4826 "ref": "nixos-unstable",
4827 "repo": "nixpkgs",
4828 "type": "github"
4829 }
4830 },
4831 "nixpkgs-lib_20": {
4832 "locked": {
4833 "dir": "lib",
4834 "lastModified": 1685564631,
4835 "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
4836 "owner": "NixOS",
4837 "repo": "nixpkgs",
4838 "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
4839 "type": "github"
4840 },
4841 "original": {
4842 "dir": "lib",
4843 "owner": "NixOS",
4844 "ref": "nixos-unstable",
4845 "repo": "nixpkgs",
4846 "type": "github"
4847 }
4848 },
4849 "nixpkgs-lib_21": {
4850 "locked": {
4851 "dir": "lib",
4852 "lastModified": 1675183161,
4853 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
4854 "owner": "NixOS",
4855 "repo": "nixpkgs",
4856 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
4857 "type": "github"
4858 },
4859 "original": {
4860 "dir": "lib",
4861 "owner": "NixOS",
4862 "ref": "nixos-unstable",
4863 "repo": "nixpkgs",
4864 "type": "github"
4865 }
4866 },
4867 "nixpkgs-lib_22": {
4868 "locked": {
4869 "dir": "lib",
4870 "lastModified": 1675183161,
4871 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
4872 "owner": "NixOS",
4873 "repo": "nixpkgs",
4874 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
4875 "type": "github"
4876 },
4877 "original": {
4878 "dir": "lib",
4879 "owner": "NixOS",
4880 "ref": "nixos-unstable",
4881 "repo": "nixpkgs",
4882 "type": "github"
4883 }
4884 },
4885 "nixpkgs-lib_23": {
4886 "locked": {
4887 "dir": "lib",
4888 "lastModified": 1675183161,
4889 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
4890 "owner": "NixOS",
4891 "repo": "nixpkgs",
4892 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
4893 "type": "github"
4894 },
4895 "original": {
4896 "dir": "lib",
4897 "owner": "NixOS",
4898 "ref": "nixos-unstable",
4899 "repo": "nixpkgs",
4900 "type": "github"
4901 }
4902 },
4903 "nixpkgs-lib_24": {
4904 "locked": {
4905 "dir": "lib",
4906 "lastModified": 1685564631,
4907 "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
4908 "owner": "NixOS",
4909 "repo": "nixpkgs",
4910 "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
4911 "type": "github"
4912 },
4913 "original": {
4914 "dir": "lib",
4915 "owner": "NixOS",
4916 "ref": "nixos-unstable",
4917 "repo": "nixpkgs",
4918 "type": "github"
4919 }
4920 },
4921 "nixpkgs-lib_25": {
4922 "locked": {
4923 "dir": "lib",
4924 "lastModified": 1675183161,
4925 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
4926 "owner": "NixOS",
4927 "repo": "nixpkgs",
4928 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
4929 "type": "github"
4930 },
4931 "original": {
4932 "dir": "lib",
4933 "owner": "NixOS",
4934 "ref": "nixos-unstable",
4935 "repo": "nixpkgs",
4936 "type": "github"
4937 }
4938 },
4939 "nixpkgs-lib_26": {
4940 "locked": {
4941 "dir": "lib",
4942 "lastModified": 1691269286,
4943 "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
4944 "owner": "NixOS",
4945 "repo": "nixpkgs",
4946 "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
4947 "type": "github"
4948 },
4949 "original": {
4950 "dir": "lib",
4951 "owner": "NixOS",
4952 "repo": "nixpkgs",
4953 "type": "github"
4954 }
4955 },
4956 "nixpkgs-lib_27": {
4957 "locked": {
4958 "dir": "lib",
4959 "lastModified": 1675183161,
4960 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
4961 "owner": "NixOS",
4962 "repo": "nixpkgs",
4963 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
4964 "type": "github"
4965 },
4966 "original": {
4967 "dir": "lib",
4968 "owner": "NixOS",
4969 "ref": "nixos-unstable",
4970 "repo": "nixpkgs",
4971 "type": "github"
4972 }
4973 },
4974 "nixpkgs-lib_28": {
4975 "locked": {
4976 "dir": "lib",
4977 "lastModified": 1675183161,
4978 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
4979 "owner": "NixOS",
4980 "repo": "nixpkgs",
4981 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
4982 "type": "github"
4983 },
4984 "original": {
4985 "dir": "lib",
4986 "owner": "NixOS",
4987 "ref": "nixos-unstable",
4988 "repo": "nixpkgs",
4989 "type": "github"
4990 }
4991 },
4992 "nixpkgs-lib_3": {
4993 "locked": {
4994 "dir": "lib",
4995 "lastModified": 1675183161,
4996 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
4997 "owner": "NixOS",
4998 "repo": "nixpkgs",
4999 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
5000 "type": "github"
5001 },
5002 "original": {
5003 "dir": "lib",
5004 "owner": "NixOS",
5005 "ref": "nixos-unstable",
5006 "repo": "nixpkgs",
5007 "type": "github"
5008 }
5009 },
5010 "nixpkgs-lib_4": {
5011 "locked": {
5012 "dir": "lib",
5013 "lastModified": 1691269286,
5014 "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
5015 "owner": "NixOS",
5016 "repo": "nixpkgs",
5017 "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
5018 "type": "github"
5019 },
5020 "original": {
5021 "dir": "lib",
5022 "owner": "NixOS",
5023 "repo": "nixpkgs",
5024 "type": "github"
5025 }
5026 },
5027 "nixpkgs-lib_5": {
5028 "locked": {
5029 "dir": "lib",
5030 "lastModified": 1685564631,
5031 "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
5032 "owner": "NixOS",
5033 "repo": "nixpkgs",
5034 "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
5035 "type": "github"
5036 },
5037 "original": {
5038 "dir": "lib",
5039 "owner": "NixOS",
5040 "ref": "nixos-unstable",
5041 "repo": "nixpkgs",
5042 "type": "github"
5043 }
5044 },
5045 "nixpkgs-lib_6": {
5046 "locked": {
5047 "dir": "lib",
5048 "lastModified": 1675183161,
5049 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
5050 "owner": "NixOS",
5051 "repo": "nixpkgs",
5052 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
5053 "type": "github"
5054 },
5055 "original": {
5056 "dir": "lib",
5057 "owner": "NixOS",
5058 "ref": "nixos-unstable",
5059 "repo": "nixpkgs",
5060 "type": "github"
5061 }
5062 },
5063 "nixpkgs-lib_7": {
5064 "locked": {
5065 "dir": "lib",
5066 "lastModified": 1685564631,
5067 "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
5068 "owner": "NixOS",
5069 "repo": "nixpkgs",
5070 "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
5071 "type": "github"
5072 },
5073 "original": {
5074 "dir": "lib",
5075 "owner": "NixOS",
5076 "ref": "nixos-unstable",
5077 "repo": "nixpkgs",
5078 "type": "github"
5079 }
5080 },
5081 "nixpkgs-lib_8": {
5082 "locked": {
5083 "dir": "lib",
5084 "lastModified": 1691269286,
5085 "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
5086 "owner": "NixOS",
5087 "repo": "nixpkgs",
5088 "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
5089 "type": "github"
5090 },
5091 "original": {
5092 "dir": "lib",
5093 "owner": "NixOS",
5094 "repo": "nixpkgs",
5095 "type": "github"
5096 }
5097 },
5098 "nixpkgs-lib_9": {
5099 "locked": {
5100 "dir": "lib",
5101 "lastModified": 1675183161,
5102 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
5103 "owner": "NixOS",
5104 "repo": "nixpkgs",
5105 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
5106 "type": "github"
5107 },
5108 "original": {
5109 "dir": "lib",
5110 "owner": "NixOS",
5111 "ref": "nixos-unstable",
5112 "repo": "nixpkgs",
5113 "type": "github"
5114 }
5115 },
5116 "nixpkgs_10": {
5117 "locked": {
5118 "lastModified": 1687502512,
5119 "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
5120 "owner": "NixOS",
5121 "repo": "nixpkgs",
5122 "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
5123 "type": "github"
5124 },
5125 "original": {
5126 "owner": "NixOS",
5127 "ref": "nixos-unstable",
5128 "repo": "nixpkgs",
5129 "type": "github"
5130 }
5131 },
5132 "nixpkgs_100": {
5133 "locked": {
5134 "lastModified": 1687502512,
5135 "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
5136 "owner": "NixOS",
5137 "repo": "nixpkgs",
5138 "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
5139 "type": "github"
5140 },
5141 "original": {
5142 "owner": "NixOS",
5143 "ref": "nixos-unstable",
5144 "repo": "nixpkgs",
5145 "type": "github"
5146 }
5147 },
5148 "nixpkgs_101": {
5149 "locked": {
5150 "lastModified": 1646497237,
5151 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
5152 "owner": "nixos",
5153 "repo": "nixpkgs",
5154 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5155 "type": "github"
5156 },
5157 "original": {
5158 "owner": "nixos",
5159 "repo": "nixpkgs",
5160 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5161 "type": "github"
5162 }
5163 },
5164 "nixpkgs_102": {
5165 "locked": {
5166 "lastModified": 1646497237,
5167 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
5168 "owner": "nixos",
5169 "repo": "nixpkgs",
5170 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5171 "type": "github"
5172 },
5173 "original": {
5174 "owner": "nixos",
5175 "repo": "nixpkgs",
5176 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5177 "type": "github"
5178 }
5179 },
5180 "nixpkgs_103": {
5181 "flake": false,
5182 "locked": {
5183 "lastModified": 1596265691,
5184 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
5185 "owner": "NixOS",
5186 "repo": "nixpkgs",
5187 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5188 "type": "github"
5189 },
5190 "original": {
5191 "owner": "NixOS",
5192 "repo": "nixpkgs",
5193 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5194 "type": "github"
5195 }
5196 },
5197 "nixpkgs_104": {
5198 "flake": false,
5199 "locked": {
5200 "lastModified": 1596265691,
5201 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
5202 "owner": "NixOS",
5203 "repo": "nixpkgs",
5204 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5205 "type": "github"
5206 },
5207 "original": {
5208 "owner": "NixOS",
5209 "repo": "nixpkgs",
5210 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5211 "type": "github"
5212 }
5213 },
5214 "nixpkgs_11": {
5215 "locked": {
5216 "lastModified": 1646497237,
5217 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
5218 "owner": "nixos",
5219 "repo": "nixpkgs",
5220 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5221 "type": "github"
5222 },
5223 "original": {
5224 "owner": "nixos",
5225 "repo": "nixpkgs",
5226 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5227 "type": "github"
5228 }
5229 },
5230 "nixpkgs_12": {
5231 "locked": {
5232 "lastModified": 1683408522,
5233 "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
5234 "owner": "NixOS",
5235 "repo": "nixpkgs",
5236 "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
5237 "type": "github"
5238 },
5239 "original": {
5240 "owner": "NixOS",
5241 "ref": "nixos-unstable",
5242 "repo": "nixpkgs",
5243 "type": "github"
5244 }
5245 },
5246 "nixpkgs_13": {
5247 "locked": {
5248 "lastModified": 1687701825,
5249 "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
5250 "owner": "NixOS",
5251 "repo": "nixpkgs",
5252 "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
5253 "type": "github"
5254 },
5255 "original": {
5256 "owner": "NixOS",
5257 "ref": "nixpkgs-unstable",
5258 "repo": "nixpkgs",
5259 "type": "github"
5260 }
5261 },
5262 "nixpkgs_14": {
5263 "locked": {
5264 "lastModified": 1687893427,
5265 "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
5266 "owner": "nixos",
5267 "repo": "nixpkgs",
5268 "rev": "4b14ab2a916508442e685089672681dff46805be",
5269 "type": "github"
5270 },
5271 "original": {
5272 "owner": "nixos",
5273 "ref": "nixos-unstable-small",
5274 "repo": "nixpkgs",
5275 "type": "github"
5276 }
5277 },
5278 "nixpkgs_15": {
5279 "locked": {
5280 "lastModified": 1648725829,
5281 "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
5282 "owner": "NixOS",
5283 "repo": "nixpkgs",
5284 "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
5285 "type": "github"
5286 },
5287 "original": {
5288 "owner": "NixOS",
5289 "repo": "nixpkgs",
5290 "type": "github"
5291 }
5292 },
5293 "nixpkgs_16": {
5294 "locked": {
5295 "lastModified": 1693158576,
5296 "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
5297 "owner": "nixos",
5298 "repo": "nixpkgs",
5299 "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
5300 "type": "github"
5301 },
5302 "original": {
5303 "owner": "nixos",
5304 "ref": "nixos-unstable",
5305 "repo": "nixpkgs",
5306 "type": "github"
5307 }
5308 },
5309 "nixpkgs_17": {
5310 "locked": {
5311 "lastModified": 1687502512,
5312 "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
5313 "owner": "NixOS",
5314 "repo": "nixpkgs",
5315 "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
5316 "type": "github"
5317 },
5318 "original": {
5319 "owner": "NixOS",
5320 "ref": "nixos-unstable",
5321 "repo": "nixpkgs",
5322 "type": "github"
5323 }
5324 },
5325 "nixpkgs_18": {
5326 "locked": {
5327 "lastModified": 1646497237,
5328 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
5329 "owner": "nixos",
5330 "repo": "nixpkgs",
5331 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5332 "type": "github"
5333 },
5334 "original": {
5335 "owner": "nixos",
5336 "repo": "nixpkgs",
5337 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5338 "type": "github"
5339 }
5340 },
5341 "nixpkgs_19": {
5342 "locked": {
5343 "lastModified": 1683408522,
5344 "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
5345 "owner": "NixOS",
5346 "repo": "nixpkgs",
5347 "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
5348 "type": "github"
5349 },
5350 "original": {
5351 "owner": "NixOS",
5352 "ref": "nixos-unstable",
5353 "repo": "nixpkgs",
5354 "type": "github"
5355 }
5356 },
5357 "nixpkgs_2": {
5358 "locked": {
5359 "lastModified": 1597943282,
5360 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
5361 "owner": "NixOS",
5362 "repo": "nixpkgs",
5363 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
5364 "type": "github"
5365 },
5366 "original": {
5367 "owner": "NixOS",
5368 "repo": "nixpkgs",
5369 "type": "github"
5370 }
5371 },
5372 "nixpkgs_20": {
5373 "locked": {
5374 "lastModified": 1687701825,
5375 "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
5376 "owner": "NixOS",
5377 "repo": "nixpkgs",
5378 "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
5379 "type": "github"
5380 },
5381 "original": {
5382 "owner": "NixOS",
5383 "ref": "nixpkgs-unstable",
5384 "repo": "nixpkgs",
5385 "type": "github"
5386 }
5387 },
5388 "nixpkgs_21": {
5389 "locked": {
5390 "lastModified": 1687893427,
5391 "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
5392 "owner": "nixos",
5393 "repo": "nixpkgs",
5394 "rev": "4b14ab2a916508442e685089672681dff46805be",
5395 "type": "github"
5396 },
5397 "original": {
5398 "owner": "nixos",
5399 "ref": "nixos-unstable-small",
5400 "repo": "nixpkgs",
5401 "type": "github"
5402 }
5403 },
5404 "nixpkgs_22": {
5405 "locked": {
5406 "lastModified": 1648725829,
5407 "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
5408 "owner": "NixOS",
5409 "repo": "nixpkgs",
5410 "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
5411 "type": "github"
5412 },
5413 "original": {
5414 "owner": "NixOS",
5415 "repo": "nixpkgs",
5416 "type": "github"
5417 }
5418 },
5419 "nixpkgs_23": {
5420 "locked": {
5421 "lastModified": 1693158576,
5422 "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
5423 "owner": "nixos",
5424 "repo": "nixpkgs",
5425 "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
5426 "type": "github"
5427 },
5428 "original": {
5429 "owner": "nixos",
5430 "ref": "nixos-unstable",
5431 "repo": "nixpkgs",
5432 "type": "github"
5433 }
5434 },
5435 "nixpkgs_24": {
5436 "flake": false,
5437 "locked": {
5438 "lastModified": 1596265691,
5439 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
5440 "owner": "NixOS",
5441 "repo": "nixpkgs",
5442 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5443 "type": "github"
5444 },
5445 "original": {
5446 "owner": "NixOS",
5447 "repo": "nixpkgs",
5448 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5449 "type": "github"
5450 }
5451 },
5452 "nixpkgs_25": {
5453 "locked": {
5454 "lastModified": 1597943282,
5455 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
5456 "owner": "NixOS",
5457 "repo": "nixpkgs",
5458 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
5459 "type": "github"
5460 },
5461 "original": {
5462 "owner": "NixOS",
5463 "repo": "nixpkgs",
5464 "type": "github"
5465 }
5466 },
5467 "nixpkgs_26": {
5468 "locked": {
5469 "lastModified": 1597943282,
5470 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
5471 "owner": "NixOS",
5472 "repo": "nixpkgs",
5473 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
5474 "type": "github"
5475 },
5476 "original": {
5477 "owner": "NixOS",
5478 "repo": "nixpkgs",
5479 "type": "github"
5480 }
5481 },
5482 "nixpkgs_27": {
5483 "locked": {
5484 "lastModified": 1597943282,
5485 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
5486 "owner": "NixOS",
5487 "repo": "nixpkgs",
5488 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
5489 "type": "github"
5490 },
5491 "original": {
5492 "owner": "NixOS",
5493 "repo": "nixpkgs",
5494 "type": "github"
5495 }
5496 },
5497 "nixpkgs_28": {
5498 "locked": {
5499 "lastModified": 1597943282,
5500 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
5501 "owner": "NixOS",
5502 "repo": "nixpkgs",
5503 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
5504 "type": "github"
5505 },
5506 "original": {
5507 "owner": "NixOS",
5508 "repo": "nixpkgs",
5509 "type": "github"
5510 }
5511 },
5512 "nixpkgs_29": {
5513 "locked": {
5514 "lastModified": 1631570365,
5515 "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
5516 "owner": "NixOS",
5517 "repo": "nixpkgs",
5518 "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
5519 "type": "github"
5520 },
5521 "original": {
5522 "owner": "NixOS",
5523 "repo": "nixpkgs",
5524 "type": "github"
5525 }
5526 },
5527 "nixpkgs_3": {
5528 "locked": {
5529 "lastModified": 1683408522,
5530 "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
5531 "owner": "NixOS",
5532 "repo": "nixpkgs",
5533 "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
5534 "type": "github"
5535 },
5536 "original": {
5537 "owner": "NixOS",
5538 "ref": "nixos-unstable",
5539 "repo": "nixpkgs",
5540 "type": "github"
5541 }
5542 },
5543 "nixpkgs_30": {
5544 "locked": {
5545 "lastModified": 1611097871,
5546 "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
5547 "owner": "NixOS",
5548 "repo": "nixpkgs",
5549 "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
5550 "type": "github"
5551 },
5552 "original": {
5553 "owner": "NixOS",
5554 "repo": "nixpkgs",
5555 "type": "github"
5556 }
5557 },
5558 "nixpkgs_31": {
5559 "locked": {
5560 "lastModified": 1611097871,
5561 "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
5562 "owner": "NixOS",
5563 "repo": "nixpkgs",
5564 "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
5565 "type": "github"
5566 },
5567 "original": {
5568 "owner": "NixOS",
5569 "repo": "nixpkgs",
5570 "type": "github"
5571 }
5572 },
5573 "nixpkgs_32": {
5574 "flake": false,
5575 "locked": {
5576 "lastModified": 1596265691,
5577 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
5578 "owner": "NixOS",
5579 "repo": "nixpkgs",
5580 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5581 "type": "github"
5582 },
5583 "original": {
5584 "owner": "NixOS",
5585 "repo": "nixpkgs",
5586 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5587 "type": "github"
5588 }
5589 },
5590 "nixpkgs_33": {
5591 "locked": {
5592 "lastModified": 1687502512,
5593 "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
5594 "owner": "NixOS",
5595 "repo": "nixpkgs",
5596 "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
5597 "type": "github"
5598 },
5599 "original": {
5600 "owner": "NixOS",
5601 "ref": "nixos-unstable",
5602 "repo": "nixpkgs",
5603 "type": "github"
5604 }
5605 },
5606 "nixpkgs_34": {
5607 "locked": {
5608 "lastModified": 1646497237,
5609 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
5610 "owner": "nixos",
5611 "repo": "nixpkgs",
5612 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5613 "type": "github"
5614 },
5615 "original": {
5616 "owner": "nixos",
5617 "repo": "nixpkgs",
5618 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5619 "type": "github"
5620 }
5621 },
5622 "nixpkgs_35": {
5623 "locked": {
5624 "lastModified": 1633901457,
5625 "narHash": "sha256-GNJLwKENqEA4xlzkWI76VLHBAua4LUIlTeeiH4FR7Gc=",
5626 "owner": "NixOS",
5627 "repo": "nixpkgs",
5628 "rev": "f358794824b4595d77fec93732485d329ed7b0e0",
5629 "type": "github"
5630 },
5631 "original": {
5632 "owner": "NixOS",
5633 "repo": "nixpkgs",
5634 "type": "github"
5635 }
5636 },
5637 "nixpkgs_36": {
5638 "flake": false,
5639 "locked": {
5640 "lastModified": 1596265691,
5641 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
5642 "owner": "NixOS",
5643 "repo": "nixpkgs",
5644 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5645 "type": "github"
5646 },
5647 "original": {
5648 "owner": "NixOS",
5649 "repo": "nixpkgs",
5650 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5651 "type": "github"
5652 }
5653 },
5654 "nixpkgs_37": {
5655 "locked": {
5656 "lastModified": 1646497237,
5657 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
5658 "owner": "nixos",
5659 "repo": "nixpkgs",
5660 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5661 "type": "github"
5662 },
5663 "original": {
5664 "owner": "nixos",
5665 "repo": "nixpkgs",
5666 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5667 "type": "github"
5668 }
5669 },
5670 "nixpkgs_38": {
5671 "flake": false,
5672 "locked": {
5673 "lastModified": 1596265691,
5674 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
5675 "owner": "NixOS",
5676 "repo": "nixpkgs",
5677 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5678 "type": "github"
5679 },
5680 "original": {
5681 "owner": "NixOS",
5682 "repo": "nixpkgs",
5683 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5684 "type": "github"
5685 }
5686 },
5687 "nixpkgs_39": {
5688 "locked": {
5689 "lastModified": 1646497237,
5690 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
5691 "owner": "nixos",
5692 "repo": "nixpkgs",
5693 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5694 "type": "github"
5695 },
5696 "original": {
5697 "owner": "nixos",
5698 "repo": "nixpkgs",
5699 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5700 "type": "github"
5701 }
5702 },
5703 "nixpkgs_4": {
5704 "locked": {
5705 "lastModified": 1687701825,
5706 "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
5707 "owner": "NixOS",
5708 "repo": "nixpkgs",
5709 "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
5710 "type": "github"
5711 },
5712 "original": {
5713 "owner": "NixOS",
5714 "ref": "nixpkgs-unstable",
5715 "repo": "nixpkgs",
5716 "type": "github"
5717 }
5718 },
5719 "nixpkgs_40": {
5720 "flake": false,
5721 "locked": {
5722 "lastModified": 1596265691,
5723 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
5724 "owner": "NixOS",
5725 "repo": "nixpkgs",
5726 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5727 "type": "github"
5728 },
5729 "original": {
5730 "owner": "NixOS",
5731 "repo": "nixpkgs",
5732 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5733 "type": "github"
5734 }
5735 },
5736 "nixpkgs_41": {
5737 "flake": false,
5738 "locked": {
5739 "lastModified": 1596265691,
5740 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
5741 "owner": "NixOS",
5742 "repo": "nixpkgs",
5743 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5744 "type": "github"
5745 },
5746 "original": {
5747 "owner": "NixOS",
5748 "repo": "nixpkgs",
5749 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5750 "type": "github"
5751 }
5752 },
5753 "nixpkgs_42": {
5754 "flake": false,
5755 "locked": {
5756 "lastModified": 1596265691,
5757 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
5758 "owner": "NixOS",
5759 "repo": "nixpkgs",
5760 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5761 "type": "github"
5762 },
5763 "original": {
5764 "owner": "NixOS",
5765 "repo": "nixpkgs",
5766 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5767 "type": "github"
5768 }
5769 },
5770 "nixpkgs_43": {
5771 "locked": {
5772 "lastModified": 1646497237,
5773 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
5774 "owner": "nixos",
5775 "repo": "nixpkgs",
5776 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5777 "type": "github"
5778 },
5779 "original": {
5780 "owner": "nixos",
5781 "repo": "nixpkgs",
5782 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5783 "type": "github"
5784 }
5785 },
5786 "nixpkgs_44": {
5787 "locked": {
5788 "lastModified": 1597943282,
5789 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
5790 "owner": "NixOS",
5791 "repo": "nixpkgs",
5792 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
5793 "type": "github"
5794 },
5795 "original": {
5796 "owner": "NixOS",
5797 "repo": "nixpkgs",
5798 "type": "github"
5799 }
5800 },
5801 "nixpkgs_45": {
5802 "locked": {
5803 "lastModified": 1597943282,
5804 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
5805 "owner": "NixOS",
5806 "repo": "nixpkgs",
5807 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
5808 "type": "github"
5809 },
5810 "original": {
5811 "owner": "NixOS",
5812 "repo": "nixpkgs",
5813 "type": "github"
5814 }
5815 },
5816 "nixpkgs_46": {
5817 "locked": {
5818 "lastModified": 1611097871,
5819 "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
5820 "owner": "NixOS",
5821 "repo": "nixpkgs",
5822 "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
5823 "type": "github"
5824 },
5825 "original": {
5826 "owner": "NixOS",
5827 "repo": "nixpkgs",
5828 "type": "github"
5829 }
5830 },
5831 "nixpkgs_47": {
5832 "locked": {
5833 "lastModified": 1646497237,
5834 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
5835 "owner": "nixos",
5836 "repo": "nixpkgs",
5837 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5838 "type": "github"
5839 },
5840 "original": {
5841 "owner": "nixos",
5842 "repo": "nixpkgs",
5843 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
5844 "type": "github"
5845 }
5846 },
5847 "nixpkgs_48": {
5848 "flake": false,
5849 "locked": {
5850 "lastModified": 1596265691,
5851 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
5852 "owner": "NixOS",
5853 "repo": "nixpkgs",
5854 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5855 "type": "github"
5856 },
5857 "original": {
5858 "owner": "NixOS",
5859 "repo": "nixpkgs",
5860 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5861 "type": "github"
5862 }
5863 },
5864 "nixpkgs_49": {
5865 "flake": false,
5866 "locked": {
5867 "lastModified": 1596265691,
5868 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
5869 "owner": "NixOS",
5870 "repo": "nixpkgs",
5871 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5872 "type": "github"
5873 },
5874 "original": {
5875 "owner": "NixOS",
5876 "repo": "nixpkgs",
5877 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5878 "type": "github"
5879 }
5880 },
5881 "nixpkgs_5": {
5882 "locked": {
5883 "lastModified": 1687893427,
5884 "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
5885 "owner": "nixos",
5886 "repo": "nixpkgs",
5887 "rev": "4b14ab2a916508442e685089672681dff46805be",
5888 "type": "github"
5889 },
5890 "original": {
5891 "owner": "nixos",
5892 "ref": "nixos-unstable-small",
5893 "repo": "nixpkgs",
5894 "type": "github"
5895 }
5896 },
5897 "nixpkgs_50": {
5898 "locked": {
5899 "lastModified": 1683408522,
5900 "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
5901 "owner": "NixOS",
5902 "repo": "nixpkgs",
5903 "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
5904 "type": "github"
5905 },
5906 "original": {
5907 "owner": "NixOS",
5908 "ref": "nixos-unstable",
5909 "repo": "nixpkgs",
5910 "type": "github"
5911 }
5912 },
5913 "nixpkgs_51": {
5914 "locked": {
5915 "lastModified": 1687701825,
5916 "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
5917 "owner": "NixOS",
5918 "repo": "nixpkgs",
5919 "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
5920 "type": "github"
5921 },
5922 "original": {
5923 "owner": "NixOS",
5924 "ref": "nixpkgs-unstable",
5925 "repo": "nixpkgs",
5926 "type": "github"
5927 }
5928 },
5929 "nixpkgs_52": {
5930 "locked": {
5931 "lastModified": 1687893427,
5932 "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
5933 "owner": "nixos",
5934 "repo": "nixpkgs",
5935 "rev": "4b14ab2a916508442e685089672681dff46805be",
5936 "type": "github"
5937 },
5938 "original": {
5939 "owner": "nixos",
5940 "ref": "nixos-unstable-small",
5941 "repo": "nixpkgs",
5942 "type": "github"
5943 }
5944 },
5945 "nixpkgs_53": {
5946 "locked": {
5947 "lastModified": 1648725829,
5948 "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
5949 "owner": "NixOS",
5950 "repo": "nixpkgs",
5951 "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
5952 "type": "github"
5953 },
5954 "original": {
5955 "owner": "NixOS",
5956 "repo": "nixpkgs",
5957 "type": "github"
5958 }
5959 },
5960 "nixpkgs_54": {
5961 "locked": {
5962 "lastModified": 1693158576,
5963 "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
5964 "owner": "nixos",
5965 "repo": "nixpkgs",
5966 "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
5967 "type": "github"
5968 },
5969 "original": {
5970 "owner": "nixos",
5971 "ref": "nixos-unstable",
5972 "repo": "nixpkgs",
5973 "type": "github"
5974 }
5975 },
5976 "nixpkgs_55": {
5977 "flake": false,
5978 "locked": {
5979 "lastModified": 1596265691,
5980 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
5981 "owner": "NixOS",
5982 "repo": "nixpkgs",
5983 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5984 "type": "github"
5985 },
5986 "original": {
5987 "owner": "NixOS",
5988 "repo": "nixpkgs",
5989 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
5990 "type": "github"
5991 }
5992 },
5993 "nixpkgs_56": {
5994 "locked": {
5995 "lastModified": 1687502512,
5996 "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
5997 "owner": "NixOS",
5998 "repo": "nixpkgs",
5999 "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
6000 "type": "github"
6001 },
6002 "original": {
6003 "owner": "NixOS",
6004 "ref": "nixos-unstable",
6005 "repo": "nixpkgs",
6006 "type": "github"
6007 }
6008 },
6009 "nixpkgs_57": {
6010 "locked": {
6011 "lastModified": 1646497237,
6012 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
6013 "owner": "nixos",
6014 "repo": "nixpkgs",
6015 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
6016 "type": "github"
6017 },
6018 "original": {
6019 "owner": "nixos",
6020 "repo": "nixpkgs",
6021 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
6022 "type": "github"
6023 }
6024 },
6025 "nixpkgs_58": {
6026 "locked": {
6027 "lastModified": 1683408522,
6028 "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
6029 "owner": "NixOS",
6030 "repo": "nixpkgs",
6031 "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
6032 "type": "github"
6033 },
6034 "original": {
6035 "owner": "NixOS",
6036 "ref": "nixos-unstable",
6037 "repo": "nixpkgs",
6038 "type": "github"
6039 }
6040 },
6041 "nixpkgs_59": {
6042 "locked": {
6043 "lastModified": 1687701825,
6044 "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
6045 "owner": "NixOS",
6046 "repo": "nixpkgs",
6047 "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
6048 "type": "github"
6049 },
6050 "original": {
6051 "owner": "NixOS",
6052 "ref": "nixpkgs-unstable",
6053 "repo": "nixpkgs",
6054 "type": "github"
6055 }
6056 },
6057 "nixpkgs_6": {
6058 "locked": {
6059 "lastModified": 1648725829,
6060 "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
6061 "owner": "NixOS",
6062 "repo": "nixpkgs",
6063 "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
6064 "type": "github"
6065 },
6066 "original": {
6067 "owner": "NixOS",
6068 "repo": "nixpkgs",
6069 "type": "github"
6070 }
6071 },
6072 "nixpkgs_60": {
6073 "locked": {
6074 "lastModified": 1687893427,
6075 "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
6076 "owner": "nixos",
6077 "repo": "nixpkgs",
6078 "rev": "4b14ab2a916508442e685089672681dff46805be",
6079 "type": "github"
6080 },
6081 "original": {
6082 "owner": "nixos",
6083 "ref": "nixos-unstable-small",
6084 "repo": "nixpkgs",
6085 "type": "github"
6086 }
6087 },
6088 "nixpkgs_61": {
6089 "locked": {
6090 "lastModified": 1648725829,
6091 "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
6092 "owner": "NixOS",
6093 "repo": "nixpkgs",
6094 "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
6095 "type": "github"
6096 },
6097 "original": {
6098 "owner": "NixOS",
6099 "repo": "nixpkgs",
6100 "type": "github"
6101 }
6102 },
6103 "nixpkgs_62": {
6104 "locked": {
6105 "lastModified": 1693158576,
6106 "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
6107 "owner": "nixos",
6108 "repo": "nixpkgs",
6109 "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
6110 "type": "github"
6111 },
6112 "original": {
6113 "owner": "nixos",
6114 "ref": "nixos-unstable",
6115 "repo": "nixpkgs",
6116 "type": "github"
6117 }
6118 },
6119 "nixpkgs_63": {
6120 "flake": false,
6121 "locked": {
6122 "lastModified": 1596265691,
6123 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
6124 "owner": "NixOS",
6125 "repo": "nixpkgs",
6126 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6127 "type": "github"
6128 },
6129 "original": {
6130 "owner": "NixOS",
6131 "repo": "nixpkgs",
6132 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6133 "type": "github"
6134 }
6135 },
6136 "nixpkgs_64": {
6137 "locked": {
6138 "lastModified": 1687502512,
6139 "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
6140 "owner": "NixOS",
6141 "repo": "nixpkgs",
6142 "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
6143 "type": "github"
6144 },
6145 "original": {
6146 "owner": "NixOS",
6147 "ref": "nixos-unstable",
6148 "repo": "nixpkgs",
6149 "type": "github"
6150 }
6151 },
6152 "nixpkgs_65": {
6153 "locked": {
6154 "lastModified": 1646497237,
6155 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
6156 "owner": "nixos",
6157 "repo": "nixpkgs",
6158 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
6159 "type": "github"
6160 },
6161 "original": {
6162 "owner": "nixos",
6163 "repo": "nixpkgs",
6164 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
6165 "type": "github"
6166 }
6167 },
6168 "nixpkgs_66": {
6169 "locked": {
6170 "lastModified": 1683408522,
6171 "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
6172 "owner": "NixOS",
6173 "repo": "nixpkgs",
6174 "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
6175 "type": "github"
6176 },
6177 "original": {
6178 "owner": "NixOS",
6179 "ref": "nixos-unstable",
6180 "repo": "nixpkgs",
6181 "type": "github"
6182 }
6183 },
6184 "nixpkgs_67": {
6185 "locked": {
6186 "lastModified": 1687701825,
6187 "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
6188 "owner": "NixOS",
6189 "repo": "nixpkgs",
6190 "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
6191 "type": "github"
6192 },
6193 "original": {
6194 "owner": "NixOS",
6195 "ref": "nixpkgs-unstable",
6196 "repo": "nixpkgs",
6197 "type": "github"
6198 }
6199 },
6200 "nixpkgs_68": {
6201 "locked": {
6202 "lastModified": 1687893427,
6203 "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
6204 "owner": "nixos",
6205 "repo": "nixpkgs",
6206 "rev": "4b14ab2a916508442e685089672681dff46805be",
6207 "type": "github"
6208 },
6209 "original": {
6210 "owner": "nixos",
6211 "ref": "nixos-unstable-small",
6212 "repo": "nixpkgs",
6213 "type": "github"
6214 }
6215 },
6216 "nixpkgs_69": {
6217 "locked": {
6218 "lastModified": 1648725829,
6219 "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
6220 "owner": "NixOS",
6221 "repo": "nixpkgs",
6222 "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
6223 "type": "github"
6224 },
6225 "original": {
6226 "owner": "NixOS",
6227 "repo": "nixpkgs",
6228 "type": "github"
6229 }
6230 },
6231 "nixpkgs_7": {
6232 "locked": {
6233 "lastModified": 1693158576,
6234 "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
6235 "owner": "nixos",
6236 "repo": "nixpkgs",
6237 "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
6238 "type": "github"
6239 },
6240 "original": {
6241 "owner": "nixos",
6242 "ref": "nixos-unstable",
6243 "repo": "nixpkgs",
6244 "type": "github"
6245 }
6246 },
6247 "nixpkgs_70": {
6248 "locked": {
6249 "lastModified": 1693158576,
6250 "narHash": "sha256-aRTTXkYvhXosGx535iAFUaoFboUrZSYb1Ooih/auGp0=",
6251 "owner": "nixos",
6252 "repo": "nixpkgs",
6253 "rev": "a999c1cc0c9eb2095729d5aa03e0d8f7ed256780",
6254 "type": "github"
6255 },
6256 "original": {
6257 "owner": "NixOS",
6258 "ref": "nixos-unstable",
6259 "repo": "nixpkgs",
6260 "type": "github"
6261 }
6262 },
6263 "nixpkgs_71": {
6264 "locked": {
6265 "lastModified": 1687502512,
6266 "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
6267 "owner": "NixOS",
6268 "repo": "nixpkgs",
6269 "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
6270 "type": "github"
6271 },
6272 "original": {
6273 "owner": "NixOS",
6274 "ref": "nixos-unstable",
6275 "repo": "nixpkgs",
6276 "type": "github"
6277 }
6278 },
6279 "nixpkgs_72": {
6280 "locked": {
6281 "lastModified": 1646497237,
6282 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
6283 "owner": "nixos",
6284 "repo": "nixpkgs",
6285 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
6286 "type": "github"
6287 },
6288 "original": {
6289 "owner": "nixos",
6290 "repo": "nixpkgs",
6291 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
6292 "type": "github"
6293 }
6294 },
6295 "nixpkgs_73": {
6296 "locked": {
6297 "lastModified": 1687502512,
6298 "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
6299 "owner": "NixOS",
6300 "repo": "nixpkgs",
6301 "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
6302 "type": "github"
6303 },
6304 "original": {
6305 "owner": "NixOS",
6306 "ref": "nixos-unstable",
6307 "repo": "nixpkgs",
6308 "type": "github"
6309 }
6310 },
6311 "nixpkgs_74": {
6312 "locked": {
6313 "lastModified": 1633901457,
6314 "narHash": "sha256-GNJLwKENqEA4xlzkWI76VLHBAua4LUIlTeeiH4FR7Gc=",
6315 "owner": "NixOS",
6316 "repo": "nixpkgs",
6317 "rev": "f358794824b4595d77fec93732485d329ed7b0e0",
6318 "type": "github"
6319 },
6320 "original": {
6321 "owner": "NixOS",
6322 "repo": "nixpkgs",
6323 "type": "github"
6324 }
6325 },
6326 "nixpkgs_75": {
6327 "flake": false,
6328 "locked": {
6329 "lastModified": 1596265691,
6330 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
6331 "owner": "NixOS",
6332 "repo": "nixpkgs",
6333 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6334 "type": "github"
6335 },
6336 "original": {
6337 "owner": "NixOS",
6338 "repo": "nixpkgs",
6339 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6340 "type": "github"
6341 }
6342 },
6343 "nixpkgs_76": {
6344 "locked": {
6345 "lastModified": 1646497237,
6346 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
6347 "owner": "nixos",
6348 "repo": "nixpkgs",
6349 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
6350 "type": "github"
6351 },
6352 "original": {
6353 "owner": "nixos",
6354 "repo": "nixpkgs",
6355 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
6356 "type": "github"
6357 }
6358 },
6359 "nixpkgs_77": {
6360 "flake": false,
6361 "locked": {
6362 "lastModified": 1596265691,
6363 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
6364 "owner": "NixOS",
6365 "repo": "nixpkgs",
6366 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6367 "type": "github"
6368 },
6369 "original": {
6370 "owner": "NixOS",
6371 "repo": "nixpkgs",
6372 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6373 "type": "github"
6374 }
6375 },
6376 "nixpkgs_78": {
6377 "locked": {
6378 "lastModified": 1646497237,
6379 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
6380 "owner": "nixos",
6381 "repo": "nixpkgs",
6382 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
6383 "type": "github"
6384 },
6385 "original": {
6386 "owner": "nixos",
6387 "repo": "nixpkgs",
6388 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
6389 "type": "github"
6390 }
6391 },
6392 "nixpkgs_79": {
6393 "flake": false,
6394 "locked": {
6395 "lastModified": 1596265691,
6396 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
6397 "owner": "NixOS",
6398 "repo": "nixpkgs",
6399 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6400 "type": "github"
6401 },
6402 "original": {
6403 "owner": "NixOS",
6404 "repo": "nixpkgs",
6405 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6406 "type": "github"
6407 }
6408 },
6409 "nixpkgs_8": {
6410 "locked": {
6411 "lastModified": 1597943282,
6412 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
6413 "owner": "NixOS",
6414 "repo": "nixpkgs",
6415 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
6416 "type": "github"
6417 },
6418 "original": {
6419 "owner": "NixOS",
6420 "repo": "nixpkgs",
6421 "type": "github"
6422 }
6423 },
6424 "nixpkgs_80": {
6425 "locked": {
6426 "lastModified": 1683408522,
6427 "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
6428 "owner": "NixOS",
6429 "repo": "nixpkgs",
6430 "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
6431 "type": "github"
6432 },
6433 "original": {
6434 "owner": "NixOS",
6435 "ref": "nixos-unstable",
6436 "repo": "nixpkgs",
6437 "type": "github"
6438 }
6439 },
6440 "nixpkgs_81": {
6441 "locked": {
6442 "lastModified": 1687701825,
6443 "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
6444 "owner": "NixOS",
6445 "repo": "nixpkgs",
6446 "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
6447 "type": "github"
6448 },
6449 "original": {
6450 "owner": "NixOS",
6451 "ref": "nixpkgs-unstable",
6452 "repo": "nixpkgs",
6453 "type": "github"
6454 }
6455 },
6456 "nixpkgs_82": {
6457 "locked": {
6458 "lastModified": 1687893427,
6459 "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
6460 "owner": "nixos",
6461 "repo": "nixpkgs",
6462 "rev": "4b14ab2a916508442e685089672681dff46805be",
6463 "type": "github"
6464 },
6465 "original": {
6466 "owner": "nixos",
6467 "ref": "nixos-unstable-small",
6468 "repo": "nixpkgs",
6469 "type": "github"
6470 }
6471 },
6472 "nixpkgs_83": {
6473 "locked": {
6474 "lastModified": 1648725829,
6475 "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
6476 "owner": "NixOS",
6477 "repo": "nixpkgs",
6478 "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
6479 "type": "github"
6480 },
6481 "original": {
6482 "owner": "NixOS",
6483 "repo": "nixpkgs",
6484 "type": "github"
6485 }
6486 },
6487 "nixpkgs_84": {
6488 "flake": false,
6489 "locked": {
6490 "lastModified": 1596265691,
6491 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
6492 "owner": "NixOS",
6493 "repo": "nixpkgs",
6494 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6495 "type": "github"
6496 },
6497 "original": {
6498 "owner": "NixOS",
6499 "repo": "nixpkgs",
6500 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6501 "type": "github"
6502 }
6503 },
6504 "nixpkgs_85": {
6505 "flake": false,
6506 "locked": {
6507 "lastModified": 1596265691,
6508 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
6509 "owner": "NixOS",
6510 "repo": "nixpkgs",
6511 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6512 "type": "github"
6513 },
6514 "original": {
6515 "owner": "NixOS",
6516 "repo": "nixpkgs",
6517 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6518 "type": "github"
6519 }
6520 },
6521 "nixpkgs_86": {
6522 "locked": {
6523 "lastModified": 1646497237,
6524 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
6525 "owner": "nixos",
6526 "repo": "nixpkgs",
6527 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
6528 "type": "github"
6529 },
6530 "original": {
6531 "owner": "nixos",
6532 "repo": "nixpkgs",
6533 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
6534 "type": "github"
6535 }
6536 },
6537 "nixpkgs_87": {
6538 "locked": {
6539 "lastModified": 1597943282,
6540 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
6541 "owner": "NixOS",
6542 "repo": "nixpkgs",
6543 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
6544 "type": "github"
6545 },
6546 "original": {
6547 "owner": "NixOS",
6548 "repo": "nixpkgs",
6549 "type": "github"
6550 }
6551 },
6552 "nixpkgs_88": {
6553 "locked": {
6554 "lastModified": 1597943282,
6555 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
6556 "owner": "NixOS",
6557 "repo": "nixpkgs",
6558 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
6559 "type": "github"
6560 },
6561 "original": {
6562 "owner": "NixOS",
6563 "repo": "nixpkgs",
6564 "type": "github"
6565 }
6566 },
6567 "nixpkgs_89": {
6568 "locked": {
6569 "lastModified": 1631570365,
6570 "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
6571 "owner": "NixOS",
6572 "repo": "nixpkgs",
6573 "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
6574 "type": "github"
6575 },
6576 "original": {
6577 "owner": "NixOS",
6578 "repo": "nixpkgs",
6579 "type": "github"
6580 }
6581 },
6582 "nixpkgs_9": {
6583 "locked": {
6584 "lastModified": 1597943282,
6585 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
6586 "owner": "NixOS",
6587 "repo": "nixpkgs",
6588 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
6589 "type": "github"
6590 },
6591 "original": {
6592 "owner": "NixOS",
6593 "repo": "nixpkgs",
6594 "type": "github"
6595 }
6596 },
6597 "nixpkgs_90": {
6598 "locked": {
6599 "lastModified": 1611097871,
6600 "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
6601 "owner": "NixOS",
6602 "repo": "nixpkgs",
6603 "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
6604 "type": "github"
6605 },
6606 "original": {
6607 "owner": "NixOS",
6608 "repo": "nixpkgs",
6609 "type": "github"
6610 }
6611 },
6612 "nixpkgs_91": {
6613 "flake": false,
6614 "locked": {
6615 "lastModified": 1596265691,
6616 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
6617 "owner": "NixOS",
6618 "repo": "nixpkgs",
6619 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6620 "type": "github"
6621 },
6622 "original": {
6623 "owner": "NixOS",
6624 "repo": "nixpkgs",
6625 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6626 "type": "github"
6627 }
6628 },
6629 "nixpkgs_92": {
6630 "locked": {
6631 "lastModified": 1597943282,
6632 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
6633 "owner": "NixOS",
6634 "repo": "nixpkgs",
6635 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
6636 "type": "github"
6637 },
6638 "original": {
6639 "owner": "NixOS",
6640 "repo": "nixpkgs",
6641 "type": "github"
6642 }
6643 },
6644 "nixpkgs_93": {
6645 "locked": {
6646 "lastModified": 1597943282,
6647 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
6648 "owner": "NixOS",
6649 "repo": "nixpkgs",
6650 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
6651 "type": "github"
6652 },
6653 "original": {
6654 "owner": "NixOS",
6655 "repo": "nixpkgs",
6656 "type": "github"
6657 }
6658 },
6659 "nixpkgs_94": {
6660 "locked": {
6661 "lastModified": 1597943282,
6662 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
6663 "owner": "NixOS",
6664 "repo": "nixpkgs",
6665 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
6666 "type": "github"
6667 },
6668 "original": {
6669 "owner": "NixOS",
6670 "repo": "nixpkgs",
6671 "type": "github"
6672 }
6673 },
6674 "nixpkgs_95": {
6675 "locked": {
6676 "lastModified": 1597943282,
6677 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
6678 "owner": "NixOS",
6679 "repo": "nixpkgs",
6680 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
6681 "type": "github"
6682 },
6683 "original": {
6684 "owner": "NixOS",
6685 "repo": "nixpkgs",
6686 "type": "github"
6687 }
6688 },
6689 "nixpkgs_96": {
6690 "locked": {
6691 "lastModified": 1631570365,
6692 "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
6693 "owner": "NixOS",
6694 "repo": "nixpkgs",
6695 "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
6696 "type": "github"
6697 },
6698 "original": {
6699 "owner": "NixOS",
6700 "repo": "nixpkgs",
6701 "type": "github"
6702 }
6703 },
6704 "nixpkgs_97": {
6705 "locked": {
6706 "lastModified": 1611097871,
6707 "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
6708 "owner": "NixOS",
6709 "repo": "nixpkgs",
6710 "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
6711 "type": "github"
6712 },
6713 "original": {
6714 "owner": "NixOS",
6715 "repo": "nixpkgs",
6716 "type": "github"
6717 }
6718 },
6719 "nixpkgs_98": {
6720 "locked": {
6721 "lastModified": 1611097871,
6722 "narHash": "sha256-Q6bUkno5JNt0OoyXThFDrKArFBp/GryvJhwEgVzGSuk=",
6723 "owner": "NixOS",
6724 "repo": "nixpkgs",
6725 "rev": "31f5dd3f3655fbedac19f64f77844aa5ed79501c",
6726 "type": "github"
6727 },
6728 "original": {
6729 "owner": "NixOS",
6730 "repo": "nixpkgs",
6731 "type": "github"
6732 }
6733 },
6734 "nixpkgs_99": {
6735 "flake": false,
6736 "locked": {
6737 "lastModified": 1596265691,
6738 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
6739 "owner": "NixOS",
6740 "repo": "nixpkgs",
6741 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6742 "type": "github"
6743 },
6744 "original": {
6745 "owner": "NixOS",
6746 "repo": "nixpkgs",
6747 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
6748 "type": "github"
6749 }
6750 },
6751 "openarc": {
6752 "inputs": {
6753 "flake-utils": "flake-utils",
6754 "myuids": "myuids",
6755 "nixpkgs": "nixpkgs",
6756 "openarc": "openarc_2"
6757 },
6758 "locked": {
6759 "lastModified": 1,
6760 "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
6761 "path": "../../openarc",
6762 "type": "path"
6763 },
6764 "original": {
6765 "path": "../../openarc",
6766 "type": "path"
6767 }
6768 },
6769 "openarc_10": {
6770 "flake": false,
6771 "locked": {
6772 "lastModified": 1537545083,
6773 "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
6774 "owner": "trusteddomainproject",
6775 "repo": "OpenARC",
6776 "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
6777 "type": "github"
6778 },
6779 "original": {
6780 "owner": "trusteddomainproject",
6781 "repo": "OpenARC",
6782 "type": "github"
6783 }
6784 },
6785 "openarc_11": {
6786 "flake": false,
6787 "locked": {
6788 "lastModified": 1537545083,
6789 "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
6790 "owner": "trusteddomainproject",
6791 "repo": "OpenARC",
6792 "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
6793 "type": "github"
6794 },
6795 "original": {
6796 "owner": "trusteddomainproject",
6797 "repo": "OpenARC",
6798 "type": "github"
6799 }
6800 },
6801 "openarc_12": {
6802 "inputs": {
6803 "flake-utils": "flake-utils_53",
6804 "myuids": "myuids_36",
6805 "nixpkgs": "nixpkgs_92",
6806 "openarc": "openarc_13"
6807 },
6808 "locked": {
6809 "lastModified": 1,
6810 "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
6811 "path": "../../openarc",
6812 "type": "path"
6813 },
6814 "original": {
6815 "path": "../../openarc",
6816 "type": "path"
6817 }
6818 },
6819 "openarc_13": {
6820 "flake": false,
6821 "locked": {
6822 "lastModified": 1537545083,
6823 "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
6824 "owner": "trusteddomainproject",
6825 "repo": "OpenARC",
6826 "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
6827 "type": "github"
6828 },
6829 "original": {
6830 "owner": "trusteddomainproject",
6831 "repo": "OpenARC",
6832 "type": "github"
6833 }
6834 },
6835 "openarc_14": {
6836 "inputs": {
6837 "flake-utils": "flake-utils_55",
6838 "myuids": "myuids_38",
6839 "nixpkgs": "nixpkgs_94",
6840 "openarc": "openarc_15"
6841 },
6842 "locked": {
6843 "lastModified": 1,
6844 "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
6845 "path": "../../openarc",
6846 "type": "path"
6847 },
6848 "original": {
6849 "path": "../../openarc",
6850 "type": "path"
6851 }
6852 },
6853 "openarc_15": {
6854 "flake": false,
6855 "locked": {
6856 "lastModified": 1537545083,
6857 "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
6858 "owner": "trusteddomainproject",
6859 "repo": "OpenARC",
6860 "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
6861 "type": "github"
6862 },
6863 "original": {
6864 "owner": "trusteddomainproject",
6865 "repo": "OpenARC",
6866 "type": "github"
6867 }
6868 },
6869 "openarc_2": {
6870 "flake": false,
6871 "locked": {
6872 "lastModified": 1537545083,
6873 "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
6874 "owner": "trusteddomainproject",
6875 "repo": "OpenARC",
6876 "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
6877 "type": "github"
6878 },
6879 "original": {
6880 "owner": "trusteddomainproject",
6881 "repo": "OpenARC",
6882 "type": "github"
6883 }
6884 },
6885 "openarc_3": {
6886 "inputs": {
6887 "files-watcher": "files-watcher_2",
6888 "openarc": "openarc_4",
6889 "secrets": "secrets_4"
6890 },
6891 "locked": {
6892 "lastModified": 1,
6893 "narHash": "sha256-08NmS2KKpthWHC7ob5cu1RBKA7JaPEMqcL5HHwH3vLA=",
6894 "path": "../../flakes/private/openarc",
6895 "type": "path"
6896 },
6897 "original": {
6898 "path": "../../flakes/private/openarc",
6899 "type": "path"
6900 }
6901 },
6902 "openarc_4": {
6903 "inputs": {
6904 "flake-utils": "flake-utils_4",
6905 "myuids": "myuids_4",
6906 "nixpkgs": "nixpkgs_8",
6907 "openarc": "openarc_5"
6908 },
6909 "locked": {
6910 "lastModified": 1,
6911 "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
6912 "path": "../../openarc",
6913 "type": "path"
6914 },
6915 "original": {
6916 "path": "../../openarc",
6917 "type": "path"
6918 }
6919 },
6920 "openarc_5": {
6921 "flake": false,
6922 "locked": {
6923 "lastModified": 1537545083,
6924 "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
6925 "owner": "trusteddomainproject",
6926 "repo": "OpenARC",
6927 "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
6928 "type": "github"
6929 },
6930 "original": {
6931 "owner": "trusteddomainproject",
6932 "repo": "OpenARC",
6933 "type": "github"
6934 }
6935 },
6936 "openarc_6": {
6937 "inputs": {
6938 "flake-utils": "flake-utils_12",
6939 "myuids": "myuids_9",
6940 "nixpkgs": "nixpkgs_25",
6941 "openarc": "openarc_7"
6942 },
6943 "locked": {
6944 "lastModified": 1,
6945 "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
6946 "path": "../../openarc",
6947 "type": "path"
6948 },
6949 "original": {
6950 "path": "../../openarc",
6951 "type": "path"
6952 }
6953 },
6954 "openarc_7": {
6955 "flake": false,
6956 "locked": {
6957 "lastModified": 1537545083,
6958 "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
6959 "owner": "trusteddomainproject",
6960 "repo": "OpenARC",
6961 "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
6962 "type": "github"
6963 },
6964 "original": {
6965 "owner": "trusteddomainproject",
6966 "repo": "OpenARC",
6967 "type": "github"
6968 }
6969 },
6970 "openarc_8": {
6971 "inputs": {
6972 "flake-utils": "flake-utils_14",
6973 "myuids": "myuids_11",
6974 "nixpkgs": "nixpkgs_27",
6975 "openarc": "openarc_9"
6976 },
6977 "locked": {
6978 "lastModified": 1,
6979 "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
6980 "path": "../../openarc",
6981 "type": "path"
6982 },
6983 "original": {
6984 "path": "../../openarc",
6985 "type": "path"
6986 }
6987 },
6988 "openarc_9": {
6989 "flake": false,
6990 "locked": {
6991 "lastModified": 1537545083,
6992 "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
6993 "owner": "trusteddomainproject",
6994 "repo": "OpenARC",
6995 "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
6996 "type": "github"
6997 },
6998 "original": {
6999 "owner": "trusteddomainproject",
7000 "repo": "OpenARC",
7001 "type": "github"
7002 }
7003 },
7004 "opendmarc": {
7005 "inputs": {
7006 "flake-utils": "flake-utils_2",
7007 "myuids": "myuids_2",
7008 "nixpkgs": "nixpkgs_2"
7009 },
7010 "locked": {
7011 "lastModified": 1,
7012 "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
7013 "path": "../../opendmarc",
7014 "type": "path"
7015 },
7016 "original": {
7017 "path": "../../opendmarc",
7018 "type": "path"
7019 }
7020 },
7021 "opendmarc_2": {
7022 "inputs": {
7023 "environment": "environment_6",
7024 "files-watcher": "files-watcher_3",
7025 "opendmarc": "opendmarc_3",
7026 "secrets": "secrets_5"
7027 },
7028 "locked": {
7029 "lastModified": 1,
7030 "narHash": "sha256-2lx6oVf/3OuqWdP8dHlA6f6+npwx6N/oFv/WkqIbV1Q=",
7031 "path": "../../flakes/private/opendmarc",
7032 "type": "path"
7033 },
7034 "original": {
7035 "path": "../../flakes/private/opendmarc",
7036 "type": "path"
7037 }
7038 },
7039 "opendmarc_3": {
7040 "inputs": {
7041 "flake-utils": "flake-utils_5",
7042 "myuids": "myuids_5",
7043 "nixpkgs": "nixpkgs_9"
7044 },
7045 "locked": {
7046 "lastModified": 1,
7047 "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
7048 "path": "../../opendmarc",
7049 "type": "path"
7050 },
7051 "original": {
7052 "path": "../../opendmarc",
7053 "type": "path"
7054 }
7055 },
7056 "opendmarc_4": {
7057 "inputs": {
7058 "flake-utils": "flake-utils_13",
7059 "myuids": "myuids_10",
7060 "nixpkgs": "nixpkgs_26"
7061 },
7062 "locked": {
7063 "lastModified": 1,
7064 "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
7065 "path": "../../opendmarc",
7066 "type": "path"
7067 },
7068 "original": {
7069 "path": "../../opendmarc",
7070 "type": "path"
7071 }
7072 },
7073 "opendmarc_5": {
7074 "inputs": {
7075 "flake-utils": "flake-utils_15",
7076 "myuids": "myuids_12",
7077 "nixpkgs": "nixpkgs_28"
7078 },
7079 "locked": {
7080 "lastModified": 1,
7081 "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
7082 "path": "../../opendmarc",
7083 "type": "path"
7084 },
7085 "original": {
7086 "path": "../../opendmarc",
7087 "type": "path"
7088 }
7089 },
7090 "opendmarc_6": {
7091 "inputs": {
7092 "flake-utils": "flake-utils_54",
7093 "myuids": "myuids_37",
7094 "nixpkgs": "nixpkgs_93"
7095 },
7096 "locked": {
7097 "lastModified": 1,
7098 "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
7099 "path": "../../opendmarc",
7100 "type": "path"
7101 },
7102 "original": {
7103 "path": "../../opendmarc",
7104 "type": "path"
7105 }
7106 },
7107 "opendmarc_7": {
7108 "inputs": {
7109 "flake-utils": "flake-utils_56",
7110 "myuids": "myuids_39",
7111 "nixpkgs": "nixpkgs_95"
7112 },
7113 "locked": {
7114 "lastModified": 1,
7115 "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
7116 "path": "../../opendmarc",
7117 "type": "path"
7118 },
7119 "original": {
7120 "path": "../../opendmarc",
7121 "type": "path"
7122 }
7123 },
7124 "openldap": {
7125 "locked": {
7126 "lastModified": 1,
7127 "narHash": "sha256-Z4Gg8wU/wVVQDFwWAC9k1LW+yg0xI1iNhKB51K9Gq4c=",
7128 "path": "../../flakes/private/openldap",
7129 "type": "path"
7130 },
7131 "original": {
7132 "path": "../../flakes/private/openldap",
7133 "type": "path"
7134 }
7135 },
7136 "paste": {
7137 "inputs": {
7138 "flake-utils": "flake-utils_16",
7139 "nixpkgs": "nixpkgs_29"
7140 },
7141 "locked": {
7142 "lastModified": 1,
7143 "narHash": "sha256-a6rqBy5/ePeKhqag8K7FtOHpYLur3Z6Yzk7uCqH522A=",
7144 "path": "../../paste",
7145 "type": "path"
7146 },
7147 "original": {
7148 "path": "../../paste",
7149 "type": "path"
7150 }
7151 },
7152 "paste_2": {
7153 "inputs": {
7154 "flake-utils": "flake-utils_57",
7155 "nixpkgs": "nixpkgs_96"
7156 },
7157 "locked": {
7158 "lastModified": 1,
7159 "narHash": "sha256-a6rqBy5/ePeKhqag8K7FtOHpYLur3Z6Yzk7uCqH522A=",
7160 "path": "../../paste",
7161 "type": "path"
7162 },
7163 "original": {
7164 "path": "../../paste",
7165 "type": "path"
7166 }
7167 },
7168 "peertube": {
7169 "flake": false,
7170 "locked": {
7171 "lastModified": 1611184594,
7172 "narHash": "sha256-1N59Dmo9zny+bZWRPiR7fXConECAw9OFcVIWMp2wois=",
7173 "ref": "gitolite_local/open_instance",
7174 "rev": "f49b8d9b697f098490e81ce0afd889ba37dcb2f3",
7175 "revCount": 6316,
7176 "type": "git",
7177 "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git"
7178 },
7179 "original": {
7180 "owner": "Chocobozzz",
7181 "ref": "v3.0.1",
7182 "repo": "PeerTube",
7183 "type": "github"
7184 }
7185 },
7186 "peertube_2": {
7187 "flake": false,
7188 "locked": {
7189 "lastModified": 1610436329,
7190 "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
7191 "owner": "Chocobozzz",
7192 "repo": "PeerTube",
7193 "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
7194 "type": "github"
7195 },
7196 "original": {
7197 "owner": "Chocobozzz",
7198 "ref": "v3.0.1",
7199 "repo": "PeerTube",
7200 "type": "github"
7201 }
7202 },
7203 "peertube_3": {
7204 "flake": false,
7205 "locked": {
7206 "lastModified": 1610436329,
7207 "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
7208 "owner": "Chocobozzz",
7209 "repo": "PeerTube",
7210 "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
7211 "type": "github"
7212 },
7213 "original": {
7214 "owner": "Chocobozzz",
7215 "ref": "v3.0.1",
7216 "repo": "PeerTube",
7217 "type": "github"
7218 }
7219 },
7220 "peertube_4": {
7221 "flake": false,
7222 "locked": {
7223 "lastModified": 1610436329,
7224 "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
7225 "owner": "Chocobozzz",
7226 "repo": "PeerTube",
7227 "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
7228 "type": "github"
7229 },
7230 "original": {
7231 "owner": "Chocobozzz",
7232 "ref": "v3.0.1",
7233 "repo": "PeerTube",
7234 "type": "github"
7235 }
7236 },
7237 "peertube_5": {
7238 "flake": false,
7239 "locked": {
7240 "lastModified": 1611184594,
7241 "narHash": "sha256-1N59Dmo9zny+bZWRPiR7fXConECAw9OFcVIWMp2wois=",
7242 "ref": "gitolite_local/open_instance",
7243 "rev": "f49b8d9b697f098490e81ce0afd889ba37dcb2f3",
7244 "revCount": 6316,
7245 "type": "git",
7246 "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git"
7247 },
7248 "original": {
7249 "owner": "Chocobozzz",
7250 "ref": "v3.0.1",
7251 "repo": "PeerTube",
7252 "type": "github"
7253 }
7254 },
7255 "peertube_6": {
7256 "flake": false,
7257 "locked": {
7258 "lastModified": 1610436329,
7259 "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
7260 "owner": "Chocobozzz",
7261 "repo": "PeerTube",
7262 "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
7263 "type": "github"
7264 },
7265 "original": {
7266 "owner": "Chocobozzz",
7267 "ref": "v3.0.1",
7268 "repo": "PeerTube",
7269 "type": "github"
7270 }
7271 },
7272 "peertube_open_instance": {
7273 "inputs": {
7274 "flake-utils": "flake-utils_17",
7275 "myuids": "myuids_13",
7276 "nixpkgs": "nixpkgs_30",
7277 "peertube": "peertube"
7278 },
7279 "locked": {
7280 "lastModified": 1,
7281 "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
7282 "path": "./../../peertube",
7283 "type": "path"
7284 },
7285 "original": {
7286 "path": "./../../peertube",
7287 "type": "path"
7288 }
7289 },
7290 "peertube_open_instance_2": {
7291 "inputs": {
7292 "flake-utils": "flake-utils_58",
7293 "myuids": "myuids_40",
7294 "nixpkgs": "nixpkgs_97",
7295 "peertube": "peertube_5"
7296 },
7297 "locked": {
7298 "lastModified": 1,
7299 "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
7300 "path": "./../../peertube",
7301 "type": "path"
7302 },
7303 "original": {
7304 "path": "./../../peertube",
7305 "type": "path"
7306 }
7307 },
7308 "peertube_origin": {
7309 "inputs": {
7310 "flake-utils": "flake-utils_18",
7311 "myuids": "myuids_14",
7312 "nixpkgs": "nixpkgs_31",
7313 "peertube": "peertube_2"
7314 },
7315 "locked": {
7316 "lastModified": 1,
7317 "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
7318 "path": "./../../peertube",
7319 "type": "path"
7320 },
7321 "original": {
7322 "path": "./../../peertube",
7323 "type": "path"
7324 }
7325 },
7326 "peertube_origin_2": {
7327 "inputs": {
7328 "flake-utils": "flake-utils_59",
7329 "myuids": "myuids_41",
7330 "nixpkgs": "nixpkgs_98",
7331 "peertube": "peertube_6"
7332 },
7333 "locked": {
7334 "lastModified": 1,
7335 "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
7336 "path": "./../../peertube",
7337 "type": "path"
7338 },
7339 "original": {
7340 "path": "./../../peertube",
7341 "type": "path"
7342 }
7343 },
7344 "php": {
7345 "inputs": {
7346 "flake-utils": "flake-utils_33",
7347 "nixpkgs": "nixpkgs_55",
7348 "nixpkgs-4": "nixpkgs-4_2"
7349 },
7350 "locked": {
7351 "lastModified": 1,
7352 "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
7353 "path": "../../flakes/private/php",
7354 "type": "path"
7355 },
7356 "original": {
7357 "path": "../../flakes/private/php",
7358 "type": "path"
7359 }
7360 },
7361 "php_2": {
7362 "inputs": {
7363 "flake-utils": "flake-utils_36",
7364 "nixpkgs": "nixpkgs_63",
7365 "nixpkgs-4": "nixpkgs-4_3"
7366 },
7367 "locked": {
7368 "lastModified": 1,
7369 "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
7370 "path": "../../flakes/private/php",
7371 "type": "path"
7372 },
7373 "original": {
7374 "path": "../../flakes/private/php",
7375 "type": "path"
7376 }
7377 },
7378 "private-buildbot": {
7379 "inputs": {
7380 "buildslist": "buildslist",
7381 "flake-utils": "flake-utils_11",
7382 "nixpkgs": "nixpkgs_24"
7383 },
7384 "locked": {
7385 "lastModified": 1,
7386 "narHash": "sha256-LZRLA37RiN1VyKRqoAdZa9oc61PfQX7dCANSFuwuSa8=",
7387 "path": "../../flakes/private/buildbot",
7388 "type": "path"
7389 },
7390 "original": {
7391 "path": "../../flakes/private/buildbot",
7392 "type": "path"
7393 }
7394 },
7395 "private-chatons": {
7396 "inputs": {
7397 "environment": "environment_12"
7398 },
7399 "locked": {
7400 "lastModified": 1,
7401 "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
7402 "path": "../../flakes/private/chatons",
7403 "type": "path"
7404 },
7405 "original": {
7406 "path": "../../flakes/private/chatons",
7407 "type": "path"
7408 }
7409 },
7410 "private-environment": {
7411 "locked": {
7412 "lastModified": 1,
7413 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
7414 "path": "../../flakes/private/environment",
7415 "type": "path"
7416 },
7417 "original": {
7418 "path": "../../flakes/private/environment",
7419 "type": "path"
7420 }
7421 },
7422 "private-environment_2": {
7423 "locked": {
7424 "lastModified": 1,
7425 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
7426 "path": "../../flakes/private/environment",
7427 "type": "path"
7428 },
7429 "original": {
7430 "path": "../../flakes/private/environment",
7431 "type": "path"
7432 }
7433 },
7434 "private-milters": {
7435 "inputs": {
7436 "environment": "environment_13",
7437 "files-watcher": "files-watcher_5",
7438 "openarc": "openarc_6",
7439 "opendmarc": "opendmarc_4",
7440 "secrets": "secrets_10"
7441 },
7442 "locked": {
7443 "lastModified": 1,
7444 "narHash": "sha256-+FlrtZ2sR58VeLsYFeQ6ccaAiGQRFoc9ofs/X/S0Bkg=",
7445 "path": "../../flakes/private/milters",
7446 "type": "path"
7447 },
7448 "original": {
7449 "path": "../../flakes/private/milters",
7450 "type": "path"
7451 }
7452 },
7453 "private-monitoring": {
7454 "inputs": {
7455 "environment": "environment_14",
7456 "naemon": "naemon_3",
7457 "nixpkgs-lib": "nixpkgs-lib_8",
7458 "secrets": "secrets_11"
7459 },
7460 "locked": {
7461 "lastModified": 1,
7462 "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
7463 "path": "../../flakes/private/monitoring",
7464 "type": "path"
7465 },
7466 "original": {
7467 "path": "../../flakes/private/monitoring",
7468 "type": "path"
7469 }
7470 },
7471 "private-openarc": {
7472 "inputs": {
7473 "files-watcher": "files-watcher_6",
7474 "openarc": "openarc_8",
7475 "secrets": "secrets_12"
7476 },
7477 "locked": {
7478 "lastModified": 1,
7479 "narHash": "sha256-08NmS2KKpthWHC7ob5cu1RBKA7JaPEMqcL5HHwH3vLA=",
7480 "path": "../../flakes/private/openarc",
7481 "type": "path"
7482 },
7483 "original": {
7484 "path": "../../flakes/private/openarc",
7485 "type": "path"
7486 }
7487 },
7488 "private-opendmarc": {
7489 "inputs": {
7490 "environment": "environment_15",
7491 "files-watcher": "files-watcher_7",
7492 "opendmarc": "opendmarc_5",
7493 "secrets": "secrets_13"
7494 },
7495 "locked": {
7496 "lastModified": 1,
7497 "narHash": "sha256-2lx6oVf/3OuqWdP8dHlA6f6+npwx6N/oFv/WkqIbV1Q=",
7498 "path": "../../flakes/private/opendmarc",
7499 "type": "path"
7500 },
7501 "original": {
7502 "path": "../../flakes/private/opendmarc",
7503 "type": "path"
7504 }
7505 },
7506 "private-openldap": {
7507 "locked": {
7508 "lastModified": 1,
7509 "narHash": "sha256-Z4Gg8wU/wVVQDFwWAC9k1LW+yg0xI1iNhKB51K9Gq4c=",
7510 "path": "../../flakes/private/openldap",
7511 "type": "path"
7512 },
7513 "original": {
7514 "path": "../../flakes/private/openldap",
7515 "type": "path"
7516 }
7517 },
7518 "private-paste": {
7519 "inputs": {
7520 "paste": "paste"
7521 },
7522 "locked": {
7523 "lastModified": 1,
7524 "narHash": "sha256-w8WnrSJj05Y8hJsJfY46sI6PUSg2xo5h9t0zWP4woog=",
7525 "path": "../../flakes/private/paste",
7526 "type": "path"
7527 },
7528 "original": {
7529 "path": "../../flakes/private/paste",
7530 "type": "path"
7531 }
7532 },
7533 "private-peertube": {
7534 "inputs": {
7535 "peertube_open_instance": "peertube_open_instance",
7536 "peertube_origin": "peertube_origin"
7537 },
7538 "locked": {
7539 "lastModified": 1,
7540 "narHash": "sha256-1MpzxwaZ+TZJzBf+Do/PFdI9khD1GSvfjuSC0h2Hk58=",
7541 "path": "../../flakes/private/peertube",
7542 "type": "path"
7543 },
7544 "original": {
7545 "path": "../../flakes/private/peertube",
7546 "type": "path"
7547 }
7548 },
7549 "private-php": {
7550 "inputs": {
7551 "flake-utils": "flake-utils_19",
7552 "nixpkgs": "nixpkgs_32",
7553 "nixpkgs-4": "nixpkgs-4"
7554 },
7555 "locked": {
7556 "lastModified": 1,
7557 "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
7558 "path": "../../flakes/private/php",
7559 "type": "path"
7560 },
7561 "original": {
7562 "path": "../../flakes/private/php",
7563 "type": "path"
7564 }
7565 },
7566 "private-ssh": {
7567 "inputs": {
7568 "environment": "environment_16",
7569 "secrets": "secrets_14"
7570 },
7571 "locked": {
7572 "lastModified": 1,
7573 "narHash": "sha256-ckUFmIHxrUuBMxOHhzgT+4sX/ek/Op0PjdyL3NyU/Mc=",
7574 "path": "../../flakes/private/ssh",
7575 "type": "path"
7576 },
7577 "original": {
7578 "path": "../../flakes/private/ssh",
7579 "type": "path"
7580 }
7581 },
7582 "private-system": {
7583 "inputs": {
7584 "backports": "backports_3",
7585 "environment": "environment_17",
7586 "mypackages": "mypackages_3",
7587 "myuids": "myuids_15",
7588 "secrets-public": "secrets-public_3"
7589 },
7590 "locked": {
7591 "lastModified": 1,
7592 "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
7593 "path": "../../flakes/private/system",
7594 "type": "path"
7595 },
7596 "original": {
7597 "path": "../../flakes/private/system",
7598 "type": "path"
7599 }
7600 },
7601 "private-system_2": {
7602 "inputs": {
7603 "backports": "backports_6",
7604 "environment": "environment_26",
7605 "mypackages": "mypackages_9",
7606 "myuids": "myuids_28",
7607 "secrets-public": "secrets-public_6"
7608 },
7609 "locked": {
7610 "lastModified": 1,
7611 "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
7612 "path": "../../flakes/private/system",
7613 "type": "path"
7614 },
7615 "original": {
7616 "path": "../../flakes/private/system",
7617 "type": "path"
7618 }
7619 },
7620 "public-copanier": {
7621 "inputs": {
7622 "copanier": "copanier",
7623 "flake-utils": "flake-utils_21",
7624 "nixpkgs": "nixpkgs_35"
7625 },
7626 "locked": {
7627 "lastModified": 1,
7628 "narHash": "sha256-v7ZhvU3UAmA7EtPWutYddHE84qbqWx/ugtFAEgpD4H0=",
7629 "path": "../../flakes/copanier",
7630 "type": "path"
7631 },
7632 "original": {
7633 "path": "../../flakes/copanier",
7634 "type": "path"
7635 }
7636 },
7637 "public-diaspora": {
7638 "inputs": {
7639 "diaspora": "diaspora",
7640 "flake-utils": "flake-utils_22",
7641 "myuids": "myuids_16",
7642 "nixpkgs": "nixpkgs_36"
7643 },
7644 "locked": {
7645 "lastModified": 1,
7646 "narHash": "sha256-S+ZZI5/WNGE9m5yRkOM3LlJUTrjtjzcBRLNrHi0fx6M=",
7647 "path": "../../flakes/diaspora",
7648 "type": "path"
7649 },
7650 "original": {
7651 "path": "../../flakes/diaspora",
7652 "type": "path"
7653 }
7654 },
7655 "public-etherpad-lite": {
7656 "inputs": {
7657 "etherpad-lite": "etherpad-lite",
7658 "flake-utils": "flake-utils_23",
7659 "mypackages": "mypackages_4",
7660 "nixpkgs": "nixpkgs_38"
7661 },
7662 "locked": {
7663 "lastModified": 1,
7664 "narHash": "sha256-j6p9rVNwD0C3VN65VdnF3yG8fy5S8aAsi2kRXWPd3VE=",
7665 "path": "../../flakes/etherpad-lite",
7666 "type": "path"
7667 },
7668 "original": {
7669 "path": "../../flakes/etherpad-lite",
7670 "type": "path"
7671 }
7672 },
7673 "public-fiche": {
7674 "locked": {
7675 "lastModified": 1,
7676 "narHash": "sha256-oIMKN1dD4K+5pOGugNaNNdJme5NYlYtnNd3ivvyVoJI=",
7677 "path": "../../flakes/fiche",
7678 "type": "path"
7679 },
7680 "original": {
7681 "path": "../../flakes/fiche",
7682 "type": "path"
7683 }
7684 },
7685 "public-files-watcher": {
7686 "locked": {
7687 "lastModified": 1,
7688 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
7689 "path": "../../flakes/files-watcher",
7690 "type": "path"
7691 },
7692 "original": {
7693 "path": "../../flakes/files-watcher",
7694 "type": "path"
7695 }
7696 },
7697 "public-grocy": {
7698 "inputs": {
7699 "flake-utils": "flake-utils_24",
7700 "grocy": "grocy",
7701 "mypackages": "mypackages_5",
7702 "nixpkgs": "nixpkgs_40"
7703 },
7704 "locked": {
7705 "lastModified": 1,
7706 "narHash": "sha256-Xv5wFz3A1f+jkJ1hxb6DwisBwsZxaQccp/Kwe5lqwy0=",
7707 "path": "../../flakes/grocy",
7708 "type": "path"
7709 },
7710 "original": {
7711 "path": "../../flakes/grocy",
7712 "type": "path"
7713 }
7714 },
7715 "public-loginctl-linger": {
7716 "locked": {
7717 "lastModified": 1,
7718 "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
7719 "path": "../../flakes/loginctl-linger",
7720 "type": "path"
7721 },
7722 "original": {
7723 "path": "../../flakes/loginctl-linger",
7724 "type": "path"
7725 }
7726 },
7727 "public-mastodon": {
7728 "inputs": {
7729 "flake-utils": "flake-utils_25",
7730 "mastodon": "mastodon",
7731 "myuids": "myuids_17",
7732 "nixpkgs": "nixpkgs_41"
7733 },
7734 "locked": {
7735 "lastModified": 1,
7736 "narHash": "sha256-5bh3eTXdSac7Kw17+6EVmjNZpPIdGc7a3E5lb7wYn2U=",
7737 "path": "../../flakes/mastodon",
7738 "type": "path"
7739 },
7740 "original": {
7741 "path": "../../flakes/mastodon",
7742 "type": "path"
7743 }
7744 },
7745 "public-mediagoblin": {
7746 "inputs": {
7747 "flake-utils": "flake-utils_26",
7748 "mediagoblin": "mediagoblin",
7749 "myuids": "myuids_18",
7750 "nixpkgs": "nixpkgs_42"
7751 },
7752 "locked": {
7753 "lastModified": 1,
7754 "narHash": "sha256-CVFwdH+i6K9dxyniI6nUeLiNZoD17uKT1Q8/4MaiTGU=",
7755 "path": "../../flakes/mediagoblin",
7756 "type": "path"
7757 },
7758 "original": {
7759 "path": "../../flakes/mediagoblin",
7760 "type": "path"
7761 }
7762 },
7763 "public-multi-apache-container": {
7764 "inputs": {
7765 "files-watcher": "files-watcher_8",
7766 "myuids": "myuids_19"
7767 },
7768 "locked": {
7769 "lastModified": 1,
7770 "narHash": "sha256-euh+K7DLk5B3hKTeK5Xwo6dvnvHk+7ZDCqaRdG48i8I=",
7771 "path": "../../flakes/multi-apache-container",
7772 "type": "path"
7773 },
7774 "original": {
7775 "path": "../../flakes/multi-apache-container",
7776 "type": "path"
7777 }
7778 },
7779 "public-mypackages": {
7780 "inputs": {
7781 "flake-parts": "flake-parts_9",
7782 "nixpkgs": "nixpkgs_43",
7783 "webapps-ttrss": "webapps-ttrss_6"
7784 },
7785 "locked": {
7786 "lastModified": 1,
7787 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
7788 "path": "../../flakes/mypackages",
7789 "type": "path"
7790 },
7791 "original": {
7792 "path": "../../flakes/mypackages",
7793 "type": "path"
7794 }
7795 },
7796 "public-myuids": {
7797 "locked": {
7798 "lastModified": 1,
7799 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
7800 "path": "../../flakes/myuids",
7801 "type": "path"
7802 },
7803 "original": {
7804 "path": "../../flakes/myuids",
7805 "type": "path"
7806 }
7807 },
7808 "public-openarc": {
7809 "inputs": {
7810 "flake-utils": "flake-utils_27",
7811 "myuids": "myuids_20",
7812 "nixpkgs": "nixpkgs_44",
7813 "openarc": "openarc_10"
7814 },
7815 "locked": {
7816 "lastModified": 1,
7817 "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
7818 "path": "../../flakes/openarc",
7819 "type": "path"
7820 },
7821 "original": {
7822 "path": "../../flakes/openarc",
7823 "type": "path"
7824 }
7825 },
7826 "public-opendmarc": {
7827 "inputs": {
7828 "flake-utils": "flake-utils_28",
7829 "myuids": "myuids_21",
7830 "nixpkgs": "nixpkgs_45"
7831 },
7832 "locked": {
7833 "lastModified": 1,
7834 "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
7835 "path": "../../flakes/opendmarc",
7836 "type": "path"
7837 },
7838 "original": {
7839 "path": "../../flakes/opendmarc",
7840 "type": "path"
7841 }
7842 },
7843 "public-peertube": {
7844 "inputs": {
7845 "flake-utils": "flake-utils_29",
7846 "myuids": "myuids_22",
7847 "nixpkgs": "nixpkgs_46",
7848 "peertube": "peertube_3"
7849 },
7850 "locked": {
7851 "lastModified": 1,
7852 "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
7853 "path": "../../flakes/peertube",
7854 "type": "path"
7855 },
7856 "original": {
7857 "path": "../../flakes/peertube",
7858 "type": "path"
7859 }
7860 },
7861 "public-secrets": {
7862 "locked": {
7863 "lastModified": 1,
7864 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
7865 "path": "../../flakes/secrets",
7866 "type": "path"
7867 },
7868 "original": {
7869 "path": "../../flakes/secrets",
7870 "type": "path"
7871 }
7872 },
7873 "public-secrets_2": {
7874 "locked": {
7875 "lastModified": 1,
7876 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
7877 "path": "../../flakes/secrets",
7878 "type": "path"
7879 },
7880 "original": {
7881 "path": "../../flakes/secrets",
7882 "type": "path"
7883 }
7884 },
7885 "public-surfer": {
7886 "inputs": {
7887 "flake-utils": "flake-utils_30",
7888 "mypackages": "mypackages_6",
7889 "nixpkgs": "nixpkgs_48",
7890 "surfer": "surfer"
7891 },
7892 "locked": {
7893 "lastModified": 1,
7894 "narHash": "sha256-67TqavMsANZI6X15AFUQZ2zHSmoWJc80XaXwEGhWsRg=",
7895 "path": "../../flakes/surfer",
7896 "type": "path"
7897 },
7898 "original": {
7899 "path": "../../flakes/surfer",
7900 "type": "path"
7901 }
7902 },
7903 "public-taskwarrior-web": {
7904 "inputs": {
7905 "flake-utils": "flake-utils_31",
7906 "nixpkgs": "nixpkgs_49",
7907 "taskwarrior-web": "taskwarrior-web"
7908 },
7909 "locked": {
7910 "lastModified": 1,
7911 "narHash": "sha256-0u83WrBwbIpuyy82UK3EUqC/dgoCoDzptRe+G4VhKXo=",
7912 "path": "../../flakes/taskwarrior-web",
7913 "type": "path"
7914 },
7915 "original": {
7916 "path": "../../flakes/taskwarrior-web",
7917 "type": "path"
7918 }
7919 },
7920 "root": {
7921 "inputs": {
7922 "n-backup-2": "n-backup-2",
7923 "n-dilion": "n-dilion",
7924 "n-eldiron": "n-eldiron",
7925 "n-monitoring-1": "n-monitoring-1",
7926 "n-quatresaisons": "n-quatresaisons",
7927 "n-zoldene": "n-zoldene",
7928 "s-backports": "s-backports",
7929 "s-copanier": "s-copanier",
7930 "s-diaspora": "s-diaspora",
7931 "s-etherpad-lite": "s-etherpad-lite",
7932 "s-fiche": "s-fiche",
7933 "s-files-watcher": "s-files-watcher",
7934 "s-grocy": "s-grocy",
7935 "s-lib": "s-lib",
7936 "s-loginctl-linger": "s-loginctl-linger",
7937 "s-mastodon": "s-mastodon",
7938 "s-mediagoblin": "s-mediagoblin",
7939 "s-multi-apache-container": "s-multi-apache-container",
7940 "s-mypackages": "s-mypackages",
7941 "s-myuids": "s-myuids",
7942 "s-naemon": "s-naemon",
7943 "s-openarc": "s-openarc",
7944 "s-opendmarc": "s-opendmarc",
7945 "s-paste": "s-paste",
7946 "s-peertube": "s-peertube",
7947 "s-private-buildbot": "s-private-buildbot",
7948 "s-private-chatons": "s-private-chatons",
7949 "s-private-environment": "s-private-environment",
7950 "s-private-mail-relay": "s-private-mail-relay",
7951 "s-private-milters": "s-private-milters",
7952 "s-private-monitoring": "s-private-monitoring",
7953 "s-private-openarc": "s-private-openarc",
7954 "s-private-opendmarc": "s-private-opendmarc",
7955 "s-private-openldap": "s-private-openldap",
7956 "s-private-paste": "s-private-paste",
7957 "s-private-peertube": "s-private-peertube",
7958 "s-private-php": "s-private-php",
7959 "s-private-ssh": "s-private-ssh",
7960 "s-private-system": "s-private-system",
7961 "s-rsync_backup": "s-rsync_backup",
7962 "s-secrets": "s-secrets",
7963 "s-surfer": "s-surfer",
7964 "s-taskwarrior-web": "s-taskwarrior-web",
7965 "secrets": "secrets_26"
7966 }
7967 },
7968 "rsync_backup": {
7969 "locked": {
7970 "lastModified": 1,
7971 "narHash": "sha256-TxLsFx4DTTScMHkvR0pJgzYea6ILiu1Dl6LA67LtYGo=",
7972 "path": "../../flakes/rsync_backup",
7973 "type": "path"
7974 },
7975 "original": {
7976 "path": "../../flakes/rsync_backup",
7977 "type": "path"
7978 }
7979 },
7980 "s-backports": {
7981 "inputs": {
7982 "flake-utils": "flake-utils_40",
7983 "nixpkgs": "nixpkgs_73"
7984 },
7985 "locked": {
7986 "lastModified": 1,
7987 "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
7988 "path": "./backports",
7989 "type": "path"
7990 },
7991 "original": {
7992 "path": "./backports",
7993 "type": "path"
7994 }
7995 },
7996 "s-copanier": {
7997 "inputs": {
7998 "copanier": "copanier_2",
7999 "flake-utils": "flake-utils_41",
8000 "nixpkgs": "nixpkgs_74"
8001 },
8002 "locked": {
8003 "lastModified": 1,
8004 "narHash": "sha256-v7ZhvU3UAmA7EtPWutYddHE84qbqWx/ugtFAEgpD4H0=",
8005 "path": "./copanier",
8006 "type": "path"
8007 },
8008 "original": {
8009 "path": "./copanier",
8010 "type": "path"
8011 }
8012 },
8013 "s-diaspora": {
8014 "inputs": {
8015 "diaspora": "diaspora_2",
8016 "flake-utils": "flake-utils_42",
8017 "myuids": "myuids_29",
8018 "nixpkgs": "nixpkgs_75"
8019 },
8020 "locked": {
8021 "lastModified": 1,
8022 "narHash": "sha256-S+ZZI5/WNGE9m5yRkOM3LlJUTrjtjzcBRLNrHi0fx6M=",
8023 "path": "./diaspora",
8024 "type": "path"
8025 },
8026 "original": {
8027 "path": "./diaspora",
8028 "type": "path"
8029 }
8030 },
8031 "s-etherpad-lite": {
8032 "inputs": {
8033 "etherpad-lite": "etherpad-lite_2",
8034 "flake-utils": "flake-utils_43",
8035 "mypackages": "mypackages_10",
8036 "nixpkgs": "nixpkgs_77"
8037 },
8038 "locked": {
8039 "lastModified": 1,
8040 "narHash": "sha256-j6p9rVNwD0C3VN65VdnF3yG8fy5S8aAsi2kRXWPd3VE=",
8041 "path": "./etherpad-lite",
8042 "type": "path"
8043 },
8044 "original": {
8045 "path": "./etherpad-lite",
8046 "type": "path"
8047 }
8048 },
8049 "s-fiche": {
8050 "locked": {
8051 "lastModified": 1,
8052 "narHash": "sha256-oIMKN1dD4K+5pOGugNaNNdJme5NYlYtnNd3ivvyVoJI=",
8053 "path": "./fiche",
8054 "type": "path"
8055 },
8056 "original": {
8057 "path": "./fiche",
8058 "type": "path"
8059 }
8060 },
8061 "s-files-watcher": {
8062 "locked": {
8063 "lastModified": 1,
8064 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
8065 "path": "./files-watcher",
8066 "type": "path"
8067 },
8068 "original": {
8069 "path": "./files-watcher",
8070 "type": "path"
8071 }
8072 },
8073 "s-grocy": {
8074 "inputs": {
8075 "flake-utils": "flake-utils_44",
8076 "grocy": "grocy_2",
8077 "mypackages": "mypackages_11",
8078 "nixpkgs": "nixpkgs_79"
8079 },
8080 "locked": {
8081 "lastModified": 1,
8082 "narHash": "sha256-Xv5wFz3A1f+jkJ1hxb6DwisBwsZxaQccp/Kwe5lqwy0=",
8083 "path": "./grocy",
8084 "type": "path"
8085 },
8086 "original": {
8087 "path": "./grocy",
8088 "type": "path"
8089 }
8090 },
8091 "s-lib": {
8092 "inputs": {
8093 "colmena": "colmena_7",
8094 "disko": "disko_7",
8095 "flake-parts": "flake-parts_19",
8096 "nixos-anywhere": "nixos-anywhere_7",
8097 "nixpkgs": "nixpkgs_83"
8098 },
8099 "locked": {
8100 "lastModified": 1,
8101 "narHash": "sha256-wwpT+I5/zrln85BDzlZoEDC19GwYrcZSXbrJjyvC4jk=",
8102 "path": "./lib",
8103 "type": "path"
8104 },
8105 "original": {
8106 "path": "./lib",
8107 "type": "path"
8108 }
8109 },
8110 "s-loginctl-linger": {
8111 "locked": {
8112 "lastModified": 1,
8113 "narHash": "sha256-TLlUOhiQzYo6SwH0E3oPCDfhgW249qPZTlVar1VmpKw=",
8114 "path": "./loginctl-linger",
8115 "type": "path"
8116 },
8117 "original": {
8118 "path": "./loginctl-linger",
8119 "type": "path"
8120 }
8121 },
8122 "s-mastodon": {
8123 "inputs": {
8124 "flake-utils": "flake-utils_46",
8125 "mastodon": "mastodon_2",
8126 "myuids": "myuids_30",
8127 "nixpkgs": "nixpkgs_84"
8128 },
8129 "locked": {
8130 "lastModified": 1,
8131 "narHash": "sha256-5bh3eTXdSac7Kw17+6EVmjNZpPIdGc7a3E5lb7wYn2U=",
8132 "path": "./mastodon",
8133 "type": "path"
8134 },
8135 "original": {
8136 "path": "./mastodon",
8137 "type": "path"
8138 }
8139 },
8140 "s-mediagoblin": {
8141 "inputs": {
8142 "flake-utils": "flake-utils_47",
8143 "mediagoblin": "mediagoblin_2",
8144 "myuids": "myuids_31",
8145 "nixpkgs": "nixpkgs_85"
8146 },
8147 "locked": {
8148 "lastModified": 1,
8149 "narHash": "sha256-CVFwdH+i6K9dxyniI6nUeLiNZoD17uKT1Q8/4MaiTGU=",
8150 "path": "./mediagoblin",
8151 "type": "path"
8152 },
8153 "original": {
8154 "path": "./mediagoblin",
8155 "type": "path"
8156 }
8157 },
8158 "s-multi-apache-container": {
8159 "inputs": {
8160 "files-watcher": "files-watcher_12",
8161 "myuids": "myuids_32"
8162 },
8163 "locked": {
8164 "lastModified": 1,
8165 "narHash": "sha256-euh+K7DLk5B3hKTeK5Xwo6dvnvHk+7ZDCqaRdG48i8I=",
8166 "path": "./multi-apache-container",
8167 "type": "path"
8168 },
8169 "original": {
8170 "path": "./multi-apache-container",
8171 "type": "path"
8172 }
8173 },
8174 "s-mypackages": {
8175 "inputs": {
8176 "flake-parts": "flake-parts_20",
8177 "nixpkgs": "nixpkgs_86",
8178 "webapps-ttrss": "webapps-ttrss_13"
8179 },
8180 "locked": {
8181 "lastModified": 1,
8182 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
8183 "path": "./mypackages",
8184 "type": "path"
8185 },
8186 "original": {
8187 "path": "./mypackages",
8188 "type": "path"
8189 }
8190 },
8191 "s-myuids": {
8192 "locked": {
8193 "lastModified": 1,
8194 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
8195 "path": "./myuids",
8196 "type": "path"
8197 },
8198 "original": {
8199 "path": "./myuids",
8200 "type": "path"
8201 }
8202 },
8203 "s-naemon": {
8204 "locked": {
8205 "lastModified": 1,
8206 "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
8207 "path": "./naemon",
8208 "type": "path"
8209 },
8210 "original": {
8211 "path": "./naemon",
8212 "type": "path"
8213 }
8214 },
8215 "s-openarc": {
8216 "inputs": {
8217 "flake-utils": "flake-utils_48",
8218 "myuids": "myuids_33",
8219 "nixpkgs": "nixpkgs_87",
8220 "openarc": "openarc_11"
8221 },
8222 "locked": {
8223 "lastModified": 1,
8224 "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
8225 "path": "./openarc",
8226 "type": "path"
8227 },
8228 "original": {
8229 "path": "./openarc",
8230 "type": "path"
8231 }
8232 },
8233 "s-opendmarc": {
8234 "inputs": {
8235 "flake-utils": "flake-utils_49",
8236 "myuids": "myuids_34",
8237 "nixpkgs": "nixpkgs_88"
8238 },
8239 "locked": {
8240 "lastModified": 1,
8241 "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
8242 "path": "./opendmarc",
8243 "type": "path"
8244 },
8245 "original": {
8246 "path": "./opendmarc",
8247 "type": "path"
8248 }
8249 },
8250 "s-paste": {
8251 "inputs": {
8252 "flake-utils": "flake-utils_50",
8253 "nixpkgs": "nixpkgs_89"
8254 },
8255 "locked": {
8256 "lastModified": 1,
8257 "narHash": "sha256-a6rqBy5/ePeKhqag8K7FtOHpYLur3Z6Yzk7uCqH522A=",
8258 "path": "./paste",
8259 "type": "path"
8260 },
8261 "original": {
8262 "path": "./paste",
8263 "type": "path"
8264 }
8265 },
8266 "s-peertube": {
8267 "inputs": {
8268 "flake-utils": "flake-utils_51",
8269 "myuids": "myuids_35",
8270 "nixpkgs": "nixpkgs_90",
8271 "peertube": "peertube_4"
8272 },
8273 "locked": {
8274 "lastModified": 1,
8275 "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
8276 "path": "./peertube",
8277 "type": "path"
8278 },
8279 "original": {
8280 "path": "./peertube",
8281 "type": "path"
8282 }
8283 },
8284 "s-private-buildbot": {
8285 "inputs": {
8286 "buildslist": "buildslist_2",
8287 "flake-utils": "flake-utils_52",
8288 "nixpkgs": "nixpkgs_91"
8289 },
8290 "locked": {
8291 "lastModified": 1,
8292 "narHash": "sha256-LZRLA37RiN1VyKRqoAdZa9oc61PfQX7dCANSFuwuSa8=",
8293 "path": "./private/buildbot",
8294 "type": "path"
8295 },
8296 "original": {
8297 "path": "./private/buildbot",
8298 "type": "path"
8299 }
8300 },
8301 "s-private-chatons": {
8302 "inputs": {
8303 "environment": "environment_27"
8304 },
8305 "locked": {
8306 "lastModified": 1,
8307 "narHash": "sha256-UNkS/IZGHCdSX4hCzpTZwNBj9B8RGCMr9Za+G9Xdm4Y=",
8308 "path": "./private/chatons",
8309 "type": "path"
8310 },
8311 "original": {
8312 "path": "./private/chatons",
8313 "type": "path"
8314 }
8315 },
8316 "s-private-environment": {
8317 "locked": {
8318 "lastModified": 1,
8319 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
8320 "path": "./private/environment",
8321 "type": "path"
8322 },
8323 "original": {
8324 "path": "./private/environment",
8325 "type": "path"
8326 }
8327 },
8328 "s-private-mail-relay": {
8329 "inputs": {
8330 "environment": "environment_28",
8331 "secrets": "secrets_20"
8332 },
8333 "locked": {
8334 "lastModified": 1,
8335 "narHash": "sha256-xISja892g6YTu9YjGwaD36BBWi/1+IcuREw6iUDqfVw=",
8336 "path": "./private/mail-relay",
8337 "type": "path"
8338 },
8339 "original": {
8340 "path": "./private/mail-relay",
8341 "type": "path"
8342 }
8343 },
8344 "s-private-milters": {
8345 "inputs": {
8346 "environment": "environment_29",
8347 "files-watcher": "files-watcher_13",
8348 "openarc": "openarc_12",
8349 "opendmarc": "opendmarc_6",
8350 "secrets": "secrets_21"
8351 },
8352 "locked": {
8353 "lastModified": 1,
8354 "narHash": "sha256-+FlrtZ2sR58VeLsYFeQ6ccaAiGQRFoc9ofs/X/S0Bkg=",
8355 "path": "./private/milters",
8356 "type": "path"
8357 },
8358 "original": {
8359 "path": "./private/milters",
8360 "type": "path"
8361 }
8362 },
8363 "s-private-monitoring": {
8364 "inputs": {
8365 "environment": "environment_30",
8366 "naemon": "naemon_6",
8367 "nixpkgs-lib": "nixpkgs-lib_26",
8368 "secrets": "secrets_22"
8369 },
8370 "locked": {
8371 "lastModified": 1,
8372 "narHash": "sha256-K720bqCEHPK0F7GBaxo/ioJ3LVAyhjl/ZZobWwO4ebU=",
8373 "path": "./private/monitoring",
8374 "type": "path"
8375 },
8376 "original": {
8377 "path": "./private/monitoring",
8378 "type": "path"
8379 }
8380 },
8381 "s-private-openarc": {
8382 "inputs": {
8383 "files-watcher": "files-watcher_14",
8384 "openarc": "openarc_14",
8385 "secrets": "secrets_23"
8386 },
8387 "locked": {
8388 "lastModified": 1,
8389 "narHash": "sha256-08NmS2KKpthWHC7ob5cu1RBKA7JaPEMqcL5HHwH3vLA=",
8390 "path": "./private/openarc",
8391 "type": "path"
8392 },
8393 "original": {
8394 "path": "./private/openarc",
8395 "type": "path"
8396 }
8397 },
8398 "s-private-opendmarc": {
8399 "inputs": {
8400 "environment": "environment_31",
8401 "files-watcher": "files-watcher_15",
8402 "opendmarc": "opendmarc_7",
8403 "secrets": "secrets_24"
8404 },
8405 "locked": {
8406 "lastModified": 1,
8407 "narHash": "sha256-2lx6oVf/3OuqWdP8dHlA6f6+npwx6N/oFv/WkqIbV1Q=",
8408 "path": "./private/opendmarc",
8409 "type": "path"
8410 },
8411 "original": {
8412 "path": "./private/opendmarc",
8413 "type": "path"
8414 }
8415 },
8416 "s-private-openldap": {
8417 "locked": {
8418 "lastModified": 1,
8419 "narHash": "sha256-Z4Gg8wU/wVVQDFwWAC9k1LW+yg0xI1iNhKB51K9Gq4c=",
8420 "path": "./private/openldap",
8421 "type": "path"
8422 },
8423 "original": {
8424 "path": "./private/openldap",
8425 "type": "path"
8426 }
8427 },
8428 "s-private-paste": {
8429 "inputs": {
8430 "paste": "paste_2"
8431 },
8432 "locked": {
8433 "lastModified": 1,
8434 "narHash": "sha256-w8WnrSJj05Y8hJsJfY46sI6PUSg2xo5h9t0zWP4woog=",
8435 "path": "./private/paste",
8436 "type": "path"
8437 },
8438 "original": {
8439 "path": "./private/paste",
8440 "type": "path"
8441 }
8442 },
8443 "s-private-peertube": {
8444 "inputs": {
8445 "peertube_open_instance": "peertube_open_instance_2",
8446 "peertube_origin": "peertube_origin_2"
8447 },
8448 "locked": {
8449 "lastModified": 1,
8450 "narHash": "sha256-1MpzxwaZ+TZJzBf+Do/PFdI9khD1GSvfjuSC0h2Hk58=",
8451 "path": "./private/peertube",
8452 "type": "path"
8453 },
8454 "original": {
8455 "path": "./private/peertube",
8456 "type": "path"
8457 }
8458 },
8459 "s-private-php": {
8460 "inputs": {
8461 "flake-utils": "flake-utils_60",
8462 "nixpkgs": "nixpkgs_99",
8463 "nixpkgs-4": "nixpkgs-4_4"
8464 },
8465 "locked": {
8466 "lastModified": 1,
8467 "narHash": "sha256-Qs+O86L4sPArYWm7wMCFNKLCWfUwkz8STePsn5K9Xwk=",
8468 "path": "./private/php",
8469 "type": "path"
8470 },
8471 "original": {
8472 "path": "./private/php",
8473 "type": "path"
8474 }
8475 },
8476 "s-private-ssh": {
8477 "inputs": {
8478 "environment": "environment_32",
8479 "secrets": "secrets_25"
8480 },
8481 "locked": {
8482 "lastModified": 1,
8483 "narHash": "sha256-ckUFmIHxrUuBMxOHhzgT+4sX/ek/Op0PjdyL3NyU/Mc=",
8484 "path": "./private/ssh",
8485 "type": "path"
8486 },
8487 "original": {
8488 "path": "./private/ssh",
8489 "type": "path"
8490 }
8491 },
8492 "s-private-system": {
8493 "inputs": {
8494 "backports": "backports_7",
8495 "environment": "environment_33",
8496 "mypackages": "mypackages_12",
8497 "myuids": "myuids_42",
8498 "secrets-public": "secrets-public_7"
8499 },
8500 "locked": {
8501 "lastModified": 1,
8502 "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
8503 "path": "./private/system",
8504 "type": "path"
8505 },
8506 "original": {
8507 "path": "./private/system",
8508 "type": "path"
8509 }
8510 },
8511 "s-rsync_backup": {
8512 "locked": {
8513 "lastModified": 1,
8514 "narHash": "sha256-TxLsFx4DTTScMHkvR0pJgzYea6ILiu1Dl6LA67LtYGo=",
8515 "path": "./rsync_backup",
8516 "type": "path"
8517 },
8518 "original": {
8519 "path": "./rsync_backup",
8520 "type": "path"
8521 }
8522 },
8523 "s-secrets": {
8524 "locked": {
8525 "lastModified": 1,
8526 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8527 "path": "./secrets",
8528 "type": "path"
8529 },
8530 "original": {
8531 "path": "./secrets",
8532 "type": "path"
8533 }
8534 },
8535 "s-surfer": {
8536 "inputs": {
8537 "flake-utils": "flake-utils_62",
8538 "mypackages": "mypackages_13",
8539 "nixpkgs": "nixpkgs_103",
8540 "surfer": "surfer_2"
8541 },
8542 "locked": {
8543 "lastModified": 1,
8544 "narHash": "sha256-67TqavMsANZI6X15AFUQZ2zHSmoWJc80XaXwEGhWsRg=",
8545 "path": "./surfer",
8546 "type": "path"
8547 },
8548 "original": {
8549 "path": "./surfer",
8550 "type": "path"
8551 }
8552 },
8553 "s-taskwarrior-web": {
8554 "inputs": {
8555 "flake-utils": "flake-utils_63",
8556 "nixpkgs": "nixpkgs_104",
8557 "taskwarrior-web": "taskwarrior-web_2"
8558 },
8559 "locked": {
8560 "lastModified": 1,
8561 "narHash": "sha256-0u83WrBwbIpuyy82UK3EUqC/dgoCoDzptRe+G4VhKXo=",
8562 "path": "./taskwarrior-web",
8563 "type": "path"
8564 },
8565 "original": {
8566 "path": "./taskwarrior-web",
8567 "type": "path"
8568 }
8569 },
8570 "secrets": {
8571 "locked": {
8572 "lastModified": 1,
8573 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8574 "path": "../../secrets",
8575 "type": "path"
8576 },
8577 "original": {
8578 "path": "../../secrets",
8579 "type": "path"
8580 }
8581 },
8582 "secrets-public": {
8583 "locked": {
8584 "lastModified": 1,
8585 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8586 "path": "../../secrets",
8587 "type": "path"
8588 },
8589 "original": {
8590 "path": "../../secrets",
8591 "type": "path"
8592 }
8593 },
8594 "secrets-public_2": {
8595 "locked": {
8596 "lastModified": 1,
8597 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8598 "path": "../../secrets",
8599 "type": "path"
8600 },
8601 "original": {
8602 "path": "../../secrets",
8603 "type": "path"
8604 }
8605 },
8606 "secrets-public_3": {
8607 "locked": {
8608 "lastModified": 1,
8609 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8610 "path": "../../secrets",
8611 "type": "path"
8612 },
8613 "original": {
8614 "path": "../../secrets",
8615 "type": "path"
8616 }
8617 },
8618 "secrets-public_4": {
8619 "locked": {
8620 "lastModified": 1,
8621 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8622 "path": "../../secrets",
8623 "type": "path"
8624 },
8625 "original": {
8626 "path": "../../secrets",
8627 "type": "path"
8628 }
8629 },
8630 "secrets-public_5": {
8631 "locked": {
8632 "lastModified": 1,
8633 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8634 "path": "../../secrets",
8635 "type": "path"
8636 },
8637 "original": {
8638 "path": "../../secrets",
8639 "type": "path"
8640 }
8641 },
8642 "secrets-public_6": {
8643 "locked": {
8644 "lastModified": 1,
8645 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8646 "path": "../../secrets",
8647 "type": "path"
8648 },
8649 "original": {
8650 "path": "../../secrets",
8651 "type": "path"
8652 }
8653 },
8654 "secrets-public_7": {
8655 "locked": {
8656 "lastModified": 1,
8657 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8658 "path": "../../secrets",
8659 "type": "path"
8660 },
8661 "original": {
8662 "path": "../../secrets",
8663 "type": "path"
8664 }
8665 },
8666 "secrets_10": {
8667 "locked": {
8668 "lastModified": 1,
8669 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8670 "path": "../../secrets",
8671 "type": "path"
8672 },
8673 "original": {
8674 "path": "../../secrets",
8675 "type": "path"
8676 }
8677 },
8678 "secrets_11": {
8679 "locked": {
8680 "lastModified": 1,
8681 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8682 "path": "../../secrets",
8683 "type": "path"
8684 },
8685 "original": {
8686 "path": "../../secrets",
8687 "type": "path"
8688 }
8689 },
8690 "secrets_12": {
8691 "locked": {
8692 "lastModified": 1,
8693 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8694 "path": "../../secrets",
8695 "type": "path"
8696 },
8697 "original": {
8698 "path": "../../secrets",
8699 "type": "path"
8700 }
8701 },
8702 "secrets_13": {
8703 "locked": {
8704 "lastModified": 1,
8705 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8706 "path": "../../secrets",
8707 "type": "path"
8708 },
8709 "original": {
8710 "path": "../../secrets",
8711 "type": "path"
8712 }
8713 },
8714 "secrets_14": {
8715 "locked": {
8716 "lastModified": 1,
8717 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8718 "path": "../../secrets",
8719 "type": "path"
8720 },
8721 "original": {
8722 "path": "../../secrets",
8723 "type": "path"
8724 }
8725 },
8726 "secrets_15": {
8727 "locked": {
8728 "lastModified": 1,
8729 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8730 "path": "../../secrets",
8731 "type": "path"
8732 },
8733 "original": {
8734 "path": "../../secrets",
8735 "type": "path"
8736 }
8737 },
8738 "secrets_16": {
8739 "locked": {
8740 "lastModified": 1,
8741 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8742 "path": "../../secrets",
8743 "type": "path"
8744 },
8745 "original": {
8746 "path": "../../secrets",
8747 "type": "path"
8748 }
8749 },
8750 "secrets_17": {
8751 "locked": {
8752 "lastModified": 1,
8753 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8754 "path": "../../flakes/secrets",
8755 "type": "path"
8756 },
8757 "original": {
8758 "path": "../../flakes/secrets",
8759 "type": "path"
8760 }
8761 },
8762 "secrets_18": {
8763 "locked": {
8764 "lastModified": 1,
8765 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8766 "path": "../../secrets",
8767 "type": "path"
8768 },
8769 "original": {
8770 "path": "../../secrets",
8771 "type": "path"
8772 }
8773 },
8774 "secrets_19": {
8775 "locked": {
8776 "lastModified": 1,
8777 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8778 "path": "../../flakes/secrets",
8779 "type": "path"
8780 },
8781 "original": {
8782 "path": "../../flakes/secrets",
8783 "type": "path"
8784 }
8785 },
8786 "secrets_2": {
8787 "locked": {
8788 "lastModified": 1,
8789 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8790 "path": "../../secrets",
8791 "type": "path"
8792 },
8793 "original": {
8794 "path": "../../secrets",
8795 "type": "path"
8796 }
8797 },
8798 "secrets_20": {
8799 "locked": {
8800 "lastModified": 1,
8801 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8802 "path": "../../secrets",
8803 "type": "path"
8804 },
8805 "original": {
8806 "path": "../../secrets",
8807 "type": "path"
8808 }
8809 },
8810 "secrets_21": {
8811 "locked": {
8812 "lastModified": 1,
8813 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8814 "path": "../../secrets",
8815 "type": "path"
8816 },
8817 "original": {
8818 "path": "../../secrets",
8819 "type": "path"
8820 }
8821 },
8822 "secrets_22": {
8823 "locked": {
8824 "lastModified": 1,
8825 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8826 "path": "../../secrets",
8827 "type": "path"
8828 },
8829 "original": {
8830 "path": "../../secrets",
8831 "type": "path"
8832 }
8833 },
8834 "secrets_23": {
8835 "locked": {
8836 "lastModified": 1,
8837 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8838 "path": "../../secrets",
8839 "type": "path"
8840 },
8841 "original": {
8842 "path": "../../secrets",
8843 "type": "path"
8844 }
8845 },
8846 "secrets_24": {
8847 "locked": {
8848 "lastModified": 1,
8849 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8850 "path": "../../secrets",
8851 "type": "path"
8852 },
8853 "original": {
8854 "path": "../../secrets",
8855 "type": "path"
8856 }
8857 },
8858 "secrets_25": {
8859 "locked": {
8860 "lastModified": 1,
8861 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8862 "path": "../../secrets",
8863 "type": "path"
8864 },
8865 "original": {
8866 "path": "../../secrets",
8867 "type": "path"
8868 }
8869 },
8870 "secrets_26": {
8871 "locked": {
8872 "lastModified": 1,
8873 "narHash": "sha256-yvhc2jxW1AQVmtrKPoYPr5DgpXKt/ua+ATuxvE3iY6c=",
8874 "path": "./private/environment-dummy",
8875 "type": "path"
8876 },
8877 "original": {
8878 "path": "./private/environment-dummy",
8879 "type": "path"
8880 }
8881 },
8882 "secrets_3": {
8883 "locked": {
8884 "lastModified": 1,
8885 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8886 "path": "../../secrets",
8887 "type": "path"
8888 },
8889 "original": {
8890 "path": "../../secrets",
8891 "type": "path"
8892 }
8893 },
8894 "secrets_4": {
8895 "locked": {
8896 "lastModified": 1,
8897 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8898 "path": "../../secrets",
8899 "type": "path"
8900 },
8901 "original": {
8902 "path": "../../secrets",
8903 "type": "path"
8904 }
8905 },
8906 "secrets_5": {
8907 "locked": {
8908 "lastModified": 1,
8909 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8910 "path": "../../secrets",
8911 "type": "path"
8912 },
8913 "original": {
8914 "path": "../../secrets",
8915 "type": "path"
8916 }
8917 },
8918 "secrets_6": {
8919 "locked": {
8920 "lastModified": 1,
8921 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8922 "path": "../../flakes/secrets",
8923 "type": "path"
8924 },
8925 "original": {
8926 "path": "../../flakes/secrets",
8927 "type": "path"
8928 }
8929 },
8930 "secrets_7": {
8931 "locked": {
8932 "lastModified": 1,
8933 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8934 "path": "../../secrets",
8935 "type": "path"
8936 },
8937 "original": {
8938 "path": "../../secrets",
8939 "type": "path"
8940 }
8941 },
8942 "secrets_8": {
8943 "locked": {
8944 "lastModified": 1,
8945 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8946 "path": "../../flakes/secrets",
8947 "type": "path"
8948 },
8949 "original": {
8950 "path": "../../flakes/secrets",
8951 "type": "path"
8952 }
8953 },
8954 "secrets_9": {
8955 "locked": {
8956 "lastModified": 1,
8957 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
8958 "path": "../../secrets",
8959 "type": "path"
8960 },
8961 "original": {
8962 "path": "../../secrets",
8963 "type": "path"
8964 }
8965 },
8966 "ssh": {
8967 "inputs": {
8968 "environment": "environment_10",
8969 "secrets": "secrets_9"
8970 },
8971 "locked": {
8972 "lastModified": 1,
8973 "narHash": "sha256-ckUFmIHxrUuBMxOHhzgT+4sX/ek/Op0PjdyL3NyU/Mc=",
8974 "path": "../../flakes/private/ssh",
8975 "type": "path"
8976 },
8977 "original": {
8978 "path": "../../flakes/private/ssh",
8979 "type": "path"
8980 }
8981 },
8982 "stable": {
8983 "locked": {
8984 "lastModified": 1669735802,
8985 "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
8986 "owner": "NixOS",
8987 "repo": "nixpkgs",
8988 "rev": "731cc710aeebecbf45a258e977e8b68350549522",
8989 "type": "github"
8990 },
8991 "original": {
8992 "owner": "NixOS",
8993 "ref": "nixos-22.11",
8994 "repo": "nixpkgs",
8995 "type": "github"
8996 }
8997 },
8998 "stable_2": {
8999 "locked": {
9000 "lastModified": 1669735802,
9001 "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
9002 "owner": "NixOS",
9003 "repo": "nixpkgs",
9004 "rev": "731cc710aeebecbf45a258e977e8b68350549522",
9005 "type": "github"
9006 },
9007 "original": {
9008 "owner": "NixOS",
9009 "ref": "nixos-22.11",
9010 "repo": "nixpkgs",
9011 "type": "github"
9012 }
9013 },
9014 "stable_3": {
9015 "locked": {
9016 "lastModified": 1669735802,
9017 "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
9018 "owner": "NixOS",
9019 "repo": "nixpkgs",
9020 "rev": "731cc710aeebecbf45a258e977e8b68350549522",
9021 "type": "github"
9022 },
9023 "original": {
9024 "owner": "NixOS",
9025 "ref": "nixos-22.11",
9026 "repo": "nixpkgs",
9027 "type": "github"
9028 }
9029 },
9030 "stable_4": {
9031 "locked": {
9032 "lastModified": 1669735802,
9033 "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
9034 "owner": "NixOS",
9035 "repo": "nixpkgs",
9036 "rev": "731cc710aeebecbf45a258e977e8b68350549522",
9037 "type": "github"
9038 },
9039 "original": {
9040 "owner": "NixOS",
9041 "ref": "nixos-22.11",
9042 "repo": "nixpkgs",
9043 "type": "github"
9044 }
9045 },
9046 "stable_5": {
9047 "locked": {
9048 "lastModified": 1669735802,
9049 "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
9050 "owner": "NixOS",
9051 "repo": "nixpkgs",
9052 "rev": "731cc710aeebecbf45a258e977e8b68350549522",
9053 "type": "github"
9054 },
9055 "original": {
9056 "owner": "NixOS",
9057 "ref": "nixos-22.11",
9058 "repo": "nixpkgs",
9059 "type": "github"
9060 }
9061 },
9062 "stable_6": {
9063 "locked": {
9064 "lastModified": 1669735802,
9065 "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
9066 "owner": "NixOS",
9067 "repo": "nixpkgs",
9068 "rev": "731cc710aeebecbf45a258e977e8b68350549522",
9069 "type": "github"
9070 },
9071 "original": {
9072 "owner": "NixOS",
9073 "ref": "nixos-22.11",
9074 "repo": "nixpkgs",
9075 "type": "github"
9076 }
9077 },
9078 "stable_7": {
9079 "locked": {
9080 "lastModified": 1669735802,
9081 "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
9082 "owner": "NixOS",
9083 "repo": "nixpkgs",
9084 "rev": "731cc710aeebecbf45a258e977e8b68350549522",
9085 "type": "github"
9086 },
9087 "original": {
9088 "owner": "NixOS",
9089 "ref": "nixos-22.11",
9090 "repo": "nixpkgs",
9091 "type": "github"
9092 }
9093 },
9094 "surfer": {
9095 "flake": false,
9096 "locked": {
9097 "lastModified": 1588637864,
9098 "narHash": "sha256-B1Sbu1YSHj+ONSoT5v6bVlAHJWtceUV4O5huGhc8b0U=",
9099 "rev": "476177380452c9c7c5b1624805feedc824c5995e",
9100 "revCount": 318,
9101 "type": "git",
9102 "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
9103 },
9104 "original": {
9105 "rev": "476177380452c9c7c5b1624805feedc824c5995e",
9106 "type": "git",
9107 "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
9108 }
9109 },
9110 "surfer_2": {
9111 "flake": false,
9112 "locked": {
9113 "lastModified": 1588637864,
9114 "narHash": "sha256-B1Sbu1YSHj+ONSoT5v6bVlAHJWtceUV4O5huGhc8b0U=",
9115 "rev": "476177380452c9c7c5b1624805feedc824c5995e",
9116 "revCount": 318,
9117 "type": "git",
9118 "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
9119 },
9120 "original": {
9121 "rev": "476177380452c9c7c5b1624805feedc824c5995e",
9122 "type": "git",
9123 "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
9124 }
9125 },
9126 "system": {
9127 "inputs": {
9128 "backports": "backports",
9129 "environment": "environment_7",
9130 "mypackages": "mypackages",
9131 "myuids": "myuids_6",
9132 "secrets-public": "secrets-public"
9133 },
9134 "locked": {
9135 "lastModified": 1,
9136 "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
9137 "path": "../../flakes/private/system",
9138 "type": "path"
9139 },
9140 "original": {
9141 "path": "../../flakes/private/system",
9142 "type": "path"
9143 }
9144 },
9145 "system_2": {
9146 "inputs": {
9147 "backports": "backports_2",
9148 "environment": "environment_11",
9149 "mypackages": "mypackages_2",
9150 "myuids": "myuids_8",
9151 "secrets-public": "secrets-public_2"
9152 },
9153 "locked": {
9154 "lastModified": 1,
9155 "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
9156 "path": "../../flakes/private/system",
9157 "type": "path"
9158 },
9159 "original": {
9160 "path": "../../flakes/private/system",
9161 "type": "path"
9162 }
9163 },
9164 "system_3": {
9165 "inputs": {
9166 "backports": "backports_4",
9167 "environment": "environment_22",
9168 "mypackages": "mypackages_7",
9169 "myuids": "myuids_24",
9170 "secrets-public": "secrets-public_4"
9171 },
9172 "locked": {
9173 "lastModified": 1,
9174 "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
9175 "path": "../../flakes/private/system",
9176 "type": "path"
9177 },
9178 "original": {
9179 "path": "../../flakes/private/system",
9180 "type": "path"
9181 }
9182 },
9183 "system_4": {
9184 "inputs": {
9185 "backports": "backports_5",
9186 "environment": "environment_25",
9187 "mypackages": "mypackages_8",
9188 "myuids": "myuids_27",
9189 "secrets-public": "secrets-public_5"
9190 },
9191 "locked": {
9192 "lastModified": 1,
9193 "narHash": "sha256-vOs7fcQVsOSl/gsyzFXfsWE7u0/O9mIKpHnwDwHxJTQ=",
9194 "path": "../../flakes/private/system",
9195 "type": "path"
9196 },
9197 "original": {
9198 "path": "../../flakes/private/system",
9199 "type": "path"
9200 }
9201 },
9202 "taskwarrior-web": {
9203 "flake": false,
9204 "locked": {
9205 "lastModified": 1546434241,
9206 "narHash": "sha256-BLPBglkV1HCJECSIdyMEergChiV+rwNOClYJnzlZGQk=",
9207 "owner": "theunraveler",
9208 "repo": "taskwarrior-web",
9209 "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
9210 "type": "github"
9211 },
9212 "original": {
9213 "owner": "theunraveler",
9214 "repo": "taskwarrior-web",
9215 "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
9216 "type": "github"
9217 }
9218 },
9219 "taskwarrior-web_2": {
9220 "flake": false,
9221 "locked": {
9222 "lastModified": 1546434241,
9223 "narHash": "sha256-BLPBglkV1HCJECSIdyMEergChiV+rwNOClYJnzlZGQk=",
9224 "owner": "theunraveler",
9225 "repo": "taskwarrior-web",
9226 "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
9227 "type": "github"
9228 },
9229 "original": {
9230 "owner": "theunraveler",
9231 "repo": "taskwarrior-web",
9232 "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
9233 "type": "github"
9234 }
9235 },
9236 "treefmt-nix": {
9237 "inputs": {
9238 "nixpkgs": [
9239 "n-backup-2",
9240 "my-lib",
9241 "nixos-anywhere",
9242 "nixpkgs"
9243 ]
9244 },
9245 "locked": {
9246 "lastModified": 1687940979,
9247 "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
9248 "owner": "numtide",
9249 "repo": "treefmt-nix",
9250 "rev": "0a4f06c27610a99080b69433873885df82003aae",
9251 "type": "github"
9252 },
9253 "original": {
9254 "owner": "numtide",
9255 "repo": "treefmt-nix",
9256 "type": "github"
9257 }
9258 },
9259 "treefmt-nix_2": {
9260 "inputs": {
9261 "nixpkgs": [
9262 "n-dilion",
9263 "my-lib",
9264 "nixos-anywhere",
9265 "nixpkgs"
9266 ]
9267 },
9268 "locked": {
9269 "lastModified": 1687940979,
9270 "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
9271 "owner": "numtide",
9272 "repo": "treefmt-nix",
9273 "rev": "0a4f06c27610a99080b69433873885df82003aae",
9274 "type": "github"
9275 },
9276 "original": {
9277 "owner": "numtide",
9278 "repo": "treefmt-nix",
9279 "type": "github"
9280 }
9281 },
9282 "treefmt-nix_3": {
9283 "inputs": {
9284 "nixpkgs": [
9285 "n-eldiron",
9286 "my-lib",
9287 "nixos-anywhere",
9288 "nixpkgs"
9289 ]
9290 },
9291 "locked": {
9292 "lastModified": 1687940979,
9293 "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
9294 "owner": "numtide",
9295 "repo": "treefmt-nix",
9296 "rev": "0a4f06c27610a99080b69433873885df82003aae",
9297 "type": "github"
9298 },
9299 "original": {
9300 "owner": "numtide",
9301 "repo": "treefmt-nix",
9302 "type": "github"
9303 }
9304 },
9305 "treefmt-nix_4": {
9306 "inputs": {
9307 "nixpkgs": [
9308 "n-monitoring-1",
9309 "my-lib",
9310 "nixos-anywhere",
9311 "nixpkgs"
9312 ]
9313 },
9314 "locked": {
9315 "lastModified": 1687940979,
9316 "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
9317 "owner": "numtide",
9318 "repo": "treefmt-nix",
9319 "rev": "0a4f06c27610a99080b69433873885df82003aae",
9320 "type": "github"
9321 },
9322 "original": {
9323 "owner": "numtide",
9324 "repo": "treefmt-nix",
9325 "type": "github"
9326 }
9327 },
9328 "treefmt-nix_5": {
9329 "inputs": {
9330 "nixpkgs": [
9331 "n-quatresaisons",
9332 "my-lib",
9333 "nixos-anywhere",
9334 "nixpkgs"
9335 ]
9336 },
9337 "locked": {
9338 "lastModified": 1687940979,
9339 "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
9340 "owner": "numtide",
9341 "repo": "treefmt-nix",
9342 "rev": "0a4f06c27610a99080b69433873885df82003aae",
9343 "type": "github"
9344 },
9345 "original": {
9346 "owner": "numtide",
9347 "repo": "treefmt-nix",
9348 "type": "github"
9349 }
9350 },
9351 "treefmt-nix_6": {
9352 "inputs": {
9353 "nixpkgs": [
9354 "n-zoldene",
9355 "my-lib",
9356 "nixos-anywhere",
9357 "nixpkgs"
9358 ]
9359 },
9360 "locked": {
9361 "lastModified": 1687940979,
9362 "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
9363 "owner": "numtide",
9364 "repo": "treefmt-nix",
9365 "rev": "0a4f06c27610a99080b69433873885df82003aae",
9366 "type": "github"
9367 },
9368 "original": {
9369 "owner": "numtide",
9370 "repo": "treefmt-nix",
9371 "type": "github"
9372 }
9373 },
9374 "treefmt-nix_7": {
9375 "inputs": {
9376 "nixpkgs": [
9377 "s-lib",
9378 "nixos-anywhere",
9379 "nixpkgs"
9380 ]
9381 },
9382 "locked": {
9383 "lastModified": 1687940979,
9384 "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
9385 "owner": "numtide",
9386 "repo": "treefmt-nix",
9387 "rev": "0a4f06c27610a99080b69433873885df82003aae",
9388 "type": "github"
9389 },
9390 "original": {
9391 "owner": "numtide",
9392 "repo": "treefmt-nix",
9393 "type": "github"
9394 }
9395 },
9396 "webapps-ttrss": {
9397 "flake": false,
9398 "locked": {
9399 "lastModified": 1546759381,
9400 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9401 "ref": "master",
9402 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9403 "revCount": 9256,
9404 "type": "git",
9405 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9406 },
9407 "original": {
9408 "ref": "master",
9409 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9410 "type": "git",
9411 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9412 }
9413 },
9414 "webapps-ttrss_10": {
9415 "flake": false,
9416 "locked": {
9417 "lastModified": 1546759381,
9418 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9419 "ref": "master",
9420 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9421 "revCount": 9256,
9422 "type": "git",
9423 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9424 },
9425 "original": {
9426 "ref": "master",
9427 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9428 "type": "git",
9429 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9430 }
9431 },
9432 "webapps-ttrss_11": {
9433 "flake": false,
9434 "locked": {
9435 "lastModified": 1546759381,
9436 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9437 "ref": "master",
9438 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9439 "revCount": 9256,
9440 "type": "git",
9441 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9442 },
9443 "original": {
9444 "ref": "master",
9445 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9446 "type": "git",
9447 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9448 }
9449 },
9450 "webapps-ttrss_12": {
9451 "flake": false,
9452 "locked": {
9453 "lastModified": 1546759381,
9454 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9455 "ref": "master",
9456 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9457 "revCount": 9256,
9458 "type": "git",
9459 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9460 },
9461 "original": {
9462 "ref": "master",
9463 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9464 "type": "git",
9465 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9466 }
9467 },
9468 "webapps-ttrss_13": {
9469 "flake": false,
9470 "locked": {
9471 "lastModified": 1546759381,
9472 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9473 "ref": "master",
9474 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9475 "revCount": 9256,
9476 "type": "git",
9477 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9478 },
9479 "original": {
9480 "ref": "master",
9481 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9482 "type": "git",
9483 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9484 }
9485 },
9486 "webapps-ttrss_14": {
9487 "flake": false,
9488 "locked": {
9489 "lastModified": 1546759381,
9490 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9491 "ref": "master",
9492 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9493 "revCount": 9256,
9494 "type": "git",
9495 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9496 },
9497 "original": {
9498 "ref": "master",
9499 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9500 "type": "git",
9501 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9502 }
9503 },
9504 "webapps-ttrss_15": {
9505 "flake": false,
9506 "locked": {
9507 "lastModified": 1546759381,
9508 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9509 "ref": "master",
9510 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9511 "revCount": 9256,
9512 "type": "git",
9513 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9514 },
9515 "original": {
9516 "ref": "master",
9517 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9518 "type": "git",
9519 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9520 }
9521 },
9522 "webapps-ttrss_2": {
9523 "flake": false,
9524 "locked": {
9525 "lastModified": 1546759381,
9526 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9527 "ref": "master",
9528 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9529 "revCount": 9256,
9530 "type": "git",
9531 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9532 },
9533 "original": {
9534 "ref": "master",
9535 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9536 "type": "git",
9537 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9538 }
9539 },
9540 "webapps-ttrss_3": {
9541 "flake": false,
9542 "locked": {
9543 "lastModified": 1546759381,
9544 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9545 "ref": "master",
9546 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9547 "revCount": 9256,
9548 "type": "git",
9549 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9550 },
9551 "original": {
9552 "ref": "master",
9553 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9554 "type": "git",
9555 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9556 }
9557 },
9558 "webapps-ttrss_4": {
9559 "flake": false,
9560 "locked": {
9561 "lastModified": 1546759381,
9562 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9563 "ref": "master",
9564 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9565 "revCount": 9256,
9566 "type": "git",
9567 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9568 },
9569 "original": {
9570 "ref": "master",
9571 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9572 "type": "git",
9573 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9574 }
9575 },
9576 "webapps-ttrss_5": {
9577 "flake": false,
9578 "locked": {
9579 "lastModified": 1546759381,
9580 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9581 "ref": "master",
9582 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9583 "revCount": 9256,
9584 "type": "git",
9585 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9586 },
9587 "original": {
9588 "ref": "master",
9589 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9590 "type": "git",
9591 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9592 }
9593 },
9594 "webapps-ttrss_6": {
9595 "flake": false,
9596 "locked": {
9597 "lastModified": 1546759381,
9598 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9599 "ref": "master",
9600 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9601 "revCount": 9256,
9602 "type": "git",
9603 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9604 },
9605 "original": {
9606 "ref": "master",
9607 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9608 "type": "git",
9609 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9610 }
9611 },
9612 "webapps-ttrss_7": {
9613 "flake": false,
9614 "locked": {
9615 "lastModified": 1546759381,
9616 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9617 "ref": "master",
9618 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9619 "revCount": 9256,
9620 "type": "git",
9621 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9622 },
9623 "original": {
9624 "ref": "master",
9625 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9626 "type": "git",
9627 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9628 }
9629 },
9630 "webapps-ttrss_8": {
9631 "flake": false,
9632 "locked": {
9633 "lastModified": 1546759381,
9634 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9635 "ref": "master",
9636 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9637 "revCount": 9256,
9638 "type": "git",
9639 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9640 },
9641 "original": {
9642 "ref": "master",
9643 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9644 "type": "git",
9645 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9646 }
9647 },
9648 "webapps-ttrss_9": {
9649 "flake": false,
9650 "locked": {
9651 "lastModified": 1546759381,
9652 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
9653 "ref": "master",
9654 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9655 "revCount": 9256,
9656 "type": "git",
9657 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9658 },
9659 "original": {
9660 "ref": "master",
9661 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
9662 "type": "git",
9663 "url": "https://git.tt-rss.org/fox/tt-rss.git"
9664 }
9665 }
9666 },
9667 "root": "root",
9668 "version": 7
9669}
diff --git a/flakes/flake.nix b/flakes/flake.nix
new file mode 100644
index 0000000..aecff57
--- /dev/null
+++ b/flakes/flake.nix
@@ -0,0 +1,67 @@
1{
2 description = "immae-eu infrastructure";
3 inputs = {
4 s-backports.url = "path:./backports";
5 s-copanier.url = "path:./copanier";
6 s-diaspora.url = "path:./diaspora";
7 s-etherpad-lite.url = "path:./etherpad-lite";
8 s-fiche.url = "path:./fiche";
9 s-files-watcher.url = "path:./files-watcher";
10 s-grocy.url = "path:./grocy";
11 s-lib.url = "path:./lib";
12 s-loginctl-linger.url = "path:./loginctl-linger";
13 s-mastodon.url = "path:./mastodon";
14 s-mediagoblin.url = "path:./mediagoblin";
15 s-multi-apache-container.url = "path:./multi-apache-container";
16 s-mypackages.url = "path:./mypackages";
17 s-myuids.url = "path:./myuids";
18 s-naemon.url = "path:./naemon";
19 s-openarc.url = "path:./openarc";
20 s-opendmarc.url = "path:./opendmarc";
21 s-paste.url = "path:./paste";
22 s-peertube.url = "path:./peertube";
23 s-rsync_backup.url = "path:./rsync_backup";
24 s-secrets.url = "path:./secrets";
25 s-surfer.url = "path:./surfer";
26 s-taskwarrior-web.url = "path:./taskwarrior-web";
27
28 s-private-buildbot.url = "path:./private/buildbot";
29 s-private-chatons.url = "path:./private/chatons";
30 s-private-environment.url = "path:./private/environment";
31 s-private-mail-relay.url = "path:./private/mail-relay";
32 s-private-milters.url = "path:./private/milters";
33 s-private-monitoring.url = "path:./private/monitoring";
34 s-private-openarc.url = "path:./private/openarc";
35 s-private-opendmarc.url = "path:./private/opendmarc";
36 s-private-openldap.url = "path:./private/openldap";
37 s-private-paste.url = "path:./private/paste";
38 s-private-peertube.url = "path:./private/peertube";
39 s-private-php.url = "path:./private/php";
40 s-private-ssh.url = "path:./private/ssh";
41 s-private-system.url = "path:./private/system";
42
43 n-backup-2.url = "path:../systems/backup-2";
44 n-dilion.url = "path:../systems/dilion";
45 n-eldiron.url = "path:../systems/eldiron";
46 n-monitoring-1.url = "path:../systems/monitoring-1";
47 n-quatresaisons.url = "path:../systems/quatresaisons";
48 n-zoldene.url = "path:../systems/zoldene";
49
50 secrets.url = "path:./private/environment-dummy";
51 };
52 outputs = inputs@{ self, secrets, ... }: {
53 subflakes = let
54 flakeNames = builtins.map (a: builtins.substring 2 (builtins.stringLength a) a) (builtins.filter (a: builtins.substring 0 2 a == "s-") (builtins.attrNames inputs));
55 partitionned = builtins.partition (a: builtins.substring 0 8 a == "private-") flakeNames;
56 privateFlakes = builtins.map (a: builtins.substring 8 (builtins.stringLength a) a) partitionned.right;
57 publicFlakes = partitionned.wrong;
58
59 nodeFlakes = builtins.map (a: builtins.substring 2 (builtins.stringLength a) a) (builtins.filter (a: builtins.substring 0 2 a == "n-") (builtins.attrNames inputs));
60 in {
61 public = builtins.foldl' (a: b: a // { "${b}" = inputs."s-${b}"; }) {} publicFlakes;
62 private = builtins.foldl' (a: b: a // { "${b}" = inputs."s-private-${b}"; }) {} privateFlakes;
63 nodes = builtins.foldl' (a: b: a // { "${b}" = inputs."n-${b}"; }) {} nodeFlakes;
64 inherit secrets;
65 };
66 };
67}
diff --git a/flakes/grocy/default.nix b/flakes/grocy/default.nix
new file mode 100644
index 0000000..26b6ed8
--- /dev/null
+++ b/flakes/grocy/default.nix
@@ -0,0 +1,47 @@
1{ varDir ? "/var/lib/grocy", stdenv, callPackage, composerEnv, fetchurl, src, runCommand, git, which, jq, yarn2nix-moretea }:
2let
3 version = "2.6.1-1";
4 patchedPackages = stdenv.mkDerivation rec {
5 name = "grocy";
6 inherit src;
7 buildInputs = [ jq ];
8 patches = [ ./yarn.patch ];
9 installPhase = ''
10 mkdir $out
11 cat package.json | jq -r '.version = "${version}"' > $out/package.json
12 cp yarn.lock $out/
13 '';
14 };
15 yarnModules = yarn2nix-moretea.mkYarnModules rec {
16 name = "grocy-yarn";
17 pname = name;
18 version = version;
19 packageJSON = "${patchedPackages}/package.json";
20 yarnLock = "${patchedPackages}/yarn.lock";
21 yarnNix = ./yarn-packages.nix;
22 pkgConfig = {
23 all = {
24 buildInputs = [ git which ];
25 };
26 };
27 };
28 app = composerEnv.buildPackage (
29 import ./php-packages.nix { inherit composerEnv fetchurl; } //
30 {
31 name = "grocy";
32 inherit src;
33 noDev = true;
34 buildInputs = [ yarnModules ];
35 postInstall = ''
36 rm -rf data
37 ln -sf ${varDir}/data data
38 ln -sf ${yarnModules}/node_modules public
39 '';
40 passthru = {
41 inherit varDir yarnModules;
42 webRoot = "${app}/public";
43 };
44 }
45 );
46in
47 app
diff --git a/flakes/grocy/flake.lock b/flakes/grocy/flake.lock
new file mode 100644
index 0000000..13aa4a6
--- /dev/null
+++ b/flakes/grocy/flake.lock
@@ -0,0 +1,150 @@
1{
2 "nodes": {
3 "flake-parts": {
4 "inputs": {
5 "nixpkgs-lib": "nixpkgs-lib"
6 },
7 "locked": {
8 "lastModified": 1675295133,
9 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
10 "owner": "hercules-ci",
11 "repo": "flake-parts",
12 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
13 "type": "github"
14 },
15 "original": {
16 "owner": "hercules-ci",
17 "repo": "flake-parts",
18 "type": "github"
19 }
20 },
21 "flake-utils": {
22 "locked": {
23 "lastModified": 1648297722,
24 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
25 "owner": "numtide",
26 "repo": "flake-utils",
27 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
28 "type": "github"
29 },
30 "original": {
31 "owner": "numtide",
32 "repo": "flake-utils",
33 "type": "github"
34 }
35 },
36 "grocy": {
37 "flake": false,
38 "locked": {
39 "lastModified": 1585166193,
40 "narHash": "sha256-rq1Fma/VgU01qXQmCghrt5k+LXWYt8z9b0NvGA7+/Y8=",
41 "owner": "grocy",
42 "repo": "grocy",
43 "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
44 "type": "github"
45 },
46 "original": {
47 "owner": "grocy",
48 "repo": "grocy",
49 "rev": "d7738aa1ec330c81f11e4976681df0299d4ed35a",
50 "type": "github"
51 }
52 },
53 "mypackages": {
54 "inputs": {
55 "flake-parts": "flake-parts",
56 "nixpkgs": "nixpkgs",
57 "webapps-ttrss": "webapps-ttrss"
58 },
59 "locked": {
60 "lastModified": 1,
61 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
62 "path": "../mypackages",
63 "type": "path"
64 },
65 "original": {
66 "path": "../mypackages",
67 "type": "path"
68 }
69 },
70 "nixpkgs": {
71 "locked": {
72 "lastModified": 1646497237,
73 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
74 "owner": "nixos",
75 "repo": "nixpkgs",
76 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
77 "type": "github"
78 },
79 "original": {
80 "owner": "nixos",
81 "repo": "nixpkgs",
82 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
83 "type": "github"
84 }
85 },
86 "nixpkgs-lib": {
87 "locked": {
88 "dir": "lib",
89 "lastModified": 1675183161,
90 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
91 "owner": "NixOS",
92 "repo": "nixpkgs",
93 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
94 "type": "github"
95 },
96 "original": {
97 "dir": "lib",
98 "owner": "NixOS",
99 "ref": "nixos-unstable",
100 "repo": "nixpkgs",
101 "type": "github"
102 }
103 },
104 "nixpkgs_2": {
105 "flake": false,
106 "locked": {
107 "lastModified": 1596265691,
108 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
109 "owner": "NixOS",
110 "repo": "nixpkgs",
111 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
112 "type": "github"
113 },
114 "original": {
115 "owner": "NixOS",
116 "repo": "nixpkgs",
117 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
118 "type": "github"
119 }
120 },
121 "root": {
122 "inputs": {
123 "flake-utils": "flake-utils",
124 "grocy": "grocy",
125 "mypackages": "mypackages",
126 "nixpkgs": "nixpkgs_2"
127 }
128 },
129 "webapps-ttrss": {
130 "flake": false,
131 "locked": {
132 "lastModified": 1546759381,
133 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
134 "ref": "master",
135 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
136 "revCount": 9256,
137 "type": "git",
138 "url": "https://git.tt-rss.org/fox/tt-rss.git"
139 },
140 "original": {
141 "ref": "master",
142 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
143 "type": "git",
144 "url": "https://git.tt-rss.org/fox/tt-rss.git"
145 }
146 }
147 },
148 "root": "root",
149 "version": 7
150}
diff --git a/flakes/grocy/flake.nix b/flakes/grocy/flake.nix
new file mode 100644
index 0000000..a08852f
--- /dev/null
+++ b/flakes/grocy/flake.nix
@@ -0,0 +1,35 @@
1{
2 description = "ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home";
3 inputs.flake-utils.url = "github:numtide/flake-utils";
4 inputs.nixpkgs = {
5 url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
6 flake = false;
7 };
8 inputs.grocy = {
9 url = "github:grocy/grocy/d7738aa1ec330c81f11e4976681df0299d4ed35a";
10 flake = false;
11 };
12 inputs.mypackages.url = "path:../mypackages";
13 outputs = { self, nixpkgs, grocy, flake-utils, mypackages }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
14 let
15 pkgs = import nixpkgs { inherit system; overlays = []; };
16 composerEnv = mypackages.lib."${system}".composerEnv;
17 version = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.grocy.original.ref;
18 inherit (pkgs) callPackage;
19 in rec {
20 packages.grocy = callPackage ./. { inherit composerEnv; src = grocy // { inherit version; }; };
21 defaultPackage = packages.grocy;
22 legacyPackages.grocy = packages.grocy;
23 checks = {
24 build = defaultPackage;
25 };
26 }
27 ) // rec {
28 overlays = {
29 grocy = final: prev: {
30 grocy = self.defaultPackage."${final.system}";
31 };
32 };
33 overlay = overlays.grocy;
34 };
35}
diff --git a/flakes/grocy/php-packages.nix b/flakes/grocy/php-packages.nix
new file mode 100644
index 0000000..47491f9
--- /dev/null
+++ b/flakes/grocy/php-packages.nix
@@ -0,0 +1,457 @@
1# Generated with composer2nix and adapted to return only the list of
2# packages
3{ composerEnv, fetchurl }:
4{
5 packages = {
6 "doctrine/inflector" = {
7 targetDir = "";
8 src = composerEnv.buildZipPackage {
9 name = "doctrine-inflector-ec3a55242203ffa6a4b27c58176da97ff0a7aec1";
10 src = fetchurl {
11 url = https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1;
12 sha256 = "18i6zyd5bh5zazgqr3c9bwi7s5vhm9wpnn2hd8vp8vgdp9x7f4hb";
13 };
14 };
15 };
16 "eluceo/ical" = {
17 targetDir = "";
18 src = composerEnv.buildZipPackage {
19 name = "eluceo-ical-97da0d94c9716e65c141066a2d96aa098379721b";
20 src = fetchurl {
21 url = https://api.github.com/repos/markuspoerschke/iCal/zipball/97da0d94c9716e65c141066a2d96aa098379721b;
22 sha256 = "195ajn30fdqxvvj03m4aa20yxf3li7w4zyl54r2f9rbwbibljia6";
23 };
24 };
25 };
26 "erusev/parsedown" = {
27 targetDir = "";
28 src = composerEnv.buildZipPackage {
29 name = "erusev-parsedown-cb17b6477dfff935958ba01325f2e8a2bfa6dab3";
30 src = fetchurl {
31 url = https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3;
32 sha256 = "1iil9v8g03m5vpxxg3a5qb2sxd1cs5c4p5i0k00cqjnjsxfrazxd";
33 };
34 };
35 };
36 "fig/http-message-util" = {
37 targetDir = "";
38 src = composerEnv.buildZipPackage {
39 name = "fig-http-message-util-3242caa9da7221a304b8f84eb9eaddae0a7cf422";
40 src = fetchurl {
41 url = https://api.github.com/repos/php-fig/http-message-util/zipball/3242caa9da7221a304b8f84eb9eaddae0a7cf422;
42 sha256 = "1cjbbsb8z4g340aqg8wrrc4vd9b7dksclqb7sh0xlmigjihn4shk";
43 };
44 };
45 };
46 "gettext/gettext" = {
47 targetDir = "";
48 src = composerEnv.buildZipPackage {
49 name = "gettext-gettext-e474f872f2c8636cf53fd283ec4ce1218f3d236a";
50 src = fetchurl {
51 url = https://api.github.com/repos/php-gettext/Gettext/zipball/e474f872f2c8636cf53fd283ec4ce1218f3d236a;
52 sha256 = "0plr9jzmhk2aw51qwhql2f2clak667qqlbxwx0q2g419w1ki1aky";
53 };
54 };
55 };
56 "gettext/languages" = {
57 targetDir = "";
58 src = composerEnv.buildZipPackage {
59 name = "gettext-languages-38ea0482f649e0802e475f0ed19fa993bcb7a618";
60 src = fetchurl {
61 url = https://api.github.com/repos/php-gettext/Languages/zipball/38ea0482f649e0802e475f0ed19fa993bcb7a618;
62 sha256 = "1f81ynhlki5h99crp6c1myyhsqhc74rjlxmmxkbmi986pbxr16m0";
63 };
64 };
65 };
66 "gumlet/php-image-resize" = {
67 targetDir = "";
68 src = composerEnv.buildZipPackage {
69 name = "gumlet-php-image-resize-06339a9c1b167acd58173db226f57957a6617547";
70 src = fetchurl {
71 url = https://api.github.com/repos/gumlet/php-image-resize/zipball/06339a9c1b167acd58173db226f57957a6617547;
72 sha256 = "1nn66n85n9cm8brdvw3lq6g36jl0ylv60dkzpjm8nsn83nqn9ns0";
73 };
74 };
75 };
76 "illuminate/container" = {
77 targetDir = "";
78 src = composerEnv.buildZipPackage {
79 name = "illuminate-container-b42e5ef939144b77f78130918da0ce2d9ee16574";
80 src = fetchurl {
81 url = https://api.github.com/repos/illuminate/container/zipball/b42e5ef939144b77f78130918da0ce2d9ee16574;
82 sha256 = "1szb8l69ap7agc8pqm3apqjspdgnhhb7xbrf6g77w9nwj4bdc9ix";
83 };
84 };
85 };
86 "illuminate/contracts" = {
87 targetDir = "";
88 src = composerEnv.buildZipPackage {
89 name = "illuminate-contracts-00fc6afee788fa07c311b0650ad276585f8aef96";
90 src = fetchurl {
91 url = https://api.github.com/repos/illuminate/contracts/zipball/00fc6afee788fa07c311b0650ad276585f8aef96;
92 sha256 = "1g7dlcjbgypfiag9sn3jaxhfd4qivsjgfh2kivazcg62n3sz8zca";
93 };
94 };
95 };
96 "illuminate/events" = {
97 targetDir = "";
98 src = composerEnv.buildZipPackage {
99 name = "illuminate-events-a85d7c273bc4e3357000c5fc4812374598515de3";
100 src = fetchurl {
101 url = https://api.github.com/repos/illuminate/events/zipball/a85d7c273bc4e3357000c5fc4812374598515de3;
102 sha256 = "1fdcabsqh43kzhi2n5703jiagmggchzdsjvi0ckc377nv6qkk5ym";
103 };
104 };
105 };
106 "illuminate/filesystem" = {
107 targetDir = "";
108 src = composerEnv.buildZipPackage {
109 name = "illuminate-filesystem-494ba903402d64ec49c8d869ab61791db34b2288";
110 src = fetchurl {
111 url = https://api.github.com/repos/illuminate/filesystem/zipball/494ba903402d64ec49c8d869ab61791db34b2288;
112 sha256 = "1ajj58125pzb746ad5pdkb4vn2ckg382x0c939r3jwv45913js3f";
113 };
114 };
115 };
116 "illuminate/support" = {
117 targetDir = "";
118 src = composerEnv.buildZipPackage {
119 name = "illuminate-support-df4af6a32908f1d89d74348624b57e3233eea247";
120 src = fetchurl {
121 url = https://api.github.com/repos/illuminate/support/zipball/df4af6a32908f1d89d74348624b57e3233eea247;
122 sha256 = "0n5kj0vbbakhzhkh0dfmpn4iqakkh783h0f2kl20wb9j6i6ywgjm";
123 };
124 };
125 };
126 "illuminate/view" = {
127 targetDir = "";
128 src = composerEnv.buildZipPackage {
129 name = "illuminate-view-c859919bc3be97a3f114377d5d812f047b8ea90d";
130 src = fetchurl {
131 url = https://api.github.com/repos/illuminate/view/zipball/c859919bc3be97a3f114377d5d812f047b8ea90d;
132 sha256 = "02l5wwbn6vhxl3af9avjdqwhj0wacigr6iwn9370pzw7cknlrvfm";
133 };
134 };
135 };
136 "jeremeamia/superclosure" = {
137 targetDir = "";
138 src = composerEnv.buildZipPackage {
139 name = "jeremeamia-superclosure-5707d5821b30b9a07acfb4d76949784aaa0e9ce9";
140 src = fetchurl {
141 url = https://api.github.com/repos/jeremeamia/super_closure/zipball/5707d5821b30b9a07acfb4d76949784aaa0e9ce9;
142 sha256 = "0jhj9s4fkv5lqpjs0r80czq2s8wv4i2ilaav9pkbwrpk17q9dh0c";
143 };
144 };
145 };
146 "morris/lessql" = {
147 targetDir = "";
148 src = composerEnv.buildZipPackage {
149 name = "morris-lessql-f4150517f6492a761ed1ccb8dd180769e1f89e54";
150 src = fetchurl {
151 url = https://api.github.com/repos/morris/lessql/zipball/f4150517f6492a761ed1ccb8dd180769e1f89e54;
152 sha256 = "1fcznaf0lijq3nd56iwjwkwc4j2v1li9vxp9hpghkc84ic0pf6c4";
153 };
154 };
155 };
156 "neomerx/cors-psr7" = {
157 targetDir = "";
158 src = composerEnv.buildZipPackage {
159 name = "neomerx-cors-psr7-2556e2013f16a55532c95928455257d5b6bbc6e2";
160 src = fetchurl {
161 url = https://api.github.com/repos/neomerx/cors-psr7/zipball/2556e2013f16a55532c95928455257d5b6bbc6e2;
162 sha256 = "0x64zvqjwaz2hkjl9vw29y29sny0z35c77yy8676scqlabwr98py";
163 };
164 };
165 };
166 "nesbot/carbon" = {
167 targetDir = "";
168 src = composerEnv.buildZipPackage {
169 name = "nesbot-carbon-bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d";
170 src = fetchurl {
171 url = https://api.github.com/repos/briannesbitt/Carbon/zipball/bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d;
172 sha256 = "0acyfvnsqy082390ijhi4mrlllgsskax3yj7bjrf97l6jlnci3g0";
173 };
174 };
175 };
176 "nikic/fast-route" = {
177 targetDir = "";
178 src = composerEnv.buildZipPackage {
179 name = "nikic-fast-route-181d480e08d9476e61381e04a71b34dc0432e812";
180 src = fetchurl {
181 url = https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812;
182 sha256 = "0sjqivm0gp6d6nal58n4r5wzyi21r4hdzn4v31ydgjgni7877p4i";
183 };
184 };
185 };
186 "nikic/php-parser" = {
187 targetDir = "";
188 src = composerEnv.buildZipPackage {
189 name = "nikic-php-parser-9a9981c347c5c49d6dfe5cf826bb882b824080dc";
190 src = fetchurl {
191 url = https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc;
192 sha256 = "1qk8g51sxh8vm9b2w98383045ig20g71p67izw7vrsazqljmxxyb";
193 };
194 };
195 };
196 "philo/laravel-blade" = {
197 targetDir = "";
198 src = composerEnv.buildZipPackage {
199 name = "philo-laravel-blade-3f0ce2ee198604c53c25188110e6d7b5e887527a";
200 src = fetchurl {
201 url = https://api.github.com/repos/PhiloNL/Laravel-Blade/zipball/3f0ce2ee198604c53c25188110e6d7b5e887527a;
202 sha256 = "03gpyga86qlc9770vsvymh3qbj22sy52k0f3r4lwgy0h2sbd3664";
203 };
204 };
205 };
206 "php-di/invoker" = {
207 targetDir = "";
208 src = composerEnv.buildZipPackage {
209 name = "php-di-invoker-540c27c86f663e20fe39a24cd72fa76cdb21d41a";
210 src = fetchurl {
211 url = https://api.github.com/repos/PHP-DI/Invoker/zipball/540c27c86f663e20fe39a24cd72fa76cdb21d41a;
212 sha256 = "0gchfy3ail4bps0hdwjj9ncgq354kfdk32y4wcrm61vnl71j59v6";
213 };
214 };
215 };
216 "php-di/php-di" = {
217 targetDir = "";
218 src = composerEnv.buildZipPackage {
219 name = "php-di-php-di-9bdcc2f41f5fb700ddd01bc4fa8d5bd7b3f94620";
220 src = fetchurl {
221 url = https://api.github.com/repos/PHP-DI/PHP-DI/zipball/9bdcc2f41f5fb700ddd01bc4fa8d5bd7b3f94620;
222 sha256 = "0ykzw0kx9f3f0qjqlvzmdds1cfnn7g5m3kns2k4p13gdrjn1pdnx";
223 };
224 };
225 };
226 "php-di/phpdoc-reader" = {
227 targetDir = "";
228 src = composerEnv.buildZipPackage {
229 name = "php-di-phpdoc-reader-15678f7451c020226807f520efb867ad26fbbfcf";
230 src = fetchurl {
231 url = https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/15678f7451c020226807f520efb867ad26fbbfcf;
232 sha256 = "09yi52spm0a7ccl40smnkw23wg3xj1r06nqxcslbya2axw9ziyh9";
233 };
234 };
235 };
236 "psr/container" = {
237 targetDir = "";
238 src = composerEnv.buildZipPackage {
239 name = "psr-container-b7ce3b176482dbbc1245ebf52b181af44c2cf55f";
240 src = fetchurl {
241 url = https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f;
242 sha256 = "0rkz64vgwb0gfi09klvgay4qnw993l1dc03vyip7d7m2zxi6cy4j";
243 };
244 };
245 };
246 "psr/http-factory" = {
247 targetDir = "";
248 src = composerEnv.buildZipPackage {
249 name = "psr-http-factory-12ac7fcd07e5b077433f5f2bee95b3a771bf61be";
250 src = fetchurl {
251 url = https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be;
252 sha256 = "0inbnqpc5bfhbbda9dwazsrw9xscfnc8rdx82q1qm3r446mc1vds";
253 };
254 };
255 };
256 "psr/http-message" = {
257 targetDir = "";
258 src = composerEnv.buildZipPackage {
259 name = "psr-http-message-f6561bf28d520154e4b0ec72be95418abe6d9363";
260 src = fetchurl {
261 url = https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363;
262 sha256 = "195dd67hva9bmr52iadr4kyp2gw2f5l51lplfiay2pv6l9y4cf45";
263 };
264 };
265 };
266 "psr/http-server-handler" = {
267 targetDir = "";
268 src = composerEnv.buildZipPackage {
269 name = "psr-http-server-handler-aff2f80e33b7f026ec96bb42f63242dc50ffcae7";
270 src = fetchurl {
271 url = https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7;
272 sha256 = "0sfz1j9lxirsld0zm0bqqmxf52krjn982w3fq9n27q7mpjd33y4x";
273 };
274 };
275 };
276 "psr/http-server-middleware" = {
277 targetDir = "";
278 src = composerEnv.buildZipPackage {
279 name = "psr-http-server-middleware-2296f45510945530b9dceb8bcedb5cb84d40c5f5";
280 src = fetchurl {
281 url = https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5;
282 sha256 = "1r92xj2hybnxcnamxqklk5kivkgy0bi34hhsh00dnwn9wmf3s0gj";
283 };
284 };
285 };
286 "psr/log" = {
287 targetDir = "";
288 src = composerEnv.buildZipPackage {
289 name = "psr-log-446d54b4cb6bf489fc9d75f55843658e6f25d801";
290 src = fetchurl {
291 url = https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801;
292 sha256 = "04baykaig5nmxsrwmzmcwbs60ixilcx1n0r9wdcnvxnnj64cf2kr";
293 };
294 };
295 };
296 "psr/simple-cache" = {
297 targetDir = "";
298 src = composerEnv.buildZipPackage {
299 name = "psr-simple-cache-408d5eafb83c57f6365a3ca330ff23aa4a5fa39b";
300 src = fetchurl {
301 url = https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b;
302 sha256 = "1djgzclkamjxi9jy4m9ggfzgq1vqxaga2ip7l3cj88p7rwkzjxgw";
303 };
304 };
305 };
306 "ralouphie/getallheaders" = {
307 targetDir = "";
308 src = composerEnv.buildZipPackage {
309 name = "ralouphie-getallheaders-120b605dfeb996808c31b6477290a714d356e822";
310 src = fetchurl {
311 url = https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822;
312 sha256 = "1bv7ndkkankrqlr2b4kw7qp3fl0dxi6bp26bnim6dnlhavd6a0gg";
313 };
314 };
315 };
316 "rubellum/slim-blade-view" = {
317 targetDir = "";
318 src = composerEnv.buildZipPackage {
319 name = "rubellum-slim-blade-view-9cdea69285acbf712463b38a9bb0b5ce23c4c98c";
320 src = fetchurl {
321 url = https://api.github.com/repos/rubellum/Slim-Blade-View/zipball/9cdea69285acbf712463b38a9bb0b5ce23c4c98c;
322 sha256 = "1774l8hiy7q9xjpfpps60xiphnlghna9qz9cszw9iqbkz90dl405";
323 };
324 };
325 };
326 "slim/http" = {
327 targetDir = "";
328 src = composerEnv.buildZipPackage {
329 name = "slim-http-c2e67ac1680207aa7863fd4721530b01f3436b2e";
330 src = fetchurl {
331 url = https://api.github.com/repos/slimphp/Slim-Http/zipball/c2e67ac1680207aa7863fd4721530b01f3436b2e;
332 sha256 = "1sp48gapv19kal2i2j1w335qk171h254ihy3ivp7js9b1ybyy4rz";
333 };
334 };
335 };
336 "slim/psr7" = {
337 targetDir = "";
338 src = composerEnv.buildZipPackage {
339 name = "slim-psr7-7ca5b5d96687b7c563238715cc80b12675d8b895";
340 src = fetchurl {
341 url = https://api.github.com/repos/slimphp/Slim-Psr7/zipball/7ca5b5d96687b7c563238715cc80b12675d8b895;
342 sha256 = "1r2krm85li2zkdh4w4kii5cpwpca169i0i66pylzyjbz6rg32zsf";
343 };
344 };
345 };
346 "slim/slim" = {
347 targetDir = "";
348 src = composerEnv.buildZipPackage {
349 name = "slim-slim-207acac048652a35d4762a737d59e317aedc02df";
350 src = fetchurl {
351 url = https://api.github.com/repos/slimphp/Slim/zipball/207acac048652a35d4762a737d59e317aedc02df;
352 sha256 = "0q7rxrmyilz0i90nkwbf64j5a892ky35l1f9a6l09xyrda1hbhdc";
353 };
354 };
355 };
356 "symfony/debug" = {
357 targetDir = "";
358 src = composerEnv.buildZipPackage {
359 name = "symfony-debug-a980d87a659648980d89193fd8b7a7ca89d97d21";
360 src = fetchurl {
361 url = https://api.github.com/repos/symfony/debug/zipball/a980d87a659648980d89193fd8b7a7ca89d97d21;
362 sha256 = "1qlmb4pvrapyhcxz4lk0jswhk1ki0634k3vgn2vs6vsf70fd4sqd";
363 };
364 };
365 };
366 "symfony/finder" = {
367 targetDir = "";
368 src = composerEnv.buildZipPackage {
369 name = "symfony-finder-ea69c129aed9fdeca781d4b77eb20b62cf5d5357";
370 src = fetchurl {
371 url = https://api.github.com/repos/symfony/finder/zipball/ea69c129aed9fdeca781d4b77eb20b62cf5d5357;
372 sha256 = "1k57fzn92pxvbcvvb9z2j7iibi2y4pg1gn8fcqrn678hdnpg9vl7";
373 };
374 };
375 };
376 "symfony/polyfill-mbstring" = {
377 targetDir = "";
378 src = composerEnv.buildZipPackage {
379 name = "symfony-polyfill-mbstring-34094cfa9abe1f0f14f48f490772db7a775559f2";
380 src = fetchurl {
381 url = https://api.github.com/repos/symfony/polyfill-mbstring/zipball/34094cfa9abe1f0f14f48f490772db7a775559f2;
382 sha256 = "1lnrmk1yrv9cbs7kb2cwfgqzq1hwl135bhbkr6yyayfk67zs3rqa";
383 };
384 };
385 };
386 "symfony/polyfill-php56" = {
387 targetDir = "";
388 src = composerEnv.buildZipPackage {
389 name = "symfony-polyfill-php56-16ec91cb06998b609501b55b7177b7d7c02badb3";
390 src = fetchurl {
391 url = https://api.github.com/repos/symfony/polyfill-php56/zipball/16ec91cb06998b609501b55b7177b7d7c02badb3;
392 sha256 = "0j0fi8lwqncvvwm132c88d87csx2cyblxvj7bcrdivjvkv1ymqky";
393 };
394 };
395 };
396 "symfony/polyfill-util" = {
397 targetDir = "";
398 src = composerEnv.buildZipPackage {
399 name = "symfony-polyfill-util-ba3cfcea6d0192cae46c62041f61cbb704b526d3";
400 src = fetchurl {
401 url = https://api.github.com/repos/symfony/polyfill-util/zipball/ba3cfcea6d0192cae46c62041f61cbb704b526d3;
402 sha256 = "0q18h0920jp3js9lnvzw7gnyi1nsi8035ddzz8nh7wvl6frwr703";
403 };
404 };
405 };
406 "symfony/translation" = {
407 targetDir = "";
408 src = composerEnv.buildZipPackage {
409 name = "symfony-translation-e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b";
410 src = fetchurl {
411 url = https://api.github.com/repos/symfony/translation/zipball/e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b;
412 sha256 = "1r83h9061pgakkgqxqn4j65bimgbx854pipangb15cg1ssgc83dl";
413 };
414 };
415 };
416 "symfony/translation-contracts" = {
417 targetDir = "";
418 src = composerEnv.buildZipPackage {
419 name = "symfony-translation-contracts-8cc682ac458d75557203b2f2f14b0b92e1c744ed";
420 src = fetchurl {
421 url = https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed;
422 sha256 = "10ra2n1qgzkb31sbn0cv1y425i80qk9v59yhh7x2ipjxw1lpv714";
423 };
424 };
425 };
426 "tuupola/callable-handler" = {
427 targetDir = "";
428 src = composerEnv.buildZipPackage {
429 name = "tuupola-callable-handler-8b9d87f88056d4234af317d65612d7b6307a747a";
430 src = fetchurl {
431 url = https://api.github.com/repos/tuupola/callable-handler/zipball/8b9d87f88056d4234af317d65612d7b6307a747a;
432 sha256 = "0ahp4yvyr31spvwd00fk991cnsdzgbw6kgvfqf89b4nb49adjwza";
433 };
434 };
435 };
436 "tuupola/cors-middleware" = {
437 targetDir = "";
438 src = composerEnv.buildZipPackage {
439 name = "tuupola-cors-middleware-a043f4f52b902ee8902f95d28aae05013a7180fc";
440 src = fetchurl {
441 url = https://api.github.com/repos/tuupola/cors-middleware/zipball/a043f4f52b902ee8902f95d28aae05013a7180fc;
442 sha256 = "0zw4xg4c165x0xkdqyxqw9q2ic2d8y235kk3mwijdxhv6f9f2m3g";
443 };
444 };
445 };
446 "tuupola/http-factory" = {
447 targetDir = "";
448 src = composerEnv.buildZipPackage {
449 name = "tuupola-http-factory-5fbde4c65a10d09a85652684a6e569542265a749";
450 src = fetchurl {
451 url = https://api.github.com/repos/tuupola/http-factory/zipball/5fbde4c65a10d09a85652684a6e569542265a749;
452 sha256 = "0r0skw1ywy17l1km6jrx46gd981i685y3rb45v0rrlgpljnm8i1n";
453 };
454 };
455 };
456 };
457}
diff --git a/flakes/grocy/yarn-packages.nix b/flakes/grocy/yarn-packages.nix
new file mode 100644
index 0000000..073fb5a
--- /dev/null
+++ b/flakes/grocy/yarn-packages.nix
@@ -0,0 +1,1085 @@
1{fetchurl, linkFarm}: rec {
2 offline_cache = linkFarm "offline" packages;
3 packages = [
4
5 {
6 name = "https___github.com_berrnd_bootstrap_combobox_archive_fcf0110146f4daab94888234c57d198b4ca5f129.tar.gz";
7 path = fetchurl {
8 name = "https___github.com_berrnd_bootstrap_combobox_archive_fcf0110146f4daab94888234c57d198b4ca5f129.tar.g";
9 url = "https://github.com/berrnd/bootstrap-combobox/archive/fcf0110146f4daab94888234c57d198b4ca5f129.tar.gz";
10 sha1 = "0nvnkr1w9nnn7r2h63zmkjpphawwmfca";
11 };
12 }
13
14 {
15 name = "_fortawesome_fontawesome_free___fontawesome_free_5.12.1.tgz";
16 path = fetchurl {
17 name = "_fortawesome_fontawesome_free___fontawesome_free_5.12.1.tgz";
18 url = "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.12.1.tgz";
19 sha1 = "2a98fea9fbb8a606ddc79a4680034e9d5591c550";
20 };
21 }
22
23 {
24 name = "https___github.com_max_favilli_tagmanager_archive_b43646ef2f2373facaf21c7acc5e3eea61188d76.tar.gz";
25 path = fetchurl {
26 name = "https___github.com_max_favilli_tagmanager_archive_b43646ef2f2373facaf21c7acc5e3eea61188d76.tar.gz";
27 url = "https://github.com/max-favilli/tagmanager/archive/b43646ef2f2373facaf21c7acc5e3eea61188d76.tar.gz";
28 sha1 = "1p7d96k4gnn2jm0fj15y9f62a1z9cn7p";
29 };
30 }
31
32 {
33 name = "ajv___ajv_6.11.0.tgz";
34 path = fetchurl {
35 name = "ajv___ajv_6.11.0.tgz";
36 url = "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz";
37 sha1 = "c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9";
38 };
39 }
40
41 {
42 name = "animate.css___animate.css_3.7.2.tgz";
43 path = fetchurl {
44 name = "animate.css___animate.css_3.7.2.tgz";
45 url = "https://registry.yarnpkg.com/animate.css/-/animate.css-3.7.2.tgz";
46 sha1 = "e73e0d50e92cb1cfef1597d9b38a9481020e08ea";
47 };
48 }
49
50 {
51 name = "asn1___asn1_0.2.4.tgz";
52 path = fetchurl {
53 name = "asn1___asn1_0.2.4.tgz";
54 url = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz";
55 sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136";
56 };
57 }
58
59 {
60 name = "assert_plus___assert_plus_1.0.0.tgz";
61 path = fetchurl {
62 name = "assert_plus___assert_plus_1.0.0.tgz";
63 url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz";
64 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
65 };
66 }
67
68 {
69 name = "asynckit___asynckit_0.4.0.tgz";
70 path = fetchurl {
71 name = "asynckit___asynckit_0.4.0.tgz";
72 url = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz";
73 sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
74 };
75 }
76
77 {
78 name = "aws_sign2___aws_sign2_0.7.0.tgz";
79 path = fetchurl {
80 name = "aws_sign2___aws_sign2_0.7.0.tgz";
81 url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz";
82 sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
83 };
84 }
85
86 {
87 name = "aws4___aws4_1.9.1.tgz";
88 path = fetchurl {
89 name = "aws4___aws4_1.9.1.tgz";
90 url = "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz";
91 sha1 = "7e33d8f7d449b3f673cd72deb9abdc552dbe528e";
92 };
93 }
94
95 {
96 name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
97 path = fetchurl {
98 name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
99 url = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
100 sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
101 };
102 }
103
104 {
105 name = "bootbox___bootbox_5.4.0.tgz";
106 path = fetchurl {
107 name = "bootbox___bootbox_5.4.0.tgz";
108 url = "https://registry.yarnpkg.com/bootbox/-/bootbox-5.4.0.tgz";
109 sha1 = "2857a63c270b1b797d62e4c5597e74b497267655";
110 };
111 }
112
113 {
114 name = "bootstrap_select___bootstrap_select_1.13.12.tgz";
115 path = fetchurl {
116 name = "bootstrap_select___bootstrap_select_1.13.12.tgz";
117 url = "https://registry.yarnpkg.com/bootstrap-select/-/bootstrap-select-1.13.12.tgz";
118 sha1 = "81b9f1394cb8d7151aea16fb9030c112330dbf98";
119 };
120 }
121
122 {
123 name = "bootstrap___bootstrap_4.0.0.tgz";
124 path = fetchurl {
125 name = "bootstrap___bootstrap_4.0.0.tgz";
126 url = "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.0.0.tgz";
127 sha1 = "ceb03842c145fcc1b9b4e15da2a05656ba68469a";
128 };
129 }
130
131 {
132 name = "bootstrap___bootstrap_4.4.1.tgz";
133 path = fetchurl {
134 name = "bootstrap___bootstrap_4.4.1.tgz";
135 url = "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.4.1.tgz";
136 sha1 = "8582960eea0c5cd2bede84d8b0baf3789c3e8b01";
137 };
138 }
139
140 {
141 name = "caseless___caseless_0.12.0.tgz";
142 path = fetchurl {
143 name = "caseless___caseless_0.12.0.tgz";
144 url = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz";
145 sha1 = "1b681c21ff84033c826543090689420d187151dc";
146 };
147 }
148
149 {
150 name = "chart.js___chart.js_2.7.1.tgz";
151 path = fetchurl {
152 name = "chart.js___chart.js_2.7.1.tgz";
153 url = "https://registry.yarnpkg.com/chart.js/-/chart.js-2.7.1.tgz";
154 sha1 = "ae90b4aa4ff1f02decd6b1a2a8dabfd73c9f9886";
155 };
156 }
157
158 {
159 name = "chart.js___chart.js_2.9.3.tgz";
160 path = fetchurl {
161 name = "chart.js___chart.js_2.9.3.tgz";
162 url = "https://registry.yarnpkg.com/chart.js/-/chart.js-2.9.3.tgz";
163 sha1 = "ae3884114dafd381bc600f5b35a189138aac1ef7";
164 };
165 }
166
167 {
168 name = "chartjs_color_string___chartjs_color_string_0.5.0.tgz";
169 path = fetchurl {
170 name = "chartjs_color_string___chartjs_color_string_0.5.0.tgz";
171 url = "https://registry.yarnpkg.com/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz";
172 sha1 = "8d3752d8581d86687c35bfe2cb80ac5213ceb8c1";
173 };
174 }
175
176 {
177 name = "chartjs_color_string___chartjs_color_string_0.6.0.tgz";
178 path = fetchurl {
179 name = "chartjs_color_string___chartjs_color_string_0.6.0.tgz";
180 url = "https://registry.yarnpkg.com/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz";
181 sha1 = "1df096621c0e70720a64f4135ea171d051402f71";
182 };
183 }
184
185 {
186 name = "chartjs_color___chartjs_color_2.4.1.tgz";
187 path = fetchurl {
188 name = "chartjs_color___chartjs_color_2.4.1.tgz";
189 url = "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.4.1.tgz";
190 sha1 = "6118bba202fe1ea79dd7f7c0f9da93467296c3b0";
191 };
192 }
193
194 {
195 name = "chartjs_color___chartjs_color_2.2.0.tgz";
196 path = fetchurl {
197 name = "chartjs_color___chartjs_color_2.2.0.tgz";
198 url = "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.2.0.tgz";
199 sha1 = "84a2fb755787ed85c39dd6dd8c7b1d88429baeae";
200 };
201 }
202
203 {
204 name = "color_convert___color_convert_0.5.3.tgz";
205 path = fetchurl {
206 name = "color_convert___color_convert_0.5.3.tgz";
207 url = "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz";
208 sha1 = "bdb6c69ce660fadffe0b0007cc447e1b9f7282bd";
209 };
210 }
211
212 {
213 name = "color_convert___color_convert_1.9.3.tgz";
214 path = fetchurl {
215 name = "color_convert___color_convert_1.9.3.tgz";
216 url = "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz";
217 sha1 = "bb71850690e1f136567de629d2d5471deda4c1e8";
218 };
219 }
220
221 {
222 name = "color_name___color_name_1.1.3.tgz";
223 path = fetchurl {
224 name = "color_name___color_name_1.1.3.tgz";
225 url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz";
226 sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
227 };
228 }
229
230 {
231 name = "color_name___color_name_1.1.4.tgz";
232 path = fetchurl {
233 name = "color_name___color_name_1.1.4.tgz";
234 url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz";
235 sha1 = "c2a09a87acbde69543de6f63fa3995c826c536a2";
236 };
237 }
238
239 {
240 name = "combined_stream___combined_stream_1.0.8.tgz";
241 path = fetchurl {
242 name = "combined_stream___combined_stream_1.0.8.tgz";
243 url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz";
244 sha1 = "c3d45a8b34fd730631a110a8a2520682b31d5a7f";
245 };
246 }
247
248 {
249 name = "core_util_is___core_util_is_1.0.2.tgz";
250 path = fetchurl {
251 name = "core_util_is___core_util_is_1.0.2.tgz";
252 url = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz";
253 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
254 };
255 }
256
257 {
258 name = "cwise_compiler___cwise_compiler_1.1.3.tgz";
259 path = fetchurl {
260 name = "cwise_compiler___cwise_compiler_1.1.3.tgz";
261 url = "https://registry.yarnpkg.com/cwise-compiler/-/cwise-compiler-1.1.3.tgz";
262 sha1 = "f4d667410e850d3a313a7d2db7b1e505bb034cc5";
263 };
264 }
265
266 {
267 name = "dashdash___dashdash_1.14.1.tgz";
268 path = fetchurl {
269 name = "dashdash___dashdash_1.14.1.tgz";
270 url = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz";
271 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
272 };
273 }
274
275 {
276 name = "data_uri_to_buffer___data_uri_to_buffer_0.0.3.tgz";
277 path = fetchurl {
278 name = "data_uri_to_buffer___data_uri_to_buffer_0.0.3.tgz";
279 url = "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-0.0.3.tgz";
280 sha1 = "18ae979a6a0ca994b0625853916d2662bbae0b1a";
281 };
282 }
283
284 {
285 name = "datatables.net_bs4___datatables.net_bs4_1.10.16.tgz";
286 path = fetchurl {
287 name = "datatables.net_bs4___datatables.net_bs4_1.10.16.tgz";
288 url = "https://registry.yarnpkg.com/datatables.net-bs4/-/datatables.net-bs4-1.10.16.tgz";
289 sha1 = "9eee67cfa8565bd3807a603a188305f7d0e20e32";
290 };
291 }
292
293 {
294 name = "datatables.net_bs4___datatables.net_bs4_1.10.20.tgz";
295 path = fetchurl {
296 name = "datatables.net_bs4___datatables.net_bs4_1.10.20.tgz";
297 url = "https://registry.yarnpkg.com/datatables.net-bs4/-/datatables.net-bs4-1.10.20.tgz";
298 sha1 = "beff1c8d3510826c0678eaa055270607c0e53882";
299 };
300 }
301
302 {
303 name = "datatables.net_colreorder_bs4___datatables.net_colreorder_bs4_1.5.2.tgz";
304 path = fetchurl {
305 name = "datatables.net_colreorder_bs4___datatables.net_colreorder_bs4_1.5.2.tgz";
306 url = "https://registry.yarnpkg.com/datatables.net-colreorder-bs4/-/datatables.net-colreorder-bs4-1.5.2.tgz";
307 sha1 = "4fe1a9ffe679e7e84f3ccb58c9c4d31ac0d49a1b";
308 };
309 }
310
311 {
312 name = "datatables.net_colreorder___datatables.net_colreorder_1.5.2.tgz";
313 path = fetchurl {
314 name = "datatables.net_colreorder___datatables.net_colreorder_1.5.2.tgz";
315 url = "https://registry.yarnpkg.com/datatables.net-colreorder/-/datatables.net-colreorder-1.5.2.tgz";
316 sha1 = "c425cee1f88b3246be0363c67a152be743ca6bce";
317 };
318 }
319
320 {
321 name = "datatables.net_responsive_bs4___datatables.net_responsive_bs4_2.2.3.tgz";
322 path = fetchurl {
323 name = "datatables.net_responsive_bs4___datatables.net_responsive_bs4_2.2.3.tgz";
324 url = "https://registry.yarnpkg.com/datatables.net-responsive-bs4/-/datatables.net-responsive-bs4-2.2.3.tgz";
325 sha1 = "639de17c1d31210ebf2b3c25f1c774c13f729e94";
326 };
327 }
328
329 {
330 name = "datatables.net_responsive___datatables.net_responsive_2.2.3.tgz";
331 path = fetchurl {
332 name = "datatables.net_responsive___datatables.net_responsive_2.2.3.tgz";
333 url = "https://registry.yarnpkg.com/datatables.net-responsive/-/datatables.net-responsive-2.2.3.tgz";
334 sha1 = "50a2b1b4955b16b32f573a3f00f473b0bfbee913";
335 };
336 }
337
338 {
339 name = "datatables.net_rowgroup_bs4___datatables.net_rowgroup_bs4_1.1.1.tgz";
340 path = fetchurl {
341 name = "datatables.net_rowgroup_bs4___datatables.net_rowgroup_bs4_1.1.1.tgz";
342 url = "https://registry.yarnpkg.com/datatables.net-rowgroup-bs4/-/datatables.net-rowgroup-bs4-1.1.1.tgz";
343 sha1 = "57c17e611f8f8ec0aa456fd325bbf466545c230d";
344 };
345 }
346
347 {
348 name = "datatables.net_rowgroup___datatables.net_rowgroup_1.1.1.tgz";
349 path = fetchurl {
350 name = "datatables.net_rowgroup___datatables.net_rowgroup_1.1.1.tgz";
351 url = "https://registry.yarnpkg.com/datatables.net-rowgroup/-/datatables.net-rowgroup-1.1.1.tgz";
352 sha1 = "616531e5fb3c8642f6a51fb14801f8aff50cf90e";
353 };
354 }
355
356 {
357 name = "datatables.net_select_bs4___datatables.net_select_bs4_1.3.1.tgz";
358 path = fetchurl {
359 name = "datatables.net_select_bs4___datatables.net_select_bs4_1.3.1.tgz";
360 url = "https://registry.yarnpkg.com/datatables.net-select-bs4/-/datatables.net-select-bs4-1.3.1.tgz";
361 sha1 = "1c39c7fd5bfb66b5c8402611c2c64fc47e3cfca4";
362 };
363 }
364
365 {
366 name = "datatables.net_select___datatables.net_select_1.3.1.tgz";
367 path = fetchurl {
368 name = "datatables.net_select___datatables.net_select_1.3.1.tgz";
369 url = "https://registry.yarnpkg.com/datatables.net-select/-/datatables.net-select-1.3.1.tgz";
370 sha1 = "ec2c3ad7df2bc9c13c09587d0bfd0ceba52a8bff";
371 };
372 }
373
374 {
375 name = "datatables.net___datatables.net_1.10.16.tgz";
376 path = fetchurl {
377 name = "datatables.net___datatables.net_1.10.16.tgz";
378 url = "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.10.16.tgz";
379 sha1 = "4b052d1082824261b68eed9d22741b711d3d2469";
380 };
381 }
382
383 {
384 name = "datatables.net___datatables.net_1.10.20.tgz";
385 path = fetchurl {
386 name = "datatables.net___datatables.net_1.10.20.tgz";
387 url = "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.10.20.tgz";
388 sha1 = "9d65ecc3c83cbe7baa4fa5a053405c8fe42c1350";
389 };
390 }
391
392 {
393 name = "delayed_stream___delayed_stream_1.0.0.tgz";
394 path = fetchurl {
395 name = "delayed_stream___delayed_stream_1.0.0.tgz";
396 url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz";
397 sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
398 };
399 }
400
401 {
402 name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
403 path = fetchurl {
404 name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
405 url = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
406 sha1 = "3a83a904e54353287874c564b7549386849a98c9";
407 };
408 }
409
410 {
411 name = "extend___extend_3.0.2.tgz";
412 path = fetchurl {
413 name = "extend___extend_3.0.2.tgz";
414 url = "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz";
415 sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
416 };
417 }
418
419 {
420 name = "extsprintf___extsprintf_1.3.0.tgz";
421 path = fetchurl {
422 name = "extsprintf___extsprintf_1.3.0.tgz";
423 url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz";
424 sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
425 };
426 }
427
428 {
429 name = "extsprintf___extsprintf_1.4.0.tgz";
430 path = fetchurl {
431 name = "extsprintf___extsprintf_1.4.0.tgz";
432 url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz";
433 sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
434 };
435 }
436
437 {
438 name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz";
439 path = fetchurl {
440 name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz";
441 url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
442 sha1 = "545145077c501491e33b15ec408c294376e94ae4";
443 };
444 }
445
446 {
447 name = "fast_json_stable_stringify___fast_json_stable_stringify_2.1.0.tgz";
448 path = fetchurl {
449 name = "fast_json_stable_stringify___fast_json_stable_stringify_2.1.0.tgz";
450 url = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
451 sha1 = "874bf69c6f404c2b5d99c481341399fd55892633";
452 };
453 }
454
455 {
456 name = "font_awesome___font_awesome_4.7.0.tgz";
457 path = fetchurl {
458 name = "font_awesome___font_awesome_4.7.0.tgz";
459 url = "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz";
460 sha1 = "8fa8cf0411a1a31afd07b06d2902bb9fc815a133";
461 };
462 }
463
464 {
465 name = "forever_agent___forever_agent_0.6.1.tgz";
466 path = fetchurl {
467 name = "forever_agent___forever_agent_0.6.1.tgz";
468 url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz";
469 sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
470 };
471 }
472
473 {
474 name = "form_data___form_data_2.3.3.tgz";
475 path = fetchurl {
476 name = "form_data___form_data_2.3.3.tgz";
477 url = "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz";
478 sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6";
479 };
480 }
481
482 {
483 name = "fullcalendar___fullcalendar_3.10.1.tgz";
484 path = fetchurl {
485 name = "fullcalendar___fullcalendar_3.10.1.tgz";
486 url = "https://registry.yarnpkg.com/fullcalendar/-/fullcalendar-3.10.1.tgz";
487 sha1 = "cca3f9a2656a7e978a3f3facb7f35934a91185db";
488 };
489 }
490
491 {
492 name = "get_pixels___get_pixels_3.3.2.tgz";
493 path = fetchurl {
494 name = "get_pixels___get_pixels_3.3.2.tgz";
495 url = "https://registry.yarnpkg.com/get-pixels/-/get-pixels-3.3.2.tgz";
496 sha1 = "3f62fb8811932c69f262bba07cba72b692b4ff03";
497 };
498 }
499
500 {
501 name = "getpass___getpass_0.1.7.tgz";
502 path = fetchurl {
503 name = "getpass___getpass_0.1.7.tgz";
504 url = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz";
505 sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
506 };
507 }
508
509 {
510 name = "gettext_translator___gettext_translator_2.1.0.tgz";
511 path = fetchurl {
512 name = "gettext_translator___gettext_translator_2.1.0.tgz";
513 url = "https://registry.yarnpkg.com/gettext-translator/-/gettext-translator-2.1.0.tgz";
514 sha1 = "946047649b7df4ef00522787bb78792667e4de2f";
515 };
516 }
517
518 {
519 name = "gl_mat2___gl_mat2_1.0.1.tgz";
520 path = fetchurl {
521 name = "gl_mat2___gl_mat2_1.0.1.tgz";
522 url = "https://registry.yarnpkg.com/gl-mat2/-/gl-mat2-1.0.1.tgz";
523 sha1 = "142505730a5c2fe1e9f25d9ece3d0d6cc2710a30";
524 };
525 }
526
527 {
528 name = "gl_vec2___gl_vec2_1.3.0.tgz";
529 path = fetchurl {
530 name = "gl_vec2___gl_vec2_1.3.0.tgz";
531 url = "https://registry.yarnpkg.com/gl-vec2/-/gl-vec2-1.3.0.tgz";
532 sha1 = "83d472ed46034de8e09cbc857123fb6c81c51199";
533 };
534 }
535
536 {
537 name = "gl_vec3___gl_vec3_1.1.3.tgz";
538 path = fetchurl {
539 name = "gl_vec3___gl_vec3_1.1.3.tgz";
540 url = "https://registry.yarnpkg.com/gl-vec3/-/gl-vec3-1.1.3.tgz";
541 sha1 = "a47c62f918774a06cbed1b65bcd0288ecbb03826";
542 };
543 }
544
545 {
546 name = "har_schema___har_schema_2.0.0.tgz";
547 path = fetchurl {
548 name = "har_schema___har_schema_2.0.0.tgz";
549 url = "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz";
550 sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
551 };
552 }
553
554 {
555 name = "har_validator___har_validator_5.1.3.tgz";
556 path = fetchurl {
557 name = "har_validator___har_validator_5.1.3.tgz";
558 url = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz";
559 sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080";
560 };
561 }
562
563 {
564 name = "http_signature___http_signature_1.2.0.tgz";
565 path = fetchurl {
566 name = "http_signature___http_signature_1.2.0.tgz";
567 url = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz";
568 sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
569 };
570 }
571
572 {
573 name = "iota_array___iota_array_1.0.0.tgz";
574 path = fetchurl {
575 name = "iota_array___iota_array_1.0.0.tgz";
576 url = "https://registry.yarnpkg.com/iota-array/-/iota-array-1.0.0.tgz";
577 sha1 = "81ef57fe5d05814cd58c2483632a99c30a0e8087";
578 };
579 }
580
581 {
582 name = "is_buffer___is_buffer_1.1.6.tgz";
583 path = fetchurl {
584 name = "is_buffer___is_buffer_1.1.6.tgz";
585 url = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz";
586 sha1 = "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be";
587 };
588 }
589
590 {
591 name = "is_typedarray___is_typedarray_1.0.0.tgz";
592 path = fetchurl {
593 name = "is_typedarray___is_typedarray_1.0.0.tgz";
594 url = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz";
595 sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
596 };
597 }
598
599 {
600 name = "isstream___isstream_0.1.2.tgz";
601 path = fetchurl {
602 name = "isstream___isstream_0.1.2.tgz";
603 url = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz";
604 sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
605 };
606 }
607
608 {
609 name = "jpeg_js___jpeg_js_0.3.6.tgz";
610 path = fetchurl {
611 name = "jpeg_js___jpeg_js_0.3.6.tgz";
612 url = "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.3.6.tgz";
613 sha1 = "c40382aac9506e7d1f2d856eb02f6c7b2a98b37c";
614 };
615 }
616
617 {
618 name = "jquery_lazy___jquery_lazy_1.7.10.tgz";
619 path = fetchurl {
620 name = "jquery_lazy___jquery_lazy_1.7.10.tgz";
621 url = "https://registry.yarnpkg.com/jquery-lazy/-/jquery-lazy-1.7.10.tgz";
622 sha1 = "aa3d43d058bf1ea89284214f4521f6d9a162d051";
623 };
624 }
625
626 {
627 name = "jquery_serializejson___jquery_serializejson_2.9.0.tgz";
628 path = fetchurl {
629 name = "jquery_serializejson___jquery_serializejson_2.9.0.tgz";
630 url = "https://registry.yarnpkg.com/jquery-serializejson/-/jquery-serializejson-2.9.0.tgz";
631 sha1 = "03e3764e3a4b42c1c5aae9f93d7f19320c5f35a6";
632 };
633 }
634
635 {
636 name = "jquery.easing___jquery.easing_1.4.1.tgz";
637 path = fetchurl {
638 name = "jquery.easing___jquery.easing_1.4.1.tgz";
639 url = "https://registry.yarnpkg.com/jquery.easing/-/jquery.easing-1.4.1.tgz";
640 sha1 = "47982c5836bd758fd48494923c4a101ef6e93e3b";
641 };
642 }
643
644 {
645 name = "jquery___jquery_1.12.4.tgz";
646 path = fetchurl {
647 name = "jquery___jquery_1.12.4.tgz";
648 url = "https://registry.yarnpkg.com/jquery/-/jquery-1.12.4.tgz";
649 sha1 = "01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c";
650 };
651 }
652
653 {
654 name = "jquery___jquery_3.3.1.tgz";
655 path = fetchurl {
656 name = "jquery___jquery_3.3.1.tgz";
657 url = "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz";
658 sha1 = "958ce29e81c9790f31be7792df5d4d95fc57fbca";
659 };
660 }
661
662 {
663 name = "jquery___jquery_3.4.1.tgz";
664 path = fetchurl {
665 name = "jquery___jquery_3.4.1.tgz";
666 url = "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz";
667 sha1 = "714f1f8d9dde4bdfa55764ba37ef214630d80ef2";
668 };
669 }
670
671 {
672 name = "jsbn___jsbn_0.1.1.tgz";
673 path = fetchurl {
674 name = "jsbn___jsbn_0.1.1.tgz";
675 url = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz";
676 sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
677 };
678 }
679
680 {
681 name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
682 path = fetchurl {
683 name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
684 url = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
685 sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
686 };
687 }
688
689 {
690 name = "json_schema___json_schema_0.2.3.tgz";
691 path = fetchurl {
692 name = "json_schema___json_schema_0.2.3.tgz";
693 url = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz";
694 sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
695 };
696 }
697
698 {
699 name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
700 path = fetchurl {
701 name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
702 url = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
703 sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
704 };
705 }
706
707 {
708 name = "jsprim___jsprim_1.4.1.tgz";
709 path = fetchurl {
710 name = "jsprim___jsprim_1.4.1.tgz";
711 url = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz";
712 sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
713 };
714 }
715
716 {
717 name = "lodash___lodash_4.17.15.tgz";
718 path = fetchurl {
719 name = "lodash___lodash_4.17.15.tgz";
720 url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz";
721 sha1 = "b447f6670a0455bbfeedd11392eff330ea097548";
722 };
723 }
724
725 {
726 name = "mime_db___mime_db_1.43.0.tgz";
727 path = fetchurl {
728 name = "mime_db___mime_db_1.43.0.tgz";
729 url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz";
730 sha1 = "0a12e0502650e473d735535050e7c8f4eb4fae58";
731 };
732 }
733
734 {
735 name = "mime_types___mime_types_2.1.26.tgz";
736 path = fetchurl {
737 name = "mime_types___mime_types_2.1.26.tgz";
738 url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz";
739 sha1 = "9c921fc09b7e149a65dfdc0da4d20997200b0a06";
740 };
741 }
742
743 {
744 name = "moment_timezone___moment_timezone_0.5.27.tgz";
745 path = fetchurl {
746 name = "moment_timezone___moment_timezone_0.5.27.tgz";
747 url = "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.27.tgz";
748 sha1 = "73adec8139b6fe30452e78f210f27b1f346b8877";
749 };
750 }
751
752 {
753 name = "moment___moment_2.24.0.tgz";
754 path = fetchurl {
755 name = "moment___moment_2.24.0.tgz";
756 url = "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz";
757 sha1 = "0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b";
758 };
759 }
760
761 {
762 name = "moment___moment_2.18.1.tgz";
763 path = fetchurl {
764 name = "moment___moment_2.18.1.tgz";
765 url = "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz";
766 sha1 = "c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f";
767 };
768 }
769
770 {
771 name = "ndarray_linear_interpolate___ndarray_linear_interpolate_1.0.0.tgz";
772 path = fetchurl {
773 name = "ndarray_linear_interpolate___ndarray_linear_interpolate_1.0.0.tgz";
774 url = "https://registry.yarnpkg.com/ndarray-linear-interpolate/-/ndarray-linear-interpolate-1.0.0.tgz";
775 sha1 = "78bc92b85b9abc15b6e67ee65828f9e2137ae72b";
776 };
777 }
778
779 {
780 name = "ndarray_pack___ndarray_pack_1.2.1.tgz";
781 path = fetchurl {
782 name = "ndarray_pack___ndarray_pack_1.2.1.tgz";
783 url = "https://registry.yarnpkg.com/ndarray-pack/-/ndarray-pack-1.2.1.tgz";
784 sha1 = "8caebeaaa24d5ecf70ff86020637977da8ee585a";
785 };
786 }
787
788 {
789 name = "ndarray___ndarray_1.0.19.tgz";
790 path = fetchurl {
791 name = "ndarray___ndarray_1.0.19.tgz";
792 url = "https://registry.yarnpkg.com/ndarray/-/ndarray-1.0.19.tgz";
793 sha1 = "6785b5f5dfa58b83e31ae5b2a058cfd1ab3f694e";
794 };
795 }
796
797 {
798 name = "node_bitmap___node_bitmap_0.0.1.tgz";
799 path = fetchurl {
800 name = "node_bitmap___node_bitmap_0.0.1.tgz";
801 url = "https://registry.yarnpkg.com/node-bitmap/-/node-bitmap-0.0.1.tgz";
802 sha1 = "180eac7003e0c707618ef31368f62f84b2a69091";
803 };
804 }
805
806 {
807 name = "nosleep.js___nosleep.js_0.9.0.tgz";
808 path = fetchurl {
809 name = "nosleep.js___nosleep.js_0.9.0.tgz";
810 url = "https://registry.yarnpkg.com/nosleep.js/-/nosleep.js-0.9.0.tgz";
811 sha1 = "0f1371b81dc182e3b6bbdb837e880f16db9d7163";
812 };
813 }
814
815 {
816 name = "oauth_sign___oauth_sign_0.9.0.tgz";
817 path = fetchurl {
818 name = "oauth_sign___oauth_sign_0.9.0.tgz";
819 url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz";
820 sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455";
821 };
822 }
823
824 {
825 name = "omggif___omggif_1.0.10.tgz";
826 path = fetchurl {
827 name = "omggif___omggif_1.0.10.tgz";
828 url = "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz";
829 sha1 = "ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19";
830 };
831 }
832
833 {
834 name = "parse_data_uri___parse_data_uri_0.2.0.tgz";
835 path = fetchurl {
836 name = "parse_data_uri___parse_data_uri_0.2.0.tgz";
837 url = "https://registry.yarnpkg.com/parse-data-uri/-/parse-data-uri-0.2.0.tgz";
838 sha1 = "bf04d851dd5c87b0ab238e5d01ace494b604b4c9";
839 };
840 }
841
842 {
843 name = "performance_now___performance_now_2.1.0.tgz";
844 path = fetchurl {
845 name = "performance_now___performance_now_2.1.0.tgz";
846 url = "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz";
847 sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
848 };
849 }
850
851 {
852 name = "pngjs___pngjs_3.4.0.tgz";
853 path = fetchurl {
854 name = "pngjs___pngjs_3.4.0.tgz";
855 url = "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz";
856 sha1 = "99ca7d725965fb655814eaf65f38f12bbdbf555f";
857 };
858 }
859
860 {
861 name = "popper.js___popper.js_1.16.1.tgz";
862 path = fetchurl {
863 name = "popper.js___popper.js_1.16.1.tgz";
864 url = "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz";
865 sha1 = "2a223cb3dc7b6213d740e40372be40de43e65b1b";
866 };
867 }
868
869 {
870 name = "psl___psl_1.7.0.tgz";
871 path = fetchurl {
872 name = "psl___psl_1.7.0.tgz";
873 url = "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz";
874 sha1 = "f1c4c47a8ef97167dea5d6bbf4816d736e884a3c";
875 };
876 }
877
878 {
879 name = "punycode___punycode_1.4.1.tgz";
880 path = fetchurl {
881 name = "punycode___punycode_1.4.1.tgz";
882 url = "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz";
883 sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
884 };
885 }
886
887 {
888 name = "punycode___punycode_2.1.1.tgz";
889 path = fetchurl {
890 name = "punycode___punycode_2.1.1.tgz";
891 url = "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz";
892 sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
893 };
894 }
895
896 {
897 name = "qs___qs_6.5.2.tgz";
898 path = fetchurl {
899 name = "qs___qs_6.5.2.tgz";
900 url = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
901 sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
902 };
903 }
904
905 {
906 name = "quagga___quagga_0.12.1.tgz";
907 path = fetchurl {
908 name = "quagga___quagga_0.12.1.tgz";
909 url = "https://registry.yarnpkg.com/quagga/-/quagga-0.12.1.tgz";
910 sha1 = "6f48c56ed992dc5fdeb90dbee7069c2e1cdde8b7";
911 };
912 }
913
914 {
915 name = "request___request_2.88.0.tgz";
916 path = fetchurl {
917 name = "request___request_2.88.0.tgz";
918 url = "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz";
919 sha1 = "9c2fca4f7d35b592efe57c7f0a55e81052124fef";
920 };
921 }
922
923 {
924 name = "safe_buffer___safe_buffer_5.2.0.tgz";
925 path = fetchurl {
926 name = "safe_buffer___safe_buffer_5.2.0.tgz";
927 url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz";
928 sha1 = "b74daec49b1148f88c64b68d49b1e815c1f2f519";
929 };
930 }
931
932 {
933 name = "safer_buffer___safer_buffer_2.1.2.tgz";
934 path = fetchurl {
935 name = "safer_buffer___safer_buffer_2.1.2.tgz";
936 url = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
937 sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
938 };
939 }
940
941 {
942 name = "sprintf_js___sprintf_js_1.1.2.tgz";
943 path = fetchurl {
944 name = "sprintf_js___sprintf_js_1.1.2.tgz";
945 url = "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz";
946 sha1 = "da1765262bf8c0f571749f2ad6c26300207ae673";
947 };
948 }
949
950 {
951 name = "sshpk___sshpk_1.16.1.tgz";
952 path = fetchurl {
953 name = "sshpk___sshpk_1.16.1.tgz";
954 url = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz";
955 sha1 = "fb661c0bef29b39db40769ee39fa70093d6f6877";
956 };
957 }
958
959 {
960 name = "startbootstrap_sb_admin___startbootstrap_sb_admin_4.0.0.tgz";
961 path = fetchurl {
962 name = "startbootstrap_sb_admin___startbootstrap_sb_admin_4.0.0.tgz";
963 url = "https://registry.yarnpkg.com/startbootstrap-sb-admin/-/startbootstrap-sb-admin-4.0.0.tgz";
964 sha1 = "cf141a260d031b36bdc013c68200a1c1ea6c9881";
965 };
966 }
967
968 {
969 name = "summernote___summernote_0.8.15.tgz";
970 path = fetchurl {
971 name = "summernote___summernote_0.8.15.tgz";
972 url = "https://registry.yarnpkg.com/summernote/-/summernote-0.8.15.tgz";
973 sha1 = "f783f23b2c1f85c1609855ad37205595147a3c39";
974 };
975 }
976
977 {
978 name = "swagger_ui_dist___swagger_ui_dist_3.25.0.tgz";
979 path = fetchurl {
980 name = "swagger_ui_dist___swagger_ui_dist_3.25.0.tgz";
981 url = "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.25.0.tgz";
982 sha1 = "90279cdcc56e591fcfbe7b5240a9d653b989336d";
983 };
984 }
985
986 {
987 name = "https___github.com_berrnd_tempusdominus_bootstrap_4_archive_2cf725fed9216cb77a298e5ce46762bfe979eaa0.tar.gz";
988 path = fetchurl {
989 name = "https___github.com_berrnd_tempusdominus_bootstrap_4_archive_2cf725fed9216cb77a298e5ce46762bfe979eaa0.tar.gz";
990 url = "https://github.com/berrnd/tempusdominus-bootstrap-4/archive/2cf725fed9216cb77a298e5ce46762bfe979eaa0.tar.gz";
991 sha1 = "q9z5vwgs4p8ijf7asxxrfyb7rpis3hqm";
992 };
993 }
994
995 {
996 name = "through___through_2.3.8.tgz";
997 path = fetchurl {
998 name = "through___through_2.3.8.tgz";
999 url = "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz";
1000 sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
1001 };
1002 }
1003
1004 {
1005 name = "timeago___timeago_1.6.7.tgz";
1006 path = fetchurl {
1007 name = "timeago___timeago_1.6.7.tgz";
1008 url = "https://registry.yarnpkg.com/timeago/-/timeago-1.6.7.tgz";
1009 sha1 = "afd467c29a911e697fc22a81888c7c3022783cb5";
1010 };
1011 }
1012
1013 {
1014 name = "toastr___toastr_2.1.4.tgz";
1015 path = fetchurl {
1016 name = "toastr___toastr_2.1.4.tgz";
1017 url = "https://registry.yarnpkg.com/toastr/-/toastr-2.1.4.tgz";
1018 sha1 = "8b43be64fb9d0c414871446f2db8e8ca4e95f181";
1019 };
1020 }
1021
1022 {
1023 name = "tough_cookie___tough_cookie_2.4.3.tgz";
1024 path = fetchurl {
1025 name = "tough_cookie___tough_cookie_2.4.3.tgz";
1026 url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz";
1027 sha1 = "53f36da3f47783b0925afa06ff9f3b165280f781";
1028 };
1029 }
1030
1031 {
1032 name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
1033 path = fetchurl {
1034 name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
1035 url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
1036 sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
1037 };
1038 }
1039
1040 {
1041 name = "tweetnacl___tweetnacl_0.14.5.tgz";
1042 path = fetchurl {
1043 name = "tweetnacl___tweetnacl_0.14.5.tgz";
1044 url = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz";
1045 sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
1046 };
1047 }
1048
1049 {
1050 name = "uniq___uniq_1.0.1.tgz";
1051 path = fetchurl {
1052 name = "uniq___uniq_1.0.1.tgz";
1053 url = "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz";
1054 sha1 = "b31c5ae8254844a3a8281541ce2b04b865a734ff";
1055 };
1056 }
1057
1058 {
1059 name = "uri_js___uri_js_4.2.2.tgz";
1060 path = fetchurl {
1061 name = "uri_js___uri_js_4.2.2.tgz";
1062 url = "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz";
1063 sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
1064 };
1065 }
1066
1067 {
1068 name = "uuid___uuid_3.4.0.tgz";
1069 path = fetchurl {
1070 name = "uuid___uuid_3.4.0.tgz";
1071 url = "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz";
1072 sha1 = "b23e4358afa8a202fe7a100af1f5f883f02007ee";
1073 };
1074 }
1075
1076 {
1077 name = "verror___verror_1.10.0.tgz";
1078 path = fetchurl {
1079 name = "verror___verror_1.10.0.tgz";
1080 url = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz";
1081 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
1082 };
1083 }
1084 ];
1085}
diff --git a/flakes/grocy/yarn.patch b/flakes/grocy/yarn.patch
new file mode 100644
index 0000000..e6f318d
--- /dev/null
+++ b/flakes/grocy/yarn.patch
@@ -0,0 +1,67 @@
1diff --git a/package.json b/package.json
2index 1afdf44..8acc985 100644
3--- a/package.json
4+++ b/package.json
5@@ -2,9 +2,9 @@
6 "name": "grocy",
7 "private": true,
8 "dependencies": {
9- "@danielfarrell/bootstrap-combobox": "https://github.com/berrnd/bootstrap-combobox.git#master",
10+ "@danielfarrell/bootstrap-combobox": "^1.1.8",
11 "@fortawesome/fontawesome-free": "^5.12.1",
12- "TagManager": "https://github.com/max-favilli/tagmanager.git#master",
13+ "TagManager": "^3.0.1",
14 "animate.css": "^3.7.2",
15 "bootbox": "^5.3.2",
16 "bootstrap": "^4.3.1",
17@@ -32,7 +32,7 @@
18 "startbootstrap-sb-admin": "4.0.0",
19 "summernote": "^0.8.12",
20 "swagger-ui-dist": "^3.23.10",
21- "tempusdominus-bootstrap-4": "https://github.com/berrnd/tempusdominus-bootstrap-4.git#master",
22+ "tempusdominus-bootstrap-4": "^5.1.2",
23 "timeago": "^1.6.7",
24 "toastr": "^2.1.4"
25 }
26diff --git a/yarn.lock b/yarn.lock
27index dfb3108..7f8d761 100644
28--- a/yarn.lock
29+++ b/yarn.lock
30@@ -2,18 +2,20 @@
31 # yarn lockfile v1
32
33
34-"@danielfarrell/bootstrap-combobox@https://github.com/berrnd/bootstrap-combobox.git#master":
35+"@danielfarrell/bootstrap-combobox@^1.1.8":
36 version "1.1.8"
37- resolved "https://github.com/berrnd/bootstrap-combobox.git#fcf0110146f4daab94888234c57d198b4ca5f129"
38+ resolved "https://github.com/berrnd/bootstrap-combobox/archive/fcf0110146f4daab94888234c57d198b4ca5f129.tar.gz#dummy"
39+ integrity sha512-svyqYhH2HYrgJtPhyGF/dydpERR9UIdKo7WUGcXbSnEqwSUQjcCh8ILhn+Ze0eqKf/zQCejrDrWl/578t9rz3Q==
40
41 "@fortawesome/fontawesome-free@^5.12.1":
42 version "5.12.1"
43 resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.12.1.tgz#2a98fea9fbb8a606ddc79a4680034e9d5591c550"
44 integrity sha512-ZtjIIFplxncqxvogq148C3hBLQE+W3iJ8E4UvJ09zIJUgzwLcROsWwFDErVSXY2Plzao5J9KUYNHKHMEUYDMKw==
45
46-"TagManager@https://github.com/max-favilli/tagmanager.git#master":
47+"TagManager@^3.0.1":
48 version "3.0.1"
49- resolved "https://github.com/max-favilli/tagmanager.git#b43646ef2f2373facaf21c7acc5e3eea61188d76"
50+ resolved "https://github.com/max-favilli/tagmanager/archive/b43646ef2f2373facaf21c7acc5e3eea61188d76.tar.gz#dummy"
51+ integrity sha512-lisa2KW8z+7kmPT+QAkR2FC2LGE2rCPmQ4Qt8+hF83hoTuqoc3sqpRha14oqYfCjKufXGGCdH3sQG5xdHABkTA==
52 dependencies:
53 jquery "1"
54
55@@ -719,9 +721,10 @@ swagger-ui-dist@^3.23.10:
56 resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.25.0.tgz#90279cdcc56e591fcfbe7b5240a9d653b989336d"
57 integrity sha512-vwvJPPbdooTvDwLGzjIXinOXizDJJ6U1hxnJL3y6U3aL1d2MSXDmKg2139XaLBhsVZdnQJV2bOkX4reB+RXamg==
58
59-"tempusdominus-bootstrap-4@https://github.com/berrnd/tempusdominus-bootstrap-4.git#master":
60+"tempusdominus-bootstrap-4@^5.1.2":
61 version "5.1.2"
62- resolved "https://github.com/berrnd/tempusdominus-bootstrap-4.git#2cf725fed9216cb77a298e5ce46762bfe979eaa0"
63+ resolved "https://github.com/berrnd/tempusdominus-bootstrap-4/archive/2cf725fed9216cb77a298e5ce46762bfe979eaa0.tar.gz#dummy"
64+ integrity sha512-xYDSn8Gb8GicQHt6Ax9VULKSviPrEm7Fpk5WpSY2qBfX1hQbDiEhBZXcWIlgVBPWQmJoUSPzLpe0B2xbOmjaeg==
65 dependencies:
66 bootstrap ">=4.1.2"
67 jquery "^3.0"
diff --git a/flakes/lib/flake.lock b/flakes/lib/flake.lock
index 3e0b21e..3ca158e 100644
--- a/flakes/lib/flake.lock
+++ b/flakes/lib/flake.lock
@@ -1,12 +1,235 @@
1{ 1{
2 "nodes": { 2 "nodes": {
3 "colmena": {
4 "inputs": {
5 "flake-compat": "flake-compat",
6 "flake-utils": "flake-utils",
7 "nixpkgs": "nixpkgs",
8 "stable": "stable"
9 },
10 "locked": {
11 "lastModified": 1687954574,
12 "narHash": "sha256-YasVTaNXq2xqZdejyIhuyqvNypmx+K/Y1ZZ4+raeeII=",
13 "owner": "immae",
14 "repo": "colmena",
15 "rev": "e427171150a35e23204c4c15a2483358d22a0eff",
16 "type": "github"
17 },
18 "original": {
19 "owner": "immae",
20 "ref": "add-lib-get-flake",
21 "repo": "colmena",
22 "type": "github"
23 }
24 },
25 "disko": {
26 "inputs": {
27 "nixpkgs": "nixpkgs_2"
28 },
29 "locked": {
30 "lastModified": 1687968164,
31 "narHash": "sha256-L9jr2zCB6NIaBE3towusjGBigsnE2pMID8wBGkYbTS4=",
32 "owner": "nix-community",
33 "repo": "disko",
34 "rev": "8002e7cb899bc2a02a2ebfb7f999fcd7c18b92a1",
35 "type": "github"
36 },
37 "original": {
38 "owner": "nix-community",
39 "repo": "disko",
40 "type": "github"
41 }
42 },
43 "flake-compat": {
44 "flake": false,
45 "locked": {
46 "lastModified": 1650374568,
47 "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
48 "owner": "edolstra",
49 "repo": "flake-compat",
50 "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
51 "type": "github"
52 },
53 "original": {
54 "owner": "edolstra",
55 "repo": "flake-compat",
56 "type": "github"
57 }
58 },
59 "flake-parts": {
60 "inputs": {
61 "nixpkgs-lib": "nixpkgs-lib"
62 },
63 "locked": {
64 "lastModified": 1687762428,
65 "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=",
66 "owner": "hercules-ci",
67 "repo": "flake-parts",
68 "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836",
69 "type": "github"
70 },
71 "original": {
72 "owner": "hercules-ci",
73 "repo": "flake-parts",
74 "type": "github"
75 }
76 },
77 "flake-utils": {
78 "locked": {
79 "lastModified": 1659877975,
80 "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
81 "owner": "numtide",
82 "repo": "flake-utils",
83 "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
84 "type": "github"
85 },
86 "original": {
87 "owner": "numtide",
88 "repo": "flake-utils",
89 "type": "github"
90 }
91 },
92 "nixos-2305": {
93 "locked": {
94 "lastModified": 1687938137,
95 "narHash": "sha256-Z00c0Pk3aE1aw9x44lVcqHmvx+oX7dxCXCvKcUuE150=",
96 "owner": "NixOS",
97 "repo": "nixpkgs",
98 "rev": "ba2ded3227a2992f2040fad4ba6f218a701884a5",
99 "type": "github"
100 },
101 "original": {
102 "owner": "NixOS",
103 "ref": "release-23.05",
104 "repo": "nixpkgs",
105 "type": "github"
106 }
107 },
108 "nixos-anywhere": {
109 "inputs": {
110 "disko": [
111 "disko"
112 ],
113 "flake-parts": [
114 "flake-parts"
115 ],
116 "nixos-2305": "nixos-2305",
117 "nixos-images": "nixos-images",
118 "nixpkgs": "nixpkgs_3",
119 "treefmt-nix": "treefmt-nix"
120 },
121 "locked": {
122 "lastModified": 1689945193,
123 "narHash": "sha256-+GPRt7ouE84A7GPNKnFYGU0cQL7skKxz0BAY0sUjUmw=",
124 "owner": "numtide",
125 "repo": "nixos-anywhere",
126 "rev": "27161266077a177ac116e2cb72cc70af5f145189",
127 "type": "github"
128 },
129 "original": {
130 "owner": "numtide",
131 "repo": "nixos-anywhere",
132 "type": "github"
133 }
134 },
135 "nixos-images": {
136 "inputs": {
137 "nixos-2305": [
138 "nixos-anywhere",
139 "nixos-2305"
140 ],
141 "nixos-unstable": [
142 "nixos-anywhere",
143 "nixpkgs"
144 ]
145 },
146 "locked": {
147 "lastModified": 1686819168,
148 "narHash": "sha256-IbRVStbKoMC2fUX6TxNO82KgpVfI8LL4Cq0bTgdYhnY=",
149 "owner": "nix-community",
150 "repo": "nixos-images",
151 "rev": "ccc1a2c08ce2fc38bcece85d2a6e7bf17bac9e37",
152 "type": "github"
153 },
154 "original": {
155 "owner": "nix-community",
156 "repo": "nixos-images",
157 "type": "github"
158 }
159 },
3 "nixpkgs": { 160 "nixpkgs": {
4 "locked": { 161 "locked": {
5 "lastModified": 1631570365, 162 "lastModified": 1683408522,
6 "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=", 163 "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
164 "owner": "NixOS",
165 "repo": "nixpkgs",
166 "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
167 "type": "github"
168 },
169 "original": {
170 "owner": "NixOS",
171 "ref": "nixos-unstable",
172 "repo": "nixpkgs",
173 "type": "github"
174 }
175 },
176 "nixpkgs-lib": {
177 "locked": {
178 "dir": "lib",
179 "lastModified": 1685564631,
180 "narHash": "sha256-8ywr3AkblY4++3lIVxmrWZFzac7+f32ZEhH/A8pNscI=",
181 "owner": "NixOS",
182 "repo": "nixpkgs",
183 "rev": "4f53efe34b3a8877ac923b9350c874e3dcd5dc0a",
184 "type": "github"
185 },
186 "original": {
187 "dir": "lib",
188 "owner": "NixOS",
189 "ref": "nixos-unstable",
190 "repo": "nixpkgs",
191 "type": "github"
192 }
193 },
194 "nixpkgs_2": {
195 "locked": {
196 "lastModified": 1687701825,
197 "narHash": "sha256-aMC9hqsf+4tJL7aJWSdEUurW2TsjxtDcJBwM9Y4FIYM=",
198 "owner": "NixOS",
199 "repo": "nixpkgs",
200 "rev": "07059ee2fa34f1598758839b9af87eae7f7ae6ea",
201 "type": "github"
202 },
203 "original": {
204 "owner": "NixOS",
205 "ref": "nixpkgs-unstable",
206 "repo": "nixpkgs",
207 "type": "github"
208 }
209 },
210 "nixpkgs_3": {
211 "locked": {
212 "lastModified": 1687893427,
213 "narHash": "sha256-jJHj0Lxpvov1IPYQK441oLAKxxemHm16U9jf60bXAFU=",
214 "owner": "nixos",
215 "repo": "nixpkgs",
216 "rev": "4b14ab2a916508442e685089672681dff46805be",
217 "type": "github"
218 },
219 "original": {
220 "owner": "nixos",
221 "ref": "nixos-unstable-small",
222 "repo": "nixpkgs",
223 "type": "github"
224 }
225 },
226 "nixpkgs_4": {
227 "locked": {
228 "lastModified": 1648725829,
229 "narHash": "sha256-tXEzI38lLrzW2qCAIs0UAatE2xcsTsoKWaaXqAcF1NI=",
7 "owner": "NixOS", 230 "owner": "NixOS",
8 "repo": "nixpkgs", 231 "repo": "nixpkgs",
9 "rev": "df7113c0727881519248d4c7d080324e0ee3327b", 232 "rev": "72152ff5ad470ed1a5b97c0ba2737938c136c994",
10 "type": "github" 233 "type": "github"
11 }, 234 },
12 "original": { 235 "original": {
@@ -17,7 +240,48 @@
17 }, 240 },
18 "root": { 241 "root": {
19 "inputs": { 242 "inputs": {
20 "nixpkgs": "nixpkgs" 243 "colmena": "colmena",
244 "disko": "disko",
245 "flake-parts": "flake-parts",
246 "nixos-anywhere": "nixos-anywhere",
247 "nixpkgs": "nixpkgs_4"
248 }
249 },
250 "stable": {
251 "locked": {
252 "lastModified": 1669735802,
253 "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=",
254 "owner": "NixOS",
255 "repo": "nixpkgs",
256 "rev": "731cc710aeebecbf45a258e977e8b68350549522",
257 "type": "github"
258 },
259 "original": {
260 "owner": "NixOS",
261 "ref": "nixos-22.11",
262 "repo": "nixpkgs",
263 "type": "github"
264 }
265 },
266 "treefmt-nix": {
267 "inputs": {
268 "nixpkgs": [
269 "nixos-anywhere",
270 "nixpkgs"
271 ]
272 },
273 "locked": {
274 "lastModified": 1687940979,
275 "narHash": "sha256-D4ZFkgIG2s9Fyi78T3fVG9mqMD+/UnFDB62jS4gjZKY=",
276 "owner": "numtide",
277 "repo": "treefmt-nix",
278 "rev": "0a4f06c27610a99080b69433873885df82003aae",
279 "type": "github"
280 },
281 "original": {
282 "owner": "numtide",
283 "repo": "treefmt-nix",
284 "type": "github"
21 } 285 }
22 } 286 }
23 }, 287 },
diff --git a/flakes/lib/flake.nix b/flakes/lib/flake.nix
index 8faa136..5b78fb6 100644
--- a/flakes/lib/flake.nix
+++ b/flakes/lib/flake.nix
@@ -1,28 +1,68 @@
1{ 1{
2 inputs.nixpkgs.url = "github:NixOS/nixpkgs"; 2 inputs.nixpkgs.url = "github:NixOS/nixpkgs";
3 inputs.flake-parts.url = "github:hercules-ci/flake-parts";
4 inputs.disko.url = "github:nix-community/disko";
5 # replace with zhaofengli/colmena once https://github.com/zhaofengli/colmena/pull/161 is merged
6 inputs.colmena.url = "github:immae/colmena/add-lib-get-flake";
7 inputs.nixos-anywhere.url = "github:numtide/nixos-anywhere";
8 inputs.nixos-anywhere.inputs.disko.follows = "disko";
9 inputs.nixos-anywhere.inputs.flake-parts.follows = "flake-parts";
3 10
4 description = "Useful libs"; 11 description = "Useful libs";
5 outputs = { self, nixpkgs }: { 12 outputs = { self, nixpkgs, flake-parts, disko, colmena, nixos-anywhere }: {
6 lib = rec { 13 lib = rec {
7 computeNarHash = path: 14 mkColmenaFlake = { name, self, nixpkgs, system ? "x86_64-linux", nixosModules, moduleArgs ? {}, targetHost, targetUser ? "root" }:
8 let pkgs = import nixpkgs {}; 15 flake-parts.lib.mkFlake { inputs = { inherit nixpkgs self; }; } {
9 in 16 systems = [ system ];
10 builtins.readFile (pkgs.runCommand "narHash" { 17 perSystem = { pkgs, ... }: {
11 buildInputs = [ pkgs.nix ]; 18 apps."${name}-install" = {
12 } "echo -n $(nix hash-path ${path}) > $out"); 19 type = "app";
20 program = pkgs.writeScriptBin "${name}-install" ''
21 #!${pkgs.stdenv.shell}
22 set -euo pipefail
23 : $SOPS_VARS_FILE
24 TEMPDIR=$(mktemp -d)
25 trap '[ -d "$TEMPDIR" ] && rm -rf "$TEMPDIR"' EXIT
13 26
14 withNarKeyCompat = flakeCompat: path: moduleAttrs: 27 password=$(sops -d $SOPS_VARS_FILE | yq -r .cryptsetup_encryption_keys.${name})
15 let module = (flakeCompat path).${moduleAttrs}; 28 mkdir -p $TEMPDIR/boot/initrdSecrets
16 narHash = computeNarHash path; 29 chmod -R go-rwx $TEMPDIR/boot/initrdSecrets
17 in if builtins.isFunction module 30 sops -d $SOPS_VARS_FILE | yq -c '.ssh_host_keys.${name}[]' | while read -r key; do
18 then args@{ config, lib, pkgs, ... }: (module args // { key = narHash; }) 31 keytype=$(echo "$key" | yq -r .type)
19 else module // { key = narHash; }; 32 keyprivate=$(echo "$key" | yq -r .private)
33 keypublic=$(echo "$key" | yq -r .public)
34 echo "$keyprivate" > $TEMPDIR/boot/initrdSecrets/ssh_host_''${keytype}_key
35 echo "$keypublic" > $TEMPDIR/boot/initrdSecrets/ssh_host_''${keytype}_key.pub
36 done
37 chmod -R go-rwx $TEMPDIR/boot/initrdSecrets
20 38
21 withNarKey = dep: moduleAttrs: 39 ${nixos-anywhere.packages.${system}.nixos-anywhere}/bin/nixos-anywhere \
22 let module = dep.${moduleAttrs}; 40 -f .#${name}WithEncryption ${targetUser}@${targetHost} \
23 in if builtins.isFunction module 41 --disk-encryption-keys /run/decrypt-key <(echo -n "$password") \
24 then args@{ config, lib, pkgs, ... }: (module args // { key = dep.narHash; }) 42 --extra-files "$TEMPDIR"
25 else module // { key = dep.narHash; }; 43 '';
44 };
45
46 };
47 flake = {
48 nixosConfigurations.${name} = (colmena.lib.fromRawFlake self).nodes.${name};
49 nixosConfigurations."${name}WithEncryption" = let
50 selfWithEncryption = nixpkgs.lib.recursiveUpdate self { outputs.colmena.meta.specialArgs.cryptKeyFile = "/run/decrypt-key"; };
51 in
52 (colmena.lib.fromRawFlake selfWithEncryption).nodes.${name};
53 colmena = {
54 meta.nixpkgs = nixpkgs.legacyPackages.${system};
55 meta.specialArgs = moduleArgs;
56 "${name}" = {
57 deployment = { inherit targetHost targetUser; };
58 imports = builtins.attrValues self.nixosModules;
59 };
60 };
61 nixosModules = {
62 _diskoModules = disko.nixosModules.disko;
63 } // nixosModules;
64 };
65 };
26 }; 66 };
27 }; 67 };
28} 68}
diff --git a/flakes/loginctl-linger/flake.nix b/flakes/loginctl-linger/flake.nix
new file mode 100644
index 0000000..4828d37
--- /dev/null
+++ b/flakes/loginctl-linger/flake.nix
@@ -0,0 +1,56 @@
1{
2 outputs = { self }: {
3 nixosModule = { config, lib, pkgs, ... }:
4 # https://github.com/michalrus/dotfiles/commit/ebd5fa9583f82589f23531647aa677feb3f8d344#diff-4d353005ef5b3e37f33c07332b8523edR1
5 # A temporary hack to `loginctl enable-linger $somebody` (for
6 # multiplexer sessions to last), until this one is unresolved:
7 # https://github.com/NixOS/nixpkgs/issues/3702
8 #
9 # Usage: `users.extraUsers.somebody.linger = true` or slt.
10
11 with lib;
12
13 let
14
15 dataDir = "/var/lib/systemd/linger";
16
17 lingeringUsers = map (u: u.name) (attrValues (flip filterAttrs config.users.users (n: u: u.linger)));
18
19 lingeringUsersFile = builtins.toFile "lingering-users"
20 (concatStrings (map (s: "${s}\n")
21 (sort (a: b: a < b) lingeringUsers))); # this sorting is important for `comm` to work correctly
22
23 updateLingering = pkgs.writeScript "update-lingering" ''
24 if [ ! -e ${dataDir} ]; then
25 install -m 0755 -o root -g root -d ${dataDir}
26 fi
27 if [ -e ${dataDir} ] ; then
28 ls ${dataDir} | sort | comm -3 -1 ${lingeringUsersFile} - | xargs -r ${pkgs.systemd}/bin/loginctl disable-linger
29 ls ${dataDir} | sort | comm -3 -2 ${lingeringUsersFile} - | xargs -r ${pkgs.systemd}/bin/loginctl enable-linger
30 fi
31 '';
32
33 in
34
35 {
36 # Necessary for situations where flake gets included multiple times
37 key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
38 options = {
39 users.users = mkOption {
40 type = lib.types.attrsOf (lib.types.submodule {
41 options = {
42 linger = mkEnableOption "lingering for the user";
43 };
44 });
45 };
46 };
47
48 config = {
49 system.activationScripts.update-lingering = {
50 deps = ["users"];
51 text = "${updateLingering}";
52 };
53 };
54 };
55 };
56}
diff --git a/flakes/mastodon/default.nix b/flakes/mastodon/default.nix
new file mode 100644
index 0000000..5d32c23
--- /dev/null
+++ b/flakes/mastodon/default.nix
@@ -0,0 +1,94 @@
1{ varDir ? "/var/lib/mastodon",
2 stdenv, src, writeText, runCommand,
3 ruby_2_6, bundlerEnv, defaultGemConfig,
4 jq, protobuf, protobufc, pkgconfig, libidn, pam, nodejs, yarn, yarn2nix-moretea }:
5let
6 patched = runCommand "mastodon-patched" {
7 source = src;
8 } ''
9 cp -a $source $out
10 chmod -R u+w $out
11 sed -i -e "/fuubar/s/2.4.0/2.4.1/" $out/Gemfile.lock
12 sed -i -e "s/ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9/ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9#4255dc41fa7df9c3a02c1595f058e248bc37b784/" $out/yarn.lock
13 '';
14 gems = bundlerEnv {
15 name = "mastodon-env";
16 ruby = ruby_2_6;
17 gemset = ./gemset.nix;
18 gemdir = patched;
19 groups = [ "default" "production" "test" "development" ];
20 gemConfig = defaultGemConfig // {
21 redis-rack = attrs: {
22 preBuild = ''
23 sed -i 's!s\.files.*!!' redis-rack.gemspec
24 '';
25 };
26 tzinfo = attrs: {
27 preBuild = ''
28 sed -i 's!s\.files.*!!' tzinfo.gemspec
29 '';
30 };
31 cld3 = attrs: {
32 buildInputs = [ protobuf protobufc pkgconfig ];
33 };
34 idn-ruby = attrs: {
35 buildInputs = [ libidn ];
36 };
37 rpam2 = attrs: {
38 buildInputs = [ pam ];
39 };
40 };
41 };
42 yarnModules = let
43 packagejson = runCommand "package.json" { buildInputs = [ jq ]; } ''
44 cat ${patched}/package.json | jq -r '.version = "${src.version}"' > $out
45 '';
46 in
47 yarn2nix-moretea.mkYarnModules rec {
48 name = "mastodon-yarn";
49 pname = name;
50 version = src.version;
51 packageJSON = packagejson;
52 yarnLock = "${patched}/yarn.lock";
53 yarnNix = ./yarn-packages.nix;
54 pkgConfig = {
55 uws = {
56 postInstall = ''
57 npx node-gyp rebuild > build_log.txt 2>&1 || true
58 '';
59 };
60 };
61 };
62 mastodon_with_yarn = stdenv.mkDerivation {
63 pname = "mastodon";
64 version = src.version;
65 inherit src;
66 installPhase = ''
67 cp -a . $out
68 cp -a ${yarnModules}/node_modules $out
69 '';
70 buildInputs = [ yarnModules ];
71 };
72in
73stdenv.mkDerivation {
74 name = "mastodon";
75 version = src.version;
76 inherit mastodon_with_yarn;
77 builder = writeText "build_mastodon" ''
78 source $stdenv/setup
79 set -a
80 SECRET_KEY_BASE=Dummy
81 OTP_SECRET=Dummy
82 set +a
83 cp -a $mastodon_with_yarn $out
84 cd $out
85 chmod u+rwX . public
86 chmod -R u+rwX config/ node_modules/
87 sed -i -e 's@^end$@ config.action_mailer.sendmail_settings = { location: ENV.fetch("SENDMAIL_LOCATION", "/usr/sbin/sendmail") }\nend@' config/environments/production.rb
88 RAILS_ENV=production ${gems}/bin/rails assets:precompile
89 rm -rf tmp/cache
90 ln -sf ${varDir}/tmp/cache tmp
91 '';
92 buildInputs = [ gems gems.ruby nodejs yarn ];
93 passthru = { inherit gems varDir nodejs; };
94}
diff --git a/flakes/mastodon/flake.lock b/flakes/mastodon/flake.lock
new file mode 100644
index 0000000..aed0925
--- /dev/null
+++ b/flakes/mastodon/flake.lock
@@ -0,0 +1,75 @@
1{
2 "nodes": {
3 "flake-utils": {
4 "locked": {
5 "lastModified": 1648297722,
6 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
7 "owner": "numtide",
8 "repo": "flake-utils",
9 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
10 "type": "github"
11 },
12 "original": {
13 "owner": "numtide",
14 "repo": "flake-utils",
15 "type": "github"
16 }
17 },
18 "mastodon": {
19 "flake": false,
20 "locked": {
21 "lastModified": 1582790581,
22 "narHash": "sha256-YImWfvsJQzJHyKoWI6OP6BA+NvmHF2RiwJqOg0NUN/U=",
23 "owner": "tootsuite",
24 "repo": "mastodon",
25 "rev": "9bace2dd88d127d396794375c8fcb2132619a799",
26 "type": "github"
27 },
28 "original": {
29 "owner": "tootsuite",
30 "ref": "v2.9.4",
31 "repo": "mastodon",
32 "type": "github"
33 }
34 },
35 "myuids": {
36 "locked": {
37 "lastModified": 1,
38 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
39 "path": "../myuids",
40 "type": "path"
41 },
42 "original": {
43 "path": "../myuids",
44 "type": "path"
45 }
46 },
47 "nixpkgs": {
48 "flake": false,
49 "locked": {
50 "lastModified": 1596265691,
51 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
52 "owner": "NixOS",
53 "repo": "nixpkgs",
54 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
55 "type": "github"
56 },
57 "original": {
58 "owner": "NixOS",
59 "repo": "nixpkgs",
60 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
61 "type": "github"
62 }
63 },
64 "root": {
65 "inputs": {
66 "flake-utils": "flake-utils",
67 "mastodon": "mastodon",
68 "myuids": "myuids",
69 "nixpkgs": "nixpkgs"
70 }
71 }
72 },
73 "root": "root",
74 "version": 7
75}
diff --git a/flakes/mastodon/flake.nix b/flakes/mastodon/flake.nix
new file mode 100644
index 0000000..1d0db10
--- /dev/null
+++ b/flakes/mastodon/flake.nix
@@ -0,0 +1,331 @@
1{
2 description = "Your self-hosted, globally interconnected microblogging community";
3 inputs.myuids = {
4 url = "path:../myuids";
5 };
6 inputs.flake-utils.url = "github:numtide/flake-utils";
7 inputs.nixpkgs = {
8 url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
9 flake = false;
10 };
11 inputs.mastodon = {
12 url = "github:tootsuite/mastodon/v2.9.4";
13 flake = false;
14 };
15
16 outputs = { self, myuids, nixpkgs, mastodon, flake-utils }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
17 let
18 pkgs = import nixpkgs { inherit system; overlays = []; };
19 version = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.mastodon.original.ref;
20 inherit (pkgs) callPackage;
21 in rec {
22 packages.mastodon = callPackage ./. { src = mastodon // { inherit version; }; };
23 defaultPackage = packages.mastodon;
24 legacyPackages.mastodon = packages.mastodon;
25 checks = {
26 build = defaultPackage;
27 };
28 }
29 ) // rec {
30 overlays = {
31 mastodon = final: prev: {
32 mastodon = self.defaultPackage."${final.system}";
33 };
34 };
35 overlay = overlays.mastodon;
36 nixosModule = { lib, pkgs, config, ... }:
37 let
38 name = "mastodon";
39 cfg = config.immaeServices.mastodon;
40 in
41 {
42 options.immaeServices.mastodon = {
43 enable = lib.mkEnableOption "Enable Mastodon’s service";
44 user = lib.mkOption {
45 type = lib.types.str;
46 default = name;
47 description = "User account under which Mastodon runs";
48 };
49 group = lib.mkOption {
50 type = lib.types.str;
51 default = name;
52 description = "Group under which Mastodon runs";
53 };
54 dataDir = lib.mkOption {
55 type = lib.types.path;
56 default = "/var/lib/${name}";
57 description = ''
58 The directory where Mastodon stores its data.
59 '';
60 };
61 socketsPrefix = lib.mkOption {
62 type = lib.types.str;
63 default = "live";
64 description = ''
65 The prefix to use for Mastodon sockets.
66 '';
67 };
68 socketsDir = lib.mkOption {
69 type = lib.types.path;
70 default = "/run/${name}";
71 description = ''
72 The directory where Mastodon puts runtime files and sockets.
73 '';
74 };
75 configFile = lib.mkOption {
76 type = lib.types.path;
77 description = ''
78 The configuration file path for Mastodon.
79 '';
80 };
81 package = lib.mkOption {
82 type = lib.types.package;
83 default = pkgs.mastodon;
84 description = ''
85 Mastodon package to use.
86 '';
87 };
88 # Output variables
89 workdir = lib.mkOption {
90 type = lib.types.package;
91 default = cfg.package.override { varDir = cfg.dataDir; };
92 description = ''
93 Adjusted mastodon package with overriden varDir
94 '';
95 readOnly = true;
96 };
97 systemdStateDirectory = lib.mkOption {
98 type = lib.types.str;
99 # Use ReadWritePaths= instead if varDir is outside of /var/lib
100 default = assert lib.strings.hasPrefix "/var/lib/" cfg.dataDir;
101 lib.strings.removePrefix "/var/lib/" cfg.dataDir;
102 description = ''
103 Adjusted Mastodon data directory for systemd
104 '';
105 readOnly = true;
106 };
107 systemdRuntimeDirectory = lib.mkOption {
108 type = lib.types.str;
109 # Use ReadWritePaths= instead if socketsDir is outside of /run
110 default = assert lib.strings.hasPrefix "/run/" cfg.socketsDir;
111 lib.strings.removePrefix "/run/" cfg.socketsDir;
112 description = ''
113 Adjusted Mastodon sockets directory for systemd
114 '';
115 readOnly = true;
116 };
117 sockets = lib.mkOption {
118 type = lib.types.attrsOf lib.types.path;
119 default = {
120 node = "${cfg.socketsDir}/${cfg.socketsPrefix}_node.sock";
121 rails = "${cfg.socketsDir}/${cfg.socketsPrefix}_puma.sock";
122 };
123 readOnly = true;
124 description = ''
125 Mastodon sockets
126 '';
127 };
128 };
129
130 config = lib.mkIf cfg.enable {
131 nixpkgs.overlays = [ self.overlay ];
132 users.users = lib.optionalAttrs (cfg.user == name) {
133 "${name}" = {
134 uid = myuids.lib.uids.mastodon;
135 group = cfg.group;
136 description = "Mastodon user";
137 home = cfg.dataDir;
138 useDefaultShell = true;
139 };
140 };
141 users.groups = lib.optionalAttrs (cfg.group == name) {
142 "${name}" = {
143 gid = myuids.lib.gids.mastodon;
144 };
145 };
146
147 systemd.slices.mastodon = {
148 description = "Mastodon slice";
149 };
150
151 systemd.services.mastodon-streaming = {
152 description = "Mastodon Streaming";
153 wantedBy = [ "multi-user.target" ];
154 after = [ "network.target" "mastodon-web.service" ];
155
156 environment.NODE_ENV = "production";
157 environment.SOCKET = cfg.sockets.node;
158
159 path = [ cfg.workdir.nodejs pkgs.bashInteractive ];
160
161 script = ''
162 exec npm run start
163 '';
164
165 postStart = ''
166 while [ ! -S $SOCKET ]; do
167 sleep 0.5
168 done
169 chmod a+w $SOCKET
170 '';
171
172 postStop = ''
173 rm $SOCKET
174 '';
175
176 serviceConfig = {
177 Slice = "mastodon.slice";
178 User = cfg.user;
179 EnvironmentFile = cfg.configFile;
180 PrivateTmp = true;
181 Restart = "always";
182 TimeoutSec = 15;
183 Type = "simple";
184 WorkingDirectory = cfg.workdir;
185 StateDirectory = cfg.systemdStateDirectory;
186 RuntimeDirectory = cfg.systemdRuntimeDirectory;
187 RuntimeDirectoryPreserve = "yes";
188 };
189
190 unitConfig.RequiresMountsFor = cfg.dataDir;
191 };
192
193 systemd.services.mastodon-web = {
194 description = "Mastodon Web app";
195 wantedBy = [ "multi-user.target" ];
196 after = [ "network.target" ];
197
198 environment.RAILS_ENV = "production";
199 environment.BUNDLE_PATH = "${cfg.workdir.gems}/${cfg.workdir.gems.ruby.gemPath}";
200 environment.BUNDLE_GEMFILE = "${cfg.workdir.gems.confFiles}/Gemfile";
201 environment.SOCKET = cfg.sockets.rails;
202
203 path = [ cfg.workdir.gems cfg.workdir.gems.ruby pkgs.file pkgs.imagemagick ];
204
205 preStart = ''
206 install -m 0755 -d ${cfg.dataDir}/tmp/cache
207 ./bin/bundle exec rails db:migrate
208 '';
209
210 script = ''
211 exec ./bin/bundle exec puma -C config/puma.rb
212 '';
213
214 postStart = ''
215 exec ./bin/tootctl cache clear
216 '';
217 serviceConfig = {
218 Slice = "mastodon.slice";
219 User = cfg.user;
220 EnvironmentFile = cfg.configFile;
221 PrivateTmp = true;
222 Restart = "always";
223 TimeoutSec = 60;
224 Type = "simple";
225 WorkingDirectory = cfg.workdir;
226 StateDirectory = cfg.systemdStateDirectory;
227 RuntimeDirectory = cfg.systemdRuntimeDirectory;
228 RuntimeDirectoryPreserve = "yes";
229 };
230
231 unitConfig.RequiresMountsFor = cfg.dataDir;
232 };
233
234 # To be run manually because computationnally heavy
235 systemd.services.mastodon-cleanup-manual = {
236 description = "Cleanup mastodon";
237
238 environment.RAILS_ENV = "production";
239 environment.BUNDLE_PATH = "${cfg.workdir.gems}/${cfg.workdir.gems.ruby.gemPath}";
240 environment.BUNDLE_GEMFILE = "${cfg.workdir.gems.confFiles}/Gemfile";
241 environment.SOCKET = cfg.sockets.rails;
242
243 path = [ cfg.workdir.gems cfg.workdir.gems.ruby pkgs.file ];
244
245 script = ''
246 exec ./bin/tootctl statuses remove --days 365
247 '';
248
249 serviceConfig = {
250 User = cfg.user;
251 EnvironmentFile = cfg.configFile;
252 PrivateTmp = true;
253 Type = "oneshot";
254 WorkingDirectory = cfg.workdir;
255 StateDirectory = cfg.systemdStateDirectory;
256 RuntimeDirectory = cfg.systemdRuntimeDirectory;
257 RuntimeDirectoryPreserve = "yes";
258 };
259
260 unitConfig.RequiresMountsFor = cfg.dataDir;
261 };
262
263 systemd.services.mastodon-cleanup = {
264 description = "Cleanup mastodon";
265 startAt = "daily";
266 restartIfChanged = false;
267
268 environment.RAILS_ENV = "production";
269 environment.BUNDLE_PATH = "${cfg.workdir.gems}/${cfg.workdir.gems.ruby.gemPath}";
270 environment.BUNDLE_GEMFILE = "${cfg.workdir.gems.confFiles}/Gemfile";
271 environment.SOCKET = cfg.sockets.rails;
272
273 path = [ cfg.workdir.gems cfg.workdir.gems.ruby pkgs.file ];
274
275 script = ''
276 exec ./bin/tootctl media remove --days 30
277 '';
278
279 serviceConfig = {
280 User = cfg.user;
281 EnvironmentFile = cfg.configFile;
282 PrivateTmp = true;
283 Type = "oneshot";
284 WorkingDirectory = cfg.workdir;
285 StateDirectory = cfg.systemdStateDirectory;
286 RuntimeDirectory = cfg.systemdRuntimeDirectory;
287 RuntimeDirectoryPreserve = "yes";
288 };
289
290 unitConfig.RequiresMountsFor = cfg.dataDir;
291 };
292
293 systemd.services.mastodon-sidekiq = {
294 description = "Mastodon Sidekiq";
295 wantedBy = [ "multi-user.target" ];
296 after = [ "network.target" "mastodon-web.service" ];
297
298 environment.RAILS_ENV="production";
299 environment.BUNDLE_PATH = "${cfg.workdir.gems}/${cfg.workdir.gems.ruby.gemPath}";
300 environment.BUNDLE_GEMFILE = "${cfg.workdir.gems.confFiles}/Gemfile";
301 environment.DB_POOL="5";
302
303 path = [ cfg.workdir.gems cfg.workdir.gems.ruby pkgs.imagemagick pkgs.ffmpeg pkgs.file ];
304
305 script = ''
306 exec ./bin/bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push
307 '';
308
309 serviceConfig = {
310 Slice = "mastodon.slice";
311 User = cfg.user;
312 EnvironmentFile = cfg.configFile;
313 PrivateTmp = true;
314 Restart = "always";
315 TimeoutSec = 15;
316 Type = "simple";
317 WorkingDirectory = cfg.workdir;
318 StateDirectory = cfg.systemdStateDirectory;
319 RuntimeDirectory = cfg.systemdRuntimeDirectory;
320 RuntimeDirectoryPreserve = "yes";
321 };
322
323 unitConfig.RequiresMountsFor = cfg.dataDir;
324 };
325
326 };
327 };
328 };
329}
330
331
diff --git a/flakes/mastodon/gemset.nix b/flakes/mastodon/gemset.nix
new file mode 100644
index 0000000..74fa5b3
--- /dev/null
+++ b/flakes/mastodon/gemset.nix
@@ -0,0 +1,2816 @@
1{
2 actioncable = {
3 dependencies = ["actionpack" "nio4r" "websocket-driver"];
4 groups = ["default"];
5 platforms = [];
6 source = {
7 remotes = ["https://rubygems.org"];
8 sha256 = "04wd9rf8sglrqc8jz49apqcxbi51gdj7l1apf5qr4i86iddk6pkm";
9 type = "gem";
10 };
11 version = "5.2.3";
12 };
13 actionmailer = {
14 dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
15 groups = ["default" "development"];
16 platforms = [];
17 source = {
18 remotes = ["https://rubygems.org"];
19 sha256 = "15laym06zcm2021qdhlyr6y9jn1marw436i89hcxqg14a8zvyvwa";
20 type = "gem";
21 };
22 version = "5.2.3";
23 };
24 actionpack = {
25 dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
26 groups = ["default" "development" "pam_authentication" "production" "test"];
27 platforms = [];
28 source = {
29 remotes = ["https://rubygems.org"];
30 sha256 = "1s2iay17i2k0xx36cmnpbrmr5w6x70jk7fq1d8w70xcdw5chm0w1";
31 type = "gem";
32 };
33 version = "5.2.3";
34 };
35 actionview = {
36 dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
37 groups = ["default" "development" "pam_authentication" "production" "test"];
38 platforms = [];
39 source = {
40 remotes = ["https://rubygems.org"];
41 sha256 = "1v49rgf8305grqf6gq7qa47qhamr369igyy0giycz60x86afyr4h";
42 type = "gem";
43 };
44 version = "5.2.3";
45 };
46 active_model_serializers = {
47 dependencies = ["actionpack" "activemodel" "case_transform" "jsonapi-renderer"];
48 groups = ["default"];
49 platforms = [];
50 source = {
51 remotes = ["https://rubygems.org"];
52 sha256 = "00fldcifg5zyx866njpjhwlxjxvb32pakf5q3pwnw3ms905s70kd";
53 type = "gem";
54 };
55 version = "0.10.9";
56 };
57 active_record_query_trace = {
58 groups = ["development"];
59 platforms = [];
60 source = {
61 remotes = ["https://rubygems.org"];
62 sha256 = "16fwv2h3h3hh8v6wgrpv13yxgg8mswsld0d8z6q1y5z9vd8vncc3";
63 type = "gem";
64 };
65 version = "1.6.2";
66 };
67 activejob = {
68 dependencies = ["activesupport" "globalid"];
69 groups = ["default" "development"];
70 platforms = [];
71 source = {
72 remotes = ["https://rubygems.org"];
73 sha256 = "17vizibxbsli5yppgrvmw13wj7a9xy19s5nqxf1k23bbk2s5b87s";
74 type = "gem";
75 };
76 version = "5.2.3";
77 };
78 activemodel = {
79 dependencies = ["activesupport"];
80 groups = ["default" "development"];
81 platforms = [];
82 source = {
83 remotes = ["https://rubygems.org"];
84 sha256 = "0mghh9di8011ara9h1r5a216yzk1vjm9r3p0gdvdi8j1zmkl6k6h";
85 type = "gem";
86 };
87 version = "5.2.3";
88 };
89 activerecord = {
90 dependencies = ["activemodel" "activesupport" "arel"];
91 groups = ["default" "development"];
92 platforms = [];
93 source = {
94 remotes = ["https://rubygems.org"];
95 sha256 = "0d6036f592803iyvp6bw98p3sg638mia5dbw19lvachx6jgzfvpw";
96 type = "gem";
97 };
98 version = "5.2.3";
99 };
100 activestorage = {
101 dependencies = ["actionpack" "activerecord" "marcel"];
102 groups = ["default"];
103 platforms = [];
104 source = {
105 remotes = ["https://rubygems.org"];
106 sha256 = "04is6ipjqw1f337i8pm8w5bd99rpygqfd0fzzxkr7jd308ggmsjk";
107 type = "gem";
108 };
109 version = "5.2.3";
110 };
111 activesupport = {
112 dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
113 groups = ["default" "development" "pam_authentication" "production" "test"];
114 platforms = [];
115 source = {
116 remotes = ["https://rubygems.org"];
117 sha256 = "110vp4frgkw3mpzlmshg2f2ig09cknls2w68ym1r1s39d01v0mi8";
118 type = "gem";
119 };
120 version = "5.2.3";
121 };
122 addressable = {
123 dependencies = ["public_suffix"];
124 groups = ["default" "development" "test"];
125 platforms = [];
126 source = {
127 remotes = ["https://rubygems.org"];
128 sha256 = "0bcm2hchn897xjhqj9zzsxf3n9xhddymj4lsclz508f4vw3av46l";
129 type = "gem";
130 };
131 version = "2.6.0";
132 };
133 airbrussh = {
134 dependencies = ["sshkit"];
135 groups = ["default" "development"];
136 platforms = [];
137 source = {
138 remotes = ["https://rubygems.org"];
139 sha256 = "0yp1sl5n94ksxpwmaajflbdls45s81hw4spgz01h19xs2zrvv8wl";
140 type = "gem";
141 };
142 version = "1.3.0";
143 };
144 annotate = {
145 dependencies = ["activerecord" "rake"];
146 groups = ["development"];
147 platforms = [];
148 source = {
149 remotes = ["https://rubygems.org"];
150 sha256 = "1k3ls7z32gz6yx6y372r5a7sm4nkbyrc4nkqyqzgayfkgpjzh0wk";
151 type = "gem";
152 };
153 version = "2.7.5";
154 };
155 arel = {
156 groups = ["default" "development"];
157 platforms = [];
158 source = {
159 remotes = ["https://rubygems.org"];
160 sha256 = "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0";
161 type = "gem";
162 };
163 version = "9.0.0";
164 };
165 ast = {
166 groups = ["default" "development" "test"];
167 platforms = [];
168 source = {
169 remotes = ["https://rubygems.org"];
170 sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
171 type = "gem";
172 };
173 version = "2.4.0";
174 };
175 attr_encrypted = {
176 dependencies = ["encryptor"];
177 groups = ["default"];
178 platforms = [];
179 source = {
180 remotes = ["https://rubygems.org"];
181 sha256 = "0ncv2az1zlj33bsllr6q1qdvbw42gv91lxq0ryclbv8l8xh841jg";
182 type = "gem";
183 };
184 version = "3.1.0";
185 };
186 av = {
187 dependencies = ["cocaine"];
188 groups = ["default"];
189 platforms = [];
190 source = {
191 remotes = ["https://rubygems.org"];
192 sha256 = "1swakpybf6g0nzfdn6q4s9c97ysc3i4ffk84dw8v2321fpvc8gqq";
193 type = "gem";
194 };
195 version = "0.9.0";
196 };
197 aws-eventstream = {
198 groups = ["default"];
199 platforms = [];
200 source = {
201 remotes = ["https://rubygems.org"];
202 sha256 = "100g77a5ixg4p5zwq77f28n2pdkk0y481f7v83qrlmnj22318qq6";
203 type = "gem";
204 };
205 version = "1.0.3";
206 };
207 aws-partitions = {
208 groups = ["default"];
209 platforms = [];
210 source = {
211 remotes = ["https://rubygems.org"];
212 sha256 = "0f72sad43nm7qqcb6bmracqv4qjdijg1jd6yabad6jaszw2hncx2";
213 type = "gem";
214 };
215 version = "1.175.0";
216 };
217 aws-sdk-core = {
218 dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath"];
219 groups = ["default"];
220 platforms = [];
221 source = {
222 remotes = ["https://rubygems.org"];
223 sha256 = "1rgvjvg58qh8b5nppp27qfayh0709bhhbqdpqvcr4ccs8qanln07";
224 type = "gem";
225 };
226 version = "3.55.0";
227 };
228 aws-sdk-kms = {
229 dependencies = ["aws-sdk-core" "aws-sigv4"];
230 groups = ["default"];
231 platforms = [];
232 source = {
233 remotes = ["https://rubygems.org"];
234 sha256 = "1lkdhk75fj67n7wh61p13fga6n15s2lfvh1sfgdhaj99kmv44lyv";
235 type = "gem";
236 };
237 version = "1.21.0";
238 };
239 aws-sdk-s3 = {
240 dependencies = ["aws-sdk-core" "aws-sdk-kms" "aws-sigv4"];
241 groups = ["default"];
242 platforms = [];
243 source = {
244 remotes = ["https://rubygems.org"];
245 sha256 = "06vmp89n5gljx7rs57yjm6my8f3b14ddb24g95pnwsd86im7plp4";
246 type = "gem";
247 };
248 version = "1.42.0";
249 };
250 aws-sigv4 = {
251 dependencies = ["aws-eventstream"];
252 groups = ["default"];
253 platforms = [];
254 source = {
255 remotes = ["https://rubygems.org"];
256 sha256 = "1dfc8i5cxjwlvi4b665lbpbwvks8a6wfy3vfmwr3pjdmxwdmc2cs";
257 type = "gem";
258 };
259 version = "1.1.0";
260 };
261 bcrypt = {
262 groups = ["default" "pam_authentication"];
263 platforms = [];
264 source = {
265 remotes = ["https://rubygems.org"];
266 sha256 = "0ysblqxkclmnhrd0kmb5mr8p38mbar633gdsb14b7dhkhgawgzfy";
267 type = "gem";
268 };
269 version = "3.1.12";
270 };
271 benchmark-ips = {
272 groups = ["default" "development"];
273 platforms = [];
274 source = {
275 remotes = ["https://rubygems.org"];
276 sha256 = "1w59c4qnwkjqwn7zyp9hshslbshna77vknmz43h0va5lxisd6ai2";
277 type = "gem";
278 };
279 version = "2.7.2";
280 };
281 better_errors = {
282 dependencies = ["coderay" "erubi" "rack"];
283 groups = ["development"];
284 platforms = [];
285 source = {
286 remotes = ["https://rubygems.org"];
287 sha256 = "1mq43k4szfgcdanhdwacyp7yvldl76m9arhdj9n0x25dmbdzp2yn";
288 type = "gem";
289 };
290 version = "2.5.1";
291 };
292 binding_of_caller = {
293 dependencies = ["debug_inspector"];
294 groups = ["development"];
295 platforms = [];
296 source = {
297 remotes = ["https://rubygems.org"];
298 sha256 = "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g";
299 type = "gem";
300 };
301 version = "0.8.0";
302 };
303 blurhash = {
304 dependencies = ["ffi"];
305 groups = ["default"];
306 platforms = [];
307 source = {
308 remotes = ["https://rubygems.org"];
309 sha256 = "1n137f1dg3cwl8dwmss61kgi21n0vg6nnkd7vymxssd1vzl4r3fs";
310 type = "gem";
311 };
312 version = "0.1.3";
313 };
314 bootsnap = {
315 dependencies = ["msgpack"];
316 groups = ["default"];
317 platforms = [];
318 source = {
319 remotes = ["https://rubygems.org"];
320 sha256 = "1jcc0x0l3jqap8r8l1j994ljh93c8hcppm59mjzpa0hdvprh23av";
321 type = "gem";
322 };
323 version = "1.4.4";
324 };
325 brakeman = {
326 groups = ["development"];
327 platforms = [];
328 source = {
329 remotes = ["https://rubygems.org"];
330 sha256 = "0vqnhlswvrg5fpxszfkjmla85gdlvgspz0whlli730ydx648mi68";
331 type = "gem";
332 };
333 version = "4.5.1";
334 };
335 browser = {
336 groups = ["default"];
337 platforms = [];
338 source = {
339 remotes = ["https://rubygems.org"];
340 sha256 = "0sdx0ny34i6vqxdsc7sy9g0nafdbrw8kvvb5xh9m18x1bzpqk92f";
341 type = "gem";
342 };
343 version = "2.5.3";
344 };
345 builder = {
346 groups = ["default" "development" "pam_authentication" "production" "test"];
347 platforms = [];
348 source = {
349 remotes = ["https://rubygems.org"];
350 sha256 = "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1";
351 type = "gem";
352 };
353 version = "3.2.3";
354 };
355 bullet = {
356 dependencies = ["activesupport" "uniform_notifier"];
357 groups = ["development"];
358 platforms = [];
359 source = {
360 remotes = ["https://rubygems.org"];
361 sha256 = "0i00v399i0g8wba5kw32qhx15bygih8fcr59c9qvy2mpwcqaspv5";
362 type = "gem";
363 };
364 version = "6.0.0";
365 };
366 bundler-audit = {
367 dependencies = ["thor"];
368 groups = ["development"];
369 platforms = [];
370 source = {
371 remotes = ["https://rubygems.org"];
372 sha256 = "0pm22xpn3xyymsainixnrk8v3l3xi9bzwkjkspx00cfzp84xvxbq";
373 type = "gem";
374 };
375 version = "0.6.1";
376 };
377 byebug = {
378 groups = ["default" "development" "test"];
379 platforms = [];
380 source = {
381 remotes = ["https://rubygems.org"];
382 sha256 = "1vk10jinfp345s2cb4ba7d0jcxj3phbgvab0by4a3ln2d376mkj4";
383 type = "gem";
384 };
385 version = "11.0.0";
386 };
387 capistrano = {
388 dependencies = ["airbrussh" "i18n" "rake" "sshkit"];
389 groups = ["development"];
390 platforms = [];
391 source = {
392 remotes = ["https://rubygems.org"];
393 sha256 = "1p1hj8hpmplxl41y6phsvkw2k8x3yxmkngs8yl8gkr7c1ma870p4";
394 type = "gem";
395 };
396 version = "3.11.0";
397 };
398 capistrano-bundler = {
399 dependencies = ["capistrano" "sshkit"];
400 groups = ["default" "development"];
401 platforms = [];
402 source = {
403 remotes = ["https://rubygems.org"];
404 sha256 = "1p00rw2886v77kfjnh0mslyrv4lij5fa9niflz1lhynzlivgrmdr";
405 type = "gem";
406 };
407 version = "1.3.0";
408 };
409 capistrano-rails = {
410 dependencies = ["capistrano" "capistrano-bundler"];
411 groups = ["development"];
412 platforms = [];
413 source = {
414 remotes = ["https://rubygems.org"];
415 sha256 = "19j82kiarrph1ilw2xfhfj62z0b53w0gph7613b21iccb2gn3dqy";
416 type = "gem";
417 };
418 version = "1.4.0";
419 };
420 capistrano-rbenv = {
421 dependencies = ["capistrano" "sshkit"];
422 groups = ["development"];
423 platforms = [];
424 source = {
425 remotes = ["https://rubygems.org"];
426 sha256 = "182dmsliny87b74m9mxi7farmp03ycqh30yf58b2kcx7m2js2s92";
427 type = "gem";
428 };
429 version = "2.1.4";
430 };
431 capistrano-yarn = {
432 dependencies = ["capistrano"];
433 groups = ["development"];
434 platforms = [];
435 source = {
436 remotes = ["https://rubygems.org"];
437 sha256 = "1zdg2s061vl5b8114n909mrjb2hc1qx0i4wqx9nacsrcjgyp07l9";
438 type = "gem";
439 };
440 version = "2.0.2";
441 };
442 capybara = {
443 dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
444 groups = ["test"];
445 platforms = [];
446 source = {
447 remotes = ["https://rubygems.org"];
448 sha256 = "0zg182fa19w0n19v6l72ly2rsyd4x5jvph2bfrm1fjba6wwxn20h";
449 type = "gem";
450 };
451 version = "3.24.0";
452 };
453 case_transform = {
454 dependencies = ["activesupport"];
455 groups = ["default"];
456 platforms = [];
457 source = {
458 remotes = ["https://rubygems.org"];
459 sha256 = "0fzyws6spn5arqf6q604dh9mrj84a36k5hsc8z7jgcpfvhc49bg2";
460 type = "gem";
461 };
462 version = "0.2";
463 };
464 charlock_holmes = {
465 groups = ["default"];
466 platforms = [];
467 source = {
468 remotes = ["https://rubygems.org"];
469 sha256 = "1nf1l31n10yaark2rrg5qzyzcx9w80681449s3j09qmnipsl8rl5";
470 type = "gem";
471 };
472 version = "0.7.6";
473 };
474 chewy = {
475 dependencies = ["activesupport" "elasticsearch" "elasticsearch-dsl"];
476 groups = ["default"];
477 platforms = [];
478 source = {
479 remotes = ["https://rubygems.org"];
480 sha256 = "0m1n98fww2is9v4h73qnxjzs0l9ixx2szby5rip26g9l7mjwmm7v";
481 type = "gem";
482 };
483 version = "5.0.0";
484 };
485 chunky_png = {
486 groups = ["default"];
487 platforms = [];
488 source = {
489 remotes = ["https://rubygems.org"];
490 sha256 = "05g2xli9wbjylkmblln3bhvjalziwb92q452q8ibjagmb853424w";
491 type = "gem";
492 };
493 version = "1.3.10";
494 };
495 cld3 = {
496 dependencies = ["ffi"];
497 groups = ["default"];
498 platforms = [];
499 source = {
500 remotes = ["https://rubygems.org"];
501 sha256 = "06p4jgrr0zixqnflmg5dcrbmhlnmll85j7vxkrjmnng293cwvzgw";
502 type = "gem";
503 };
504 version = "3.2.4";
505 };
506 climate_control = {
507 groups = ["test"];
508 platforms = [];
509 source = {
510 remotes = ["https://rubygems.org"];
511 sha256 = "0q11v0iabvr6rif0d025xh078ili5frrihlj0m04zfg7lgvagxji";
512 type = "gem";
513 };
514 version = "0.2.0";
515 };
516 cocaine = {
517 dependencies = ["climate_control"];
518 groups = ["default"];
519 platforms = [];
520 source = {
521 remotes = ["https://rubygems.org"];
522 sha256 = "01kk5xd7lspbkdvn6nyj0y51zhvia3z6r4nalbdcqw5fbsywwi7d";
523 type = "gem";
524 };
525 version = "0.5.8";
526 };
527 coderay = {
528 groups = ["default" "development" "test"];
529 platforms = [];
530 source = {
531 remotes = ["https://rubygems.org"];
532 sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
533 type = "gem";
534 };
535 version = "1.1.2";
536 };
537 concurrent-ruby = {
538 groups = ["default" "development" "pam_authentication" "production" "test"];
539 platforms = [];
540 source = {
541 remotes = ["https://rubygems.org"];
542 sha256 = "1x07r23s7836cpp5z9yrlbpljcxpax14yw4fy4bnp6crhr6x24an";
543 type = "gem";
544 };
545 version = "1.1.5";
546 };
547 connection_pool = {
548 groups = ["default" "test"];
549 platforms = [];
550 source = {
551 remotes = ["https://rubygems.org"];
552 sha256 = "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68";
553 type = "gem";
554 };
555 version = "2.2.2";
556 };
557 crack = {
558 dependencies = ["safe_yaml"];
559 groups = ["default" "test"];
560 platforms = [];
561 source = {
562 remotes = ["https://rubygems.org"];
563 sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
564 type = "gem";
565 };
566 version = "0.4.3";
567 };
568 crass = {
569 groups = ["default" "development" "pam_authentication" "production" "test"];
570 platforms = [];
571 source = {
572 remotes = ["https://rubygems.org"];
573 sha256 = "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi";
574 type = "gem";
575 };
576 version = "1.0.4";
577 };
578 css_parser = {
579 dependencies = ["addressable"];
580 groups = ["default"];
581 platforms = [];
582 source = {
583 remotes = ["https://rubygems.org"];
584 sha256 = "0gwvf8mc8gnz4aizfijplv3594998h2j44ydakpzsdmkivs07v61";
585 type = "gem";
586 };
587 version = "1.6.0";
588 };
589 debug_inspector = {
590 groups = ["default" "development"];
591 platforms = [];
592 source = {
593 remotes = ["https://rubygems.org"];
594 sha256 = "0vxr0xa1mfbkfcrn71n7c4f2dj7la5hvphn904vh20j3x4j5lrx0";
595 type = "gem";
596 };
597 version = "0.0.3";
598 };
599 derailed_benchmarks = {
600 dependencies = ["benchmark-ips" "get_process_mem" "heapy" "memory_profiler" "rack" "rake" "thor"];
601 groups = ["development"];
602 platforms = [];
603 source = {
604 remotes = ["https://rubygems.org"];
605 sha256 = "1c9djg1r2w461h97zmmdsdgnsrxqm4qfyp7gry9qxbav9skrplb8";
606 type = "gem";
607 };
608 version = "1.3.5";
609 };
610 devise = {
611 dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
612 groups = ["default" "pam_authentication"];
613 platforms = [];
614 source = {
615 remotes = ["https://rubygems.org"];
616 sha256 = "04b2p61mqfb6ln8s2lhmvnkd45wjjinykbn9svmhs54kacrrjkcf";
617 type = "gem";
618 };
619 version = "4.6.2";
620 };
621 devise-two-factor = {
622 dependencies = ["activesupport" "attr_encrypted" "devise" "railties" "rotp"];
623 groups = ["default"];
624 platforms = [];
625 source = {
626 remotes = ["https://rubygems.org"];
627 sha256 = "1b61s5y1ch205lgf3xv8hcvyi27ddd0d4qbbcpnnakhn2bx16lmc";
628 type = "gem";
629 };
630 version = "3.0.3";
631 };
632 devise_pam_authenticatable2 = {
633 dependencies = ["devise" "rpam2"];
634 groups = ["pam_authentication"];
635 platforms = [];
636 source = {
637 remotes = ["https://rubygems.org"];
638 sha256 = "13ipl52pkhc6vxp8ca31viwv01237bi2bfk3b1fixq1x46nf87p2";
639 type = "gem";
640 };
641 version = "9.2.0";
642 };
643 diff-lcs = {
644 groups = ["default" "development" "test"];
645 platforms = [];
646 source = {
647 remotes = ["https://rubygems.org"];
648 sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
649 type = "gem";
650 };
651 version = "1.3";
652 };
653 docile = {
654 groups = ["default" "test"];
655 platforms = [];
656 source = {
657 remotes = ["https://rubygems.org"];
658 sha256 = "0yyh4lr03q2vafzsfqy1xax7vr8zn7mbddz3ax3vnlm5fg0px6pn";
659 type = "gem";
660 };
661 version = "1.3.0";
662 };
663 domain_name = {
664 dependencies = ["unf"];
665 groups = ["default"];
666 platforms = [];
667 source = {
668 remotes = ["https://rubygems.org"];
669 sha256 = "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v";
670 type = "gem";
671 };
672 version = "0.5.20180417";
673 };
674 doorkeeper = {
675 dependencies = ["railties"];
676 groups = ["default"];
677 platforms = [];
678 source = {
679 remotes = ["https://rubygems.org"];
680 sha256 = "0zz92d57v1gcvbch9s9dw33x7mklgp1m5h2bicnzcc329rsia5gz";
681 type = "gem";
682 };
683 version = "5.1.0";
684 };
685 dotenv = {
686 groups = ["default"];
687 platforms = [];
688 source = {
689 remotes = ["https://rubygems.org"];
690 sha256 = "13cis6bf06hmz744xrsl163p6gb78xcm8g8q4pcabsy5ywyv6kag";
691 type = "gem";
692 };
693 version = "2.7.2";
694 };
695 dotenv-rails = {
696 dependencies = ["dotenv" "railties"];
697 groups = ["default"];
698 platforms = [];
699 source = {
700 remotes = ["https://rubygems.org"];
701 sha256 = "0ih7nx7byiaws3w4vsb82fcfkgw4z14y8rclhnxmpghj0kn4871s";
702 type = "gem";
703 };
704 version = "2.7.2";
705 };
706 elasticsearch = {
707 dependencies = ["elasticsearch-api" "elasticsearch-transport"];
708 groups = ["default"];
709 platforms = [];
710 source = {
711 remotes = ["https://rubygems.org"];
712 sha256 = "0a08ynvxz5clfm2ndqpgjrv4aiga9m2y1ab34s3qkihdfdzdzhj8";
713 type = "gem";
714 };
715 version = "6.0.2";
716 };
717 elasticsearch-api = {
718 dependencies = ["multi_json"];
719 groups = ["default"];
720 platforms = [];
721 source = {
722 remotes = ["https://rubygems.org"];
723 sha256 = "1vkahknqn85vvwr1gzh8jf3pvdial0c0d524icg8x06vibqgzd5h";
724 type = "gem";
725 };
726 version = "6.0.2";
727 };
728 elasticsearch-dsl = {
729 groups = ["default"];
730 platforms = [];
731 source = {
732 remotes = ["https://rubygems.org"];
733 sha256 = "1mwn6hvkki560p7sfc841q15zzgldsk9lzm2mlvc2bra7x1yk2q8";
734 type = "gem";
735 };
736 version = "0.1.5";
737 };
738 elasticsearch-transport = {
739 dependencies = ["faraday" "multi_json"];
740 groups = ["default"];
741 platforms = [];
742 source = {
743 remotes = ["https://rubygems.org"];
744 sha256 = "0gpwbw70qisx681j1bw8xq6shg5kdxmcdzg6425af0b5881jg7iy";
745 type = "gem";
746 };
747 version = "6.0.2";
748 };
749 encryptor = {
750 groups = ["default"];
751 platforms = [];
752 source = {
753 remotes = ["https://rubygems.org"];
754 sha256 = "0s8rvfl0vn8w7k1sgkc234060jh468s3zd45xa64p1jdmfa3zwmb";
755 type = "gem";
756 };
757 version = "3.0.0";
758 };
759 equatable = {
760 groups = ["default"];
761 platforms = [];
762 source = {
763 remotes = ["https://rubygems.org"];
764 sha256 = "1sjm9zjakyixyvsqziikdrsqfzis6j3fq23crgjkp6fwkfgndj7x";
765 type = "gem";
766 };
767 version = "0.5.0";
768 };
769 erubi = {
770 groups = ["default" "development" "pam_authentication" "production" "test"];
771 platforms = [];
772 source = {
773 remotes = ["https://rubygems.org"];
774 sha256 = "1kagnf6ziahj0d781s6ryy6fwqwa3ad4xbzzj84p9m4nv4c2jir1";
775 type = "gem";
776 };
777 version = "1.8.0";
778 };
779 et-orbi = {
780 dependencies = ["tzinfo"];
781 groups = ["default"];
782 platforms = [];
783 source = {
784 remotes = ["https://rubygems.org"];
785 sha256 = "0wk7i0bmsy46la8gcvbmdns0ni8lmdqas838phj97bdwykxw8m4b";
786 type = "gem";
787 };
788 version = "1.1.6";
789 };
790 excon = {
791 groups = ["default"];
792 platforms = [];
793 source = {
794 remotes = ["https://rubygems.org"];
795 sha256 = "15l9w0938c19nxmrp09n75qpmm64k12xj69h47yvxzcxcpbgnkb2";
796 type = "gem";
797 };
798 version = "0.62.0";
799 };
800 fabrication = {
801 groups = ["development" "test"];
802 platforms = [];
803 source = {
804 remotes = ["https://rubygems.org"];
805 sha256 = "107jd1vwyg890xv9lvnyfnrx5pwqk38cx880m4pg7i98902y5796";
806 type = "gem";
807 };
808 version = "2.20.2";
809 };
810 faker = {
811 dependencies = ["i18n"];
812 groups = ["test"];
813 platforms = [];
814 source = {
815 remotes = ["https://rubygems.org"];
816 sha256 = "1vslyqmk9gjvp1ahyfqmwy1jcyv75rp88hxwpy7cdk2lpdb1jp3l";
817 type = "gem";
818 };
819 version = "1.9.3";
820 };
821 faraday = {
822 dependencies = ["multipart-post"];
823 groups = ["default"];
824 platforms = [];
825 source = {
826 remotes = ["https://rubygems.org"];
827 sha256 = "1dv1vcxxyw4vy0r2diiml0r8zqk1csrksfxv8nkrw61xlf2daaaa";
828 type = "gem";
829 };
830 version = "0.15.0";
831 };
832 fast_blank = {
833 groups = ["default"];
834 platforms = [];
835 source = {
836 remotes = ["https://rubygems.org"];
837 sha256 = "16s1ilyvwzmkcgmklbrn0c2pch5n02vf921njx0bld4crgdr6z56";
838 type = "gem";
839 };
840 version = "1.0.0";
841 };
842 fastimage = {
843 groups = ["default"];
844 platforms = [];
845 source = {
846 remotes = ["https://rubygems.org"];
847 sha256 = "1iy9jm13r2r4yz41xaivhxs8mvqn57fjwihxvazbip002mq6rxfz";
848 type = "gem";
849 };
850 version = "2.1.5";
851 };
852 ffi = {
853 groups = ["default"];
854 platforms = [];
855 source = {
856 remotes = ["https://rubygems.org"];
857 sha256 = "0j8pzj8raxbir5w5k6s7a042sb5k02pg0f8s4na1r5lan901j00p";
858 type = "gem";
859 };
860 version = "1.10.0";
861 };
862 fog-core = {
863 dependencies = ["builder" "excon" "formatador" "mime-types"];
864 groups = ["default"];
865 platforms = [];
866 source = {
867 remotes = ["https://rubygems.org"];
868 sha256 = "1agd6xgzk0rxrsjdpn94v4hy89s0nm2cs4zg2p880w2dan9xgrak";
869 type = "gem";
870 };
871 version = "2.1.0";
872 };
873 fog-json = {
874 dependencies = ["fog-core" "multi_json"];
875 groups = ["default"];
876 platforms = [];
877 source = {
878 remotes = ["https://rubygems.org"];
879 sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
880 type = "gem";
881 };
882 version = "1.2.0";
883 };
884 fog-openstack = {
885 dependencies = ["fog-core" "fog-json" "ipaddress"];
886 groups = ["default"];
887 platforms = [];
888 source = {
889 remotes = ["https://rubygems.org"];
890 sha256 = "0aphjrvmchmqbyxqq82yj0qngyvkmwdci9iqs8722fi23bk83gdl";
891 type = "gem";
892 };
893 version = "0.3.7";
894 };
895 formatador = {
896 groups = ["default"];
897 platforms = [];
898 source = {
899 remotes = ["https://rubygems.org"];
900 sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
901 type = "gem";
902 };
903 version = "0.2.5";
904 };
905 fugit = {
906 dependencies = ["et-orbi" "raabro"];
907 groups = ["default"];
908 platforms = [];
909 source = {
910 remotes = ["https://rubygems.org"];
911 sha256 = "1szijawzdii668z5is9xi849399gy786951dx0l5r2z5mbfqvl9i";
912 type = "gem";
913 };
914 version = "1.1.6";
915 };
916 fuubar = {
917 dependencies = ["rspec-core" "ruby-progressbar"];
918 groups = ["development" "test"];
919 platforms = [];
920 source = {
921 remotes = ["https://rubygems.org"];
922 sha256 = "169nyc9yqdv8rjfc6g56d1arr0vrcbw4rn02m27g5v0n6405jp85";
923 type = "gem";
924 };
925 version = "2.4.1";
926 };
927 get_process_mem = {
928 groups = ["default" "development"];
929 platforms = [];
930 source = {
931 remotes = ["https://rubygems.org"];
932 sha256 = "1bvfjdign16r0zwm2rlfrq0sk1licvmlgbnlpnyckniv5r7i080g";
933 type = "gem";
934 };
935 version = "0.2.3";
936 };
937 globalid = {
938 dependencies = ["activesupport"];
939 groups = ["default" "development"];
940 platforms = [];
941 source = {
942 remotes = ["https://rubygems.org"];
943 sha256 = "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1";
944 type = "gem";
945 };
946 version = "0.4.2";
947 };
948 goldfinger = {
949 dependencies = ["addressable" "http" "nokogiri" "oj"];
950 groups = ["default"];
951 platforms = [];
952 source = {
953 remotes = ["https://rubygems.org"];
954 sha256 = "0n142035jhyqwczi52zjr07c8kygp9b9f158miaby3z5hygzjyzh";
955 type = "gem";
956 };
957 version = "2.1.0";
958 };
959 hamlit = {
960 dependencies = ["temple" "thor" "tilt"];
961 groups = ["default"];
962 platforms = [];
963 source = {
964 remotes = ["https://rubygems.org"];
965 sha256 = "17qn9w4100v9mkd4i8qbzs1d5ambdsqq0y1j6hhxbcldbqcznbvx";
966 type = "gem";
967 };
968 version = "2.9.3";
969 };
970 hamlit-rails = {
971 dependencies = ["actionpack" "activesupport" "hamlit" "railties"];
972 groups = ["default"];
973 platforms = [];
974 source = {
975 remotes = ["https://rubygems.org"];
976 sha256 = "0v75yd6x0nwky83smd9hw5ym9h0pi32jrzbnvq55pzj0rc95gg2p";
977 type = "gem";
978 };
979 version = "0.2.3";
980 };
981 hamster = {
982 dependencies = ["concurrent-ruby"];
983 groups = ["default"];
984 platforms = [];
985 source = {
986 remotes = ["https://rubygems.org"];
987 sha256 = "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar";
988 type = "gem";
989 };
990 version = "3.0.0";
991 };
992 hashdiff = {
993 groups = ["default" "test"];
994 platforms = [];
995 source = {
996 remotes = ["https://rubygems.org"];
997 sha256 = "1ncwxv7jbm3jj9phv6dd514463bkjwggxk10n2z100wf4cjcicrk";
998 type = "gem";
999 };
1000 version = "0.4.0";
1001 };
1002 hashie = {
1003 groups = ["default"];
1004 platforms = [];
1005 source = {
1006 remotes = ["https://rubygems.org"];
1007 sha256 = "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh";
1008 type = "gem";
1009 };
1010 version = "3.6.0";
1011 };
1012 heapy = {
1013 groups = ["default" "development"];
1014 platforms = [];
1015 source = {
1016 remotes = ["https://rubygems.org"];
1017 sha256 = "1r9f38fpgjgaxskkwvsliijj6vfmgsff9pnranvvvzkdl67hk1hw";
1018 type = "gem";
1019 };
1020 version = "0.1.4";
1021 };
1022 highline = {
1023 groups = ["default" "development" "test"];
1024 platforms = [];
1025 source = {
1026 remotes = ["https://rubygems.org"];
1027 sha256 = "0gr6pckj2jayxw1gdgh9193j5jag5zrrqqlrnl4jvcwpyd3sn2zc";
1028 type = "gem";
1029 };
1030 version = "2.0.1";
1031 };
1032 hiredis = {
1033 groups = ["default"];
1034 platforms = [];
1035 source = {
1036 remotes = ["https://rubygems.org"];
1037 sha256 = "04jj8k7lxqxw24sp0jiravigdkgsyrpprxpxm71ba93x1wr2w1bz";
1038 type = "gem";
1039 };
1040 version = "0.6.3";
1041 };
1042 hkdf = {
1043 groups = ["default"];
1044 platforms = [];
1045 source = {
1046 remotes = ["https://rubygems.org"];
1047 sha256 = "04fixg0a51n4vy0j6c1hvisa2yl33m3jrrpxpb5sq6j511vjriil";
1048 type = "gem";
1049 };
1050 version = "0.3.0";
1051 };
1052 htmlentities = {
1053 groups = ["default"];
1054 platforms = [];
1055 source = {
1056 remotes = ["https://rubygems.org"];
1057 sha256 = "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj";
1058 type = "gem";
1059 };
1060 version = "4.3.4";
1061 };
1062 http = {
1063 dependencies = ["addressable" "http-cookie" "http-form_data" "http_parser.rb"];
1064 groups = ["default"];
1065 platforms = [];
1066 source = {
1067 remotes = ["https://rubygems.org"];
1068 sha256 = "1jlm5prw437wqpfxcigh88lfap3m7g8mnmj5as7qw6dzqnvrxwmc";
1069 type = "gem";
1070 };
1071 version = "3.3.0";
1072 };
1073 http-cookie = {
1074 dependencies = ["domain_name"];
1075 groups = ["default"];
1076 platforms = [];
1077 source = {
1078 remotes = ["https://rubygems.org"];
1079 sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
1080 type = "gem";
1081 };
1082 version = "1.0.3";
1083 };
1084 http-form_data = {
1085 groups = ["default"];
1086 platforms = [];
1087 source = {
1088 remotes = ["https://rubygems.org"];
1089 sha256 = "15lpn604byf7cyxnw949xz4rvpcknqp7a48q73nm630gqxsa76f3";
1090 type = "gem";
1091 };
1092 version = "2.1.1";
1093 };
1094 http_accept_language = {
1095 groups = ["default"];
1096 platforms = [];
1097 source = {
1098 remotes = ["https://rubygems.org"];
1099 sha256 = "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0";
1100 type = "gem";
1101 };
1102 version = "2.1.1";
1103 };
1104 "http_parser.rb" = {
1105 groups = ["default"];
1106 platforms = [];
1107 source = {
1108 fetchSubmodules = true;
1109 rev = "54b17ba8c7d8d20a16dfc65d1775241833219cf2";
1110 sha256 = "16ihplh821kjbck9kjvqr780qsx9wi9vyc6kpmydj44r2pq76v59";
1111 type = "git";
1112 url = "https://github.com/tmm1/http_parser.rb";
1113 };
1114 version = "0.6.1";
1115 };
1116 httplog = {
1117 dependencies = ["rack" "rainbow"];
1118 groups = ["default"];
1119 platforms = [];
1120 source = {
1121 remotes = ["https://rubygems.org"];
1122 sha256 = "1s7g48hbzxabnf8i9gyw7q3710wnmni2lpqznnvpi8s4z7k58jdp";
1123 type = "gem";
1124 };
1125 version = "1.3.1";
1126 };
1127 i18n = {
1128 dependencies = ["concurrent-ruby"];
1129 groups = ["default" "development" "pam_authentication" "production" "test"];
1130 platforms = [];
1131 source = {
1132 remotes = ["https://rubygems.org"];
1133 sha256 = "1hfxnlyr618s25xpafw9mypa82qppjccbh292c4l3bj36az7f6wl";
1134 type = "gem";
1135 };
1136 version = "1.6.0";
1137 };
1138 i18n-tasks = {
1139 dependencies = ["activesupport" "ast" "erubi" "highline" "i18n" "parser" "rails-i18n" "rainbow" "terminal-table"];
1140 groups = ["development" "test"];
1141 platforms = [];
1142 source = {
1143 remotes = ["https://rubygems.org"];
1144 sha256 = "11h0chj0jpdfxpaglkr98l4qcwwpb8glh3dxar3inq9ccmsrdzaf";
1145 type = "gem";
1146 };
1147 version = "0.9.29";
1148 };
1149 idn-ruby = {
1150 groups = ["default"];
1151 platforms = [];
1152 source = {
1153 remotes = ["https://rubygems.org"];
1154 sha256 = "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr";
1155 type = "gem";
1156 };
1157 version = "0.1.0";
1158 };
1159 ipaddress = {
1160 groups = ["default"];
1161 platforms = [];
1162 source = {
1163 remotes = ["https://rubygems.org"];
1164 sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
1165 type = "gem";
1166 };
1167 version = "0.8.3";
1168 };
1169 iso-639 = {
1170 groups = ["default"];
1171 platforms = [];
1172 source = {
1173 remotes = ["https://rubygems.org"];
1174 sha256 = "10k1gpkkbxbasgjzh4hd32ygxzjb5312rphipm46ryxkpx556zzz";
1175 type = "gem";
1176 };
1177 version = "0.2.8";
1178 };
1179 jaro_winkler = {
1180 groups = ["default" "development"];
1181 platforms = [];
1182 source = {
1183 remotes = ["https://rubygems.org"];
1184 sha256 = "1zz27z88qznix4r65gd9h56gl177snlfpgv10b0s69vi8qpl909l";
1185 type = "gem";
1186 };
1187 version = "1.5.2";
1188 };
1189 jmespath = {
1190 groups = ["default"];
1191 platforms = [];
1192 source = {
1193 remotes = ["https://rubygems.org"];
1194 sha256 = "1d4wac0dcd1jf6kc57891glih9w57552zgqswgy74d1xhgnk0ngf";
1195 type = "gem";
1196 };
1197 version = "1.4.0";
1198 };
1199 json = {
1200 groups = ["default" "test"];
1201 platforms = [];
1202 source = {
1203 remotes = ["https://rubygems.org"];
1204 sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
1205 type = "gem";
1206 };
1207 version = "2.1.0";
1208 };
1209 json-ld = {
1210 dependencies = ["multi_json" "rdf"];
1211 groups = ["default"];
1212 platforms = [];
1213 source = {
1214 remotes = ["https://rubygems.org"];
1215 sha256 = "1yk4gnxzwlif9d0dy7csdb9ix60h69alk139aaip6304nx2yhdsk";
1216 type = "gem";
1217 };
1218 version = "3.0.2";
1219 };
1220 json-ld-preloaded = {
1221 dependencies = ["json-ld" "multi_json" "rdf"];
1222 groups = ["default"];
1223 platforms = [];
1224 source = {
1225 remotes = ["https://rubygems.org"];
1226 sha256 = "1c3yh5ayxvz33znbmzinigc5wivicib7nnykqjf00j2f9qag18pv";
1227 type = "gem";
1228 };
1229 version = "3.0.2";
1230 };
1231 jsonapi-renderer = {
1232 groups = ["default"];
1233 platforms = [];
1234 source = {
1235 remotes = ["https://rubygems.org"];
1236 sha256 = "00ysmcv3nrccyimi334ida4axlfgir6cc2ryjxrf4xb97m1bfk5j";
1237 type = "gem";
1238 };
1239 version = "0.2.0";
1240 };
1241 jwt = {
1242 groups = ["default"];
1243 platforms = [];
1244 source = {
1245 remotes = ["https://rubygems.org"];
1246 sha256 = "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky";
1247 type = "gem";
1248 };
1249 version = "2.1.0";
1250 };
1251 kaminari = {
1252 dependencies = ["activesupport" "kaminari-actionview" "kaminari-activerecord" "kaminari-core"];
1253 groups = ["default"];
1254 platforms = [];
1255 source = {
1256 remotes = ["https://rubygems.org"];
1257 sha256 = "1j27y5phifwpggspglmg8pmlf6n4jblxwziix9am42661c770jlm";
1258 type = "gem";
1259 };
1260 version = "1.1.1";
1261 };
1262 kaminari-actionview = {
1263 dependencies = ["actionview" "kaminari-core"];
1264 groups = ["default"];
1265 platforms = [];
1266 source = {
1267 remotes = ["https://rubygems.org"];
1268 sha256 = "1386wshpy1ygbris0s7rv7lyzbs0v8dfqkzdwsrsgm9fd1ira640";
1269 type = "gem";
1270 };
1271 version = "1.1.1";
1272 };
1273 kaminari-activerecord = {
1274 dependencies = ["activerecord" "kaminari-core"];
1275 groups = ["default"];
1276 platforms = [];
1277 source = {
1278 remotes = ["https://rubygems.org"];
1279 sha256 = "0q31ik5648xi2hpy61knnjd0m7rvs17i93gzwcbh3ccj1y24gv2x";
1280 type = "gem";
1281 };
1282 version = "1.1.1";
1283 };
1284 kaminari-core = {
1285 groups = ["default"];
1286 platforms = [];
1287 source = {
1288 remotes = ["https://rubygems.org"];
1289 sha256 = "1cfjrhvidvgdwp9ffsm9d4c2s18k2zp3gnya3f41qb3fc6bc2q2w";
1290 type = "gem";
1291 };
1292 version = "1.1.1";
1293 };
1294 launchy = {
1295 dependencies = ["addressable"];
1296 groups = ["default" "development"];
1297 platforms = [];
1298 source = {
1299 remotes = ["https://rubygems.org"];
1300 sha256 = "190lfbiy1vwxhbgn4nl4dcbzxvm049jwc158r2x7kq3g5khjrxa2";
1301 type = "gem";
1302 };
1303 version = "2.4.3";
1304 };
1305 letter_opener = {
1306 dependencies = ["launchy"];
1307 groups = ["development"];
1308 platforms = [];
1309 source = {
1310 remotes = ["https://rubygems.org"];
1311 sha256 = "09a7kgsmr10a0hrc9bwxglgqvppjxij9w8bxx91mnvh0ivaw0nq9";
1312 type = "gem";
1313 };
1314 version = "1.7.0";
1315 };
1316 letter_opener_web = {
1317 dependencies = ["actionmailer" "letter_opener" "railties"];
1318 groups = ["development"];
1319 platforms = [];
1320 source = {
1321 remotes = ["https://rubygems.org"];
1322 sha256 = "17qhwrkncrrp1bi2f7fbkm5lpnkdsiwy8jcvgr2wa97ck8y4x2bb";
1323 type = "gem";
1324 };
1325 version = "1.3.4";
1326 };
1327 link_header = {
1328 groups = ["default"];
1329 platforms = [];
1330 source = {
1331 remotes = ["https://rubygems.org"];
1332 sha256 = "1yamrdq4rywmnpdhbygnkkl9fdy249fg5r851nrkkxr97gj5rihm";
1333 type = "gem";
1334 };
1335 version = "0.0.8";
1336 };
1337 lograge = {
1338 dependencies = ["actionpack" "activesupport" "railties" "request_store"];
1339 groups = ["production"];
1340 platforms = [];
1341 source = {
1342 remotes = ["https://rubygems.org"];
1343 sha256 = "1vrjm4yqn5l6q5gsl72fmk95fl6j9z1a05gzbrwmsm3gp1a1bgac";
1344 type = "gem";
1345 };
1346 version = "0.11.2";
1347 };
1348 loofah = {
1349 dependencies = ["crass" "nokogiri"];
1350 groups = ["default" "development" "pam_authentication" "production" "test"];
1351 platforms = [];
1352 source = {
1353 remotes = ["https://rubygems.org"];
1354 sha256 = "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg";
1355 type = "gem";
1356 };
1357 version = "2.2.3";
1358 };
1359 mail = {
1360 dependencies = ["mini_mime"];
1361 groups = ["default" "development"];
1362 platforms = [];
1363 source = {
1364 remotes = ["https://rubygems.org"];
1365 sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
1366 type = "gem";
1367 };
1368 version = "2.7.1";
1369 };
1370 makara = {
1371 dependencies = ["activerecord"];
1372 groups = ["default"];
1373 platforms = [];
1374 source = {
1375 remotes = ["https://rubygems.org"];
1376 sha256 = "01n90s1jcc05dc9a70k3c3aa4gc9j49k9iv56n2k4jm949dacms6";
1377 type = "gem";
1378 };
1379 version = "0.4.1";
1380 };
1381 marcel = {
1382 dependencies = ["mimemagic"];
1383 groups = ["default"];
1384 platforms = [];
1385 source = {
1386 remotes = ["https://rubygems.org"];
1387 sha256 = "1nxbjmcyg8vlw6zwagf17l9y2mwkagmmkg95xybpn4bmf3rfnksx";
1388 type = "gem";
1389 };
1390 version = "0.3.3";
1391 };
1392 mario-redis-lock = {
1393 dependencies = ["redis"];
1394 groups = ["default"];
1395 platforms = [];
1396 source = {
1397 remotes = ["https://rubygems.org"];
1398 sha256 = "1v9wdjcjqzpns2migxp4a5b4w82mipi0fwihbqz3q2qj2qm7wc17";
1399 type = "gem";
1400 };
1401 version = "1.2.1";
1402 };
1403 memory_profiler = {
1404 groups = ["development"];
1405 platforms = [];
1406 source = {
1407 remotes = ["https://rubygems.org"];
1408 sha256 = "1xki7jrbzylsmk1brjibmhifb0x70skr55pdq4rvxcyrlnrrvyxz";
1409 type = "gem";
1410 };
1411 version = "0.9.13";
1412 };
1413 method_source = {
1414 groups = ["default" "development" "pam_authentication" "production" "test"];
1415 platforms = [];
1416 source = {
1417 remotes = ["https://rubygems.org"];
1418 sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
1419 type = "gem";
1420 };
1421 version = "0.9.2";
1422 };
1423 microformats = {
1424 dependencies = ["json" "nokogiri"];
1425 groups = ["test"];
1426 platforms = [];
1427 source = {
1428 remotes = ["https://rubygems.org"];
1429 sha256 = "12wj9lydba2dz5pqd6ngklwnzhsg63kl3yhi9zm8h9hjg6dsw3nb";
1430 type = "gem";
1431 };
1432 version = "4.1.0";
1433 };
1434 mime-types = {
1435 dependencies = ["mime-types-data"];
1436 groups = ["default"];
1437 platforms = [];
1438 source = {
1439 remotes = ["https://rubygems.org"];
1440 sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
1441 type = "gem";
1442 };
1443 version = "3.2.2";
1444 };
1445 mime-types-data = {
1446 groups = ["default"];
1447 platforms = [];
1448 source = {
1449 remotes = ["https://rubygems.org"];
1450 sha256 = "07wvp0aw2gjm4njibb70as6rh5hi1zzri5vky1q6jx95h8l56idc";
1451 type = "gem";
1452 };
1453 version = "3.2018.0812";
1454 };
1455 mimemagic = {
1456 groups = ["default"];
1457 platforms = [];
1458 source = {
1459 remotes = ["https://rubygems.org"];
1460 sha256 = "04cp5sfbh1qx82yqxn0q75c7hlcx8y1dr5g3kyzwm4mx6wi2gifw";
1461 type = "gem";
1462 };
1463 version = "0.3.3";
1464 };
1465 mini_mime = {
1466 groups = ["default" "development" "test"];
1467 platforms = [];
1468 source = {
1469 remotes = ["https://rubygems.org"];
1470 sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
1471 type = "gem";
1472 };
1473 version = "1.0.1";
1474 };
1475 mini_portile2 = {
1476 groups = ["default" "development" "pam_authentication" "production" "test"];
1477 platforms = [];
1478 source = {
1479 remotes = ["https://rubygems.org"];
1480 sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy";
1481 type = "gem";
1482 };
1483 version = "2.4.0";
1484 };
1485 minitest = {
1486 groups = ["default" "development" "pam_authentication" "production" "test"];
1487 platforms = [];
1488 source = {
1489 remotes = ["https://rubygems.org"];
1490 sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
1491 type = "gem";
1492 };
1493 version = "5.11.3";
1494 };
1495 msgpack = {
1496 groups = ["default"];
1497 platforms = [];
1498 source = {
1499 remotes = ["https://rubygems.org"];
1500 sha256 = "1w38hilm3dk42dwk8ygiq49bl4in7y80hfqr63hk54mj4gmzi6ch";
1501 type = "gem";
1502 };
1503 version = "1.2.10";
1504 };
1505 multi_json = {
1506 groups = ["default"];
1507 platforms = [];
1508 source = {
1509 remotes = ["https://rubygems.org"];
1510 sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
1511 type = "gem";
1512 };
1513 version = "1.13.1";
1514 };
1515 multipart-post = {
1516 groups = ["default"];
1517 platforms = [];
1518 source = {
1519 remotes = ["https://rubygems.org"];
1520 sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
1521 type = "gem";
1522 };
1523 version = "2.0.0";
1524 };
1525 necromancer = {
1526 groups = ["default"];
1527 platforms = [];
1528 source = {
1529 remotes = ["https://rubygems.org"];
1530 sha256 = "112dvp7fz2xmbn4njzjsgqf1psnxiybj4yk6qbd843hyapn7i1hm";
1531 type = "gem";
1532 };
1533 version = "0.5.0";
1534 };
1535 net-ldap = {
1536 groups = ["default"];
1537 platforms = [];
1538 source = {
1539 remotes = ["https://rubygems.org"];
1540 sha256 = "016igqz81a8zcwqzp5bbhryqmb2skmyf57ij3nb5z8sxwhw22jgh";
1541 type = "gem";
1542 };
1543 version = "0.16.1";
1544 };
1545 net-scp = {
1546 dependencies = ["net-ssh"];
1547 groups = ["default" "development"];
1548 platforms = [];
1549 source = {
1550 remotes = ["https://rubygems.org"];
1551 sha256 = "0b0jqrcsp4bbi4n4mzyf70cp2ysyp6x07j8k8cqgxnvb4i3a134j";
1552 type = "gem";
1553 };
1554 version = "1.2.1";
1555 };
1556 net-ssh = {
1557 groups = ["default" "development"];
1558 platforms = [];
1559 source = {
1560 remotes = ["https://rubygems.org"];
1561 sha256 = "0qfanf71yv8w7yl9l9wqcy68i2x1ghvnf8m581yy4pl0anfdhqw8";
1562 type = "gem";
1563 };
1564 version = "5.0.2";
1565 };
1566 nio4r = {
1567 groups = ["default"];
1568 platforms = [];
1569 source = {
1570 remotes = ["https://rubygems.org"];
1571 sha256 = "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr";
1572 type = "gem";
1573 };
1574 version = "2.3.1";
1575 };
1576 nokogiri = {
1577 dependencies = ["mini_portile2"];
1578 groups = ["default" "development" "pam_authentication" "production" "test"];
1579 platforms = [];
1580 source = {
1581 remotes = ["https://rubygems.org"];
1582 sha256 = "02bjydih0j515szfv9mls195cvpyidh6ixm7dwbl3s2sbaxxk5s4";
1583 type = "gem";
1584 };
1585 version = "1.10.3";
1586 };
1587 nokogumbo = {
1588 dependencies = ["nokogiri"];
1589 groups = ["default"];
1590 platforms = [];
1591 source = {
1592 remotes = ["https://rubygems.org"];
1593 sha256 = "1qr7r2ysbp8b5q78yr8l5qpaxfqdw1i2yz6nsrbavdki8mqjgj24";
1594 type = "gem";
1595 };
1596 version = "2.0.0";
1597 };
1598 nsa = {
1599 dependencies = ["activesupport" "concurrent-ruby" "sidekiq" "statsd-ruby"];
1600 groups = ["default"];
1601 platforms = [];
1602 source = {
1603 remotes = ["https://rubygems.org"];
1604 sha256 = "1i1bhmvs49yv70pgl41lx1lr8x6whg52szb8ic1jb6wmmxr2ylcz";
1605 type = "gem";
1606 };
1607 version = "0.2.7";
1608 };
1609 oj = {
1610 groups = ["default"];
1611 platforms = [];
1612 source = {
1613 remotes = ["https://rubygems.org"];
1614 sha256 = "0vd1270cg11nicr6d7ziizbphkp6bn5h55xp73gbnr5n7j11xy8a";
1615 type = "gem";
1616 };
1617 version = "3.7.12";
1618 };
1619 omniauth = {
1620 dependencies = ["hashie" "rack"];
1621 groups = ["default"];
1622 platforms = [];
1623 source = {
1624 remotes = ["https://rubygems.org"];
1625 sha256 = "1p16h1rp8by05k8gfw17xjhgwp60dk8qmj1xalv1n23kmxfsxb1x";
1626 type = "gem";
1627 };
1628 version = "1.9.0";
1629 };
1630 omniauth-cas = {
1631 dependencies = ["addressable" "nokogiri" "omniauth"];
1632 groups = ["default"];
1633 platforms = [];
1634 source = {
1635 remotes = ["https://rubygems.org"];
1636 sha256 = "1nnk7cr45aj7hj19zpky58yysvjg8mn5f45sj9knpn5f9kgld7p4";
1637 type = "gem";
1638 };
1639 version = "1.1.1";
1640 };
1641 omniauth-saml = {
1642 dependencies = ["omniauth" "ruby-saml"];
1643 groups = ["default"];
1644 platforms = [];
1645 source = {
1646 remotes = ["https://rubygems.org"];
1647 sha256 = "1pg3pw4yjd9w1rn3lkycllrvd767pydbhldgdcqbbcck01asfcfz";
1648 type = "gem";
1649 };
1650 version = "1.10.1";
1651 };
1652 orm_adapter = {
1653 groups = ["default" "pam_authentication"];
1654 platforms = [];
1655 source = {
1656 remotes = ["https://rubygems.org"];
1657 sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
1658 type = "gem";
1659 };
1660 version = "0.5.0";
1661 };
1662 ostatus2 = {
1663 dependencies = ["addressable" "http" "nokogiri"];
1664 groups = ["default"];
1665 platforms = [];
1666 source = {
1667 remotes = ["https://rubygems.org"];
1668 sha256 = "0fj27nr38g5y52s755pmg5zifwc6n88bw2zmkc22kg4vrhs64k19";
1669 type = "gem";
1670 };
1671 version = "2.0.3";
1672 };
1673 ox = {
1674 groups = ["default"];
1675 platforms = [];
1676 source = {
1677 remotes = ["https://rubygems.org"];
1678 sha256 = "03w4s8pa9j6rk6vb7vwicdr0c3k03ngcf1s8gp1q8qwyrgwspc4r";
1679 type = "gem";
1680 };
1681 version = "2.11.0";
1682 };
1683 paperclip = {
1684 dependencies = ["activemodel" "activesupport" "mime-types" "mimemagic" "terrapin"];
1685 groups = ["default"];
1686 platforms = [];
1687 source = {
1688 remotes = ["https://rubygems.org"];
1689 sha256 = "04mlw7aqj20ry0fy92gxnxg99hy5xczff7rhywfzz4mqlhc2wgg7";
1690 type = "gem";
1691 };
1692 version = "6.0.0";
1693 };
1694 paperclip-av-transcoder = {
1695 dependencies = ["av" "paperclip"];
1696 groups = ["default"];
1697 platforms = [];
1698 source = {
1699 remotes = ["https://rubygems.org"];
1700 sha256 = "1gcnp3fpdb5lqilcij4yqga6397nb7zyyf9lzxnqpbp7cvc18lhf";
1701 type = "gem";
1702 };
1703 version = "0.6.4";
1704 };
1705 parallel = {
1706 groups = ["default" "development" "test"];
1707 platforms = [];
1708 source = {
1709 remotes = ["https://rubygems.org"];
1710 sha256 = "1x1gzgjrdlkm1aw0hfpyphsxcx90qgs3y4gmp9km3dvf4hc4qm8r";
1711 type = "gem";
1712 };
1713 version = "1.17.0";
1714 };
1715 parallel_tests = {
1716 dependencies = ["parallel"];
1717 groups = ["test"];
1718 platforms = [];
1719 source = {
1720 remotes = ["https://rubygems.org"];
1721 sha256 = "1rxp2v34z1w107hks3892v04pnzq5kj85xplks53z6kamn7p1knx";
1722 type = "gem";
1723 };
1724 version = "2.29.0";
1725 };
1726 parser = {
1727 dependencies = ["ast"];
1728 groups = ["default" "development" "test"];
1729 platforms = [];
1730 source = {
1731 remotes = ["https://rubygems.org"];
1732 sha256 = "1pnks149x0fzgqiw53qlmvcd8bi746cxdw03sjljby5s97p1fskn";
1733 type = "gem";
1734 };
1735 version = "2.6.3.0";
1736 };
1737 pastel = {
1738 dependencies = ["equatable" "tty-color"];
1739 groups = ["default"];
1740 platforms = [];
1741 source = {
1742 remotes = ["https://rubygems.org"];
1743 sha256 = "1yf30d9kzpm96gw9kwbv31p0qigwfykn8qdis5950plnzgc1vlp1";
1744 type = "gem";
1745 };
1746 version = "0.7.2";
1747 };
1748 pg = {
1749 groups = ["default"];
1750 platforms = [];
1751 source = {
1752 remotes = ["https://rubygems.org"];
1753 sha256 = "0fmnyxcyrvgdbgq7m09whgn9i8rwfybk0w8aii1nc4g5kqw0k2jy";
1754 type = "gem";
1755 };
1756 version = "1.1.4";
1757 };
1758 pghero = {
1759 dependencies = ["activerecord"];
1760 groups = ["default"];
1761 platforms = [];
1762 source = {
1763 remotes = ["https://rubygems.org"];
1764 sha256 = "0phn9xayg6kgpgyzbpcknwkdv6qqzb21556hb4ikkln8sx711cq0";
1765 type = "gem";
1766 };
1767 version = "2.2.1";
1768 };
1769 pkg-config = {
1770 groups = ["default"];
1771 platforms = [];
1772 source = {
1773 remotes = ["https://rubygems.org"];
1774 sha256 = "1s56ym0chq3fycl29vqabcalqdcf7y2f25pmihjwqgbmrmzdyvr1";
1775 type = "gem";
1776 };
1777 version = "1.3.7";
1778 };
1779 posix-spawn = {
1780 groups = ["default"];
1781 platforms = [];
1782 source = {
1783 fetchSubmodules = false;
1784 rev = "58465d2e213991f8afb13b984854a49fcdcc980c";
1785 sha256 = "158m86k54i5cxzasrzp6q0cpvf6d4v91pjcd6kb0cvslfki1drn2";
1786 type = "git";
1787 url = "https://github.com/rtomayko/posix-spawn";
1788 };
1789 version = "0.3.13";
1790 };
1791 premailer = {
1792 dependencies = ["addressable" "css_parser" "htmlentities"];
1793 groups = ["default"];
1794 platforms = [];
1795 source = {
1796 remotes = ["https://rubygems.org"];
1797 sha256 = "1xrhmialxn5vlp1nmf40a4db9gji4h2wbzd7f43sz64z8lvrjj6h";
1798 type = "gem";
1799 };
1800 version = "1.11.1";
1801 };
1802 premailer-rails = {
1803 dependencies = ["actionmailer" "premailer"];
1804 groups = ["default"];
1805 platforms = [];
1806 source = {
1807 remotes = ["https://rubygems.org"];
1808 sha256 = "1avh2bkhabicf1zxla8z6ig5192h3vdzli4d2y9wmxfwgh549lmx";
1809 type = "gem";
1810 };
1811 version = "1.10.2";
1812 };
1813 private_address_check = {
1814 groups = ["production" "test"];
1815 platforms = [];
1816 source = {
1817 remotes = ["https://rubygems.org"];
1818 sha256 = "05phz0vscfh9chv90yc9091pifw3cpwkh76flnhrmvja1q3na4cy";
1819 type = "gem";
1820 };
1821 version = "0.5.0";
1822 };
1823 pry = {
1824 dependencies = ["coderay" "method_source"];
1825 groups = ["default" "development" "test"];
1826 platforms = [];
1827 source = {
1828 remotes = ["https://rubygems.org"];
1829 sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
1830 type = "gem";
1831 };
1832 version = "0.12.2";
1833 };
1834 pry-byebug = {
1835 dependencies = ["byebug" "pry"];
1836 groups = ["development" "test"];
1837 platforms = [];
1838 source = {
1839 remotes = ["https://rubygems.org"];
1840 sha256 = "1aqz4gz8z44k6svpvcsfrqbigcpjd2kwvfm77yq3v8yzkhjrx0zi";
1841 type = "gem";
1842 };
1843 version = "3.7.0";
1844 };
1845 pry-rails = {
1846 dependencies = ["pry"];
1847 groups = ["development" "test"];
1848 platforms = [];
1849 source = {
1850 remotes = ["https://rubygems.org"];
1851 sha256 = "1cf4ii53w2hdh7fn8vhqpzkymmchjbwij4l3m7s6fsxvb9bn51j6";
1852 type = "gem";
1853 };
1854 version = "0.3.9";
1855 };
1856 public_suffix = {
1857 groups = ["default" "development" "test"];
1858 platforms = [];
1859 source = {
1860 remotes = ["https://rubygems.org"];
1861 sha256 = "1c7c5xxkx91hwj4572hbnyvxmydb90q69wlpr2l0dxrmwx2p365l";
1862 type = "gem";
1863 };
1864 version = "3.1.0";
1865 };
1866 puma = {
1867 groups = ["default"];
1868 platforms = [];
1869 source = {
1870 remotes = ["https://rubygems.org"];
1871 sha256 = "1pkrbvak6rlf147qpd4zss031qrwwh53g8s6017037iwg0436kv3";
1872 type = "gem";
1873 };
1874 version = "3.12.1";
1875 };
1876 pundit = {
1877 dependencies = ["activesupport"];
1878 groups = ["default"];
1879 platforms = [];
1880 source = {
1881 remotes = ["https://rubygems.org"];
1882 sha256 = "1rqnll033ya64qvknbmnq076q9mxaibvcd7q70jhkpjda1xi4703";
1883 type = "gem";
1884 };
1885 version = "2.0.1";
1886 };
1887 raabro = {
1888 groups = ["default"];
1889 platforms = [];
1890 source = {
1891 remotes = ["https://rubygems.org"];
1892 sha256 = "0xzdmbn48753f6k0ckirp8ja5p0xn1a92wbwxfyggyhj0hza9ylq";
1893 type = "gem";
1894 };
1895 version = "1.1.6";
1896 };
1897 rack = {
1898 groups = ["default" "development" "pam_authentication" "production" "test"];
1899 platforms = [];
1900 source = {
1901 remotes = ["https://rubygems.org"];
1902 sha256 = "0z90vflxbgjy2n84r7mbyax3i2vyvvrxxrf86ljzn5rw65jgnn2i";
1903 type = "gem";
1904 };
1905 version = "2.0.7";
1906 };
1907 rack-attack = {
1908 dependencies = ["rack"];
1909 groups = ["default"];
1910 platforms = [];
1911 source = {
1912 remotes = ["https://rubygems.org"];
1913 sha256 = "1hbg2imjfs305iv6wglwn7jscksblxbsh92kf6qlkv97bwq63rfi";
1914 type = "gem";
1915 };
1916 version = "6.0.0";
1917 };
1918 rack-cors = {
1919 groups = ["default"];
1920 platforms = [];
1921 source = {
1922 remotes = ["https://rubygems.org"];
1923 sha256 = "1dmg0f7zdmcn321fr05g568slzf8cmqgccavyhvx7c37ir040k4l";
1924 type = "gem";
1925 };
1926 version = "1.0.3";
1927 };
1928 rack-protection = {
1929 dependencies = ["rack"];
1930 groups = ["default" "test"];
1931 platforms = [];
1932 source = {
1933 remotes = ["https://rubygems.org"];
1934 sha256 = "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk";
1935 type = "gem";
1936 };
1937 version = "2.0.5";
1938 };
1939 rack-proxy = {
1940 dependencies = ["rack"];
1941 groups = ["default"];
1942 platforms = [];
1943 source = {
1944 remotes = ["https://rubygems.org"];
1945 sha256 = "1v40xd3xhzhbdqfynd03gn88j1pga2zhrv58xs9fl4hzrlbp096s";
1946 type = "gem";
1947 };
1948 version = "0.6.5";
1949 };
1950 rack-test = {
1951 dependencies = ["rack"];
1952 groups = ["default" "development" "pam_authentication" "production" "test"];
1953 platforms = [];
1954 source = {
1955 remotes = ["https://rubygems.org"];
1956 sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
1957 type = "gem";
1958 };
1959 version = "1.1.0";
1960 };
1961 rails = {
1962 dependencies = ["actioncable" "actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties" "sprockets-rails"];
1963 groups = ["default"];
1964 platforms = [];
1965 source = {
1966 remotes = ["https://rubygems.org"];
1967 sha256 = "1p7cszi3n9ksxchxnccmz61pd1i3rjg4813dsdinsm8xm5k1pdgr";
1968 type = "gem";
1969 };
1970 version = "5.2.3";
1971 };
1972 rails-controller-testing = {
1973 dependencies = ["actionpack" "actionview" "activesupport"];
1974 groups = ["test"];
1975 platforms = [];
1976 source = {
1977 remotes = ["https://rubygems.org"];
1978 sha256 = "1m1rklj6pvzi4fydxcmcv4q0xd7913hhhw1hw530nfz1wkl7vjlf";
1979 type = "gem";
1980 };
1981 version = "1.0.4";
1982 };
1983 rails-dom-testing = {
1984 dependencies = ["activesupport" "nokogiri"];
1985 groups = ["default" "development" "pam_authentication" "production" "test"];
1986 platforms = [];
1987 source = {
1988 remotes = ["https://rubygems.org"];
1989 sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
1990 type = "gem";
1991 };
1992 version = "2.0.3";
1993 };
1994 rails-html-sanitizer = {
1995 dependencies = ["loofah"];
1996 groups = ["default" "development" "pam_authentication" "production" "test"];
1997 platforms = [];
1998 source = {
1999 remotes = ["https://rubygems.org"];
2000 sha256 = "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr";
2001 type = "gem";
2002 };
2003 version = "1.0.4";
2004 };
2005 rails-i18n = {
2006 dependencies = ["i18n" "railties"];
2007 groups = ["default" "development" "test"];
2008 platforms = [];
2009 source = {
2010 remotes = ["https://rubygems.org"];
2011 sha256 = "02kdlm7jgwvwnnc1amy8md2vl0f2jkfr6rr36vybclr9qm4fb80f";
2012 type = "gem";
2013 };
2014 version = "5.1.3";
2015 };
2016 rails-settings-cached = {
2017 dependencies = ["rails"];
2018 groups = ["default"];
2019 platforms = [];
2020 source = {
2021 remotes = ["https://rubygems.org"];
2022 sha256 = "0wyhyls0aqb1iw7mnaldg39w3mnbi3anmpbvb52rjwkpj2mchhnc";
2023 type = "gem";
2024 };
2025 version = "0.6.6";
2026 };
2027 railties = {
2028 dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
2029 groups = ["default" "development" "pam_authentication" "production" "test"];
2030 platforms = [];
2031 source = {
2032 remotes = ["https://rubygems.org"];
2033 sha256 = "1gn9fwb5wm08fbj7zpilqgblfl315l5b7pg4jsvxlizvrzg8h8q4";
2034 type = "gem";
2035 };
2036 version = "5.2.3";
2037 };
2038 rainbow = {
2039 groups = ["default" "development" "test"];
2040 platforms = [];
2041 source = {
2042 remotes = ["https://rubygems.org"];
2043 sha256 = "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk";
2044 type = "gem";
2045 };
2046 version = "3.0.0";
2047 };
2048 rake = {
2049 groups = ["default" "development" "pam_authentication" "production" "test"];
2050 platforms = [];
2051 source = {
2052 remotes = ["https://rubygems.org"];
2053 sha256 = "1sy5a7nh6xjdc9yhcw31jji7ssrf9v5806hn95gbrzr998a2ydjn";
2054 type = "gem";
2055 };
2056 version = "12.3.2";
2057 };
2058 rdf = {
2059 dependencies = ["hamster" "link_header"];
2060 groups = ["default"];
2061 platforms = [];
2062 source = {
2063 remotes = ["https://rubygems.org"];
2064 sha256 = "1ylgsspdj2g0af0pgfi1ry50x8ng5069223238vg8kz0p7b24q79";
2065 type = "gem";
2066 };
2067 version = "3.0.9";
2068 };
2069 rdf-normalize = {
2070 dependencies = ["rdf"];
2071 groups = ["default"];
2072 platforms = [];
2073 source = {
2074 remotes = ["https://rubygems.org"];
2075 sha256 = "0h8qk3x5frqbgb4gj9ga75ddls47x8qhghscgz82gfq76m4r45g0";
2076 type = "gem";
2077 };
2078 version = "0.3.3";
2079 };
2080 redis = {
2081 groups = ["default" "production" "test"];
2082 platforms = [];
2083 source = {
2084 remotes = ["https://rubygems.org"];
2085 sha256 = "1mymdx7s5sr4mablklaipz679ckczsiigswm1g2v5mc93yj5amw3";
2086 type = "gem";
2087 };
2088 version = "4.1.2";
2089 };
2090 redis-actionpack = {
2091 dependencies = ["actionpack" "redis-rack" "redis-store"];
2092 groups = ["default" "production"];
2093 platforms = [];
2094 source = {
2095 remotes = ["https://rubygems.org"];
2096 sha256 = "15k41gz7nygd4yydk2yd25gghya1j7q6zifk4mdrra6bwnwjbm63";
2097 type = "gem";
2098 };
2099 version = "5.0.2";
2100 };
2101 redis-activesupport = {
2102 dependencies = ["activesupport" "redis-store"];
2103 groups = ["default" "production"];
2104 platforms = [];
2105 source = {
2106 remotes = ["https://rubygems.org"];
2107 sha256 = "0rq5dhrzc1l8c7f5gx9r7mvnsk5206dfwih3yv5si5rf42nx2ay5";
2108 type = "gem";
2109 };
2110 version = "5.0.4";
2111 };
2112 redis-namespace = {
2113 dependencies = ["redis"];
2114 groups = ["default"];
2115 platforms = [];
2116 source = {
2117 remotes = ["https://rubygems.org"];
2118 sha256 = "0r7daagrjjribn098dxwbv9zivrbq2rsffbkj2ccxyn9lmjjbgah";
2119 type = "gem";
2120 };
2121 version = "1.6.0";
2122 };
2123 redis-rack = {
2124 dependencies = ["rack" "redis-store"];
2125 groups = ["default" "production"];
2126 platforms = [];
2127 source = {
2128 remotes = ["https://rubygems.org"];
2129 sha256 = "0px0wv8zripc6lrn3k0k61j6nlxda145q8sz50yvnig17wlk36gb";
2130 type = "gem";
2131 };
2132 version = "2.0.4";
2133 };
2134 redis-rails = {
2135 dependencies = ["redis-actionpack" "redis-activesupport" "redis-store"];
2136 groups = ["production"];
2137 platforms = [];
2138 source = {
2139 remotes = ["https://rubygems.org"];
2140 sha256 = "0hjvkyaw5hgz7v6fgwdk8pb966z44h1gv8jarmb0gwhkqmjnsh40";
2141 type = "gem";
2142 };
2143 version = "5.0.2";
2144 };
2145 redis-store = {
2146 dependencies = ["redis"];
2147 groups = ["default" "production"];
2148 platforms = [];
2149 source = {
2150 remotes = ["https://rubygems.org"];
2151 sha256 = "0cpg4fmqcyl8mm77l852xsidp8384a7s1mgbpki999swvq97svi4";
2152 type = "gem";
2153 };
2154 version = "1.5.0";
2155 };
2156 regexp_parser = {
2157 groups = ["default" "test"];
2158 platforms = [];
2159 source = {
2160 remotes = ["https://rubygems.org"];
2161 sha256 = "0dsgjb3kszk6a82s6gl0h6a8vncjrxmcbk0r4mcxcdcad2b7vb2d";
2162 type = "gem";
2163 };
2164 version = "1.5.1";
2165 };
2166 request_store = {
2167 dependencies = ["rack"];
2168 groups = ["default" "production"];
2169 platforms = [];
2170 source = {
2171 remotes = ["https://rubygems.org"];
2172 sha256 = "1963330z03fk382fi8y231ygcbnh86m91dqlp5rh1mwy9ihzzl6d";
2173 type = "gem";
2174 };
2175 version = "1.4.1";
2176 };
2177 responders = {
2178 dependencies = ["actionpack" "railties"];
2179 groups = ["default" "pam_authentication"];
2180 platforms = [];
2181 source = {
2182 remotes = ["https://rubygems.org"];
2183 sha256 = "18lqbiyc7234vd6iwxia5yvvzg6bdvdwl2nm4a5y7ia5fxjl3kqm";
2184 type = "gem";
2185 };
2186 version = "2.4.1";
2187 };
2188 rotp = {
2189 groups = ["default"];
2190 platforms = [];
2191 source = {
2192 remotes = ["https://rubygems.org"];
2193 sha256 = "1w8d6svhq3y9y952r8cqirxvdx12zlkb7zxjb44bcbidb2sisy4d";
2194 type = "gem";
2195 };
2196 version = "2.1.2";
2197 };
2198 rpam2 = {
2199 groups = ["default" "pam_authentication"];
2200 platforms = [];
2201 source = {
2202 remotes = ["https://rubygems.org"];
2203 sha256 = "1zvli3s4z1hf2l7gyfickm5i3afjrnycc3ihbiax6ji6arpbyf33";
2204 type = "gem";
2205 };
2206 version = "4.0.2";
2207 };
2208 rqrcode = {
2209 dependencies = ["chunky_png"];
2210 groups = ["default"];
2211 platforms = [];
2212 source = {
2213 remotes = ["https://rubygems.org"];
2214 sha256 = "0h1pnnydgs032psakvg3l779w3ghbn08ajhhhw19hpmnfhrs8k0a";
2215 type = "gem";
2216 };
2217 version = "0.10.1";
2218 };
2219 rspec-core = {
2220 dependencies = ["rspec-support"];
2221 groups = ["default" "development" "test"];
2222 platforms = [];
2223 source = {
2224 remotes = ["https://rubygems.org"];
2225 sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
2226 type = "gem";
2227 };
2228 version = "3.8.0";
2229 };
2230 rspec-expectations = {
2231 dependencies = ["diff-lcs" "rspec-support"];
2232 groups = ["default" "development" "test"];
2233 platforms = [];
2234 source = {
2235 remotes = ["https://rubygems.org"];
2236 sha256 = "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm";
2237 type = "gem";
2238 };
2239 version = "3.8.2";
2240 };
2241 rspec-mocks = {
2242 dependencies = ["diff-lcs" "rspec-support"];
2243 groups = ["default" "development" "test"];
2244 platforms = [];
2245 source = {
2246 remotes = ["https://rubygems.org"];
2247 sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
2248 type = "gem";
2249 };
2250 version = "3.8.0";
2251 };
2252 rspec-rails = {
2253 dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
2254 groups = ["development" "test"];
2255 platforms = [];
2256 source = {
2257 remotes = ["https://rubygems.org"];
2258 sha256 = "1pf6n9l4sw1arlax1bdbm1znsvl8cgna2n6k6yk1bi8vz2n73ls1";
2259 type = "gem";
2260 };
2261 version = "3.8.2";
2262 };
2263 rspec-sidekiq = {
2264 dependencies = ["rspec-core" "sidekiq"];
2265 groups = ["test"];
2266 platforms = [];
2267 source = {
2268 remotes = ["https://rubygems.org"];
2269 sha256 = "0y7pbqrbc8rjszc45vg4vz9qbn8aymgcc4ribrhvm76wrfz3ksfq";
2270 type = "gem";
2271 };
2272 version = "3.0.3";
2273 };
2274 rspec-support = {
2275 groups = ["default" "development" "test"];
2276 platforms = [];
2277 source = {
2278 remotes = ["https://rubygems.org"];
2279 sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
2280 type = "gem";
2281 };
2282 version = "3.8.0";
2283 };
2284 rubocop = {
2285 dependencies = ["jaro_winkler" "parallel" "parser" "rainbow" "ruby-progressbar" "unicode-display_width"];
2286 groups = ["development"];
2287 platforms = [];
2288 source = {
2289 remotes = ["https://rubygems.org"];
2290 sha256 = "0mjyrf1dmf58i40izs8rp2j4mqnyd4qpah9svmkwhs33ckxsjh6b";
2291 type = "gem";
2292 };
2293 version = "0.71.0";
2294 };
2295 rubocop-rails = {
2296 dependencies = ["rack" "rubocop"];
2297 groups = ["development"];
2298 platforms = [];
2299 source = {
2300 remotes = ["https://rubygems.org"];
2301 sha256 = "133kf7zc03dgvday8p9m53kz4cqbp4i6w53ahqkfp88n3v5ji0ss";
2302 type = "gem";
2303 };
2304 version = "2.0.1";
2305 };
2306 ruby-progressbar = {
2307 groups = ["default" "development" "test"];
2308 platforms = [];
2309 source = {
2310 remotes = ["https://rubygems.org"];
2311 sha256 = "1k77i0d4wsn23ggdd2msrcwfy0i376cglfqypkk2q77r2l3408zf";
2312 type = "gem";
2313 };
2314 version = "1.10.1";
2315 };
2316 ruby-saml = {
2317 dependencies = ["nokogiri"];
2318 groups = ["default"];
2319 platforms = [];
2320 source = {
2321 remotes = ["https://rubygems.org"];
2322 sha256 = "12f3mmyds4y8f7535p79xzx0wnp7rj02h1fp2x3j2hy5vrkmz2k4";
2323 type = "gem";
2324 };
2325 version = "1.9.0";
2326 };
2327 rufus-scheduler = {
2328 dependencies = ["fugit"];
2329 groups = ["default"];
2330 platforms = [];
2331 source = {
2332 remotes = ["https://rubygems.org"];
2333 sha256 = "074w41a88343cbv8ydkpl3firhvh3kbh8ppldhdmpvv2g569m32i";
2334 type = "gem";
2335 };
2336 version = "3.5.2";
2337 };
2338 safe_yaml = {
2339 groups = ["default" "test"];
2340 platforms = [];
2341 source = {
2342 remotes = ["https://rubygems.org"];
2343 sha256 = "0j7qv63p0vqcd838i2iy2f76c3dgwzkiz1d1xkg7n0pbnxj2vb56";
2344 type = "gem";
2345 };
2346 version = "1.0.5";
2347 };
2348 sanitize = {
2349 dependencies = ["crass" "nokogiri" "nokogumbo"];
2350 groups = ["default"];
2351 platforms = [];
2352 source = {
2353 remotes = ["https://rubygems.org"];
2354 sha256 = "0rsb2gvqdh41miq7xjckidmgnjh3slvfqbp1hh4s6xfhc32r8g3s";
2355 type = "gem";
2356 };
2357 version = "5.0.0";
2358 };
2359 sidekiq = {
2360 dependencies = ["connection_pool" "rack" "rack-protection" "redis"];
2361 groups = ["default" "test"];
2362 platforms = [];
2363 source = {
2364 remotes = ["https://rubygems.org"];
2365 sha256 = "131zv8i341bkacxx7n1id2cmblkbs379farnibqg8c7bycd1iajq";
2366 type = "gem";
2367 };
2368 version = "5.2.7";
2369 };
2370 sidekiq-bulk = {
2371 dependencies = ["sidekiq"];
2372 groups = ["default"];
2373 platforms = [];
2374 source = {
2375 remotes = ["https://rubygems.org"];
2376 sha256 = "08nyxzmgf742irafy3l4fj09d4s5pyvsh0dzlh8y4hl51rgkh4xv";
2377 type = "gem";
2378 };
2379 version = "0.2.0";
2380 };
2381 sidekiq-scheduler = {
2382 dependencies = ["redis" "rufus-scheduler" "sidekiq" "tilt"];
2383 groups = ["default"];
2384 platforms = [];
2385 source = {
2386 remotes = ["https://rubygems.org"];
2387 sha256 = "1n38p1ig8rx4ndqxcsc2gyzbaaax6r16b1xkn9mgcwwfx8qd5dbw";
2388 type = "gem";
2389 };
2390 version = "3.0.0";
2391 };
2392 sidekiq-unique-jobs = {
2393 dependencies = ["concurrent-ruby" "sidekiq" "thor"];
2394 groups = ["default"];
2395 platforms = [];
2396 source = {
2397 remotes = ["https://rubygems.org"];
2398 sha256 = "14b6hiz41zhnn8mq2fyg8axdw6kzfqaybiyqqniprjgxm88md6xf";
2399 type = "gem";
2400 };
2401 version = "6.0.13";
2402 };
2403 simple-navigation = {
2404 dependencies = ["activesupport"];
2405 groups = ["default"];
2406 platforms = [];
2407 source = {
2408 remotes = ["https://rubygems.org"];
2409 sha256 = "08a2s18an3br3xj5j86r33q0hrkai0y157xg67h1khdskb08yylk";
2410 type = "gem";
2411 };
2412 version = "4.0.5";
2413 };
2414 simple_form = {
2415 dependencies = ["actionpack" "activemodel"];
2416 groups = ["default"];
2417 platforms = [];
2418 source = {
2419 remotes = ["https://rubygems.org"];
2420 sha256 = "1221bf6glwinknrnp3pa2676ayg1yxyfa6l6lbajc72950v5mzm6";
2421 type = "gem";
2422 };
2423 version = "4.1.0";
2424 };
2425 simplecov = {
2426 dependencies = ["docile" "json" "simplecov-html"];
2427 groups = ["test"];
2428 platforms = [];
2429 source = {
2430 remotes = ["https://rubygems.org"];
2431 sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
2432 type = "gem";
2433 };
2434 version = "0.16.1";
2435 };
2436 simplecov-html = {
2437 groups = ["default" "test"];
2438 platforms = [];
2439 source = {
2440 remotes = ["https://rubygems.org"];
2441 sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
2442 type = "gem";
2443 };
2444 version = "0.10.2";
2445 };
2446 sprockets = {
2447 dependencies = ["concurrent-ruby" "rack"];
2448 groups = ["default"];
2449 platforms = [];
2450 source = {
2451 remotes = ["https://rubygems.org"];
2452 sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
2453 type = "gem";
2454 };
2455 version = "3.7.2";
2456 };
2457 sprockets-rails = {
2458 dependencies = ["actionpack" "activesupport" "sprockets"];
2459 groups = ["default"];
2460 platforms = [];
2461 source = {
2462 remotes = ["https://rubygems.org"];
2463 sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
2464 type = "gem";
2465 };
2466 version = "3.2.1";
2467 };
2468 sshkit = {
2469 dependencies = ["net-scp" "net-ssh"];
2470 groups = ["default" "development"];
2471 platforms = [];
2472 source = {
2473 remotes = ["https://rubygems.org"];
2474 sha256 = "1982pcckxy811gm6z9h8brkds13mrgrx8sgmdz8dq5rg1h91y0yw";
2475 type = "gem";
2476 };
2477 version = "1.17.0";
2478 };
2479 stackprof = {
2480 groups = ["development"];
2481 platforms = [];
2482 source = {
2483 remotes = ["https://rubygems.org"];
2484 sha256 = "1v7mkl4ng2is5h0glivhcjjkkj2shq1qzx9sg9shw9nn8xvg7i4w";
2485 type = "gem";
2486 };
2487 version = "0.2.12";
2488 };
2489 statsd-ruby = {
2490 groups = ["default"];
2491 platforms = [];
2492 source = {
2493 remotes = ["https://rubygems.org"];
2494 sha256 = "0djig5dnqjgww6wrw3f1mvnnjllznahlchvk4lvs4wx9qjsqpysr";
2495 type = "gem";
2496 };
2497 version = "1.4.0";
2498 };
2499 stoplight = {
2500 groups = ["default"];
2501 platforms = [];
2502 source = {
2503 remotes = ["https://rubygems.org"];
2504 sha256 = "1c55ar2chyivz8n6xkhyq36hgpb0b7cfqfjrcyyv9sjiyrbqyhic";
2505 type = "gem";
2506 };
2507 version = "2.1.3";
2508 };
2509 streamio-ffmpeg = {
2510 dependencies = ["multi_json"];
2511 groups = ["default"];
2512 platforms = [];
2513 source = {
2514 remotes = ["https://rubygems.org"];
2515 sha256 = "1nnxizc0371vwh0k6gqjj1b7fjszydpqfz549n6qn2q1pza3894z";
2516 type = "gem";
2517 };
2518 version = "3.0.2";
2519 };
2520 strong_migrations = {
2521 dependencies = ["activerecord"];
2522 groups = ["default"];
2523 platforms = [];
2524 source = {
2525 remotes = ["https://rubygems.org"];
2526 sha256 = "0767m9qm0k2xqp4z3cyy5mh3639cbfp0b43b6kk6w85zyi6w4dpq";
2527 type = "gem";
2528 };
2529 version = "0.4.0";
2530 };
2531 temple = {
2532 groups = ["default"];
2533 platforms = [];
2534 source = {
2535 remotes = ["https://rubygems.org"];
2536 sha256 = "158d7ygbwcifqnvrph219p7m78yjdjazhykv5darbkms7bxm5y09";
2537 type = "gem";
2538 };
2539 version = "0.8.1";
2540 };
2541 terminal-table = {
2542 dependencies = ["unicode-display_width"];
2543 groups = ["default" "development" "test"];
2544 platforms = [];
2545 source = {
2546 remotes = ["https://rubygems.org"];
2547 sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
2548 type = "gem";
2549 };
2550 version = "1.8.0";
2551 };
2552 terrapin = {
2553 dependencies = ["climate_control"];
2554 groups = ["default"];
2555 platforms = [];
2556 source = {
2557 remotes = ["https://rubygems.org"];
2558 sha256 = "0p18f05r0c5s70571gqig3z2ym74wx79s6rd45sprp207bqskzn9";
2559 type = "gem";
2560 };
2561 version = "0.6.0";
2562 };
2563 thor = {
2564 groups = ["default" "development" "pam_authentication" "production" "test"];
2565 platforms = [];
2566 source = {
2567 remotes = ["https://rubygems.org"];
2568 sha256 = "1yhrnp9x8qcy5vc7g438amd5j9sw83ih7c30dr6g6slgw9zj3g29";
2569 type = "gem";
2570 };
2571 version = "0.20.3";
2572 };
2573 thread_safe = {
2574 groups = ["default" "development" "pam_authentication" "production" "test"];
2575 platforms = [];
2576 source = {
2577 remotes = ["https://rubygems.org"];
2578 sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
2579 type = "gem";
2580 };
2581 version = "0.3.6";
2582 };
2583 tilt = {
2584 groups = ["default"];
2585 platforms = [];
2586 source = {
2587 remotes = ["https://rubygems.org"];
2588 sha256 = "0ca4k0clwf0rkvy7726x4nxpjxkpv67w043i39saxgldxd97zmwz";
2589 type = "gem";
2590 };
2591 version = "2.0.9";
2592 };
2593 tty-color = {
2594 groups = ["default"];
2595 platforms = [];
2596 source = {
2597 remotes = ["https://rubygems.org"];
2598 sha256 = "0zz5xa6xbrj69h334d8nx7z732fz80s1a0b02b53mim95p80s7bk";
2599 type = "gem";
2600 };
2601 version = "0.4.3";
2602 };
2603 tty-command = {
2604 dependencies = ["pastel"];
2605 groups = ["default"];
2606 platforms = [];
2607 source = {
2608 remotes = ["https://rubygems.org"];
2609 sha256 = "1d1fghdvnlc8m5i36h7gswn21232k2f9z5ls73fhs9p5ryfs4vz7";
2610 type = "gem";
2611 };
2612 version = "0.8.2";
2613 };
2614 tty-cursor = {
2615 groups = ["default"];
2616 platforms = [];
2617 source = {
2618 remotes = ["https://rubygems.org"];
2619 sha256 = "0prcxdy6qhqba4cv7hsy503b3bjciqk3j3hhzvcbij1kj2gh31c9";
2620 type = "gem";
2621 };
2622 version = "0.7.0";
2623 };
2624 tty-prompt = {
2625 dependencies = ["necromancer" "pastel" "tty-reader"];
2626 groups = ["default"];
2627 platforms = [];
2628 source = {
2629 remotes = ["https://rubygems.org"];
2630 sha256 = "0mz1v299m6nx6fvlj5jv6h5pvrrwa9pr7c2j5sap3gdab99x6irk";
2631 type = "gem";
2632 };
2633 version = "0.19.0";
2634 };
2635 tty-reader = {
2636 dependencies = ["tty-cursor" "tty-screen" "wisper"];
2637 groups = ["default"];
2638 platforms = [];
2639 source = {
2640 remotes = ["https://rubygems.org"];
2641 sha256 = "028b7ig858av4xwvvbzd96x52myn1a42b2abczjjwvhz6b1j94bn";
2642 type = "gem";
2643 };
2644 version = "0.6.0";
2645 };
2646 tty-screen = {
2647 groups = ["default"];
2648 platforms = [];
2649 source = {
2650 remotes = ["https://rubygems.org"];
2651 sha256 = "1143g05fs28ssgimaph6sdnsndd1wrpax9kjypvd2ripa1adm4kx";
2652 type = "gem";
2653 };
2654 version = "0.7.0";
2655 };
2656 twitter-text = {
2657 dependencies = ["unf"];
2658 groups = ["default"];
2659 platforms = [];
2660 source = {
2661 remotes = ["https://rubygems.org"];
2662 sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
2663 type = "gem";
2664 };
2665 version = "1.14.7";
2666 };
2667 tzinfo = {
2668 dependencies = ["thread_safe"];
2669 groups = ["default" "development" "pam_authentication" "production" "test"];
2670 platforms = [];
2671 source = {
2672 remotes = ["https://rubygems.org"];
2673 sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
2674 type = "gem";
2675 };
2676 version = "1.2.5";
2677 };
2678 tzinfo-data = {
2679 dependencies = ["tzinfo"];
2680 groups = ["default"];
2681 platforms = [];
2682 source = {
2683 remotes = ["https://rubygems.org"];
2684 sha256 = "1105fp27d527k7rrq1yx1ikbzf1sra046ndayxikkjvay9ql61jz";
2685 type = "gem";
2686 };
2687 version = "1.2019.1";
2688 };
2689 unf = {
2690 dependencies = ["unf_ext"];
2691 groups = ["default"];
2692 platforms = [];
2693 source = {
2694 remotes = ["https://rubygems.org"];
2695 sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
2696 type = "gem";
2697 };
2698 version = "0.1.4";
2699 };
2700 unf_ext = {
2701 groups = ["default"];
2702 platforms = [];
2703 source = {
2704 remotes = ["https://rubygems.org"];
2705 sha256 = "06p1i6qhy34bpb8q8ms88y6f2kz86azwm098yvcc0nyqk9y729j1";
2706 type = "gem";
2707 };
2708 version = "0.0.7.5";
2709 };
2710 unicode-display_width = {
2711 groups = ["default" "development" "test"];
2712 platforms = [];
2713 source = {
2714 remotes = ["https://rubygems.org"];
2715 sha256 = "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w";
2716 type = "gem";
2717 };
2718 version = "1.6.0";
2719 };
2720 uniform_notifier = {
2721 groups = ["default" "development"];
2722 platforms = [];
2723 source = {
2724 remotes = ["https://rubygems.org"];
2725 sha256 = "0mb0pq99zm17qnz2czmad5b3z0ivzkf6493afj3n550kd56z18s3";
2726 type = "gem";
2727 };
2728 version = "1.12.1";
2729 };
2730 warden = {
2731 dependencies = ["rack"];
2732 groups = ["default" "pam_authentication"];
2733 platforms = [];
2734 source = {
2735 remotes = ["https://rubygems.org"];
2736 sha256 = "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454";
2737 type = "gem";
2738 };
2739 version = "1.2.8";
2740 };
2741 webmock = {
2742 dependencies = ["addressable" "crack" "hashdiff"];
2743 groups = ["test"];
2744 platforms = [];
2745 source = {
2746 remotes = ["https://rubygems.org"];
2747 sha256 = "0anvrh9si2myf1k8p0rxh8pvmv6ldxd5gmk24ss3kvybmjqrcpwv";
2748 type = "gem";
2749 };
2750 version = "3.6.0";
2751 };
2752 webpacker = {
2753 dependencies = ["activesupport" "rack-proxy" "railties"];
2754 groups = ["default"];
2755 platforms = [];
2756 source = {
2757 remotes = ["https://rubygems.org"];
2758 sha256 = "08jd55y3kihsacgp4l0gvb64m9xixc7dpzjnyr40d6dy98bppz9y";
2759 type = "gem";
2760 };
2761 version = "4.0.7";
2762 };
2763 webpush = {
2764 dependencies = ["hkdf" "jwt"];
2765 groups = ["default"];
2766 platforms = [];
2767 source = {
2768 remotes = ["https://rubygems.org"];
2769 sha256 = "0gi7aircw2bizk08pihr9srncjy9x9iy0ymp1qgchni639k1k05s";
2770 type = "gem";
2771 };
2772 version = "0.3.8";
2773 };
2774 websocket-driver = {
2775 dependencies = ["websocket-extensions"];
2776 groups = ["default"];
2777 platforms = [];
2778 source = {
2779 remotes = ["https://rubygems.org"];
2780 sha256 = "1551k3fs3kkb3ghqfj3n5lps0ikb9pyrdnzmvgfdxy8574n4g1dn";
2781 type = "gem";
2782 };
2783 version = "0.7.0";
2784 };
2785 websocket-extensions = {
2786 groups = ["default"];
2787 platforms = [];
2788 source = {
2789 remotes = ["https://rubygems.org"];
2790 sha256 = "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270";
2791 type = "gem";
2792 };
2793 version = "0.1.3";
2794 };
2795 wisper = {
2796 groups = ["default"];
2797 platforms = [];
2798 source = {
2799 remotes = ["https://rubygems.org"];
2800 sha256 = "0ar2wn3pxnffyzcmf67y67b8lnhgn9zayqhqp26jwqa3d73j71kd";
2801 type = "gem";
2802 };
2803 version = "2.0.0";
2804 };
2805 xpath = {
2806 dependencies = ["nokogiri"];
2807 groups = ["default" "test"];
2808 platforms = [];
2809 source = {
2810 remotes = ["https://rubygems.org"];
2811 sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
2812 type = "gem";
2813 };
2814 version = "3.2.0";
2815 };
2816}
diff --git a/flakes/mastodon/yarn-packages.nix b/flakes/mastodon/yarn-packages.nix
new file mode 100644
index 0000000..cca2efb
--- /dev/null
+++ b/flakes/mastodon/yarn-packages.nix
@@ -0,0 +1,12344 @@
1{fetchurl, linkFarm}: rec {
2 offline_cache = linkFarm "offline" packages;
3 packages = [
4
5 {
6 name = "_babel_code_frame___code_frame_7.0.0.tgz";
7 path = fetchurl {
8 name = "_babel_code_frame___code_frame_7.0.0.tgz";
9 url = "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz";
10 sha1 = "06e2ab19bdb535385559aabb5ba59729482800f8";
11 };
12 }
13
14 {
15 name = "_babel_core___core_7.3.4.tgz";
16 path = fetchurl {
17 name = "_babel_core___core_7.3.4.tgz";
18 url = "https://registry.yarnpkg.com/@babel/core/-/core-7.3.4.tgz";
19 sha1 = "921a5a13746c21e32445bf0798680e9d11a6530b";
20 };
21 }
22
23 {
24 name = "_babel_core___core_7.4.5.tgz";
25 path = fetchurl {
26 name = "_babel_core___core_7.4.5.tgz";
27 url = "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz";
28 sha1 = "081f97e8ffca65a9b4b0fdc7e274e703f000c06a";
29 };
30 }
31
32 {
33 name = "_babel_generator___generator_7.3.4.tgz";
34 path = fetchurl {
35 name = "_babel_generator___generator_7.3.4.tgz";
36 url = "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.4.tgz";
37 sha1 = "9aa48c1989257877a9d971296e5b73bfe72e446e";
38 };
39 }
40
41 {
42 name = "_babel_generator___generator_7.4.4.tgz";
43 path = fetchurl {
44 name = "_babel_generator___generator_7.4.4.tgz";
45 url = "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz";
46 sha1 = "174a215eb843fc392c7edcaabeaa873de6e8f041";
47 };
48 }
49
50 {
51 name = "_babel_helper_annotate_as_pure___helper_annotate_as_pure_7.0.0.tgz";
52 path = fetchurl {
53 name = "_babel_helper_annotate_as_pure___helper_annotate_as_pure_7.0.0.tgz";
54 url = "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz";
55 sha1 = "323d39dd0b50e10c7c06ca7d7638e6864d8c5c32";
56 };
57 }
58
59 {
60 name = "_babel_helper_builder_binary_assignment_operator_visitor___helper_builder_binary_assignment_operator_visitor_7.1.0.tgz";
61 path = fetchurl {
62 name = "_babel_helper_builder_binary_assignment_operator_visitor___helper_builder_binary_assignment_operator_visitor_7.1.0.tgz";
63 url = "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz";
64 sha1 = "6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f";
65 };
66 }
67
68 {
69 name = "_babel_helper_builder_react_jsx___helper_builder_react_jsx_7.0.0.tgz";
70 path = fetchurl {
71 name = "_babel_helper_builder_react_jsx___helper_builder_react_jsx_7.0.0.tgz";
72 url = "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz";
73 sha1 = "fa154cb53eb918cf2a9a7ce928e29eb649c5acdb";
74 };
75 }
76
77 {
78 name = "_babel_helper_call_delegate___helper_call_delegate_7.4.4.tgz";
79 path = fetchurl {
80 name = "_babel_helper_call_delegate___helper_call_delegate_7.4.4.tgz";
81 url = "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz";
82 sha1 = "87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43";
83 };
84 }
85
86 {
87 name = "_babel_helper_create_class_features_plugin___helper_create_class_features_plugin_7.4.4.tgz";
88 path = fetchurl {
89 name = "_babel_helper_create_class_features_plugin___helper_create_class_features_plugin_7.4.4.tgz";
90 url = "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz";
91 sha1 = "fc3d690af6554cc9efc607364a82d48f58736dba";
92 };
93 }
94
95 {
96 name = "_babel_helper_define_map___helper_define_map_7.4.4.tgz";
97 path = fetchurl {
98 name = "_babel_helper_define_map___helper_define_map_7.4.4.tgz";
99 url = "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz";
100 sha1 = "6969d1f570b46bdc900d1eba8e5d59c48ba2c12a";
101 };
102 }
103
104 {
105 name = "_babel_helper_explode_assignable_expression___helper_explode_assignable_expression_7.1.0.tgz";
106 path = fetchurl {
107 name = "_babel_helper_explode_assignable_expression___helper_explode_assignable_expression_7.1.0.tgz";
108 url = "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz";
109 sha1 = "537fa13f6f1674df745b0c00ec8fe4e99681c8f6";
110 };
111 }
112
113 {
114 name = "_babel_helper_function_name___helper_function_name_7.1.0.tgz";
115 path = fetchurl {
116 name = "_babel_helper_function_name___helper_function_name_7.1.0.tgz";
117 url = "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz";
118 sha1 = "a0ceb01685f73355d4360c1247f582bfafc8ff53";
119 };
120 }
121
122 {
123 name = "_babel_helper_get_function_arity___helper_get_function_arity_7.0.0.tgz";
124 path = fetchurl {
125 name = "_babel_helper_get_function_arity___helper_get_function_arity_7.0.0.tgz";
126 url = "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz";
127 sha1 = "83572d4320e2a4657263734113c42868b64e49c3";
128 };
129 }
130
131 {
132 name = "_babel_helper_hoist_variables___helper_hoist_variables_7.4.4.tgz";
133 path = fetchurl {
134 name = "_babel_helper_hoist_variables___helper_hoist_variables_7.4.4.tgz";
135 url = "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz";
136 sha1 = "0298b5f25c8c09c53102d52ac4a98f773eb2850a";
137 };
138 }
139
140 {
141 name = "_babel_helper_member_expression_to_functions___helper_member_expression_to_functions_7.0.0.tgz";
142 path = fetchurl {
143 name = "_babel_helper_member_expression_to_functions___helper_member_expression_to_functions_7.0.0.tgz";
144 url = "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz";
145 sha1 = "8cd14b0a0df7ff00f009e7d7a436945f47c7a16f";
146 };
147 }
148
149 {
150 name = "_babel_helper_module_imports___helper_module_imports_7.0.0.tgz";
151 path = fetchurl {
152 name = "_babel_helper_module_imports___helper_module_imports_7.0.0.tgz";
153 url = "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz";
154 sha1 = "96081b7111e486da4d2cd971ad1a4fe216cc2e3d";
155 };
156 }
157
158 {
159 name = "_babel_helper_module_transforms___helper_module_transforms_7.4.4.tgz";
160 path = fetchurl {
161 name = "_babel_helper_module_transforms___helper_module_transforms_7.4.4.tgz";
162 url = "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz";
163 sha1 = "96115ea42a2f139e619e98ed46df6019b94414b8";
164 };
165 }
166
167 {
168 name = "_babel_helper_optimise_call_expression___helper_optimise_call_expression_7.0.0.tgz";
169 path = fetchurl {
170 name = "_babel_helper_optimise_call_expression___helper_optimise_call_expression_7.0.0.tgz";
171 url = "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz";
172 sha1 = "a2920c5702b073c15de51106200aa8cad20497d5";
173 };
174 }
175
176 {
177 name = "_babel_helper_plugin_utils___helper_plugin_utils_7.0.0.tgz";
178 path = fetchurl {
179 name = "_babel_helper_plugin_utils___helper_plugin_utils_7.0.0.tgz";
180 url = "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz";
181 sha1 = "bbb3fbee98661c569034237cc03967ba99b4f250";
182 };
183 }
184
185 {
186 name = "_babel_helper_regex___helper_regex_7.4.4.tgz";
187 path = fetchurl {
188 name = "_babel_helper_regex___helper_regex_7.4.4.tgz";
189 url = "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz";
190 sha1 = "a47e02bc91fb259d2e6727c2a30013e3ac13c4a2";
191 };
192 }
193
194 {
195 name = "_babel_helper_remap_async_to_generator___helper_remap_async_to_generator_7.1.0.tgz";
196 path = fetchurl {
197 name = "_babel_helper_remap_async_to_generator___helper_remap_async_to_generator_7.1.0.tgz";
198 url = "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz";
199 sha1 = "361d80821b6f38da75bd3f0785ece20a88c5fe7f";
200 };
201 }
202
203 {
204 name = "_babel_helper_replace_supers___helper_replace_supers_7.4.4.tgz";
205 path = fetchurl {
206 name = "_babel_helper_replace_supers___helper_replace_supers_7.4.4.tgz";
207 url = "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz";
208 sha1 = "aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27";
209 };
210 }
211
212 {
213 name = "_babel_helper_simple_access___helper_simple_access_7.1.0.tgz";
214 path = fetchurl {
215 name = "_babel_helper_simple_access___helper_simple_access_7.1.0.tgz";
216 url = "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz";
217 sha1 = "65eeb954c8c245beaa4e859da6188f39d71e585c";
218 };
219 }
220
221 {
222 name = "_babel_helper_split_export_declaration___helper_split_export_declaration_7.4.4.tgz";
223 path = fetchurl {
224 name = "_babel_helper_split_export_declaration___helper_split_export_declaration_7.4.4.tgz";
225 url = "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz";
226 sha1 = "ff94894a340be78f53f06af038b205c49d993677";
227 };
228 }
229
230 {
231 name = "_babel_helper_wrap_function___helper_wrap_function_7.2.0.tgz";
232 path = fetchurl {
233 name = "_babel_helper_wrap_function___helper_wrap_function_7.2.0.tgz";
234 url = "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz";
235 sha1 = "c4e0012445769e2815b55296ead43a958549f6fa";
236 };
237 }
238
239 {
240 name = "_babel_helpers___helpers_7.2.0.tgz";
241 path = fetchurl {
242 name = "_babel_helpers___helpers_7.2.0.tgz";
243 url = "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz";
244 sha1 = "8335f3140f3144270dc63c4732a4f8b0a50b7a21";
245 };
246 }
247
248 {
249 name = "_babel_helpers___helpers_7.4.4.tgz";
250 path = fetchurl {
251 name = "_babel_helpers___helpers_7.4.4.tgz";
252 url = "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz";
253 sha1 = "868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5";
254 };
255 }
256
257 {
258 name = "_babel_highlight___highlight_7.0.0.tgz";
259 path = fetchurl {
260 name = "_babel_highlight___highlight_7.0.0.tgz";
261 url = "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz";
262 sha1 = "f710c38c8d458e6dd9a201afb637fcb781ce99e4";
263 };
264 }
265
266 {
267 name = "_babel_parser___parser_7.2.3.tgz";
268 path = fetchurl {
269 name = "_babel_parser___parser_7.2.3.tgz";
270 url = "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz";
271 sha1 = "32f5df65744b70888d17872ec106b02434ba1489";
272 };
273 }
274
275 {
276 name = "_babel_parser___parser_7.3.4.tgz";
277 path = fetchurl {
278 name = "_babel_parser___parser_7.3.4.tgz";
279 url = "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz";
280 sha1 = "a43357e4bbf4b92a437fb9e465c192848287f27c";
281 };
282 }
283
284 {
285 name = "_babel_parser___parser_7.4.5.tgz";
286 path = fetchurl {
287 name = "_babel_parser___parser_7.4.5.tgz";
288 url = "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz";
289 sha1 = "04af8d5d5a2b044a2a1bffacc1e5e6673544e872";
290 };
291 }
292
293 {
294 name = "_babel_plugin_proposal_async_generator_functions___plugin_proposal_async_generator_functions_7.2.0.tgz";
295 path = fetchurl {
296 name = "_babel_plugin_proposal_async_generator_functions___plugin_proposal_async_generator_functions_7.2.0.tgz";
297 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz";
298 sha1 = "b289b306669dce4ad20b0252889a15768c9d417e";
299 };
300 }
301
302 {
303 name = "_babel_plugin_proposal_class_properties___plugin_proposal_class_properties_7.4.4.tgz";
304 path = fetchurl {
305 name = "_babel_plugin_proposal_class_properties___plugin_proposal_class_properties_7.4.4.tgz";
306 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz";
307 sha1 = "93a6486eed86d53452ab9bab35e368e9461198ce";
308 };
309 }
310
311 {
312 name = "_babel_plugin_proposal_decorators___plugin_proposal_decorators_7.4.4.tgz";
313 path = fetchurl {
314 name = "_babel_plugin_proposal_decorators___plugin_proposal_decorators_7.4.4.tgz";
315 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz";
316 sha1 = "de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0";
317 };
318 }
319
320 {
321 name = "_babel_plugin_proposal_json_strings___plugin_proposal_json_strings_7.2.0.tgz";
322 path = fetchurl {
323 name = "_babel_plugin_proposal_json_strings___plugin_proposal_json_strings_7.2.0.tgz";
324 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz";
325 sha1 = "568ecc446c6148ae6b267f02551130891e29f317";
326 };
327 }
328
329 {
330 name = "_babel_plugin_proposal_object_rest_spread___plugin_proposal_object_rest_spread_7.4.4.tgz";
331 path = fetchurl {
332 name = "_babel_plugin_proposal_object_rest_spread___plugin_proposal_object_rest_spread_7.4.4.tgz";
333 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz";
334 sha1 = "1ef173fcf24b3e2df92a678f027673b55e7e3005";
335 };
336 }
337
338 {
339 name = "_babel_plugin_proposal_optional_catch_binding___plugin_proposal_optional_catch_binding_7.2.0.tgz";
340 path = fetchurl {
341 name = "_babel_plugin_proposal_optional_catch_binding___plugin_proposal_optional_catch_binding_7.2.0.tgz";
342 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz";
343 sha1 = "135d81edb68a081e55e56ec48541ece8065c38f5";
344 };
345 }
346
347 {
348 name = "_babel_plugin_proposal_unicode_property_regex___plugin_proposal_unicode_property_regex_7.4.4.tgz";
349 path = fetchurl {
350 name = "_babel_plugin_proposal_unicode_property_regex___plugin_proposal_unicode_property_regex_7.4.4.tgz";
351 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz";
352 sha1 = "501ffd9826c0b91da22690720722ac7cb1ca9c78";
353 };
354 }
355
356 {
357 name = "_babel_plugin_syntax_async_generators___plugin_syntax_async_generators_7.2.0.tgz";
358 path = fetchurl {
359 name = "_babel_plugin_syntax_async_generators___plugin_syntax_async_generators_7.2.0.tgz";
360 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz";
361 sha1 = "69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f";
362 };
363 }
364
365 {
366 name = "_babel_plugin_syntax_decorators___plugin_syntax_decorators_7.2.0.tgz";
367 path = fetchurl {
368 name = "_babel_plugin_syntax_decorators___plugin_syntax_decorators_7.2.0.tgz";
369 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz";
370 sha1 = "c50b1b957dcc69e4b1127b65e1c33eef61570c1b";
371 };
372 }
373
374 {
375 name = "_babel_plugin_syntax_dynamic_import___plugin_syntax_dynamic_import_7.2.0.tgz";
376 path = fetchurl {
377 name = "_babel_plugin_syntax_dynamic_import___plugin_syntax_dynamic_import_7.2.0.tgz";
378 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz";
379 sha1 = "69c159ffaf4998122161ad8ebc5e6d1f55df8612";
380 };
381 }
382
383 {
384 name = "_babel_plugin_syntax_json_strings___plugin_syntax_json_strings_7.2.0.tgz";
385 path = fetchurl {
386 name = "_babel_plugin_syntax_json_strings___plugin_syntax_json_strings_7.2.0.tgz";
387 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz";
388 sha1 = "72bd13f6ffe1d25938129d2a186b11fd62951470";
389 };
390 }
391
392 {
393 name = "_babel_plugin_syntax_jsx___plugin_syntax_jsx_7.2.0.tgz";
394 path = fetchurl {
395 name = "_babel_plugin_syntax_jsx___plugin_syntax_jsx_7.2.0.tgz";
396 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz";
397 sha1 = "0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7";
398 };
399 }
400
401 {
402 name = "_babel_plugin_syntax_object_rest_spread___plugin_syntax_object_rest_spread_7.2.0.tgz";
403 path = fetchurl {
404 name = "_babel_plugin_syntax_object_rest_spread___plugin_syntax_object_rest_spread_7.2.0.tgz";
405 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz";
406 sha1 = "3b7a3e733510c57e820b9142a6579ac8b0dfad2e";
407 };
408 }
409
410 {
411 name = "_babel_plugin_syntax_optional_catch_binding___plugin_syntax_optional_catch_binding_7.2.0.tgz";
412 path = fetchurl {
413 name = "_babel_plugin_syntax_optional_catch_binding___plugin_syntax_optional_catch_binding_7.2.0.tgz";
414 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz";
415 sha1 = "a94013d6eda8908dfe6a477e7f9eda85656ecf5c";
416 };
417 }
418
419 {
420 name = "_babel_plugin_transform_arrow_functions___plugin_transform_arrow_functions_7.2.0.tgz";
421 path = fetchurl {
422 name = "_babel_plugin_transform_arrow_functions___plugin_transform_arrow_functions_7.2.0.tgz";
423 url = "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz";
424 sha1 = "9aeafbe4d6ffc6563bf8f8372091628f00779550";
425 };
426 }
427
428 {
429 name = "_babel_plugin_transform_async_to_generator___plugin_transform_async_to_generator_7.4.4.tgz";
430 path = fetchurl {
431 name = "_babel_plugin_transform_async_to_generator___plugin_transform_async_to_generator_7.4.4.tgz";
432 url = "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz";
433 sha1 = "a3f1d01f2f21cadab20b33a82133116f14fb5894";
434 };
435 }
436
437 {
438 name = "_babel_plugin_transform_block_scoped_functions___plugin_transform_block_scoped_functions_7.2.0.tgz";
439 path = fetchurl {
440 name = "_babel_plugin_transform_block_scoped_functions___plugin_transform_block_scoped_functions_7.2.0.tgz";
441 url = "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz";
442 sha1 = "5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190";
443 };
444 }
445
446 {
447 name = "_babel_plugin_transform_block_scoping___plugin_transform_block_scoping_7.4.4.tgz";
448 path = fetchurl {
449 name = "_babel_plugin_transform_block_scoping___plugin_transform_block_scoping_7.4.4.tgz";
450 url = "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz";
451 sha1 = "c13279fabf6b916661531841a23c4b7dae29646d";
452 };
453 }
454
455 {
456 name = "_babel_plugin_transform_classes___plugin_transform_classes_7.4.4.tgz";
457 path = fetchurl {
458 name = "_babel_plugin_transform_classes___plugin_transform_classes_7.4.4.tgz";
459 url = "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz";
460 sha1 = "0ce4094cdafd709721076d3b9c38ad31ca715eb6";
461 };
462 }
463
464 {
465 name = "_babel_plugin_transform_computed_properties___plugin_transform_computed_properties_7.2.0.tgz";
466 path = fetchurl {
467 name = "_babel_plugin_transform_computed_properties___plugin_transform_computed_properties_7.2.0.tgz";
468 url = "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz";
469 sha1 = "83a7df6a658865b1c8f641d510c6f3af220216da";
470 };
471 }
472
473 {
474 name = "_babel_plugin_transform_destructuring___plugin_transform_destructuring_7.4.4.tgz";
475 path = fetchurl {
476 name = "_babel_plugin_transform_destructuring___plugin_transform_destructuring_7.4.4.tgz";
477 url = "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz";
478 sha1 = "9d964717829cc9e4b601fc82a26a71a4d8faf20f";
479 };
480 }
481
482 {
483 name = "_babel_plugin_transform_dotall_regex___plugin_transform_dotall_regex_7.4.4.tgz";
484 path = fetchurl {
485 name = "_babel_plugin_transform_dotall_regex___plugin_transform_dotall_regex_7.4.4.tgz";
486 url = "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz";
487 sha1 = "361a148bc951444312c69446d76ed1ea8e4450c3";
488 };
489 }
490
491 {
492 name = "_babel_plugin_transform_duplicate_keys___plugin_transform_duplicate_keys_7.2.0.tgz";
493 path = fetchurl {
494 name = "_babel_plugin_transform_duplicate_keys___plugin_transform_duplicate_keys_7.2.0.tgz";
495 url = "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz";
496 sha1 = "d952c4930f312a4dbfff18f0b2914e60c35530b3";
497 };
498 }
499
500 {
501 name = "_babel_plugin_transform_exponentiation_operator___plugin_transform_exponentiation_operator_7.2.0.tgz";
502 path = fetchurl {
503 name = "_babel_plugin_transform_exponentiation_operator___plugin_transform_exponentiation_operator_7.2.0.tgz";
504 url = "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz";
505 sha1 = "a63868289e5b4007f7054d46491af51435766008";
506 };
507 }
508
509 {
510 name = "_babel_plugin_transform_for_of___plugin_transform_for_of_7.4.4.tgz";
511 path = fetchurl {
512 name = "_babel_plugin_transform_for_of___plugin_transform_for_of_7.4.4.tgz";
513 url = "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz";
514 sha1 = "0267fc735e24c808ba173866c6c4d1440fc3c556";
515 };
516 }
517
518 {
519 name = "_babel_plugin_transform_function_name___plugin_transform_function_name_7.4.4.tgz";
520 path = fetchurl {
521 name = "_babel_plugin_transform_function_name___plugin_transform_function_name_7.4.4.tgz";
522 url = "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz";
523 sha1 = "e1436116abb0610c2259094848754ac5230922ad";
524 };
525 }
526
527 {
528 name = "_babel_plugin_transform_literals___plugin_transform_literals_7.2.0.tgz";
529 path = fetchurl {
530 name = "_babel_plugin_transform_literals___plugin_transform_literals_7.2.0.tgz";
531 url = "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz";
532 sha1 = "690353e81f9267dad4fd8cfd77eafa86aba53ea1";
533 };
534 }
535
536 {
537 name = "_babel_plugin_transform_member_expression_literals___plugin_transform_member_expression_literals_7.2.0.tgz";
538 path = fetchurl {
539 name = "_babel_plugin_transform_member_expression_literals___plugin_transform_member_expression_literals_7.2.0.tgz";
540 url = "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz";
541 sha1 = "fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d";
542 };
543 }
544
545 {
546 name = "_babel_plugin_transform_modules_amd___plugin_transform_modules_amd_7.2.0.tgz";
547 path = fetchurl {
548 name = "_babel_plugin_transform_modules_amd___plugin_transform_modules_amd_7.2.0.tgz";
549 url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz";
550 sha1 = "82a9bce45b95441f617a24011dc89d12da7f4ee6";
551 };
552 }
553
554 {
555 name = "_babel_plugin_transform_modules_commonjs___plugin_transform_modules_commonjs_7.4.4.tgz";
556 path = fetchurl {
557 name = "_babel_plugin_transform_modules_commonjs___plugin_transform_modules_commonjs_7.4.4.tgz";
558 url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz";
559 sha1 = "0bef4713d30f1d78c2e59b3d6db40e60192cac1e";
560 };
561 }
562
563 {
564 name = "_babel_plugin_transform_modules_systemjs___plugin_transform_modules_systemjs_7.4.4.tgz";
565 path = fetchurl {
566 name = "_babel_plugin_transform_modules_systemjs___plugin_transform_modules_systemjs_7.4.4.tgz";
567 url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz";
568 sha1 = "dc83c5665b07d6c2a7b224c00ac63659ea36a405";
569 };
570 }
571
572 {
573 name = "_babel_plugin_transform_modules_umd___plugin_transform_modules_umd_7.2.0.tgz";
574 path = fetchurl {
575 name = "_babel_plugin_transform_modules_umd___plugin_transform_modules_umd_7.2.0.tgz";
576 url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz";
577 sha1 = "7678ce75169f0877b8eb2235538c074268dd01ae";
578 };
579 }
580
581 {
582 name = "_babel_plugin_transform_named_capturing_groups_regex___plugin_transform_named_capturing_groups_regex_7.4.5.tgz";
583 path = fetchurl {
584 name = "_babel_plugin_transform_named_capturing_groups_regex___plugin_transform_named_capturing_groups_regex_7.4.5.tgz";
585 url = "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz";
586 sha1 = "9d269fd28a370258199b4294736813a60bbdd106";
587 };
588 }
589
590 {
591 name = "_babel_plugin_transform_new_target___plugin_transform_new_target_7.4.4.tgz";
592 path = fetchurl {
593 name = "_babel_plugin_transform_new_target___plugin_transform_new_target_7.4.4.tgz";
594 url = "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz";
595 sha1 = "18d120438b0cc9ee95a47f2c72bc9768fbed60a5";
596 };
597 }
598
599 {
600 name = "_babel_plugin_transform_object_super___plugin_transform_object_super_7.2.0.tgz";
601 path = fetchurl {
602 name = "_babel_plugin_transform_object_super___plugin_transform_object_super_7.2.0.tgz";
603 url = "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz";
604 sha1 = "b35d4c10f56bab5d650047dad0f1d8e8814b6598";
605 };
606 }
607
608 {
609 name = "_babel_plugin_transform_parameters___plugin_transform_parameters_7.4.4.tgz";
610 path = fetchurl {
611 name = "_babel_plugin_transform_parameters___plugin_transform_parameters_7.4.4.tgz";
612 url = "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz";
613 sha1 = "7556cf03f318bd2719fe4c922d2d808be5571e16";
614 };
615 }
616
617 {
618 name = "_babel_plugin_transform_property_literals___plugin_transform_property_literals_7.2.0.tgz";
619 path = fetchurl {
620 name = "_babel_plugin_transform_property_literals___plugin_transform_property_literals_7.2.0.tgz";
621 url = "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz";
622 sha1 = "03e33f653f5b25c4eb572c98b9485055b389e905";
623 };
624 }
625
626 {
627 name = "_babel_plugin_transform_react_display_name___plugin_transform_react_display_name_7.2.0.tgz";
628 path = fetchurl {
629 name = "_babel_plugin_transform_react_display_name___plugin_transform_react_display_name_7.2.0.tgz";
630 url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz";
631 sha1 = "ebfaed87834ce8dc4279609a4f0c324c156e3eb0";
632 };
633 }
634
635 {
636 name = "_babel_plugin_transform_react_inline_elements___plugin_transform_react_inline_elements_7.2.0.tgz";
637 path = fetchurl {
638 name = "_babel_plugin_transform_react_inline_elements___plugin_transform_react_inline_elements_7.2.0.tgz";
639 url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-inline-elements/-/plugin-transform-react-inline-elements-7.2.0.tgz";
640 sha1 = "3e36e7c47f1c21f52b2b0090d5cd83ceb19a4770";
641 };
642 }
643
644 {
645 name = "_babel_plugin_transform_react_jsx_self___plugin_transform_react_jsx_self_7.2.0.tgz";
646 path = fetchurl {
647 name = "_babel_plugin_transform_react_jsx_self___plugin_transform_react_jsx_self_7.2.0.tgz";
648 url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz";
649 sha1 = "461e21ad9478f1031dd5e276108d027f1b5240ba";
650 };
651 }
652
653 {
654 name = "_babel_plugin_transform_react_jsx_source___plugin_transform_react_jsx_source_7.2.0.tgz";
655 path = fetchurl {
656 name = "_babel_plugin_transform_react_jsx_source___plugin_transform_react_jsx_source_7.2.0.tgz";
657 url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz";
658 sha1 = "20c8c60f0140f5dd3cd63418d452801cf3f7180f";
659 };
660 }
661
662 {
663 name = "_babel_plugin_transform_react_jsx___plugin_transform_react_jsx_7.2.0.tgz";
664 path = fetchurl {
665 name = "_babel_plugin_transform_react_jsx___plugin_transform_react_jsx_7.2.0.tgz";
666 url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.2.0.tgz";
667 sha1 = "ca36b6561c4d3b45524f8efb6f0fbc9a0d1d622f";
668 };
669 }
670
671 {
672 name = "_babel_plugin_transform_regenerator___plugin_transform_regenerator_7.4.5.tgz";
673 path = fetchurl {
674 name = "_babel_plugin_transform_regenerator___plugin_transform_regenerator_7.4.5.tgz";
675 url = "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz";
676 sha1 = "629dc82512c55cee01341fb27bdfcb210354680f";
677 };
678 }
679
680 {
681 name = "_babel_plugin_transform_reserved_words___plugin_transform_reserved_words_7.2.0.tgz";
682 path = fetchurl {
683 name = "_babel_plugin_transform_reserved_words___plugin_transform_reserved_words_7.2.0.tgz";
684 url = "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz";
685 sha1 = "4792af87c998a49367597d07fedf02636d2e1634";
686 };
687 }
688
689 {
690 name = "_babel_plugin_transform_runtime___plugin_transform_runtime_7.4.4.tgz";
691 path = fetchurl {
692 name = "_babel_plugin_transform_runtime___plugin_transform_runtime_7.4.4.tgz";
693 url = "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz";
694 sha1 = "a50f5d16e9c3a4ac18a1a9f9803c107c380bce08";
695 };
696 }
697
698 {
699 name = "_babel_plugin_transform_shorthand_properties___plugin_transform_shorthand_properties_7.2.0.tgz";
700 path = fetchurl {
701 name = "_babel_plugin_transform_shorthand_properties___plugin_transform_shorthand_properties_7.2.0.tgz";
702 url = "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz";
703 sha1 = "6333aee2f8d6ee7e28615457298934a3b46198f0";
704 };
705 }
706
707 {
708 name = "_babel_plugin_transform_spread___plugin_transform_spread_7.2.2.tgz";
709 path = fetchurl {
710 name = "_babel_plugin_transform_spread___plugin_transform_spread_7.2.2.tgz";
711 url = "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz";
712 sha1 = "3103a9abe22f742b6d406ecd3cd49b774919b406";
713 };
714 }
715
716 {
717 name = "_babel_plugin_transform_sticky_regex___plugin_transform_sticky_regex_7.2.0.tgz";
718 path = fetchurl {
719 name = "_babel_plugin_transform_sticky_regex___plugin_transform_sticky_regex_7.2.0.tgz";
720 url = "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz";
721 sha1 = "a1e454b5995560a9c1e0d537dfc15061fd2687e1";
722 };
723 }
724
725 {
726 name = "_babel_plugin_transform_template_literals___plugin_transform_template_literals_7.4.4.tgz";
727 path = fetchurl {
728 name = "_babel_plugin_transform_template_literals___plugin_transform_template_literals_7.4.4.tgz";
729 url = "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz";
730 sha1 = "9d28fea7bbce637fb7612a0750989d8321d4bcb0";
731 };
732 }
733
734 {
735 name = "_babel_plugin_transform_typeof_symbol___plugin_transform_typeof_symbol_7.2.0.tgz";
736 path = fetchurl {
737 name = "_babel_plugin_transform_typeof_symbol___plugin_transform_typeof_symbol_7.2.0.tgz";
738 url = "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz";
739 sha1 = "117d2bcec2fbf64b4b59d1f9819894682d29f2b2";
740 };
741 }
742
743 {
744 name = "_babel_plugin_transform_unicode_regex___plugin_transform_unicode_regex_7.4.4.tgz";
745 path = fetchurl {
746 name = "_babel_plugin_transform_unicode_regex___plugin_transform_unicode_regex_7.4.4.tgz";
747 url = "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz";
748 sha1 = "ab4634bb4f14d36728bf5978322b35587787970f";
749 };
750 }
751
752 {
753 name = "_babel_preset_env___preset_env_7.4.5.tgz";
754 path = fetchurl {
755 name = "_babel_preset_env___preset_env_7.4.5.tgz";
756 url = "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz";
757 sha1 = "2fad7f62983d5af563b5f3139242755884998a58";
758 };
759 }
760
761 {
762 name = "_babel_preset_react___preset_react_7.0.0.tgz";
763 path = fetchurl {
764 name = "_babel_preset_react___preset_react_7.0.0.tgz";
765 url = "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz";
766 sha1 = "e86b4b3d99433c7b3e9e91747e2653958bc6b3c0";
767 };
768 }
769
770 {
771 name = "_babel_runtime___runtime_7.0.0.tgz";
772 path = fetchurl {
773 name = "_babel_runtime___runtime_7.0.0.tgz";
774 url = "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz";
775 sha1 = "adeb78fedfc855aa05bc041640f3f6f98e85424c";
776 };
777 }
778
779 {
780 name = "_babel_runtime___runtime_7.2.0.tgz";
781 path = fetchurl {
782 name = "_babel_runtime___runtime_7.2.0.tgz";
783 url = "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz";
784 sha1 = "b03e42eeddf5898e00646e4c840fa07ba8dcad7f";
785 };
786 }
787
788 {
789 name = "_babel_runtime___runtime_7.4.5.tgz";
790 path = fetchurl {
791 name = "_babel_runtime___runtime_7.4.5.tgz";
792 url = "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz";
793 sha1 = "582bb531f5f9dc67d2fcb682979894f75e253f12";
794 };
795 }
796
797 {
798 name = "_babel_template___template_7.2.2.tgz";
799 path = fetchurl {
800 name = "_babel_template___template_7.2.2.tgz";
801 url = "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz";
802 sha1 = "005b3fdf0ed96e88041330379e0da9a708eb2907";
803 };
804 }
805
806 {
807 name = "_babel_template___template_7.4.4.tgz";
808 path = fetchurl {
809 name = "_babel_template___template_7.4.4.tgz";
810 url = "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz";
811 sha1 = "f4b88d1225689a08f5bc3a17483545be9e4ed237";
812 };
813 }
814
815 {
816 name = "_babel_traverse___traverse_7.2.3.tgz";
817 path = fetchurl {
818 name = "_babel_traverse___traverse_7.2.3.tgz";
819 url = "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz";
820 sha1 = "7ff50cefa9c7c0bd2d81231fdac122f3957748d8";
821 };
822 }
823
824 {
825 name = "_babel_traverse___traverse_7.4.5.tgz";
826 path = fetchurl {
827 name = "_babel_traverse___traverse_7.4.5.tgz";
828 url = "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz";
829 sha1 = "4e92d1728fd2f1897dafdd321efbff92156c3216";
830 };
831 }
832
833 {
834 name = "_babel_traverse___traverse_7.3.4.tgz";
835 path = fetchurl {
836 name = "_babel_traverse___traverse_7.3.4.tgz";
837 url = "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.3.4.tgz";
838 sha1 = "1330aab72234f8dea091b08c4f8b9d05c7119e06";
839 };
840 }
841
842 {
843 name = "_babel_types___types_7.4.4.tgz";
844 path = fetchurl {
845 name = "_babel_types___types_7.4.4.tgz";
846 url = "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz";
847 sha1 = "8db9e9a629bb7c29370009b4b779ed93fe57d5f0";
848 };
849 }
850
851 {
852 name = "_babel_types___types_7.2.2.tgz";
853 path = fetchurl {
854 name = "_babel_types___types_7.2.2.tgz";
855 url = "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz";
856 sha1 = "44e10fc24e33af524488b716cdaee5360ea8ed1e";
857 };
858 }
859
860 {
861 name = "_babel_types___types_7.3.4.tgz";
862 path = fetchurl {
863 name = "_babel_types___types_7.3.4.tgz";
864 url = "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz";
865 sha1 = "bf482eaeaffb367a28abbf9357a94963235d90ed";
866 };
867 }
868
869 {
870 name = "_clusterws_cws___cws_0.14.0.tgz";
871 path = fetchurl {
872 name = "_clusterws_cws___cws_0.14.0.tgz";
873 url = "https://registry.yarnpkg.com/@clusterws/cws/-/cws-0.14.0.tgz";
874 sha1 = "242824b6884454001340222a836db6f6c5e62bfb";
875 };
876 }
877
878 {
879 name = "_cnakazawa_watch___watch_1.0.3.tgz";
880 path = fetchurl {
881 name = "_cnakazawa_watch___watch_1.0.3.tgz";
882 url = "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz";
883 sha1 = "099139eaec7ebf07a27c1786a3ff64f39464d2ef";
884 };
885 }
886
887 {
888 name = "_emotion_babel_utils___babel_utils_0.6.10.tgz";
889 path = fetchurl {
890 name = "_emotion_babel_utils___babel_utils_0.6.10.tgz";
891 url = "https://registry.yarnpkg.com/@emotion/babel-utils/-/babel-utils-0.6.10.tgz";
892 sha1 = "83dbf3dfa933fae9fc566e54fbb45f14674c6ccc";
893 };
894 }
895
896 {
897 name = "_emotion_hash___hash_0.6.6.tgz";
898 path = fetchurl {
899 name = "_emotion_hash___hash_0.6.6.tgz";
900 url = "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.6.6.tgz";
901 sha1 = "62266c5f0eac6941fece302abad69f2ee7e25e44";
902 };
903 }
904
905 {
906 name = "_emotion_memoize___memoize_0.6.6.tgz";
907 path = fetchurl {
908 name = "_emotion_memoize___memoize_0.6.6.tgz";
909 url = "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.6.6.tgz";
910 sha1 = "004b98298d04c7ca3b4f50ca2035d4f60d2eed1b";
911 };
912 }
913
914 {
915 name = "_emotion_serialize___serialize_0.9.1.tgz";
916 path = fetchurl {
917 name = "_emotion_serialize___serialize_0.9.1.tgz";
918 url = "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.9.1.tgz";
919 sha1 = "a494982a6920730dba6303eb018220a2b629c145";
920 };
921 }
922
923 {
924 name = "_emotion_stylis___stylis_0.7.1.tgz";
925 path = fetchurl {
926 name = "_emotion_stylis___stylis_0.7.1.tgz";
927 url = "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.7.1.tgz";
928 sha1 = "50f63225e712d99e2b2b39c19c70fff023793ca5";
929 };
930 }
931
932 {
933 name = "_emotion_unitless___unitless_0.6.7.tgz";
934 path = fetchurl {
935 name = "_emotion_unitless___unitless_0.6.7.tgz";
936 url = "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.6.7.tgz";
937 sha1 = "53e9f1892f725b194d5e6a1684a7b394df592397";
938 };
939 }
940
941 {
942 name = "_emotion_utils___utils_0.8.2.tgz";
943 path = fetchurl {
944 name = "_emotion_utils___utils_0.8.2.tgz";
945 url = "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.8.2.tgz";
946 sha1 = "576ff7fb1230185b619a75d258cbc98f0867a8dc";
947 };
948 }
949
950 {
951 name = "_jest_console___console_24.7.1.tgz";
952 path = fetchurl {
953 name = "_jest_console___console_24.7.1.tgz";
954 url = "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz";
955 sha1 = "32a9e42535a97aedfe037e725bd67e954b459545";
956 };
957 }
958
959 {
960 name = "_jest_core___core_24.8.0.tgz";
961 path = fetchurl {
962 name = "_jest_core___core_24.8.0.tgz";
963 url = "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz";
964 sha1 = "fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b";
965 };
966 }
967
968 {
969 name = "_jest_environment___environment_24.8.0.tgz";
970 path = fetchurl {
971 name = "_jest_environment___environment_24.8.0.tgz";
972 url = "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz";
973 sha1 = "0342261383c776bdd652168f68065ef144af0eac";
974 };
975 }
976
977 {
978 name = "_jest_fake_timers___fake_timers_24.8.0.tgz";
979 path = fetchurl {
980 name = "_jest_fake_timers___fake_timers_24.8.0.tgz";
981 url = "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz";
982 sha1 = "2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1";
983 };
984 }
985
986 {
987 name = "_jest_reporters___reporters_24.8.0.tgz";
988 path = fetchurl {
989 name = "_jest_reporters___reporters_24.8.0.tgz";
990 url = "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz";
991 sha1 = "075169cd029bddec54b8f2c0fc489fd0b9e05729";
992 };
993 }
994
995 {
996 name = "_jest_source_map___source_map_24.3.0.tgz";
997 path = fetchurl {
998 name = "_jest_source_map___source_map_24.3.0.tgz";
999 url = "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz";
1000 sha1 = "563be3aa4d224caf65ff77edc95cd1ca4da67f28";
1001 };
1002 }
1003
1004 {
1005 name = "_jest_test_result___test_result_24.8.0.tgz";
1006 path = fetchurl {
1007 name = "_jest_test_result___test_result_24.8.0.tgz";
1008 url = "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz";
1009 sha1 = "7675d0aaf9d2484caa65e048d9b467d160f8e9d3";
1010 };
1011 }
1012
1013 {
1014 name = "_jest_test_sequencer___test_sequencer_24.8.0.tgz";
1015 path = fetchurl {
1016 name = "_jest_test_sequencer___test_sequencer_24.8.0.tgz";
1017 url = "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz";
1018 sha1 = "2f993bcf6ef5eb4e65e8233a95a3320248cf994b";
1019 };
1020 }
1021
1022 {
1023 name = "_jest_transform___transform_24.8.0.tgz";
1024 path = fetchurl {
1025 name = "_jest_transform___transform_24.8.0.tgz";
1026 url = "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz";
1027 sha1 = "628fb99dce4f9d254c6fd9341e3eea262e06fef5";
1028 };
1029 }
1030
1031 {
1032 name = "_jest_types___types_24.8.0.tgz";
1033 path = fetchurl {
1034 name = "_jest_types___types_24.8.0.tgz";
1035 url = "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz";
1036 sha1 = "f31e25948c58f0abd8c845ae26fcea1491dea7ad";
1037 };
1038 }
1039
1040 {
1041 name = "_types_babel__core___babel__core_7.1.0.tgz";
1042 path = fetchurl {
1043 name = "_types_babel__core___babel__core_7.1.0.tgz";
1044 url = "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.0.tgz";
1045 sha1 = "710f2487dda4dcfd010ca6abb2b4dc7394365c51";
1046 };
1047 }
1048
1049 {
1050 name = "_types_babel__generator___babel__generator_7.0.2.tgz";
1051 path = fetchurl {
1052 name = "_types_babel__generator___babel__generator_7.0.2.tgz";
1053 url = "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz";
1054 sha1 = "d2112a6b21fad600d7674274293c85dce0cb47fc";
1055 };
1056 }
1057
1058 {
1059 name = "_types_babel__template___babel__template_7.0.2.tgz";
1060 path = fetchurl {
1061 name = "_types_babel__template___babel__template_7.0.2.tgz";
1062 url = "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz";
1063 sha1 = "4ff63d6b52eddac1de7b975a5223ed32ecea9307";
1064 };
1065 }
1066
1067 {
1068 name = "_types_babel__traverse___babel__traverse_7.0.6.tgz";
1069 path = fetchurl {
1070 name = "_types_babel__traverse___babel__traverse_7.0.6.tgz";
1071 url = "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.6.tgz";
1072 sha1 = "328dd1a8fc4cfe3c8458be9477b219ea158fd7b2";
1073 };
1074 }
1075
1076 {
1077 name = "_types_events___events_3.0.0.tgz";
1078 path = fetchurl {
1079 name = "_types_events___events_3.0.0.tgz";
1080 url = "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz";
1081 sha1 = "2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7";
1082 };
1083 }
1084
1085 {
1086 name = "_types_glob___glob_7.1.1.tgz";
1087 path = fetchurl {
1088 name = "_types_glob___glob_7.1.1.tgz";
1089 url = "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz";
1090 sha1 = "aa59a1c6e3fbc421e07ccd31a944c30eba521575";
1091 };
1092 }
1093
1094 {
1095 name = "_types_istanbul_lib_coverage___istanbul_lib_coverage_2.0.1.tgz";
1096 path = fetchurl {
1097 name = "_types_istanbul_lib_coverage___istanbul_lib_coverage_2.0.1.tgz";
1098 url = "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz";
1099 sha1 = "42995b446db9a48a11a07ec083499a860e9138ff";
1100 };
1101 }
1102
1103 {
1104 name = "_types_istanbul_lib_report___istanbul_lib_report_1.1.1.tgz";
1105 path = fetchurl {
1106 name = "_types_istanbul_lib_report___istanbul_lib_report_1.1.1.tgz";
1107 url = "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz";
1108 sha1 = "e5471e7fa33c61358dd38426189c037a58433b8c";
1109 };
1110 }
1111
1112 {
1113 name = "_types_istanbul_reports___istanbul_reports_1.1.1.tgz";
1114 path = fetchurl {
1115 name = "_types_istanbul_reports___istanbul_reports_1.1.1.tgz";
1116 url = "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz";
1117 sha1 = "7a8cbf6a406f36c8add871625b278eaf0b0d255a";
1118 };
1119 }
1120
1121 {
1122 name = "_types_minimatch___minimatch_3.0.3.tgz";
1123 path = fetchurl {
1124 name = "_types_minimatch___minimatch_3.0.3.tgz";
1125 url = "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz";
1126 sha1 = "3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d";
1127 };
1128 }
1129
1130 {
1131 name = "_types_node___node_10.12.18.tgz";
1132 path = fetchurl {
1133 name = "_types_node___node_10.12.18.tgz";
1134 url = "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz";
1135 sha1 = "1d3ca764718915584fcd9f6344621b7672665c67";
1136 };
1137 }
1138
1139 {
1140 name = "_types_q___q_1.5.1.tgz";
1141 path = fetchurl {
1142 name = "_types_q___q_1.5.1.tgz";
1143 url = "https://registry.yarnpkg.com/@types/q/-/q-1.5.1.tgz";
1144 sha1 = "48fd98c1561fe718b61733daed46ff115b496e18";
1145 };
1146 }
1147
1148 {
1149 name = "_types_react___react_16.4.6.tgz";
1150 path = fetchurl {
1151 name = "_types_react___react_16.4.6.tgz";
1152 url = "https://registry.yarnpkg.com/@types/react/-/react-16.4.6.tgz";
1153 sha1 = "5024957c6bcef4f02823accf5974faba2e54fada";
1154 };
1155 }
1156
1157 {
1158 name = "_types_stack_utils___stack_utils_1.0.1.tgz";
1159 path = fetchurl {
1160 name = "_types_stack_utils___stack_utils_1.0.1.tgz";
1161 url = "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz";
1162 sha1 = "0a851d3bd96498fa25c33ab7278ed3bd65f06c3e";
1163 };
1164 }
1165
1166 {
1167 name = "_types_yargs___yargs_12.0.9.tgz";
1168 path = fetchurl {
1169 name = "_types_yargs___yargs_12.0.9.tgz";
1170 url = "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.9.tgz";
1171 sha1 = "693e76a52f61a2f1e7fb48c0eef167b95ea4ffd0";
1172 };
1173 }
1174
1175 {
1176 name = "_webassemblyjs_ast___ast_1.8.5.tgz";
1177 path = fetchurl {
1178 name = "_webassemblyjs_ast___ast_1.8.5.tgz";
1179 url = "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz";
1180 sha1 = "51b1c5fe6576a34953bf4b253df9f0d490d9e359";
1181 };
1182 }
1183
1184 {
1185 name = "_webassemblyjs_floating_point_hex_parser___floating_point_hex_parser_1.8.5.tgz";
1186 path = fetchurl {
1187 name = "_webassemblyjs_floating_point_hex_parser___floating_point_hex_parser_1.8.5.tgz";
1188 url = "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz";
1189 sha1 = "1ba926a2923613edce496fd5b02e8ce8a5f49721";
1190 };
1191 }
1192
1193 {
1194 name = "_webassemblyjs_helper_api_error___helper_api_error_1.8.5.tgz";
1195 path = fetchurl {
1196 name = "_webassemblyjs_helper_api_error___helper_api_error_1.8.5.tgz";
1197 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz";
1198 sha1 = "c49dad22f645227c5edb610bdb9697f1aab721f7";
1199 };
1200 }
1201
1202 {
1203 name = "_webassemblyjs_helper_buffer___helper_buffer_1.8.5.tgz";
1204 path = fetchurl {
1205 name = "_webassemblyjs_helper_buffer___helper_buffer_1.8.5.tgz";
1206 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz";
1207 sha1 = "fea93e429863dd5e4338555f42292385a653f204";
1208 };
1209 }
1210
1211 {
1212 name = "_webassemblyjs_helper_code_frame___helper_code_frame_1.8.5.tgz";
1213 path = fetchurl {
1214 name = "_webassemblyjs_helper_code_frame___helper_code_frame_1.8.5.tgz";
1215 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz";
1216 sha1 = "9a740ff48e3faa3022b1dff54423df9aa293c25e";
1217 };
1218 }
1219
1220 {
1221 name = "_webassemblyjs_helper_fsm___helper_fsm_1.8.5.tgz";
1222 path = fetchurl {
1223 name = "_webassemblyjs_helper_fsm___helper_fsm_1.8.5.tgz";
1224 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz";
1225 sha1 = "ba0b7d3b3f7e4733da6059c9332275d860702452";
1226 };
1227 }
1228
1229 {
1230 name = "_webassemblyjs_helper_module_context___helper_module_context_1.8.5.tgz";
1231 path = fetchurl {
1232 name = "_webassemblyjs_helper_module_context___helper_module_context_1.8.5.tgz";
1233 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz";
1234 sha1 = "def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245";
1235 };
1236 }
1237
1238 {
1239 name = "_webassemblyjs_helper_wasm_bytecode___helper_wasm_bytecode_1.8.5.tgz";
1240 path = fetchurl {
1241 name = "_webassemblyjs_helper_wasm_bytecode___helper_wasm_bytecode_1.8.5.tgz";
1242 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz";
1243 sha1 = "537a750eddf5c1e932f3744206551c91c1b93e61";
1244 };
1245 }
1246
1247 {
1248 name = "_webassemblyjs_helper_wasm_section___helper_wasm_section_1.8.5.tgz";
1249 path = fetchurl {
1250 name = "_webassemblyjs_helper_wasm_section___helper_wasm_section_1.8.5.tgz";
1251 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz";
1252 sha1 = "74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf";
1253 };
1254 }
1255
1256 {
1257 name = "_webassemblyjs_ieee754___ieee754_1.8.5.tgz";
1258 path = fetchurl {
1259 name = "_webassemblyjs_ieee754___ieee754_1.8.5.tgz";
1260 url = "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz";
1261 sha1 = "712329dbef240f36bf57bd2f7b8fb9bf4154421e";
1262 };
1263 }
1264
1265 {
1266 name = "_webassemblyjs_leb128___leb128_1.8.5.tgz";
1267 path = fetchurl {
1268 name = "_webassemblyjs_leb128___leb128_1.8.5.tgz";
1269 url = "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz";
1270 sha1 = "044edeb34ea679f3e04cd4fd9824d5e35767ae10";
1271 };
1272 }
1273
1274 {
1275 name = "_webassemblyjs_utf8___utf8_1.8.5.tgz";
1276 path = fetchurl {
1277 name = "_webassemblyjs_utf8___utf8_1.8.5.tgz";
1278 url = "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz";
1279 sha1 = "a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc";
1280 };
1281 }
1282
1283 {
1284 name = "_webassemblyjs_wasm_edit___wasm_edit_1.8.5.tgz";
1285 path = fetchurl {
1286 name = "_webassemblyjs_wasm_edit___wasm_edit_1.8.5.tgz";
1287 url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz";
1288 sha1 = "962da12aa5acc1c131c81c4232991c82ce56e01a";
1289 };
1290 }
1291
1292 {
1293 name = "_webassemblyjs_wasm_gen___wasm_gen_1.8.5.tgz";
1294 path = fetchurl {
1295 name = "_webassemblyjs_wasm_gen___wasm_gen_1.8.5.tgz";
1296 url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz";
1297 sha1 = "54840766c2c1002eb64ed1abe720aded714f98bc";
1298 };
1299 }
1300
1301 {
1302 name = "_webassemblyjs_wasm_opt___wasm_opt_1.8.5.tgz";
1303 path = fetchurl {
1304 name = "_webassemblyjs_wasm_opt___wasm_opt_1.8.5.tgz";
1305 url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz";
1306 sha1 = "b24d9f6ba50394af1349f510afa8ffcb8a63d264";
1307 };
1308 }
1309
1310 {
1311 name = "_webassemblyjs_wasm_parser___wasm_parser_1.8.5.tgz";
1312 path = fetchurl {
1313 name = "_webassemblyjs_wasm_parser___wasm_parser_1.8.5.tgz";
1314 url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz";
1315 sha1 = "21576f0ec88b91427357b8536383668ef7c66b8d";
1316 };
1317 }
1318
1319 {
1320 name = "_webassemblyjs_wast_parser___wast_parser_1.8.5.tgz";
1321 path = fetchurl {
1322 name = "_webassemblyjs_wast_parser___wast_parser_1.8.5.tgz";
1323 url = "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz";
1324 sha1 = "e10eecd542d0e7bd394f6827c49f3df6d4eefb8c";
1325 };
1326 }
1327
1328 {
1329 name = "_webassemblyjs_wast_printer___wast_printer_1.8.5.tgz";
1330 path = fetchurl {
1331 name = "_webassemblyjs_wast_printer___wast_printer_1.8.5.tgz";
1332 url = "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz";
1333 sha1 = "114bbc481fd10ca0e23b3560fa812748b0bae5bc";
1334 };
1335 }
1336
1337 {
1338 name = "_xtuc_ieee754___ieee754_1.2.0.tgz";
1339 path = fetchurl {
1340 name = "_xtuc_ieee754___ieee754_1.2.0.tgz";
1341 url = "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz";
1342 sha1 = "eef014a3145ae477a1cbc00cd1e552336dceb790";
1343 };
1344 }
1345
1346 {
1347 name = "_xtuc_long___long_4.2.2.tgz";
1348 path = fetchurl {
1349 name = "_xtuc_long___long_4.2.2.tgz";
1350 url = "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz";
1351 sha1 = "d291c6a4e97989b5c61d9acf396ae4fe133a718d";
1352 };
1353 }
1354
1355 {
1356 name = "abab___abab_2.0.0.tgz";
1357 path = fetchurl {
1358 name = "abab___abab_2.0.0.tgz";
1359 url = "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz";
1360 sha1 = "aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f";
1361 };
1362 }
1363
1364 {
1365 name = "abbrev___abbrev_1.1.1.tgz";
1366 path = fetchurl {
1367 name = "abbrev___abbrev_1.1.1.tgz";
1368 url = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz";
1369 sha1 = "f8f2c887ad10bf67f634f005b6987fed3179aac8";
1370 };
1371 }
1372
1373 {
1374 name = "accepts___accepts_1.3.7.tgz";
1375 path = fetchurl {
1376 name = "accepts___accepts_1.3.7.tgz";
1377 url = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz";
1378 sha1 = "531bc726517a3b2b41f850021c6cc15eaab507cd";
1379 };
1380 }
1381
1382 {
1383 name = "acorn_dynamic_import___acorn_dynamic_import_4.0.0.tgz";
1384 path = fetchurl {
1385 name = "acorn_dynamic_import___acorn_dynamic_import_4.0.0.tgz";
1386 url = "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz";
1387 sha1 = "482210140582a36b83c3e342e1cfebcaa9240948";
1388 };
1389 }
1390
1391 {
1392 name = "acorn_globals___acorn_globals_4.3.0.tgz";
1393 path = fetchurl {
1394 name = "acorn_globals___acorn_globals_4.3.0.tgz";
1395 url = "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz";
1396 sha1 = "e3b6f8da3c1552a95ae627571f7dd6923bb54103";
1397 };
1398 }
1399
1400 {
1401 name = "acorn_jsx___acorn_jsx_3.0.1.tgz";
1402 path = fetchurl {
1403 name = "acorn_jsx___acorn_jsx_3.0.1.tgz";
1404 url = "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz";
1405 sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b";
1406 };
1407 }
1408
1409 {
1410 name = "acorn_jsx___acorn_jsx_5.0.1.tgz";
1411 path = fetchurl {
1412 name = "acorn_jsx___acorn_jsx_5.0.1.tgz";
1413 url = "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz";
1414 sha1 = "32a064fd925429216a09b141102bfdd185fae40e";
1415 };
1416 }
1417
1418 {
1419 name = "acorn_walk___acorn_walk_6.1.1.tgz";
1420 path = fetchurl {
1421 name = "acorn_walk___acorn_walk_6.1.1.tgz";
1422 url = "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz";
1423 sha1 = "d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913";
1424 };
1425 }
1426
1427 {
1428 name = "acorn___acorn_3.3.0.tgz";
1429 path = fetchurl {
1430 name = "acorn___acorn_3.3.0.tgz";
1431 url = "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz";
1432 sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
1433 };
1434 }
1435
1436 {
1437 name = "acorn___acorn_5.7.3.tgz";
1438 path = fetchurl {
1439 name = "acorn___acorn_5.7.3.tgz";
1440 url = "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz";
1441 sha1 = "67aa231bf8812974b85235a96771eb6bd07ea279";
1442 };
1443 }
1444
1445 {
1446 name = "acorn___acorn_6.1.1.tgz";
1447 path = fetchurl {
1448 name = "acorn___acorn_6.1.1.tgz";
1449 url = "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz";
1450 sha1 = "7d25ae05bb8ad1f9b699108e1094ecd7884adc1f";
1451 };
1452 }
1453
1454 {
1455 name = "airbnb_prop_types___airbnb_prop_types_2.13.2.tgz";
1456 path = fetchurl {
1457 name = "airbnb_prop_types___airbnb_prop_types_2.13.2.tgz";
1458 url = "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.13.2.tgz";
1459 sha1 = "43147a5062dd2a4a5600e748a47b64004cc5f7fc";
1460 };
1461 }
1462
1463 {
1464 name = "ajv_errors___ajv_errors_1.0.1.tgz";
1465 path = fetchurl {
1466 name = "ajv_errors___ajv_errors_1.0.1.tgz";
1467 url = "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz";
1468 sha1 = "f35986aceb91afadec4102fbd85014950cefa64d";
1469 };
1470 }
1471
1472 {
1473 name = "ajv_keywords___ajv_keywords_1.5.1.tgz";
1474 path = fetchurl {
1475 name = "ajv_keywords___ajv_keywords_1.5.1.tgz";
1476 url = "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz";
1477 sha1 = "314dd0a4b3368fad3dfcdc54ede6171b886daf3c";
1478 };
1479 }
1480
1481 {
1482 name = "ajv_keywords___ajv_keywords_3.2.0.tgz";
1483 path = fetchurl {
1484 name = "ajv_keywords___ajv_keywords_3.2.0.tgz";
1485 url = "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz";
1486 sha1 = "e86b819c602cf8821ad637413698f1dec021847a";
1487 };
1488 }
1489
1490 {
1491 name = "ajv___ajv_4.11.8.tgz";
1492 path = fetchurl {
1493 name = "ajv___ajv_4.11.8.tgz";
1494 url = "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz";
1495 sha1 = "82ffb02b29e662ae53bdc20af15947706739c536";
1496 };
1497 }
1498
1499 {
1500 name = "ajv___ajv_6.6.2.tgz";
1501 path = fetchurl {
1502 name = "ajv___ajv_6.6.2.tgz";
1503 url = "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz";
1504 sha1 = "caceccf474bf3fc3ce3b147443711a24063cc30d";
1505 };
1506 }
1507
1508 {
1509 name = "alphanum_sort___alphanum_sort_1.0.2.tgz";
1510 path = fetchurl {
1511 name = "alphanum_sort___alphanum_sort_1.0.2.tgz";
1512 url = "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz";
1513 sha1 = "97a1119649b211ad33691d9f9f486a8ec9fbe0a3";
1514 };
1515 }
1516
1517 {
1518 name = "ansi_colors___ansi_colors_3.2.3.tgz";
1519 path = fetchurl {
1520 name = "ansi_colors___ansi_colors_3.2.3.tgz";
1521 url = "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz";
1522 sha1 = "57d35b8686e851e2cc04c403f1c00203976a1813";
1523 };
1524 }
1525
1526 {
1527 name = "ansi_escapes___ansi_escapes_1.4.0.tgz";
1528 path = fetchurl {
1529 name = "ansi_escapes___ansi_escapes_1.4.0.tgz";
1530 url = "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz";
1531 sha1 = "d3a8a83b319aa67793662b13e761c7911422306e";
1532 };
1533 }
1534
1535 {
1536 name = "ansi_escapes___ansi_escapes_3.1.0.tgz";
1537 path = fetchurl {
1538 name = "ansi_escapes___ansi_escapes_3.1.0.tgz";
1539 url = "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz";
1540 sha1 = "f73207bb81207d75fd6c83f125af26eea378ca30";
1541 };
1542 }
1543
1544 {
1545 name = "ansi_html___ansi_html_0.0.7.tgz";
1546 path = fetchurl {
1547 name = "ansi_html___ansi_html_0.0.7.tgz";
1548 url = "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz";
1549 sha1 = "813584021962a9e9e6fd039f940d12f56ca7859e";
1550 };
1551 }
1552
1553 {
1554 name = "ansi_regex___ansi_regex_2.1.1.tgz";
1555 path = fetchurl {
1556 name = "ansi_regex___ansi_regex_2.1.1.tgz";
1557 url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz";
1558 sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
1559 };
1560 }
1561
1562 {
1563 name = "ansi_regex___ansi_regex_3.0.0.tgz";
1564 path = fetchurl {
1565 name = "ansi_regex___ansi_regex_3.0.0.tgz";
1566 url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz";
1567 sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
1568 };
1569 }
1570
1571 {
1572 name = "ansi_regex___ansi_regex_4.0.0.tgz";
1573 path = fetchurl {
1574 name = "ansi_regex___ansi_regex_4.0.0.tgz";
1575 url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz";
1576 sha1 = "70de791edf021404c3fd615aa89118ae0432e5a9";
1577 };
1578 }
1579
1580 {
1581 name = "ansi_styles___ansi_styles_2.2.1.tgz";
1582 path = fetchurl {
1583 name = "ansi_styles___ansi_styles_2.2.1.tgz";
1584 url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz";
1585 sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
1586 };
1587 }
1588
1589 {
1590 name = "ansi_styles___ansi_styles_3.2.1.tgz";
1591 path = fetchurl {
1592 name = "ansi_styles___ansi_styles_3.2.1.tgz";
1593 url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz";
1594 sha1 = "41fbb20243e50b12be0f04b8dedbf07520ce841d";
1595 };
1596 }
1597
1598 {
1599 name = "anymatch___anymatch_2.0.0.tgz";
1600 path = fetchurl {
1601 name = "anymatch___anymatch_2.0.0.tgz";
1602 url = "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz";
1603 sha1 = "bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb";
1604 };
1605 }
1606
1607 {
1608 name = "aproba___aproba_1.2.0.tgz";
1609 path = fetchurl {
1610 name = "aproba___aproba_1.2.0.tgz";
1611 url = "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz";
1612 sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
1613 };
1614 }
1615
1616 {
1617 name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
1618 path = fetchurl {
1619 name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
1620 url = "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
1621 sha1 = "4b35c2944f062a8bfcda66410760350fe9ddfc21";
1622 };
1623 }
1624
1625 {
1626 name = "argparse___argparse_1.0.10.tgz";
1627 path = fetchurl {
1628 name = "argparse___argparse_1.0.10.tgz";
1629 url = "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz";
1630 sha1 = "bcd6791ea5ae09725e17e5ad988134cd40b3d911";
1631 };
1632 }
1633
1634 {
1635 name = "aria_query___aria_query_3.0.0.tgz";
1636 path = fetchurl {
1637 name = "aria_query___aria_query_3.0.0.tgz";
1638 url = "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz";
1639 sha1 = "65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc";
1640 };
1641 }
1642
1643 {
1644 name = "arr_diff___arr_diff_4.0.0.tgz";
1645 path = fetchurl {
1646 name = "arr_diff___arr_diff_4.0.0.tgz";
1647 url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz";
1648 sha1 = "d6461074febfec71e7e15235761a329a5dc7c520";
1649 };
1650 }
1651
1652 {
1653 name = "arr_flatten___arr_flatten_1.1.0.tgz";
1654 path = fetchurl {
1655 name = "arr_flatten___arr_flatten_1.1.0.tgz";
1656 url = "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz";
1657 sha1 = "36048bbff4e7b47e136644316c99669ea5ae91f1";
1658 };
1659 }
1660
1661 {
1662 name = "arr_union___arr_union_3.1.0.tgz";
1663 path = fetchurl {
1664 name = "arr_union___arr_union_3.1.0.tgz";
1665 url = "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz";
1666 sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
1667 };
1668 }
1669
1670 {
1671 name = "array_equal___array_equal_1.0.0.tgz";
1672 path = fetchurl {
1673 name = "array_equal___array_equal_1.0.0.tgz";
1674 url = "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz";
1675 sha1 = "8c2a5ef2472fd9ea742b04c77a75093ba2757c93";
1676 };
1677 }
1678
1679 {
1680 name = "array_filter___array_filter_1.0.0.tgz";
1681 path = fetchurl {
1682 name = "array_filter___array_filter_1.0.0.tgz";
1683 url = "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz";
1684 sha1 = "baf79e62e6ef4c2a4c0b831232daffec251f9d83";
1685 };
1686 }
1687
1688 {
1689 name = "array_flatten___array_flatten_1.1.1.tgz";
1690 path = fetchurl {
1691 name = "array_flatten___array_flatten_1.1.1.tgz";
1692 url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz";
1693 sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
1694 };
1695 }
1696
1697 {
1698 name = "array_flatten___array_flatten_2.1.2.tgz";
1699 path = fetchurl {
1700 name = "array_flatten___array_flatten_2.1.2.tgz";
1701 url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz";
1702 sha1 = "24ef80a28c1a893617e2149b0c6d0d788293b099";
1703 };
1704 }
1705
1706 {
1707 name = "array_includes___array_includes_3.0.3.tgz";
1708 path = fetchurl {
1709 name = "array_includes___array_includes_3.0.3.tgz";
1710 url = "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz";
1711 sha1 = "184b48f62d92d7452bb31b323165c7f8bd02266d";
1712 };
1713 }
1714
1715 {
1716 name = "array_union___array_union_1.0.2.tgz";
1717 path = fetchurl {
1718 name = "array_union___array_union_1.0.2.tgz";
1719 url = "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz";
1720 sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39";
1721 };
1722 }
1723
1724 {
1725 name = "array_uniq___array_uniq_1.0.3.tgz";
1726 path = fetchurl {
1727 name = "array_uniq___array_uniq_1.0.3.tgz";
1728 url = "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz";
1729 sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
1730 };
1731 }
1732
1733 {
1734 name = "array_unique___array_unique_0.3.2.tgz";
1735 path = fetchurl {
1736 name = "array_unique___array_unique_0.3.2.tgz";
1737 url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz";
1738 sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
1739 };
1740 }
1741
1742 {
1743 name = "array.prototype.find___array.prototype.find_2.1.0.tgz";
1744 path = fetchurl {
1745 name = "array.prototype.find___array.prototype.find_2.1.0.tgz";
1746 url = "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.0.tgz";
1747 sha1 = "630f2eaf70a39e608ac3573e45cf8ccd0ede9ad7";
1748 };
1749 }
1750
1751 {
1752 name = "array.prototype.flat___array.prototype.flat_1.2.1.tgz";
1753 path = fetchurl {
1754 name = "array.prototype.flat___array.prototype.flat_1.2.1.tgz";
1755 url = "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz";
1756 sha1 = "812db8f02cad24d3fab65dd67eabe3b8903494a4";
1757 };
1758 }
1759
1760 {
1761 name = "arrify___arrify_1.0.1.tgz";
1762 path = fetchurl {
1763 name = "arrify___arrify_1.0.1.tgz";
1764 url = "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz";
1765 sha1 = "898508da2226f380df904728456849c1501a4b0d";
1766 };
1767 }
1768
1769 {
1770 name = "asap___asap_2.0.6.tgz";
1771 path = fetchurl {
1772 name = "asap___asap_2.0.6.tgz";
1773 url = "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz";
1774 sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
1775 };
1776 }
1777
1778 {
1779 name = "asn1.js___asn1.js_4.10.1.tgz";
1780 path = fetchurl {
1781 name = "asn1.js___asn1.js_4.10.1.tgz";
1782 url = "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz";
1783 sha1 = "b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0";
1784 };
1785 }
1786
1787 {
1788 name = "asn1___asn1_0.2.4.tgz";
1789 path = fetchurl {
1790 name = "asn1___asn1_0.2.4.tgz";
1791 url = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz";
1792 sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136";
1793 };
1794 }
1795
1796 {
1797 name = "assert_plus___assert_plus_1.0.0.tgz";
1798 path = fetchurl {
1799 name = "assert_plus___assert_plus_1.0.0.tgz";
1800 url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz";
1801 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
1802 };
1803 }
1804
1805 {
1806 name = "assert___assert_1.4.1.tgz";
1807 path = fetchurl {
1808 name = "assert___assert_1.4.1.tgz";
1809 url = "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz";
1810 sha1 = "99912d591836b5a6f5b345c0f07eefc08fc65d91";
1811 };
1812 }
1813
1814 {
1815 name = "assign_symbols___assign_symbols_1.0.0.tgz";
1816 path = fetchurl {
1817 name = "assign_symbols___assign_symbols_1.0.0.tgz";
1818 url = "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz";
1819 sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
1820 };
1821 }
1822
1823 {
1824 name = "ast_types_flow___ast_types_flow_0.0.7.tgz";
1825 path = fetchurl {
1826 name = "ast_types_flow___ast_types_flow_0.0.7.tgz";
1827 url = "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz";
1828 sha1 = "f70b735c6bca1a5c9c22d982c3e39e7feba3bdad";
1829 };
1830 }
1831
1832 {
1833 name = "astral_regex___astral_regex_1.0.0.tgz";
1834 path = fetchurl {
1835 name = "astral_regex___astral_regex_1.0.0.tgz";
1836 url = "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz";
1837 sha1 = "6c8c3fb827dd43ee3918f27b82782ab7658a6fd9";
1838 };
1839 }
1840
1841 {
1842 name = "async_each___async_each_1.0.3.tgz";
1843 path = fetchurl {
1844 name = "async_each___async_each_1.0.3.tgz";
1845 url = "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz";
1846 sha1 = "b727dbf87d7651602f06f4d4ac387f47d91b0cbf";
1847 };
1848 }
1849
1850 {
1851 name = "async_limiter___async_limiter_1.0.0.tgz";
1852 path = fetchurl {
1853 name = "async_limiter___async_limiter_1.0.0.tgz";
1854 url = "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz";
1855 sha1 = "78faed8c3d074ab81f22b4e985d79e8738f720f8";
1856 };
1857 }
1858
1859 {
1860 name = "async___async_1.5.2.tgz";
1861 path = fetchurl {
1862 name = "async___async_1.5.2.tgz";
1863 url = "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz";
1864 sha1 = "ec6a61ae56480c0c3cb241c95618e20892f9672a";
1865 };
1866 }
1867
1868 {
1869 name = "async___async_2.6.1.tgz";
1870 path = fetchurl {
1871 name = "async___async_2.6.1.tgz";
1872 url = "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz";
1873 sha1 = "b245a23ca71930044ec53fa46aa00a3e87c6a610";
1874 };
1875 }
1876
1877 {
1878 name = "asynckit___asynckit_0.4.0.tgz";
1879 path = fetchurl {
1880 name = "asynckit___asynckit_0.4.0.tgz";
1881 url = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz";
1882 sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
1883 };
1884 }
1885
1886 {
1887 name = "atob___atob_2.1.2.tgz";
1888 path = fetchurl {
1889 name = "atob___atob_2.1.2.tgz";
1890 url = "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz";
1891 sha1 = "6d9517eb9e030d2436666651e86bd9f6f13533c9";
1892 };
1893 }
1894
1895 {
1896 name = "autoprefixer___autoprefixer_9.6.0.tgz";
1897 path = fetchurl {
1898 name = "autoprefixer___autoprefixer_9.6.0.tgz";
1899 url = "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.0.tgz";
1900 sha1 = "0111c6bde2ad20c6f17995a33fad7cf6854b4c87";
1901 };
1902 }
1903
1904 {
1905 name = "aws_sign2___aws_sign2_0.7.0.tgz";
1906 path = fetchurl {
1907 name = "aws_sign2___aws_sign2_0.7.0.tgz";
1908 url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz";
1909 sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
1910 };
1911 }
1912
1913 {
1914 name = "aws4___aws4_1.8.0.tgz";
1915 path = fetchurl {
1916 name = "aws4___aws4_1.8.0.tgz";
1917 url = "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz";
1918 sha1 = "f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f";
1919 };
1920 }
1921
1922 {
1923 name = "axios___axios_0.19.0.tgz";
1924 path = fetchurl {
1925 name = "axios___axios_0.19.0.tgz";
1926 url = "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz";
1927 sha1 = "8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8";
1928 };
1929 }
1930
1931 {
1932 name = "axobject_query___axobject_query_2.0.2.tgz";
1933 path = fetchurl {
1934 name = "axobject_query___axobject_query_2.0.2.tgz";
1935 url = "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz";
1936 sha1 = "ea187abe5b9002b377f925d8bf7d1c561adf38f9";
1937 };
1938 }
1939
1940 {
1941 name = "babel_eslint___babel_eslint_10.0.1.tgz";
1942 path = fetchurl {
1943 name = "babel_eslint___babel_eslint_10.0.1.tgz";
1944 url = "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz";
1945 sha1 = "919681dc099614cd7d31d45c8908695092a1faed";
1946 };
1947 }
1948
1949 {
1950 name = "babel_jest___babel_jest_24.8.0.tgz";
1951 path = fetchurl {
1952 name = "babel_jest___babel_jest_24.8.0.tgz";
1953 url = "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz";
1954 sha1 = "5c15ff2b28e20b0f45df43fe6b7f2aae93dba589";
1955 };
1956 }
1957
1958 {
1959 name = "babel_loader___babel_loader_8.0.5.tgz";
1960 path = fetchurl {
1961 name = "babel_loader___babel_loader_8.0.5.tgz";
1962 url = "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.5.tgz";
1963 sha1 = "225322d7509c2157655840bba52e46b6c2f2fe33";
1964 };
1965 }
1966
1967 {
1968 name = "babel_plugin_emotion___babel_plugin_emotion_9.2.11.tgz";
1969 path = fetchurl {
1970 name = "babel_plugin_emotion___babel_plugin_emotion_9.2.11.tgz";
1971 url = "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-9.2.11.tgz";
1972 sha1 = "319c005a9ee1d15bb447f59fe504c35fd5807728";
1973 };
1974 }
1975
1976 {
1977 name = "babel_plugin_istanbul___babel_plugin_istanbul_5.1.1.tgz";
1978 path = fetchurl {
1979 name = "babel_plugin_istanbul___babel_plugin_istanbul_5.1.1.tgz";
1980 url = "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz";
1981 sha1 = "7981590f1956d75d67630ba46f0c22493588c893";
1982 };
1983 }
1984
1985 {
1986 name = "babel_plugin_jest_hoist___babel_plugin_jest_hoist_24.6.0.tgz";
1987 path = fetchurl {
1988 name = "babel_plugin_jest_hoist___babel_plugin_jest_hoist_24.6.0.tgz";
1989 url = "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz";
1990 sha1 = "f7f7f7ad150ee96d7a5e8e2c5da8319579e78019";
1991 };
1992 }
1993
1994 {
1995 name = "babel_plugin_lodash___babel_plugin_lodash_3.3.4.tgz";
1996 path = fetchurl {
1997 name = "babel_plugin_lodash___babel_plugin_lodash_3.3.4.tgz";
1998 url = "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz";
1999 sha1 = "4f6844358a1340baed182adbeffa8df9967bc196";
2000 };
2001 }
2002
2003 {
2004 name = "babel_plugin_macros___babel_plugin_macros_2.5.1.tgz";
2005 path = fetchurl {
2006 name = "babel_plugin_macros___babel_plugin_macros_2.5.1.tgz";
2007 url = "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.5.1.tgz";
2008 sha1 = "4a119ac2c2e19b458c259b9accd7ee34fd57ec6f";
2009 };
2010 }
2011
2012 {
2013 name = "babel_plugin_macros___babel_plugin_macros_2.4.3.tgz";
2014 path = fetchurl {
2015 name = "babel_plugin_macros___babel_plugin_macros_2.4.3.tgz";
2016 url = "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.3.tgz";
2017 sha1 = "870345aa538d85f04b4614fea5922b55c45dd551";
2018 };
2019 }
2020
2021 {
2022 name = "babel_plugin_preval___babel_plugin_preval_3.0.1.tgz";
2023 path = fetchurl {
2024 name = "babel_plugin_preval___babel_plugin_preval_3.0.1.tgz";
2025 url = "https://registry.yarnpkg.com/babel-plugin-preval/-/babel-plugin-preval-3.0.1.tgz";
2026 sha1 = "a26f9690114a864a54a5cbdf865496ebf541a9c3";
2027 };
2028 }
2029
2030 {
2031 name = "babel_plugin_react_intl___babel_plugin_react_intl_3.1.3.tgz";
2032 path = fetchurl {
2033 name = "babel_plugin_react_intl___babel_plugin_react_intl_3.1.3.tgz";
2034 url = "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-3.1.3.tgz";
2035 sha1 = "2a28cd43cbba1ed092c7e3376bf8f02b0f72acb8";
2036 };
2037 }
2038
2039 {
2040 name = "babel_plugin_syntax_jsx___babel_plugin_syntax_jsx_6.18.0.tgz";
2041 path = fetchurl {
2042 name = "babel_plugin_syntax_jsx___babel_plugin_syntax_jsx_6.18.0.tgz";
2043 url = "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz";
2044 sha1 = "0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946";
2045 };
2046 }
2047
2048 {
2049 name = "babel_plugin_transform_react_remove_prop_types___babel_plugin_transform_react_remove_prop_types_0.4.24.tgz";
2050 path = fetchurl {
2051 name = "babel_plugin_transform_react_remove_prop_types___babel_plugin_transform_react_remove_prop_types_0.4.24.tgz";
2052 url = "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz";
2053 sha1 = "f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a";
2054 };
2055 }
2056
2057 {
2058 name = "babel_preset_jest___babel_preset_jest_24.6.0.tgz";
2059 path = fetchurl {
2060 name = "babel_preset_jest___babel_preset_jest_24.6.0.tgz";
2061 url = "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz";
2062 sha1 = "66f06136eefce87797539c0d63f1769cc3915984";
2063 };
2064 }
2065
2066 {
2067 name = "babel_runtime___babel_runtime_6.26.0.tgz";
2068 path = fetchurl {
2069 name = "babel_runtime___babel_runtime_6.26.0.tgz";
2070 url = "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz";
2071 sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
2072 };
2073 }
2074
2075 {
2076 name = "backoff___backoff_2.5.0.tgz";
2077 path = fetchurl {
2078 name = "backoff___backoff_2.5.0.tgz";
2079 url = "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz";
2080 sha1 = "f616eda9d3e4b66b8ca7fca79f695722c5f8e26f";
2081 };
2082 }
2083
2084 {
2085 name = "balanced_match___balanced_match_1.0.0.tgz";
2086 path = fetchurl {
2087 name = "balanced_match___balanced_match_1.0.0.tgz";
2088 url = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz";
2089 sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
2090 };
2091 }
2092
2093 {
2094 name = "base64_js___base64_js_1.3.0.tgz";
2095 path = fetchurl {
2096 name = "base64_js___base64_js_1.3.0.tgz";
2097 url = "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz";
2098 sha1 = "cab1e6118f051095e58b5281aea8c1cd22bfc0e3";
2099 };
2100 }
2101
2102 {
2103 name = "base___base_0.11.2.tgz";
2104 path = fetchurl {
2105 name = "base___base_0.11.2.tgz";
2106 url = "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz";
2107 sha1 = "7bde5ced145b6d551a90db87f83c558b4eb48a8f";
2108 };
2109 }
2110
2111 {
2112 name = "batch___batch_0.6.1.tgz";
2113 path = fetchurl {
2114 name = "batch___batch_0.6.1.tgz";
2115 url = "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz";
2116 sha1 = "dc34314f4e679318093fc760272525f94bf25c16";
2117 };
2118 }
2119
2120 {
2121 name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
2122 path = fetchurl {
2123 name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
2124 url = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
2125 sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
2126 };
2127 }
2128
2129 {
2130 name = "bfj___bfj_6.1.1.tgz";
2131 path = fetchurl {
2132 name = "bfj___bfj_6.1.1.tgz";
2133 url = "https://registry.yarnpkg.com/bfj/-/bfj-6.1.1.tgz";
2134 sha1 = "05a3b7784fbd72cfa3c22e56002ef99336516c48";
2135 };
2136 }
2137
2138 {
2139 name = "big.js___big.js_3.2.0.tgz";
2140 path = fetchurl {
2141 name = "big.js___big.js_3.2.0.tgz";
2142 url = "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz";
2143 sha1 = "a5fc298b81b9e0dca2e458824784b65c52ba588e";
2144 };
2145 }
2146
2147 {
2148 name = "big.js___big.js_5.2.2.tgz";
2149 path = fetchurl {
2150 name = "big.js___big.js_5.2.2.tgz";
2151 url = "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz";
2152 sha1 = "65f0af382f578bcdc742bd9c281e9cb2d7768328";
2153 };
2154 }
2155
2156 {
2157 name = "binary_extensions___binary_extensions_1.12.0.tgz";
2158 path = fetchurl {
2159 name = "binary_extensions___binary_extensions_1.12.0.tgz";
2160 url = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz";
2161 sha1 = "c2d780f53d45bba8317a8902d4ceeaf3a6385b14";
2162 };
2163 }
2164
2165 {
2166 name = "bluebird___bluebird_3.5.3.tgz";
2167 path = fetchurl {
2168 name = "bluebird___bluebird_3.5.3.tgz";
2169 url = "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz";
2170 sha1 = "7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7";
2171 };
2172 }
2173
2174 {
2175 name = "blurhash___blurhash_1.0.0.tgz";
2176 path = fetchurl {
2177 name = "blurhash___blurhash_1.0.0.tgz";
2178 url = "https://registry.yarnpkg.com/blurhash/-/blurhash-1.0.0.tgz";
2179 sha1 = "9087bc5cc4d482f1305059d7410df4133adcab2e";
2180 };
2181 }
2182
2183 {
2184 name = "bn.js___bn.js_4.11.8.tgz";
2185 path = fetchurl {
2186 name = "bn.js___bn.js_4.11.8.tgz";
2187 url = "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz";
2188 sha1 = "2cde09eb5ee341f484746bb0309b3253b1b1442f";
2189 };
2190 }
2191
2192 {
2193 name = "body_parser___body_parser_1.19.0.tgz";
2194 path = fetchurl {
2195 name = "body_parser___body_parser_1.19.0.tgz";
2196 url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz";
2197 sha1 = "96b2709e57c9c4e09a6fd66a8fd979844f69f08a";
2198 };
2199 }
2200
2201 {
2202 name = "bonjour___bonjour_3.5.0.tgz";
2203 path = fetchurl {
2204 name = "bonjour___bonjour_3.5.0.tgz";
2205 url = "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz";
2206 sha1 = "8e890a183d8ee9a2393b3844c691a42bcf7bc9f5";
2207 };
2208 }
2209
2210 {
2211 name = "boolbase___boolbase_1.0.0.tgz";
2212 path = fetchurl {
2213 name = "boolbase___boolbase_1.0.0.tgz";
2214 url = "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz";
2215 sha1 = "68dff5fbe60c51eb37725ea9e3ed310dcc1e776e";
2216 };
2217 }
2218
2219 {
2220 name = "brace_expansion___brace_expansion_1.1.11.tgz";
2221 path = fetchurl {
2222 name = "brace_expansion___brace_expansion_1.1.11.tgz";
2223 url = "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz";
2224 sha1 = "3c7fcbf529d87226f3d2f52b966ff5271eb441dd";
2225 };
2226 }
2227
2228 {
2229 name = "braces___braces_2.3.2.tgz";
2230 path = fetchurl {
2231 name = "braces___braces_2.3.2.tgz";
2232 url = "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz";
2233 sha1 = "5979fd3f14cd531565e5fa2df1abfff1dfaee729";
2234 };
2235 }
2236
2237 {
2238 name = "bricks.js___bricks.js_1.8.0.tgz";
2239 path = fetchurl {
2240 name = "bricks.js___bricks.js_1.8.0.tgz";
2241 url = "https://registry.yarnpkg.com/bricks.js/-/bricks.js-1.8.0.tgz";
2242 sha1 = "8fdeb3c0226af251f4d5727a7df7f9ac0092b4b2";
2243 };
2244 }
2245
2246 {
2247 name = "brorand___brorand_1.1.0.tgz";
2248 path = fetchurl {
2249 name = "brorand___brorand_1.1.0.tgz";
2250 url = "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz";
2251 sha1 = "12c25efe40a45e3c323eb8675a0a0ce57b22371f";
2252 };
2253 }
2254
2255 {
2256 name = "browser_process_hrtime___browser_process_hrtime_0.1.3.tgz";
2257 path = fetchurl {
2258 name = "browser_process_hrtime___browser_process_hrtime_0.1.3.tgz";
2259 url = "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz";
2260 sha1 = "616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4";
2261 };
2262 }
2263
2264 {
2265 name = "browser_resolve___browser_resolve_1.11.3.tgz";
2266 path = fetchurl {
2267 name = "browser_resolve___browser_resolve_1.11.3.tgz";
2268 url = "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz";
2269 sha1 = "9b7cbb3d0f510e4cb86bdbd796124d28b5890af6";
2270 };
2271 }
2272
2273 {
2274 name = "browserify_aes___browserify_aes_1.2.0.tgz";
2275 path = fetchurl {
2276 name = "browserify_aes___browserify_aes_1.2.0.tgz";
2277 url = "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz";
2278 sha1 = "326734642f403dabc3003209853bb70ad428ef48";
2279 };
2280 }
2281
2282 {
2283 name = "browserify_cipher___browserify_cipher_1.0.1.tgz";
2284 path = fetchurl {
2285 name = "browserify_cipher___browserify_cipher_1.0.1.tgz";
2286 url = "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz";
2287 sha1 = "8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0";
2288 };
2289 }
2290
2291 {
2292 name = "browserify_des___browserify_des_1.0.2.tgz";
2293 path = fetchurl {
2294 name = "browserify_des___browserify_des_1.0.2.tgz";
2295 url = "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz";
2296 sha1 = "3af4f1f59839403572f1c66204375f7a7f703e9c";
2297 };
2298 }
2299
2300 {
2301 name = "browserify_rsa___browserify_rsa_4.0.1.tgz";
2302 path = fetchurl {
2303 name = "browserify_rsa___browserify_rsa_4.0.1.tgz";
2304 url = "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz";
2305 sha1 = "21e0abfaf6f2029cf2fafb133567a701d4135524";
2306 };
2307 }
2308
2309 {
2310 name = "browserify_sign___browserify_sign_4.0.4.tgz";
2311 path = fetchurl {
2312 name = "browserify_sign___browserify_sign_4.0.4.tgz";
2313 url = "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz";
2314 sha1 = "aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298";
2315 };
2316 }
2317
2318 {
2319 name = "browserify_zlib___browserify_zlib_0.2.0.tgz";
2320 path = fetchurl {
2321 name = "browserify_zlib___browserify_zlib_0.2.0.tgz";
2322 url = "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz";
2323 sha1 = "2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f";
2324 };
2325 }
2326
2327 {
2328 name = "browserslist___browserslist_4.6.2.tgz";
2329 path = fetchurl {
2330 name = "browserslist___browserslist_4.6.2.tgz";
2331 url = "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.2.tgz";
2332 sha1 = "574c665950915c2ac73a4594b8537a9eba26203f";
2333 };
2334 }
2335
2336 {
2337 name = "bser___bser_2.0.0.tgz";
2338 path = fetchurl {
2339 name = "bser___bser_2.0.0.tgz";
2340 url = "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz";
2341 sha1 = "9ac78d3ed5d915804fd87acb158bc797147a1719";
2342 };
2343 }
2344
2345 {
2346 name = "buffer_from___buffer_from_1.1.1.tgz";
2347 path = fetchurl {
2348 name = "buffer_from___buffer_from_1.1.1.tgz";
2349 url = "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz";
2350 sha1 = "32713bc028f75c02fdb710d7c7bcec1f2c6070ef";
2351 };
2352 }
2353
2354 {
2355 name = "buffer_indexof___buffer_indexof_1.1.1.tgz";
2356 path = fetchurl {
2357 name = "buffer_indexof___buffer_indexof_1.1.1.tgz";
2358 url = "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz";
2359 sha1 = "52fabcc6a606d1a00302802648ef68f639da268c";
2360 };
2361 }
2362
2363 {
2364 name = "buffer_writer___buffer_writer_1.0.1.tgz";
2365 path = fetchurl {
2366 name = "buffer_writer___buffer_writer_1.0.1.tgz";
2367 url = "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-1.0.1.tgz";
2368 sha1 = "22a936901e3029afcd7547eb4487ceb697a3bf08";
2369 };
2370 }
2371
2372 {
2373 name = "buffer_xor___buffer_xor_1.0.3.tgz";
2374 path = fetchurl {
2375 name = "buffer_xor___buffer_xor_1.0.3.tgz";
2376 url = "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz";
2377 sha1 = "26e61ed1422fb70dd42e6e36729ed51d855fe8d9";
2378 };
2379 }
2380
2381 {
2382 name = "buffer___buffer_4.9.1.tgz";
2383 path = fetchurl {
2384 name = "buffer___buffer_4.9.1.tgz";
2385 url = "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz";
2386 sha1 = "6d1bb601b07a4efced97094132093027c95bc298";
2387 };
2388 }
2389
2390 {
2391 name = "builtin_modules___builtin_modules_1.1.1.tgz";
2392 path = fetchurl {
2393 name = "builtin_modules___builtin_modules_1.1.1.tgz";
2394 url = "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz";
2395 sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
2396 };
2397 }
2398
2399 {
2400 name = "builtin_status_codes___builtin_status_codes_3.0.0.tgz";
2401 path = fetchurl {
2402 name = "builtin_status_codes___builtin_status_codes_3.0.0.tgz";
2403 url = "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz";
2404 sha1 = "85982878e21b98e1c66425e03d0174788f569ee8";
2405 };
2406 }
2407
2408 {
2409 name = "bytes___bytes_3.0.0.tgz";
2410 path = fetchurl {
2411 name = "bytes___bytes_3.0.0.tgz";
2412 url = "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz";
2413 sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
2414 };
2415 }
2416
2417 {
2418 name = "bytes___bytes_3.1.0.tgz";
2419 path = fetchurl {
2420 name = "bytes___bytes_3.1.0.tgz";
2421 url = "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz";
2422 sha1 = "f6cf7933a360e0588fa9fde85651cdc7f805d1f6";
2423 };
2424 }
2425
2426 {
2427 name = "cacache___cacache_11.3.2.tgz";
2428 path = fetchurl {
2429 name = "cacache___cacache_11.3.2.tgz";
2430 url = "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz";
2431 sha1 = "2d81e308e3d258ca38125b676b98b2ac9ce69bfa";
2432 };
2433 }
2434
2435 {
2436 name = "cache_base___cache_base_1.0.1.tgz";
2437 path = fetchurl {
2438 name = "cache_base___cache_base_1.0.1.tgz";
2439 url = "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz";
2440 sha1 = "0a7f46416831c8b662ee36fe4e7c59d76f666ab2";
2441 };
2442 }
2443
2444 {
2445 name = "caller_callsite___caller_callsite_2.0.0.tgz";
2446 path = fetchurl {
2447 name = "caller_callsite___caller_callsite_2.0.0.tgz";
2448 url = "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz";
2449 sha1 = "847e0fce0a223750a9a027c54b33731ad3154134";
2450 };
2451 }
2452
2453 {
2454 name = "caller_path___caller_path_0.1.0.tgz";
2455 path = fetchurl {
2456 name = "caller_path___caller_path_0.1.0.tgz";
2457 url = "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz";
2458 sha1 = "94085ef63581ecd3daa92444a8fe94e82577751f";
2459 };
2460 }
2461
2462 {
2463 name = "caller_path___caller_path_2.0.0.tgz";
2464 path = fetchurl {
2465 name = "caller_path___caller_path_2.0.0.tgz";
2466 url = "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz";
2467 sha1 = "468f83044e369ab2010fac5f06ceee15bb2cb1f4";
2468 };
2469 }
2470
2471 {
2472 name = "callsites___callsites_0.2.0.tgz";
2473 path = fetchurl {
2474 name = "callsites___callsites_0.2.0.tgz";
2475 url = "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz";
2476 sha1 = "afab96262910a7f33c19a5775825c69f34e350ca";
2477 };
2478 }
2479
2480 {
2481 name = "callsites___callsites_2.0.0.tgz";
2482 path = fetchurl {
2483 name = "callsites___callsites_2.0.0.tgz";
2484 url = "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz";
2485 sha1 = "06eb84f00eea413da86affefacbffb36093b3c50";
2486 };
2487 }
2488
2489 {
2490 name = "callsites___callsites_3.0.0.tgz";
2491 path = fetchurl {
2492 name = "callsites___callsites_3.0.0.tgz";
2493 url = "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz";
2494 sha1 = "fb7eb569b72ad7a45812f93fd9430a3e410b3dd3";
2495 };
2496 }
2497
2498 {
2499 name = "camelcase___camelcase_5.0.0.tgz";
2500 path = fetchurl {
2501 name = "camelcase___camelcase_5.0.0.tgz";
2502 url = "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz";
2503 sha1 = "03295527d58bd3cd4aa75363f35b2e8d97be2f42";
2504 };
2505 }
2506
2507 {
2508 name = "camelcase___camelcase_5.2.0.tgz";
2509 path = fetchurl {
2510 name = "camelcase___camelcase_5.2.0.tgz";
2511 url = "https://registry.yarnpkg.com/camelcase/-/camelcase-5.2.0.tgz";
2512 sha1 = "e7522abda5ed94cc0489e1b8466610e88404cf45";
2513 };
2514 }
2515
2516 {
2517 name = "caniuse_api___caniuse_api_3.0.0.tgz";
2518 path = fetchurl {
2519 name = "caniuse_api___caniuse_api_3.0.0.tgz";
2520 url = "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz";
2521 sha1 = "5e4d90e2274961d46291997df599e3ed008ee4c0";
2522 };
2523 }
2524
2525 {
2526 name = "caniuse_lite___caniuse_lite_1.0.30000974.tgz";
2527 path = fetchurl {
2528 name = "caniuse_lite___caniuse_lite_1.0.30000974.tgz";
2529 url = "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz";
2530 sha1 = "b7afe14ee004e97ce6dc73e3f878290a12928ad8";
2531 };
2532 }
2533
2534 {
2535 name = "capture_exit___capture_exit_1.2.0.tgz";
2536 path = fetchurl {
2537 name = "capture_exit___capture_exit_1.2.0.tgz";
2538 url = "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz";
2539 sha1 = "1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f";
2540 };
2541 }
2542
2543 {
2544 name = "caseless___caseless_0.12.0.tgz";
2545 path = fetchurl {
2546 name = "caseless___caseless_0.12.0.tgz";
2547 url = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz";
2548 sha1 = "1b681c21ff84033c826543090689420d187151dc";
2549 };
2550 }
2551
2552 {
2553 name = "chalk___chalk_1.1.3.tgz";
2554 path = fetchurl {
2555 name = "chalk___chalk_1.1.3.tgz";
2556 url = "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz";
2557 sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
2558 };
2559 }
2560
2561 {
2562 name = "chalk___chalk_2.4.2.tgz";
2563 path = fetchurl {
2564 name = "chalk___chalk_2.4.2.tgz";
2565 url = "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz";
2566 sha1 = "cd42541677a54333cf541a49108c1432b44c9424";
2567 };
2568 }
2569
2570 {
2571 name = "chardet___chardet_0.7.0.tgz";
2572 path = fetchurl {
2573 name = "chardet___chardet_0.7.0.tgz";
2574 url = "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz";
2575 sha1 = "90094849f0937f2eedc2425d0d28a9e5f0cbad9e";
2576 };
2577 }
2578
2579 {
2580 name = "check_types___check_types_7.4.0.tgz";
2581 path = fetchurl {
2582 name = "check_types___check_types_7.4.0.tgz";
2583 url = "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz";
2584 sha1 = "0378ec1b9616ec71f774931a3c6516fad8c152f4";
2585 };
2586 }
2587
2588 {
2589 name = "cheerio___cheerio_1.0.0_rc.2.tgz";
2590 path = fetchurl {
2591 name = "cheerio___cheerio_1.0.0_rc.2.tgz";
2592 url = "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz";
2593 sha1 = "4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db";
2594 };
2595 }
2596
2597 {
2598 name = "chokidar___chokidar_2.1.6.tgz";
2599 path = fetchurl {
2600 name = "chokidar___chokidar_2.1.6.tgz";
2601 url = "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz";
2602 sha1 = "b6cad653a929e244ce8a834244164d241fa954c5";
2603 };
2604 }
2605
2606 {
2607 name = "chownr___chownr_1.1.1.tgz";
2608 path = fetchurl {
2609 name = "chownr___chownr_1.1.1.tgz";
2610 url = "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz";
2611 sha1 = "54726b8b8fff4df053c42187e801fb4412df1494";
2612 };
2613 }
2614
2615 {
2616 name = "chrome_trace_event___chrome_trace_event_1.0.0.tgz";
2617 path = fetchurl {
2618 name = "chrome_trace_event___chrome_trace_event_1.0.0.tgz";
2619 url = "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz";
2620 sha1 = "45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48";
2621 };
2622 }
2623
2624 {
2625 name = "ci_info___ci_info_2.0.0.tgz";
2626 path = fetchurl {
2627 name = "ci_info___ci_info_2.0.0.tgz";
2628 url = "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz";
2629 sha1 = "67a9e964be31a51e15e5010d58e6f12834002f46";
2630 };
2631 }
2632
2633 {
2634 name = "cipher_base___cipher_base_1.0.4.tgz";
2635 path = fetchurl {
2636 name = "cipher_base___cipher_base_1.0.4.tgz";
2637 url = "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz";
2638 sha1 = "8760e4ecc272f4c363532f926d874aae2c1397de";
2639 };
2640 }
2641
2642 {
2643 name = "circular_json___circular_json_0.3.3.tgz";
2644 path = fetchurl {
2645 name = "circular_json___circular_json_0.3.3.tgz";
2646 url = "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz";
2647 sha1 = "815c99ea84f6809529d2f45791bdf82711352d66";
2648 };
2649 }
2650
2651 {
2652 name = "class_utils___class_utils_0.3.6.tgz";
2653 path = fetchurl {
2654 name = "class_utils___class_utils_0.3.6.tgz";
2655 url = "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz";
2656 sha1 = "f93369ae8b9a7ce02fd41faad0ca83033190c463";
2657 };
2658 }
2659
2660 {
2661 name = "classnames___classnames_2.2.6.tgz";
2662 path = fetchurl {
2663 name = "classnames___classnames_2.2.6.tgz";
2664 url = "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz";
2665 sha1 = "43935bffdd291f326dad0a205309b38d00f650ce";
2666 };
2667 }
2668
2669 {
2670 name = "cli_cursor___cli_cursor_1.0.2.tgz";
2671 path = fetchurl {
2672 name = "cli_cursor___cli_cursor_1.0.2.tgz";
2673 url = "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz";
2674 sha1 = "64da3f7d56a54412e59794bd62dc35295e8f2987";
2675 };
2676 }
2677
2678 {
2679 name = "cli_cursor___cli_cursor_2.1.0.tgz";
2680 path = fetchurl {
2681 name = "cli_cursor___cli_cursor_2.1.0.tgz";
2682 url = "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz";
2683 sha1 = "b35dac376479facc3e94747d41d0d0f5238ffcb5";
2684 };
2685 }
2686
2687 {
2688 name = "cli_width___cli_width_2.2.0.tgz";
2689 path = fetchurl {
2690 name = "cli_width___cli_width_2.2.0.tgz";
2691 url = "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz";
2692 sha1 = "ff19ede8a9a5e579324147b0c11f0fbcbabed639";
2693 };
2694 }
2695
2696 {
2697 name = "cliui___cliui_4.1.0.tgz";
2698 path = fetchurl {
2699 name = "cliui___cliui_4.1.0.tgz";
2700 url = "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz";
2701 sha1 = "348422dbe82d800b3022eef4f6ac10bf2e4d1b49";
2702 };
2703 }
2704
2705 {
2706 name = "clone_deep___clone_deep_2.0.2.tgz";
2707 path = fetchurl {
2708 name = "clone_deep___clone_deep_2.0.2.tgz";
2709 url = "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz";
2710 sha1 = "00db3a1e173656730d1188c3d6aced6d7ea97713";
2711 };
2712 }
2713
2714 {
2715 name = "co___co_4.6.0.tgz";
2716 path = fetchurl {
2717 name = "co___co_4.6.0.tgz";
2718 url = "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz";
2719 sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
2720 };
2721 }
2722
2723 {
2724 name = "coa___coa_2.0.2.tgz";
2725 path = fetchurl {
2726 name = "coa___coa_2.0.2.tgz";
2727 url = "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz";
2728 sha1 = "43f6c21151b4ef2bf57187db0d73de229e3e7ec3";
2729 };
2730 }
2731
2732 {
2733 name = "code_point_at___code_point_at_1.1.0.tgz";
2734 path = fetchurl {
2735 name = "code_point_at___code_point_at_1.1.0.tgz";
2736 url = "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz";
2737 sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
2738 };
2739 }
2740
2741 {
2742 name = "collection_visit___collection_visit_1.0.0.tgz";
2743 path = fetchurl {
2744 name = "collection_visit___collection_visit_1.0.0.tgz";
2745 url = "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz";
2746 sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0";
2747 };
2748 }
2749
2750 {
2751 name = "color_convert___color_convert_1.9.3.tgz";
2752 path = fetchurl {
2753 name = "color_convert___color_convert_1.9.3.tgz";
2754 url = "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz";
2755 sha1 = "bb71850690e1f136567de629d2d5471deda4c1e8";
2756 };
2757 }
2758
2759 {
2760 name = "color_name___color_name_1.1.3.tgz";
2761 path = fetchurl {
2762 name = "color_name___color_name_1.1.3.tgz";
2763 url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz";
2764 sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
2765 };
2766 }
2767
2768 {
2769 name = "color_name___color_name_1.1.4.tgz";
2770 path = fetchurl {
2771 name = "color_name___color_name_1.1.4.tgz";
2772 url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz";
2773 sha1 = "c2a09a87acbde69543de6f63fa3995c826c536a2";
2774 };
2775 }
2776
2777 {
2778 name = "color_string___color_string_1.5.3.tgz";
2779 path = fetchurl {
2780 name = "color_string___color_string_1.5.3.tgz";
2781 url = "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz";
2782 sha1 = "c9bbc5f01b58b5492f3d6857459cb6590ce204cc";
2783 };
2784 }
2785
2786 {
2787 name = "color___color_3.1.0.tgz";
2788 path = fetchurl {
2789 name = "color___color_3.1.0.tgz";
2790 url = "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz";
2791 sha1 = "d8e9fb096732875774c84bf922815df0308d0ffc";
2792 };
2793 }
2794
2795 {
2796 name = "colors___colors_1.1.2.tgz";
2797 path = fetchurl {
2798 name = "colors___colors_1.1.2.tgz";
2799 url = "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz";
2800 sha1 = "168a4701756b6a7f51a12ce0c97bfa28c084ed63";
2801 };
2802 }
2803
2804 {
2805 name = "combined_stream___combined_stream_1.0.7.tgz";
2806 path = fetchurl {
2807 name = "combined_stream___combined_stream_1.0.7.tgz";
2808 url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz";
2809 sha1 = "2d1d24317afb8abe95d6d2c0b07b57813539d828";
2810 };
2811 }
2812
2813 {
2814 name = "commander___commander_2.20.0.tgz";
2815 path = fetchurl {
2816 name = "commander___commander_2.20.0.tgz";
2817 url = "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz";
2818 sha1 = "d58bb2b5c1ee8f87b0d340027e9e94e222c5a422";
2819 };
2820 }
2821
2822 {
2823 name = "commander___commander_2.17.1.tgz";
2824 path = fetchurl {
2825 name = "commander___commander_2.17.1.tgz";
2826 url = "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz";
2827 sha1 = "bd77ab7de6de94205ceacc72f1716d29f20a77bf";
2828 };
2829 }
2830
2831 {
2832 name = "commondir___commondir_1.0.1.tgz";
2833 path = fetchurl {
2834 name = "commondir___commondir_1.0.1.tgz";
2835 url = "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz";
2836 sha1 = "ddd800da0c66127393cca5950ea968a3aaf1253b";
2837 };
2838 }
2839
2840 {
2841 name = "component_emitter___component_emitter_1.2.1.tgz";
2842 path = fetchurl {
2843 name = "component_emitter___component_emitter_1.2.1.tgz";
2844 url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz";
2845 sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6";
2846 };
2847 }
2848
2849 {
2850 name = "compressible___compressible_2.0.17.tgz";
2851 path = fetchurl {
2852 name = "compressible___compressible_2.0.17.tgz";
2853 url = "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz";
2854 sha1 = "6e8c108a16ad58384a977f3a482ca20bff2f38c1";
2855 };
2856 }
2857
2858 {
2859 name = "compression_webpack_plugin___compression_webpack_plugin_2.0.0.tgz";
2860 path = fetchurl {
2861 name = "compression_webpack_plugin___compression_webpack_plugin_2.0.0.tgz";
2862 url = "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-2.0.0.tgz";
2863 sha1 = "46476350c1eb27f783dccc79ac2f709baa2cffbc";
2864 };
2865 }
2866
2867 {
2868 name = "compression___compression_1.7.4.tgz";
2869 path = fetchurl {
2870 name = "compression___compression_1.7.4.tgz";
2871 url = "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz";
2872 sha1 = "95523eff170ca57c29a0ca41e6fe131f41e5bb8f";
2873 };
2874 }
2875
2876 {
2877 name = "concat_map___concat_map_0.0.1.tgz";
2878 path = fetchurl {
2879 name = "concat_map___concat_map_0.0.1.tgz";
2880 url = "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz";
2881 sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
2882 };
2883 }
2884
2885 {
2886 name = "concat_stream___concat_stream_1.6.2.tgz";
2887 path = fetchurl {
2888 name = "concat_stream___concat_stream_1.6.2.tgz";
2889 url = "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz";
2890 sha1 = "904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34";
2891 };
2892 }
2893
2894 {
2895 name = "connect_history_api_fallback___connect_history_api_fallback_1.6.0.tgz";
2896 path = fetchurl {
2897 name = "connect_history_api_fallback___connect_history_api_fallback_1.6.0.tgz";
2898 url = "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz";
2899 sha1 = "8b32089359308d111115d81cad3fceab888f97bc";
2900 };
2901 }
2902
2903 {
2904 name = "console_browserify___console_browserify_1.1.0.tgz";
2905 path = fetchurl {
2906 name = "console_browserify___console_browserify_1.1.0.tgz";
2907 url = "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz";
2908 sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10";
2909 };
2910 }
2911
2912 {
2913 name = "console_control_strings___console_control_strings_1.1.0.tgz";
2914 path = fetchurl {
2915 name = "console_control_strings___console_control_strings_1.1.0.tgz";
2916 url = "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz";
2917 sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
2918 };
2919 }
2920
2921 {
2922 name = "constants_browserify___constants_browserify_1.0.0.tgz";
2923 path = fetchurl {
2924 name = "constants_browserify___constants_browserify_1.0.0.tgz";
2925 url = "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz";
2926 sha1 = "c20b96d8c617748aaf1c16021760cd27fcb8cb75";
2927 };
2928 }
2929
2930 {
2931 name = "contains_path___contains_path_0.1.0.tgz";
2932 path = fetchurl {
2933 name = "contains_path___contains_path_0.1.0.tgz";
2934 url = "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz";
2935 sha1 = "fe8cf184ff6670b6baef01a9d4861a5cbec4120a";
2936 };
2937 }
2938
2939 {
2940 name = "content_disposition___content_disposition_0.5.3.tgz";
2941 path = fetchurl {
2942 name = "content_disposition___content_disposition_0.5.3.tgz";
2943 url = "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz";
2944 sha1 = "e130caf7e7279087c5616c2007d0485698984fbd";
2945 };
2946 }
2947
2948 {
2949 name = "content_type___content_type_1.0.4.tgz";
2950 path = fetchurl {
2951 name = "content_type___content_type_1.0.4.tgz";
2952 url = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
2953 sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
2954 };
2955 }
2956
2957 {
2958 name = "convert_source_map___convert_source_map_1.6.0.tgz";
2959 path = fetchurl {
2960 name = "convert_source_map___convert_source_map_1.6.0.tgz";
2961 url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz";
2962 sha1 = "51b537a8c43e0f04dec1993bffcdd504e758ac20";
2963 };
2964 }
2965
2966 {
2967 name = "cookie_signature___cookie_signature_1.0.6.tgz";
2968 path = fetchurl {
2969 name = "cookie_signature___cookie_signature_1.0.6.tgz";
2970 url = "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz";
2971 sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
2972 };
2973 }
2974
2975 {
2976 name = "cookie___cookie_0.4.0.tgz";
2977 path = fetchurl {
2978 name = "cookie___cookie_0.4.0.tgz";
2979 url = "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz";
2980 sha1 = "beb437e7022b3b6d49019d088665303ebe9c14ba";
2981 };
2982 }
2983
2984 {
2985 name = "copy_concurrently___copy_concurrently_1.0.5.tgz";
2986 path = fetchurl {
2987 name = "copy_concurrently___copy_concurrently_1.0.5.tgz";
2988 url = "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz";
2989 sha1 = "92297398cae34937fcafd6ec8139c18051f0b5e0";
2990 };
2991 }
2992
2993 {
2994 name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
2995 path = fetchurl {
2996 name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
2997 url = "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz";
2998 sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d";
2999 };
3000 }
3001
3002 {
3003 name = "core_js_compat___core_js_compat_3.1.3.tgz";
3004 path = fetchurl {
3005 name = "core_js_compat___core_js_compat_3.1.3.tgz";
3006 url = "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.3.tgz";
3007 sha1 = "0cc3ba4c7f62928c2837e1cffbe8dc78b4f1ae14";
3008 };
3009 }
3010
3011 {
3012 name = "core_js_pure___core_js_pure_3.1.3.tgz";
3013 path = fetchurl {
3014 name = "core_js_pure___core_js_pure_3.1.3.tgz";
3015 url = "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.3.tgz";
3016 sha1 = "4c90752d5b9471f641514f3728f51c1e0783d0b5";
3017 };
3018 }
3019
3020 {
3021 name = "core_js___core_js_1.2.7.tgz";
3022 path = fetchurl {
3023 name = "core_js___core_js_1.2.7.tgz";
3024 url = "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz";
3025 sha1 = "652294c14651db28fa93bd2d5ff2983a4f08c636";
3026 };
3027 }
3028
3029 {
3030 name = "core_js___core_js_2.6.1.tgz";
3031 path = fetchurl {
3032 name = "core_js___core_js_2.6.1.tgz";
3033 url = "https://registry.yarnpkg.com/core-js/-/core-js-2.6.1.tgz";
3034 sha1 = "87416ae817de957a3f249b3b5ca475d4aaed6042";
3035 };
3036 }
3037
3038 {
3039 name = "core_util_is___core_util_is_1.0.2.tgz";
3040 path = fetchurl {
3041 name = "core_util_is___core_util_is_1.0.2.tgz";
3042 url = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz";
3043 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
3044 };
3045 }
3046
3047 {
3048 name = "cosmiconfig___cosmiconfig_4.0.0.tgz";
3049 path = fetchurl {
3050 name = "cosmiconfig___cosmiconfig_4.0.0.tgz";
3051 url = "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz";
3052 sha1 = "760391549580bbd2df1e562bc177b13c290972dc";
3053 };
3054 }
3055
3056 {
3057 name = "cosmiconfig___cosmiconfig_5.0.7.tgz";
3058 path = fetchurl {
3059 name = "cosmiconfig___cosmiconfig_5.0.7.tgz";
3060 url = "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz";
3061 sha1 = "39826b292ee0d78eda137dfa3173bd1c21a43b04";
3062 };
3063 }
3064
3065 {
3066 name = "cosmiconfig___cosmiconfig_5.2.1.tgz";
3067 path = fetchurl {
3068 name = "cosmiconfig___cosmiconfig_5.2.1.tgz";
3069 url = "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz";
3070 sha1 = "040f726809c591e77a17c0a3626ca45b4f168b1a";
3071 };
3072 }
3073
3074 {
3075 name = "create_ecdh___create_ecdh_4.0.3.tgz";
3076 path = fetchurl {
3077 name = "create_ecdh___create_ecdh_4.0.3.tgz";
3078 url = "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz";
3079 sha1 = "c9111b6f33045c4697f144787f9254cdc77c45ff";
3080 };
3081 }
3082
3083 {
3084 name = "create_emotion___create_emotion_9.2.12.tgz";
3085 path = fetchurl {
3086 name = "create_emotion___create_emotion_9.2.12.tgz";
3087 url = "https://registry.yarnpkg.com/create-emotion/-/create-emotion-9.2.12.tgz";
3088 sha1 = "0fc8e7f92c4f8bb924b0fef6781f66b1d07cb26f";
3089 };
3090 }
3091
3092 {
3093 name = "create_hash___create_hash_1.2.0.tgz";
3094 path = fetchurl {
3095 name = "create_hash___create_hash_1.2.0.tgz";
3096 url = "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz";
3097 sha1 = "889078af11a63756bcfb59bd221996be3a9ef196";
3098 };
3099 }
3100
3101 {
3102 name = "create_hmac___create_hmac_1.1.7.tgz";
3103 path = fetchurl {
3104 name = "create_hmac___create_hmac_1.1.7.tgz";
3105 url = "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz";
3106 sha1 = "69170c78b3ab957147b2b8b04572e47ead2243ff";
3107 };
3108 }
3109
3110 {
3111 name = "cross_env___cross_env_5.2.0.tgz";
3112 path = fetchurl {
3113 name = "cross_env___cross_env_5.2.0.tgz";
3114 url = "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz";
3115 sha1 = "6ecd4c015d5773e614039ee529076669b9d126f2";
3116 };
3117 }
3118
3119 {
3120 name = "cross_spawn___cross_spawn_6.0.5.tgz";
3121 path = fetchurl {
3122 name = "cross_spawn___cross_spawn_6.0.5.tgz";
3123 url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz";
3124 sha1 = "4a5ec7c64dfae22c3a14124dbacdee846d80cbc4";
3125 };
3126 }
3127
3128 {
3129 name = "crypto_browserify___crypto_browserify_3.12.0.tgz";
3130 path = fetchurl {
3131 name = "crypto_browserify___crypto_browserify_3.12.0.tgz";
3132 url = "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz";
3133 sha1 = "396cf9f3137f03e4b8e532c58f698254e00f80ec";
3134 };
3135 }
3136
3137 {
3138 name = "css_color_names___css_color_names_0.0.4.tgz";
3139 path = fetchurl {
3140 name = "css_color_names___css_color_names_0.0.4.tgz";
3141 url = "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz";
3142 sha1 = "808adc2e79cf84738069b646cb20ec27beb629e0";
3143 };
3144 }
3145
3146 {
3147 name = "css_declaration_sorter___css_declaration_sorter_4.0.1.tgz";
3148 path = fetchurl {
3149 name = "css_declaration_sorter___css_declaration_sorter_4.0.1.tgz";
3150 url = "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz";
3151 sha1 = "c198940f63a76d7e36c1e71018b001721054cb22";
3152 };
3153 }
3154
3155 {
3156 name = "css_font_size_keywords___css_font_size_keywords_1.0.0.tgz";
3157 path = fetchurl {
3158 name = "css_font_size_keywords___css_font_size_keywords_1.0.0.tgz";
3159 url = "https://registry.yarnpkg.com/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz";
3160 sha1 = "854875ace9aca6a8d2ee0d345a44aae9bb6db6cb";
3161 };
3162 }
3163
3164 {
3165 name = "css_font_stretch_keywords___css_font_stretch_keywords_1.0.1.tgz";
3166 path = fetchurl {
3167 name = "css_font_stretch_keywords___css_font_stretch_keywords_1.0.1.tgz";
3168 url = "https://registry.yarnpkg.com/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz";
3169 sha1 = "50cee9b9ba031fb5c952d4723139f1e107b54b10";
3170 };
3171 }
3172
3173 {
3174 name = "css_font_style_keywords___css_font_style_keywords_1.0.1.tgz";
3175 path = fetchurl {
3176 name = "css_font_style_keywords___css_font_style_keywords_1.0.1.tgz";
3177 url = "https://registry.yarnpkg.com/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz";
3178 sha1 = "5c3532813f63b4a1de954d13cea86ab4333409e4";
3179 };
3180 }
3181
3182 {
3183 name = "css_font_weight_keywords___css_font_weight_keywords_1.0.0.tgz";
3184 path = fetchurl {
3185 name = "css_font_weight_keywords___css_font_weight_keywords_1.0.0.tgz";
3186 url = "https://registry.yarnpkg.com/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz";
3187 sha1 = "9bc04671ac85bc724b574ef5d3ac96b0d604fd97";
3188 };
3189 }
3190
3191 {
3192 name = "css_global_keywords___css_global_keywords_1.0.1.tgz";
3193 path = fetchurl {
3194 name = "css_global_keywords___css_global_keywords_1.0.1.tgz";
3195 url = "https://registry.yarnpkg.com/css-global-keywords/-/css-global-keywords-1.0.1.tgz";
3196 sha1 = "72a9aea72796d019b1d2a3252de4e5aaa37e4a69";
3197 };
3198 }
3199
3200 {
3201 name = "css_list_helpers___css_list_helpers_1.0.1.tgz";
3202 path = fetchurl {
3203 name = "css_list_helpers___css_list_helpers_1.0.1.tgz";
3204 url = "https://registry.yarnpkg.com/css-list-helpers/-/css-list-helpers-1.0.1.tgz";
3205 sha1 = "fff57192202db83240c41686f919e449a7024f7d";
3206 };
3207 }
3208
3209 {
3210 name = "css_loader___css_loader_2.1.1.tgz";
3211 path = fetchurl {
3212 name = "css_loader___css_loader_2.1.1.tgz";
3213 url = "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz";
3214 sha1 = "d8254f72e412bb2238bb44dd674ffbef497333ea";
3215 };
3216 }
3217
3218 {
3219 name = "css_select_base_adapter___css_select_base_adapter_0.1.1.tgz";
3220 path = fetchurl {
3221 name = "css_select_base_adapter___css_select_base_adapter_0.1.1.tgz";
3222 url = "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz";
3223 sha1 = "3b2ff4972cc362ab88561507a95408a1432135d7";
3224 };
3225 }
3226
3227 {
3228 name = "css_select___css_select_2.0.2.tgz";
3229 path = fetchurl {
3230 name = "css_select___css_select_2.0.2.tgz";
3231 url = "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz";
3232 sha1 = "ab4386cec9e1f668855564b17c3733b43b2a5ede";
3233 };
3234 }
3235
3236 {
3237 name = "css_select___css_select_1.2.0.tgz";
3238 path = fetchurl {
3239 name = "css_select___css_select_1.2.0.tgz";
3240 url = "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz";
3241 sha1 = "2b3a110539c5355f1cd8d314623e870b121ec858";
3242 };
3243 }
3244
3245 {
3246 name = "css_system_font_keywords___css_system_font_keywords_1.0.0.tgz";
3247 path = fetchurl {
3248 name = "css_system_font_keywords___css_system_font_keywords_1.0.0.tgz";
3249 url = "https://registry.yarnpkg.com/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz";
3250 sha1 = "85c6f086aba4eb32c571a3086affc434b84823ed";
3251 };
3252 }
3253
3254 {
3255 name = "css_tree___css_tree_1.0.0_alpha.28.tgz";
3256 path = fetchurl {
3257 name = "css_tree___css_tree_1.0.0_alpha.28.tgz";
3258 url = "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz";
3259 sha1 = "8e8968190d886c9477bc8d61e96f61af3f7ffa7f";
3260 };
3261 }
3262
3263 {
3264 name = "css_tree___css_tree_1.0.0_alpha.29.tgz";
3265 path = fetchurl {
3266 name = "css_tree___css_tree_1.0.0_alpha.29.tgz";
3267 url = "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz";
3268 sha1 = "3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39";
3269 };
3270 }
3271
3272 {
3273 name = "css_unit_converter___css_unit_converter_1.1.1.tgz";
3274 path = fetchurl {
3275 name = "css_unit_converter___css_unit_converter_1.1.1.tgz";
3276 url = "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz";
3277 sha1 = "d9b9281adcfd8ced935bdbaba83786897f64e996";
3278 };
3279 }
3280
3281 {
3282 name = "css_url_regex___css_url_regex_1.1.0.tgz";
3283 path = fetchurl {
3284 name = "css_url_regex___css_url_regex_1.1.0.tgz";
3285 url = "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz";
3286 sha1 = "83834230cc9f74c457de59eebd1543feeb83b7ec";
3287 };
3288 }
3289
3290 {
3291 name = "css_what___css_what_2.1.2.tgz";
3292 path = fetchurl {
3293 name = "css_what___css_what_2.1.2.tgz";
3294 url = "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz";
3295 sha1 = "c0876d9d0480927d7d4920dcd72af3595649554d";
3296 };
3297 }
3298
3299 {
3300 name = "cssesc___cssesc_2.0.0.tgz";
3301 path = fetchurl {
3302 name = "cssesc___cssesc_2.0.0.tgz";
3303 url = "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz";
3304 sha1 = "3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703";
3305 };
3306 }
3307
3308 {
3309 name = "cssesc___cssesc_3.0.0.tgz";
3310 path = fetchurl {
3311 name = "cssesc___cssesc_3.0.0.tgz";
3312 url = "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz";
3313 sha1 = "37741919903b868565e1c09ea747445cd18983ee";
3314 };
3315 }
3316
3317 {
3318 name = "cssnano_preset_default___cssnano_preset_default_4.0.7.tgz";
3319 path = fetchurl {
3320 name = "cssnano_preset_default___cssnano_preset_default_4.0.7.tgz";
3321 url = "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz";
3322 sha1 = "51ec662ccfca0f88b396dcd9679cdb931be17f76";
3323 };
3324 }
3325
3326 {
3327 name = "cssnano_util_get_arguments___cssnano_util_get_arguments_4.0.0.tgz";
3328 path = fetchurl {
3329 name = "cssnano_util_get_arguments___cssnano_util_get_arguments_4.0.0.tgz";
3330 url = "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz";
3331 sha1 = "ed3a08299f21d75741b20f3b81f194ed49cc150f";
3332 };
3333 }
3334
3335 {
3336 name = "cssnano_util_get_match___cssnano_util_get_match_4.0.0.tgz";
3337 path = fetchurl {
3338 name = "cssnano_util_get_match___cssnano_util_get_match_4.0.0.tgz";
3339 url = "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz";
3340 sha1 = "c0e4ca07f5386bb17ec5e52250b4f5961365156d";
3341 };
3342 }
3343
3344 {
3345 name = "cssnano_util_raw_cache___cssnano_util_raw_cache_4.0.1.tgz";
3346 path = fetchurl {
3347 name = "cssnano_util_raw_cache___cssnano_util_raw_cache_4.0.1.tgz";
3348 url = "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz";
3349 sha1 = "b26d5fd5f72a11dfe7a7846fb4c67260f96bf282";
3350 };
3351 }
3352
3353 {
3354 name = "cssnano_util_same_parent___cssnano_util_same_parent_4.0.1.tgz";
3355 path = fetchurl {
3356 name = "cssnano_util_same_parent___cssnano_util_same_parent_4.0.1.tgz";
3357 url = "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz";
3358 sha1 = "574082fb2859d2db433855835d9a8456ea18bbf3";
3359 };
3360 }
3361
3362 {
3363 name = "cssnano___cssnano_4.1.10.tgz";
3364 path = fetchurl {
3365 name = "cssnano___cssnano_4.1.10.tgz";
3366 url = "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz";
3367 sha1 = "0ac41f0b13d13d465487e111b778d42da631b8b2";
3368 };
3369 }
3370
3371 {
3372 name = "csso___csso_3.5.1.tgz";
3373 path = fetchurl {
3374 name = "csso___csso_3.5.1.tgz";
3375 url = "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz";
3376 sha1 = "7b9eb8be61628973c1b261e169d2f024008e758b";
3377 };
3378 }
3379
3380 {
3381 name = "cssom___cssom_0.3.4.tgz";
3382 path = fetchurl {
3383 name = "cssom___cssom_0.3.4.tgz";
3384 url = "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz";
3385 sha1 = "8cd52e8a3acfd68d3aed38ee0a640177d2f9d797";
3386 };
3387 }
3388
3389 {
3390 name = "cssstyle___cssstyle_1.1.1.tgz";
3391 path = fetchurl {
3392 name = "cssstyle___cssstyle_1.1.1.tgz";
3393 url = "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz";
3394 sha1 = "18b038a9c44d65f7a8e428a653b9f6fe42faf5fb";
3395 };
3396 }
3397
3398 {
3399 name = "csstype___csstype_2.6.0.tgz";
3400 path = fetchurl {
3401 name = "csstype___csstype_2.6.0.tgz";
3402 url = "https://registry.yarnpkg.com/csstype/-/csstype-2.6.0.tgz";
3403 sha1 = "6cf7b2fa7fc32aab3d746802c244d4eda71371a2";
3404 };
3405 }
3406
3407 {
3408 name = "csstype___csstype_2.6.5.tgz";
3409 path = fetchurl {
3410 name = "csstype___csstype_2.6.5.tgz";
3411 url = "https://registry.yarnpkg.com/csstype/-/csstype-2.6.5.tgz";
3412 sha1 = "1cd1dff742ebf4d7c991470ae71e12bb6751e034";
3413 };
3414 }
3415
3416 {
3417 name = "cyclist___cyclist_0.2.2.tgz";
3418 path = fetchurl {
3419 name = "cyclist___cyclist_0.2.2.tgz";
3420 url = "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz";
3421 sha1 = "1b33792e11e914a2fd6d6ed6447464444e5fa640";
3422 };
3423 }
3424
3425 {
3426 name = "d___d_1.0.0.tgz";
3427 path = fetchurl {
3428 name = "d___d_1.0.0.tgz";
3429 url = "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz";
3430 sha1 = "754bb5bfe55451da69a58b94d45f4c5b0462d58f";
3431 };
3432 }
3433
3434 {
3435 name = "damerau_levenshtein___damerau_levenshtein_1.0.4.tgz";
3436 path = fetchurl {
3437 name = "damerau_levenshtein___damerau_levenshtein_1.0.4.tgz";
3438 url = "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz";
3439 sha1 = "03191c432cb6eea168bb77f3a55ffdccb8978514";
3440 };
3441 }
3442
3443 {
3444 name = "dashdash___dashdash_1.14.1.tgz";
3445 path = fetchurl {
3446 name = "dashdash___dashdash_1.14.1.tgz";
3447 url = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz";
3448 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
3449 };
3450 }
3451
3452 {
3453 name = "data_urls___data_urls_1.1.0.tgz";
3454 path = fetchurl {
3455 name = "data_urls___data_urls_1.1.0.tgz";
3456 url = "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz";
3457 sha1 = "15ee0582baa5e22bb59c77140da8f9c76963bbfe";
3458 };
3459 }
3460
3461 {
3462 name = "date_now___date_now_0.1.4.tgz";
3463 path = fetchurl {
3464 name = "date_now___date_now_0.1.4.tgz";
3465 url = "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz";
3466 sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b";
3467 };
3468 }
3469
3470 {
3471 name = "debug___debug_2.6.9.tgz";
3472 path = fetchurl {
3473 name = "debug___debug_2.6.9.tgz";
3474 url = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
3475 sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
3476 };
3477 }
3478
3479 {
3480 name = "debug___debug_3.1.0.tgz";
3481 path = fetchurl {
3482 name = "debug___debug_3.1.0.tgz";
3483 url = "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz";
3484 sha1 = "5bb5a0672628b64149566ba16819e61518c67261";
3485 };
3486 }
3487
3488 {
3489 name = "debug___debug_3.2.6.tgz";
3490 path = fetchurl {
3491 name = "debug___debug_3.2.6.tgz";
3492 url = "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz";
3493 sha1 = "e83d17de16d8a7efb7717edbe5fb10135eee629b";
3494 };
3495 }
3496
3497 {
3498 name = "debug___debug_4.1.1.tgz";
3499 path = fetchurl {
3500 name = "debug___debug_4.1.1.tgz";
3501 url = "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz";
3502 sha1 = "3b72260255109c6b589cee050f1d516139664791";
3503 };
3504 }
3505
3506 {
3507 name = "decamelize___decamelize_1.2.0.tgz";
3508 path = fetchurl {
3509 name = "decamelize___decamelize_1.2.0.tgz";
3510 url = "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz";
3511 sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
3512 };
3513 }
3514
3515 {
3516 name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
3517 path = fetchurl {
3518 name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
3519 url = "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
3520 sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
3521 };
3522 }
3523
3524 {
3525 name = "deep_equal___deep_equal_1.0.1.tgz";
3526 path = fetchurl {
3527 name = "deep_equal___deep_equal_1.0.1.tgz";
3528 url = "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz";
3529 sha1 = "f5d260292b660e084eff4cdbc9f08ad3247448b5";
3530 };
3531 }
3532
3533 {
3534 name = "deep_extend___deep_extend_0.5.1.tgz";
3535 path = fetchurl {
3536 name = "deep_extend___deep_extend_0.5.1.tgz";
3537 url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz";
3538 sha1 = "b894a9dd90d3023fbf1c55a394fb858eb2066f1f";
3539 };
3540 }
3541
3542 {
3543 name = "deep_extend___deep_extend_0.6.0.tgz";
3544 path = fetchurl {
3545 name = "deep_extend___deep_extend_0.6.0.tgz";
3546 url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz";
3547 sha1 = "c4fa7c95404a17a9c3e8ca7e1537312b736330ac";
3548 };
3549 }
3550
3551 {
3552 name = "deep_is___deep_is_0.1.3.tgz";
3553 path = fetchurl {
3554 name = "deep_is___deep_is_0.1.3.tgz";
3555 url = "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz";
3556 sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
3557 };
3558 }
3559
3560 {
3561 name = "default_gateway___default_gateway_4.2.0.tgz";
3562 path = fetchurl {
3563 name = "default_gateway___default_gateway_4.2.0.tgz";
3564 url = "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz";
3565 sha1 = "167104c7500c2115f6dd69b0a536bb8ed720552b";
3566 };
3567 }
3568
3569 {
3570 name = "define_properties___define_properties_1.1.3.tgz";
3571 path = fetchurl {
3572 name = "define_properties___define_properties_1.1.3.tgz";
3573 url = "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz";
3574 sha1 = "cf88da6cbee26fe6db7094f61d870cbd84cee9f1";
3575 };
3576 }
3577
3578 {
3579 name = "define_property___define_property_0.2.5.tgz";
3580 path = fetchurl {
3581 name = "define_property___define_property_0.2.5.tgz";
3582 url = "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz";
3583 sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116";
3584 };
3585 }
3586
3587 {
3588 name = "define_property___define_property_1.0.0.tgz";
3589 path = fetchurl {
3590 name = "define_property___define_property_1.0.0.tgz";
3591 url = "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz";
3592 sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6";
3593 };
3594 }
3595
3596 {
3597 name = "define_property___define_property_2.0.2.tgz";
3598 path = fetchurl {
3599 name = "define_property___define_property_2.0.2.tgz";
3600 url = "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz";
3601 sha1 = "d459689e8d654ba77e02a817f8710d702cb16e9d";
3602 };
3603 }
3604
3605 {
3606 name = "del___del_4.1.1.tgz";
3607 path = fetchurl {
3608 name = "del___del_4.1.1.tgz";
3609 url = "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz";
3610 sha1 = "9e8f117222ea44a31ff3a156c049b99052a9f0b4";
3611 };
3612 }
3613
3614 {
3615 name = "delayed_stream___delayed_stream_1.0.0.tgz";
3616 path = fetchurl {
3617 name = "delayed_stream___delayed_stream_1.0.0.tgz";
3618 url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz";
3619 sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
3620 };
3621 }
3622
3623 {
3624 name = "delegates___delegates_1.0.0.tgz";
3625 path = fetchurl {
3626 name = "delegates___delegates_1.0.0.tgz";
3627 url = "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz";
3628 sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
3629 };
3630 }
3631
3632 {
3633 name = "depd___depd_1.1.2.tgz";
3634 path = fetchurl {
3635 name = "depd___depd_1.1.2.tgz";
3636 url = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz";
3637 sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
3638 };
3639 }
3640
3641 {
3642 name = "des.js___des.js_1.0.0.tgz";
3643 path = fetchurl {
3644 name = "des.js___des.js_1.0.0.tgz";
3645 url = "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz";
3646 sha1 = "c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc";
3647 };
3648 }
3649
3650 {
3651 name = "destroy___destroy_1.0.4.tgz";
3652 path = fetchurl {
3653 name = "destroy___destroy_1.0.4.tgz";
3654 url = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz";
3655 sha1 = "978857442c44749e4206613e37946205826abd80";
3656 };
3657 }
3658
3659 {
3660 name = "detect_file___detect_file_1.0.0.tgz";
3661 path = fetchurl {
3662 name = "detect_file___detect_file_1.0.0.tgz";
3663 url = "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz";
3664 sha1 = "f0d66d03672a825cb1b73bdb3fe62310c8e552b7";
3665 };
3666 }
3667
3668 {
3669 name = "detect_libc___detect_libc_1.0.3.tgz";
3670 path = fetchurl {
3671 name = "detect_libc___detect_libc_1.0.3.tgz";
3672 url = "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz";
3673 sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
3674 };
3675 }
3676
3677 {
3678 name = "detect_newline___detect_newline_2.1.0.tgz";
3679 path = fetchurl {
3680 name = "detect_newline___detect_newline_2.1.0.tgz";
3681 url = "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz";
3682 sha1 = "f41f1c10be4b00e87b5f13da680759f2c5bfd3e2";
3683 };
3684 }
3685
3686 {
3687 name = "detect_node___detect_node_2.0.4.tgz";
3688 path = fetchurl {
3689 name = "detect_node___detect_node_2.0.4.tgz";
3690 url = "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz";
3691 sha1 = "014ee8f8f669c5c58023da64b8179c083a28c46c";
3692 };
3693 }
3694
3695 {
3696 name = "detect_passive_events___detect_passive_events_1.0.4.tgz";
3697 path = fetchurl {
3698 name = "detect_passive_events___detect_passive_events_1.0.4.tgz";
3699 url = "https://registry.yarnpkg.com/detect-passive-events/-/detect-passive-events-1.0.4.tgz";
3700 sha1 = "6ed477e6e5bceb79079735dcd357789d37f9a91a";
3701 };
3702 }
3703
3704 {
3705 name = "diff_sequences___diff_sequences_24.3.0.tgz";
3706 path = fetchurl {
3707 name = "diff_sequences___diff_sequences_24.3.0.tgz";
3708 url = "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz";
3709 sha1 = "0f20e8a1df1abddaf4d9c226680952e64118b975";
3710 };
3711 }
3712
3713 {
3714 name = "diffie_hellman___diffie_hellman_5.0.3.tgz";
3715 path = fetchurl {
3716 name = "diffie_hellman___diffie_hellman_5.0.3.tgz";
3717 url = "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz";
3718 sha1 = "40e8ee98f55a2149607146921c63e1ae5f3d2875";
3719 };
3720 }
3721
3722 {
3723 name = "discontinuous_range___discontinuous_range_1.0.0.tgz";
3724 path = fetchurl {
3725 name = "discontinuous_range___discontinuous_range_1.0.0.tgz";
3726 url = "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz";
3727 sha1 = "e38331f0844bba49b9a9cb71c771585aab1bc65a";
3728 };
3729 }
3730
3731 {
3732 name = "dns_equal___dns_equal_1.0.0.tgz";
3733 path = fetchurl {
3734 name = "dns_equal___dns_equal_1.0.0.tgz";
3735 url = "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz";
3736 sha1 = "b39e7f1da6eb0a75ba9c17324b34753c47e0654d";
3737 };
3738 }
3739
3740 {
3741 name = "dns_packet___dns_packet_1.3.1.tgz";
3742 path = fetchurl {
3743 name = "dns_packet___dns_packet_1.3.1.tgz";
3744 url = "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz";
3745 sha1 = "12aa426981075be500b910eedcd0b47dd7deda5a";
3746 };
3747 }
3748
3749 {
3750 name = "dns_txt___dns_txt_2.0.2.tgz";
3751 path = fetchurl {
3752 name = "dns_txt___dns_txt_2.0.2.tgz";
3753 url = "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz";
3754 sha1 = "b91d806f5d27188e4ab3e7d107d881a1cc4642b6";
3755 };
3756 }
3757
3758 {
3759 name = "doctrine___doctrine_1.5.0.tgz";
3760 path = fetchurl {
3761 name = "doctrine___doctrine_1.5.0.tgz";
3762 url = "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz";
3763 sha1 = "379dce730f6166f76cefa4e6707a159b02c5a6fa";
3764 };
3765 }
3766
3767 {
3768 name = "doctrine___doctrine_2.1.0.tgz";
3769 path = fetchurl {
3770 name = "doctrine___doctrine_2.1.0.tgz";
3771 url = "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz";
3772 sha1 = "5cd01fc101621b42c4cd7f5d1a66243716d3f39d";
3773 };
3774 }
3775
3776 {
3777 name = "dom_helpers___dom_helpers_3.4.0.tgz";
3778 path = fetchurl {
3779 name = "dom_helpers___dom_helpers_3.4.0.tgz";
3780 url = "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz";
3781 sha1 = "e9b369700f959f62ecde5a6babde4bccd9169af8";
3782 };
3783 }
3784
3785 {
3786 name = "dom_serializer___dom_serializer_0.1.0.tgz";
3787 path = fetchurl {
3788 name = "dom_serializer___dom_serializer_0.1.0.tgz";
3789 url = "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz";
3790 sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82";
3791 };
3792 }
3793
3794 {
3795 name = "domain_browser___domain_browser_1.2.0.tgz";
3796 path = fetchurl {
3797 name = "domain_browser___domain_browser_1.2.0.tgz";
3798 url = "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz";
3799 sha1 = "3d31f50191a6749dd1375a7f522e823d42e54eda";
3800 };
3801 }
3802
3803 {
3804 name = "domelementtype___domelementtype_1.3.1.tgz";
3805 path = fetchurl {
3806 name = "domelementtype___domelementtype_1.3.1.tgz";
3807 url = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz";
3808 sha1 = "d048c44b37b0d10a7f2a3d5fee3f4333d790481f";
3809 };
3810 }
3811
3812 {
3813 name = "domelementtype___domelementtype_1.1.3.tgz";
3814 path = fetchurl {
3815 name = "domelementtype___domelementtype_1.1.3.tgz";
3816 url = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz";
3817 sha1 = "bd28773e2642881aec51544924299c5cd822185b";
3818 };
3819 }
3820
3821 {
3822 name = "domexception___domexception_1.0.1.tgz";
3823 path = fetchurl {
3824 name = "domexception___domexception_1.0.1.tgz";
3825 url = "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz";
3826 sha1 = "937442644ca6a31261ef36e3ec677fe805582c90";
3827 };
3828 }
3829
3830 {
3831 name = "domhandler___domhandler_2.4.2.tgz";
3832 path = fetchurl {
3833 name = "domhandler___domhandler_2.4.2.tgz";
3834 url = "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz";
3835 sha1 = "8805097e933d65e85546f726d60f5eb88b44f803";
3836 };
3837 }
3838
3839 {
3840 name = "domutils___domutils_1.5.1.tgz";
3841 path = fetchurl {
3842 name = "domutils___domutils_1.5.1.tgz";
3843 url = "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz";
3844 sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
3845 };
3846 }
3847
3848 {
3849 name = "domutils___domutils_1.7.0.tgz";
3850 path = fetchurl {
3851 name = "domutils___domutils_1.7.0.tgz";
3852 url = "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz";
3853 sha1 = "56ea341e834e06e6748af7a1cb25da67ea9f8c2a";
3854 };
3855 }
3856
3857 {
3858 name = "dot_prop___dot_prop_4.2.0.tgz";
3859 path = fetchurl {
3860 name = "dot_prop___dot_prop_4.2.0.tgz";
3861 url = "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz";
3862 sha1 = "1f19e0c2e1aa0e32797c49799f2837ac6af69c57";
3863 };
3864 }
3865
3866 {
3867 name = "dotenv___dotenv_8.0.0.tgz";
3868 path = fetchurl {
3869 name = "dotenv___dotenv_8.0.0.tgz";
3870 url = "https://registry.yarnpkg.com/dotenv/-/dotenv-8.0.0.tgz";
3871 sha1 = "ed310c165b4e8a97bb745b0a9d99c31bda566440";
3872 };
3873 }
3874
3875 {
3876 name = "double_ended_queue___double_ended_queue_2.1.0_0.tgz";
3877 path = fetchurl {
3878 name = "double_ended_queue___double_ended_queue_2.1.0_0.tgz";
3879 url = "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz";
3880 sha1 = "103d3527fd31528f40188130c841efdd78264e5c";
3881 };
3882 }
3883
3884 {
3885 name = "duplexer___duplexer_0.1.1.tgz";
3886 path = fetchurl {
3887 name = "duplexer___duplexer_0.1.1.tgz";
3888 url = "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz";
3889 sha1 = "ace6ff808c1ce66b57d1ebf97977acb02334cfc1";
3890 };
3891 }
3892
3893 {
3894 name = "duplexify___duplexify_3.6.1.tgz";
3895 path = fetchurl {
3896 name = "duplexify___duplexify_3.6.1.tgz";
3897 url = "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz";
3898 sha1 = "b1a7a29c4abfd639585efaecce80d666b1e34125";
3899 };
3900 }
3901
3902 {
3903 name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
3904 path = fetchurl {
3905 name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
3906 url = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
3907 sha1 = "3a83a904e54353287874c564b7549386849a98c9";
3908 };
3909 }
3910
3911 {
3912 name = "ee_first___ee_first_1.1.1.tgz";
3913 path = fetchurl {
3914 name = "ee_first___ee_first_1.1.1.tgz";
3915 url = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz";
3916 sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
3917 };
3918 }
3919
3920 {
3921 name = "ejs___ejs_2.6.1.tgz";
3922 path = fetchurl {
3923 name = "ejs___ejs_2.6.1.tgz";
3924 url = "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz";
3925 sha1 = "498ec0d495655abc6f23cd61868d926464071aa0";
3926 };
3927 }
3928
3929 {
3930 name = "electron_to_chromium___electron_to_chromium_1.3.163.tgz";
3931 path = fetchurl {
3932 name = "electron_to_chromium___electron_to_chromium_1.3.163.tgz";
3933 url = "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.163.tgz";
3934 sha1 = "7fc3d637f5d8fa4ca4a052cad0de7675bd98b911";
3935 };
3936 }
3937
3938 {
3939 name = "elliptic___elliptic_6.4.1.tgz";
3940 path = fetchurl {
3941 name = "elliptic___elliptic_6.4.1.tgz";
3942 url = "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz";
3943 sha1 = "c2d0b7776911b86722c632c3c06c60f2f819939a";
3944 };
3945 }
3946
3947 {
3948 name = "https___codeload.github.com_Gargron_emoji_mart_tar.gz_ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9";
3949 path = fetchurl {
3950 name = "https___codeload.github.com_Gargron_emoji_mart_tar.gz_ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9";
3951 url = "https://codeload.github.com/Gargron/emoji-mart/tar.gz/ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9";
3952 sha1 = "4255dc41fa7df9c3a02c1595f058e248bc37b784";
3953 };
3954 }
3955
3956 {
3957 name = "emoji_regex___emoji_regex_7.0.3.tgz";
3958 path = fetchurl {
3959 name = "emoji_regex___emoji_regex_7.0.3.tgz";
3960 url = "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz";
3961 sha1 = "933a04052860c85e83c122479c4748a8e4c72156";
3962 };
3963 }
3964
3965 {
3966 name = "emojis_list___emojis_list_2.1.0.tgz";
3967 path = fetchurl {
3968 name = "emojis_list___emojis_list_2.1.0.tgz";
3969 url = "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz";
3970 sha1 = "4daa4d9db00f9819880c79fa457ae5b09a1fd389";
3971 };
3972 }
3973
3974 {
3975 name = "emotion___emotion_9.2.12.tgz";
3976 path = fetchurl {
3977 name = "emotion___emotion_9.2.12.tgz";
3978 url = "https://registry.yarnpkg.com/emotion/-/emotion-9.2.12.tgz";
3979 sha1 = "53925aaa005614e65c6e43db8243c843574d1ea9";
3980 };
3981 }
3982
3983 {
3984 name = "encodeurl___encodeurl_1.0.2.tgz";
3985 path = fetchurl {
3986 name = "encodeurl___encodeurl_1.0.2.tgz";
3987 url = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
3988 sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
3989 };
3990 }
3991
3992 {
3993 name = "encoding___encoding_0.1.12.tgz";
3994 path = fetchurl {
3995 name = "encoding___encoding_0.1.12.tgz";
3996 url = "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz";
3997 sha1 = "538b66f3ee62cd1ab51ec323829d1f9480c74beb";
3998 };
3999 }
4000
4001 {
4002 name = "end_of_stream___end_of_stream_1.4.1.tgz";
4003 path = fetchurl {
4004 name = "end_of_stream___end_of_stream_1.4.1.tgz";
4005 url = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz";
4006 sha1 = "ed29634d19baba463b6ce6b80a37213eab71ec43";
4007 };
4008 }
4009
4010 {
4011 name = "enhanced_resolve___enhanced_resolve_4.1.0.tgz";
4012 path = fetchurl {
4013 name = "enhanced_resolve___enhanced_resolve_4.1.0.tgz";
4014 url = "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz";
4015 sha1 = "41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f";
4016 };
4017 }
4018
4019 {
4020 name = "entities___entities_1.1.2.tgz";
4021 path = fetchurl {
4022 name = "entities___entities_1.1.2.tgz";
4023 url = "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz";
4024 sha1 = "bdfa735299664dfafd34529ed4f8522a275fea56";
4025 };
4026 }
4027
4028 {
4029 name = "enzyme_adapter_react_16___enzyme_adapter_react_16_1.14.0.tgz";
4030 path = fetchurl {
4031 name = "enzyme_adapter_react_16___enzyme_adapter_react_16_1.14.0.tgz";
4032 url = "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.14.0.tgz";
4033 sha1 = "204722b769172bcf096cb250d33e6795c1f1858f";
4034 };
4035 }
4036
4037 {
4038 name = "enzyme_adapter_utils___enzyme_adapter_utils_1.12.0.tgz";
4039 path = fetchurl {
4040 name = "enzyme_adapter_utils___enzyme_adapter_utils_1.12.0.tgz";
4041 url = "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.12.0.tgz";
4042 sha1 = "96e3730d76b872f593e54ce1c51fa3a451422d93";
4043 };
4044 }
4045
4046 {
4047 name = "enzyme___enzyme_3.10.0.tgz";
4048 path = fetchurl {
4049 name = "enzyme___enzyme_3.10.0.tgz";
4050 url = "https://registry.yarnpkg.com/enzyme/-/enzyme-3.10.0.tgz";
4051 sha1 = "7218e347c4a7746e133f8e964aada4a3523452f6";
4052 };
4053 }
4054
4055 {
4056 name = "errno___errno_0.1.7.tgz";
4057 path = fetchurl {
4058 name = "errno___errno_0.1.7.tgz";
4059 url = "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz";
4060 sha1 = "4684d71779ad39af177e3f007996f7c67c852618";
4061 };
4062 }
4063
4064 {
4065 name = "error_ex___error_ex_1.3.2.tgz";
4066 path = fetchurl {
4067 name = "error_ex___error_ex_1.3.2.tgz";
4068 url = "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz";
4069 sha1 = "b4ac40648107fdcdcfae242f428bea8a14d4f1bf";
4070 };
4071 }
4072
4073 {
4074 name = "es_abstract___es_abstract_1.12.0.tgz";
4075 path = fetchurl {
4076 name = "es_abstract___es_abstract_1.12.0.tgz";
4077 url = "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz";
4078 sha1 = "9dbbdd27c6856f0001421ca18782d786bf8a6165";
4079 };
4080 }
4081
4082 {
4083 name = "es_abstract___es_abstract_1.13.0.tgz";
4084 path = fetchurl {
4085 name = "es_abstract___es_abstract_1.13.0.tgz";
4086 url = "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz";
4087 sha1 = "ac86145fdd5099d8dd49558ccba2eaf9b88e24e9";
4088 };
4089 }
4090
4091 {
4092 name = "es_to_primitive___es_to_primitive_1.2.0.tgz";
4093 path = fetchurl {
4094 name = "es_to_primitive___es_to_primitive_1.2.0.tgz";
4095 url = "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz";
4096 sha1 = "edf72478033456e8dda8ef09e00ad9650707f377";
4097 };
4098 }
4099
4100 {
4101 name = "es5_ext___es5_ext_0.10.50.tgz";
4102 path = fetchurl {
4103 name = "es5_ext___es5_ext_0.10.50.tgz";
4104 url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz";
4105 sha1 = "6d0e23a0abdb27018e5ac4fd09b412bc5517a778";
4106 };
4107 }
4108
4109 {
4110 name = "es5_ext___es5_ext_0.10.46.tgz";
4111 path = fetchurl {
4112 name = "es5_ext___es5_ext_0.10.46.tgz";
4113 url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz";
4114 sha1 = "efd99f67c5a7ec789baa3daa7f79870388f7f572";
4115 };
4116 }
4117
4118 {
4119 name = "es6_iterator___es6_iterator_2.0.3.tgz";
4120 path = fetchurl {
4121 name = "es6_iterator___es6_iterator_2.0.3.tgz";
4122 url = "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz";
4123 sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7";
4124 };
4125 }
4126
4127 {
4128 name = "es6_map___es6_map_0.1.5.tgz";
4129 path = fetchurl {
4130 name = "es6_map___es6_map_0.1.5.tgz";
4131 url = "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz";
4132 sha1 = "9136e0503dcc06a301690f0bb14ff4e364e949f0";
4133 };
4134 }
4135
4136 {
4137 name = "es6_set___es6_set_0.1.5.tgz";
4138 path = fetchurl {
4139 name = "es6_set___es6_set_0.1.5.tgz";
4140 url = "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz";
4141 sha1 = "d2b3ec5d4d800ced818db538d28974db0a73ccb1";
4142 };
4143 }
4144
4145 {
4146 name = "es6_symbol___es6_symbol_3.1.1.tgz";
4147 path = fetchurl {
4148 name = "es6_symbol___es6_symbol_3.1.1.tgz";
4149 url = "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz";
4150 sha1 = "bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77";
4151 };
4152 }
4153
4154 {
4155 name = "es6_weak_map___es6_weak_map_2.0.2.tgz";
4156 path = fetchurl {
4157 name = "es6_weak_map___es6_weak_map_2.0.2.tgz";
4158 url = "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz";
4159 sha1 = "5e3ab32251ffd1538a1f8e5ffa1357772f92d96f";
4160 };
4161 }
4162
4163 {
4164 name = "escape_html___escape_html_1.0.3.tgz";
4165 path = fetchurl {
4166 name = "escape_html___escape_html_1.0.3.tgz";
4167 url = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz";
4168 sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
4169 };
4170 }
4171
4172 {
4173 name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
4174 path = fetchurl {
4175 name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
4176 url = "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
4177 sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
4178 };
4179 }
4180
4181 {
4182 name = "escodegen___escodegen_1.11.0.tgz";
4183 path = fetchurl {
4184 name = "escodegen___escodegen_1.11.0.tgz";
4185 url = "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz";
4186 sha1 = "b27a9389481d5bfd5bec76f7bb1eb3f8f4556589";
4187 };
4188 }
4189
4190 {
4191 name = "escope___escope_3.6.0.tgz";
4192 path = fetchurl {
4193 name = "escope___escope_3.6.0.tgz";
4194 url = "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz";
4195 sha1 = "e01975e812781a163a6dadfdd80398dc64c889c3";
4196 };
4197 }
4198
4199 {
4200 name = "eslint_import_resolver_node___eslint_import_resolver_node_0.3.2.tgz";
4201 path = fetchurl {
4202 name = "eslint_import_resolver_node___eslint_import_resolver_node_0.3.2.tgz";
4203 url = "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz";
4204 sha1 = "58f15fb839b8d0576ca980413476aab2472db66a";
4205 };
4206 }
4207
4208 {
4209 name = "eslint_module_utils___eslint_module_utils_2.4.0.tgz";
4210 path = fetchurl {
4211 name = "eslint_module_utils___eslint_module_utils_2.4.0.tgz";
4212 url = "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz";
4213 sha1 = "8b93499e9b00eab80ccb6614e69f03678e84e09a";
4214 };
4215 }
4216
4217 {
4218 name = "eslint_plugin_import___eslint_plugin_import_2.17.3.tgz";
4219 path = fetchurl {
4220 name = "eslint_plugin_import___eslint_plugin_import_2.17.3.tgz";
4221 url = "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz";
4222 sha1 = "00548b4434c18faebaba04b24ae6198f280de189";
4223 };
4224 }
4225
4226 {
4227 name = "eslint_plugin_jsx_a11y___eslint_plugin_jsx_a11y_6.2.1.tgz";
4228 path = fetchurl {
4229 name = "eslint_plugin_jsx_a11y___eslint_plugin_jsx_a11y_6.2.1.tgz";
4230 url = "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz";
4231 sha1 = "4ebba9f339b600ff415ae4166e3e2e008831cf0c";
4232 };
4233 }
4234
4235 {
4236 name = "eslint_plugin_promise___eslint_plugin_promise_4.1.1.tgz";
4237 path = fetchurl {
4238 name = "eslint_plugin_promise___eslint_plugin_promise_4.1.1.tgz";
4239 url = "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.1.1.tgz";
4240 sha1 = "1e08cb68b5b2cd8839f8d5864c796f56d82746db";
4241 };
4242 }
4243
4244 {
4245 name = "eslint_plugin_react___eslint_plugin_react_7.12.1.tgz";
4246 path = fetchurl {
4247 name = "eslint_plugin_react___eslint_plugin_react_7.12.1.tgz";
4248 url = "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.12.1.tgz";
4249 sha1 = "b9c4639f72469ff317ac31e3bd630d22d0dbf8f4";
4250 };
4251 }
4252
4253 {
4254 name = "eslint_scope___eslint_scope_3.7.1.tgz";
4255 path = fetchurl {
4256 name = "eslint_scope___eslint_scope_3.7.1.tgz";
4257 url = "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz";
4258 sha1 = "3d63c3edfda02e06e01a452ad88caacc7cdcb6e8";
4259 };
4260 }
4261
4262 {
4263 name = "eslint_scope___eslint_scope_4.0.0.tgz";
4264 path = fetchurl {
4265 name = "eslint_scope___eslint_scope_4.0.0.tgz";
4266 url = "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz";
4267 sha1 = "50bf3071e9338bcdc43331794a0cb533f0136172";
4268 };
4269 }
4270
4271 {
4272 name = "eslint_utils___eslint_utils_1.3.1.tgz";
4273 path = fetchurl {
4274 name = "eslint_utils___eslint_utils_1.3.1.tgz";
4275 url = "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz";
4276 sha1 = "9a851ba89ee7c460346f97cf8939c7298827e512";
4277 };
4278 }
4279
4280 {
4281 name = "eslint_visitor_keys___eslint_visitor_keys_1.0.0.tgz";
4282 path = fetchurl {
4283 name = "eslint_visitor_keys___eslint_visitor_keys_1.0.0.tgz";
4284 url = "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz";
4285 sha1 = "3f3180fb2e291017716acb4c9d6d5b5c34a6a81d";
4286 };
4287 }
4288
4289 {
4290 name = "eslint___eslint_2.13.1.tgz";
4291 path = fetchurl {
4292 name = "eslint___eslint_2.13.1.tgz";
4293 url = "https://registry.yarnpkg.com/eslint/-/eslint-2.13.1.tgz";
4294 sha1 = "e4cc8fa0f009fb829aaae23855a29360be1f6c11";
4295 };
4296 }
4297
4298 {
4299 name = "eslint___eslint_5.11.1.tgz";
4300 path = fetchurl {
4301 name = "eslint___eslint_5.11.1.tgz";
4302 url = "https://registry.yarnpkg.com/eslint/-/eslint-5.11.1.tgz";
4303 sha1 = "8deda83db9f354bf9d3f53f9677af7e0e13eadda";
4304 };
4305 }
4306
4307 {
4308 name = "espree___espree_3.5.4.tgz";
4309 path = fetchurl {
4310 name = "espree___espree_3.5.4.tgz";
4311 url = "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz";
4312 sha1 = "b0f447187c8a8bed944b815a660bddf5deb5d1a7";
4313 };
4314 }
4315
4316 {
4317 name = "espree___espree_5.0.0.tgz";
4318 path = fetchurl {
4319 name = "espree___espree_5.0.0.tgz";
4320 url = "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz";
4321 sha1 = "fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c";
4322 };
4323 }
4324
4325 {
4326 name = "esprima___esprima_3.1.3.tgz";
4327 path = fetchurl {
4328 name = "esprima___esprima_3.1.3.tgz";
4329 url = "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz";
4330 sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633";
4331 };
4332 }
4333
4334 {
4335 name = "esprima___esprima_4.0.1.tgz";
4336 path = fetchurl {
4337 name = "esprima___esprima_4.0.1.tgz";
4338 url = "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz";
4339 sha1 = "13b04cdb3e6c5d19df91ab6987a8695619b0aa71";
4340 };
4341 }
4342
4343 {
4344 name = "esquery___esquery_1.0.1.tgz";
4345 path = fetchurl {
4346 name = "esquery___esquery_1.0.1.tgz";
4347 url = "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz";
4348 sha1 = "406c51658b1f5991a5f9b62b1dc25b00e3e5c708";
4349 };
4350 }
4351
4352 {
4353 name = "esrecurse___esrecurse_4.2.1.tgz";
4354 path = fetchurl {
4355 name = "esrecurse___esrecurse_4.2.1.tgz";
4356 url = "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz";
4357 sha1 = "007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf";
4358 };
4359 }
4360
4361 {
4362 name = "estraverse___estraverse_4.2.0.tgz";
4363 path = fetchurl {
4364 name = "estraverse___estraverse_4.2.0.tgz";
4365 url = "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz";
4366 sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
4367 };
4368 }
4369
4370 {
4371 name = "esutils___esutils_2.0.2.tgz";
4372 path = fetchurl {
4373 name = "esutils___esutils_2.0.2.tgz";
4374 url = "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz";
4375 sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
4376 };
4377 }
4378
4379 {
4380 name = "etag___etag_1.8.1.tgz";
4381 path = fetchurl {
4382 name = "etag___etag_1.8.1.tgz";
4383 url = "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz";
4384 sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
4385 };
4386 }
4387
4388 {
4389 name = "event_emitter___event_emitter_0.3.5.tgz";
4390 path = fetchurl {
4391 name = "event_emitter___event_emitter_0.3.5.tgz";
4392 url = "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz";
4393 sha1 = "df8c69eef1647923c7157b9ce83840610b02cc39";
4394 };
4395 }
4396
4397 {
4398 name = "eventemitter3___eventemitter3_3.1.0.tgz";
4399 path = fetchurl {
4400 name = "eventemitter3___eventemitter3_3.1.0.tgz";
4401 url = "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz";
4402 sha1 = "090b4d6cdbd645ed10bf750d4b5407942d7ba163";
4403 };
4404 }
4405
4406 {
4407 name = "events___events_1.1.1.tgz";
4408 path = fetchurl {
4409 name = "events___events_1.1.1.tgz";
4410 url = "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz";
4411 sha1 = "9ebdb7635ad099c70dcc4c2a1f5004288e8bd924";
4412 };
4413 }
4414
4415 {
4416 name = "eventsource___eventsource_1.0.7.tgz";
4417 path = fetchurl {
4418 name = "eventsource___eventsource_1.0.7.tgz";
4419 url = "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz";
4420 sha1 = "8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0";
4421 };
4422 }
4423
4424 {
4425 name = "evp_bytestokey___evp_bytestokey_1.0.3.tgz";
4426 path = fetchurl {
4427 name = "evp_bytestokey___evp_bytestokey_1.0.3.tgz";
4428 url = "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz";
4429 sha1 = "7fcbdb198dc71959432efe13842684e0525acb02";
4430 };
4431 }
4432
4433 {
4434 name = "exec_sh___exec_sh_0.3.2.tgz";
4435 path = fetchurl {
4436 name = "exec_sh___exec_sh_0.3.2.tgz";
4437 url = "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz";
4438 sha1 = "6738de2eb7c8e671d0366aea0b0db8c6f7d7391b";
4439 };
4440 }
4441
4442 {
4443 name = "execa___execa_1.0.0.tgz";
4444 path = fetchurl {
4445 name = "execa___execa_1.0.0.tgz";
4446 url = "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz";
4447 sha1 = "c6236a5bb4df6d6f15e88e7f017798216749ddd8";
4448 };
4449 }
4450
4451 {
4452 name = "exif_js___exif_js_2.3.0.tgz";
4453 path = fetchurl {
4454 name = "exif_js___exif_js_2.3.0.tgz";
4455 url = "https://registry.yarnpkg.com/exif-js/-/exif-js-2.3.0.tgz";
4456 sha1 = "9d10819bf571f873813e7640241255ab9ce1a814";
4457 };
4458 }
4459
4460 {
4461 name = "exit_hook___exit_hook_1.1.1.tgz";
4462 path = fetchurl {
4463 name = "exit_hook___exit_hook_1.1.1.tgz";
4464 url = "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz";
4465 sha1 = "f05ca233b48c05d54fff07765df8507e95c02ff8";
4466 };
4467 }
4468
4469 {
4470 name = "exit___exit_0.1.2.tgz";
4471 path = fetchurl {
4472 name = "exit___exit_0.1.2.tgz";
4473 url = "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz";
4474 sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c";
4475 };
4476 }
4477
4478 {
4479 name = "expand_brackets___expand_brackets_2.1.4.tgz";
4480 path = fetchurl {
4481 name = "expand_brackets___expand_brackets_2.1.4.tgz";
4482 url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz";
4483 sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622";
4484 };
4485 }
4486
4487 {
4488 name = "expand_tilde___expand_tilde_2.0.2.tgz";
4489 path = fetchurl {
4490 name = "expand_tilde___expand_tilde_2.0.2.tgz";
4491 url = "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz";
4492 sha1 = "97e801aa052df02454de46b02bf621642cdc8502";
4493 };
4494 }
4495
4496 {
4497 name = "expect___expect_24.8.0.tgz";
4498 path = fetchurl {
4499 name = "expect___expect_24.8.0.tgz";
4500 url = "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz";
4501 sha1 = "471f8ec256b7b6129ca2524b2a62f030df38718d";
4502 };
4503 }
4504
4505 {
4506 name = "express___express_4.17.1.tgz";
4507 path = fetchurl {
4508 name = "express___express_4.17.1.tgz";
4509 url = "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz";
4510 sha1 = "4491fc38605cf51f8629d39c2b5d026f98a4c134";
4511 };
4512 }
4513
4514 {
4515 name = "extend_shallow___extend_shallow_2.0.1.tgz";
4516 path = fetchurl {
4517 name = "extend_shallow___extend_shallow_2.0.1.tgz";
4518 url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz";
4519 sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
4520 };
4521 }
4522
4523 {
4524 name = "extend_shallow___extend_shallow_3.0.2.tgz";
4525 path = fetchurl {
4526 name = "extend_shallow___extend_shallow_3.0.2.tgz";
4527 url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz";
4528 sha1 = "26a71aaf073b39fb2127172746131c2704028db8";
4529 };
4530 }
4531
4532 {
4533 name = "extend___extend_3.0.2.tgz";
4534 path = fetchurl {
4535 name = "extend___extend_3.0.2.tgz";
4536 url = "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz";
4537 sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
4538 };
4539 }
4540
4541 {
4542 name = "external_editor___external_editor_3.0.3.tgz";
4543 path = fetchurl {
4544 name = "external_editor___external_editor_3.0.3.tgz";
4545 url = "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz";
4546 sha1 = "5866db29a97826dbe4bf3afd24070ead9ea43a27";
4547 };
4548 }
4549
4550 {
4551 name = "extglob___extglob_2.0.4.tgz";
4552 path = fetchurl {
4553 name = "extglob___extglob_2.0.4.tgz";
4554 url = "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz";
4555 sha1 = "ad00fe4dc612a9232e8718711dc5cb5ab0285543";
4556 };
4557 }
4558
4559 {
4560 name = "extsprintf___extsprintf_1.3.0.tgz";
4561 path = fetchurl {
4562 name = "extsprintf___extsprintf_1.3.0.tgz";
4563 url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz";
4564 sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
4565 };
4566 }
4567
4568 {
4569 name = "extsprintf___extsprintf_1.4.0.tgz";
4570 path = fetchurl {
4571 name = "extsprintf___extsprintf_1.4.0.tgz";
4572 url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz";
4573 sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
4574 };
4575 }
4576
4577 {
4578 name = "fast_deep_equal___fast_deep_equal_2.0.1.tgz";
4579 path = fetchurl {
4580 name = "fast_deep_equal___fast_deep_equal_2.0.1.tgz";
4581 url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz";
4582 sha1 = "7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49";
4583 };
4584 }
4585
4586 {
4587 name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
4588 path = fetchurl {
4589 name = "fast_json_stable_stringify___fast_json_stable_stringify_2.0.0.tgz";
4590 url = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";
4591 sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
4592 };
4593 }
4594
4595 {
4596 name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
4597 path = fetchurl {
4598 name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
4599 url = "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
4600 sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
4601 };
4602 }
4603
4604 {
4605 name = "faye_websocket___faye_websocket_0.10.0.tgz";
4606 path = fetchurl {
4607 name = "faye_websocket___faye_websocket_0.10.0.tgz";
4608 url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz";
4609 sha1 = "4e492f8d04dfb6f89003507f6edbf2d501e7c6f4";
4610 };
4611 }
4612
4613 {
4614 name = "faye_websocket___faye_websocket_0.11.1.tgz";
4615 path = fetchurl {
4616 name = "faye_websocket___faye_websocket_0.11.1.tgz";
4617 url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz";
4618 sha1 = "f0efe18c4f56e4f40afc7e06c719fd5ee6188f38";
4619 };
4620 }
4621
4622 {
4623 name = "fb_watchman___fb_watchman_2.0.0.tgz";
4624 path = fetchurl {
4625 name = "fb_watchman___fb_watchman_2.0.0.tgz";
4626 url = "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz";
4627 sha1 = "54e9abf7dfa2f26cd9b1636c588c1afc05de5d58";
4628 };
4629 }
4630
4631 {
4632 name = "fbjs___fbjs_0.8.17.tgz";
4633 path = fetchurl {
4634 name = "fbjs___fbjs_0.8.17.tgz";
4635 url = "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz";
4636 sha1 = "c4d598ead6949112653d6588b01a5cdcd9f90fdd";
4637 };
4638 }
4639
4640 {
4641 name = "figgy_pudding___figgy_pudding_3.5.1.tgz";
4642 path = fetchurl {
4643 name = "figgy_pudding___figgy_pudding_3.5.1.tgz";
4644 url = "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz";
4645 sha1 = "862470112901c727a0e495a80744bd5baa1d6790";
4646 };
4647 }
4648
4649 {
4650 name = "figures___figures_1.7.0.tgz";
4651 path = fetchurl {
4652 name = "figures___figures_1.7.0.tgz";
4653 url = "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz";
4654 sha1 = "cbe1e3affcf1cd44b80cadfed28dc793a9701d2e";
4655 };
4656 }
4657
4658 {
4659 name = "figures___figures_2.0.0.tgz";
4660 path = fetchurl {
4661 name = "figures___figures_2.0.0.tgz";
4662 url = "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz";
4663 sha1 = "3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962";
4664 };
4665 }
4666
4667 {
4668 name = "file_entry_cache___file_entry_cache_1.3.1.tgz";
4669 path = fetchurl {
4670 name = "file_entry_cache___file_entry_cache_1.3.1.tgz";
4671 url = "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-1.3.1.tgz";
4672 sha1 = "44c61ea607ae4be9c1402f41f44270cbfe334ff8";
4673 };
4674 }
4675
4676 {
4677 name = "file_entry_cache___file_entry_cache_2.0.0.tgz";
4678 path = fetchurl {
4679 name = "file_entry_cache___file_entry_cache_2.0.0.tgz";
4680 url = "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz";
4681 sha1 = "c392990c3e684783d838b8c84a45d8a048458361";
4682 };
4683 }
4684
4685 {
4686 name = "file_loader___file_loader_4.0.0.tgz";
4687 path = fetchurl {
4688 name = "file_loader___file_loader_4.0.0.tgz";
4689 url = "https://registry.yarnpkg.com/file-loader/-/file-loader-4.0.0.tgz";
4690 sha1 = "c3570783fefb6e1bc0978a856f4bf5825b966c2a";
4691 };
4692 }
4693
4694 {
4695 name = "filesize___filesize_3.6.1.tgz";
4696 path = fetchurl {
4697 name = "filesize___filesize_3.6.1.tgz";
4698 url = "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz";
4699 sha1 = "090bb3ee01b6f801a8a8be99d31710b3422bb317";
4700 };
4701 }
4702
4703 {
4704 name = "fill_range___fill_range_4.0.0.tgz";
4705 path = fetchurl {
4706 name = "fill_range___fill_range_4.0.0.tgz";
4707 url = "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz";
4708 sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7";
4709 };
4710 }
4711
4712 {
4713 name = "finalhandler___finalhandler_1.1.2.tgz";
4714 path = fetchurl {
4715 name = "finalhandler___finalhandler_1.1.2.tgz";
4716 url = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz";
4717 sha1 = "b7e7d000ffd11938d0fdb053506f6ebabe9f587d";
4718 };
4719 }
4720
4721 {
4722 name = "find_cache_dir___find_cache_dir_2.0.0.tgz";
4723 path = fetchurl {
4724 name = "find_cache_dir___find_cache_dir_2.0.0.tgz";
4725 url = "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz";
4726 sha1 = "4c1faed59f45184530fb9d7fa123a4d04a98472d";
4727 };
4728 }
4729
4730 {
4731 name = "find_root___find_root_1.1.0.tgz";
4732 path = fetchurl {
4733 name = "find_root___find_root_1.1.0.tgz";
4734 url = "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz";
4735 sha1 = "abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4";
4736 };
4737 }
4738
4739 {
4740 name = "find_up___find_up_2.1.0.tgz";
4741 path = fetchurl {
4742 name = "find_up___find_up_2.1.0.tgz";
4743 url = "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz";
4744 sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
4745 };
4746 }
4747
4748 {
4749 name = "find_up___find_up_3.0.0.tgz";
4750 path = fetchurl {
4751 name = "find_up___find_up_3.0.0.tgz";
4752 url = "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz";
4753 sha1 = "49169f1d7993430646da61ecc5ae355c21c97b73";
4754 };
4755 }
4756
4757 {
4758 name = "findup_sync___findup_sync_2.0.0.tgz";
4759 path = fetchurl {
4760 name = "findup_sync___findup_sync_2.0.0.tgz";
4761 url = "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz";
4762 sha1 = "9326b1488c22d1a6088650a86901b2d9a90a2cbc";
4763 };
4764 }
4765
4766 {
4767 name = "flat_cache___flat_cache_1.3.4.tgz";
4768 path = fetchurl {
4769 name = "flat_cache___flat_cache_1.3.4.tgz";
4770 url = "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz";
4771 sha1 = "2c2ef77525cc2929007dfffa1dd314aa9c9dee6f";
4772 };
4773 }
4774
4775 {
4776 name = "flush_write_stream___flush_write_stream_1.0.3.tgz";
4777 path = fetchurl {
4778 name = "flush_write_stream___flush_write_stream_1.0.3.tgz";
4779 url = "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz";
4780 sha1 = "c5d586ef38af6097650b49bc41b55fabb19f35bd";
4781 };
4782 }
4783
4784 {
4785 name = "follow_redirects___follow_redirects_1.5.10.tgz";
4786 path = fetchurl {
4787 name = "follow_redirects___follow_redirects_1.5.10.tgz";
4788 url = "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz";
4789 sha1 = "7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a";
4790 };
4791 }
4792
4793 {
4794 name = "follow_redirects___follow_redirects_1.6.0.tgz";
4795 path = fetchurl {
4796 name = "follow_redirects___follow_redirects_1.6.0.tgz";
4797 url = "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.0.tgz";
4798 sha1 = "d12452c031e8c67eb6637d861bfc7a8090167933";
4799 };
4800 }
4801
4802 {
4803 name = "font_awesome___font_awesome_4.7.0.tgz";
4804 path = fetchurl {
4805 name = "font_awesome___font_awesome_4.7.0.tgz";
4806 url = "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz";
4807 sha1 = "8fa8cf0411a1a31afd07b06d2902bb9fc815a133";
4808 };
4809 }
4810
4811 {
4812 name = "for_in___for_in_0.1.8.tgz";
4813 path = fetchurl {
4814 name = "for_in___for_in_0.1.8.tgz";
4815 url = "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz";
4816 sha1 = "d8773908e31256109952b1fdb9b3fa867d2775e1";
4817 };
4818 }
4819
4820 {
4821 name = "for_in___for_in_1.0.2.tgz";
4822 path = fetchurl {
4823 name = "for_in___for_in_1.0.2.tgz";
4824 url = "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz";
4825 sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
4826 };
4827 }
4828
4829 {
4830 name = "for_own___for_own_1.0.0.tgz";
4831 path = fetchurl {
4832 name = "for_own___for_own_1.0.0.tgz";
4833 url = "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz";
4834 sha1 = "c63332f415cedc4b04dbfe70cf836494c53cb44b";
4835 };
4836 }
4837
4838 {
4839 name = "forever_agent___forever_agent_0.6.1.tgz";
4840 path = fetchurl {
4841 name = "forever_agent___forever_agent_0.6.1.tgz";
4842 url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz";
4843 sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
4844 };
4845 }
4846
4847 {
4848 name = "form_data___form_data_2.3.3.tgz";
4849 path = fetchurl {
4850 name = "form_data___form_data_2.3.3.tgz";
4851 url = "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz";
4852 sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6";
4853 };
4854 }
4855
4856 {
4857 name = "forwarded___forwarded_0.1.2.tgz";
4858 path = fetchurl {
4859 name = "forwarded___forwarded_0.1.2.tgz";
4860 url = "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz";
4861 sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
4862 };
4863 }
4864
4865 {
4866 name = "fragment_cache___fragment_cache_0.2.1.tgz";
4867 path = fetchurl {
4868 name = "fragment_cache___fragment_cache_0.2.1.tgz";
4869 url = "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz";
4870 sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19";
4871 };
4872 }
4873
4874 {
4875 name = "fresh___fresh_0.5.2.tgz";
4876 path = fetchurl {
4877 name = "fresh___fresh_0.5.2.tgz";
4878 url = "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz";
4879 sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
4880 };
4881 }
4882
4883 {
4884 name = "from2___from2_2.3.0.tgz";
4885 path = fetchurl {
4886 name = "from2___from2_2.3.0.tgz";
4887 url = "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz";
4888 sha1 = "8bfb5502bde4a4d36cfdeea007fcca21d7e382af";
4889 };
4890 }
4891
4892 {
4893 name = "front_matter___front_matter_2.1.2.tgz";
4894 path = fetchurl {
4895 name = "front_matter___front_matter_2.1.2.tgz";
4896 url = "https://registry.yarnpkg.com/front-matter/-/front-matter-2.1.2.tgz";
4897 sha1 = "f75983b9f2f413be658c93dfd7bd8ce4078f5cdb";
4898 };
4899 }
4900
4901 {
4902 name = "fs_extra___fs_extra_3.0.1.tgz";
4903 path = fetchurl {
4904 name = "fs_extra___fs_extra_3.0.1.tgz";
4905 url = "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz";
4906 sha1 = "3794f378c58b342ea7dbbb23095109c4b3b62291";
4907 };
4908 }
4909
4910 {
4911 name = "fs_extra___fs_extra_8.0.1.tgz";
4912 path = fetchurl {
4913 name = "fs_extra___fs_extra_8.0.1.tgz";
4914 url = "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.0.1.tgz";
4915 sha1 = "90294081f978b1f182f347a440a209154344285b";
4916 };
4917 }
4918
4919 {
4920 name = "fs_minipass___fs_minipass_1.2.5.tgz";
4921 path = fetchurl {
4922 name = "fs_minipass___fs_minipass_1.2.5.tgz";
4923 url = "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz";
4924 sha1 = "06c277218454ec288df77ada54a03b8702aacb9d";
4925 };
4926 }
4927
4928 {
4929 name = "fs_write_stream_atomic___fs_write_stream_atomic_1.0.10.tgz";
4930 path = fetchurl {
4931 name = "fs_write_stream_atomic___fs_write_stream_atomic_1.0.10.tgz";
4932 url = "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz";
4933 sha1 = "b47df53493ef911df75731e70a9ded0189db40c9";
4934 };
4935 }
4936
4937 {
4938 name = "fs.realpath___fs.realpath_1.0.0.tgz";
4939 path = fetchurl {
4940 name = "fs.realpath___fs.realpath_1.0.0.tgz";
4941 url = "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz";
4942 sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
4943 };
4944 }
4945
4946 {
4947 name = "fsevents___fsevents_1.2.9.tgz";
4948 path = fetchurl {
4949 name = "fsevents___fsevents_1.2.9.tgz";
4950 url = "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz";
4951 sha1 = "3f5ed66583ccd6f400b5a00db6f7e861363e388f";
4952 };
4953 }
4954
4955 {
4956 name = "function_bind___function_bind_1.1.1.tgz";
4957 path = fetchurl {
4958 name = "function_bind___function_bind_1.1.1.tgz";
4959 url = "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz";
4960 sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
4961 };
4962 }
4963
4964 {
4965 name = "function.prototype.name___function.prototype.name_1.1.0.tgz";
4966 path = fetchurl {
4967 name = "function.prototype.name___function.prototype.name_1.1.0.tgz";
4968 url = "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz";
4969 sha1 = "8bd763cc0af860a859cc5d49384d74b932cd2327";
4970 };
4971 }
4972
4973 {
4974 name = "functional_red_black_tree___functional_red_black_tree_1.0.1.tgz";
4975 path = fetchurl {
4976 name = "functional_red_black_tree___functional_red_black_tree_1.0.1.tgz";
4977 url = "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz";
4978 sha1 = "1b0ab3bd553b2a0d6399d29c0e3ea0b252078327";
4979 };
4980 }
4981
4982 {
4983 name = "gauge___gauge_2.7.4.tgz";
4984 path = fetchurl {
4985 name = "gauge___gauge_2.7.4.tgz";
4986 url = "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz";
4987 sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
4988 };
4989 }
4990
4991 {
4992 name = "generate_function___generate_function_2.3.1.tgz";
4993 path = fetchurl {
4994 name = "generate_function___generate_function_2.3.1.tgz";
4995 url = "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz";
4996 sha1 = "f069617690c10c868e73b8465746764f97c3479f";
4997 };
4998 }
4999
5000 {
5001 name = "generate_object_property___generate_object_property_1.2.0.tgz";
5002 path = fetchurl {
5003 name = "generate_object_property___generate_object_property_1.2.0.tgz";
5004 url = "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz";
5005 sha1 = "9c0e1c40308ce804f4783618b937fa88f99d50d0";
5006 };
5007 }
5008
5009 {
5010 name = "generic_pool___generic_pool_2.4.3.tgz";
5011 path = fetchurl {
5012 name = "generic_pool___generic_pool_2.4.3.tgz";
5013 url = "https://registry.yarnpkg.com/generic-pool/-/generic-pool-2.4.3.tgz";
5014 sha1 = "780c36f69dfad05a5a045dd37be7adca11a4f6ff";
5015 };
5016 }
5017
5018 {
5019 name = "get_caller_file___get_caller_file_1.0.3.tgz";
5020 path = fetchurl {
5021 name = "get_caller_file___get_caller_file_1.0.3.tgz";
5022 url = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz";
5023 sha1 = "f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a";
5024 };
5025 }
5026
5027 {
5028 name = "get_stream___get_stream_4.1.0.tgz";
5029 path = fetchurl {
5030 name = "get_stream___get_stream_4.1.0.tgz";
5031 url = "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz";
5032 sha1 = "c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5";
5033 };
5034 }
5035
5036 {
5037 name = "get_value___get_value_2.0.6.tgz";
5038 path = fetchurl {
5039 name = "get_value___get_value_2.0.6.tgz";
5040 url = "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz";
5041 sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
5042 };
5043 }
5044
5045 {
5046 name = "getpass___getpass_0.1.7.tgz";
5047 path = fetchurl {
5048 name = "getpass___getpass_0.1.7.tgz";
5049 url = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz";
5050 sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
5051 };
5052 }
5053
5054 {
5055 name = "glob_parent___glob_parent_3.1.0.tgz";
5056 path = fetchurl {
5057 name = "glob_parent___glob_parent_3.1.0.tgz";
5058 url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz";
5059 sha1 = "9e6af6299d8d3bd2bd40430832bd113df906c5ae";
5060 };
5061 }
5062
5063 {
5064 name = "glob___glob_7.1.4.tgz";
5065 path = fetchurl {
5066 name = "glob___glob_7.1.4.tgz";
5067 url = "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz";
5068 sha1 = "aa608a2f6c577ad357e1ae5a5c26d9a8d1969255";
5069 };
5070 }
5071
5072 {
5073 name = "glob___glob_7.1.3.tgz";
5074 path = fetchurl {
5075 name = "glob___glob_7.1.3.tgz";
5076 url = "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz";
5077 sha1 = "3960832d3f1574108342dafd3a67b332c0969df1";
5078 };
5079 }
5080
5081 {
5082 name = "global_modules___global_modules_1.0.0.tgz";
5083 path = fetchurl {
5084 name = "global_modules___global_modules_1.0.0.tgz";
5085 url = "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz";
5086 sha1 = "6d770f0eb523ac78164d72b5e71a8877265cc3ea";
5087 };
5088 }
5089
5090 {
5091 name = "global_prefix___global_prefix_1.0.2.tgz";
5092 path = fetchurl {
5093 name = "global_prefix___global_prefix_1.0.2.tgz";
5094 url = "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz";
5095 sha1 = "dbf743c6c14992593c655568cb66ed32c0122ebe";
5096 };
5097 }
5098
5099 {
5100 name = "globals___globals_11.12.0.tgz";
5101 path = fetchurl {
5102 name = "globals___globals_11.12.0.tgz";
5103 url = "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz";
5104 sha1 = "ab8795338868a0babd8525758018c2a7eb95c42e";
5105 };
5106 }
5107
5108 {
5109 name = "globals___globals_11.9.0.tgz";
5110 path = fetchurl {
5111 name = "globals___globals_11.9.0.tgz";
5112 url = "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz";
5113 sha1 = "bde236808e987f290768a93d065060d78e6ab249";
5114 };
5115 }
5116
5117 {
5118 name = "globals___globals_9.18.0.tgz";
5119 path = fetchurl {
5120 name = "globals___globals_9.18.0.tgz";
5121 url = "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz";
5122 sha1 = "aa3896b3e69b487f17e31ed2143d69a8e30c2d8a";
5123 };
5124 }
5125
5126 {
5127 name = "globby___globby_6.1.0.tgz";
5128 path = fetchurl {
5129 name = "globby___globby_6.1.0.tgz";
5130 url = "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz";
5131 sha1 = "f5a6d70e8395e21c858fb0489d64df02424d506c";
5132 };
5133 }
5134
5135 {
5136 name = "globule___globule_1.2.1.tgz";
5137 path = fetchurl {
5138 name = "globule___globule_1.2.1.tgz";
5139 url = "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz";
5140 sha1 = "5dffb1b191f22d20797a9369b49eab4e9839696d";
5141 };
5142 }
5143
5144 {
5145 name = "gonzales_pe_sl___gonzales_pe_sl_4.2.3.tgz";
5146 path = fetchurl {
5147 name = "gonzales_pe_sl___gonzales_pe_sl_4.2.3.tgz";
5148 url = "https://registry.yarnpkg.com/gonzales-pe-sl/-/gonzales-pe-sl-4.2.3.tgz";
5149 sha1 = "6a868bc380645f141feeb042c6f97fcc71b59fe6";
5150 };
5151 }
5152
5153 {
5154 name = "graceful_fs___graceful_fs_4.1.15.tgz";
5155 path = fetchurl {
5156 name = "graceful_fs___graceful_fs_4.1.15.tgz";
5157 url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz";
5158 sha1 = "ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00";
5159 };
5160 }
5161
5162 {
5163 name = "growly___growly_1.3.0.tgz";
5164 path = fetchurl {
5165 name = "growly___growly_1.3.0.tgz";
5166 url = "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz";
5167 sha1 = "f10748cbe76af964b7c96c93c6bcc28af120c081";
5168 };
5169 }
5170
5171 {
5172 name = "gzip_size___gzip_size_5.0.0.tgz";
5173 path = fetchurl {
5174 name = "gzip_size___gzip_size_5.0.0.tgz";
5175 url = "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz";
5176 sha1 = "a55ecd99222f4c48fd8c01c625ce3b349d0a0e80";
5177 };
5178 }
5179
5180 {
5181 name = "handle_thing___handle_thing_2.0.0.tgz";
5182 path = fetchurl {
5183 name = "handle_thing___handle_thing_2.0.0.tgz";
5184 url = "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz";
5185 sha1 = "0e039695ff50c93fc288557d696f3c1dc6776754";
5186 };
5187 }
5188
5189 {
5190 name = "handlebars___handlebars_4.1.0.tgz";
5191 path = fetchurl {
5192 name = "handlebars___handlebars_4.1.0.tgz";
5193 url = "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz";
5194 sha1 = "0d6a6f34ff1f63cecec8423aa4169827bf787c3a";
5195 };
5196 }
5197
5198 {
5199 name = "har_schema___har_schema_2.0.0.tgz";
5200 path = fetchurl {
5201 name = "har_schema___har_schema_2.0.0.tgz";
5202 url = "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz";
5203 sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
5204 };
5205 }
5206
5207 {
5208 name = "har_validator___har_validator_5.1.3.tgz";
5209 path = fetchurl {
5210 name = "har_validator___har_validator_5.1.3.tgz";
5211 url = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz";
5212 sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080";
5213 };
5214 }
5215
5216 {
5217 name = "has_ansi___has_ansi_2.0.0.tgz";
5218 path = fetchurl {
5219 name = "has_ansi___has_ansi_2.0.0.tgz";
5220 url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz";
5221 sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
5222 };
5223 }
5224
5225 {
5226 name = "has_flag___has_flag_1.0.0.tgz";
5227 path = fetchurl {
5228 name = "has_flag___has_flag_1.0.0.tgz";
5229 url = "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz";
5230 sha1 = "9d9e793165ce017a00f00418c43f942a7b1d11fa";
5231 };
5232 }
5233
5234 {
5235 name = "has_flag___has_flag_3.0.0.tgz";
5236 path = fetchurl {
5237 name = "has_flag___has_flag_3.0.0.tgz";
5238 url = "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz";
5239 sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
5240 };
5241 }
5242
5243 {
5244 name = "has_symbols___has_symbols_1.0.0.tgz";
5245 path = fetchurl {
5246 name = "has_symbols___has_symbols_1.0.0.tgz";
5247 url = "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz";
5248 sha1 = "ba1a8f1af2a0fc39650f5c850367704122063b44";
5249 };
5250 }
5251
5252 {
5253 name = "has_unicode___has_unicode_2.0.1.tgz";
5254 path = fetchurl {
5255 name = "has_unicode___has_unicode_2.0.1.tgz";
5256 url = "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz";
5257 sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
5258 };
5259 }
5260
5261 {
5262 name = "has_value___has_value_0.3.1.tgz";
5263 path = fetchurl {
5264 name = "has_value___has_value_0.3.1.tgz";
5265 url = "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz";
5266 sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f";
5267 };
5268 }
5269
5270 {
5271 name = "has_value___has_value_1.0.0.tgz";
5272 path = fetchurl {
5273 name = "has_value___has_value_1.0.0.tgz";
5274 url = "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz";
5275 sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177";
5276 };
5277 }
5278
5279 {
5280 name = "has_values___has_values_0.1.4.tgz";
5281 path = fetchurl {
5282 name = "has_values___has_values_0.1.4.tgz";
5283 url = "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz";
5284 sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
5285 };
5286 }
5287
5288 {
5289 name = "has_values___has_values_1.0.0.tgz";
5290 path = fetchurl {
5291 name = "has_values___has_values_1.0.0.tgz";
5292 url = "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz";
5293 sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f";
5294 };
5295 }
5296
5297 {
5298 name = "has___has_1.0.3.tgz";
5299 path = fetchurl {
5300 name = "has___has_1.0.3.tgz";
5301 url = "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz";
5302 sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796";
5303 };
5304 }
5305
5306 {
5307 name = "hash_base___hash_base_3.0.4.tgz";
5308 path = fetchurl {
5309 name = "hash_base___hash_base_3.0.4.tgz";
5310 url = "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz";
5311 sha1 = "5fc8686847ecd73499403319a6b0a3f3f6ae4918";
5312 };
5313 }
5314
5315 {
5316 name = "hash.js___hash.js_1.1.7.tgz";
5317 path = fetchurl {
5318 name = "hash.js___hash.js_1.1.7.tgz";
5319 url = "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz";
5320 sha1 = "0babca538e8d4ee4a0f8988d68866537a003cf42";
5321 };
5322 }
5323
5324 {
5325 name = "hex_color_regex___hex_color_regex_1.1.0.tgz";
5326 path = fetchurl {
5327 name = "hex_color_regex___hex_color_regex_1.1.0.tgz";
5328 url = "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz";
5329 sha1 = "4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e";
5330 };
5331 }
5332
5333 {
5334 name = "history___history_4.7.2.tgz";
5335 path = fetchurl {
5336 name = "history___history_4.7.2.tgz";
5337 url = "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz";
5338 sha1 = "22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b";
5339 };
5340 }
5341
5342 {
5343 name = "hmac_drbg___hmac_drbg_1.0.1.tgz";
5344 path = fetchurl {
5345 name = "hmac_drbg___hmac_drbg_1.0.1.tgz";
5346 url = "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz";
5347 sha1 = "d2745701025a6c775a6c545793ed502fc0c649a1";
5348 };
5349 }
5350
5351 {
5352 name = "hoist_non_react_statics___hoist_non_react_statics_2.5.5.tgz";
5353 path = fetchurl {
5354 name = "hoist_non_react_statics___hoist_non_react_statics_2.5.5.tgz";
5355 url = "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz";
5356 sha1 = "c5903cf409c0dfd908f388e619d86b9c1174cb47";
5357 };
5358 }
5359
5360 {
5361 name = "hoist_non_react_statics___hoist_non_react_statics_3.3.0.tgz";
5362 path = fetchurl {
5363 name = "hoist_non_react_statics___hoist_non_react_statics_3.3.0.tgz";
5364 url = "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz";
5365 sha1 = "b09178f0122184fb95acf525daaecb4d8f45958b";
5366 };
5367 }
5368
5369 {
5370 name = "homedir_polyfill___homedir_polyfill_1.0.3.tgz";
5371 path = fetchurl {
5372 name = "homedir_polyfill___homedir_polyfill_1.0.3.tgz";
5373 url = "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz";
5374 sha1 = "743298cef4e5af3e194161fbadcc2151d3a058e8";
5375 };
5376 }
5377
5378 {
5379 name = "hoopy___hoopy_0.1.4.tgz";
5380 path = fetchurl {
5381 name = "hoopy___hoopy_0.1.4.tgz";
5382 url = "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz";
5383 sha1 = "609207d661100033a9a9402ad3dea677381c1b1d";
5384 };
5385 }
5386
5387 {
5388 name = "hosted_git_info___hosted_git_info_2.7.1.tgz";
5389 path = fetchurl {
5390 name = "hosted_git_info___hosted_git_info_2.7.1.tgz";
5391 url = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz";
5392 sha1 = "97f236977bd6e125408930ff6de3eec6281ec047";
5393 };
5394 }
5395
5396 {
5397 name = "hpack.js___hpack.js_2.1.6.tgz";
5398 path = fetchurl {
5399 name = "hpack.js___hpack.js_2.1.6.tgz";
5400 url = "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz";
5401 sha1 = "87774c0949e513f42e84575b3c45681fade2a0b2";
5402 };
5403 }
5404
5405 {
5406 name = "hsl_regex___hsl_regex_1.0.0.tgz";
5407 path = fetchurl {
5408 name = "hsl_regex___hsl_regex_1.0.0.tgz";
5409 url = "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz";
5410 sha1 = "d49330c789ed819e276a4c0d272dffa30b18fe6e";
5411 };
5412 }
5413
5414 {
5415 name = "hsla_regex___hsla_regex_1.0.0.tgz";
5416 path = fetchurl {
5417 name = "hsla_regex___hsla_regex_1.0.0.tgz";
5418 url = "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz";
5419 sha1 = "c1ce7a3168c8c6614033a4b5f7877f3b225f9c38";
5420 };
5421 }
5422
5423 {
5424 name = "html_comment_regex___html_comment_regex_1.1.2.tgz";
5425 path = fetchurl {
5426 name = "html_comment_regex___html_comment_regex_1.1.2.tgz";
5427 url = "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz";
5428 sha1 = "97d4688aeb5c81886a364faa0cad1dda14d433a7";
5429 };
5430 }
5431
5432 {
5433 name = "html_element_map___html_element_map_1.0.1.tgz";
5434 path = fetchurl {
5435 name = "html_element_map___html_element_map_1.0.1.tgz";
5436 url = "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.0.1.tgz";
5437 sha1 = "3c4fcb4874ebddfe4283b51c8994e7713782b592";
5438 };
5439 }
5440
5441 {
5442 name = "html_encoding_sniffer___html_encoding_sniffer_1.0.2.tgz";
5443 path = fetchurl {
5444 name = "html_encoding_sniffer___html_encoding_sniffer_1.0.2.tgz";
5445 url = "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz";
5446 sha1 = "e70d84b94da53aa375e11fe3a351be6642ca46f8";
5447 };
5448 }
5449
5450 {
5451 name = "html_entities___html_entities_1.2.1.tgz";
5452 path = fetchurl {
5453 name = "html_entities___html_entities_1.2.1.tgz";
5454 url = "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz";
5455 sha1 = "0df29351f0721163515dfb9e5543e5f6eed5162f";
5456 };
5457 }
5458
5459 {
5460 name = "htmlparser2___htmlparser2_3.10.0.tgz";
5461 path = fetchurl {
5462 name = "htmlparser2___htmlparser2_3.10.0.tgz";
5463 url = "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz";
5464 sha1 = "5f5e422dcf6119c0d983ed36260ce9ded0bee464";
5465 };
5466 }
5467
5468 {
5469 name = "http_deceiver___http_deceiver_1.2.7.tgz";
5470 path = fetchurl {
5471 name = "http_deceiver___http_deceiver_1.2.7.tgz";
5472 url = "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz";
5473 sha1 = "fa7168944ab9a519d337cb0bec7284dc3e723d87";
5474 };
5475 }
5476
5477 {
5478 name = "http_errors___http_errors_1.7.2.tgz";
5479 path = fetchurl {
5480 name = "http_errors___http_errors_1.7.2.tgz";
5481 url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz";
5482 sha1 = "4f5029cf13239f31036e5b2e55292bcfbcc85c8f";
5483 };
5484 }
5485
5486 {
5487 name = "http_errors___http_errors_1.6.3.tgz";
5488 path = fetchurl {
5489 name = "http_errors___http_errors_1.6.3.tgz";
5490 url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz";
5491 sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
5492 };
5493 }
5494
5495 {
5496 name = "http_link_header___http_link_header_1.0.2.tgz";
5497 path = fetchurl {
5498 name = "http_link_header___http_link_header_1.0.2.tgz";
5499 url = "https://registry.yarnpkg.com/http-link-header/-/http-link-header-1.0.2.tgz";
5500 sha1 = "bea50f02e1c7996021f1013b428c63f77e0f4e11";
5501 };
5502 }
5503
5504 {
5505 name = "http_parser_js___http_parser_js_0.5.0.tgz";
5506 path = fetchurl {
5507 name = "http_parser_js___http_parser_js_0.5.0.tgz";
5508 url = "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz";
5509 sha1 = "d65edbede84349d0dc30320815a15d39cc3cbbd8";
5510 };
5511 }
5512
5513 {
5514 name = "http_proxy_middleware___http_proxy_middleware_0.19.1.tgz";
5515 path = fetchurl {
5516 name = "http_proxy_middleware___http_proxy_middleware_0.19.1.tgz";
5517 url = "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz";
5518 sha1 = "183c7dc4aa1479150306498c210cdaf96080a43a";
5519 };
5520 }
5521
5522 {
5523 name = "http_proxy___http_proxy_1.17.0.tgz";
5524 path = fetchurl {
5525 name = "http_proxy___http_proxy_1.17.0.tgz";
5526 url = "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz";
5527 sha1 = "7ad38494658f84605e2f6db4436df410f4e5be9a";
5528 };
5529 }
5530
5531 {
5532 name = "http_signature___http_signature_1.2.0.tgz";
5533 path = fetchurl {
5534 name = "http_signature___http_signature_1.2.0.tgz";
5535 url = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz";
5536 sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
5537 };
5538 }
5539
5540 {
5541 name = "https_browserify___https_browserify_1.0.0.tgz";
5542 path = fetchurl {
5543 name = "https_browserify___https_browserify_1.0.0.tgz";
5544 url = "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz";
5545 sha1 = "ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73";
5546 };
5547 }
5548
5549 {
5550 name = "iconv_lite___iconv_lite_0.4.24.tgz";
5551 path = fetchurl {
5552 name = "iconv_lite___iconv_lite_0.4.24.tgz";
5553 url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz";
5554 sha1 = "2022b4b25fbddc21d2f524974a474aafe733908b";
5555 };
5556 }
5557
5558 {
5559 name = "icss_replace_symbols___icss_replace_symbols_1.1.0.tgz";
5560 path = fetchurl {
5561 name = "icss_replace_symbols___icss_replace_symbols_1.1.0.tgz";
5562 url = "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz";
5563 sha1 = "06ea6f83679a7749e386cfe1fe812ae5db223ded";
5564 };
5565 }
5566
5567 {
5568 name = "icss_utils___icss_utils_4.1.0.tgz";
5569 path = fetchurl {
5570 name = "icss_utils___icss_utils_4.1.0.tgz";
5571 url = "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.0.tgz";
5572 sha1 = "339dbbffb9f8729a243b701e1c29d4cc58c52f0e";
5573 };
5574 }
5575
5576 {
5577 name = "ieee754___ieee754_1.1.12.tgz";
5578 path = fetchurl {
5579 name = "ieee754___ieee754_1.1.12.tgz";
5580 url = "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz";
5581 sha1 = "50bf24e5b9c8bb98af4964c941cdb0918da7b60b";
5582 };
5583 }
5584
5585 {
5586 name = "iferr___iferr_0.1.5.tgz";
5587 path = fetchurl {
5588 name = "iferr___iferr_0.1.5.tgz";
5589 url = "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz";
5590 sha1 = "c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501";
5591 };
5592 }
5593
5594 {
5595 name = "ignore_walk___ignore_walk_3.0.1.tgz";
5596 path = fetchurl {
5597 name = "ignore_walk___ignore_walk_3.0.1.tgz";
5598 url = "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz";
5599 sha1 = "a83e62e7d272ac0e3b551aaa82831a19b69f82f8";
5600 };
5601 }
5602
5603 {
5604 name = "ignore___ignore_3.3.10.tgz";
5605 path = fetchurl {
5606 name = "ignore___ignore_3.3.10.tgz";
5607 url = "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz";
5608 sha1 = "0a97fb876986e8081c631160f8f9f389157f0043";
5609 };
5610 }
5611
5612 {
5613 name = "ignore___ignore_4.0.6.tgz";
5614 path = fetchurl {
5615 name = "ignore___ignore_4.0.6.tgz";
5616 url = "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz";
5617 sha1 = "750e3db5862087b4737ebac8207ffd1ef27b25fc";
5618 };
5619 }
5620
5621 {
5622 name = "immutable___immutable_3.8.2.tgz";
5623 path = fetchurl {
5624 name = "immutable___immutable_3.8.2.tgz";
5625 url = "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz";
5626 sha1 = "c2439951455bb39913daf281376f1530e104adf3";
5627 };
5628 }
5629
5630 {
5631 name = "import_cwd___import_cwd_2.1.0.tgz";
5632 path = fetchurl {
5633 name = "import_cwd___import_cwd_2.1.0.tgz";
5634 url = "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz";
5635 sha1 = "aa6cf36e722761285cb371ec6519f53e2435b0a9";
5636 };
5637 }
5638
5639 {
5640 name = "import_fresh___import_fresh_2.0.0.tgz";
5641 path = fetchurl {
5642 name = "import_fresh___import_fresh_2.0.0.tgz";
5643 url = "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz";
5644 sha1 = "d81355c15612d386c61f9ddd3922d4304822a546";
5645 };
5646 }
5647
5648 {
5649 name = "import_from___import_from_2.1.0.tgz";
5650 path = fetchurl {
5651 name = "import_from___import_from_2.1.0.tgz";
5652 url = "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz";
5653 sha1 = "335db7f2a7affd53aaa471d4b8021dee36b7f3b1";
5654 };
5655 }
5656
5657 {
5658 name = "import_local___import_local_2.0.0.tgz";
5659 path = fetchurl {
5660 name = "import_local___import_local_2.0.0.tgz";
5661 url = "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz";
5662 sha1 = "55070be38a5993cf18ef6db7e961f5bee5c5a09d";
5663 };
5664 }
5665
5666 {
5667 name = "imports_loader___imports_loader_0.8.0.tgz";
5668 path = fetchurl {
5669 name = "imports_loader___imports_loader_0.8.0.tgz";
5670 url = "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.8.0.tgz";
5671 sha1 = "030ea51b8ca05977c40a3abfd9b4088fe0be9a69";
5672 };
5673 }
5674
5675 {
5676 name = "imurmurhash___imurmurhash_0.1.4.tgz";
5677 path = fetchurl {
5678 name = "imurmurhash___imurmurhash_0.1.4.tgz";
5679 url = "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz";
5680 sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
5681 };
5682 }
5683
5684 {
5685 name = "indexes_of___indexes_of_1.0.1.tgz";
5686 path = fetchurl {
5687 name = "indexes_of___indexes_of_1.0.1.tgz";
5688 url = "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz";
5689 sha1 = "f30f716c8e2bd346c7b67d3df3915566a7c05607";
5690 };
5691 }
5692
5693 {
5694 name = "indexof___indexof_0.0.1.tgz";
5695 path = fetchurl {
5696 name = "indexof___indexof_0.0.1.tgz";
5697 url = "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz";
5698 sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
5699 };
5700 }
5701
5702 {
5703 name = "inflight___inflight_1.0.6.tgz";
5704 path = fetchurl {
5705 name = "inflight___inflight_1.0.6.tgz";
5706 url = "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz";
5707 sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
5708 };
5709 }
5710
5711 {
5712 name = "inherits___inherits_2.0.3.tgz";
5713 path = fetchurl {
5714 name = "inherits___inherits_2.0.3.tgz";
5715 url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz";
5716 sha1 = "633c2c83e3da42a502f52466022480f4208261de";
5717 };
5718 }
5719
5720 {
5721 name = "inherits___inherits_2.0.1.tgz";
5722 path = fetchurl {
5723 name = "inherits___inherits_2.0.1.tgz";
5724 url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz";
5725 sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
5726 };
5727 }
5728
5729 {
5730 name = "ini___ini_1.3.5.tgz";
5731 path = fetchurl {
5732 name = "ini___ini_1.3.5.tgz";
5733 url = "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz";
5734 sha1 = "eee25f56db1c9ec6085e0c22778083f596abf927";
5735 };
5736 }
5737
5738 {
5739 name = "inquirer___inquirer_0.12.0.tgz";
5740 path = fetchurl {
5741 name = "inquirer___inquirer_0.12.0.tgz";
5742 url = "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz";
5743 sha1 = "1ef2bfd63504df0bc75785fff8c2c41df12f077e";
5744 };
5745 }
5746
5747 {
5748 name = "inquirer___inquirer_6.2.1.tgz";
5749 path = fetchurl {
5750 name = "inquirer___inquirer_6.2.1.tgz";
5751 url = "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.1.tgz";
5752 sha1 = "9943fc4882161bdb0b0c9276769c75b32dbfcd52";
5753 };
5754 }
5755
5756 {
5757 name = "internal_ip___internal_ip_4.3.0.tgz";
5758 path = fetchurl {
5759 name = "internal_ip___internal_ip_4.3.0.tgz";
5760 url = "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz";
5761 sha1 = "845452baad9d2ca3b69c635a137acb9a0dad0907";
5762 };
5763 }
5764
5765 {
5766 name = "interpret___interpret_1.2.0.tgz";
5767 path = fetchurl {
5768 name = "interpret___interpret_1.2.0.tgz";
5769 url = "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz";
5770 sha1 = "d5061a6224be58e8083985f5014d844359576296";
5771 };
5772 }
5773
5774 {
5775 name = "intersection_observer___intersection_observer_0.7.0.tgz";
5776 path = fetchurl {
5777 name = "intersection_observer___intersection_observer_0.7.0.tgz";
5778 url = "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.7.0.tgz";
5779 sha1 = "ee16bee978db53516ead2f0a8154b09b400bbdc9";
5780 };
5781 }
5782
5783 {
5784 name = "intl_format_cache___intl_format_cache_2.1.0.tgz";
5785 path = fetchurl {
5786 name = "intl_format_cache___intl_format_cache_2.1.0.tgz";
5787 url = "https://registry.yarnpkg.com/intl-format-cache/-/intl-format-cache-2.1.0.tgz";
5788 sha1 = "04a369fecbfad6da6005bae1f14333332dcf9316";
5789 };
5790 }
5791
5792 {
5793 name = "intl_messageformat_parser___intl_messageformat_parser_1.4.0.tgz";
5794 path = fetchurl {
5795 name = "intl_messageformat_parser___intl_messageformat_parser_1.4.0.tgz";
5796 url = "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz";
5797 sha1 = "b43d45a97468cadbe44331d74bb1e8dea44fc075";
5798 };
5799 }
5800
5801 {
5802 name = "intl_messageformat_parser___intl_messageformat_parser_1.6.5.tgz";
5803 path = fetchurl {
5804 name = "intl_messageformat_parser___intl_messageformat_parser_1.6.5.tgz";
5805 url = "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.6.5.tgz";
5806 sha1 = "40f5fc19855f203389a3fc926cc3c88d7a573496";
5807 };
5808 }
5809
5810 {
5811 name = "intl_messageformat___intl_messageformat_2.2.0.tgz";
5812 path = fetchurl {
5813 name = "intl_messageformat___intl_messageformat_2.2.0.tgz";
5814 url = "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-2.2.0.tgz";
5815 sha1 = "345bcd46de630b7683330c2e52177ff5eab484fc";
5816 };
5817 }
5818
5819 {
5820 name = "intl_relativeformat___intl_relativeformat_2.2.0.tgz";
5821 path = fetchurl {
5822 name = "intl_relativeformat___intl_relativeformat_2.2.0.tgz";
5823 url = "https://registry.yarnpkg.com/intl-relativeformat/-/intl-relativeformat-2.2.0.tgz";
5824 sha1 = "6aca95d019ec8d30b6c5653b6629f9983ea5b6c5";
5825 };
5826 }
5827
5828 {
5829 name = "intl___intl_1.2.5.tgz";
5830 path = fetchurl {
5831 name = "intl___intl_1.2.5.tgz";
5832 url = "https://registry.yarnpkg.com/intl/-/intl-1.2.5.tgz";
5833 sha1 = "82244a2190c4e419f8371f5aa34daa3420e2abde";
5834 };
5835 }
5836
5837 {
5838 name = "invariant___invariant_2.2.4.tgz";
5839 path = fetchurl {
5840 name = "invariant___invariant_2.2.4.tgz";
5841 url = "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz";
5842 sha1 = "610f3c92c9359ce1db616e538008d23ff35158e6";
5843 };
5844 }
5845
5846 {
5847 name = "invert_kv___invert_kv_2.0.0.tgz";
5848 path = fetchurl {
5849 name = "invert_kv___invert_kv_2.0.0.tgz";
5850 url = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz";
5851 sha1 = "7393f5afa59ec9ff5f67a27620d11c226e3eec02";
5852 };
5853 }
5854
5855 {
5856 name = "ip_regex___ip_regex_2.1.0.tgz";
5857 path = fetchurl {
5858 name = "ip_regex___ip_regex_2.1.0.tgz";
5859 url = "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz";
5860 sha1 = "fa78bf5d2e6913c911ce9f819ee5146bb6d844e9";
5861 };
5862 }
5863
5864 {
5865 name = "ip___ip_1.1.5.tgz";
5866 path = fetchurl {
5867 name = "ip___ip_1.1.5.tgz";
5868 url = "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz";
5869 sha1 = "bdded70114290828c0a039e72ef25f5aaec4354a";
5870 };
5871 }
5872
5873 {
5874 name = "ipaddr.js___ipaddr.js_1.9.0.tgz";
5875 path = fetchurl {
5876 name = "ipaddr.js___ipaddr.js_1.9.0.tgz";
5877 url = "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz";
5878 sha1 = "37df74e430a0e47550fe54a2defe30d8acd95f65";
5879 };
5880 }
5881
5882 {
5883 name = "is_absolute_url___is_absolute_url_2.1.0.tgz";
5884 path = fetchurl {
5885 name = "is_absolute_url___is_absolute_url_2.1.0.tgz";
5886 url = "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz";
5887 sha1 = "50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6";
5888 };
5889 }
5890
5891 {
5892 name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
5893 path = fetchurl {
5894 name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
5895 url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz";
5896 sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6";
5897 };
5898 }
5899
5900 {
5901 name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
5902 path = fetchurl {
5903 name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
5904 url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz";
5905 sha1 = "169c2f6d3df1f992618072365c9b0ea1f6878656";
5906 };
5907 }
5908
5909 {
5910 name = "is_arrayish___is_arrayish_0.2.1.tgz";
5911 path = fetchurl {
5912 name = "is_arrayish___is_arrayish_0.2.1.tgz";
5913 url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz";
5914 sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
5915 };
5916 }
5917
5918 {
5919 name = "is_arrayish___is_arrayish_0.3.2.tgz";
5920 path = fetchurl {
5921 name = "is_arrayish___is_arrayish_0.3.2.tgz";
5922 url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz";
5923 sha1 = "4574a2ae56f7ab206896fb431eaeed066fdf8f03";
5924 };
5925 }
5926
5927 {
5928 name = "is_binary_path___is_binary_path_1.0.1.tgz";
5929 path = fetchurl {
5930 name = "is_binary_path___is_binary_path_1.0.1.tgz";
5931 url = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz";
5932 sha1 = "75f16642b480f187a711c814161fd3a4a7655898";
5933 };
5934 }
5935
5936 {
5937 name = "is_boolean_object___is_boolean_object_1.0.0.tgz";
5938 path = fetchurl {
5939 name = "is_boolean_object___is_boolean_object_1.0.0.tgz";
5940 url = "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz";
5941 sha1 = "98f8b28030684219a95f375cfbd88ce3405dff93";
5942 };
5943 }
5944
5945 {
5946 name = "is_buffer___is_buffer_1.1.6.tgz";
5947 path = fetchurl {
5948 name = "is_buffer___is_buffer_1.1.6.tgz";
5949 url = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz";
5950 sha1 = "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be";
5951 };
5952 }
5953
5954 {
5955 name = "is_buffer___is_buffer_2.0.3.tgz";
5956 path = fetchurl {
5957 name = "is_buffer___is_buffer_2.0.3.tgz";
5958 url = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz";
5959 sha1 = "4ecf3fcf749cbd1e472689e109ac66261a25e725";
5960 };
5961 }
5962
5963 {
5964 name = "is_builtin_module___is_builtin_module_1.0.0.tgz";
5965 path = fetchurl {
5966 name = "is_builtin_module___is_builtin_module_1.0.0.tgz";
5967 url = "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz";
5968 sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe";
5969 };
5970 }
5971
5972 {
5973 name = "is_callable___is_callable_1.1.4.tgz";
5974 path = fetchurl {
5975 name = "is_callable___is_callable_1.1.4.tgz";
5976 url = "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz";
5977 sha1 = "1e1adf219e1eeb684d691f9d6a05ff0d30a24d75";
5978 };
5979 }
5980
5981 {
5982 name = "is_ci___is_ci_2.0.0.tgz";
5983 path = fetchurl {
5984 name = "is_ci___is_ci_2.0.0.tgz";
5985 url = "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz";
5986 sha1 = "6bc6334181810e04b5c22b3d589fdca55026404c";
5987 };
5988 }
5989
5990 {
5991 name = "is_color_stop___is_color_stop_1.1.0.tgz";
5992 path = fetchurl {
5993 name = "is_color_stop___is_color_stop_1.1.0.tgz";
5994 url = "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz";
5995 sha1 = "cfff471aee4dd5c9e158598fbe12967b5cdad345";
5996 };
5997 }
5998
5999 {
6000 name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
6001 path = fetchurl {
6002 name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
6003 url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz";
6004 sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56";
6005 };
6006 }
6007
6008 {
6009 name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
6010 path = fetchurl {
6011 name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
6012 url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz";
6013 sha1 = "d84876321d0e7add03990406abbbbd36ba9268c7";
6014 };
6015 }
6016
6017 {
6018 name = "is_date_object___is_date_object_1.0.1.tgz";
6019 path = fetchurl {
6020 name = "is_date_object___is_date_object_1.0.1.tgz";
6021 url = "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz";
6022 sha1 = "9aa20eb6aeebbff77fbd33e74ca01b33581d3a16";
6023 };
6024 }
6025
6026 {
6027 name = "is_descriptor___is_descriptor_0.1.6.tgz";
6028 path = fetchurl {
6029 name = "is_descriptor___is_descriptor_0.1.6.tgz";
6030 url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz";
6031 sha1 = "366d8240dde487ca51823b1ab9f07a10a78251ca";
6032 };
6033 }
6034
6035 {
6036 name = "is_descriptor___is_descriptor_1.0.2.tgz";
6037 path = fetchurl {
6038 name = "is_descriptor___is_descriptor_1.0.2.tgz";
6039 url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz";
6040 sha1 = "3b159746a66604b04f8c81524ba365c5f14d86ec";
6041 };
6042 }
6043
6044 {
6045 name = "is_directory___is_directory_0.3.1.tgz";
6046 path = fetchurl {
6047 name = "is_directory___is_directory_0.3.1.tgz";
6048 url = "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz";
6049 sha1 = "61339b6f2475fc772fd9c9d83f5c8575dc154ae1";
6050 };
6051 }
6052
6053 {
6054 name = "is_extendable___is_extendable_0.1.1.tgz";
6055 path = fetchurl {
6056 name = "is_extendable___is_extendable_0.1.1.tgz";
6057 url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz";
6058 sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
6059 };
6060 }
6061
6062 {
6063 name = "is_extendable___is_extendable_1.0.1.tgz";
6064 path = fetchurl {
6065 name = "is_extendable___is_extendable_1.0.1.tgz";
6066 url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz";
6067 sha1 = "a7470f9e426733d81bd81e1155264e3a3507cab4";
6068 };
6069 }
6070
6071 {
6072 name = "is_extglob___is_extglob_2.1.1.tgz";
6073 path = fetchurl {
6074 name = "is_extglob___is_extglob_2.1.1.tgz";
6075 url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz";
6076 sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
6077 };
6078 }
6079
6080 {
6081 name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
6082 path = fetchurl {
6083 name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
6084 url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
6085 sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
6086 };
6087 }
6088
6089 {
6090 name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
6091 path = fetchurl {
6092 name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
6093 url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
6094 sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
6095 };
6096 }
6097
6098 {
6099 name = "is_generator_fn___is_generator_fn_2.0.0.tgz";
6100 path = fetchurl {
6101 name = "is_generator_fn___is_generator_fn_2.0.0.tgz";
6102 url = "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.0.0.tgz";
6103 sha1 = "038c31b774709641bda678b1f06a4e3227c10b3e";
6104 };
6105 }
6106
6107 {
6108 name = "is_glob___is_glob_3.1.0.tgz";
6109 path = fetchurl {
6110 name = "is_glob___is_glob_3.1.0.tgz";
6111 url = "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz";
6112 sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
6113 };
6114 }
6115
6116 {
6117 name = "is_glob___is_glob_4.0.0.tgz";
6118 path = fetchurl {
6119 name = "is_glob___is_glob_4.0.0.tgz";
6120 url = "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz";
6121 sha1 = "9521c76845cc2610a85203ddf080a958c2ffabc0";
6122 };
6123 }
6124
6125 {
6126 name = "is_my_ip_valid___is_my_ip_valid_1.0.0.tgz";
6127 path = fetchurl {
6128 name = "is_my_ip_valid___is_my_ip_valid_1.0.0.tgz";
6129 url = "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz";
6130 sha1 = "7b351b8e8edd4d3995d4d066680e664d94696824";
6131 };
6132 }
6133
6134 {
6135 name = "is_my_json_valid___is_my_json_valid_2.20.0.tgz";
6136 path = fetchurl {
6137 name = "is_my_json_valid___is_my_json_valid_2.20.0.tgz";
6138 url = "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz";
6139 sha1 = "1345a6fca3e8daefc10d0fa77067f54cedafd59a";
6140 };
6141 }
6142
6143 {
6144 name = "is_nan___is_nan_1.2.1.tgz";
6145 path = fetchurl {
6146 name = "is_nan___is_nan_1.2.1.tgz";
6147 url = "https://registry.yarnpkg.com/is-nan/-/is-nan-1.2.1.tgz";
6148 sha1 = "9faf65b6fb6db24b7f5c0628475ea71f988401e2";
6149 };
6150 }
6151
6152 {
6153 name = "is_number_object___is_number_object_1.0.3.tgz";
6154 path = fetchurl {
6155 name = "is_number_object___is_number_object_1.0.3.tgz";
6156 url = "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz";
6157 sha1 = "f265ab89a9f445034ef6aff15a8f00b00f551799";
6158 };
6159 }
6160
6161 {
6162 name = "is_number___is_number_3.0.0.tgz";
6163 path = fetchurl {
6164 name = "is_number___is_number_3.0.0.tgz";
6165 url = "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz";
6166 sha1 = "24fd6201a4782cf50561c810276afc7d12d71195";
6167 };
6168 }
6169
6170 {
6171 name = "is_obj___is_obj_1.0.1.tgz";
6172 path = fetchurl {
6173 name = "is_obj___is_obj_1.0.1.tgz";
6174 url = "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz";
6175 sha1 = "3e4729ac1f5fde025cd7d83a896dab9f4f67db0f";
6176 };
6177 }
6178
6179 {
6180 name = "is_path_cwd___is_path_cwd_2.1.0.tgz";
6181 path = fetchurl {
6182 name = "is_path_cwd___is_path_cwd_2.1.0.tgz";
6183 url = "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz";
6184 sha1 = "2e0c7e463ff5b7a0eb60852d851a6809347a124c";
6185 };
6186 }
6187
6188 {
6189 name = "is_path_in_cwd___is_path_in_cwd_2.1.0.tgz";
6190 path = fetchurl {
6191 name = "is_path_in_cwd___is_path_in_cwd_2.1.0.tgz";
6192 url = "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz";
6193 sha1 = "bfe2dca26c69f397265a4009963602935a053acb";
6194 };
6195 }
6196
6197 {
6198 name = "is_path_inside___is_path_inside_2.1.0.tgz";
6199 path = fetchurl {
6200 name = "is_path_inside___is_path_inside_2.1.0.tgz";
6201 url = "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz";
6202 sha1 = "7c9810587d659a40d27bcdb4d5616eab059494b2";
6203 };
6204 }
6205
6206 {
6207 name = "is_plain_object___is_plain_object_2.0.4.tgz";
6208 path = fetchurl {
6209 name = "is_plain_object___is_plain_object_2.0.4.tgz";
6210 url = "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz";
6211 sha1 = "2c163b3fafb1b606d9d17928f05c2a1c38e07677";
6212 };
6213 }
6214
6215 {
6216 name = "is_promise___is_promise_2.1.0.tgz";
6217 path = fetchurl {
6218 name = "is_promise___is_promise_2.1.0.tgz";
6219 url = "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz";
6220 sha1 = "79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa";
6221 };
6222 }
6223
6224 {
6225 name = "is_property___is_property_1.0.2.tgz";
6226 path = fetchurl {
6227 name = "is_property___is_property_1.0.2.tgz";
6228 url = "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz";
6229 sha1 = "57fe1c4e48474edd65b09911f26b1cd4095dda84";
6230 };
6231 }
6232
6233 {
6234 name = "is_regex___is_regex_1.0.4.tgz";
6235 path = fetchurl {
6236 name = "is_regex___is_regex_1.0.4.tgz";
6237 url = "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz";
6238 sha1 = "5517489b547091b0930e095654ced25ee97e9491";
6239 };
6240 }
6241
6242 {
6243 name = "is_resolvable___is_resolvable_1.1.0.tgz";
6244 path = fetchurl {
6245 name = "is_resolvable___is_resolvable_1.1.0.tgz";
6246 url = "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz";
6247 sha1 = "fb18f87ce1feb925169c9a407c19318a3206ed88";
6248 };
6249 }
6250
6251 {
6252 name = "is_stream___is_stream_1.1.0.tgz";
6253 path = fetchurl {
6254 name = "is_stream___is_stream_1.1.0.tgz";
6255 url = "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz";
6256 sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
6257 };
6258 }
6259
6260 {
6261 name = "is_string___is_string_1.0.4.tgz";
6262 path = fetchurl {
6263 name = "is_string___is_string_1.0.4.tgz";
6264 url = "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz";
6265 sha1 = "cc3a9b69857d621e963725a24caeec873b826e64";
6266 };
6267 }
6268
6269 {
6270 name = "is_subset___is_subset_0.1.1.tgz";
6271 path = fetchurl {
6272 name = "is_subset___is_subset_0.1.1.tgz";
6273 url = "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz";
6274 sha1 = "8a59117d932de1de00f245fcdd39ce43f1e939a6";
6275 };
6276 }
6277
6278 {
6279 name = "is_svg___is_svg_3.0.0.tgz";
6280 path = fetchurl {
6281 name = "is_svg___is_svg_3.0.0.tgz";
6282 url = "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz";
6283 sha1 = "9321dbd29c212e5ca99c4fa9794c714bcafa2f75";
6284 };
6285 }
6286
6287 {
6288 name = "is_symbol___is_symbol_1.0.2.tgz";
6289 path = fetchurl {
6290 name = "is_symbol___is_symbol_1.0.2.tgz";
6291 url = "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz";
6292 sha1 = "a055f6ae57192caee329e7a860118b497a950f38";
6293 };
6294 }
6295
6296 {
6297 name = "is_typedarray___is_typedarray_1.0.0.tgz";
6298 path = fetchurl {
6299 name = "is_typedarray___is_typedarray_1.0.0.tgz";
6300 url = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz";
6301 sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
6302 };
6303 }
6304
6305 {
6306 name = "is_windows___is_windows_1.0.2.tgz";
6307 path = fetchurl {
6308 name = "is_windows___is_windows_1.0.2.tgz";
6309 url = "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz";
6310 sha1 = "d1850eb9791ecd18e6182ce12a30f396634bb19d";
6311 };
6312 }
6313
6314 {
6315 name = "is_wsl___is_wsl_1.1.0.tgz";
6316 path = fetchurl {
6317 name = "is_wsl___is_wsl_1.1.0.tgz";
6318 url = "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz";
6319 sha1 = "1f16e4aa22b04d1336b66188a66af3c600c3a66d";
6320 };
6321 }
6322
6323 {
6324 name = "isarray___isarray_0.0.1.tgz";
6325 path = fetchurl {
6326 name = "isarray___isarray_0.0.1.tgz";
6327 url = "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz";
6328 sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
6329 };
6330 }
6331
6332 {
6333 name = "isarray___isarray_1.0.0.tgz";
6334 path = fetchurl {
6335 name = "isarray___isarray_1.0.0.tgz";
6336 url = "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz";
6337 sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
6338 };
6339 }
6340
6341 {
6342 name = "isexe___isexe_2.0.0.tgz";
6343 path = fetchurl {
6344 name = "isexe___isexe_2.0.0.tgz";
6345 url = "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz";
6346 sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
6347 };
6348 }
6349
6350 {
6351 name = "isobject___isobject_2.1.0.tgz";
6352 path = fetchurl {
6353 name = "isobject___isobject_2.1.0.tgz";
6354 url = "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz";
6355 sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89";
6356 };
6357 }
6358
6359 {
6360 name = "isobject___isobject_3.0.1.tgz";
6361 path = fetchurl {
6362 name = "isobject___isobject_3.0.1.tgz";
6363 url = "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz";
6364 sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
6365 };
6366 }
6367
6368 {
6369 name = "isomorphic_fetch___isomorphic_fetch_2.2.1.tgz";
6370 path = fetchurl {
6371 name = "isomorphic_fetch___isomorphic_fetch_2.2.1.tgz";
6372 url = "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz";
6373 sha1 = "611ae1acf14f5e81f729507472819fe9733558a9";
6374 };
6375 }
6376
6377 {
6378 name = "isstream___isstream_0.1.2.tgz";
6379 path = fetchurl {
6380 name = "isstream___isstream_0.1.2.tgz";
6381 url = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz";
6382 sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
6383 };
6384 }
6385
6386 {
6387 name = "istanbul_lib_coverage___istanbul_lib_coverage_2.0.3.tgz";
6388 path = fetchurl {
6389 name = "istanbul_lib_coverage___istanbul_lib_coverage_2.0.3.tgz";
6390 url = "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz";
6391 sha1 = "0b891e5ad42312c2b9488554f603795f9a2211ba";
6392 };
6393 }
6394
6395 {
6396 name = "istanbul_lib_instrument___istanbul_lib_instrument_3.1.0.tgz";
6397 path = fetchurl {
6398 name = "istanbul_lib_instrument___istanbul_lib_instrument_3.1.0.tgz";
6399 url = "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz";
6400 sha1 = "a2b5484a7d445f1f311e93190813fa56dfb62971";
6401 };
6402 }
6403
6404 {
6405 name = "istanbul_lib_report___istanbul_lib_report_2.0.4.tgz";
6406 path = fetchurl {
6407 name = "istanbul_lib_report___istanbul_lib_report_2.0.4.tgz";
6408 url = "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz";
6409 sha1 = "bfd324ee0c04f59119cb4f07dab157d09f24d7e4";
6410 };
6411 }
6412
6413 {
6414 name = "istanbul_lib_source_maps___istanbul_lib_source_maps_3.0.2.tgz";
6415 path = fetchurl {
6416 name = "istanbul_lib_source_maps___istanbul_lib_source_maps_3.0.2.tgz";
6417 url = "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz";
6418 sha1 = "f1e817229a9146e8424a28e5d69ba220fda34156";
6419 };
6420 }
6421
6422 {
6423 name = "istanbul_reports___istanbul_reports_2.1.1.tgz";
6424 path = fetchurl {
6425 name = "istanbul_reports___istanbul_reports_2.1.1.tgz";
6426 url = "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.1.1.tgz";
6427 sha1 = "72ef16b4ecb9a4a7bd0e2001e00f95d1eec8afa9";
6428 };
6429 }
6430
6431 {
6432 name = "jest_changed_files___jest_changed_files_24.8.0.tgz";
6433 path = fetchurl {
6434 name = "jest_changed_files___jest_changed_files_24.8.0.tgz";
6435 url = "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz";
6436 sha1 = "7e7eb21cf687587a85e50f3d249d1327e15b157b";
6437 };
6438 }
6439
6440 {
6441 name = "jest_cli___jest_cli_24.8.0.tgz";
6442 path = fetchurl {
6443 name = "jest_cli___jest_cli_24.8.0.tgz";
6444 url = "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz";
6445 sha1 = "b075ac914492ed114fa338ade7362a301693e989";
6446 };
6447 }
6448
6449 {
6450 name = "jest_config___jest_config_24.8.0.tgz";
6451 path = fetchurl {
6452 name = "jest_config___jest_config_24.8.0.tgz";
6453 url = "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz";
6454 sha1 = "77db3d265a6f726294687cbbccc36f8a76ee0f4f";
6455 };
6456 }
6457
6458 {
6459 name = "jest_diff___jest_diff_24.8.0.tgz";
6460 path = fetchurl {
6461 name = "jest_diff___jest_diff_24.8.0.tgz";
6462 url = "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz";
6463 sha1 = "146435e7d1e3ffdf293d53ff97e193f1d1546172";
6464 };
6465 }
6466
6467 {
6468 name = "jest_docblock___jest_docblock_24.3.0.tgz";
6469 path = fetchurl {
6470 name = "jest_docblock___jest_docblock_24.3.0.tgz";
6471 url = "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz";
6472 sha1 = "b9c32dac70f72e4464520d2ba4aec02ab14db5dd";
6473 };
6474 }
6475
6476 {
6477 name = "jest_each___jest_each_24.8.0.tgz";
6478 path = fetchurl {
6479 name = "jest_each___jest_each_24.8.0.tgz";
6480 url = "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz";
6481 sha1 = "a05fd2bf94ddc0b1da66c6d13ec2457f35e52775";
6482 };
6483 }
6484
6485 {
6486 name = "jest_environment_jsdom___jest_environment_jsdom_24.8.0.tgz";
6487 path = fetchurl {
6488 name = "jest_environment_jsdom___jest_environment_jsdom_24.8.0.tgz";
6489 url = "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz";
6490 sha1 = "300f6949a146cabe1c9357ad9e9ecf9f43f38857";
6491 };
6492 }
6493
6494 {
6495 name = "jest_environment_node___jest_environment_node_24.8.0.tgz";
6496 path = fetchurl {
6497 name = "jest_environment_node___jest_environment_node_24.8.0.tgz";
6498 url = "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz";
6499 sha1 = "d3f726ba8bc53087a60e7a84ca08883a4c892231";
6500 };
6501 }
6502
6503 {
6504 name = "jest_get_type___jest_get_type_24.8.0.tgz";
6505 path = fetchurl {
6506 name = "jest_get_type___jest_get_type_24.8.0.tgz";
6507 url = "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz";
6508 sha1 = "a7440de30b651f5a70ea3ed7ff073a32dfe646fc";
6509 };
6510 }
6511
6512 {
6513 name = "jest_haste_map___jest_haste_map_24.8.0.tgz";
6514 path = fetchurl {
6515 name = "jest_haste_map___jest_haste_map_24.8.0.tgz";
6516 url = "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.0.tgz";
6517 sha1 = "51794182d877b3ddfd6e6d23920e3fe72f305800";
6518 };
6519 }
6520
6521 {
6522 name = "jest_jasmine2___jest_jasmine2_24.8.0.tgz";
6523 path = fetchurl {
6524 name = "jest_jasmine2___jest_jasmine2_24.8.0.tgz";
6525 url = "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz";
6526 sha1 = "a9c7e14c83dd77d8b15e820549ce8987cc8cd898";
6527 };
6528 }
6529
6530 {
6531 name = "jest_leak_detector___jest_leak_detector_24.8.0.tgz";
6532 path = fetchurl {
6533 name = "jest_leak_detector___jest_leak_detector_24.8.0.tgz";
6534 url = "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz";
6535 sha1 = "c0086384e1f650c2d8348095df769f29b48e6980";
6536 };
6537 }
6538
6539 {
6540 name = "jest_matcher_utils___jest_matcher_utils_24.8.0.tgz";
6541 path = fetchurl {
6542 name = "jest_matcher_utils___jest_matcher_utils_24.8.0.tgz";
6543 url = "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz";
6544 sha1 = "2bce42204c9af12bde46f83dc839efe8be832495";
6545 };
6546 }
6547
6548 {
6549 name = "jest_message_util___jest_message_util_24.8.0.tgz";
6550 path = fetchurl {
6551 name = "jest_message_util___jest_message_util_24.8.0.tgz";
6552 url = "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz";
6553 sha1 = "0d6891e72a4beacc0292b638685df42e28d6218b";
6554 };
6555 }
6556
6557 {
6558 name = "jest_mock___jest_mock_24.8.0.tgz";
6559 path = fetchurl {
6560 name = "jest_mock___jest_mock_24.8.0.tgz";
6561 url = "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz";
6562 sha1 = "2f9d14d37699e863f1febf4e4d5a33b7fdbbde56";
6563 };
6564 }
6565
6566 {
6567 name = "jest_pnp_resolver___jest_pnp_resolver_1.2.1.tgz";
6568 path = fetchurl {
6569 name = "jest_pnp_resolver___jest_pnp_resolver_1.2.1.tgz";
6570 url = "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz";
6571 sha1 = "ecdae604c077a7fbc70defb6d517c3c1c898923a";
6572 };
6573 }
6574
6575 {
6576 name = "jest_regex_util___jest_regex_util_24.3.0.tgz";
6577 path = fetchurl {
6578 name = "jest_regex_util___jest_regex_util_24.3.0.tgz";
6579 url = "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz";
6580 sha1 = "d5a65f60be1ae3e310d5214a0307581995227b36";
6581 };
6582 }
6583
6584 {
6585 name = "jest_resolve_dependencies___jest_resolve_dependencies_24.8.0.tgz";
6586 path = fetchurl {
6587 name = "jest_resolve_dependencies___jest_resolve_dependencies_24.8.0.tgz";
6588 url = "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz";
6589 sha1 = "19eec3241f2045d3f990dba331d0d7526acff8e0";
6590 };
6591 }
6592
6593 {
6594 name = "jest_resolve___jest_resolve_24.8.0.tgz";
6595 path = fetchurl {
6596 name = "jest_resolve___jest_resolve_24.8.0.tgz";
6597 url = "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz";
6598 sha1 = "84b8e5408c1f6a11539793e2b5feb1b6e722439f";
6599 };
6600 }
6601
6602 {
6603 name = "jest_runner___jest_runner_24.8.0.tgz";
6604 path = fetchurl {
6605 name = "jest_runner___jest_runner_24.8.0.tgz";
6606 url = "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz";
6607 sha1 = "4f9ae07b767db27b740d7deffad0cf67ccb4c5bb";
6608 };
6609 }
6610
6611 {
6612 name = "jest_runtime___jest_runtime_24.8.0.tgz";
6613 path = fetchurl {
6614 name = "jest_runtime___jest_runtime_24.8.0.tgz";
6615 url = "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz";
6616 sha1 = "05f94d5b05c21f6dc54e427cd2e4980923350620";
6617 };
6618 }
6619
6620 {
6621 name = "jest_serializer___jest_serializer_24.4.0.tgz";
6622 path = fetchurl {
6623 name = "jest_serializer___jest_serializer_24.4.0.tgz";
6624 url = "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz";
6625 sha1 = "f70c5918c8ea9235ccb1276d232e459080588db3";
6626 };
6627 }
6628
6629 {
6630 name = "jest_snapshot___jest_snapshot_24.8.0.tgz";
6631 path = fetchurl {
6632 name = "jest_snapshot___jest_snapshot_24.8.0.tgz";
6633 url = "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz";
6634 sha1 = "3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6";
6635 };
6636 }
6637
6638 {
6639 name = "jest_util___jest_util_24.8.0.tgz";
6640 path = fetchurl {
6641 name = "jest_util___jest_util_24.8.0.tgz";
6642 url = "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz";
6643 sha1 = "41f0e945da11df44cc76d64ffb915d0716f46cd1";
6644 };
6645 }
6646
6647 {
6648 name = "jest_validate___jest_validate_24.8.0.tgz";
6649 path = fetchurl {
6650 name = "jest_validate___jest_validate_24.8.0.tgz";
6651 url = "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz";
6652 sha1 = "624c41533e6dfe356ffadc6e2423a35c2d3b4849";
6653 };
6654 }
6655
6656 {
6657 name = "jest_watcher___jest_watcher_24.8.0.tgz";
6658 path = fetchurl {
6659 name = "jest_watcher___jest_watcher_24.8.0.tgz";
6660 url = "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz";
6661 sha1 = "58d49915ceddd2de85e238f6213cef1c93715de4";
6662 };
6663 }
6664
6665 {
6666 name = "jest_worker___jest_worker_24.6.0.tgz";
6667 path = fetchurl {
6668 name = "jest_worker___jest_worker_24.6.0.tgz";
6669 url = "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz";
6670 sha1 = "7f81ceae34b7cde0c9827a6980c35b7cdc0161b3";
6671 };
6672 }
6673
6674 {
6675 name = "jest___jest_24.8.0.tgz";
6676 path = fetchurl {
6677 name = "jest___jest_24.8.0.tgz";
6678 url = "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz";
6679 sha1 = "d5dff1984d0d1002196e9b7f12f75af1b2809081";
6680 };
6681 }
6682
6683 {
6684 name = "js_base64___js_base64_2.5.0.tgz";
6685 path = fetchurl {
6686 name = "js_base64___js_base64_2.5.0.tgz";
6687 url = "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.0.tgz";
6688 sha1 = "42255ba183ab67ce59a0dee640afdc00ab5ae93e";
6689 };
6690 }
6691
6692 {
6693 name = "js_levenshtein___js_levenshtein_1.1.6.tgz";
6694 path = fetchurl {
6695 name = "js_levenshtein___js_levenshtein_1.1.6.tgz";
6696 url = "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz";
6697 sha1 = "c6cee58eb3550372df8deb85fad5ce66ce01d59d";
6698 };
6699 }
6700
6701 {
6702 name = "js_string_escape___js_string_escape_1.0.1.tgz";
6703 path = fetchurl {
6704 name = "js_string_escape___js_string_escape_1.0.1.tgz";
6705 url = "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz";
6706 sha1 = "e2625badbc0d67c7533e9edc1068c587ae4137ef";
6707 };
6708 }
6709
6710 {
6711 name = "js_tokens___js_tokens_4.0.0.tgz";
6712 path = fetchurl {
6713 name = "js_tokens___js_tokens_4.0.0.tgz";
6714 url = "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz";
6715 sha1 = "19203fb59991df98e3a287050d4647cdeaf32499";
6716 };
6717 }
6718
6719 {
6720 name = "js_yaml___js_yaml_3.13.1.tgz";
6721 path = fetchurl {
6722 name = "js_yaml___js_yaml_3.13.1.tgz";
6723 url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz";
6724 sha1 = "aff151b30bfdfa8e49e05da22e7415e9dfa37847";
6725 };
6726 }
6727
6728 {
6729 name = "jsbn___jsbn_0.1.1.tgz";
6730 path = fetchurl {
6731 name = "jsbn___jsbn_0.1.1.tgz";
6732 url = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz";
6733 sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
6734 };
6735 }
6736
6737 {
6738 name = "jsdom___jsdom_11.12.0.tgz";
6739 path = fetchurl {
6740 name = "jsdom___jsdom_11.12.0.tgz";
6741 url = "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz";
6742 sha1 = "1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8";
6743 };
6744 }
6745
6746 {
6747 name = "jsesc___jsesc_2.5.2.tgz";
6748 path = fetchurl {
6749 name = "jsesc___jsesc_2.5.2.tgz";
6750 url = "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz";
6751 sha1 = "80564d2e483dacf6e8ef209650a67df3f0c283a4";
6752 };
6753 }
6754
6755 {
6756 name = "jsesc___jsesc_0.5.0.tgz";
6757 path = fetchurl {
6758 name = "jsesc___jsesc_0.5.0.tgz";
6759 url = "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz";
6760 sha1 = "e7dee66e35d6fc16f710fe91d5cf69f70f08911d";
6761 };
6762 }
6763
6764 {
6765 name = "json_parse_better_errors___json_parse_better_errors_1.0.2.tgz";
6766 path = fetchurl {
6767 name = "json_parse_better_errors___json_parse_better_errors_1.0.2.tgz";
6768 url = "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz";
6769 sha1 = "bb867cfb3450e69107c131d1c514bab3dc8bcaa9";
6770 };
6771 }
6772
6773 {
6774 name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
6775 path = fetchurl {
6776 name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
6777 url = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
6778 sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
6779 };
6780 }
6781
6782 {
6783 name = "json_schema___json_schema_0.2.3.tgz";
6784 path = fetchurl {
6785 name = "json_schema___json_schema_0.2.3.tgz";
6786 url = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz";
6787 sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
6788 };
6789 }
6790
6791 {
6792 name = "json_stable_stringify_without_jsonify___json_stable_stringify_without_jsonify_1.0.1.tgz";
6793 path = fetchurl {
6794 name = "json_stable_stringify_without_jsonify___json_stable_stringify_without_jsonify_1.0.1.tgz";
6795 url = "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz";
6796 sha1 = "9db7b59496ad3f3cfef30a75142d2d930ad72651";
6797 };
6798 }
6799
6800 {
6801 name = "json_stable_stringify___json_stable_stringify_1.0.1.tgz";
6802 path = fetchurl {
6803 name = "json_stable_stringify___json_stable_stringify_1.0.1.tgz";
6804 url = "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
6805 sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
6806 };
6807 }
6808
6809 {
6810 name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
6811 path = fetchurl {
6812 name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
6813 url = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
6814 sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
6815 };
6816 }
6817
6818 {
6819 name = "json3___json3_3.3.2.tgz";
6820 path = fetchurl {
6821 name = "json3___json3_3.3.2.tgz";
6822 url = "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz";
6823 sha1 = "3c0434743df93e2f5c42aee7b19bcb483575f4e1";
6824 };
6825 }
6826
6827 {
6828 name = "json5___json5_0.5.1.tgz";
6829 path = fetchurl {
6830 name = "json5___json5_0.5.1.tgz";
6831 url = "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz";
6832 sha1 = "1eade7acc012034ad84e2396767ead9fa5495821";
6833 };
6834 }
6835
6836 {
6837 name = "json5___json5_1.0.1.tgz";
6838 path = fetchurl {
6839 name = "json5___json5_1.0.1.tgz";
6840 url = "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz";
6841 sha1 = "779fb0018604fa854eacbf6252180d83543e3dbe";
6842 };
6843 }
6844
6845 {
6846 name = "json5___json5_2.1.0.tgz";
6847 path = fetchurl {
6848 name = "json5___json5_2.1.0.tgz";
6849 url = "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz";
6850 sha1 = "e7a0c62c48285c628d20a10b85c89bb807c32850";
6851 };
6852 }
6853
6854 {
6855 name = "jsonfile___jsonfile_3.0.1.tgz";
6856 path = fetchurl {
6857 name = "jsonfile___jsonfile_3.0.1.tgz";
6858 url = "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz";
6859 sha1 = "a5ecc6f65f53f662c4415c7675a0331d0992ec66";
6860 };
6861 }
6862
6863 {
6864 name = "jsonfile___jsonfile_4.0.0.tgz";
6865 path = fetchurl {
6866 name = "jsonfile___jsonfile_4.0.0.tgz";
6867 url = "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz";
6868 sha1 = "8771aae0799b64076b76640fca058f9c10e33ecb";
6869 };
6870 }
6871
6872 {
6873 name = "jsonify___jsonify_0.0.0.tgz";
6874 path = fetchurl {
6875 name = "jsonify___jsonify_0.0.0.tgz";
6876 url = "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz";
6877 sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
6878 };
6879 }
6880
6881 {
6882 name = "jsonpointer___jsonpointer_4.0.1.tgz";
6883 path = fetchurl {
6884 name = "jsonpointer___jsonpointer_4.0.1.tgz";
6885 url = "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz";
6886 sha1 = "4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9";
6887 };
6888 }
6889
6890 {
6891 name = "jsprim___jsprim_1.4.1.tgz";
6892 path = fetchurl {
6893 name = "jsprim___jsprim_1.4.1.tgz";
6894 url = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz";
6895 sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
6896 };
6897 }
6898
6899 {
6900 name = "jsx_ast_utils___jsx_ast_utils_2.0.1.tgz";
6901 path = fetchurl {
6902 name = "jsx_ast_utils___jsx_ast_utils_2.0.1.tgz";
6903 url = "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz";
6904 sha1 = "e801b1b39985e20fffc87b40e3748080e2dcac7f";
6905 };
6906 }
6907
6908 {
6909 name = "keycode___keycode_2.2.0.tgz";
6910 path = fetchurl {
6911 name = "keycode___keycode_2.2.0.tgz";
6912 url = "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz";
6913 sha1 = "3d0af56dc7b8b8e5cba8d0a97f107204eec22b04";
6914 };
6915 }
6916
6917 {
6918 name = "killable___killable_1.0.1.tgz";
6919 path = fetchurl {
6920 name = "killable___killable_1.0.1.tgz";
6921 url = "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz";
6922 sha1 = "4c8ce441187a061c7474fb87ca08e2a638194892";
6923 };
6924 }
6925
6926 {
6927 name = "kind_of___kind_of_3.2.2.tgz";
6928 path = fetchurl {
6929 name = "kind_of___kind_of_3.2.2.tgz";
6930 url = "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz";
6931 sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
6932 };
6933 }
6934
6935 {
6936 name = "kind_of___kind_of_4.0.0.tgz";
6937 path = fetchurl {
6938 name = "kind_of___kind_of_4.0.0.tgz";
6939 url = "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz";
6940 sha1 = "20813df3d712928b207378691a45066fae72dd57";
6941 };
6942 }
6943
6944 {
6945 name = "kind_of___kind_of_5.1.0.tgz";
6946 path = fetchurl {
6947 name = "kind_of___kind_of_5.1.0.tgz";
6948 url = "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz";
6949 sha1 = "729c91e2d857b7a419a1f9aa65685c4c33f5845d";
6950 };
6951 }
6952
6953 {
6954 name = "kind_of___kind_of_6.0.2.tgz";
6955 path = fetchurl {
6956 name = "kind_of___kind_of_6.0.2.tgz";
6957 url = "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz";
6958 sha1 = "01146b36a6218e64e58f3a8d66de5d7fc6f6d051";
6959 };
6960 }
6961
6962 {
6963 name = "kleur___kleur_3.0.2.tgz";
6964 path = fetchurl {
6965 name = "kleur___kleur_3.0.2.tgz";
6966 url = "https://registry.yarnpkg.com/kleur/-/kleur-3.0.2.tgz";
6967 sha1 = "83c7ec858a41098b613d5998a7b653962b504f68";
6968 };
6969 }
6970
6971 {
6972 name = "knot.js___knot.js_1.1.5.tgz";
6973 path = fetchurl {
6974 name = "knot.js___knot.js_1.1.5.tgz";
6975 url = "https://registry.yarnpkg.com/knot.js/-/knot.js-1.1.5.tgz";
6976 sha1 = "28e72522f703f50fe98812fde224dd72728fef5d";
6977 };
6978 }
6979
6980 {
6981 name = "known_css_properties___known_css_properties_0.3.0.tgz";
6982 path = fetchurl {
6983 name = "known_css_properties___known_css_properties_0.3.0.tgz";
6984 url = "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz";
6985 sha1 = "a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4";
6986 };
6987 }
6988
6989 {
6990 name = "lcid___lcid_2.0.0.tgz";
6991 path = fetchurl {
6992 name = "lcid___lcid_2.0.0.tgz";
6993 url = "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz";
6994 sha1 = "6ef5d2df60e52f82eb228a4c373e8d1f397253cf";
6995 };
6996 }
6997
6998 {
6999 name = "left_pad___left_pad_1.3.0.tgz";
7000 path = fetchurl {
7001 name = "left_pad___left_pad_1.3.0.tgz";
7002 url = "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz";
7003 sha1 = "5b8a3a7765dfe001261dde915589e782f8c94d1e";
7004 };
7005 }
7006
7007 {
7008 name = "leven___leven_2.1.0.tgz";
7009 path = fetchurl {
7010 name = "leven___leven_2.1.0.tgz";
7011 url = "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz";
7012 sha1 = "c2e7a9f772094dee9d34202ae8acce4687875580";
7013 };
7014 }
7015
7016 {
7017 name = "levn___levn_0.3.0.tgz";
7018 path = fetchurl {
7019 name = "levn___levn_0.3.0.tgz";
7020 url = "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz";
7021 sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
7022 };
7023 }
7024
7025 {
7026 name = "load_json_file___load_json_file_2.0.0.tgz";
7027 path = fetchurl {
7028 name = "load_json_file___load_json_file_2.0.0.tgz";
7029 url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz";
7030 sha1 = "7947e42149af80d696cbf797bcaabcfe1fe29ca8";
7031 };
7032 }
7033
7034 {
7035 name = "load_json_file___load_json_file_4.0.0.tgz";
7036 path = fetchurl {
7037 name = "load_json_file___load_json_file_4.0.0.tgz";
7038 url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz";
7039 sha1 = "2f5f45ab91e33216234fd53adab668eb4ec0993b";
7040 };
7041 }
7042
7043 {
7044 name = "loader_runner___loader_runner_2.3.1.tgz";
7045 path = fetchurl {
7046 name = "loader_runner___loader_runner_2.3.1.tgz";
7047 url = "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz";
7048 sha1 = "026f12fe7c3115992896ac02ba022ba92971b979";
7049 };
7050 }
7051
7052 {
7053 name = "loader_utils___loader_utils_0.2.17.tgz";
7054 path = fetchurl {
7055 name = "loader_utils___loader_utils_0.2.17.tgz";
7056 url = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz";
7057 sha1 = "f86e6374d43205a6e6c60e9196f17c0299bfb348";
7058 };
7059 }
7060
7061 {
7062 name = "loader_utils___loader_utils_1.2.3.tgz";
7063 path = fetchurl {
7064 name = "loader_utils___loader_utils_1.2.3.tgz";
7065 url = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz";
7066 sha1 = "1ff5dc6911c9f0a062531a4c04b609406108c2c7";
7067 };
7068 }
7069
7070 {
7071 name = "locate_path___locate_path_2.0.0.tgz";
7072 path = fetchurl {
7073 name = "locate_path___locate_path_2.0.0.tgz";
7074 url = "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz";
7075 sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
7076 };
7077 }
7078
7079 {
7080 name = "locate_path___locate_path_3.0.0.tgz";
7081 path = fetchurl {
7082 name = "locate_path___locate_path_3.0.0.tgz";
7083 url = "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz";
7084 sha1 = "dbec3b3ab759758071b58fe59fc41871af21400e";
7085 };
7086 }
7087
7088 {
7089 name = "lodash.capitalize___lodash.capitalize_4.2.1.tgz";
7090 path = fetchurl {
7091 name = "lodash.capitalize___lodash.capitalize_4.2.1.tgz";
7092 url = "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz";
7093 sha1 = "f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9";
7094 };
7095 }
7096
7097 {
7098 name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
7099 path = fetchurl {
7100 name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
7101 url = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz";
7102 sha1 = "d09178716ffea4dde9e5fb7b37f6f0802274580c";
7103 };
7104 }
7105
7106 {
7107 name = "lodash.escape___lodash.escape_4.0.1.tgz";
7108 path = fetchurl {
7109 name = "lodash.escape___lodash.escape_4.0.1.tgz";
7110 url = "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz";
7111 sha1 = "c9044690c21e04294beaa517712fded1fa88de98";
7112 };
7113 }
7114
7115 {
7116 name = "lodash.flattendeep___lodash.flattendeep_4.4.0.tgz";
7117 path = fetchurl {
7118 name = "lodash.flattendeep___lodash.flattendeep_4.4.0.tgz";
7119 url = "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz";
7120 sha1 = "fb030917f86a3134e5bc9bec0d69e0013ddfedb2";
7121 };
7122 }
7123
7124 {
7125 name = "lodash.get___lodash.get_4.4.2.tgz";
7126 path = fetchurl {
7127 name = "lodash.get___lodash.get_4.4.2.tgz";
7128 url = "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz";
7129 sha1 = "2d177f652fa31e939b4438d5341499dfa3825e99";
7130 };
7131 }
7132
7133 {
7134 name = "lodash.has___lodash.has_4.5.2.tgz";
7135 path = fetchurl {
7136 name = "lodash.has___lodash.has_4.5.2.tgz";
7137 url = "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz";
7138 sha1 = "d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862";
7139 };
7140 }
7141
7142 {
7143 name = "lodash.isboolean___lodash.isboolean_3.0.3.tgz";
7144 path = fetchurl {
7145 name = "lodash.isboolean___lodash.isboolean_3.0.3.tgz";
7146 url = "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz";
7147 sha1 = "6c2e171db2a257cd96802fd43b01b20d5f5870f6";
7148 };
7149 }
7150
7151 {
7152 name = "lodash.isequal___lodash.isequal_4.5.0.tgz";
7153 path = fetchurl {
7154 name = "lodash.isequal___lodash.isequal_4.5.0.tgz";
7155 url = "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz";
7156 sha1 = "415c4478f2bcc30120c22ce10ed3226f7d3e18e0";
7157 };
7158 }
7159
7160 {
7161 name = "lodash.isobject___lodash.isobject_3.0.2.tgz";
7162 path = fetchurl {
7163 name = "lodash.isobject___lodash.isobject_3.0.2.tgz";
7164 url = "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz";
7165 sha1 = "3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d";
7166 };
7167 }
7168
7169 {
7170 name = "lodash.kebabcase___lodash.kebabcase_4.1.1.tgz";
7171 path = fetchurl {
7172 name = "lodash.kebabcase___lodash.kebabcase_4.1.1.tgz";
7173 url = "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz";
7174 sha1 = "8489b1cb0d29ff88195cceca448ff6d6cc295c36";
7175 };
7176 }
7177
7178 {
7179 name = "lodash.memoize___lodash.memoize_4.1.2.tgz";
7180 path = fetchurl {
7181 name = "lodash.memoize___lodash.memoize_4.1.2.tgz";
7182 url = "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz";
7183 sha1 = "bcc6c49a42a2840ed997f323eada5ecd182e0bfe";
7184 };
7185 }
7186
7187 {
7188 name = "lodash.sortby___lodash.sortby_4.7.0.tgz";
7189 path = fetchurl {
7190 name = "lodash.sortby___lodash.sortby_4.7.0.tgz";
7191 url = "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz";
7192 sha1 = "edd14c824e2cc9c1e0b0a1b42bb5210516a42438";
7193 };
7194 }
7195
7196 {
7197 name = "lodash.tail___lodash.tail_4.1.1.tgz";
7198 path = fetchurl {
7199 name = "lodash.tail___lodash.tail_4.1.1.tgz";
7200 url = "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz";
7201 sha1 = "d2333a36d9e7717c8ad2f7cacafec7c32b444664";
7202 };
7203 }
7204
7205 {
7206 name = "lodash.uniq___lodash.uniq_4.5.0.tgz";
7207 path = fetchurl {
7208 name = "lodash.uniq___lodash.uniq_4.5.0.tgz";
7209 url = "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz";
7210 sha1 = "d0225373aeb652adc1bc82e4945339a842754773";
7211 };
7212 }
7213
7214 {
7215 name = "lodash___lodash_4.17.11.tgz";
7216 path = fetchurl {
7217 name = "lodash___lodash_4.17.11.tgz";
7218 url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz";
7219 sha1 = "b39ea6229ef607ecd89e2c8df12536891cac9b8d";
7220 };
7221 }
7222
7223 {
7224 name = "loglevel___loglevel_1.6.2.tgz";
7225 path = fetchurl {
7226 name = "loglevel___loglevel_1.6.2.tgz";
7227 url = "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.2.tgz";
7228 sha1 = "668c77948a03dbd22502a3513ace1f62a80cc372";
7229 };
7230 }
7231
7232 {
7233 name = "loose_envify___loose_envify_1.4.0.tgz";
7234 path = fetchurl {
7235 name = "loose_envify___loose_envify_1.4.0.tgz";
7236 url = "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz";
7237 sha1 = "71ee51fa7be4caec1a63839f7e682d8132d30caf";
7238 };
7239 }
7240
7241 {
7242 name = "lru_cache___lru_cache_5.1.1.tgz";
7243 path = fetchurl {
7244 name = "lru_cache___lru_cache_5.1.1.tgz";
7245 url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz";
7246 sha1 = "1da27e6710271947695daf6848e847f01d84b920";
7247 };
7248 }
7249
7250 {
7251 name = "make_dir___make_dir_1.3.0.tgz";
7252 path = fetchurl {
7253 name = "make_dir___make_dir_1.3.0.tgz";
7254 url = "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz";
7255 sha1 = "79c1033b80515bd6d24ec9933e860ca75ee27f0c";
7256 };
7257 }
7258
7259 {
7260 name = "makeerror___makeerror_1.0.11.tgz";
7261 path = fetchurl {
7262 name = "makeerror___makeerror_1.0.11.tgz";
7263 url = "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz";
7264 sha1 = "e01a5c9109f2af79660e4e8b9587790184f5a96c";
7265 };
7266 }
7267
7268 {
7269 name = "mamacro___mamacro_0.0.3.tgz";
7270 path = fetchurl {
7271 name = "mamacro___mamacro_0.0.3.tgz";
7272 url = "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz";
7273 sha1 = "ad2c9576197c9f1abf308d0787865bd975a3f3e4";
7274 };
7275 }
7276
7277 {
7278 name = "map_age_cleaner___map_age_cleaner_0.1.3.tgz";
7279 path = fetchurl {
7280 name = "map_age_cleaner___map_age_cleaner_0.1.3.tgz";
7281 url = "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz";
7282 sha1 = "7d583a7306434c055fe474b0f45078e6e1b4b92a";
7283 };
7284 }
7285
7286 {
7287 name = "map_cache___map_cache_0.2.2.tgz";
7288 path = fetchurl {
7289 name = "map_cache___map_cache_0.2.2.tgz";
7290 url = "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz";
7291 sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf";
7292 };
7293 }
7294
7295 {
7296 name = "map_visit___map_visit_1.0.0.tgz";
7297 path = fetchurl {
7298 name = "map_visit___map_visit_1.0.0.tgz";
7299 url = "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz";
7300 sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
7301 };
7302 }
7303
7304 {
7305 name = "mark_loader___mark_loader_0.1.6.tgz";
7306 path = fetchurl {
7307 name = "mark_loader___mark_loader_0.1.6.tgz";
7308 url = "https://registry.yarnpkg.com/mark-loader/-/mark-loader-0.1.6.tgz";
7309 sha1 = "0abb477dca7421d70e20128ff6489f5cae8676d5";
7310 };
7311 }
7312
7313 {
7314 name = "marky___marky_1.2.1.tgz";
7315 path = fetchurl {
7316 name = "marky___marky_1.2.1.tgz";
7317 url = "https://registry.yarnpkg.com/marky/-/marky-1.2.1.tgz";
7318 sha1 = "a3fcf82ffd357756b8b8affec9fdbf3a30dc1b02";
7319 };
7320 }
7321
7322 {
7323 name = "md5.js___md5.js_1.3.5.tgz";
7324 path = fetchurl {
7325 name = "md5.js___md5.js_1.3.5.tgz";
7326 url = "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz";
7327 sha1 = "b5d07b8e3216e3e27cd728d72f70d1e6a342005f";
7328 };
7329 }
7330
7331 {
7332 name = "mdn_data___mdn_data_1.1.4.tgz";
7333 path = fetchurl {
7334 name = "mdn_data___mdn_data_1.1.4.tgz";
7335 url = "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz";
7336 sha1 = "50b5d4ffc4575276573c4eedb8780812a8419f01";
7337 };
7338 }
7339
7340 {
7341 name = "media_typer___media_typer_0.3.0.tgz";
7342 path = fetchurl {
7343 name = "media_typer___media_typer_0.3.0.tgz";
7344 url = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz";
7345 sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
7346 };
7347 }
7348
7349 {
7350 name = "mem___mem_4.0.0.tgz";
7351 path = fetchurl {
7352 name = "mem___mem_4.0.0.tgz";
7353 url = "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz";
7354 sha1 = "6437690d9471678f6cc83659c00cbafcd6b0cdaf";
7355 };
7356 }
7357
7358 {
7359 name = "memoize_one___memoize_one_5.0.4.tgz";
7360 path = fetchurl {
7361 name = "memoize_one___memoize_one_5.0.4.tgz";
7362 url = "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.0.4.tgz";
7363 sha1 = "005928aced5c43d890a4dfab18ca908b0ec92cbc";
7364 };
7365 }
7366
7367 {
7368 name = "memory_fs___memory_fs_0.4.1.tgz";
7369 path = fetchurl {
7370 name = "memory_fs___memory_fs_0.4.1.tgz";
7371 url = "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz";
7372 sha1 = "3a9a20b8462523e447cfbc7e8bb80ed667bfc552";
7373 };
7374 }
7375
7376 {
7377 name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
7378 path = fetchurl {
7379 name = "merge_descriptors___merge_descriptors_1.0.1.tgz";
7380 url = "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
7381 sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
7382 };
7383 }
7384
7385 {
7386 name = "merge_stream___merge_stream_1.0.1.tgz";
7387 path = fetchurl {
7388 name = "merge_stream___merge_stream_1.0.1.tgz";
7389 url = "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz";
7390 sha1 = "4041202d508a342ba00174008df0c251b8c135e1";
7391 };
7392 }
7393
7394 {
7395 name = "merge___merge_1.2.1.tgz";
7396 path = fetchurl {
7397 name = "merge___merge_1.2.1.tgz";
7398 url = "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz";
7399 sha1 = "38bebf80c3220a8a487b6fcfb3941bb11720c145";
7400 };
7401 }
7402
7403 {
7404 name = "methods___methods_1.1.2.tgz";
7405 path = fetchurl {
7406 name = "methods___methods_1.1.2.tgz";
7407 url = "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz";
7408 sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
7409 };
7410 }
7411
7412 {
7413 name = "micromatch___micromatch_3.1.10.tgz";
7414 path = fetchurl {
7415 name = "micromatch___micromatch_3.1.10.tgz";
7416 url = "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz";
7417 sha1 = "70859bc95c9840952f359a068a3fc49f9ecfac23";
7418 };
7419 }
7420
7421 {
7422 name = "miller_rabin___miller_rabin_4.0.1.tgz";
7423 path = fetchurl {
7424 name = "miller_rabin___miller_rabin_4.0.1.tgz";
7425 url = "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz";
7426 sha1 = "f080351c865b0dc562a8462966daa53543c78a4d";
7427 };
7428 }
7429
7430 {
7431 name = "mime_db___mime_db_1.40.0.tgz";
7432 path = fetchurl {
7433 name = "mime_db___mime_db_1.40.0.tgz";
7434 url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz";
7435 sha1 = "a65057e998db090f732a68f6c276d387d4126c32";
7436 };
7437 }
7438
7439 {
7440 name = "mime_db___mime_db_1.37.0.tgz";
7441 path = fetchurl {
7442 name = "mime_db___mime_db_1.37.0.tgz";
7443 url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz";
7444 sha1 = "0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8";
7445 };
7446 }
7447
7448 {
7449 name = "mime_types___mime_types_2.1.21.tgz";
7450 path = fetchurl {
7451 name = "mime_types___mime_types_2.1.21.tgz";
7452 url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz";
7453 sha1 = "28995aa1ecb770742fe6ae7e58f9181c744b3f96";
7454 };
7455 }
7456
7457 {
7458 name = "mime_types___mime_types_2.1.24.tgz";
7459 path = fetchurl {
7460 name = "mime_types___mime_types_2.1.24.tgz";
7461 url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz";
7462 sha1 = "b6f8d0b3e951efb77dedeca194cff6d16f676f81";
7463 };
7464 }
7465
7466 {
7467 name = "mime___mime_1.6.0.tgz";
7468 path = fetchurl {
7469 name = "mime___mime_1.6.0.tgz";
7470 url = "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz";
7471 sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1";
7472 };
7473 }
7474
7475 {
7476 name = "mime___mime_2.4.3.tgz";
7477 path = fetchurl {
7478 name = "mime___mime_2.4.3.tgz";
7479 url = "https://registry.yarnpkg.com/mime/-/mime-2.4.3.tgz";
7480 sha1 = "229687331e86f68924e6cb59e1cdd937f18275fe";
7481 };
7482 }
7483
7484 {
7485 name = "mimic_fn___mimic_fn_1.2.0.tgz";
7486 path = fetchurl {
7487 name = "mimic_fn___mimic_fn_1.2.0.tgz";
7488 url = "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz";
7489 sha1 = "820c86a39334640e99516928bd03fca88057d022";
7490 };
7491 }
7492
7493 {
7494 name = "mini_css_extract_plugin___mini_css_extract_plugin_0.5.0.tgz";
7495 path = fetchurl {
7496 name = "mini_css_extract_plugin___mini_css_extract_plugin_0.5.0.tgz";
7497 url = "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz";
7498 sha1 = "ac0059b02b9692515a637115b0cc9fed3a35c7b0";
7499 };
7500 }
7501
7502 {
7503 name = "minimalistic_assert___minimalistic_assert_1.0.1.tgz";
7504 path = fetchurl {
7505 name = "minimalistic_assert___minimalistic_assert_1.0.1.tgz";
7506 url = "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz";
7507 sha1 = "2e194de044626d4a10e7f7fbc00ce73e83e4d5c7";
7508 };
7509 }
7510
7511 {
7512 name = "minimalistic_crypto_utils___minimalistic_crypto_utils_1.0.1.tgz";
7513 path = fetchurl {
7514 name = "minimalistic_crypto_utils___minimalistic_crypto_utils_1.0.1.tgz";
7515 url = "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz";
7516 sha1 = "f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a";
7517 };
7518 }
7519
7520 {
7521 name = "minimatch___minimatch_3.0.4.tgz";
7522 path = fetchurl {
7523 name = "minimatch___minimatch_3.0.4.tgz";
7524 url = "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz";
7525 sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
7526 };
7527 }
7528
7529 {
7530 name = "minimist___minimist_0.0.8.tgz";
7531 path = fetchurl {
7532 name = "minimist___minimist_0.0.8.tgz";
7533 url = "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz";
7534 sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
7535 };
7536 }
7537
7538 {
7539 name = "minimist___minimist_1.1.3.tgz";
7540 path = fetchurl {
7541 name = "minimist___minimist_1.1.3.tgz";
7542 url = "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz";
7543 sha1 = "3bedfd91a92d39016fcfaa1c681e8faa1a1efda8";
7544 };
7545 }
7546
7547 {
7548 name = "minimist___minimist_1.2.0.tgz";
7549 path = fetchurl {
7550 name = "minimist___minimist_1.2.0.tgz";
7551 url = "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz";
7552 sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
7553 };
7554 }
7555
7556 {
7557 name = "minimist___minimist_0.0.10.tgz";
7558 path = fetchurl {
7559 name = "minimist___minimist_0.0.10.tgz";
7560 url = "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz";
7561 sha1 = "de3f98543dbf96082be48ad1a0c7cda836301dcf";
7562 };
7563 }
7564
7565 {
7566 name = "minipass___minipass_2.3.5.tgz";
7567 path = fetchurl {
7568 name = "minipass___minipass_2.3.5.tgz";
7569 url = "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz";
7570 sha1 = "cacebe492022497f656b0f0f51e2682a9ed2d848";
7571 };
7572 }
7573
7574 {
7575 name = "minizlib___minizlib_1.2.1.tgz";
7576 path = fetchurl {
7577 name = "minizlib___minizlib_1.2.1.tgz";
7578 url = "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz";
7579 sha1 = "dd27ea6136243c7c880684e8672bb3a45fd9b614";
7580 };
7581 }
7582
7583 {
7584 name = "mississippi___mississippi_3.0.0.tgz";
7585 path = fetchurl {
7586 name = "mississippi___mississippi_3.0.0.tgz";
7587 url = "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz";
7588 sha1 = "ea0a3291f97e0b5e8776b363d5f0a12d94c67022";
7589 };
7590 }
7591
7592 {
7593 name = "mixin_deep___mixin_deep_1.3.1.tgz";
7594 path = fetchurl {
7595 name = "mixin_deep___mixin_deep_1.3.1.tgz";
7596 url = "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz";
7597 sha1 = "a49e7268dce1a0d9698e45326c5626df3543d0fe";
7598 };
7599 }
7600
7601 {
7602 name = "mixin_object___mixin_object_2.0.1.tgz";
7603 path = fetchurl {
7604 name = "mixin_object___mixin_object_2.0.1.tgz";
7605 url = "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz";
7606 sha1 = "4fb949441dab182540f1fe035ba60e1947a5e57e";
7607 };
7608 }
7609
7610 {
7611 name = "mkdirp___mkdirp_0.5.1.tgz";
7612 path = fetchurl {
7613 name = "mkdirp___mkdirp_0.5.1.tgz";
7614 url = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz";
7615 sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
7616 };
7617 }
7618
7619 {
7620 name = "moo___moo_0.4.3.tgz";
7621 path = fetchurl {
7622 name = "moo___moo_0.4.3.tgz";
7623 url = "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz";
7624 sha1 = "3f847a26f31cf625a956a87f2b10fbc013bfd10e";
7625 };
7626 }
7627
7628 {
7629 name = "mousetrap___mousetrap_1.6.2.tgz";
7630 path = fetchurl {
7631 name = "mousetrap___mousetrap_1.6.2.tgz";
7632 url = "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.6.2.tgz";
7633 sha1 = "caadd9cf886db0986fb2fee59a82f6bd37527587";
7634 };
7635 }
7636
7637 {
7638 name = "move_concurrently___move_concurrently_1.0.1.tgz";
7639 path = fetchurl {
7640 name = "move_concurrently___move_concurrently_1.0.1.tgz";
7641 url = "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz";
7642 sha1 = "be2c005fda32e0b29af1f05d7c4b33214c701f92";
7643 };
7644 }
7645
7646 {
7647 name = "ms___ms_2.0.0.tgz";
7648 path = fetchurl {
7649 name = "ms___ms_2.0.0.tgz";
7650 url = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
7651 sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
7652 };
7653 }
7654
7655 {
7656 name = "ms___ms_2.1.1.tgz";
7657 path = fetchurl {
7658 name = "ms___ms_2.1.1.tgz";
7659 url = "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz";
7660 sha1 = "30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a";
7661 };
7662 }
7663
7664 {
7665 name = "multicast_dns_service_types___multicast_dns_service_types_1.1.0.tgz";
7666 path = fetchurl {
7667 name = "multicast_dns_service_types___multicast_dns_service_types_1.1.0.tgz";
7668 url = "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz";
7669 sha1 = "899f11d9686e5e05cb91b35d5f0e63b773cfc901";
7670 };
7671 }
7672
7673 {
7674 name = "multicast_dns___multicast_dns_6.2.3.tgz";
7675 path = fetchurl {
7676 name = "multicast_dns___multicast_dns_6.2.3.tgz";
7677 url = "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz";
7678 sha1 = "a0ec7bd9055c4282f790c3c82f4e28db3b31b229";
7679 };
7680 }
7681
7682 {
7683 name = "mute_stream___mute_stream_0.0.5.tgz";
7684 path = fetchurl {
7685 name = "mute_stream___mute_stream_0.0.5.tgz";
7686 url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz";
7687 sha1 = "8fbfabb0a98a253d3184331f9e8deb7372fac6c0";
7688 };
7689 }
7690
7691 {
7692 name = "mute_stream___mute_stream_0.0.7.tgz";
7693 path = fetchurl {
7694 name = "mute_stream___mute_stream_0.0.7.tgz";
7695 url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz";
7696 sha1 = "3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab";
7697 };
7698 }
7699
7700 {
7701 name = "nan___nan_2.14.0.tgz";
7702 path = fetchurl {
7703 name = "nan___nan_2.14.0.tgz";
7704 url = "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz";
7705 sha1 = "7818f722027b2459a86f0295d434d1fc2336c52c";
7706 };
7707 }
7708
7709 {
7710 name = "nanomatch___nanomatch_1.2.13.tgz";
7711 path = fetchurl {
7712 name = "nanomatch___nanomatch_1.2.13.tgz";
7713 url = "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz";
7714 sha1 = "b87a8aa4fc0de8fe6be88895b38983ff265bd119";
7715 };
7716 }
7717
7718 {
7719 name = "natural_compare___natural_compare_1.4.0.tgz";
7720 path = fetchurl {
7721 name = "natural_compare___natural_compare_1.4.0.tgz";
7722 url = "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz";
7723 sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7";
7724 };
7725 }
7726
7727 {
7728 name = "nearley___nearley_2.16.0.tgz";
7729 path = fetchurl {
7730 name = "nearley___nearley_2.16.0.tgz";
7731 url = "https://registry.yarnpkg.com/nearley/-/nearley-2.16.0.tgz";
7732 sha1 = "77c297d041941d268290ec84b739d0ee297e83a7";
7733 };
7734 }
7735
7736 {
7737 name = "needle___needle_2.2.4.tgz";
7738 path = fetchurl {
7739 name = "needle___needle_2.2.4.tgz";
7740 url = "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz";
7741 sha1 = "51931bff82533b1928b7d1d69e01f1b00ffd2a4e";
7742 };
7743 }
7744
7745 {
7746 name = "negotiator___negotiator_0.6.2.tgz";
7747 path = fetchurl {
7748 name = "negotiator___negotiator_0.6.2.tgz";
7749 url = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz";
7750 sha1 = "feacf7ccf525a77ae9634436a64883ffeca346fb";
7751 };
7752 }
7753
7754 {
7755 name = "neo_async___neo_async_2.6.0.tgz";
7756 path = fetchurl {
7757 name = "neo_async___neo_async_2.6.0.tgz";
7758 url = "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz";
7759 sha1 = "b9d15e4d71c6762908654b5183ed38b753340835";
7760 };
7761 }
7762
7763 {
7764 name = "next_tick___next_tick_1.0.0.tgz";
7765 path = fetchurl {
7766 name = "next_tick___next_tick_1.0.0.tgz";
7767 url = "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz";
7768 sha1 = "ca86d1fe8828169b0120208e3dc8424b9db8342c";
7769 };
7770 }
7771
7772 {
7773 name = "nice_try___nice_try_1.0.5.tgz";
7774 path = fetchurl {
7775 name = "nice_try___nice_try_1.0.5.tgz";
7776 url = "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz";
7777 sha1 = "a3378a7696ce7d223e88fc9b764bd7ef1089e366";
7778 };
7779 }
7780
7781 {
7782 name = "node_fetch___node_fetch_1.7.3.tgz";
7783 path = fetchurl {
7784 name = "node_fetch___node_fetch_1.7.3.tgz";
7785 url = "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz";
7786 sha1 = "980f6f72d85211a5347c6b2bc18c5b84c3eb47ef";
7787 };
7788 }
7789
7790 {
7791 name = "node_forge___node_forge_0.7.5.tgz";
7792 path = fetchurl {
7793 name = "node_forge___node_forge_0.7.5.tgz";
7794 url = "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz";
7795 sha1 = "6c152c345ce11c52f465c2abd957e8639cd674df";
7796 };
7797 }
7798
7799 {
7800 name = "node_int64___node_int64_0.4.0.tgz";
7801 path = fetchurl {
7802 name = "node_int64___node_int64_0.4.0.tgz";
7803 url = "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz";
7804 sha1 = "87a9065cdb355d3182d8f94ce11188b825c68a3b";
7805 };
7806 }
7807
7808 {
7809 name = "node_libs_browser___node_libs_browser_2.1.0.tgz";
7810 path = fetchurl {
7811 name = "node_libs_browser___node_libs_browser_2.1.0.tgz";
7812 url = "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz";
7813 sha1 = "5f94263d404f6e44767d726901fff05478d600df";
7814 };
7815 }
7816
7817 {
7818 name = "node_modules_regexp___node_modules_regexp_1.0.0.tgz";
7819 path = fetchurl {
7820 name = "node_modules_regexp___node_modules_regexp_1.0.0.tgz";
7821 url = "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz";
7822 sha1 = "8d9dbe28964a4ac5712e9131642107c71e90ec40";
7823 };
7824 }
7825
7826 {
7827 name = "node_notifier___node_notifier_5.3.0.tgz";
7828 path = fetchurl {
7829 name = "node_notifier___node_notifier_5.3.0.tgz";
7830 url = "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.3.0.tgz";
7831 sha1 = "c77a4a7b84038733d5fb351aafd8a268bfe19a01";
7832 };
7833 }
7834
7835 {
7836 name = "node_pre_gyp___node_pre_gyp_0.12.0.tgz";
7837 path = fetchurl {
7838 name = "node_pre_gyp___node_pre_gyp_0.12.0.tgz";
7839 url = "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz";
7840 sha1 = "39ba4bb1439da030295f899e3b520b7785766149";
7841 };
7842 }
7843
7844 {
7845 name = "node_releases___node_releases_1.1.23.tgz";
7846 path = fetchurl {
7847 name = "node_releases___node_releases_1.1.23.tgz";
7848 url = "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.23.tgz";
7849 sha1 = "de7409f72de044a2fa59c097f436ba89c39997f0";
7850 };
7851 }
7852
7853 {
7854 name = "nopt___nopt_4.0.1.tgz";
7855 path = fetchurl {
7856 name = "nopt___nopt_4.0.1.tgz";
7857 url = "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz";
7858 sha1 = "d0d4685afd5415193c8c7505602d0d17cd64474d";
7859 };
7860 }
7861
7862 {
7863 name = "nopt___nopt_1.0.10.tgz";
7864 path = fetchurl {
7865 name = "nopt___nopt_1.0.10.tgz";
7866 url = "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz";
7867 sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee";
7868 };
7869 }
7870
7871 {
7872 name = "normalize_package_data___normalize_package_data_2.4.0.tgz";
7873 path = fetchurl {
7874 name = "normalize_package_data___normalize_package_data_2.4.0.tgz";
7875 url = "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz";
7876 sha1 = "12f95a307d58352075a04907b84ac8be98ac012f";
7877 };
7878 }
7879
7880 {
7881 name = "normalize_path___normalize_path_2.1.1.tgz";
7882 path = fetchurl {
7883 name = "normalize_path___normalize_path_2.1.1.tgz";
7884 url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz";
7885 sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
7886 };
7887 }
7888
7889 {
7890 name = "normalize_path___normalize_path_3.0.0.tgz";
7891 path = fetchurl {
7892 name = "normalize_path___normalize_path_3.0.0.tgz";
7893 url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz";
7894 sha1 = "0dcd69ff23a1c9b11fd0978316644a0388216a65";
7895 };
7896 }
7897
7898 {
7899 name = "normalize_range___normalize_range_0.1.2.tgz";
7900 path = fetchurl {
7901 name = "normalize_range___normalize_range_0.1.2.tgz";
7902 url = "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz";
7903 sha1 = "2d10c06bdfd312ea9777695a4d28439456b75942";
7904 };
7905 }
7906
7907 {
7908 name = "normalize_url___normalize_url_3.3.0.tgz";
7909 path = fetchurl {
7910 name = "normalize_url___normalize_url_3.3.0.tgz";
7911 url = "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz";
7912 sha1 = "b2e1c4dc4f7c6d57743df733a4f5978d18650559";
7913 };
7914 }
7915
7916 {
7917 name = "npm_bundled___npm_bundled_1.0.5.tgz";
7918 path = fetchurl {
7919 name = "npm_bundled___npm_bundled_1.0.5.tgz";
7920 url = "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz";
7921 sha1 = "3c1732b7ba936b3a10325aef616467c0ccbcc979";
7922 };
7923 }
7924
7925 {
7926 name = "npm_packlist___npm_packlist_1.1.12.tgz";
7927 path = fetchurl {
7928 name = "npm_packlist___npm_packlist_1.1.12.tgz";
7929 url = "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz";
7930 sha1 = "22bde2ebc12e72ca482abd67afc51eb49377243a";
7931 };
7932 }
7933
7934 {
7935 name = "npm_run_path___npm_run_path_2.0.2.tgz";
7936 path = fetchurl {
7937 name = "npm_run_path___npm_run_path_2.0.2.tgz";
7938 url = "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz";
7939 sha1 = "35a9232dfa35d7067b4cb2ddf2357b1871536c5f";
7940 };
7941 }
7942
7943 {
7944 name = "npmlog___npmlog_4.1.2.tgz";
7945 path = fetchurl {
7946 name = "npmlog___npmlog_4.1.2.tgz";
7947 url = "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz";
7948 sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b";
7949 };
7950 }
7951
7952 {
7953 name = "nth_check___nth_check_1.0.2.tgz";
7954 path = fetchurl {
7955 name = "nth_check___nth_check_1.0.2.tgz";
7956 url = "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz";
7957 sha1 = "b2bd295c37e3dd58a3bf0700376663ba4d9cf05c";
7958 };
7959 }
7960
7961 {
7962 name = "num2fraction___num2fraction_1.2.2.tgz";
7963 path = fetchurl {
7964 name = "num2fraction___num2fraction_1.2.2.tgz";
7965 url = "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz";
7966 sha1 = "6f682b6a027a4e9ddfa4564cd2589d1d4e669ede";
7967 };
7968 }
7969
7970 {
7971 name = "number_is_nan___number_is_nan_1.0.1.tgz";
7972 path = fetchurl {
7973 name = "number_is_nan___number_is_nan_1.0.1.tgz";
7974 url = "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz";
7975 sha1 = "097b602b53422a522c1afb8790318336941a011d";
7976 };
7977 }
7978
7979 {
7980 name = "nwsapi___nwsapi_2.0.9.tgz";
7981 path = fetchurl {
7982 name = "nwsapi___nwsapi_2.0.9.tgz";
7983 url = "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz";
7984 sha1 = "77ac0cdfdcad52b6a1151a84e73254edc33ed016";
7985 };
7986 }
7987
7988 {
7989 name = "oauth_sign___oauth_sign_0.9.0.tgz";
7990 path = fetchurl {
7991 name = "oauth_sign___oauth_sign_0.9.0.tgz";
7992 url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz";
7993 sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455";
7994 };
7995 }
7996
7997 {
7998 name = "object_assign___object_assign_4.1.0.tgz";
7999 path = fetchurl {
8000 name = "object_assign___object_assign_4.1.0.tgz";
8001 url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz";
8002 sha1 = "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0";
8003 };
8004 }
8005
8006 {
8007 name = "object_assign___object_assign_4.1.1.tgz";
8008 path = fetchurl {
8009 name = "object_assign___object_assign_4.1.1.tgz";
8010 url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz";
8011 sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
8012 };
8013 }
8014
8015 {
8016 name = "object_copy___object_copy_0.1.0.tgz";
8017 path = fetchurl {
8018 name = "object_copy___object_copy_0.1.0.tgz";
8019 url = "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz";
8020 sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
8021 };
8022 }
8023
8024 {
8025 name = "object_fit_images___object_fit_images_3.2.4.tgz";
8026 path = fetchurl {
8027 name = "object_fit_images___object_fit_images_3.2.4.tgz";
8028 url = "https://registry.yarnpkg.com/object-fit-images/-/object-fit-images-3.2.4.tgz";
8029 sha1 = "6c299d38fdf207746e5d2d46c2877f6f25d15b52";
8030 };
8031 }
8032
8033 {
8034 name = "object_inspect___object_inspect_1.6.0.tgz";
8035 path = fetchurl {
8036 name = "object_inspect___object_inspect_1.6.0.tgz";
8037 url = "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz";
8038 sha1 = "c70b6cbf72f274aab4c34c0c82f5167bf82cf15b";
8039 };
8040 }
8041
8042 {
8043 name = "object_is___object_is_1.0.1.tgz";
8044 path = fetchurl {
8045 name = "object_is___object_is_1.0.1.tgz";
8046 url = "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz";
8047 sha1 = "0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6";
8048 };
8049 }
8050
8051 {
8052 name = "object_keys___object_keys_1.0.12.tgz";
8053 path = fetchurl {
8054 name = "object_keys___object_keys_1.0.12.tgz";
8055 url = "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz";
8056 sha1 = "09c53855377575310cca62f55bb334abff7b3ed2";
8057 };
8058 }
8059
8060 {
8061 name = "object_visit___object_visit_1.0.1.tgz";
8062 path = fetchurl {
8063 name = "object_visit___object_visit_1.0.1.tgz";
8064 url = "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz";
8065 sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb";
8066 };
8067 }
8068
8069 {
8070 name = "object.assign___object.assign_4.1.0.tgz";
8071 path = fetchurl {
8072 name = "object.assign___object.assign_4.1.0.tgz";
8073 url = "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz";
8074 sha1 = "968bf1100d7956bb3ca086f006f846b3bc4008da";
8075 };
8076 }
8077
8078 {
8079 name = "object.entries___object.entries_1.1.0.tgz";
8080 path = fetchurl {
8081 name = "object.entries___object.entries_1.1.0.tgz";
8082 url = "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz";
8083 sha1 = "2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519";
8084 };
8085 }
8086
8087 {
8088 name = "object.fromentries___object.fromentries_2.0.0.tgz";
8089 path = fetchurl {
8090 name = "object.fromentries___object.fromentries_2.0.0.tgz";
8091 url = "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz";
8092 sha1 = "49a543d92151f8277b3ac9600f1e930b189d30ab";
8093 };
8094 }
8095
8096 {
8097 name = "object.getownpropertydescriptors___object.getownpropertydescriptors_2.0.3.tgz";
8098 path = fetchurl {
8099 name = "object.getownpropertydescriptors___object.getownpropertydescriptors_2.0.3.tgz";
8100 url = "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz";
8101 sha1 = "8758c846f5b407adab0f236e0986f14b051caa16";
8102 };
8103 }
8104
8105 {
8106 name = "object.pick___object.pick_1.3.0.tgz";
8107 path = fetchurl {
8108 name = "object.pick___object.pick_1.3.0.tgz";
8109 url = "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz";
8110 sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
8111 };
8112 }
8113
8114 {
8115 name = "object.values___object.values_1.1.0.tgz";
8116 path = fetchurl {
8117 name = "object.values___object.values_1.1.0.tgz";
8118 url = "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz";
8119 sha1 = "bf6810ef5da3e5325790eaaa2be213ea84624da9";
8120 };
8121 }
8122
8123 {
8124 name = "obuf___obuf_1.1.2.tgz";
8125 path = fetchurl {
8126 name = "obuf___obuf_1.1.2.tgz";
8127 url = "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz";
8128 sha1 = "09bea3343d41859ebd446292d11c9d4db619084e";
8129 };
8130 }
8131
8132 {
8133 name = "offline_plugin___offline_plugin_5.0.7.tgz";
8134 path = fetchurl {
8135 name = "offline_plugin___offline_plugin_5.0.7.tgz";
8136 url = "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-5.0.7.tgz";
8137 sha1 = "26936ad1a7699f4d67e0a095a258972a4ccf1788";
8138 };
8139 }
8140
8141 {
8142 name = "on_finished___on_finished_2.3.0.tgz";
8143 path = fetchurl {
8144 name = "on_finished___on_finished_2.3.0.tgz";
8145 url = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz";
8146 sha1 = "20f1336481b083cd75337992a16971aa2d906947";
8147 };
8148 }
8149
8150 {
8151 name = "on_headers___on_headers_1.0.2.tgz";
8152 path = fetchurl {
8153 name = "on_headers___on_headers_1.0.2.tgz";
8154 url = "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz";
8155 sha1 = "772b0ae6aaa525c399e489adfad90c403eb3c28f";
8156 };
8157 }
8158
8159 {
8160 name = "once___once_1.4.0.tgz";
8161 path = fetchurl {
8162 name = "once___once_1.4.0.tgz";
8163 url = "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz";
8164 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
8165 };
8166 }
8167
8168 {
8169 name = "onetime___onetime_1.1.0.tgz";
8170 path = fetchurl {
8171 name = "onetime___onetime_1.1.0.tgz";
8172 url = "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz";
8173 sha1 = "a1f7838f8314c516f05ecefcbc4ccfe04b4ed789";
8174 };
8175 }
8176
8177 {
8178 name = "onetime___onetime_2.0.1.tgz";
8179 path = fetchurl {
8180 name = "onetime___onetime_2.0.1.tgz";
8181 url = "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz";
8182 sha1 = "067428230fd67443b2794b22bba528b6867962d4";
8183 };
8184 }
8185
8186 {
8187 name = "opener___opener_1.5.1.tgz";
8188 path = fetchurl {
8189 name = "opener___opener_1.5.1.tgz";
8190 url = "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz";
8191 sha1 = "6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed";
8192 };
8193 }
8194
8195 {
8196 name = "opn___opn_5.5.0.tgz";
8197 path = fetchurl {
8198 name = "opn___opn_5.5.0.tgz";
8199 url = "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz";
8200 sha1 = "fc7164fab56d235904c51c3b27da6758ca3b9bfc";
8201 };
8202 }
8203
8204 {
8205 name = "optimist___optimist_0.6.1.tgz";
8206 path = fetchurl {
8207 name = "optimist___optimist_0.6.1.tgz";
8208 url = "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz";
8209 sha1 = "da3ea74686fa21a19a111c326e90eb15a0196686";
8210 };
8211 }
8212
8213 {
8214 name = "optionator___optionator_0.8.2.tgz";
8215 path = fetchurl {
8216 name = "optionator___optionator_0.8.2.tgz";
8217 url = "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz";
8218 sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64";
8219 };
8220 }
8221
8222 {
8223 name = "original___original_1.0.2.tgz";
8224 path = fetchurl {
8225 name = "original___original_1.0.2.tgz";
8226 url = "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz";
8227 sha1 = "e442a61cffe1c5fd20a65f3261c26663b303f25f";
8228 };
8229 }
8230
8231 {
8232 name = "os_browserify___os_browserify_0.3.0.tgz";
8233 path = fetchurl {
8234 name = "os_browserify___os_browserify_0.3.0.tgz";
8235 url = "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz";
8236 sha1 = "854373c7f5c2315914fc9bfc6bd8238fdda1ec27";
8237 };
8238 }
8239
8240 {
8241 name = "os_homedir___os_homedir_1.0.2.tgz";
8242 path = fetchurl {
8243 name = "os_homedir___os_homedir_1.0.2.tgz";
8244 url = "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz";
8245 sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
8246 };
8247 }
8248
8249 {
8250 name = "os_locale___os_locale_3.1.0.tgz";
8251 path = fetchurl {
8252 name = "os_locale___os_locale_3.1.0.tgz";
8253 url = "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz";
8254 sha1 = "a802a6ee17f24c10483ab9935719cef4ed16bf1a";
8255 };
8256 }
8257
8258 {
8259 name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
8260 path = fetchurl {
8261 name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
8262 url = "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
8263 sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
8264 };
8265 }
8266
8267 {
8268 name = "osenv___osenv_0.1.5.tgz";
8269 path = fetchurl {
8270 name = "osenv___osenv_0.1.5.tgz";
8271 url = "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz";
8272 sha1 = "85cdfafaeb28e8677f416e287592b5f3f49ea410";
8273 };
8274 }
8275
8276 {
8277 name = "p_defer___p_defer_1.0.0.tgz";
8278 path = fetchurl {
8279 name = "p_defer___p_defer_1.0.0.tgz";
8280 url = "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz";
8281 sha1 = "9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c";
8282 };
8283 }
8284
8285 {
8286 name = "p_each_series___p_each_series_1.0.0.tgz";
8287 path = fetchurl {
8288 name = "p_each_series___p_each_series_1.0.0.tgz";
8289 url = "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz";
8290 sha1 = "930f3d12dd1f50e7434457a22cd6f04ac6ad7f71";
8291 };
8292 }
8293
8294 {
8295 name = "p_finally___p_finally_1.0.0.tgz";
8296 path = fetchurl {
8297 name = "p_finally___p_finally_1.0.0.tgz";
8298 url = "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz";
8299 sha1 = "3fbcfb15b899a44123b34b6dcc18b724336a2cae";
8300 };
8301 }
8302
8303 {
8304 name = "p_is_promise___p_is_promise_1.1.0.tgz";
8305 path = fetchurl {
8306 name = "p_is_promise___p_is_promise_1.1.0.tgz";
8307 url = "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz";
8308 sha1 = "9c9456989e9f6588017b0434d56097675c3da05e";
8309 };
8310 }
8311
8312 {
8313 name = "p_limit___p_limit_1.3.0.tgz";
8314 path = fetchurl {
8315 name = "p_limit___p_limit_1.3.0.tgz";
8316 url = "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz";
8317 sha1 = "b86bd5f0c25690911c7590fcbfc2010d54b3ccb8";
8318 };
8319 }
8320
8321 {
8322 name = "p_limit___p_limit_2.1.0.tgz";
8323 path = fetchurl {
8324 name = "p_limit___p_limit_2.1.0.tgz";
8325 url = "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz";
8326 sha1 = "1d5a0d20fb12707c758a655f6bbc4386b5930d68";
8327 };
8328 }
8329
8330 {
8331 name = "p_locate___p_locate_2.0.0.tgz";
8332 path = fetchurl {
8333 name = "p_locate___p_locate_2.0.0.tgz";
8334 url = "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz";
8335 sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
8336 };
8337 }
8338
8339 {
8340 name = "p_locate___p_locate_3.0.0.tgz";
8341 path = fetchurl {
8342 name = "p_locate___p_locate_3.0.0.tgz";
8343 url = "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz";
8344 sha1 = "322d69a05c0264b25997d9f40cd8a891ab0064a4";
8345 };
8346 }
8347
8348 {
8349 name = "p_map___p_map_2.1.0.tgz";
8350 path = fetchurl {
8351 name = "p_map___p_map_2.1.0.tgz";
8352 url = "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz";
8353 sha1 = "310928feef9c9ecc65b68b17693018a665cea175";
8354 };
8355 }
8356
8357 {
8358 name = "p_reduce___p_reduce_1.0.0.tgz";
8359 path = fetchurl {
8360 name = "p_reduce___p_reduce_1.0.0.tgz";
8361 url = "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz";
8362 sha1 = "18c2b0dd936a4690a529f8231f58a0fdb6a47dfa";
8363 };
8364 }
8365
8366 {
8367 name = "p_try___p_try_1.0.0.tgz";
8368 path = fetchurl {
8369 name = "p_try___p_try_1.0.0.tgz";
8370 url = "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz";
8371 sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
8372 };
8373 }
8374
8375 {
8376 name = "p_try___p_try_2.0.0.tgz";
8377 path = fetchurl {
8378 name = "p_try___p_try_2.0.0.tgz";
8379 url = "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz";
8380 sha1 = "85080bb87c64688fa47996fe8f7dfbe8211760b1";
8381 };
8382 }
8383
8384 {
8385 name = "packet_reader___packet_reader_0.3.1.tgz";
8386 path = fetchurl {
8387 name = "packet_reader___packet_reader_0.3.1.tgz";
8388 url = "https://registry.yarnpkg.com/packet-reader/-/packet-reader-0.3.1.tgz";
8389 sha1 = "cd62e60af8d7fea8a705ec4ff990871c46871f27";
8390 };
8391 }
8392
8393 {
8394 name = "pako___pako_1.0.7.tgz";
8395 path = fetchurl {
8396 name = "pako___pako_1.0.7.tgz";
8397 url = "https://registry.yarnpkg.com/pako/-/pako-1.0.7.tgz";
8398 sha1 = "2473439021b57f1516c82f58be7275ad8ef1bb27";
8399 };
8400 }
8401
8402 {
8403 name = "parallel_transform___parallel_transform_1.1.0.tgz";
8404 path = fetchurl {
8405 name = "parallel_transform___parallel_transform_1.1.0.tgz";
8406 url = "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz";
8407 sha1 = "d410f065b05da23081fcd10f28854c29bda33b06";
8408 };
8409 }
8410
8411 {
8412 name = "parse_asn1___parse_asn1_5.1.1.tgz";
8413 path = fetchurl {
8414 name = "parse_asn1___parse_asn1_5.1.1.tgz";
8415 url = "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz";
8416 sha1 = "f6bf293818332bd0dab54efb16087724745e6ca8";
8417 };
8418 }
8419
8420 {
8421 name = "parse_css_font___parse_css_font_2.0.2.tgz";
8422 path = fetchurl {
8423 name = "parse_css_font___parse_css_font_2.0.2.tgz";
8424 url = "https://registry.yarnpkg.com/parse-css-font/-/parse-css-font-2.0.2.tgz";
8425 sha1 = "7b60b060705a25a9b90b7f0ed493e5823248a652";
8426 };
8427 }
8428
8429 {
8430 name = "parse_json___parse_json_2.2.0.tgz";
8431 path = fetchurl {
8432 name = "parse_json___parse_json_2.2.0.tgz";
8433 url = "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz";
8434 sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
8435 };
8436 }
8437
8438 {
8439 name = "parse_json___parse_json_4.0.0.tgz";
8440 path = fetchurl {
8441 name = "parse_json___parse_json_4.0.0.tgz";
8442 url = "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz";
8443 sha1 = "be35f5425be1f7f6c747184f98a788cb99477ee0";
8444 };
8445 }
8446
8447 {
8448 name = "parse_passwd___parse_passwd_1.0.0.tgz";
8449 path = fetchurl {
8450 name = "parse_passwd___parse_passwd_1.0.0.tgz";
8451 url = "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz";
8452 sha1 = "6d5b934a456993b23d37f40a382d6f1666a8e5c6";
8453 };
8454 }
8455
8456 {
8457 name = "parse5___parse5_4.0.0.tgz";
8458 path = fetchurl {
8459 name = "parse5___parse5_4.0.0.tgz";
8460 url = "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz";
8461 sha1 = "6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608";
8462 };
8463 }
8464
8465 {
8466 name = "parse5___parse5_3.0.3.tgz";
8467 path = fetchurl {
8468 name = "parse5___parse5_3.0.3.tgz";
8469 url = "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz";
8470 sha1 = "042f792ffdd36851551cf4e9e066b3874ab45b5c";
8471 };
8472 }
8473
8474 {
8475 name = "parseurl___parseurl_1.3.3.tgz";
8476 path = fetchurl {
8477 name = "parseurl___parseurl_1.3.3.tgz";
8478 url = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz";
8479 sha1 = "9da19e7bee8d12dff0513ed5b76957793bc2e8d4";
8480 };
8481 }
8482
8483 {
8484 name = "pascalcase___pascalcase_0.1.1.tgz";
8485 path = fetchurl {
8486 name = "pascalcase___pascalcase_0.1.1.tgz";
8487 url = "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz";
8488 sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14";
8489 };
8490 }
8491
8492 {
8493 name = "path_browserify___path_browserify_0.0.0.tgz";
8494 path = fetchurl {
8495 name = "path_browserify___path_browserify_0.0.0.tgz";
8496 url = "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz";
8497 sha1 = "a0b870729aae214005b7d5032ec2cbbb0fb4451a";
8498 };
8499 }
8500
8501 {
8502 name = "path_complete_extname___path_complete_extname_1.0.0.tgz";
8503 path = fetchurl {
8504 name = "path_complete_extname___path_complete_extname_1.0.0.tgz";
8505 url = "https://registry.yarnpkg.com/path-complete-extname/-/path-complete-extname-1.0.0.tgz";
8506 sha1 = "f889985dc91000c815515c0bfed06c5acda0752b";
8507 };
8508 }
8509
8510 {
8511 name = "path_dirname___path_dirname_1.0.2.tgz";
8512 path = fetchurl {
8513 name = "path_dirname___path_dirname_1.0.2.tgz";
8514 url = "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz";
8515 sha1 = "cc33d24d525e099a5388c0336c6e32b9160609e0";
8516 };
8517 }
8518
8519 {
8520 name = "path_exists___path_exists_3.0.0.tgz";
8521 path = fetchurl {
8522 name = "path_exists___path_exists_3.0.0.tgz";
8523 url = "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz";
8524 sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
8525 };
8526 }
8527
8528 {
8529 name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
8530 path = fetchurl {
8531 name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
8532 url = "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
8533 sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
8534 };
8535 }
8536
8537 {
8538 name = "path_is_inside___path_is_inside_1.0.2.tgz";
8539 path = fetchurl {
8540 name = "path_is_inside___path_is_inside_1.0.2.tgz";
8541 url = "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz";
8542 sha1 = "365417dede44430d1c11af61027facf074bdfc53";
8543 };
8544 }
8545
8546 {
8547 name = "path_key___path_key_2.0.1.tgz";
8548 path = fetchurl {
8549 name = "path_key___path_key_2.0.1.tgz";
8550 url = "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz";
8551 sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40";
8552 };
8553 }
8554
8555 {
8556 name = "path_parse___path_parse_1.0.6.tgz";
8557 path = fetchurl {
8558 name = "path_parse___path_parse_1.0.6.tgz";
8559 url = "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz";
8560 sha1 = "d62dbb5679405d72c4737ec58600e9ddcf06d24c";
8561 };
8562 }
8563
8564 {
8565 name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
8566 path = fetchurl {
8567 name = "path_to_regexp___path_to_regexp_0.1.7.tgz";
8568 url = "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
8569 sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
8570 };
8571 }
8572
8573 {
8574 name = "path_to_regexp___path_to_regexp_1.7.0.tgz";
8575 path = fetchurl {
8576 name = "path_to_regexp___path_to_regexp_1.7.0.tgz";
8577 url = "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz";
8578 sha1 = "59fde0f435badacba103a84e9d3bc64e96b9937d";
8579 };
8580 }
8581
8582 {
8583 name = "path_type___path_type_2.0.0.tgz";
8584 path = fetchurl {
8585 name = "path_type___path_type_2.0.0.tgz";
8586 url = "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz";
8587 sha1 = "f012ccb8415b7096fc2daa1054c3d72389594c73";
8588 };
8589 }
8590
8591 {
8592 name = "path_type___path_type_3.0.0.tgz";
8593 path = fetchurl {
8594 name = "path_type___path_type_3.0.0.tgz";
8595 url = "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz";
8596 sha1 = "cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f";
8597 };
8598 }
8599
8600 {
8601 name = "pbkdf2___pbkdf2_3.0.17.tgz";
8602 path = fetchurl {
8603 name = "pbkdf2___pbkdf2_3.0.17.tgz";
8604 url = "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz";
8605 sha1 = "976c206530617b14ebb32114239f7b09336e93a6";
8606 };
8607 }
8608
8609 {
8610 name = "performance_now___performance_now_0.2.0.tgz";
8611 path = fetchurl {
8612 name = "performance_now___performance_now_0.2.0.tgz";
8613 url = "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz";
8614 sha1 = "33ef30c5c77d4ea21c5a53869d91b56d8f2555e5";
8615 };
8616 }
8617
8618 {
8619 name = "performance_now___performance_now_2.1.0.tgz";
8620 path = fetchurl {
8621 name = "performance_now___performance_now_2.1.0.tgz";
8622 url = "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz";
8623 sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
8624 };
8625 }
8626
8627 {
8628 name = "pg_connection_string___pg_connection_string_0.1.3.tgz";
8629 path = fetchurl {
8630 name = "pg_connection_string___pg_connection_string_0.1.3.tgz";
8631 url = "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-0.1.3.tgz";
8632 sha1 = "da1847b20940e42ee1492beaf65d49d91b245df7";
8633 };
8634 }
8635
8636 {
8637 name = "pg_int8___pg_int8_1.0.1.tgz";
8638 path = fetchurl {
8639 name = "pg_int8___pg_int8_1.0.1.tgz";
8640 url = "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz";
8641 sha1 = "943bd463bf5b71b4170115f80f8efc9a0c0eb78c";
8642 };
8643 }
8644
8645 {
8646 name = "pg_pool___pg_pool_1.8.0.tgz";
8647 path = fetchurl {
8648 name = "pg_pool___pg_pool_1.8.0.tgz";
8649 url = "https://registry.yarnpkg.com/pg-pool/-/pg-pool-1.8.0.tgz";
8650 sha1 = "f7ec73824c37a03f076f51bfdf70e340147c4f37";
8651 };
8652 }
8653
8654 {
8655 name = "pg_types___pg_types_1.13.0.tgz";
8656 path = fetchurl {
8657 name = "pg_types___pg_types_1.13.0.tgz";
8658 url = "https://registry.yarnpkg.com/pg-types/-/pg-types-1.13.0.tgz";
8659 sha1 = "75f490b8a8abf75f1386ef5ec4455ecf6b345c63";
8660 };
8661 }
8662
8663 {
8664 name = "pg___pg_6.4.2.tgz";
8665 path = fetchurl {
8666 name = "pg___pg_6.4.2.tgz";
8667 url = "https://registry.yarnpkg.com/pg/-/pg-6.4.2.tgz";
8668 sha1 = "c364011060eac7a507a2ae063eb857ece910e27f";
8669 };
8670 }
8671
8672 {
8673 name = "pgpass___pgpass_1.0.2.tgz";
8674 path = fetchurl {
8675 name = "pgpass___pgpass_1.0.2.tgz";
8676 url = "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.2.tgz";
8677 sha1 = "2a7bb41b6065b67907e91da1b07c1847c877b306";
8678 };
8679 }
8680
8681 {
8682 name = "pify___pify_2.3.0.tgz";
8683 path = fetchurl {
8684 name = "pify___pify_2.3.0.tgz";
8685 url = "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz";
8686 sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
8687 };
8688 }
8689
8690 {
8691 name = "pify___pify_3.0.0.tgz";
8692 path = fetchurl {
8693 name = "pify___pify_3.0.0.tgz";
8694 url = "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz";
8695 sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
8696 };
8697 }
8698
8699 {
8700 name = "pify___pify_4.0.1.tgz";
8701 path = fetchurl {
8702 name = "pify___pify_4.0.1.tgz";
8703 url = "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz";
8704 sha1 = "4b2cd25c50d598735c50292224fd8c6df41e3231";
8705 };
8706 }
8707
8708 {
8709 name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
8710 path = fetchurl {
8711 name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
8712 url = "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
8713 sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
8714 };
8715 }
8716
8717 {
8718 name = "pinkie___pinkie_2.0.4.tgz";
8719 path = fetchurl {
8720 name = "pinkie___pinkie_2.0.4.tgz";
8721 url = "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz";
8722 sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
8723 };
8724 }
8725
8726 {
8727 name = "pirates___pirates_4.0.1.tgz";
8728 path = fetchurl {
8729 name = "pirates___pirates_4.0.1.tgz";
8730 url = "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz";
8731 sha1 = "643a92caf894566f91b2b986d2c66950a8e2fb87";
8732 };
8733 }
8734
8735 {
8736 name = "pkg_dir___pkg_dir_2.0.0.tgz";
8737 path = fetchurl {
8738 name = "pkg_dir___pkg_dir_2.0.0.tgz";
8739 url = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz";
8740 sha1 = "f6d5d1109e19d63edf428e0bd57e12777615334b";
8741 };
8742 }
8743
8744 {
8745 name = "pkg_dir___pkg_dir_3.0.0.tgz";
8746 path = fetchurl {
8747 name = "pkg_dir___pkg_dir_3.0.0.tgz";
8748 url = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz";
8749 sha1 = "2749020f239ed990881b1f71210d51eb6523bea3";
8750 };
8751 }
8752
8753 {
8754 name = "pluralize___pluralize_1.2.1.tgz";
8755 path = fetchurl {
8756 name = "pluralize___pluralize_1.2.1.tgz";
8757 url = "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz";
8758 sha1 = "d1a21483fd22bb41e58a12fa3421823140897c45";
8759 };
8760 }
8761
8762 {
8763 name = "pluralize___pluralize_7.0.0.tgz";
8764 path = fetchurl {
8765 name = "pluralize___pluralize_7.0.0.tgz";
8766 url = "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz";
8767 sha1 = "298b89df8b93b0221dbf421ad2b1b1ea23fc6777";
8768 };
8769 }
8770
8771 {
8772 name = "pn___pn_1.1.0.tgz";
8773 path = fetchurl {
8774 name = "pn___pn_1.1.0.tgz";
8775 url = "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz";
8776 sha1 = "e2f4cef0e219f463c179ab37463e4e1ecdccbafb";
8777 };
8778 }
8779
8780 {
8781 name = "portfinder___portfinder_1.0.20.tgz";
8782 path = fetchurl {
8783 name = "portfinder___portfinder_1.0.20.tgz";
8784 url = "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz";
8785 sha1 = "bea68632e54b2e13ab7b0c4775e9b41bf270e44a";
8786 };
8787 }
8788
8789 {
8790 name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
8791 path = fetchurl {
8792 name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
8793 url = "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz";
8794 sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab";
8795 };
8796 }
8797
8798 {
8799 name = "postcss_calc___postcss_calc_7.0.1.tgz";
8800 path = fetchurl {
8801 name = "postcss_calc___postcss_calc_7.0.1.tgz";
8802 url = "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz";
8803 sha1 = "36d77bab023b0ecbb9789d84dcb23c4941145436";
8804 };
8805 }
8806
8807 {
8808 name = "postcss_colormin___postcss_colormin_4.0.3.tgz";
8809 path = fetchurl {
8810 name = "postcss_colormin___postcss_colormin_4.0.3.tgz";
8811 url = "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz";
8812 sha1 = "ae060bce93ed794ac71264f08132d550956bd381";
8813 };
8814 }
8815
8816 {
8817 name = "postcss_convert_values___postcss_convert_values_4.0.1.tgz";
8818 path = fetchurl {
8819 name = "postcss_convert_values___postcss_convert_values_4.0.1.tgz";
8820 url = "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz";
8821 sha1 = "ca3813ed4da0f812f9d43703584e449ebe189a7f";
8822 };
8823 }
8824
8825 {
8826 name = "postcss_discard_comments___postcss_discard_comments_4.0.2.tgz";
8827 path = fetchurl {
8828 name = "postcss_discard_comments___postcss_discard_comments_4.0.2.tgz";
8829 url = "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz";
8830 sha1 = "1fbabd2c246bff6aaad7997b2b0918f4d7af4033";
8831 };
8832 }
8833
8834 {
8835 name = "postcss_discard_duplicates___postcss_discard_duplicates_4.0.2.tgz";
8836 path = fetchurl {
8837 name = "postcss_discard_duplicates___postcss_discard_duplicates_4.0.2.tgz";
8838 url = "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz";
8839 sha1 = "3fe133cd3c82282e550fc9b239176a9207b784eb";
8840 };
8841 }
8842
8843 {
8844 name = "postcss_discard_empty___postcss_discard_empty_4.0.1.tgz";
8845 path = fetchurl {
8846 name = "postcss_discard_empty___postcss_discard_empty_4.0.1.tgz";
8847 url = "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz";
8848 sha1 = "c8c951e9f73ed9428019458444a02ad90bb9f765";
8849 };
8850 }
8851
8852 {
8853 name = "postcss_discard_overridden___postcss_discard_overridden_4.0.1.tgz";
8854 path = fetchurl {
8855 name = "postcss_discard_overridden___postcss_discard_overridden_4.0.1.tgz";
8856 url = "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz";
8857 sha1 = "652aef8a96726f029f5e3e00146ee7a4e755ff57";
8858 };
8859 }
8860
8861 {
8862 name = "postcss_load_config___postcss_load_config_2.0.0.tgz";
8863 path = fetchurl {
8864 name = "postcss_load_config___postcss_load_config_2.0.0.tgz";
8865 url = "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz";
8866 sha1 = "f1312ddbf5912cd747177083c5ef7a19d62ee484";
8867 };
8868 }
8869
8870 {
8871 name = "postcss_loader___postcss_loader_3.0.0.tgz";
8872 path = fetchurl {
8873 name = "postcss_loader___postcss_loader_3.0.0.tgz";
8874 url = "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz";
8875 sha1 = "6b97943e47c72d845fa9e03f273773d4e8dd6c2d";
8876 };
8877 }
8878
8879 {
8880 name = "postcss_merge_longhand___postcss_merge_longhand_4.0.11.tgz";
8881 path = fetchurl {
8882 name = "postcss_merge_longhand___postcss_merge_longhand_4.0.11.tgz";
8883 url = "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz";
8884 sha1 = "62f49a13e4a0ee04e7b98f42bb16062ca2549e24";
8885 };
8886 }
8887
8888 {
8889 name = "postcss_merge_rules___postcss_merge_rules_4.0.3.tgz";
8890 path = fetchurl {
8891 name = "postcss_merge_rules___postcss_merge_rules_4.0.3.tgz";
8892 url = "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz";
8893 sha1 = "362bea4ff5a1f98e4075a713c6cb25aefef9a650";
8894 };
8895 }
8896
8897 {
8898 name = "postcss_minify_font_values___postcss_minify_font_values_4.0.2.tgz";
8899 path = fetchurl {
8900 name = "postcss_minify_font_values___postcss_minify_font_values_4.0.2.tgz";
8901 url = "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz";
8902 sha1 = "cd4c344cce474343fac5d82206ab2cbcb8afd5a6";
8903 };
8904 }
8905
8906 {
8907 name = "postcss_minify_gradients___postcss_minify_gradients_4.0.2.tgz";
8908 path = fetchurl {
8909 name = "postcss_minify_gradients___postcss_minify_gradients_4.0.2.tgz";
8910 url = "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz";
8911 sha1 = "93b29c2ff5099c535eecda56c4aa6e665a663471";
8912 };
8913 }
8914
8915 {
8916 name = "postcss_minify_params___postcss_minify_params_4.0.2.tgz";
8917 path = fetchurl {
8918 name = "postcss_minify_params___postcss_minify_params_4.0.2.tgz";
8919 url = "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz";
8920 sha1 = "6b9cef030c11e35261f95f618c90036d680db874";
8921 };
8922 }
8923
8924 {
8925 name = "postcss_minify_selectors___postcss_minify_selectors_4.0.2.tgz";
8926 path = fetchurl {
8927 name = "postcss_minify_selectors___postcss_minify_selectors_4.0.2.tgz";
8928 url = "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz";
8929 sha1 = "e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8";
8930 };
8931 }
8932
8933 {
8934 name = "postcss_modules_extract_imports___postcss_modules_extract_imports_2.0.0.tgz";
8935 path = fetchurl {
8936 name = "postcss_modules_extract_imports___postcss_modules_extract_imports_2.0.0.tgz";
8937 url = "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz";
8938 sha1 = "818719a1ae1da325f9832446b01136eeb493cd7e";
8939 };
8940 }
8941
8942 {
8943 name = "postcss_modules_local_by_default___postcss_modules_local_by_default_2.0.6.tgz";
8944 path = fetchurl {
8945 name = "postcss_modules_local_by_default___postcss_modules_local_by_default_2.0.6.tgz";
8946 url = "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz";
8947 sha1 = "dd9953f6dd476b5fd1ef2d8830c8929760b56e63";
8948 };
8949 }
8950
8951 {
8952 name = "postcss_modules_scope___postcss_modules_scope_2.1.0.tgz";
8953 path = fetchurl {
8954 name = "postcss_modules_scope___postcss_modules_scope_2.1.0.tgz";
8955 url = "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz";
8956 sha1 = "ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb";
8957 };
8958 }
8959
8960 {
8961 name = "postcss_modules_values___postcss_modules_values_2.0.0.tgz";
8962 path = fetchurl {
8963 name = "postcss_modules_values___postcss_modules_values_2.0.0.tgz";
8964 url = "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz";
8965 sha1 = "479b46dc0c5ca3dc7fa5270851836b9ec7152f64";
8966 };
8967 }
8968
8969 {
8970 name = "postcss_normalize_charset___postcss_normalize_charset_4.0.1.tgz";
8971 path = fetchurl {
8972 name = "postcss_normalize_charset___postcss_normalize_charset_4.0.1.tgz";
8973 url = "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz";
8974 sha1 = "8b35add3aee83a136b0471e0d59be58a50285dd4";
8975 };
8976 }
8977
8978 {
8979 name = "postcss_normalize_display_values___postcss_normalize_display_values_4.0.2.tgz";
8980 path = fetchurl {
8981 name = "postcss_normalize_display_values___postcss_normalize_display_values_4.0.2.tgz";
8982 url = "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz";
8983 sha1 = "0dbe04a4ce9063d4667ed2be476bb830c825935a";
8984 };
8985 }
8986
8987 {
8988 name = "postcss_normalize_positions___postcss_normalize_positions_4.0.2.tgz";
8989 path = fetchurl {
8990 name = "postcss_normalize_positions___postcss_normalize_positions_4.0.2.tgz";
8991 url = "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz";
8992 sha1 = "05f757f84f260437378368a91f8932d4b102917f";
8993 };
8994 }
8995
8996 {
8997 name = "postcss_normalize_repeat_style___postcss_normalize_repeat_style_4.0.2.tgz";
8998 path = fetchurl {
8999 name = "postcss_normalize_repeat_style___postcss_normalize_repeat_style_4.0.2.tgz";
9000 url = "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz";
9001 sha1 = "c4ebbc289f3991a028d44751cbdd11918b17910c";
9002 };
9003 }
9004
9005 {
9006 name = "postcss_normalize_string___postcss_normalize_string_4.0.2.tgz";
9007 path = fetchurl {
9008 name = "postcss_normalize_string___postcss_normalize_string_4.0.2.tgz";
9009 url = "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz";
9010 sha1 = "cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c";
9011 };
9012 }
9013
9014 {
9015 name = "postcss_normalize_timing_functions___postcss_normalize_timing_functions_4.0.2.tgz";
9016 path = fetchurl {
9017 name = "postcss_normalize_timing_functions___postcss_normalize_timing_functions_4.0.2.tgz";
9018 url = "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz";
9019 sha1 = "8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9";
9020 };
9021 }
9022
9023 {
9024 name = "postcss_normalize_unicode___postcss_normalize_unicode_4.0.1.tgz";
9025 path = fetchurl {
9026 name = "postcss_normalize_unicode___postcss_normalize_unicode_4.0.1.tgz";
9027 url = "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz";
9028 sha1 = "841bd48fdcf3019ad4baa7493a3d363b52ae1cfb";
9029 };
9030 }
9031
9032 {
9033 name = "postcss_normalize_url___postcss_normalize_url_4.0.1.tgz";
9034 path = fetchurl {
9035 name = "postcss_normalize_url___postcss_normalize_url_4.0.1.tgz";
9036 url = "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz";
9037 sha1 = "10e437f86bc7c7e58f7b9652ed878daaa95faae1";
9038 };
9039 }
9040
9041 {
9042 name = "postcss_normalize_whitespace___postcss_normalize_whitespace_4.0.2.tgz";
9043 path = fetchurl {
9044 name = "postcss_normalize_whitespace___postcss_normalize_whitespace_4.0.2.tgz";
9045 url = "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz";
9046 sha1 = "bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82";
9047 };
9048 }
9049
9050 {
9051 name = "postcss_object_fit_images___postcss_object_fit_images_1.1.2.tgz";
9052 path = fetchurl {
9053 name = "postcss_object_fit_images___postcss_object_fit_images_1.1.2.tgz";
9054 url = "https://registry.yarnpkg.com/postcss-object-fit-images/-/postcss-object-fit-images-1.1.2.tgz";
9055 sha1 = "8b773043db14672ef6cd6f2cb1f0d8b26a9f573b";
9056 };
9057 }
9058
9059 {
9060 name = "postcss_ordered_values___postcss_ordered_values_4.1.2.tgz";
9061 path = fetchurl {
9062 name = "postcss_ordered_values___postcss_ordered_values_4.1.2.tgz";
9063 url = "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz";
9064 sha1 = "0cf75c820ec7d5c4d280189559e0b571ebac0eee";
9065 };
9066 }
9067
9068 {
9069 name = "postcss_reduce_initial___postcss_reduce_initial_4.0.3.tgz";
9070 path = fetchurl {
9071 name = "postcss_reduce_initial___postcss_reduce_initial_4.0.3.tgz";
9072 url = "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz";
9073 sha1 = "7fd42ebea5e9c814609639e2c2e84ae270ba48df";
9074 };
9075 }
9076
9077 {
9078 name = "postcss_reduce_transforms___postcss_reduce_transforms_4.0.2.tgz";
9079 path = fetchurl {
9080 name = "postcss_reduce_transforms___postcss_reduce_transforms_4.0.2.tgz";
9081 url = "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz";
9082 sha1 = "17efa405eacc6e07be3414a5ca2d1074681d4e29";
9083 };
9084 }
9085
9086 {
9087 name = "postcss_selector_parser___postcss_selector_parser_3.1.1.tgz";
9088 path = fetchurl {
9089 name = "postcss_selector_parser___postcss_selector_parser_3.1.1.tgz";
9090 url = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz";
9091 sha1 = "4f875f4afb0c96573d5cf4d74011aee250a7e865";
9092 };
9093 }
9094
9095 {
9096 name = "postcss_selector_parser___postcss_selector_parser_5.0.0.tgz";
9097 path = fetchurl {
9098 name = "postcss_selector_parser___postcss_selector_parser_5.0.0.tgz";
9099 url = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz";
9100 sha1 = "249044356697b33b64f1a8f7c80922dddee7195c";
9101 };
9102 }
9103
9104 {
9105 name = "postcss_selector_parser___postcss_selector_parser_6.0.2.tgz";
9106 path = fetchurl {
9107 name = "postcss_selector_parser___postcss_selector_parser_6.0.2.tgz";
9108 url = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz";
9109 sha1 = "934cf799d016c83411859e09dcecade01286ec5c";
9110 };
9111 }
9112
9113 {
9114 name = "postcss_svgo___postcss_svgo_4.0.2.tgz";
9115 path = fetchurl {
9116 name = "postcss_svgo___postcss_svgo_4.0.2.tgz";
9117 url = "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz";
9118 sha1 = "17b997bc711b333bab143aaed3b8d3d6e3d38258";
9119 };
9120 }
9121
9122 {
9123 name = "postcss_unique_selectors___postcss_unique_selectors_4.0.1.tgz";
9124 path = fetchurl {
9125 name = "postcss_unique_selectors___postcss_unique_selectors_4.0.1.tgz";
9126 url = "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz";
9127 sha1 = "9446911f3289bfd64c6d680f073c03b1f9ee4bac";
9128 };
9129 }
9130
9131 {
9132 name = "postcss_value_parser___postcss_value_parser_3.3.1.tgz";
9133 path = fetchurl {
9134 name = "postcss_value_parser___postcss_value_parser_3.3.1.tgz";
9135 url = "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz";
9136 sha1 = "9ff822547e2893213cf1c30efa51ac5fd1ba8281";
9137 };
9138 }
9139
9140 {
9141 name = "postcss___postcss_5.2.18.tgz";
9142 path = fetchurl {
9143 name = "postcss___postcss_5.2.18.tgz";
9144 url = "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz";
9145 sha1 = "badfa1497d46244f6390f58b319830d9107853c5";
9146 };
9147 }
9148
9149 {
9150 name = "postcss___postcss_7.0.17.tgz";
9151 path = fetchurl {
9152 name = "postcss___postcss_7.0.17.tgz";
9153 url = "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz";
9154 sha1 = "4da1bdff5322d4a0acaab4d87f3e782436bad31f";
9155 };
9156 }
9157
9158 {
9159 name = "postgres_array___postgres_array_1.0.3.tgz";
9160 path = fetchurl {
9161 name = "postgres_array___postgres_array_1.0.3.tgz";
9162 url = "https://registry.yarnpkg.com/postgres-array/-/postgres-array-1.0.3.tgz";
9163 sha1 = "c561fc3b266b21451fc6555384f4986d78ec80f5";
9164 };
9165 }
9166
9167 {
9168 name = "postgres_bytea___postgres_bytea_1.0.0.tgz";
9169 path = fetchurl {
9170 name = "postgres_bytea___postgres_bytea_1.0.0.tgz";
9171 url = "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz";
9172 sha1 = "027b533c0aa890e26d172d47cf9ccecc521acd35";
9173 };
9174 }
9175
9176 {
9177 name = "postgres_date___postgres_date_1.0.3.tgz";
9178 path = fetchurl {
9179 name = "postgres_date___postgres_date_1.0.3.tgz";
9180 url = "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.3.tgz";
9181 sha1 = "e2d89702efdb258ff9d9cee0fe91bd06975257a8";
9182 };
9183 }
9184
9185 {
9186 name = "postgres_interval___postgres_interval_1.1.2.tgz";
9187 path = fetchurl {
9188 name = "postgres_interval___postgres_interval_1.1.2.tgz";
9189 url = "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.1.2.tgz";
9190 sha1 = "bf71ff902635f21cb241a013fc421d81d1db15a9";
9191 };
9192 }
9193
9194 {
9195 name = "precond___precond_0.2.3.tgz";
9196 path = fetchurl {
9197 name = "precond___precond_0.2.3.tgz";
9198 url = "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz";
9199 sha1 = "aa9591bcaa24923f1e0f4849d240f47efc1075ac";
9200 };
9201 }
9202
9203 {
9204 name = "prelude_ls___prelude_ls_1.1.2.tgz";
9205 path = fetchurl {
9206 name = "prelude_ls___prelude_ls_1.1.2.tgz";
9207 url = "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz";
9208 sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
9209 };
9210 }
9211
9212 {
9213 name = "prettier___prettier_1.18.2.tgz";
9214 path = fetchurl {
9215 name = "prettier___prettier_1.18.2.tgz";
9216 url = "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz";
9217 sha1 = "6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea";
9218 };
9219 }
9220
9221 {
9222 name = "pretty_format___pretty_format_24.8.0.tgz";
9223 path = fetchurl {
9224 name = "pretty_format___pretty_format_24.8.0.tgz";
9225 url = "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz";
9226 sha1 = "8dae7044f58db7cb8be245383b565a963e3c27f2";
9227 };
9228 }
9229
9230 {
9231 name = "private___private_0.1.8.tgz";
9232 path = fetchurl {
9233 name = "private___private_0.1.8.tgz";
9234 url = "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz";
9235 sha1 = "2381edb3689f7a53d653190060fcf822d2f368ff";
9236 };
9237 }
9238
9239 {
9240 name = "process_nextick_args___process_nextick_args_2.0.0.tgz";
9241 path = fetchurl {
9242 name = "process_nextick_args___process_nextick_args_2.0.0.tgz";
9243 url = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz";
9244 sha1 = "a37d732f4271b4ab1ad070d35508e8290788ffaa";
9245 };
9246 }
9247
9248 {
9249 name = "process___process_0.11.10.tgz";
9250 path = fetchurl {
9251 name = "process___process_0.11.10.tgz";
9252 url = "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz";
9253 sha1 = "7332300e840161bda3e69a1d1d91a7d4bc16f182";
9254 };
9255 }
9256
9257 {
9258 name = "progress___progress_1.1.8.tgz";
9259 path = fetchurl {
9260 name = "progress___progress_1.1.8.tgz";
9261 url = "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz";
9262 sha1 = "e260c78f6161cdd9b0e56cc3e0a85de17c7a57be";
9263 };
9264 }
9265
9266 {
9267 name = "progress___progress_2.0.3.tgz";
9268 path = fetchurl {
9269 name = "progress___progress_2.0.3.tgz";
9270 url = "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz";
9271 sha1 = "7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8";
9272 };
9273 }
9274
9275 {
9276 name = "promise_inflight___promise_inflight_1.0.1.tgz";
9277 path = fetchurl {
9278 name = "promise_inflight___promise_inflight_1.0.1.tgz";
9279 url = "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz";
9280 sha1 = "98472870bf228132fcbdd868129bad12c3c029e3";
9281 };
9282 }
9283
9284 {
9285 name = "promise___promise_7.3.1.tgz";
9286 path = fetchurl {
9287 name = "promise___promise_7.3.1.tgz";
9288 url = "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz";
9289 sha1 = "064b72602b18f90f29192b8b1bc418ffd1ebd3bf";
9290 };
9291 }
9292
9293 {
9294 name = "prompts___prompts_2.0.3.tgz";
9295 path = fetchurl {
9296 name = "prompts___prompts_2.0.3.tgz";
9297 url = "https://registry.yarnpkg.com/prompts/-/prompts-2.0.3.tgz";
9298 sha1 = "c5ccb324010b2e8f74752aadceeb57134c1d2522";
9299 };
9300 }
9301
9302 {
9303 name = "prop_types_exact___prop_types_exact_1.2.0.tgz";
9304 path = fetchurl {
9305 name = "prop_types_exact___prop_types_exact_1.2.0.tgz";
9306 url = "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz";
9307 sha1 = "825d6be46094663848237e3925a98c6e944e9869";
9308 };
9309 }
9310
9311 {
9312 name = "prop_types_extra___prop_types_extra_1.1.0.tgz";
9313 path = fetchurl {
9314 name = "prop_types_extra___prop_types_extra_1.1.0.tgz";
9315 url = "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.0.tgz";
9316 sha1 = "32609910ea2dcf190366bacd3490d5a6412a605f";
9317 };
9318 }
9319
9320 {
9321 name = "prop_types___prop_types_15.7.2.tgz";
9322 path = fetchurl {
9323 name = "prop_types___prop_types_15.7.2.tgz";
9324 url = "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz";
9325 sha1 = "52c41e75b8c87e72b9d9360e0206b99dcbffa6c5";
9326 };
9327 }
9328
9329 {
9330 name = "proxy_addr___proxy_addr_2.0.5.tgz";
9331 path = fetchurl {
9332 name = "proxy_addr___proxy_addr_2.0.5.tgz";
9333 url = "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz";
9334 sha1 = "34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34";
9335 };
9336 }
9337
9338 {
9339 name = "prr___prr_1.0.1.tgz";
9340 path = fetchurl {
9341 name = "prr___prr_1.0.1.tgz";
9342 url = "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz";
9343 sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476";
9344 };
9345 }
9346
9347 {
9348 name = "psl___psl_1.1.31.tgz";
9349 path = fetchurl {
9350 name = "psl___psl_1.1.31.tgz";
9351 url = "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz";
9352 sha1 = "e9aa86d0101b5b105cbe93ac6b784cd547276184";
9353 };
9354 }
9355
9356 {
9357 name = "public_encrypt___public_encrypt_4.0.3.tgz";
9358 path = fetchurl {
9359 name = "public_encrypt___public_encrypt_4.0.3.tgz";
9360 url = "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz";
9361 sha1 = "4fcc9d77a07e48ba7527e7cbe0de33d0701331e0";
9362 };
9363 }
9364
9365 {
9366 name = "pump___pump_2.0.1.tgz";
9367 path = fetchurl {
9368 name = "pump___pump_2.0.1.tgz";
9369 url = "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz";
9370 sha1 = "12399add6e4cf7526d973cbc8b5ce2e2908b3909";
9371 };
9372 }
9373
9374 {
9375 name = "pump___pump_3.0.0.tgz";
9376 path = fetchurl {
9377 name = "pump___pump_3.0.0.tgz";
9378 url = "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz";
9379 sha1 = "b4a2116815bde2f4e1ea602354e8c75565107a64";
9380 };
9381 }
9382
9383 {
9384 name = "pumpify___pumpify_1.5.1.tgz";
9385 path = fetchurl {
9386 name = "pumpify___pumpify_1.5.1.tgz";
9387 url = "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz";
9388 sha1 = "36513be246ab27570b1a374a5ce278bfd74370ce";
9389 };
9390 }
9391
9392 {
9393 name = "punycode___punycode_1.3.2.tgz";
9394 path = fetchurl {
9395 name = "punycode___punycode_1.3.2.tgz";
9396 url = "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz";
9397 sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d";
9398 };
9399 }
9400
9401 {
9402 name = "punycode___punycode_1.4.1.tgz";
9403 path = fetchurl {
9404 name = "punycode___punycode_1.4.1.tgz";
9405 url = "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz";
9406 sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
9407 };
9408 }
9409
9410 {
9411 name = "punycode___punycode_2.1.1.tgz";
9412 path = fetchurl {
9413 name = "punycode___punycode_2.1.1.tgz";
9414 url = "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz";
9415 sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
9416 };
9417 }
9418
9419 {
9420 name = "q___q_1.5.1.tgz";
9421 path = fetchurl {
9422 name = "q___q_1.5.1.tgz";
9423 url = "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz";
9424 sha1 = "7e32f75b41381291d04611f1bf14109ac00651d7";
9425 };
9426 }
9427
9428 {
9429 name = "qs___qs_6.7.0.tgz";
9430 path = fetchurl {
9431 name = "qs___qs_6.7.0.tgz";
9432 url = "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz";
9433 sha1 = "41dc1a015e3d581f1621776be31afb2876a9b1bc";
9434 };
9435 }
9436
9437 {
9438 name = "qs___qs_6.5.2.tgz";
9439 path = fetchurl {
9440 name = "qs___qs_6.5.2.tgz";
9441 url = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
9442 sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
9443 };
9444 }
9445
9446 {
9447 name = "querystring_es3___querystring_es3_0.2.1.tgz";
9448 path = fetchurl {
9449 name = "querystring_es3___querystring_es3_0.2.1.tgz";
9450 url = "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz";
9451 sha1 = "9ec61f79049875707d69414596fd907a4d711e73";
9452 };
9453 }
9454
9455 {
9456 name = "querystring___querystring_0.2.0.tgz";
9457 path = fetchurl {
9458 name = "querystring___querystring_0.2.0.tgz";
9459 url = "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz";
9460 sha1 = "b209849203bb25df820da756e747005878521620";
9461 };
9462 }
9463
9464 {
9465 name = "querystringify___querystringify_2.1.0.tgz";
9466 path = fetchurl {
9467 name = "querystringify___querystringify_2.1.0.tgz";
9468 url = "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz";
9469 sha1 = "7ded8dfbf7879dcc60d0a644ac6754b283ad17ef";
9470 };
9471 }
9472
9473 {
9474 name = "quote___quote_0.4.0.tgz";
9475 path = fetchurl {
9476 name = "quote___quote_0.4.0.tgz";
9477 url = "https://registry.yarnpkg.com/quote/-/quote-0.4.0.tgz";
9478 sha1 = "10839217f6c1362b89194044d29b233fd7f32f01";
9479 };
9480 }
9481
9482 {
9483 name = "raf___raf_3.4.1.tgz";
9484 path = fetchurl {
9485 name = "raf___raf_3.4.1.tgz";
9486 url = "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz";
9487 sha1 = "0742e99a4a6552f445d73e3ee0328af0ff1ede39";
9488 };
9489 }
9490
9491 {
9492 name = "railroad_diagrams___railroad_diagrams_1.0.0.tgz";
9493 path = fetchurl {
9494 name = "railroad_diagrams___railroad_diagrams_1.0.0.tgz";
9495 url = "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz";
9496 sha1 = "eb7e6267548ddedfb899c1b90e57374559cddb7e";
9497 };
9498 }
9499
9500 {
9501 name = "rails_ujs___rails_ujs_5.2.3.tgz";
9502 path = fetchurl {
9503 name = "rails_ujs___rails_ujs_5.2.3.tgz";
9504 url = "https://registry.yarnpkg.com/rails-ujs/-/rails-ujs-5.2.3.tgz";
9505 sha1 = "4b65ea781a6befe62e96da6362165286a1fe4099";
9506 };
9507 }
9508
9509 {
9510 name = "randexp___randexp_0.4.6.tgz";
9511 path = fetchurl {
9512 name = "randexp___randexp_0.4.6.tgz";
9513 url = "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz";
9514 sha1 = "e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3";
9515 };
9516 }
9517
9518 {
9519 name = "randombytes___randombytes_2.0.6.tgz";
9520 path = fetchurl {
9521 name = "randombytes___randombytes_2.0.6.tgz";
9522 url = "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz";
9523 sha1 = "d302c522948588848a8d300c932b44c24231da80";
9524 };
9525 }
9526
9527 {
9528 name = "randomfill___randomfill_1.0.4.tgz";
9529 path = fetchurl {
9530 name = "randomfill___randomfill_1.0.4.tgz";
9531 url = "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz";
9532 sha1 = "c92196fc86ab42be983f1bf31778224931d61458";
9533 };
9534 }
9535
9536 {
9537 name = "range_parser___range_parser_1.2.1.tgz";
9538 path = fetchurl {
9539 name = "range_parser___range_parser_1.2.1.tgz";
9540 url = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz";
9541 sha1 = "3cf37023d199e1c24d1a55b84800c2f3e6468031";
9542 };
9543 }
9544
9545 {
9546 name = "raw_body___raw_body_2.4.0.tgz";
9547 path = fetchurl {
9548 name = "raw_body___raw_body_2.4.0.tgz";
9549 url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz";
9550 sha1 = "a1ce6fb9c9bc356ca52e89256ab59059e13d0332";
9551 };
9552 }
9553
9554 {
9555 name = "rc___rc_1.2.8.tgz";
9556 path = fetchurl {
9557 name = "rc___rc_1.2.8.tgz";
9558 url = "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz";
9559 sha1 = "cd924bf5200a075b83c188cd6b9e211b7fc0d3ed";
9560 };
9561 }
9562
9563 {
9564 name = "react_dom___react_dom_16.8.6.tgz";
9565 path = fetchurl {
9566 name = "react_dom___react_dom_16.8.6.tgz";
9567 url = "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz";
9568 sha1 = "71d6303f631e8b0097f56165ef608f051ff6e10f";
9569 };
9570 }
9571
9572 {
9573 name = "react_event_listener___react_event_listener_0.6.5.tgz";
9574 path = fetchurl {
9575 name = "react_event_listener___react_event_listener_0.6.5.tgz";
9576 url = "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.5.tgz";
9577 sha1 = "d374dbe5da485c9f9d4702f0e76971afbe9b6b2e";
9578 };
9579 }
9580
9581 {
9582 name = "react_hotkeys___react_hotkeys_1.1.4.tgz";
9583 path = fetchurl {
9584 name = "react_hotkeys___react_hotkeys_1.1.4.tgz";
9585 url = "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-1.1.4.tgz";
9586 sha1 = "a0712aa2e0c03a759fd7885808598497a4dace72";
9587 };
9588 }
9589
9590 {
9591 name = "react_immutable_proptypes___react_immutable_proptypes_2.1.0.tgz";
9592 path = fetchurl {
9593 name = "react_immutable_proptypes___react_immutable_proptypes_2.1.0.tgz";
9594 url = "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.1.0.tgz";
9595 sha1 = "023d6f39bb15c97c071e9e60d00d136eac5fa0b4";
9596 };
9597 }
9598
9599 {
9600 name = "react_immutable_pure_component___react_immutable_pure_component_1.2.3.tgz";
9601 path = fetchurl {
9602 name = "react_immutable_pure_component___react_immutable_pure_component_1.2.3.tgz";
9603 url = "https://registry.yarnpkg.com/react-immutable-pure-component/-/react-immutable-pure-component-1.2.3.tgz";
9604 sha1 = "fa33638df68cfe9f73ccbee1d5861c17f3053f86";
9605 };
9606 }
9607
9608 {
9609 name = "react_infinite_scroller___react_infinite_scroller_1.2.4.tgz";
9610 path = fetchurl {
9611 name = "react_infinite_scroller___react_infinite_scroller_1.2.4.tgz";
9612 url = "https://registry.yarnpkg.com/react-infinite-scroller/-/react-infinite-scroller-1.2.4.tgz";
9613 sha1 = "f67eaec4940a4ce6417bebdd6e3433bfc38826e9";
9614 };
9615 }
9616
9617 {
9618 name = "react_input_autosize___react_input_autosize_2.2.1.tgz";
9619 path = fetchurl {
9620 name = "react_input_autosize___react_input_autosize_2.2.1.tgz";
9621 url = "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.1.tgz";
9622 sha1 = "ec428fa15b1592994fb5f9aa15bb1eb6baf420f8";
9623 };
9624 }
9625
9626 {
9627 name = "react_intl_translations_manager___react_intl_translations_manager_5.0.3.tgz";
9628 path = fetchurl {
9629 name = "react_intl_translations_manager___react_intl_translations_manager_5.0.3.tgz";
9630 url = "https://registry.yarnpkg.com/react-intl-translations-manager/-/react-intl-translations-manager-5.0.3.tgz";
9631 sha1 = "aee010ecf35975673e033ca5d7d3f4147894324d";
9632 };
9633 }
9634
9635 {
9636 name = "react_intl___react_intl_2.9.0.tgz";
9637 path = fetchurl {
9638 name = "react_intl___react_intl_2.9.0.tgz";
9639 url = "https://registry.yarnpkg.com/react-intl/-/react-intl-2.9.0.tgz";
9640 sha1 = "c97c5d17d4718f1575fdbd5a769f96018a3b1843";
9641 };
9642 }
9643
9644 {
9645 name = "react_is___react_is_16.8.6.tgz";
9646 path = fetchurl {
9647 name = "react_is___react_is_16.8.6.tgz";
9648 url = "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz";
9649 sha1 = "5bbc1e2d29141c9fbdfed456343fe2bc430a6a16";
9650 };
9651 }
9652
9653 {
9654 name = "react_lifecycles_compat___react_lifecycles_compat_3.0.4.tgz";
9655 path = fetchurl {
9656 name = "react_lifecycles_compat___react_lifecycles_compat_3.0.4.tgz";
9657 url = "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz";
9658 sha1 = "4f1a273afdfc8f3488a8c516bfda78f872352362";
9659 };
9660 }
9661
9662 {
9663 name = "react_masonry_infinite___react_masonry_infinite_1.2.2.tgz";
9664 path = fetchurl {
9665 name = "react_masonry_infinite___react_masonry_infinite_1.2.2.tgz";
9666 url = "https://registry.yarnpkg.com/react-masonry-infinite/-/react-masonry-infinite-1.2.2.tgz";
9667 sha1 = "20c1386f9ccdda9747527c8f42bc2c02dd2e7951";
9668 };
9669 }
9670
9671 {
9672 name = "react_motion___react_motion_0.5.2.tgz";
9673 path = fetchurl {
9674 name = "react_motion___react_motion_0.5.2.tgz";
9675 url = "https://registry.yarnpkg.com/react-motion/-/react-motion-0.5.2.tgz";
9676 sha1 = "0dd3a69e411316567927917c6626551ba0607316";
9677 };
9678 }
9679
9680 {
9681 name = "react_notification___react_notification_6.8.4.tgz";
9682 path = fetchurl {
9683 name = "react_notification___react_notification_6.8.4.tgz";
9684 url = "https://registry.yarnpkg.com/react-notification/-/react-notification-6.8.4.tgz";
9685 sha1 = "c189d23f47b0e1b240932f4cfab2f4082cd420bf";
9686 };
9687 }
9688
9689 {
9690 name = "react_overlays___react_overlays_0.8.3.tgz";
9691 path = fetchurl {
9692 name = "react_overlays___react_overlays_0.8.3.tgz";
9693 url = "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.8.3.tgz";
9694 sha1 = "fad65eea5b24301cca192a169f5dddb0b20d3ac5";
9695 };
9696 }
9697
9698 {
9699 name = "react_redux_loading_bar___react_redux_loading_bar_4.0.8.tgz";
9700 path = fetchurl {
9701 name = "react_redux_loading_bar___react_redux_loading_bar_4.0.8.tgz";
9702 url = "https://registry.yarnpkg.com/react-redux-loading-bar/-/react-redux-loading-bar-4.0.8.tgz";
9703 sha1 = "e84d59d1517b79f53b0f39c8ddb40682af648c1b";
9704 };
9705 }
9706
9707 {
9708 name = "react_redux___react_redux_6.0.1.tgz";
9709 path = fetchurl {
9710 name = "react_redux___react_redux_6.0.1.tgz";
9711 url = "https://registry.yarnpkg.com/react-redux/-/react-redux-6.0.1.tgz";
9712 sha1 = "0d423e2c1cb10ada87293d47e7de7c329623ba4d";
9713 };
9714 }
9715
9716 {
9717 name = "react_router_dom___react_router_dom_4.3.1.tgz";
9718 path = fetchurl {
9719 name = "react_router_dom___react_router_dom_4.3.1.tgz";
9720 url = "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz";
9721 sha1 = "4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6";
9722 };
9723 }
9724
9725 {
9726 name = "react_router_scroll_4___react_router_scroll_4_1.0.0_beta.2.tgz";
9727 path = fetchurl {
9728 name = "react_router_scroll_4___react_router_scroll_4_1.0.0_beta.2.tgz";
9729 url = "https://registry.yarnpkg.com/react-router-scroll-4/-/react-router-scroll-4-1.0.0-beta.2.tgz";
9730 sha1 = "d887063ec0f66124aaf450158dd158ff7d3dc279";
9731 };
9732 }
9733
9734 {
9735 name = "react_router___react_router_4.3.1.tgz";
9736 path = fetchurl {
9737 name = "react_router___react_router_4.3.1.tgz";
9738 url = "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz";
9739 sha1 = "aada4aef14c809cb2e686b05cee4742234506c4e";
9740 };
9741 }
9742
9743 {
9744 name = "react_select___react_select_2.4.4.tgz";
9745 path = fetchurl {
9746 name = "react_select___react_select_2.4.4.tgz";
9747 url = "https://registry.yarnpkg.com/react-select/-/react-select-2.4.4.tgz";
9748 sha1 = "ba72468ef1060c7d46fbb862b0748f96491f1f73";
9749 };
9750 }
9751
9752 {
9753 name = "react_sparklines___react_sparklines_1.7.0.tgz";
9754 path = fetchurl {
9755 name = "react_sparklines___react_sparklines_1.7.0.tgz";
9756 url = "https://registry.yarnpkg.com/react-sparklines/-/react-sparklines-1.7.0.tgz";
9757 sha1 = "9b1d97e8c8610095eeb2ad658d2e1fcf91f91a60";
9758 };
9759 }
9760
9761 {
9762 name = "react_swipeable_views_core___react_swipeable_views_core_0.13.1.tgz";
9763 path = fetchurl {
9764 name = "react_swipeable_views_core___react_swipeable_views_core_0.13.1.tgz";
9765 url = "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.13.1.tgz";
9766 sha1 = "8829a922462a8bdd701709cd1b385393d38f1527";
9767 };
9768 }
9769
9770 {
9771 name = "react_swipeable_views_utils___react_swipeable_views_utils_0.13.3.tgz";
9772 path = fetchurl {
9773 name = "react_swipeable_views_utils___react_swipeable_views_utils_0.13.3.tgz";
9774 url = "https://registry.yarnpkg.com/react-swipeable-views-utils/-/react-swipeable-views-utils-0.13.3.tgz";
9775 sha1 = "c234d8d836bb085803631a9fef0adb2f9597221f";
9776 };
9777 }
9778
9779 {
9780 name = "react_swipeable_views___react_swipeable_views_0.13.3.tgz";
9781 path = fetchurl {
9782 name = "react_swipeable_views___react_swipeable_views_0.13.3.tgz";
9783 url = "https://registry.yarnpkg.com/react-swipeable-views/-/react-swipeable-views-0.13.3.tgz";
9784 sha1 = "2ad886767c6b2de88000606a14bedde12156e6d0";
9785 };
9786 }
9787
9788 {
9789 name = "react_test_renderer___react_test_renderer_16.8.6.tgz";
9790 path = fetchurl {
9791 name = "react_test_renderer___react_test_renderer_16.8.6.tgz";
9792 url = "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.6.tgz";
9793 sha1 = "188d8029b8c39c786f998aa3efd3ffe7642d5ba1";
9794 };
9795 }
9796
9797 {
9798 name = "react_textarea_autosize___react_textarea_autosize_7.1.0.tgz";
9799 path = fetchurl {
9800 name = "react_textarea_autosize___react_textarea_autosize_7.1.0.tgz";
9801 url = "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-7.1.0.tgz";
9802 sha1 = "3132cb77e65d94417558d37c0bfe415a5afd3445";
9803 };
9804 }
9805
9806 {
9807 name = "react_toggle___react_toggle_4.0.2.tgz";
9808 path = fetchurl {
9809 name = "react_toggle___react_toggle_4.0.2.tgz";
9810 url = "https://registry.yarnpkg.com/react-toggle/-/react-toggle-4.0.2.tgz";
9811 sha1 = "77f487860efb87fafd197672a2db8c885be1440f";
9812 };
9813 }
9814
9815 {
9816 name = "react_transition_group___react_transition_group_2.5.2.tgz";
9817 path = fetchurl {
9818 name = "react_transition_group___react_transition_group_2.5.2.tgz";
9819 url = "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.5.2.tgz";
9820 sha1 = "9457166a9ba6ce697a3e1b076b3c049b9fb2c408";
9821 };
9822 }
9823
9824 {
9825 name = "react___react_16.8.6.tgz";
9826 path = fetchurl {
9827 name = "react___react_16.8.6.tgz";
9828 url = "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz";
9829 sha1 = "ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe";
9830 };
9831 }
9832
9833 {
9834 name = "read_pkg_up___read_pkg_up_2.0.0.tgz";
9835 path = fetchurl {
9836 name = "read_pkg_up___read_pkg_up_2.0.0.tgz";
9837 url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz";
9838 sha1 = "6b72a8048984e0c41e79510fd5e9fa99b3b549be";
9839 };
9840 }
9841
9842 {
9843 name = "read_pkg_up___read_pkg_up_4.0.0.tgz";
9844 path = fetchurl {
9845 name = "read_pkg_up___read_pkg_up_4.0.0.tgz";
9846 url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz";
9847 sha1 = "1b221c6088ba7799601c808f91161c66e58f8978";
9848 };
9849 }
9850
9851 {
9852 name = "read_pkg___read_pkg_2.0.0.tgz";
9853 path = fetchurl {
9854 name = "read_pkg___read_pkg_2.0.0.tgz";
9855 url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz";
9856 sha1 = "8ef1c0623c6a6db0dc6713c4bfac46332b2368f8";
9857 };
9858 }
9859
9860 {
9861 name = "read_pkg___read_pkg_3.0.0.tgz";
9862 path = fetchurl {
9863 name = "read_pkg___read_pkg_3.0.0.tgz";
9864 url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz";
9865 sha1 = "9cbc686978fee65d16c00e2b19c237fcf6e38389";
9866 };
9867 }
9868
9869 {
9870 name = "readable_stream___readable_stream_2.3.6.tgz";
9871 path = fetchurl {
9872 name = "readable_stream___readable_stream_2.3.6.tgz";
9873 url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz";
9874 sha1 = "b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf";
9875 };
9876 }
9877
9878 {
9879 name = "readable_stream___readable_stream_3.1.1.tgz";
9880 path = fetchurl {
9881 name = "readable_stream___readable_stream_3.1.1.tgz";
9882 url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz";
9883 sha1 = "ed6bbc6c5ba58b090039ff18ce670515795aeb06";
9884 };
9885 }
9886
9887 {
9888 name = "readdirp___readdirp_2.2.1.tgz";
9889 path = fetchurl {
9890 name = "readdirp___readdirp_2.2.1.tgz";
9891 url = "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz";
9892 sha1 = "0e87622a3325aa33e892285caf8b4e846529a525";
9893 };
9894 }
9895
9896 {
9897 name = "readline2___readline2_1.0.1.tgz";
9898 path = fetchurl {
9899 name = "readline2___readline2_1.0.1.tgz";
9900 url = "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz";
9901 sha1 = "41059608ffc154757b715d9989d199ffbf372e35";
9902 };
9903 }
9904
9905 {
9906 name = "realpath_native___realpath_native_1.1.0.tgz";
9907 path = fetchurl {
9908 name = "realpath_native___realpath_native_1.1.0.tgz";
9909 url = "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz";
9910 sha1 = "2003294fea23fb0672f2476ebe22fcf498a2d65c";
9911 };
9912 }
9913
9914 {
9915 name = "redis_commands___redis_commands_1.4.0.tgz";
9916 path = fetchurl {
9917 name = "redis_commands___redis_commands_1.4.0.tgz";
9918 url = "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.4.0.tgz";
9919 sha1 = "52f9cf99153efcce56a8f86af986bd04e988602f";
9920 };
9921 }
9922
9923 {
9924 name = "redis_parser___redis_parser_2.6.0.tgz";
9925 path = fetchurl {
9926 name = "redis_parser___redis_parser_2.6.0.tgz";
9927 url = "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz";
9928 sha1 = "52ed09dacac108f1a631c07e9b69941e7a19504b";
9929 };
9930 }
9931
9932 {
9933 name = "redis___redis_2.8.0.tgz";
9934 path = fetchurl {
9935 name = "redis___redis_2.8.0.tgz";
9936 url = "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz";
9937 sha1 = "202288e3f58c49f6079d97af7a10e1303ae14b02";
9938 };
9939 }
9940
9941 {
9942 name = "redux_immutable___redux_immutable_4.0.0.tgz";
9943 path = fetchurl {
9944 name = "redux_immutable___redux_immutable_4.0.0.tgz";
9945 url = "https://registry.yarnpkg.com/redux-immutable/-/redux-immutable-4.0.0.tgz";
9946 sha1 = "3a1a32df66366462b63691f0e1dc35e472bbc9f3";
9947 };
9948 }
9949
9950 {
9951 name = "redux_thunk___redux_thunk_2.3.0.tgz";
9952 path = fetchurl {
9953 name = "redux_thunk___redux_thunk_2.3.0.tgz";
9954 url = "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz";
9955 sha1 = "51c2c19a185ed5187aaa9a2d08b666d0d6467622";
9956 };
9957 }
9958
9959 {
9960 name = "redux___redux_4.0.1.tgz";
9961 path = fetchurl {
9962 name = "redux___redux_4.0.1.tgz";
9963 url = "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz";
9964 sha1 = "436cae6cc40fbe4727689d7c8fae44808f1bfef5";
9965 };
9966 }
9967
9968 {
9969 name = "reflect.ownkeys___reflect.ownkeys_0.2.0.tgz";
9970 path = fetchurl {
9971 name = "reflect.ownkeys___reflect.ownkeys_0.2.0.tgz";
9972 url = "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz";
9973 sha1 = "749aceec7f3fdf8b63f927a04809e90c5c0b3460";
9974 };
9975 }
9976
9977 {
9978 name = "regenerate_unicode_properties___regenerate_unicode_properties_8.1.0.tgz";
9979 path = fetchurl {
9980 name = "regenerate_unicode_properties___regenerate_unicode_properties_8.1.0.tgz";
9981 url = "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz";
9982 sha1 = "ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e";
9983 };
9984 }
9985
9986 {
9987 name = "regenerate___regenerate_1.4.0.tgz";
9988 path = fetchurl {
9989 name = "regenerate___regenerate_1.4.0.tgz";
9990 url = "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz";
9991 sha1 = "4a856ec4b56e4077c557589cae85e7a4c8869a11";
9992 };
9993 }
9994
9995 {
9996 name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
9997 path = fetchurl {
9998 name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
9999 url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
10000 sha1 = "be05ad7f9bf7d22e056f9726cee5017fbf19e2e9";
10001 };
10002 }
10003
10004 {
10005 name = "regenerator_runtime___regenerator_runtime_0.12.1.tgz";
10006 path = fetchurl {
10007 name = "regenerator_runtime___regenerator_runtime_0.12.1.tgz";
10008 url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz";
10009 sha1 = "fa1a71544764c036f8c49b13a08b2594c9f8a0de";
10010 };
10011 }
10012
10013 {
10014 name = "regenerator_runtime___regenerator_runtime_0.13.2.tgz";
10015 path = fetchurl {
10016 name = "regenerator_runtime___regenerator_runtime_0.13.2.tgz";
10017 url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz";
10018 sha1 = "32e59c9a6fb9b1a4aff09b4930ca2d4477343447";
10019 };
10020 }
10021
10022 {
10023 name = "regenerator_transform___regenerator_transform_0.14.0.tgz";
10024 path = fetchurl {
10025 name = "regenerator_transform___regenerator_transform_0.14.0.tgz";
10026 url = "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz";
10027 sha1 = "2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf";
10028 };
10029 }
10030
10031 {
10032 name = "regex_not___regex_not_1.0.2.tgz";
10033 path = fetchurl {
10034 name = "regex_not___regex_not_1.0.2.tgz";
10035 url = "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz";
10036 sha1 = "1f4ece27e00b0b65e0247a6810e6a85d83a5752c";
10037 };
10038 }
10039
10040 {
10041 name = "regexp_tree___regexp_tree_0.1.10.tgz";
10042 path = fetchurl {
10043 name = "regexp_tree___regexp_tree_0.1.10.tgz";
10044 url = "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz";
10045 sha1 = "d837816a039c7af8a8d64d7a7c3cf6a1d93450bc";
10046 };
10047 }
10048
10049 {
10050 name = "regexpp___regexpp_2.0.1.tgz";
10051 path = fetchurl {
10052 name = "regexpp___regexpp_2.0.1.tgz";
10053 url = "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz";
10054 sha1 = "8d19d31cf632482b589049f8281f93dbcba4d07f";
10055 };
10056 }
10057
10058 {
10059 name = "regexpu_core___regexpu_core_4.5.4.tgz";
10060 path = fetchurl {
10061 name = "regexpu_core___regexpu_core_4.5.4.tgz";
10062 url = "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz";
10063 sha1 = "080d9d02289aa87fe1667a4f5136bc98a6aebaae";
10064 };
10065 }
10066
10067 {
10068 name = "regjsgen___regjsgen_0.5.0.tgz";
10069 path = fetchurl {
10070 name = "regjsgen___regjsgen_0.5.0.tgz";
10071 url = "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz";
10072 sha1 = "a7634dc08f89209c2049adda3525711fb97265dd";
10073 };
10074 }
10075
10076 {
10077 name = "regjsparser___regjsparser_0.6.0.tgz";
10078 path = fetchurl {
10079 name = "regjsparser___regjsparser_0.6.0.tgz";
10080 url = "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz";
10081 sha1 = "f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c";
10082 };
10083 }
10084
10085 {
10086 name = "rellax___rellax_1.10.0.tgz";
10087 path = fetchurl {
10088 name = "rellax___rellax_1.10.0.tgz";
10089 url = "https://registry.yarnpkg.com/rellax/-/rellax-1.10.0.tgz";
10090 sha1 = "0308b813b458f9175d37ffb4272e1f616eab1341";
10091 };
10092 }
10093
10094 {
10095 name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
10096 path = fetchurl {
10097 name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
10098 url = "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz";
10099 sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
10100 };
10101 }
10102
10103 {
10104 name = "repeat_element___repeat_element_1.1.3.tgz";
10105 path = fetchurl {
10106 name = "repeat_element___repeat_element_1.1.3.tgz";
10107 url = "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz";
10108 sha1 = "782e0d825c0c5a3bb39731f84efee6b742e6b1ce";
10109 };
10110 }
10111
10112 {
10113 name = "repeat_string___repeat_string_1.6.1.tgz";
10114 path = fetchurl {
10115 name = "repeat_string___repeat_string_1.6.1.tgz";
10116 url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz";
10117 sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
10118 };
10119 }
10120
10121 {
10122 name = "request_promise_core___request_promise_core_1.1.1.tgz";
10123 path = fetchurl {
10124 name = "request_promise_core___request_promise_core_1.1.1.tgz";
10125 url = "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz";
10126 sha1 = "3eee00b2c5aa83239cfb04c5700da36f81cd08b6";
10127 };
10128 }
10129
10130 {
10131 name = "request_promise_native___request_promise_native_1.0.5.tgz";
10132 path = fetchurl {
10133 name = "request_promise_native___request_promise_native_1.0.5.tgz";
10134 url = "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz";
10135 sha1 = "5281770f68e0c9719e5163fd3fab482215f4fda5";
10136 };
10137 }
10138
10139 {
10140 name = "request___request_2.88.0.tgz";
10141 path = fetchurl {
10142 name = "request___request_2.88.0.tgz";
10143 url = "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz";
10144 sha1 = "9c2fca4f7d35b592efe57c7f0a55e81052124fef";
10145 };
10146 }
10147
10148 {
10149 name = "requestidlecallback___requestidlecallback_0.3.0.tgz";
10150 path = fetchurl {
10151 name = "requestidlecallback___requestidlecallback_0.3.0.tgz";
10152 url = "https://registry.yarnpkg.com/requestidlecallback/-/requestidlecallback-0.3.0.tgz";
10153 sha1 = "6fb74e0733f90df3faa4838f9f6a2a5f9b742ac5";
10154 };
10155 }
10156
10157 {
10158 name = "require_directory___require_directory_2.1.1.tgz";
10159 path = fetchurl {
10160 name = "require_directory___require_directory_2.1.1.tgz";
10161 url = "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz";
10162 sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
10163 };
10164 }
10165
10166 {
10167 name = "require_from_string___require_from_string_2.0.2.tgz";
10168 path = fetchurl {
10169 name = "require_from_string___require_from_string_2.0.2.tgz";
10170 url = "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz";
10171 sha1 = "89a7fdd938261267318eafe14f9c32e598c36909";
10172 };
10173 }
10174
10175 {
10176 name = "require_main_filename___require_main_filename_1.0.1.tgz";
10177 path = fetchurl {
10178 name = "require_main_filename___require_main_filename_1.0.1.tgz";
10179 url = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz";
10180 sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1";
10181 };
10182 }
10183
10184 {
10185 name = "require_package_name___require_package_name_2.0.1.tgz";
10186 path = fetchurl {
10187 name = "require_package_name___require_package_name_2.0.1.tgz";
10188 url = "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz";
10189 sha1 = "c11e97276b65b8e2923f75dabf5fb2ef0c3841b9";
10190 };
10191 }
10192
10193 {
10194 name = "require_uncached___require_uncached_1.0.3.tgz";
10195 path = fetchurl {
10196 name = "require_uncached___require_uncached_1.0.3.tgz";
10197 url = "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz";
10198 sha1 = "4e0d56d6c9662fd31e43011c4b95aa49955421d3";
10199 };
10200 }
10201
10202 {
10203 name = "requires_port___requires_port_1.0.0.tgz";
10204 path = fetchurl {
10205 name = "requires_port___requires_port_1.0.0.tgz";
10206 url = "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz";
10207 sha1 = "925d2601d39ac485e091cf0da5c6e694dc3dcaff";
10208 };
10209 }
10210
10211 {
10212 name = "reselect___reselect_4.0.0.tgz";
10213 path = fetchurl {
10214 name = "reselect___reselect_4.0.0.tgz";
10215 url = "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz";
10216 sha1 = "f2529830e5d3d0e021408b246a206ef4ea4437f7";
10217 };
10218 }
10219
10220 {
10221 name = "resolve_cwd___resolve_cwd_2.0.0.tgz";
10222 path = fetchurl {
10223 name = "resolve_cwd___resolve_cwd_2.0.0.tgz";
10224 url = "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz";
10225 sha1 = "00a9f7387556e27038eae232caa372a6a59b665a";
10226 };
10227 }
10228
10229 {
10230 name = "resolve_dir___resolve_dir_1.0.1.tgz";
10231 path = fetchurl {
10232 name = "resolve_dir___resolve_dir_1.0.1.tgz";
10233 url = "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz";
10234 sha1 = "79a40644c362be82f26effe739c9bb5382046f43";
10235 };
10236 }
10237
10238 {
10239 name = "resolve_from___resolve_from_1.0.1.tgz";
10240 path = fetchurl {
10241 name = "resolve_from___resolve_from_1.0.1.tgz";
10242 url = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz";
10243 sha1 = "26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226";
10244 };
10245 }
10246
10247 {
10248 name = "resolve_from___resolve_from_3.0.0.tgz";
10249 path = fetchurl {
10250 name = "resolve_from___resolve_from_3.0.0.tgz";
10251 url = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz";
10252 sha1 = "b22c7af7d9d6881bc8b6e653335eebcb0a188748";
10253 };
10254 }
10255
10256 {
10257 name = "resolve_pathname___resolve_pathname_2.2.0.tgz";
10258 path = fetchurl {
10259 name = "resolve_pathname___resolve_pathname_2.2.0.tgz";
10260 url = "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz";
10261 sha1 = "7e9ae21ed815fd63ab189adeee64dc831eefa879";
10262 };
10263 }
10264
10265 {
10266 name = "resolve_url___resolve_url_0.2.1.tgz";
10267 path = fetchurl {
10268 name = "resolve_url___resolve_url_0.2.1.tgz";
10269 url = "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz";
10270 sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a";
10271 };
10272 }
10273
10274 {
10275 name = "resolve___resolve_1.1.7.tgz";
10276 path = fetchurl {
10277 name = "resolve___resolve_1.1.7.tgz";
10278 url = "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz";
10279 sha1 = "203114d82ad2c5ed9e8e0411b3932875e889e97b";
10280 };
10281 }
10282
10283 {
10284 name = "resolve___resolve_1.11.0.tgz";
10285 path = fetchurl {
10286 name = "resolve___resolve_1.11.0.tgz";
10287 url = "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz";
10288 sha1 = "4014870ba296176b86343d50b60f3b50609ce232";
10289 };
10290 }
10291
10292 {
10293 name = "restore_cursor___restore_cursor_1.0.1.tgz";
10294 path = fetchurl {
10295 name = "restore_cursor___restore_cursor_1.0.1.tgz";
10296 url = "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz";
10297 sha1 = "34661f46886327fed2991479152252df92daa541";
10298 };
10299 }
10300
10301 {
10302 name = "restore_cursor___restore_cursor_2.0.0.tgz";
10303 path = fetchurl {
10304 name = "restore_cursor___restore_cursor_2.0.0.tgz";
10305 url = "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz";
10306 sha1 = "9f7ee287f82fd326d4fd162923d62129eee0dfaf";
10307 };
10308 }
10309
10310 {
10311 name = "ret___ret_0.1.15.tgz";
10312 path = fetchurl {
10313 name = "ret___ret_0.1.15.tgz";
10314 url = "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz";
10315 sha1 = "b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc";
10316 };
10317 }
10318
10319 {
10320 name = "rgb_regex___rgb_regex_1.0.1.tgz";
10321 path = fetchurl {
10322 name = "rgb_regex___rgb_regex_1.0.1.tgz";
10323 url = "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz";
10324 sha1 = "c0e0d6882df0e23be254a475e8edd41915feaeb1";
10325 };
10326 }
10327
10328 {
10329 name = "rgba_regex___rgba_regex_1.0.0.tgz";
10330 path = fetchurl {
10331 name = "rgba_regex___rgba_regex_1.0.0.tgz";
10332 url = "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz";
10333 sha1 = "43374e2e2ca0968b0ef1523460b7d730ff22eeb3";
10334 };
10335 }
10336
10337 {
10338 name = "rimraf___rimraf_2.6.3.tgz";
10339 path = fetchurl {
10340 name = "rimraf___rimraf_2.6.3.tgz";
10341 url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz";
10342 sha1 = "b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab";
10343 };
10344 }
10345
10346 {
10347 name = "ripemd160___ripemd160_2.0.2.tgz";
10348 path = fetchurl {
10349 name = "ripemd160___ripemd160_2.0.2.tgz";
10350 url = "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz";
10351 sha1 = "a1c1a6f624751577ba5d07914cbc92850585890c";
10352 };
10353 }
10354
10355 {
10356 name = "rst_selector_parser___rst_selector_parser_2.2.3.tgz";
10357 path = fetchurl {
10358 name = "rst_selector_parser___rst_selector_parser_2.2.3.tgz";
10359 url = "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz";
10360 sha1 = "81b230ea2fcc6066c89e3472de794285d9b03d91";
10361 };
10362 }
10363
10364 {
10365 name = "rsvp___rsvp_3.6.2.tgz";
10366 path = fetchurl {
10367 name = "rsvp___rsvp_3.6.2.tgz";
10368 url = "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz";
10369 sha1 = "2e96491599a96cde1b515d5674a8f7a91452926a";
10370 };
10371 }
10372
10373 {
10374 name = "run_async___run_async_0.1.0.tgz";
10375 path = fetchurl {
10376 name = "run_async___run_async_0.1.0.tgz";
10377 url = "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz";
10378 sha1 = "c8ad4a5e110661e402a7d21b530e009f25f8e389";
10379 };
10380 }
10381
10382 {
10383 name = "run_async___run_async_2.3.0.tgz";
10384 path = fetchurl {
10385 name = "run_async___run_async_2.3.0.tgz";
10386 url = "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz";
10387 sha1 = "0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0";
10388 };
10389 }
10390
10391 {
10392 name = "run_queue___run_queue_1.0.3.tgz";
10393 path = fetchurl {
10394 name = "run_queue___run_queue_1.0.3.tgz";
10395 url = "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz";
10396 sha1 = "e848396f057d223f24386924618e25694161ec47";
10397 };
10398 }
10399
10400 {
10401 name = "rx_lite___rx_lite_3.1.2.tgz";
10402 path = fetchurl {
10403 name = "rx_lite___rx_lite_3.1.2.tgz";
10404 url = "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz";
10405 sha1 = "19ce502ca572665f3b647b10939f97fd1615f102";
10406 };
10407 }
10408
10409 {
10410 name = "rxjs___rxjs_6.3.3.tgz";
10411 path = fetchurl {
10412 name = "rxjs___rxjs_6.3.3.tgz";
10413 url = "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz";
10414 sha1 = "3c6a7fa420e844a81390fb1158a9ec614f4bad55";
10415 };
10416 }
10417
10418 {
10419 name = "safe_buffer___safe_buffer_5.1.2.tgz";
10420 path = fetchurl {
10421 name = "safe_buffer___safe_buffer_5.1.2.tgz";
10422 url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
10423 sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
10424 };
10425 }
10426
10427 {
10428 name = "safe_regex___safe_regex_1.1.0.tgz";
10429 path = fetchurl {
10430 name = "safe_regex___safe_regex_1.1.0.tgz";
10431 url = "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz";
10432 sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e";
10433 };
10434 }
10435
10436 {
10437 name = "safer_buffer___safer_buffer_2.1.2.tgz";
10438 path = fetchurl {
10439 name = "safer_buffer___safer_buffer_2.1.2.tgz";
10440 url = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
10441 sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
10442 };
10443 }
10444
10445 {
10446 name = "sane___sane_4.0.3.tgz";
10447 path = fetchurl {
10448 name = "sane___sane_4.0.3.tgz";
10449 url = "https://registry.yarnpkg.com/sane/-/sane-4.0.3.tgz";
10450 sha1 = "e878c3f19e25cc57fbb734602f48f8a97818b181";
10451 };
10452 }
10453
10454 {
10455 name = "sass_lint___sass_lint_1.13.1.tgz";
10456 path = fetchurl {
10457 name = "sass_lint___sass_lint_1.13.1.tgz";
10458 url = "https://registry.yarnpkg.com/sass-lint/-/sass-lint-1.13.1.tgz";
10459 sha1 = "5fd2b2792e9215272335eb0f0dc607f61e8acc8f";
10460 };
10461 }
10462
10463 {
10464 name = "sass_loader___sass_loader_7.1.0.tgz";
10465 path = fetchurl {
10466 name = "sass_loader___sass_loader_7.1.0.tgz";
10467 url = "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz";
10468 sha1 = "16fd5138cb8b424bf8a759528a1972d72aad069d";
10469 };
10470 }
10471
10472 {
10473 name = "sass___sass_1.20.3.tgz";
10474 path = fetchurl {
10475 name = "sass___sass_1.20.3.tgz";
10476 url = "https://registry.yarnpkg.com/sass/-/sass-1.20.3.tgz";
10477 sha1 = "18284a7bac6eab9cbb80453288473194f29efb84";
10478 };
10479 }
10480
10481 {
10482 name = "sax___sax_1.2.4.tgz";
10483 path = fetchurl {
10484 name = "sax___sax_1.2.4.tgz";
10485 url = "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz";
10486 sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9";
10487 };
10488 }
10489
10490 {
10491 name = "scheduler___scheduler_0.13.6.tgz";
10492 path = fetchurl {
10493 name = "scheduler___scheduler_0.13.6.tgz";
10494 url = "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz";
10495 sha1 = "466a4ec332467b31a91b9bf74e5347072e4cd889";
10496 };
10497 }
10498
10499 {
10500 name = "schema_utils___schema_utils_1.0.0.tgz";
10501 path = fetchurl {
10502 name = "schema_utils___schema_utils_1.0.0.tgz";
10503 url = "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz";
10504 sha1 = "0b79a93204d7b600d4b2850d1f66c2a34951c770";
10505 };
10506 }
10507
10508 {
10509 name = "scroll_behavior___scroll_behavior_0.9.9.tgz";
10510 path = fetchurl {
10511 name = "scroll_behavior___scroll_behavior_0.9.9.tgz";
10512 url = "https://registry.yarnpkg.com/scroll-behavior/-/scroll-behavior-0.9.9.tgz";
10513 sha1 = "ebfe0658455b82ad885b66195215416674dacce2";
10514 };
10515 }
10516
10517 {
10518 name = "select_hose___select_hose_2.0.0.tgz";
10519 path = fetchurl {
10520 name = "select_hose___select_hose_2.0.0.tgz";
10521 url = "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz";
10522 sha1 = "625d8658f865af43ec962bfc376a37359a4994ca";
10523 };
10524 }
10525
10526 {
10527 name = "selfsigned___selfsigned_1.10.4.tgz";
10528 path = fetchurl {
10529 name = "selfsigned___selfsigned_1.10.4.tgz";
10530 url = "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz";
10531 sha1 = "cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd";
10532 };
10533 }
10534
10535 {
10536 name = "semver___semver_5.7.0.tgz";
10537 path = fetchurl {
10538 name = "semver___semver_5.7.0.tgz";
10539 url = "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz";
10540 sha1 = "790a7cf6fea5459bac96110b29b60412dc8ff96b";
10541 };
10542 }
10543
10544 {
10545 name = "semver___semver_4.3.2.tgz";
10546 path = fetchurl {
10547 name = "semver___semver_4.3.2.tgz";
10548 url = "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz";
10549 sha1 = "c7a07158a80bedd052355b770d82d6640f803be7";
10550 };
10551 }
10552
10553 {
10554 name = "semver___semver_6.1.1.tgz";
10555 path = fetchurl {
10556 name = "semver___semver_6.1.1.tgz";
10557 url = "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz";
10558 sha1 = "53f53da9b30b2103cd4f15eab3a18ecbcb210c9b";
10559 };
10560 }
10561
10562 {
10563 name = "send___send_0.17.1.tgz";
10564 path = fetchurl {
10565 name = "send___send_0.17.1.tgz";
10566 url = "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz";
10567 sha1 = "c1d8b059f7900f7466dd4938bdc44e11ddb376c8";
10568 };
10569 }
10570
10571 {
10572 name = "serialize_javascript___serialize_javascript_1.6.1.tgz";
10573 path = fetchurl {
10574 name = "serialize_javascript___serialize_javascript_1.6.1.tgz";
10575 url = "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz";
10576 sha1 = "4d1f697ec49429a847ca6f442a2a755126c4d879";
10577 };
10578 }
10579
10580 {
10581 name = "serialize_javascript___serialize_javascript_1.7.0.tgz";
10582 path = fetchurl {
10583 name = "serialize_javascript___serialize_javascript_1.7.0.tgz";
10584 url = "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz";
10585 sha1 = "d6e0dfb2a3832a8c94468e6eb1db97e55a192a65";
10586 };
10587 }
10588
10589 {
10590 name = "serve_index___serve_index_1.9.1.tgz";
10591 path = fetchurl {
10592 name = "serve_index___serve_index_1.9.1.tgz";
10593 url = "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz";
10594 sha1 = "d3768d69b1e7d82e5ce050fff5b453bea12a9239";
10595 };
10596 }
10597
10598 {
10599 name = "serve_static___serve_static_1.14.1.tgz";
10600 path = fetchurl {
10601 name = "serve_static___serve_static_1.14.1.tgz";
10602 url = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz";
10603 sha1 = "666e636dc4f010f7ef29970a88a674320898b2f9";
10604 };
10605 }
10606
10607 {
10608 name = "set_blocking___set_blocking_2.0.0.tgz";
10609 path = fetchurl {
10610 name = "set_blocking___set_blocking_2.0.0.tgz";
10611 url = "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz";
10612 sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
10613 };
10614 }
10615
10616 {
10617 name = "set_value___set_value_0.4.3.tgz";
10618 path = fetchurl {
10619 name = "set_value___set_value_0.4.3.tgz";
10620 url = "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz";
10621 sha1 = "7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1";
10622 };
10623 }
10624
10625 {
10626 name = "set_value___set_value_2.0.0.tgz";
10627 path = fetchurl {
10628 name = "set_value___set_value_2.0.0.tgz";
10629 url = "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz";
10630 sha1 = "71ae4a88f0feefbbf52d1ea604f3fb315ebb6274";
10631 };
10632 }
10633
10634 {
10635 name = "setimmediate___setimmediate_1.0.5.tgz";
10636 path = fetchurl {
10637 name = "setimmediate___setimmediate_1.0.5.tgz";
10638 url = "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz";
10639 sha1 = "290cbb232e306942d7d7ea9b83732ab7856f8285";
10640 };
10641 }
10642
10643 {
10644 name = "setprototypeof___setprototypeof_1.1.0.tgz";
10645 path = fetchurl {
10646 name = "setprototypeof___setprototypeof_1.1.0.tgz";
10647 url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz";
10648 sha1 = "d0bd85536887b6fe7c0d818cb962d9d91c54e656";
10649 };
10650 }
10651
10652 {
10653 name = "setprototypeof___setprototypeof_1.1.1.tgz";
10654 path = fetchurl {
10655 name = "setprototypeof___setprototypeof_1.1.1.tgz";
10656 url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz";
10657 sha1 = "7e95acb24aa92f5885e0abef5ba131330d4ae683";
10658 };
10659 }
10660
10661 {
10662 name = "sha.js___sha.js_2.4.11.tgz";
10663 path = fetchurl {
10664 name = "sha.js___sha.js_2.4.11.tgz";
10665 url = "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz";
10666 sha1 = "37a5cf0b81ecbc6943de109ba2960d1b26584ae7";
10667 };
10668 }
10669
10670 {
10671 name = "shallow_clone___shallow_clone_1.0.0.tgz";
10672 path = fetchurl {
10673 name = "shallow_clone___shallow_clone_1.0.0.tgz";
10674 url = "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz";
10675 sha1 = "4480cd06e882ef68b2ad88a3ea54832e2c48b571";
10676 };
10677 }
10678
10679 {
10680 name = "shebang_command___shebang_command_1.2.0.tgz";
10681 path = fetchurl {
10682 name = "shebang_command___shebang_command_1.2.0.tgz";
10683 url = "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz";
10684 sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea";
10685 };
10686 }
10687
10688 {
10689 name = "shebang_regex___shebang_regex_1.0.0.tgz";
10690 path = fetchurl {
10691 name = "shebang_regex___shebang_regex_1.0.0.tgz";
10692 url = "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz";
10693 sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3";
10694 };
10695 }
10696
10697 {
10698 name = "shelljs___shelljs_0.6.1.tgz";
10699 path = fetchurl {
10700 name = "shelljs___shelljs_0.6.1.tgz";
10701 url = "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz";
10702 sha1 = "ec6211bed1920442088fe0f70b2837232ed2c8a8";
10703 };
10704 }
10705
10706 {
10707 name = "shellwords___shellwords_0.1.1.tgz";
10708 path = fetchurl {
10709 name = "shellwords___shellwords_0.1.1.tgz";
10710 url = "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz";
10711 sha1 = "d6b9181c1a48d397324c84871efbcfc73fc0654b";
10712 };
10713 }
10714
10715 {
10716 name = "signal_exit___signal_exit_3.0.2.tgz";
10717 path = fetchurl {
10718 name = "signal_exit___signal_exit_3.0.2.tgz";
10719 url = "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz";
10720 sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
10721 };
10722 }
10723
10724 {
10725 name = "simple_swizzle___simple_swizzle_0.2.2.tgz";
10726 path = fetchurl {
10727 name = "simple_swizzle___simple_swizzle_0.2.2.tgz";
10728 url = "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz";
10729 sha1 = "a4da6b635ffcccca33f70d17cb92592de95e557a";
10730 };
10731 }
10732
10733 {
10734 name = "sisteransi___sisteransi_1.0.0.tgz";
10735 path = fetchurl {
10736 name = "sisteransi___sisteransi_1.0.0.tgz";
10737 url = "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz";
10738 sha1 = "77d9622ff909080f1c19e5f4a1df0c1b0a27b88c";
10739 };
10740 }
10741
10742 {
10743 name = "slash___slash_1.0.0.tgz";
10744 path = fetchurl {
10745 name = "slash___slash_1.0.0.tgz";
10746 url = "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz";
10747 sha1 = "c41f2f6c39fc16d1cd17ad4b5d896114ae470d55";
10748 };
10749 }
10750
10751 {
10752 name = "slash___slash_2.0.0.tgz";
10753 path = fetchurl {
10754 name = "slash___slash_2.0.0.tgz";
10755 url = "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz";
10756 sha1 = "de552851a1759df3a8f206535442f5ec4ddeab44";
10757 };
10758 }
10759
10760 {
10761 name = "slice_ansi___slice_ansi_0.0.4.tgz";
10762 path = fetchurl {
10763 name = "slice_ansi___slice_ansi_0.0.4.tgz";
10764 url = "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz";
10765 sha1 = "edbf8903f66f7ce2f8eafd6ceed65e264c831b35";
10766 };
10767 }
10768
10769 {
10770 name = "slice_ansi___slice_ansi_2.0.0.tgz";
10771 path = fetchurl {
10772 name = "slice_ansi___slice_ansi_2.0.0.tgz";
10773 url = "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.0.0.tgz";
10774 sha1 = "5373bdb8559b45676e8541c66916cdd6251612e7";
10775 };
10776 }
10777
10778 {
10779 name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
10780 path = fetchurl {
10781 name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
10782 url = "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz";
10783 sha1 = "6c175f86ff14bdb0724563e8f3c1b021a286853b";
10784 };
10785 }
10786
10787 {
10788 name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
10789 path = fetchurl {
10790 name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
10791 url = "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz";
10792 sha1 = "f956479486f2acd79700693f6f7b805e45ab56e2";
10793 };
10794 }
10795
10796 {
10797 name = "snapdragon___snapdragon_0.8.2.tgz";
10798 path = fetchurl {
10799 name = "snapdragon___snapdragon_0.8.2.tgz";
10800 url = "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz";
10801 sha1 = "64922e7c565b0e14204ba1aa7d6964278d25182d";
10802 };
10803 }
10804
10805 {
10806 name = "sockjs_client___sockjs_client_1.3.0.tgz";
10807 path = fetchurl {
10808 name = "sockjs_client___sockjs_client_1.3.0.tgz";
10809 url = "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz";
10810 sha1 = "12fc9d6cb663da5739d3dc5fb6e8687da95cb177";
10811 };
10812 }
10813
10814 {
10815 name = "sockjs___sockjs_0.3.19.tgz";
10816 path = fetchurl {
10817 name = "sockjs___sockjs_0.3.19.tgz";
10818 url = "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz";
10819 sha1 = "d976bbe800af7bd20ae08598d582393508993c0d";
10820 };
10821 }
10822
10823 {
10824 name = "source_list_map___source_list_map_2.0.1.tgz";
10825 path = fetchurl {
10826 name = "source_list_map___source_list_map_2.0.1.tgz";
10827 url = "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz";
10828 sha1 = "3993bd873bfc48479cca9ea3a547835c7c154b34";
10829 };
10830 }
10831
10832 {
10833 name = "source_map_resolve___source_map_resolve_0.5.2.tgz";
10834 path = fetchurl {
10835 name = "source_map_resolve___source_map_resolve_0.5.2.tgz";
10836 url = "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz";
10837 sha1 = "72e2cc34095543e43b2c62b2c4c10d4a9054f259";
10838 };
10839 }
10840
10841 {
10842 name = "source_map_support___source_map_support_0.5.9.tgz";
10843 path = fetchurl {
10844 name = "source_map_support___source_map_support_0.5.9.tgz";
10845 url = "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz";
10846 sha1 = "41bc953b2534267ea2d605bccfa7bfa3111ced5f";
10847 };
10848 }
10849
10850 {
10851 name = "source_map_support___source_map_support_0.5.12.tgz";
10852 path = fetchurl {
10853 name = "source_map_support___source_map_support_0.5.12.tgz";
10854 url = "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz";
10855 sha1 = "b4f3b10d51857a5af0138d3ce8003b201613d599";
10856 };
10857 }
10858
10859 {
10860 name = "source_map_url___source_map_url_0.4.0.tgz";
10861 path = fetchurl {
10862 name = "source_map_url___source_map_url_0.4.0.tgz";
10863 url = "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz";
10864 sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3";
10865 };
10866 }
10867
10868 {
10869 name = "source_map___source_map_0.5.7.tgz";
10870 path = fetchurl {
10871 name = "source_map___source_map_0.5.7.tgz";
10872 url = "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz";
10873 sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
10874 };
10875 }
10876
10877 {
10878 name = "source_map___source_map_0.6.1.tgz";
10879 path = fetchurl {
10880 name = "source_map___source_map_0.6.1.tgz";
10881 url = "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz";
10882 sha1 = "74722af32e9614e9c287a8d0bbde48b5e2f1a263";
10883 };
10884 }
10885
10886 {
10887 name = "source_map___source_map_0.7.3.tgz";
10888 path = fetchurl {
10889 name = "source_map___source_map_0.7.3.tgz";
10890 url = "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz";
10891 sha1 = "5302f8169031735226544092e64981f751750383";
10892 };
10893 }
10894
10895 {
10896 name = "spdx_correct___spdx_correct_3.1.0.tgz";
10897 path = fetchurl {
10898 name = "spdx_correct___spdx_correct_3.1.0.tgz";
10899 url = "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz";
10900 sha1 = "fb83e504445268f154b074e218c87c003cd31df4";
10901 };
10902 }
10903
10904 {
10905 name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz";
10906 path = fetchurl {
10907 name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz";
10908 url = "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz";
10909 sha1 = "2ea450aee74f2a89bfb94519c07fcd6f41322977";
10910 };
10911 }
10912
10913 {
10914 name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
10915 path = fetchurl {
10916 name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
10917 url = "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz";
10918 sha1 = "99e119b7a5da00e05491c9fa338b7904823b41d0";
10919 };
10920 }
10921
10922 {
10923 name = "spdx_license_ids___spdx_license_ids_3.0.3.tgz";
10924 path = fetchurl {
10925 name = "spdx_license_ids___spdx_license_ids_3.0.3.tgz";
10926 url = "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz";
10927 sha1 = "81c0ce8f21474756148bbb5f3bfc0f36bf15d76e";
10928 };
10929 }
10930
10931 {
10932 name = "spdy_transport___spdy_transport_3.0.0.tgz";
10933 path = fetchurl {
10934 name = "spdy_transport___spdy_transport_3.0.0.tgz";
10935 url = "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz";
10936 sha1 = "00d4863a6400ad75df93361a1608605e5dcdcf31";
10937 };
10938 }
10939
10940 {
10941 name = "spdy___spdy_4.0.0.tgz";
10942 path = fetchurl {
10943 name = "spdy___spdy_4.0.0.tgz";
10944 url = "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz";
10945 sha1 = "81f222b5a743a329aa12cea6a390e60e9b613c52";
10946 };
10947 }
10948
10949 {
10950 name = "split_string___split_string_3.1.0.tgz";
10951 path = fetchurl {
10952 name = "split_string___split_string_3.1.0.tgz";
10953 url = "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz";
10954 sha1 = "7cb09dda3a86585705c64b39a6466038682e8fe2";
10955 };
10956 }
10957
10958 {
10959 name = "split___split_1.0.1.tgz";
10960 path = fetchurl {
10961 name = "split___split_1.0.1.tgz";
10962 url = "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz";
10963 sha1 = "605bd9be303aa59fb35f9229fbea0ddec9ea07d9";
10964 };
10965 }
10966
10967 {
10968 name = "sprintf_js___sprintf_js_1.0.3.tgz";
10969 path = fetchurl {
10970 name = "sprintf_js___sprintf_js_1.0.3.tgz";
10971 url = "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz";
10972 sha1 = "04e6926f662895354f3dd015203633b857297e2c";
10973 };
10974 }
10975
10976 {
10977 name = "sshpk___sshpk_1.16.0.tgz";
10978 path = fetchurl {
10979 name = "sshpk___sshpk_1.16.0.tgz";
10980 url = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.0.tgz";
10981 sha1 = "1d4963a2fbffe58050aa9084ca20be81741c07de";
10982 };
10983 }
10984
10985 {
10986 name = "ssri___ssri_6.0.1.tgz";
10987 path = fetchurl {
10988 name = "ssri___ssri_6.0.1.tgz";
10989 url = "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz";
10990 sha1 = "2a3c41b28dd45b62b63676ecb74001265ae9edd8";
10991 };
10992 }
10993
10994 {
10995 name = "stable___stable_0.1.8.tgz";
10996 path = fetchurl {
10997 name = "stable___stable_0.1.8.tgz";
10998 url = "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz";
10999 sha1 = "836eb3c8382fe2936feaf544631017ce7d47a3cf";
11000 };
11001 }
11002
11003 {
11004 name = "stack_utils___stack_utils_1.0.2.tgz";
11005 path = fetchurl {
11006 name = "stack_utils___stack_utils_1.0.2.tgz";
11007 url = "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz";
11008 sha1 = "33eba3897788558bebfc2db059dc158ec36cebb8";
11009 };
11010 }
11011
11012 {
11013 name = "static_extend___static_extend_0.1.2.tgz";
11014 path = fetchurl {
11015 name = "static_extend___static_extend_0.1.2.tgz";
11016 url = "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz";
11017 sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6";
11018 };
11019 }
11020
11021 {
11022 name = "statuses___statuses_1.5.0.tgz";
11023 path = fetchurl {
11024 name = "statuses___statuses_1.5.0.tgz";
11025 url = "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz";
11026 sha1 = "161c7dac177659fd9811f43771fa99381478628c";
11027 };
11028 }
11029
11030 {
11031 name = "stealthy_require___stealthy_require_1.1.1.tgz";
11032 path = fetchurl {
11033 name = "stealthy_require___stealthy_require_1.1.1.tgz";
11034 url = "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz";
11035 sha1 = "35b09875b4ff49f26a777e509b3090a3226bf24b";
11036 };
11037 }
11038
11039 {
11040 name = "stream_browserify___stream_browserify_2.0.1.tgz";
11041 path = fetchurl {
11042 name = "stream_browserify___stream_browserify_2.0.1.tgz";
11043 url = "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz";
11044 sha1 = "66266ee5f9bdb9940a4e4514cafb43bb71e5c9db";
11045 };
11046 }
11047
11048 {
11049 name = "stream_each___stream_each_1.2.3.tgz";
11050 path = fetchurl {
11051 name = "stream_each___stream_each_1.2.3.tgz";
11052 url = "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz";
11053 sha1 = "ebe27a0c389b04fbcc233642952e10731afa9bae";
11054 };
11055 }
11056
11057 {
11058 name = "stream_http___stream_http_2.8.3.tgz";
11059 path = fetchurl {
11060 name = "stream_http___stream_http_2.8.3.tgz";
11061 url = "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz";
11062 sha1 = "b2d242469288a5a27ec4fe8933acf623de6514fc";
11063 };
11064 }
11065
11066 {
11067 name = "stream_shift___stream_shift_1.0.0.tgz";
11068 path = fetchurl {
11069 name = "stream_shift___stream_shift_1.0.0.tgz";
11070 url = "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz";
11071 sha1 = "d5c752825e5367e786f78e18e445ea223a155952";
11072 };
11073 }
11074
11075 {
11076 name = "string_length___string_length_2.0.0.tgz";
11077 path = fetchurl {
11078 name = "string_length___string_length_2.0.0.tgz";
11079 url = "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz";
11080 sha1 = "d40dbb686a3ace960c1cffca562bf2c45f8363ed";
11081 };
11082 }
11083
11084 {
11085 name = "string_width___string_width_1.0.2.tgz";
11086 path = fetchurl {
11087 name = "string_width___string_width_1.0.2.tgz";
11088 url = "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz";
11089 sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
11090 };
11091 }
11092
11093 {
11094 name = "string_width___string_width_2.1.1.tgz";
11095 path = fetchurl {
11096 name = "string_width___string_width_2.1.1.tgz";
11097 url = "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz";
11098 sha1 = "ab93f27a8dc13d28cac815c462143a6d9012ae9e";
11099 };
11100 }
11101
11102 {
11103 name = "string.prototype.trim___string.prototype.trim_1.1.2.tgz";
11104 path = fetchurl {
11105 name = "string.prototype.trim___string.prototype.trim_1.1.2.tgz";
11106 url = "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz";
11107 sha1 = "d04de2c89e137f4d7d206f086b5ed2fae6be8cea";
11108 };
11109 }
11110
11111 {
11112 name = "string_decoder___string_decoder_1.2.0.tgz";
11113 path = fetchurl {
11114 name = "string_decoder___string_decoder_1.2.0.tgz";
11115 url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz";
11116 sha1 = "fe86e738b19544afe70469243b2a1ee9240eae8d";
11117 };
11118 }
11119
11120 {
11121 name = "string_decoder___string_decoder_1.1.1.tgz";
11122 path = fetchurl {
11123 name = "string_decoder___string_decoder_1.1.1.tgz";
11124 url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz";
11125 sha1 = "9cf1611ba62685d7030ae9e4ba34149c3af03fc8";
11126 };
11127 }
11128
11129 {
11130 name = "stringz___stringz_1.0.0.tgz";
11131 path = fetchurl {
11132 name = "stringz___stringz_1.0.0.tgz";
11133 url = "https://registry.yarnpkg.com/stringz/-/stringz-1.0.0.tgz";
11134 sha1 = "d2acba994e4ce3c725ee15c86fff4281280d2025";
11135 };
11136 }
11137
11138 {
11139 name = "strip_ansi___strip_ansi_3.0.1.tgz";
11140 path = fetchurl {
11141 name = "strip_ansi___strip_ansi_3.0.1.tgz";
11142 url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz";
11143 sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
11144 };
11145 }
11146
11147 {
11148 name = "strip_ansi___strip_ansi_4.0.0.tgz";
11149 path = fetchurl {
11150 name = "strip_ansi___strip_ansi_4.0.0.tgz";
11151 url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz";
11152 sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
11153 };
11154 }
11155
11156 {
11157 name = "strip_ansi___strip_ansi_5.0.0.tgz";
11158 path = fetchurl {
11159 name = "strip_ansi___strip_ansi_5.0.0.tgz";
11160 url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz";
11161 sha1 = "f78f68b5d0866c20b2c9b8c61b5298508dc8756f";
11162 };
11163 }
11164
11165 {
11166 name = "strip_bom___strip_bom_3.0.0.tgz";
11167 path = fetchurl {
11168 name = "strip_bom___strip_bom_3.0.0.tgz";
11169 url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz";
11170 sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3";
11171 };
11172 }
11173
11174 {
11175 name = "strip_eof___strip_eof_1.0.0.tgz";
11176 path = fetchurl {
11177 name = "strip_eof___strip_eof_1.0.0.tgz";
11178 url = "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz";
11179 sha1 = "bb43ff5598a6eb05d89b59fcd129c983313606bf";
11180 };
11181 }
11182
11183 {
11184 name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
11185 path = fetchurl {
11186 name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
11187 url = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
11188 sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
11189 };
11190 }
11191
11192 {
11193 name = "strip_json_comments___strip_json_comments_1.0.4.tgz";
11194 path = fetchurl {
11195 name = "strip_json_comments___strip_json_comments_1.0.4.tgz";
11196 url = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz";
11197 sha1 = "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91";
11198 };
11199 }
11200
11201 {
11202 name = "stylehacks___stylehacks_4.0.1.tgz";
11203 path = fetchurl {
11204 name = "stylehacks___stylehacks_4.0.1.tgz";
11205 url = "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz";
11206 sha1 = "3186595d047ab0df813d213e51c8b94e0b9010f2";
11207 };
11208 }
11209
11210 {
11211 name = "stylis_rule_sheet___stylis_rule_sheet_0.0.10.tgz";
11212 path = fetchurl {
11213 name = "stylis_rule_sheet___stylis_rule_sheet_0.0.10.tgz";
11214 url = "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz";
11215 sha1 = "44e64a2b076643f4b52e5ff71efc04d8c3c4a430";
11216 };
11217 }
11218
11219 {
11220 name = "stylis___stylis_3.5.4.tgz";
11221 path = fetchurl {
11222 name = "stylis___stylis_3.5.4.tgz";
11223 url = "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz";
11224 sha1 = "f665f25f5e299cf3d64654ab949a57c768b73fbe";
11225 };
11226 }
11227
11228 {
11229 name = "substring_trie___substring_trie_1.0.2.tgz";
11230 path = fetchurl {
11231 name = "substring_trie___substring_trie_1.0.2.tgz";
11232 url = "https://registry.yarnpkg.com/substring-trie/-/substring-trie-1.0.2.tgz";
11233 sha1 = "7b42592391628b4f2cb17365c6cce4257c7b7af5";
11234 };
11235 }
11236
11237 {
11238 name = "supports_color___supports_color_2.0.0.tgz";
11239 path = fetchurl {
11240 name = "supports_color___supports_color_2.0.0.tgz";
11241 url = "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz";
11242 sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
11243 };
11244 }
11245
11246 {
11247 name = "supports_color___supports_color_3.2.3.tgz";
11248 path = fetchurl {
11249 name = "supports_color___supports_color_3.2.3.tgz";
11250 url = "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz";
11251 sha1 = "65ac0504b3954171d8a64946b2ae3cbb8a5f54f6";
11252 };
11253 }
11254
11255 {
11256 name = "supports_color___supports_color_5.5.0.tgz";
11257 path = fetchurl {
11258 name = "supports_color___supports_color_5.5.0.tgz";
11259 url = "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz";
11260 sha1 = "e2e69a44ac8772f78a1ec0b35b689df6530efc8f";
11261 };
11262 }
11263
11264 {
11265 name = "supports_color___supports_color_6.1.0.tgz";
11266 path = fetchurl {
11267 name = "supports_color___supports_color_6.1.0.tgz";
11268 url = "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz";
11269 sha1 = "0764abc69c63d5ac842dd4867e8d025e880df8f3";
11270 };
11271 }
11272
11273 {
11274 name = "svgo___svgo_1.1.1.tgz";
11275 path = fetchurl {
11276 name = "svgo___svgo_1.1.1.tgz";
11277 url = "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz";
11278 sha1 = "12384b03335bcecd85cfa5f4e3375fed671cb985";
11279 };
11280 }
11281
11282 {
11283 name = "symbol_observable___symbol_observable_1.2.0.tgz";
11284 path = fetchurl {
11285 name = "symbol_observable___symbol_observable_1.2.0.tgz";
11286 url = "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz";
11287 sha1 = "c22688aed4eab3cdc2dfeacbb561660560a00804";
11288 };
11289 }
11290
11291 {
11292 name = "symbol_tree___symbol_tree_3.2.2.tgz";
11293 path = fetchurl {
11294 name = "symbol_tree___symbol_tree_3.2.2.tgz";
11295 url = "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz";
11296 sha1 = "ae27db38f660a7ae2e1c3b7d1bc290819b8519e6";
11297 };
11298 }
11299
11300 {
11301 name = "table___table_3.8.3.tgz";
11302 path = fetchurl {
11303 name = "table___table_3.8.3.tgz";
11304 url = "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz";
11305 sha1 = "2bbc542f0fda9861a755d3947fefd8b3f513855f";
11306 };
11307 }
11308
11309 {
11310 name = "table___table_5.1.1.tgz";
11311 path = fetchurl {
11312 name = "table___table_5.1.1.tgz";
11313 url = "https://registry.yarnpkg.com/table/-/table-5.1.1.tgz";
11314 sha1 = "92030192f1b7b51b6eeab23ed416862e47b70837";
11315 };
11316 }
11317
11318 {
11319 name = "tapable___tapable_1.1.1.tgz";
11320 path = fetchurl {
11321 name = "tapable___tapable_1.1.1.tgz";
11322 url = "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz";
11323 sha1 = "4d297923c5a72a42360de2ab52dadfaaec00018e";
11324 };
11325 }
11326
11327 {
11328 name = "tar___tar_4.4.8.tgz";
11329 path = fetchurl {
11330 name = "tar___tar_4.4.8.tgz";
11331 url = "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz";
11332 sha1 = "b19eec3fde2a96e64666df9fdb40c5ca1bc3747d";
11333 };
11334 }
11335
11336 {
11337 name = "tcomb___tcomb_2.7.0.tgz";
11338 path = fetchurl {
11339 name = "tcomb___tcomb_2.7.0.tgz";
11340 url = "https://registry.yarnpkg.com/tcomb/-/tcomb-2.7.0.tgz";
11341 sha1 = "10d62958041669a5d53567b9a4ee8cde22b1c2b0";
11342 };
11343 }
11344
11345 {
11346 name = "terser_webpack_plugin___terser_webpack_plugin_1.3.0.tgz";
11347 path = fetchurl {
11348 name = "terser_webpack_plugin___terser_webpack_plugin_1.3.0.tgz";
11349 url = "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz";
11350 sha1 = "69aa22426299f4b5b3775cbed8cb2c5d419aa1d4";
11351 };
11352 }
11353
11354 {
11355 name = "terser___terser_4.0.0.tgz";
11356 path = fetchurl {
11357 name = "terser___terser_4.0.0.tgz";
11358 url = "https://registry.yarnpkg.com/terser/-/terser-4.0.0.tgz";
11359 sha1 = "ef356f6f359a963e2cc675517f21c1c382877374";
11360 };
11361 }
11362
11363 {
11364 name = "test_exclude___test_exclude_5.1.0.tgz";
11365 path = fetchurl {
11366 name = "test_exclude___test_exclude_5.1.0.tgz";
11367 url = "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.1.0.tgz";
11368 sha1 = "6ba6b25179d2d38724824661323b73e03c0c1de1";
11369 };
11370 }
11371
11372 {
11373 name = "text_table___text_table_0.2.0.tgz";
11374 path = fetchurl {
11375 name = "text_table___text_table_0.2.0.tgz";
11376 url = "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz";
11377 sha1 = "7f5ee823ae805207c00af2df4a84ec3fcfa570b4";
11378 };
11379 }
11380
11381 {
11382 name = "throat___throat_4.1.0.tgz";
11383 path = fetchurl {
11384 name = "throat___throat_4.1.0.tgz";
11385 url = "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz";
11386 sha1 = "89037cbc92c56ab18926e6ba4cbb200e15672a6a";
11387 };
11388 }
11389
11390 {
11391 name = "throng___throng_4.0.0.tgz";
11392 path = fetchurl {
11393 name = "throng___throng_4.0.0.tgz";
11394 url = "https://registry.yarnpkg.com/throng/-/throng-4.0.0.tgz";
11395 sha1 = "983c6ba1993b58eae859998aa687ffe88df84c17";
11396 };
11397 }
11398
11399 {
11400 name = "through2___through2_2.0.5.tgz";
11401 path = fetchurl {
11402 name = "through2___through2_2.0.5.tgz";
11403 url = "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz";
11404 sha1 = "01c1e39eb31d07cb7d03a96a70823260b23132cd";
11405 };
11406 }
11407
11408 {
11409 name = "through___through_2.3.8.tgz";
11410 path = fetchurl {
11411 name = "through___through_2.3.8.tgz";
11412 url = "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz";
11413 sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
11414 };
11415 }
11416
11417 {
11418 name = "thunky___thunky_1.0.3.tgz";
11419 path = fetchurl {
11420 name = "thunky___thunky_1.0.3.tgz";
11421 url = "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz";
11422 sha1 = "f5df732453407b09191dae73e2a8cc73f381a826";
11423 };
11424 }
11425
11426 {
11427 name = "timers_browserify___timers_browserify_2.0.10.tgz";
11428 path = fetchurl {
11429 name = "timers_browserify___timers_browserify_2.0.10.tgz";
11430 url = "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz";
11431 sha1 = "1d28e3d2aadf1d5a5996c4e9f95601cd053480ae";
11432 };
11433 }
11434
11435 {
11436 name = "timsort___timsort_0.3.0.tgz";
11437 path = fetchurl {
11438 name = "timsort___timsort_0.3.0.tgz";
11439 url = "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz";
11440 sha1 = "405411a8e7e6339fe64db9a234de11dc31e02bd4";
11441 };
11442 }
11443
11444 {
11445 name = "tiny_queue___tiny_queue_0.2.1.tgz";
11446 path = fetchurl {
11447 name = "tiny_queue___tiny_queue_0.2.1.tgz";
11448 url = "https://registry.yarnpkg.com/tiny-queue/-/tiny-queue-0.2.1.tgz";
11449 sha1 = "25a67f2c6e253b2ca941977b5ef7442ef97a6046";
11450 };
11451 }
11452
11453 {
11454 name = "tmp___tmp_0.0.33.tgz";
11455 path = fetchurl {
11456 name = "tmp___tmp_0.0.33.tgz";
11457 url = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz";
11458 sha1 = "6d34335889768d21b2bcda0aa277ced3b1bfadf9";
11459 };
11460 }
11461
11462 {
11463 name = "tmpl___tmpl_1.0.4.tgz";
11464 path = fetchurl {
11465 name = "tmpl___tmpl_1.0.4.tgz";
11466 url = "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz";
11467 sha1 = "23640dd7b42d00433911140820e5cf440e521dd1";
11468 };
11469 }
11470
11471 {
11472 name = "to_arraybuffer___to_arraybuffer_1.0.1.tgz";
11473 path = fetchurl {
11474 name = "to_arraybuffer___to_arraybuffer_1.0.1.tgz";
11475 url = "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz";
11476 sha1 = "7d229b1fcc637e466ca081180836a7aabff83f43";
11477 };
11478 }
11479
11480 {
11481 name = "to_fast_properties___to_fast_properties_2.0.0.tgz";
11482 path = fetchurl {
11483 name = "to_fast_properties___to_fast_properties_2.0.0.tgz";
11484 url = "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz";
11485 sha1 = "dc5e698cbd079265bc73e0377681a4e4e83f616e";
11486 };
11487 }
11488
11489 {
11490 name = "to_object_path___to_object_path_0.3.0.tgz";
11491 path = fetchurl {
11492 name = "to_object_path___to_object_path_0.3.0.tgz";
11493 url = "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz";
11494 sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af";
11495 };
11496 }
11497
11498 {
11499 name = "to_regex_range___to_regex_range_2.1.1.tgz";
11500 path = fetchurl {
11501 name = "to_regex_range___to_regex_range_2.1.1.tgz";
11502 url = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz";
11503 sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38";
11504 };
11505 }
11506
11507 {
11508 name = "to_regex___to_regex_3.0.2.tgz";
11509 path = fetchurl {
11510 name = "to_regex___to_regex_3.0.2.tgz";
11511 url = "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz";
11512 sha1 = "13cfdd9b336552f30b51f33a8ae1b42a7a7599ce";
11513 };
11514 }
11515
11516 {
11517 name = "toidentifier___toidentifier_1.0.0.tgz";
11518 path = fetchurl {
11519 name = "toidentifier___toidentifier_1.0.0.tgz";
11520 url = "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz";
11521 sha1 = "7e1be3470f1e77948bc43d94a3c8f4d7752ba553";
11522 };
11523 }
11524
11525 {
11526 name = "touch___touch_2.0.2.tgz";
11527 path = fetchurl {
11528 name = "touch___touch_2.0.2.tgz";
11529 url = "https://registry.yarnpkg.com/touch/-/touch-2.0.2.tgz";
11530 sha1 = "ca0b2a3ae3211246a61b16ba9e6cbf1596287164";
11531 };
11532 }
11533
11534 {
11535 name = "tough_cookie___tough_cookie_2.5.0.tgz";
11536 path = fetchurl {
11537 name = "tough_cookie___tough_cookie_2.5.0.tgz";
11538 url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz";
11539 sha1 = "cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2";
11540 };
11541 }
11542
11543 {
11544 name = "tough_cookie___tough_cookie_2.4.3.tgz";
11545 path = fetchurl {
11546 name = "tough_cookie___tough_cookie_2.4.3.tgz";
11547 url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz";
11548 sha1 = "53f36da3f47783b0925afa06ff9f3b165280f781";
11549 };
11550 }
11551
11552 {
11553 name = "tr46___tr46_1.0.1.tgz";
11554 path = fetchurl {
11555 name = "tr46___tr46_1.0.1.tgz";
11556 url = "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz";
11557 sha1 = "a8b13fd6bfd2489519674ccde55ba3693b706d09";
11558 };
11559 }
11560
11561 {
11562 name = "trim_right___trim_right_1.0.1.tgz";
11563 path = fetchurl {
11564 name = "trim_right___trim_right_1.0.1.tgz";
11565 url = "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz";
11566 sha1 = "cb2e1203067e0c8de1f614094b9fe45704ea6003";
11567 };
11568 }
11569
11570 {
11571 name = "tryer___tryer_1.0.1.tgz";
11572 path = fetchurl {
11573 name = "tryer___tryer_1.0.1.tgz";
11574 url = "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz";
11575 sha1 = "f2c85406800b9b0f74c9f7465b81eaad241252f8";
11576 };
11577 }
11578
11579 {
11580 name = "tslib___tslib_1.9.3.tgz";
11581 path = fetchurl {
11582 name = "tslib___tslib_1.9.3.tgz";
11583 url = "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz";
11584 sha1 = "d7e4dd79245d85428c4d7e4822a79917954ca286";
11585 };
11586 }
11587
11588 {
11589 name = "tty_browserify___tty_browserify_0.0.0.tgz";
11590 path = fetchurl {
11591 name = "tty_browserify___tty_browserify_0.0.0.tgz";
11592 url = "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz";
11593 sha1 = "a157ba402da24e9bf957f9aa69d524eed42901a6";
11594 };
11595 }
11596
11597 {
11598 name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
11599 path = fetchurl {
11600 name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
11601 url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
11602 sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
11603 };
11604 }
11605
11606 {
11607 name = "tweetnacl___tweetnacl_0.14.5.tgz";
11608 path = fetchurl {
11609 name = "tweetnacl___tweetnacl_0.14.5.tgz";
11610 url = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz";
11611 sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
11612 };
11613 }
11614
11615 {
11616 name = "type_check___type_check_0.3.2.tgz";
11617 path = fetchurl {
11618 name = "type_check___type_check_0.3.2.tgz";
11619 url = "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz";
11620 sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
11621 };
11622 }
11623
11624 {
11625 name = "type_is___type_is_1.6.18.tgz";
11626 path = fetchurl {
11627 name = "type_is___type_is_1.6.18.tgz";
11628 url = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz";
11629 sha1 = "4e552cd05df09467dcbc4ef739de89f2cf37c131";
11630 };
11631 }
11632
11633 {
11634 name = "typedarray___typedarray_0.0.6.tgz";
11635 path = fetchurl {
11636 name = "typedarray___typedarray_0.0.6.tgz";
11637 url = "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz";
11638 sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
11639 };
11640 }
11641
11642 {
11643 name = "ua_parser_js___ua_parser_js_0.7.19.tgz";
11644 path = fetchurl {
11645 name = "ua_parser_js___ua_parser_js_0.7.19.tgz";
11646 url = "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz";
11647 sha1 = "94151be4c0a7fb1d001af7022fdaca4642659e4b";
11648 };
11649 }
11650
11651 {
11652 name = "uglify_js___uglify_js_3.4.9.tgz";
11653 path = fetchurl {
11654 name = "uglify_js___uglify_js_3.4.9.tgz";
11655 url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz";
11656 sha1 = "af02f180c1207d76432e473ed24a28f4a782bae3";
11657 };
11658 }
11659
11660 {
11661 name = "unicode_astral_regex___unicode_astral_regex_1.0.1.tgz";
11662 path = fetchurl {
11663 name = "unicode_astral_regex___unicode_astral_regex_1.0.1.tgz";
11664 url = "https://registry.yarnpkg.com/unicode-astral-regex/-/unicode-astral-regex-1.0.1.tgz";
11665 sha1 = "2cab8529480646f9614ddbc7b62158ad05123feb";
11666 };
11667 }
11668
11669 {
11670 name = "unicode_canonical_property_names_ecmascript___unicode_canonical_property_names_ecmascript_1.0.4.tgz";
11671 path = fetchurl {
11672 name = "unicode_canonical_property_names_ecmascript___unicode_canonical_property_names_ecmascript_1.0.4.tgz";
11673 url = "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz";
11674 sha1 = "2619800c4c825800efdd8343af7dd9933cbe2818";
11675 };
11676 }
11677
11678 {
11679 name = "unicode_match_property_ecmascript___unicode_match_property_ecmascript_1.0.4.tgz";
11680 path = fetchurl {
11681 name = "unicode_match_property_ecmascript___unicode_match_property_ecmascript_1.0.4.tgz";
11682 url = "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz";
11683 sha1 = "8ed2a32569961bce9227d09cd3ffbb8fed5f020c";
11684 };
11685 }
11686
11687 {
11688 name = "unicode_match_property_value_ecmascript___unicode_match_property_value_ecmascript_1.1.0.tgz";
11689 path = fetchurl {
11690 name = "unicode_match_property_value_ecmascript___unicode_match_property_value_ecmascript_1.1.0.tgz";
11691 url = "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz";
11692 sha1 = "5b4b426e08d13a80365e0d657ac7a6c1ec46a277";
11693 };
11694 }
11695
11696 {
11697 name = "unicode_property_aliases_ecmascript___unicode_property_aliases_ecmascript_1.0.5.tgz";
11698 path = fetchurl {
11699 name = "unicode_property_aliases_ecmascript___unicode_property_aliases_ecmascript_1.0.5.tgz";
11700 url = "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz";
11701 sha1 = "a9cc6cc7ce63a0a3023fc99e341b94431d405a57";
11702 };
11703 }
11704
11705 {
11706 name = "union_value___union_value_1.0.0.tgz";
11707 path = fetchurl {
11708 name = "union_value___union_value_1.0.0.tgz";
11709 url = "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz";
11710 sha1 = "5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4";
11711 };
11712 }
11713
11714 {
11715 name = "uniq___uniq_1.0.1.tgz";
11716 path = fetchurl {
11717 name = "uniq___uniq_1.0.1.tgz";
11718 url = "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz";
11719 sha1 = "b31c5ae8254844a3a8281541ce2b04b865a734ff";
11720 };
11721 }
11722
11723 {
11724 name = "uniqs___uniqs_2.0.0.tgz";
11725 path = fetchurl {
11726 name = "uniqs___uniqs_2.0.0.tgz";
11727 url = "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz";
11728 sha1 = "ffede4b36b25290696e6e165d4a59edb998e6b02";
11729 };
11730 }
11731
11732 {
11733 name = "unique_filename___unique_filename_1.1.1.tgz";
11734 path = fetchurl {
11735 name = "unique_filename___unique_filename_1.1.1.tgz";
11736 url = "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz";
11737 sha1 = "1d69769369ada0583103a1e6ae87681b56573230";
11738 };
11739 }
11740
11741 {
11742 name = "unique_slug___unique_slug_2.0.1.tgz";
11743 path = fetchurl {
11744 name = "unique_slug___unique_slug_2.0.1.tgz";
11745 url = "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz";
11746 sha1 = "5e9edc6d1ce8fb264db18a507ef9bd8544451ca6";
11747 };
11748 }
11749
11750 {
11751 name = "universalify___universalify_0.1.2.tgz";
11752 path = fetchurl {
11753 name = "universalify___universalify_0.1.2.tgz";
11754 url = "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz";
11755 sha1 = "b646f69be3942dabcecc9d6639c80dc105efaa66";
11756 };
11757 }
11758
11759 {
11760 name = "unpipe___unpipe_1.0.0.tgz";
11761 path = fetchurl {
11762 name = "unpipe___unpipe_1.0.0.tgz";
11763 url = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
11764 sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
11765 };
11766 }
11767
11768 {
11769 name = "unquote___unquote_1.1.1.tgz";
11770 path = fetchurl {
11771 name = "unquote___unquote_1.1.1.tgz";
11772 url = "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz";
11773 sha1 = "8fded7324ec6e88a0ff8b905e7c098cdc086d544";
11774 };
11775 }
11776
11777 {
11778 name = "unset_value___unset_value_1.0.0.tgz";
11779 path = fetchurl {
11780 name = "unset_value___unset_value_1.0.0.tgz";
11781 url = "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz";
11782 sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559";
11783 };
11784 }
11785
11786 {
11787 name = "upath___upath_1.1.2.tgz";
11788 path = fetchurl {
11789 name = "upath___upath_1.1.2.tgz";
11790 url = "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz";
11791 sha1 = "3db658600edaeeccbe6db5e684d67ee8c2acd068";
11792 };
11793 }
11794
11795 {
11796 name = "uri_js___uri_js_4.2.2.tgz";
11797 path = fetchurl {
11798 name = "uri_js___uri_js_4.2.2.tgz";
11799 url = "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz";
11800 sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
11801 };
11802 }
11803
11804 {
11805 name = "urix___urix_0.1.0.tgz";
11806 path = fetchurl {
11807 name = "urix___urix_0.1.0.tgz";
11808 url = "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz";
11809 sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72";
11810 };
11811 }
11812
11813 {
11814 name = "url_parse___url_parse_1.4.4.tgz";
11815 path = fetchurl {
11816 name = "url_parse___url_parse_1.4.4.tgz";
11817 url = "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz";
11818 sha1 = "cac1556e95faa0303691fec5cf9d5a1bc34648f8";
11819 };
11820 }
11821
11822 {
11823 name = "url___url_0.11.0.tgz";
11824 path = fetchurl {
11825 name = "url___url_0.11.0.tgz";
11826 url = "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz";
11827 sha1 = "3838e97cfc60521eb73c525a8e55bfdd9e2e28f1";
11828 };
11829 }
11830
11831 {
11832 name = "use___use_3.1.1.tgz";
11833 path = fetchurl {
11834 name = "use___use_3.1.1.tgz";
11835 url = "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz";
11836 sha1 = "d50c8cac79a19fbc20f2911f56eb973f4e10070f";
11837 };
11838 }
11839
11840 {
11841 name = "user_home___user_home_2.0.0.tgz";
11842 path = fetchurl {
11843 name = "user_home___user_home_2.0.0.tgz";
11844 url = "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz";
11845 sha1 = "9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f";
11846 };
11847 }
11848
11849 {
11850 name = "util_deprecate___util_deprecate_1.0.2.tgz";
11851 path = fetchurl {
11852 name = "util_deprecate___util_deprecate_1.0.2.tgz";
11853 url = "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz";
11854 sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
11855 };
11856 }
11857
11858 {
11859 name = "util.promisify___util.promisify_1.0.0.tgz";
11860 path = fetchurl {
11861 name = "util.promisify___util.promisify_1.0.0.tgz";
11862 url = "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz";
11863 sha1 = "440f7165a459c9a16dc145eb8e72f35687097030";
11864 };
11865 }
11866
11867 {
11868 name = "util___util_0.10.3.tgz";
11869 path = fetchurl {
11870 name = "util___util_0.10.3.tgz";
11871 url = "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz";
11872 sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
11873 };
11874 }
11875
11876 {
11877 name = "util___util_0.10.4.tgz";
11878 path = fetchurl {
11879 name = "util___util_0.10.4.tgz";
11880 url = "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz";
11881 sha1 = "3aa0125bfe668a4672de58857d3ace27ecb76901";
11882 };
11883 }
11884
11885 {
11886 name = "utils_merge___utils_merge_1.0.1.tgz";
11887 path = fetchurl {
11888 name = "utils_merge___utils_merge_1.0.1.tgz";
11889 url = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz";
11890 sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
11891 };
11892 }
11893
11894 {
11895 name = "uuid___uuid_3.3.2.tgz";
11896 path = fetchurl {
11897 name = "uuid___uuid_3.3.2.tgz";
11898 url = "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz";
11899 sha1 = "1b4af4955eb3077c501c23872fc6513811587131";
11900 };
11901 }
11902
11903 {
11904 name = "v8_compile_cache___v8_compile_cache_2.0.2.tgz";
11905 path = fetchurl {
11906 name = "v8_compile_cache___v8_compile_cache_2.0.2.tgz";
11907 url = "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz";
11908 sha1 = "a428b28bb26790734c4fc8bc9fa106fccebf6a6c";
11909 };
11910 }
11911
11912 {
11913 name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
11914 path = fetchurl {
11915 name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
11916 url = "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz";
11917 sha1 = "fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a";
11918 };
11919 }
11920
11921 {
11922 name = "value_equal___value_equal_0.4.0.tgz";
11923 path = fetchurl {
11924 name = "value_equal___value_equal_0.4.0.tgz";
11925 url = "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz";
11926 sha1 = "c5bdd2f54ee093c04839d71ce2e4758a6890abc7";
11927 };
11928 }
11929
11930 {
11931 name = "vary___vary_1.1.2.tgz";
11932 path = fetchurl {
11933 name = "vary___vary_1.1.2.tgz";
11934 url = "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz";
11935 sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
11936 };
11937 }
11938
11939 {
11940 name = "vendors___vendors_1.0.2.tgz";
11941 path = fetchurl {
11942 name = "vendors___vendors_1.0.2.tgz";
11943 url = "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz";
11944 sha1 = "7fcb5eef9f5623b156bcea89ec37d63676f21801";
11945 };
11946 }
11947
11948 {
11949 name = "verror___verror_1.10.0.tgz";
11950 path = fetchurl {
11951 name = "verror___verror_1.10.0.tgz";
11952 url = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz";
11953 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
11954 };
11955 }
11956
11957 {
11958 name = "vm_browserify___vm_browserify_0.0.4.tgz";
11959 path = fetchurl {
11960 name = "vm_browserify___vm_browserify_0.0.4.tgz";
11961 url = "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz";
11962 sha1 = "5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73";
11963 };
11964 }
11965
11966 {
11967 name = "w3c_hr_time___w3c_hr_time_1.0.1.tgz";
11968 path = fetchurl {
11969 name = "w3c_hr_time___w3c_hr_time_1.0.1.tgz";
11970 url = "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz";
11971 sha1 = "82ac2bff63d950ea9e3189a58a65625fedf19045";
11972 };
11973 }
11974
11975 {
11976 name = "walker___walker_1.0.7.tgz";
11977 path = fetchurl {
11978 name = "walker___walker_1.0.7.tgz";
11979 url = "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz";
11980 sha1 = "2f7f9b8fd10d677262b18a884e28d19618e028fb";
11981 };
11982 }
11983
11984 {
11985 name = "warning___warning_3.0.0.tgz";
11986 path = fetchurl {
11987 name = "warning___warning_3.0.0.tgz";
11988 url = "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz";
11989 sha1 = "32e5377cb572de4ab04753bdf8821c01ed605b7c";
11990 };
11991 }
11992
11993 {
11994 name = "warning___warning_4.0.2.tgz";
11995 path = fetchurl {
11996 name = "warning___warning_4.0.2.tgz";
11997 url = "https://registry.yarnpkg.com/warning/-/warning-4.0.2.tgz";
11998 sha1 = "aa6876480872116fa3e11d434b0d0d8d91e44607";
11999 };
12000 }
12001
12002 {
12003 name = "watchpack___watchpack_1.6.0.tgz";
12004 path = fetchurl {
12005 name = "watchpack___watchpack_1.6.0.tgz";
12006 url = "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz";
12007 sha1 = "4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00";
12008 };
12009 }
12010
12011 {
12012 name = "wbuf___wbuf_1.7.3.tgz";
12013 path = fetchurl {
12014 name = "wbuf___wbuf_1.7.3.tgz";
12015 url = "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz";
12016 sha1 = "c1d8d149316d3ea852848895cb6a0bfe887b87df";
12017 };
12018 }
12019
12020 {
12021 name = "webidl_conversions___webidl_conversions_4.0.2.tgz";
12022 path = fetchurl {
12023 name = "webidl_conversions___webidl_conversions_4.0.2.tgz";
12024 url = "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz";
12025 sha1 = "a855980b1f0b6b359ba1d5d9fb39ae941faa63ad";
12026 };
12027 }
12028
12029 {
12030 name = "webpack_assets_manifest___webpack_assets_manifest_3.1.1.tgz";
12031 path = fetchurl {
12032 name = "webpack_assets_manifest___webpack_assets_manifest_3.1.1.tgz";
12033 url = "https://registry.yarnpkg.com/webpack-assets-manifest/-/webpack-assets-manifest-3.1.1.tgz";
12034 sha1 = "39bbc3bf2ee57fcd8ba07cda51c9ba4a3c6ae1de";
12035 };
12036 }
12037
12038 {
12039 name = "webpack_bundle_analyzer___webpack_bundle_analyzer_3.3.2.tgz";
12040 path = fetchurl {
12041 name = "webpack_bundle_analyzer___webpack_bundle_analyzer_3.3.2.tgz";
12042 url = "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.3.2.tgz";
12043 sha1 = "3da733a900f515914e729fcebcd4c40dde71fc6f";
12044 };
12045 }
12046
12047 {
12048 name = "webpack_cli___webpack_cli_3.3.4.tgz";
12049 path = fetchurl {
12050 name = "webpack_cli___webpack_cli_3.3.4.tgz";
12051 url = "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.4.tgz";
12052 sha1 = "de27e281c48a897b8c219cb093e261d5f6afe44a";
12053 };
12054 }
12055
12056 {
12057 name = "webpack_dev_middleware___webpack_dev_middleware_3.7.0.tgz";
12058 path = fetchurl {
12059 name = "webpack_dev_middleware___webpack_dev_middleware_3.7.0.tgz";
12060 url = "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz";
12061 sha1 = "ef751d25f4e9a5c8a35da600c5fda3582b5c6cff";
12062 };
12063 }
12064
12065 {
12066 name = "webpack_dev_server___webpack_dev_server_3.5.1.tgz";
12067 path = fetchurl {
12068 name = "webpack_dev_server___webpack_dev_server_3.5.1.tgz";
12069 url = "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.5.1.tgz";
12070 sha1 = "4290ac709bb989dc7382c912899f79fd5677dabf";
12071 };
12072 }
12073
12074 {
12075 name = "webpack_log___webpack_log_2.0.0.tgz";
12076 path = fetchurl {
12077 name = "webpack_log___webpack_log_2.0.0.tgz";
12078 url = "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz";
12079 sha1 = "5b7928e0637593f119d32f6227c1e0ac31e1b47f";
12080 };
12081 }
12082
12083 {
12084 name = "webpack_merge___webpack_merge_4.2.1.tgz";
12085 path = fetchurl {
12086 name = "webpack_merge___webpack_merge_4.2.1.tgz";
12087 url = "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.1.tgz";
12088 sha1 = "5e923cf802ea2ace4fd5af1d3247368a633489b4";
12089 };
12090 }
12091
12092 {
12093 name = "webpack_sources___webpack_sources_1.3.0.tgz";
12094 path = fetchurl {
12095 name = "webpack_sources___webpack_sources_1.3.0.tgz";
12096 url = "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz";
12097 sha1 = "2a28dcb9f1f45fe960d8f1493252b5ee6530fa85";
12098 };
12099 }
12100
12101 {
12102 name = "webpack___webpack_4.34.0.tgz";
12103 path = fetchurl {
12104 name = "webpack___webpack_4.34.0.tgz";
12105 url = "https://registry.yarnpkg.com/webpack/-/webpack-4.34.0.tgz";
12106 sha1 = "a4c30129482f7b4ece4c0842002dedf2b56fab58";
12107 };
12108 }
12109
12110 {
12111 name = "websocket_driver___websocket_driver_0.7.0.tgz";
12112 path = fetchurl {
12113 name = "websocket_driver___websocket_driver_0.7.0.tgz";
12114 url = "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz";
12115 sha1 = "0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb";
12116 };
12117 }
12118
12119 {
12120 name = "websocket_extensions___websocket_extensions_0.1.3.tgz";
12121 path = fetchurl {
12122 name = "websocket_extensions___websocket_extensions_0.1.3.tgz";
12123 url = "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz";
12124 sha1 = "5d2ff22977003ec687a4b87073dfbbac146ccf29";
12125 };
12126 }
12127
12128 {
12129 name = "websocket.js___websocket.js_0.1.12.tgz";
12130 path = fetchurl {
12131 name = "websocket.js___websocket.js_0.1.12.tgz";
12132 url = "https://registry.yarnpkg.com/websocket.js/-/websocket.js-0.1.12.tgz";
12133 sha1 = "46c980787c57ebc8edcf44a0263e5d639367b85b";
12134 };
12135 }
12136
12137 {
12138 name = "whatwg_encoding___whatwg_encoding_1.0.5.tgz";
12139 path = fetchurl {
12140 name = "whatwg_encoding___whatwg_encoding_1.0.5.tgz";
12141 url = "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz";
12142 sha1 = "5abacf777c32166a51d085d6b4f3e7d27113ddb0";
12143 };
12144 }
12145
12146 {
12147 name = "whatwg_fetch___whatwg_fetch_3.0.0.tgz";
12148 path = fetchurl {
12149 name = "whatwg_fetch___whatwg_fetch_3.0.0.tgz";
12150 url = "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz";
12151 sha1 = "fc804e458cc460009b1a2b966bc8817d2578aefb";
12152 };
12153 }
12154
12155 {
12156 name = "whatwg_mimetype___whatwg_mimetype_2.3.0.tgz";
12157 path = fetchurl {
12158 name = "whatwg_mimetype___whatwg_mimetype_2.3.0.tgz";
12159 url = "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz";
12160 sha1 = "3d4b1e0312d2079879f826aff18dbeeca5960fbf";
12161 };
12162 }
12163
12164 {
12165 name = "whatwg_url___whatwg_url_6.5.0.tgz";
12166 path = fetchurl {
12167 name = "whatwg_url___whatwg_url_6.5.0.tgz";
12168 url = "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz";
12169 sha1 = "f2df02bff176fd65070df74ad5ccbb5a199965a8";
12170 };
12171 }
12172
12173 {
12174 name = "whatwg_url___whatwg_url_7.0.0.tgz";
12175 path = fetchurl {
12176 name = "whatwg_url___whatwg_url_7.0.0.tgz";
12177 url = "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz";
12178 sha1 = "fde926fa54a599f3adf82dff25a9f7be02dc6edd";
12179 };
12180 }
12181
12182 {
12183 name = "which_module___which_module_2.0.0.tgz";
12184 path = fetchurl {
12185 name = "which_module___which_module_2.0.0.tgz";
12186 url = "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz";
12187 sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a";
12188 };
12189 }
12190
12191 {
12192 name = "which___which_1.3.1.tgz";
12193 path = fetchurl {
12194 name = "which___which_1.3.1.tgz";
12195 url = "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz";
12196 sha1 = "a45043d54f5805316da8d62f9f50918d3da70b0a";
12197 };
12198 }
12199
12200 {
12201 name = "wide_align___wide_align_1.1.3.tgz";
12202 path = fetchurl {
12203 name = "wide_align___wide_align_1.1.3.tgz";
12204 url = "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz";
12205 sha1 = "ae074e6bdc0c14a431e804e624549c633b000457";
12206 };
12207 }
12208
12209 {
12210 name = "wordwrap___wordwrap_0.0.3.tgz";
12211 path = fetchurl {
12212 name = "wordwrap___wordwrap_0.0.3.tgz";
12213 url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz";
12214 sha1 = "a3d5da6cd5c0bc0008d37234bbaf1bed63059107";
12215 };
12216 }
12217
12218 {
12219 name = "wordwrap___wordwrap_1.0.0.tgz";
12220 path = fetchurl {
12221 name = "wordwrap___wordwrap_1.0.0.tgz";
12222 url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz";
12223 sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
12224 };
12225 }
12226
12227 {
12228 name = "worker_farm___worker_farm_1.7.0.tgz";
12229 path = fetchurl {
12230 name = "worker_farm___worker_farm_1.7.0.tgz";
12231 url = "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz";
12232 sha1 = "26a94c5391bbca926152002f69b84a4bf772e5a8";
12233 };
12234 }
12235
12236 {
12237 name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
12238 path = fetchurl {
12239 name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
12240 url = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz";
12241 sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85";
12242 };
12243 }
12244
12245 {
12246 name = "wrappy___wrappy_1.0.2.tgz";
12247 path = fetchurl {
12248 name = "wrappy___wrappy_1.0.2.tgz";
12249 url = "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz";
12250 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
12251 };
12252 }
12253
12254 {
12255 name = "write_file_atomic___write_file_atomic_2.4.1.tgz";
12256 path = fetchurl {
12257 name = "write_file_atomic___write_file_atomic_2.4.1.tgz";
12258 url = "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz";
12259 sha1 = "d0b05463c188ae804396fd5ab2a370062af87529";
12260 };
12261 }
12262
12263 {
12264 name = "write___write_0.2.1.tgz";
12265 path = fetchurl {
12266 name = "write___write_0.2.1.tgz";
12267 url = "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz";
12268 sha1 = "5fc03828e264cea3fe91455476f7a3c566cb0757";
12269 };
12270 }
12271
12272 {
12273 name = "ws___ws_5.2.2.tgz";
12274 path = fetchurl {
12275 name = "ws___ws_5.2.2.tgz";
12276 url = "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz";
12277 sha1 = "dffef14866b8e8dc9133582514d1befaf96e980f";
12278 };
12279 }
12280
12281 {
12282 name = "ws___ws_6.1.2.tgz";
12283 path = fetchurl {
12284 name = "ws___ws_6.1.2.tgz";
12285 url = "https://registry.yarnpkg.com/ws/-/ws-6.1.2.tgz";
12286 sha1 = "3cc7462e98792f0ac679424148903ded3b9c3ad8";
12287 };
12288 }
12289
12290 {
12291 name = "xml_name_validator___xml_name_validator_3.0.0.tgz";
12292 path = fetchurl {
12293 name = "xml_name_validator___xml_name_validator_3.0.0.tgz";
12294 url = "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz";
12295 sha1 = "6ae73e06de4d8c6e47f9fb181f78d648ad457c6a";
12296 };
12297 }
12298
12299 {
12300 name = "xtend___xtend_4.0.1.tgz";
12301 path = fetchurl {
12302 name = "xtend___xtend_4.0.1.tgz";
12303 url = "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz";
12304 sha1 = "a5c6d532be656e23db820efb943a1f04998d63af";
12305 };
12306 }
12307
12308 {
12309 name = "y18n___y18n_4.0.0.tgz";
12310 path = fetchurl {
12311 name = "y18n___y18n_4.0.0.tgz";
12312 url = "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz";
12313 sha1 = "95ef94f85ecc81d007c264e190a120f0a3c8566b";
12314 };
12315 }
12316
12317 {
12318 name = "yallist___yallist_3.0.3.tgz";
12319 path = fetchurl {
12320 name = "yallist___yallist_3.0.3.tgz";
12321 url = "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz";
12322 sha1 = "b4b049e314be545e3ce802236d6cd22cd91c3de9";
12323 };
12324 }
12325
12326 {
12327 name = "yargs_parser___yargs_parser_11.1.1.tgz";
12328 path = fetchurl {
12329 name = "yargs_parser___yargs_parser_11.1.1.tgz";
12330 url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz";
12331 sha1 = "879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4";
12332 };
12333 }
12334
12335 {
12336 name = "yargs___yargs_12.0.5.tgz";
12337 path = fetchurl {
12338 name = "yargs___yargs_12.0.5.tgz";
12339 url = "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz";
12340 sha1 = "05f5997b609647b64f66b81e3b4b10a368e7ad13";
12341 };
12342 }
12343 ];
12344}
diff --git a/flakes/mediagoblin/bower-packages.nix b/flakes/mediagoblin/bower-packages.nix
new file mode 100644
index 0000000..03af849
--- /dev/null
+++ b/flakes/mediagoblin/bower-packages.nix
@@ -0,0 +1,8 @@
1# Generated by bower2nix v3.2.0 (https://github.com/rvl/bower2nix)
2{ fetchbower, buildEnv }:
3buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [
4 (fetchbower "jquery" "2.1.4" "~2.1.3" "1ywrpk2xsr6ghkm3j9gfnl9r3jn6xarfamp99b0bcm57kq9fm2k0")
5 (fetchbower "video.js" "4.11.4" "~4.11.4" "05prdvyk0rxbkh7sdd0d9ns5l5crwvc68wzkyqmrdjw367pcv8sn")
6 (fetchbower "leaflet" "0.7.7" "~0.7.3" "0jim285bljmxxngpm3yx6bnnd10n2whwkgmmhzpcd1rdksnr5nca")
7 (fetchbower "tinymce" "4.1.10" "~4.1.7" "16jyvdb9bq8gjwhs69q8p88vdixalajrz81nsmbrzzxhkih57dyx")
8]; }
diff --git a/flakes/mediagoblin/default.nix b/flakes/mediagoblin/default.nix
new file mode 100644
index 0000000..47cc628
--- /dev/null
+++ b/flakes/mediagoblin/default.nix
@@ -0,0 +1,213 @@
1{ src, makeWrapper, stdenv, writeScript, fetchurl, buildBowerComponents, which, python36, gst_all_1, automake, autoconf, nodejs, nodePackages, lib, callPackage, fetchgit, fetchFromGitHub }:
2let
3 overridePython = let
4 packageOverrides = self: super: {
5 pybcrypt = super.buildPythonPackage rec {
6 pname = "pybcrypt";
7 version = "0.4";
8
9 src = self.fetchPypi {
10 inherit pname version;
11 sha256 = "5fa13bce551468350d66c4883694850570f3da28d6866bb638ba44fe5eabda78";
12 };
13 };
14 celery = super.celery.overridePythonAttrs(old: rec {
15 version = "3.1.26.post2";
16 src = self.fetchPypi {
17 inherit version;
18 inherit (old) pname;
19 sha256 = "5493e172ae817b81ba7d09443ada114886765a8ce02f16a56e6fac68d953a9b2";
20 };
21 patches = [];
22 doCheck = false;
23 });
24 billiard = super.billiard.overridePythonAttrs(old: rec {
25 version = "3.3.0.23";
26 src = self.fetchPypi {
27 inherit version;
28 inherit (old) pname;
29 sha256 = "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9";
30 };
31 doCheck = false;
32 doInstallCheck = false;
33 });
34 amqp = super.amqp.overridePythonAttrs(old: rec {
35 version = "1.4.9";
36 src = self.fetchPypi {
37 inherit version;
38 inherit (old) pname;
39 sha256 = "2dea4d16d073c902c3b89d9b96620fb6729ac0f7a923bbc777cb4ad827c0c61a";
40 };
41 doCheck = false;
42 });
43 kombu = super.kombu.overridePythonAttrs(old: rec {
44 version = "3.0.37";
45 src = self.fetchPypi {
46 inherit version;
47 inherit (old) pname;
48 sha256 = "e064a00c66b4d1058cd2b0523fb8d98c82c18450244177b6c0f7913016642650";
49 };
50 propagatedBuildInputs = old.propagatedBuildInputs ++ [ self.anyjson ];
51 doCheck = false;
52 });
53 markdown = super.markdown.overridePythonAttrs(old: rec {
54 version = "3.1.1";
55 src = self.fetchPypi {
56 inherit version;
57 inherit (old) pname;
58 sha256 = "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a";
59 };
60 });
61 sqlalchemy = super.sqlalchemy.overridePythonAttrs(old: rec {
62 version = "1.1.18";
63 src = self.fetchPypi {
64 inherit version;
65 inherit (old) pname;
66 sha256 = "8b0ec71af9291191ba83a91c03d157b19ab3e7119e27da97932a4773a3f664a9";
67 };
68 doCheck = false;
69 });
70 tempita_5_3_dev = super.buildPythonPackage rec {
71 version = "47414a7-master";
72 pname = "tempita";
73 name = "${pname}-${version}";
74 src = fetchFromGitHub {
75 owner = "gjhiggins";
76 repo = "tempita";
77 rev = "47414a7c6e46a9a9afe78f0bce2ea299fa84d10d";
78 sha256 = "0f33jjjs5rvp7ar2j6ggyfykcrsrn04jaqcq71qfvycf6b7nw3rn";
79 fetchSubmodules = true;
80 };
81 buildInputs = with self; [ nose ];
82 disabled = false;
83 };
84 sqlalchemy_migrate = super.sqlalchemy_migrate.overridePythonAttrs(old: rec {
85 propagatedBuildInputs = with self; [ pbr tempita_5_3_dev decorator sqlalchemy six sqlparse ];
86 });
87 pasteScript = super.pasteScript.overridePythonAttrs(old: rec {
88 version = "2.0.2";
89 name = "PasteScript-${version}";
90 src = fetchurl {
91 url = "mirror://pypi/P/PasteScript/${name}.tar.gz";
92 sha256 = "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0";
93 };
94 propagatedBuildInputs = with self; [ six paste PasteDeploy ];
95 });
96 werkzeug = super.werkzeug.overridePythonAttrs(old: rec {
97 version = "0.16.1";
98 src = self.fetchPypi {
99 inherit version;
100 inherit (old) pname;
101 sha256 = "b353856d37dec59d6511359f97f6a4b2468442e454bd1c98298ddce53cac1f04";
102 };
103 });
104 };
105 in
106 python36.override { inherit packageOverrides; };
107 pythonEnv = python-pkgs: with python-pkgs; [
108 waitress alembic dateutil wtforms pybcrypt
109 pytest pytest_xdist werkzeug celery
110 kombu jinja2 Babel webtest configobj markdown
111 sqlalchemy itsdangerous pytz sphinx six
112 oauthlib unidecode jsonschema PasteDeploy
113 requests PyLD exifread
114 typing pasteScript lxml
115 # For images plugin
116 pillow
117 # For video plugin
118 gst-python
119 # migrations
120 sqlalchemy_migrate
121 # authentication
122 ldap3
123 redis
124 psycopg2
125 ];
126 python = overridePython.withPackages pythonEnv;
127 gmg = writeScript "gmg" ''
128 #!${python}/bin/python
129 __requires__ = 'mediagoblin'
130 import sys
131 from pkg_resources import load_entry_point
132
133 if __name__ == '__main__':
134 sys.exit(
135 load_entry_point('mediagoblin', 'console_scripts', 'gmg')()
136 )
137 '';
138 bowerComponents = buildBowerComponents {
139 name = "mediagoblin-bower-components";
140 generated = ./bower-packages.nix;
141 inherit src;
142 };
143 pluginNames = [ "basicsearch" ];
144 allPlugins = lib.attrsets.genAttrs pluginNames
145 (name: callPackage (./plugins + "/${name}") {});
146 toPassthru = pkg: plugins: {
147 inherit allPlugins plugins;
148 withPlugins = withPlugins pkg;
149 };
150 withPlugins = pkg: toPlugins:
151 let
152 plugins = toPlugins allPlugins;
153 toBuildPlugin = n: "ln -s ${n} mediagoblin/plugins/${n.pluginName}";
154 newMediagoblin = pkg.overrideAttrs(old: {
155 postBuild = old.postBuild + "\n" + builtins.concatStringsSep "\n" (map toBuildPlugin plugins);
156 passthru = toPassthru newMediagoblin plugins;
157 });
158 in newMediagoblin;
159 package = stdenv.mkDerivation rec {
160 pname = "mediagoblin";
161 name = "${pname}-${version}";
162 version = "cd465eb-stable";
163 inherit src;
164 preConfigure = ''
165 # ./bootstrap.sh
166 aclocal -I m4 --install
167 autoreconf -fvi
168 # end
169 export HOME=$PWD
170 '';
171 configureFlags = [ "--with-python3" "--without-virtualenv" ];
172 postBuild = ''
173 cp -a ${bowerComponents}/bower_components/* extlib
174 chmod -R u+w extlib
175 make extlib
176 '';
177 installPhase = let
178 libpaths = with gst_all_1; [
179 python
180 gstreamer
181 gst-plugins-base
182 gst-libav
183 gst-plugins-good
184 gst-plugins-bad
185 gst-plugins-ugly
186 ];
187 plugin_paths = builtins.concatStringsSep ":" (map (x: "${x}/lib") libpaths);
188 typelib_paths = with gst_all_1; "${gstreamer}/lib/girepository-1.0:${gst-plugins-base}/lib/girepository-1.0";
189 in ''
190 sed -i "s/registry.has_key(current_theme_name)/current_theme_name in registry/" mediagoblin/tools/theme.py
191 sed -i -e "s@\[DEFAULT\]@[DEFAULT]\nhere = $out@" mediagoblin/config_spec.ini
192 sed -i -e "/from gi.repository import GstPbutils/s/^/gi.require_version('GstPbutils', '1.0')\n/" mediagoblin/media_types/video/transcoders.py
193 cp ${./ldap_fix.py} mediagoblin/plugins/ldap/tools.py
194 find . -name '*.pyc' -delete
195 find . -type f -exec sed -i "s|$PWD|$out|g" {} \;
196 python setup.py build
197 cp -a . $out
198 mkdir $out/bin
199 makeWrapper ${gmg} $out/bin/gmg --prefix PYTHONPATH : "$out:$PYTHONPATH" \
200 --prefix GST_PLUGIN_SYSTEM_PATH : ${plugin_paths} \
201 --prefix GI_TYPELIB_PATH : ${typelib_paths}
202 makeWrapper ${python}/bin/paster $out/bin/paster --prefix PYTHONPATH : "$out:$PYTHONPATH" \
203 --prefix GST_PLUGIN_SYSTEM_PATH : ${plugin_paths} \
204 --prefix GI_TYPELIB_PATH : ${typelib_paths}
205 makeWrapper ${python}/bin/celery $out/bin/celery --prefix PYTHONPATH : "$out:$PYTHONPATH" \
206 --prefix GST_PLUGIN_SYSTEM_PATH : ${plugin_paths} \
207 --prefix GI_TYPELIB_PATH : ${typelib_paths}
208 '';
209 buildInputs = [ makeWrapper automake autoconf which nodePackages.bower nodejs python ];
210 propagatedBuildInputs = with gst_all_1; [ python gst-libav gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer ];
211 passthru = toPassthru package [];
212 };
213in package
diff --git a/flakes/mediagoblin/flake.lock b/flakes/mediagoblin/flake.lock
new file mode 100644
index 0000000..bba6479
--- /dev/null
+++ b/flakes/mediagoblin/flake.lock
@@ -0,0 +1,78 @@
1{
2 "nodes": {
3 "flake-utils": {
4 "locked": {
5 "lastModified": 1649676176,
6 "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
7 "owner": "numtide",
8 "repo": "flake-utils",
9 "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678",
10 "type": "github"
11 },
12 "original": {
13 "owner": "numtide",
14 "repo": "flake-utils",
15 "type": "github"
16 }
17 },
18 "mediagoblin": {
19 "flake": false,
20 "locked": {
21 "lastModified": 1531090939,
22 "narHash": "sha256-vSajRbuE/bu2HVsUZm25fkm/vNLXKDIK7Xn8kyKJ5Ps=",
23 "ref": "stable",
24 "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
25 "revCount": 4805,
26 "submodules": true,
27 "type": "git",
28 "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
29 },
30 "original": {
31 "ref": "stable",
32 "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
33 "submodules": true,
34 "type": "git",
35 "url": "https://git.savannah.gnu.org/git/mediagoblin.git"
36 }
37 },
38 "myuids": {
39 "locked": {
40 "lastModified": 1,
41 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
42 "path": "../myuids",
43 "type": "path"
44 },
45 "original": {
46 "path": "../myuids",
47 "type": "path"
48 }
49 },
50 "nixpkgs": {
51 "flake": false,
52 "locked": {
53 "lastModified": 1596265691,
54 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
55 "owner": "NixOS",
56 "repo": "nixpkgs",
57 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
58 "type": "github"
59 },
60 "original": {
61 "owner": "NixOS",
62 "repo": "nixpkgs",
63 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
64 "type": "github"
65 }
66 },
67 "root": {
68 "inputs": {
69 "flake-utils": "flake-utils",
70 "mediagoblin": "mediagoblin",
71 "myuids": "myuids",
72 "nixpkgs": "nixpkgs"
73 }
74 }
75 },
76 "root": "root",
77 "version": 7
78}
diff --git a/flakes/mediagoblin/flake.nix b/flakes/mediagoblin/flake.nix
new file mode 100644
index 0000000..2e821d5
--- /dev/null
+++ b/flakes/mediagoblin/flake.nix
@@ -0,0 +1,271 @@
1{
2 description = "a free software media publishing platform that anyone can run.";
3 inputs.myuids = {
4 url = "path:../myuids";
5 };
6 inputs.flake-utils.url = "github:numtide/flake-utils";
7 inputs.nixpkgs = {
8 url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
9 flake = false;
10 };
11 inputs.mediagoblin = {
12 url = "git+https://git.savannah.gnu.org/git/mediagoblin.git?submodules=1&ref=stable&rev=cd465ebfec837a75a44c4ebd727dffe2fff6d850";
13 flake = false;
14 };
15
16 outputs = { self, myuids, nixpkgs, mediagoblin, flake-utils }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
17 let
18 pkgs = import nixpkgs { inherit system; overlays = []; };
19 version = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.mediagoblin.original.ref;
20 inherit (pkgs) callPackage;
21 in rec {
22 packages.mediagoblin = callPackage ./. { src = mediagoblin // { inherit version; }; };
23 defaultPackage = packages.mediagoblin;
24 legacyPackages.mediagoblin = packages.mediagoblin;
25 checks = {
26 build = defaultPackage;
27 };
28 }
29 ) // rec {
30 overlays = {
31 mediagoblin = final: prev: {
32 mediagoblin = self.defaultPackage."${final.system}";
33 };
34 };
35 overlay = overlays.mediagoblin;
36 nixosModule = { lib, pkgs, config, ... }:
37 let
38 name = "mediagoblin";
39 cfg = config.services.mediagoblin;
40
41 uid = config.ids.uids.mediagoblin;
42 gid = config.ids.gids.mediagoblin;
43
44 paste_local = pkgs.writeText "paste_local.ini" ''
45 [DEFAULT]
46 debug = false
47
48 [pipeline:main]
49 pipeline = mediagoblin
50
51 [app:mediagoblin]
52 use = egg:mediagoblin#app
53 config = ${cfg.configFile} ${cfg.package}/mediagoblin.ini
54 /mgoblin_static = ${cfg.package}/mediagoblin/static
55
56 [loggers]
57 keys = root
58
59 [handlers]
60 keys = console
61
62 [formatters]
63 keys = generic
64
65 [logger_root]
66 level = INFO
67 handlers = console
68
69 [handler_console]
70 class = StreamHandler
71 args = (sys.stderr,)
72 level = NOTSET
73 formatter = generic
74
75 [formatter_generic]
76 format = %(levelname)-7.7s [%(name)s] %(message)s
77
78 [filter:errors]
79 use = egg:mediagoblin#errors
80 debug = false
81
82 [server:main]
83 use = egg:waitress#main
84 unix_socket = ${cfg.sockets.paster}
85 unix_socket_perms = 777
86 url_scheme = https
87 '';
88 in
89 {
90 options.services.mediagoblin = {
91 enable = lib.mkEnableOption "Enable Mediagoblin’s service";
92 user = lib.mkOption {
93 type = lib.types.str;
94 default = name;
95 description = "User account under which Mediagoblin runs";
96 };
97 group = lib.mkOption {
98 type = lib.types.str;
99 default = name;
100 description = "Group under which Mediagoblin runs";
101 };
102 dataDir = lib.mkOption {
103 type = lib.types.path;
104 default = "/var/lib/${name}";
105 description = ''
106 The directory where Mediagoblin stores its data.
107 '';
108 };
109 socketsDir = lib.mkOption {
110 type = lib.types.path;
111 default = "/run/${name}";
112 description = ''
113 The directory where Mediagoblin puts runtime files and sockets.
114 '';
115 };
116 configFile = lib.mkOption {
117 type = lib.types.path;
118 description = ''
119 The configuration file path for Mediagoblin.
120 '';
121 };
122 package = lib.mkOption {
123 type = lib.types.package;
124 default = pkgs.mediagoblin;
125 example = lib.literalExample ''
126 pkgs.webapps.mediagoblin.withPlugins (p: [p.basicsearch])
127 '';
128 description = ''
129 Mediagoblin package to use.
130 '';
131 };
132 systemdStateDirectory = lib.mkOption {
133 type = lib.types.str;
134 # Use ReadWritePaths= instead if varDir is outside of /var/lib
135 default = assert lib.strings.hasPrefix "/var/lib/" cfg.dataDir;
136 lib.strings.removePrefix "/var/lib/" cfg.dataDir;
137 description = ''
138 Adjusted Mediagoblin data directory for systemd
139 '';
140 readOnly = true;
141 };
142 systemdRuntimeDirectory = lib.mkOption {
143 type = lib.types.str;
144 # Use ReadWritePaths= instead if socketsDir is outside of /run
145 default = assert lib.strings.hasPrefix "/run/" cfg.socketsDir;
146 lib.strings.removePrefix "/run/" cfg.socketsDir;
147 description = ''
148 Adjusted Mediagoblin sockets directory for systemd
149 '';
150 readOnly = true;
151 };
152 sockets = lib.mkOption {
153 type = lib.types.attrsOf lib.types.path;
154 default = {
155 paster = "${cfg.socketsDir}/mediagoblin.sock";
156 };
157 readOnly = true;
158 description = ''
159 Mediagoblin sockets
160 '';
161 };
162 pids = lib.mkOption {
163 type = lib.types.attrsOf lib.types.path;
164 default = {
165 paster = "${cfg.socketsDir}/mediagoblin.pid";
166 celery = "${cfg.socketsDir}/mediagoblin-celeryd.pid";
167 };
168 readOnly = true;
169 description = ''
170 Mediagoblin pid files
171 '';
172 };
173 };
174
175 config = lib.mkIf cfg.enable {
176 nixpkgs.overlays = [ self.overlay ];
177 users.users = lib.optionalAttrs (cfg.user == name) {
178 "${name}" = {
179 inherit uid;
180 group = cfg.group;
181 description = "Mediagoblin user";
182 home = cfg.dataDir;
183 useDefaultShell = true;
184 };
185 };
186 users.groups = lib.optionalAttrs (cfg.group == name) {
187 "${name}" = {
188 inherit gid;
189 };
190 };
191
192 systemd.slices.mediagoblin = {
193 description = "Mediagoblin slice";
194 };
195 systemd.services.mediagoblin-web = {
196 description = "Mediagoblin service";
197 wantedBy = [ "multi-user.target" ];
198 after = [ "network.target" ];
199 wants = [ "postgresql.service" "redis.service" ];
200
201 environment.SCRIPT_NAME = "/mediagoblin/";
202
203 script = ''
204 exec ./bin/paster serve \
205 ${paste_local} \
206 --pid-file=${cfg.pids.paster}
207 '';
208 preStop = ''
209 exec ./bin/paster serve \
210 --pid-file=${cfg.pids.paster} \
211 ${paste_local} stop
212 '';
213 preStart = ''
214 if [ -d ${cfg.dataDir}/plugin_static/ ]; then
215 rm ${cfg.dataDir}/plugin_static/coreplugin_basic_auth
216 ln -sf ${cfg.package}/mediagoblin/plugins/basic_auth/static ${cfg.dataDir}/plugin_static/coreplugin_basic_auth
217 fi
218 ./bin/gmg -cf ${cfg.configFile} dbupdate
219 '';
220
221 serviceConfig = {
222 Slice = "mediagoblin.slice";
223 User = cfg.user;
224 PrivateTmp = true;
225 Restart = "always";
226 TimeoutSec = 15;
227 Type = "simple";
228 WorkingDirectory = cfg.package;
229 RuntimeDirectory = cfg.systemdRuntimeDirectory;
230 StateDirectory= cfg.systemdStateDirectory;
231 PIDFile = cfg.pids.paster;
232 };
233
234 unitConfig.RequiresMountsFor = cfg.dataDir;
235 };
236
237 systemd.services.mediagoblin-celeryd = {
238 description = "Mediagoblin service";
239 wantedBy = [ "multi-user.target" ];
240 after = [ "network.target" "mediagoblin-web.service" ];
241
242 environment.MEDIAGOBLIN_CONFIG = cfg.configFile;
243 environment.CELERY_CONFIG_MODULE = "mediagoblin.init.celery.from_celery";
244
245 script = ''
246 exec ./bin/celery worker \
247 --logfile=${cfg.dataDir}/celery.log \
248 --loglevel=INFO
249 '';
250
251 serviceConfig = {
252 Slice = "mediagoblin.slice";
253 User = cfg.user;
254 PrivateTmp = true;
255 Restart = "always";
256 TimeoutSec = 60;
257 Type = "simple";
258 WorkingDirectory = cfg.package;
259 RuntimeDirectory = cfg.systemdRuntimeDirectory;
260 StateDirectory= cfg.systemdStateDirectory;
261 PIDFile = cfg.pids.celery;
262 };
263
264 unitConfig.RequiresMountsFor = cfg.dataDir;
265 };
266 };
267 };
268 };
269}
270
271
diff --git a/flakes/mediagoblin/ldap_fix.py b/flakes/mediagoblin/ldap_fix.py
new file mode 100644
index 0000000..10cc375
--- /dev/null
+++ b/flakes/mediagoblin/ldap_fix.py
@@ -0,0 +1,93 @@
1# GNU MediaGoblin -- federated, autonomous media hosting
2# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
3#
4# This program is free software: you can redistribute it and/or modify
5# it under the terms of the GNU Affero General Public License as published by
6# the Free Software Foundation, either version 3 of the License, or
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU Affero General Public License for more details.
13#
14# You should have received a copy of the GNU Affero General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.
16from ldap3 import Server, Connection, SUBTREE
17from ldap3.core.exceptions import LDAPException
18import logging
19
20import six
21
22from mediagoblin.tools import pluginapi
23
24_log = logging.getLogger(__name__)
25
26
27class LDAP(object):
28 def __init__(self):
29 self.ldap_settings = pluginapi.get_config('mediagoblin.plugins.ldap')
30
31 def _connect(self, server):
32 _log.info('Connecting to {0}.'.format(server['LDAP_SERVER_URI']))
33 self.server = Server(server['LDAP_SERVER_URI'])
34
35 if 'LDAP_START_TLS' in server and server['LDAP_START_TLS'] == 'true':
36 _log.info('Initiating TLS')
37 self.server.start_tls()
38
39 def _manager_auth(self, settings, username, password):
40 conn = Connection(self.server,
41 settings['LDAP_BIND_DN'],
42 settings['LDAP_BIND_PW'],
43 auto_bind=True)
44 found = conn.search(
45 search_base=settings['LDAP_SEARCH_BASE'],
46 search_filter=settings['LDAP_SEARCH_FILTER'].format(username=username),
47 search_scope=SUBTREE,
48 attributes=[settings['EMAIL_SEARCH_FIELD']])
49 if (not found) or len(conn.entries) > 1:
50 return False, None
51
52 user = conn.entries[0]
53 user_dn = user.entry_dn
54 try:
55 email = user.entry_attributes_as_dict[settings['EMAIL_SEARCH_FIELD']][0]
56 except KeyError:
57 email = None
58
59 Connection(self.server, user_dn, password, auto_bind=True)
60
61 return username, email
62
63 def _direct_auth(self, settings, username, password):
64 user_dn = settings['LDAP_USER_DN_TEMPLATE'].format(username=username)
65 conn = Connection(self.server, user_dn, password, auto_bind=True)
66 email_found = conn.search(
67 search_base=settings['LDAP_SEARCH_BASE'],
68 search_filter='uid={0}'.format(username),
69 search_scope=SUBTREE,
70 attributes=[settings['EMAIL_SEARCH_FIELD']])
71
72 if email_found:
73 try:
74 email = conn.entries[0].entry_attributes_as_dict[settings['EMAIL_SEARCH_FIELD']][0]
75 except KeyError:
76 email = None
77
78 return username, email
79
80 def login(self, username, password):
81 for k, v in six.iteritems(self.ldap_settings):
82 try:
83 self._connect(v)
84
85 if 'LDAP_BIND_DN' in v:
86 return self._manager_auth(v, username, password)
87 else:
88 return self._direct_auth(v, username, password)
89
90 except LDAPException as e:
91 _log.info(e)
92
93 return False, None
diff --git a/flakes/mediagoblin/plugins/basicsearch/default.nix b/flakes/mediagoblin/plugins/basicsearch/default.nix
new file mode 100644
index 0000000..16be613
--- /dev/null
+++ b/flakes/mediagoblin/plugins/basicsearch/default.nix
@@ -0,0 +1,18 @@
1{ stdenv, fetchFromGitHub }:
2stdenv.mkDerivation rec {
3 name = "mediagoblin-plugin-basicsearch-${version}";
4 version = "ba0a154-master";
5 src = fetchFromGitHub {
6 owner = "ayleph";
7 repo = "mediagoblin-basicsearch";
8 rev = "ba0a1547bd24ebaf363227fe17644d38c6ce8a6b";
9 sha256 = "0d4r7xkf4gxmgaxlb264l44xbanis77g49frwfhfzsflxmdwgncy";
10 };
11 phases = "unpackPhase installPhase";
12 installPhase = ''
13 cp -R ./basicsearch $out
14 '';
15 passthru = {
16 pluginName = "basicsearch";
17 };
18}
diff --git a/flakes/multi-apache-container/flake.lock b/flakes/multi-apache-container/flake.lock
new file mode 100644
index 0000000..f8dda19
--- /dev/null
+++ b/flakes/multi-apache-container/flake.lock
@@ -0,0 +1,36 @@
1{
2 "nodes": {
3 "files-watcher": {
4 "locked": {
5 "lastModified": 1,
6 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
7 "path": "../files-watcher",
8 "type": "path"
9 },
10 "original": {
11 "path": "../files-watcher",
12 "type": "path"
13 }
14 },
15 "myuids": {
16 "locked": {
17 "lastModified": 1,
18 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
19 "path": "../myuids",
20 "type": "path"
21 },
22 "original": {
23 "path": "../myuids",
24 "type": "path"
25 }
26 },
27 "root": {
28 "inputs": {
29 "files-watcher": "files-watcher",
30 "myuids": "myuids"
31 }
32 }
33 },
34 "root": "root",
35 "version": 7
36}
diff --git a/flakes/multi-apache-container/flake.nix b/flakes/multi-apache-container/flake.nix
new file mode 100644
index 0000000..fd788f7
--- /dev/null
+++ b/flakes/multi-apache-container/flake.nix
@@ -0,0 +1,389 @@
1{
2 description = "Module to handle multiple separate apache instances (using containers)";
3 inputs.myuids = {
4 url = "path:../myuids";
5 };
6 inputs.files-watcher = {
7 url = "path:../files-watcher";
8 };
9
10 outputs = { self, myuids, files-watcher }: {
11 nixosModule = { lib, config, pkgs, options, ... }:
12 with lib;
13 let
14 cfg = config.services.websites;
15 hostConfig = config;
16 toHttpdConfig = icfg:
17 let
18 nosslVhost = ips: cfg: {
19 listen = map (ip: { inherit ip; port = 80; }) ips;
20 hostName = cfg.host;
21 logFormat = "combinedVhost";
22 documentRoot = cfg.root;
23 extraConfig = ''
24 <Directory ${cfg.root}>
25 DirectoryIndex ${cfg.indexFile}
26 AllowOverride None
27 Require all granted
28
29 RewriteEngine on
30 RewriteRule ^/(.+) / [L]
31 </Directory>
32 '';
33 };
34 toVhost = ips: vhostConf: {
35 acmeRoot = hostConfig.security.acme.certs.${vhostConf.certName}.webroot;
36 forceSSL = vhostConf.forceSSL or true;
37 useACMEHost = vhostConf.certName;
38 logFormat = "combinedVhost";
39 listen = if vhostConf.forceSSL
40 then lists.flatten (map (ip: [{ inherit ip; port = 443; ssl = true; } { inherit ip; port = 80; }]) ips)
41 else map (ip: { inherit ip; port = 443; ssl = true; }) ips;
42 hostName = builtins.head vhostConf.hosts;
43 serverAliases = builtins.tail vhostConf.hosts or [];
44 documentRoot = vhostConf.root;
45 extraConfig = builtins.concatStringsSep "\n" vhostConf.extraConfig;
46 };
47 toVhostNoSSL = ips: vhostConf: {
48 logFormat = "combinedVhost";
49 listen = map (ip: { inherit ip; port = 80; }) ips;
50 hostName = builtins.head vhostConf.hosts;
51 serverAliases = builtins.tail vhostConf.hosts or [];
52 documentRoot = vhostConf.root;
53 extraConfig = builtins.concatStringsSep "\n" vhostConf.extraConfig;
54 };
55 in {
56 enable = true;
57 logPerVirtualHost = true;
58 mpm = "event";
59 # https://ssl-config.mozilla.org/#server=apache&version=2.4.41&config=intermediate&openssl=1.0.2t&guideline=5.4
60 # test with https://www.ssllabs.com/ssltest/analyze.html?d=www.immae.eu&s=176.9.151.154&latest
61 sslProtocols = "all -SSLv3 -TLSv1 -TLSv1.1";
62 sslCiphers = builtins.concatStringsSep ":" [
63 "ECDHE-ECDSA-AES128-GCM-SHA256" "ECDHE-RSA-AES128-GCM-SHA256"
64 "ECDHE-ECDSA-AES256-GCM-SHA384" "ECDHE-RSA-AES256-GCM-SHA384"
65 "ECDHE-ECDSA-CHACHA20-POLY1305" "ECDHE-RSA-CHACHA20-POLY1305"
66 "DHE-RSA-AES128-GCM-SHA256" "DHE-RSA-AES256-GCM-SHA384"
67 ];
68 inherit (icfg) adminAddr;
69 logFormat = "combinedVhost";
70 extraModules = lists.unique icfg.modules;
71 extraConfig = builtins.concatStringsSep "\n" icfg.extraConfig;
72
73 virtualHosts = with attrsets; {
74 ___fallbackVhost = toVhost icfg.ips icfg.fallbackVhost;
75 } // (optionalAttrs icfg.nosslVhost.enable {
76 nosslVhost = nosslVhost icfg.ips icfg.nosslVhost;
77 }) // (mapAttrs' (n: v: nameValuePair ("nossl_" + n) (toVhostNoSSL icfg.ips v)) icfg.vhostNoSSLConfs)
78 // (mapAttrs' (n: v: nameValuePair ("ssl_" + n) (toVhost icfg.ips v)) icfg.vhostConfs);
79 };
80 in
81 {
82 options.services.websites = with types; {
83 env = mkOption {
84 default = {};
85 description = "Each type of website to enable will target a distinct httpd server";
86 type = attrsOf (submodule ({ name, config, ... }: {
87 options = {
88 enable = mkEnableOption "Enable websites of this type";
89 moduleType = mkOption {
90 type = enum [ "container" "main" ];
91 default = "container";
92 description = ''
93 How to deploy the web environment:
94 - container -> inside a dedicated container (running only httpd)
95 - main -> as main services.httpd module
96 '';
97 };
98 adminAddr = mkOption {
99 type = str;
100 description = "Admin e-mail address of the instance";
101 };
102 user = mkOption {
103 type = str;
104 description = "Username of httpd service";
105 readOnly = true;
106 default = if config.moduleType == "container"
107 then hostConfig.containers."httpd-${name}".config.services.httpd.user
108 else hostConfig.services.httpd.user;
109 };
110 group = mkOption {
111 type = str;
112 description = "Group of httpd service";
113 readOnly = true;
114 default = if config.moduleType == "container"
115 then hostConfig.containers."httpd-${name}".config.services.httpd.group
116 else hostConfig.services.httpd.group;
117 };
118 httpdName = mkOption {
119 type = str;
120 description = "Name of the httpd instance to assign this type to";
121 };
122 ips = mkOption {
123 type = listOf str;
124 default = [];
125 description = "ips to listen to";
126 };
127 bindMounts = mkOption {
128 type = attrsOf unspecified;
129 default = {};
130 description = "bind mounts to add to container";
131 };
132 modules = mkOption {
133 type = listOf str;
134 default = [];
135 description = "Additional modules to load in Apache";
136 };
137 extraConfig = mkOption {
138 type = listOf lines;
139 default = [];
140 description = "Additional configuration to append to Apache";
141 };
142 nosslVhost = mkOption {
143 description = "A default nossl vhost for captive portals";
144 default = {};
145 type = submodule {
146 options = {
147 enable = mkEnableOption "Add default no-ssl vhost for this instance";
148 host = mkOption {
149 type = str;
150 description = "The hostname to use for this vhost";
151 };
152 root = mkOption {
153 type = path;
154 description = "The root folder to serve";
155 };
156 indexFile = mkOption {
157 type = str;
158 default = "index.html";
159 description = "The index file to show.";
160 };
161 };
162 };
163 };
164 fallbackVhost = mkOption {
165 description = "The fallback vhost that will be defined as first vhost in Apache";
166 type = submodule {
167 options = {
168 certName = mkOption { type = str; };
169 hosts = mkOption { type = listOf str; };
170 root = mkOption { type = nullOr path; };
171 forceSSL = mkOption {
172 type = bool;
173 default = true;
174 description = ''
175 Automatically create a corresponding non-ssl vhost
176 that will only redirect to the ssl version
177 '';
178 };
179 extraConfig = mkOption { type = listOf lines; default = []; };
180 };
181 };
182 };
183 vhostNoSSLConfs = mkOption {
184 default = {};
185 description = "List of no ssl vhosts to define for Apache";
186 type = attrsOf (submodule {
187 options = {
188 hosts = mkOption { type = listOf str; };
189 root = mkOption { type = nullOr path; };
190 extraConfig = mkOption { type = listOf lines; default = []; };
191 };
192 });
193 };
194 vhostConfs = mkOption {
195 default = {};
196 description = "List of vhosts to define for Apache";
197 type = attrsOf (submodule {
198 options = {
199 certName = mkOption { type = str; };
200 hosts = mkOption { type = listOf str; };
201 root = mkOption { type = nullOr path; };
202 forceSSL = mkOption {
203 type = bool;
204 default = true;
205 description = ''
206 Automatically create a corresponding non-ssl vhost
207 that will only redirect to the ssl version
208 '';
209 };
210 extraConfig = mkOption { type = listOf lines; default = []; };
211 };
212 });
213 };
214 watchPaths = mkOption {
215 type = listOf str;
216 default = [];
217 description = ''
218 Paths to watch that should trigger a reload of httpd
219 '';
220 };
221 };
222 }));
223 };
224 };
225
226 config = lib.mkMerge [
227 {
228 assertions = [
229 {
230 assertion = builtins.length (builtins.attrNames (lib.filterAttrs (k: v: v.enable && v.moduleType == "main") cfg.env)) <= 1;
231 message = ''
232 Only one enabled environment can have moduleType = "main"
233 '';
234 }
235 ];
236 }
237
238 {
239 environment.etc = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
240 "httpd/${name}/httpd.conf" { source = (pkgs.nixos {
241 imports = [
242 {
243 config.security.acme.acceptTerms = true;
244 config.security.acme.preliminarySelfsigned = false;
245 config.security.acme.certs =
246 lib.mapAttrs (n: lib.filterAttrs (n': v': n' != "directory")) config.security.acme.certs;
247 config.security.acme.defaults = config.security.acme.defaults;
248 config.networking.hostName = "${hostConfig.networking.hostName}-${name}";
249 config.services.httpd = toHttpdConfig icfg;
250 }
251 ];
252 }).config.services.httpd.configFile;
253 }) (lib.filterAttrs (k: v: v.moduleType == "container" && v.enable) cfg.env);
254
255 system.activationScripts.httpd-containers = {
256 deps = [ "etc" ];
257 text = builtins.concatStringsSep "\n" (
258 lib.mapAttrsToList (n: v: ''
259 install -d -m 0750 -o ${v.user} -g ${v.group} /var/log/httpd/${n} /var/lib/nixos-containers/httpd-${n}-mounts/conf
260 install -Dm644 -o ${v.user} -g ${v.group} /etc/httpd/${n}/httpd.conf /var/lib/nixos-containers/httpd-${n}-mounts/conf/
261 '') (lib.filterAttrs (k: v: v.moduleType == "container" && v.enable) cfg.env)
262 );
263 };
264
265 security.acme.certs = lib.mkMerge (lib.mapAttrsToList (name: icfg:
266 let
267 containerCertNames = lib.unique (lib.mapAttrsToList (n: v: v.certName) icfg.vhostConfs
268 ++ [ icfg.fallbackVhost.certName ]);
269 in
270 lib.genAttrs containerCertNames (n:
271 { postRun = "machinectl shell httpd-${name} /run/current-system/sw/bin/systemctl reload httpd.service"; }
272 )
273 ) (lib.filterAttrs (k: v: v.moduleType == "container" && v.enable) cfg.env)
274 );
275 containers = let hostConfig = config; in attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
276 "httpd-${name}" {
277 autoStart = true;
278 privateNetwork = false;
279 bindMounts = {
280 "/var/log/httpd" = {
281 hostPath = "/var/log/httpd/${name}";
282 isReadOnly = false;
283 };
284 "/etc/httpd" = {
285 hostPath = "/var/lib/nixos-containers/httpd-${name}-mounts/conf";
286 };
287 } // icfg.bindMounts;
288
289 config = { config, options, ... }: {
290 imports = [
291 myuids.nixosModule
292 files-watcher.nixosModule
293 ];
294 config = lib.mkMerge [
295 {
296 # This value determines the NixOS release with which your system is
297 # to be compatible, in order to avoid breaking some software such as
298 # database servers. You should change this only after NixOS release
299 # notes say you should.
300 # https://nixos.org/nixos/manual/release-notes.html
301 system.stateVersion = "23.05"; # Did you read the comment?
302 }
303 {
304 users.mutableUsers = false;
305 users.allowNoPasswordLogin = true;
306 users.users.acme.uid = config.ids.uids.acme;
307 users.users.acme.group = "acme";
308 users.groups.acme.gid = config.ids.gids.acme;
309 }
310 {
311 services.logrotate.settings.httpd.enable = false;
312 }
313 {
314 environment.etc."httpd/httpd.conf".enable = false;
315 services.httpd = {
316 enable = true;
317 configFile = "/etc/httpd/httpd.conf";
318 };
319
320 services.filesWatcher.http-config-reload = {
321 paths = [ "/etc/httpd/httpd.conf" ];
322 waitTime = 2;
323 restart = true;
324 };
325 services.filesWatcher.httpd = {
326 paths = icfg.watchPaths;
327 waitTime = 5;
328 };
329
330 users.users.${icfg.user}.extraGroups = [ "acme" "keys" ];
331 systemd.services.http-config-reload = {
332 wants = [ "httpd.service" ];
333 wantedBy = [ "multi-user.target" ];
334 restartTriggers = [ config.services.httpd.configFile ];
335 serviceConfig.Type = "oneshot";
336 serviceConfig.TimeoutSec = 60;
337 serviceConfig.RemainAfterExit = true;
338 script = ''
339 if ${pkgs.systemd}/bin/systemctl -q is-active httpd.service ; then
340 ${config.services.httpd.package.out}/bin/httpd -f ${config.services.httpd.configFile} -t && \
341 ${pkgs.systemd}/bin/systemctl reload httpd.service
342 fi
343 '';
344 };
345 }
346 ];
347 };
348 }) (lib.filterAttrs (k: v: v.moduleType == "container" && v.enable) cfg.env);
349 }
350
351 {
352 services.httpd = lib.concatMapAttrs (name: toHttpdConfig)
353 (lib.filterAttrs (k: v: v.moduleType == "main" && v.enable) cfg.env);
354
355 users.users = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
356 config.services.httpd.user { extraGroups = [ "acme" ]; }
357 ) (lib.filterAttrs (k: v: v.moduleType == "main" && v.enable) cfg.env);
358
359 services.filesWatcher = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
360 "httpd" {
361 paths = icfg.watchPaths;
362 waitTime = 5;
363 }
364 ) (lib.filterAttrs (k: v: v.moduleType == "main" && v.enable) cfg.env);
365
366 services.logrotate.settings.httpd.enable = false;
367 systemd.services = lib.concatMapAttrs (name: v: {
368 httpd.restartTriggers = lib.mkForce [];
369 })
370 (lib.filterAttrs (k: v: v.moduleType == "main" && v.enable) cfg.env);
371
372 security.acme.certs = lib.mkMerge (lib.mapAttrsToList (name: icfg:
373 let
374 containerCertNames = lib.unique (lib.mapAttrsToList (n: v: v.certName) icfg.vhostConfs
375 ++ [ icfg.fallbackVhost.certName ]);
376 in
377 lib.genAttrs containerCertNames (n:
378 { postRun = "systemctl reload httpd.service"; }
379 )
380 ) (lib.filterAttrs (k: v: v.moduleType == "main" && v.enable) cfg.env)
381 );
382
383 }
384 ];
385 };
386 };
387}
388
389
diff --git a/flakes/mypackages/flake.lock b/flakes/mypackages/flake.lock
new file mode 100644
index 0000000..f11f6c5
--- /dev/null
+++ b/flakes/mypackages/flake.lock
@@ -0,0 +1,83 @@
1{
2 "nodes": {
3 "flake-parts": {
4 "inputs": {
5 "nixpkgs-lib": "nixpkgs-lib"
6 },
7 "locked": {
8 "lastModified": 1675295133,
9 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
10 "owner": "hercules-ci",
11 "repo": "flake-parts",
12 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
13 "type": "github"
14 },
15 "original": {
16 "owner": "hercules-ci",
17 "repo": "flake-parts",
18 "type": "github"
19 }
20 },
21 "nixpkgs": {
22 "locked": {
23 "lastModified": 1646497237,
24 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
25 "owner": "nixos",
26 "repo": "nixpkgs",
27 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
28 "type": "github"
29 },
30 "original": {
31 "owner": "nixos",
32 "repo": "nixpkgs",
33 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
34 "type": "github"
35 }
36 },
37 "nixpkgs-lib": {
38 "locked": {
39 "dir": "lib",
40 "lastModified": 1675183161,
41 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
42 "owner": "NixOS",
43 "repo": "nixpkgs",
44 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
45 "type": "github"
46 },
47 "original": {
48 "dir": "lib",
49 "owner": "NixOS",
50 "ref": "nixos-unstable",
51 "repo": "nixpkgs",
52 "type": "github"
53 }
54 },
55 "root": {
56 "inputs": {
57 "flake-parts": "flake-parts",
58 "nixpkgs": "nixpkgs",
59 "webapps-ttrss": "webapps-ttrss"
60 }
61 },
62 "webapps-ttrss": {
63 "flake": false,
64 "locked": {
65 "lastModified": 1546759381,
66 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
67 "ref": "master",
68 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
69 "revCount": 9256,
70 "type": "git",
71 "url": "https://git.tt-rss.org/fox/tt-rss.git"
72 },
73 "original": {
74 "ref": "master",
75 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
76 "type": "git",
77 "url": "https://git.tt-rss.org/fox/tt-rss.git"
78 }
79 }
80 },
81 "root": "root",
82 "version": 7
83}
diff --git a/flakes/mypackages/flake.nix b/flakes/mypackages/flake.nix
new file mode 100644
index 0000000..adad96f
--- /dev/null
+++ b/flakes/mypackages/flake.nix
@@ -0,0 +1,43 @@
1{
2 description = "immae-eu infrastructure";
3 inputs = {
4 flake-parts.url = "github:hercules-ci/flake-parts";
5 # TODO: use nixos-unstable branch at some point and use the lock to keep the actual commit
6 nixpkgs.url = "github:nixos/nixpkgs/062a0c5437b68f950b081bbfc8a699d57a4ee026";
7 webapps-ttrss = {
8 url = "https://git.tt-rss.org/fox/tt-rss.git";
9 ref = "master";
10 rev = "986ca251f995f7754a0470d3e0c44538a545081f";
11 type = "git";
12 flake = false;
13 };
14 };
15 outputs = inputs@{ self, flake-parts, ... }:
16 flake-parts.lib.mkFlake { inherit inputs; } {
17 imports = [
18 (import ./lib/flake-parts-lib.nix { name = "lib"; type = "unspecified"; })
19 ];
20 systems = [ "x86_64-linux" ];
21 perSystem = { config, inputs', pkgs, ... }:
22 let
23 mypkgs = import ./pkgs/default.nix { inherit pkgs; inherit (self) mylibs sources; };
24 in {
25 packages = builtins.removeAttrs mypkgs [ "composerEnv" "webapps-apache-theme" ];
26 lib = {
27 inherit (self) sources;
28 inherit (mypkgs) composerEnv;
29 inherit (self.mylibs) postfixScript;
30 apache-theme = mypkgs.webapps-apache-theme;
31 };
32 };
33 flake = {
34 mylibs = import ./lib/default.nix;
35 sources.tools.ttrss = inputs.webapps-ttrss;
36 # We want overlays to be infected (in contrary to "packages"
37 # above): if someone imports an overlay here, we want his own
38 # overlays to be taken into account in every package, even new
39 # ones.
40 overlays = import ./overlays/default.nix { inherit (self) sources mylibs; };
41 };
42 };
43}
diff --git a/flakes/mypackages/lib/default.nix b/flakes/mypackages/lib/default.nix
new file mode 100644
index 0000000..972ace0
--- /dev/null
+++ b/flakes/mypackages/lib/default.nix
@@ -0,0 +1,37 @@
1{
2 flakePartsAddPerSystem = import ./flake-parts-lib.nix;
3 nodeEnv = import ./node-env.nix;
4 postfixScript = pkgs: name: script: pkgs.writeScript name ''
5 #! ${pkgs.stdenv.shell}
6 mail=$(${pkgs.coreutils}/bin/cat -)
7 output=$(echo "$mail" | ${script} 2>&1)
8 ret=$?
9
10 if [ "$ret" != "0" ]; then
11 echo "$mail" \
12 | ${pkgs.procmail}/bin/formail -i "X-Return-Code: $ret" \
13 | /run/wrappers/bin/sendmail -i scripts_error+${name}@mail.immae.eu
14
15 messageId=$(echo "$mail" | ${pkgs.procmail}/bin/formail -x "Message-Id:")
16 repeat=$(echo "$mail" | ${pkgs.procmail}/bin/formail -X "From:" -X "Received:")
17
18 ${pkgs.coreutils}/bin/cat <<EOF | /run/wrappers/bin/sendmail -i scripts_error+${name}@mail.immae.eu
19 $repeat
20 To: scripts_error+${name}@mail.immae.eu
21 Subject: Log from script error
22 Content-Type: text/plain; charset="UTF-8"
23 Content-Transfer-Encoding: 8bit
24 References:$messageId
25 MIME-Version: 1.0
26 X-Return-Code: $ret
27
28 Error code: $ret
29 Output of message:
30 --------------
31 $output
32 --------------
33 EOF
34 fi
35 '';
36
37}
diff --git a/flakes/mypackages/lib/flake-parts-lib.nix b/flakes/mypackages/lib/flake-parts-lib.nix
new file mode 100644
index 0000000..271a4cf
--- /dev/null
+++ b/flakes/mypackages/lib/flake-parts-lib.nix
@@ -0,0 +1,10 @@
1i@{ name, type }:
2{ lib, flake-parts-lib, ... }:
3flake-parts-lib.mkTransposedPerSystemModule {
4 inherit name;
5 option = lib.mkOption {
6 type = lib.types.lazyAttrsOf lib.types."${type}";
7 default = { };
8 };
9 file = import ./flake-parts-lib.nix i;
10}
diff --git a/flakes/mypackages/lib/node-env.nix b/flakes/mypackages/lib/node-env.nix
new file mode 100644
index 0000000..842caa1
--- /dev/null
+++ b/flakes/mypackages/lib/node-env.nix
@@ -0,0 +1,542 @@
1# This file originates from node2nix
2
3{lib, stdenv, nodejs, python2, utillinux, libtool, runCommand, writeTextFile}:
4
5let
6 python = if nodejs ? python then nodejs.python else python2;
7
8 # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
9 tarWrapper = runCommand "tarWrapper" {} ''
10 mkdir -p $out/bin
11
12 cat > $out/bin/tar <<EOF
13 #! ${stdenv.shell} -e
14 $(type -p tar) "\$@" --warning=no-unknown-keyword
15 EOF
16
17 chmod +x $out/bin/tar
18 '';
19
20 # Function that generates a TGZ file from a NPM project
21 buildNodeSourceDist =
22 { name, version, src, ... }:
23
24 stdenv.mkDerivation {
25 name = "node-tarball-${name}-${version}";
26 inherit src;
27 buildInputs = [ nodejs ];
28 buildPhase = ''
29 export HOME=$TMPDIR
30 tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
31 '';
32 installPhase = ''
33 mkdir -p $out/tarballs
34 mv $tgzFile $out/tarballs
35 mkdir -p $out/nix-support
36 echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products
37 '';
38 };
39
40 includeDependencies = {dependencies}:
41 lib.optionalString (dependencies != [])
42 (lib.concatMapStrings (dependency:
43 ''
44 # Bundle the dependencies of the package
45 mkdir -p node_modules
46 cd node_modules
47
48 # Only include dependencies if they don't exist. They may also be bundled in the package.
49 if [ ! -e "${dependency.name}" ]
50 then
51 ${composePackage dependency}
52 fi
53
54 cd ..
55 ''
56 ) dependencies);
57
58 # Recursively composes the dependencies of a package
59 composePackage = { name, packageName, src, dependencies ? [], ... }@args:
60 ''
61 DIR=$(pwd)
62 cd $TMPDIR
63
64 unpackFile ${src}
65
66 # Make the base dir in which the target dependency resides first
67 mkdir -p "$(dirname "$DIR/${packageName}")"
68
69 if [ -f "${src}" ]
70 then
71 # Figure out what directory has been unpacked
72 packageDir="$(find . -maxdepth 1 -type d | tail -1)"
73
74 # Restore write permissions to make building work
75 find "$packageDir" -type d -print0 | xargs -0 chmod u+x
76 chmod -R u+w "$packageDir"
77
78 # Move the extracted tarball into the output folder
79 mv "$packageDir" "$DIR/${packageName}"
80 elif [ -d "${src}" ]
81 then
82 # Get a stripped name (without hash) of the source directory.
83 # On old nixpkgs it's already set internally.
84 if [ -z "$strippedName" ]
85 then
86 strippedName="$(stripHash ${src})"
87 fi
88
89 # Restore write permissions to make building work
90 chmod -R u+w "$strippedName"
91
92 # Move the extracted directory into the output folder
93 mv "$strippedName" "$DIR/${packageName}"
94 fi
95
96 # Unset the stripped name to not confuse the next unpack step
97 unset strippedName
98
99 # Include the dependencies of the package
100 cd "$DIR/${packageName}"
101 ${includeDependencies { inherit dependencies; }}
102 cd ..
103 ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
104 '';
105
106 pinpointDependencies = {dependencies, production}:
107 let
108 pinpointDependenciesFromPackageJSON = writeTextFile {
109 name = "pinpointDependencies.js";
110 text = ''
111 var fs = require('fs');
112 var path = require('path');
113
114 function resolveDependencyVersion(location, name) {
115 if(location == process.env['NIX_STORE']) {
116 return null;
117 } else {
118 var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
119
120 if(fs.existsSync(dependencyPackageJSON)) {
121 var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
122
123 if(dependencyPackageObj.name == name) {
124 return dependencyPackageObj.version;
125 }
126 } else {
127 return resolveDependencyVersion(path.resolve(location, ".."), name);
128 }
129 }
130 }
131
132 function replaceDependencies(dependencies) {
133 if(typeof dependencies == "object" && dependencies !== null) {
134 for(var dependency in dependencies) {
135 var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
136
137 if(resolvedVersion === null) {
138 process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
139 } else {
140 dependencies[dependency] = resolvedVersion;
141 }
142 }
143 }
144 }
145
146 /* Read the package.json configuration */
147 var packageObj = JSON.parse(fs.readFileSync('./package.json'));
148
149 /* Pinpoint all dependencies */
150 replaceDependencies(packageObj.dependencies);
151 if(process.argv[2] == "development") {
152 replaceDependencies(packageObj.devDependencies);
153 }
154 replaceDependencies(packageObj.optionalDependencies);
155
156 /* Write the fixed package.json file */
157 fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
158 '';
159 };
160 in
161 ''
162 node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}
163
164 ${lib.optionalString (dependencies != [])
165 ''
166 if [ -d node_modules ]
167 then
168 cd node_modules
169 ${lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
170 cd ..
171 fi
172 ''}
173 '';
174
175 # Recursively traverses all dependencies of a package and pinpoints all
176 # dependencies in the package.json file to the versions that are actually
177 # being used.
178
179 pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
180 ''
181 if [ -d "${packageName}" ]
182 then
183 cd "${packageName}"
184 ${pinpointDependencies { inherit dependencies production; }}
185 cd ..
186 ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
187 fi
188 '';
189
190 # Extract the Node.js source code which is used to compile packages with
191 # native bindings
192 nodeSources = runCommand "node-sources" {} ''
193 tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
194 mv node-* $out
195 '';
196
197 # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
198 addIntegrityFieldsScript = writeTextFile {
199 name = "addintegrityfields.js";
200 text = ''
201 var fs = require('fs');
202 var path = require('path');
203
204 function augmentDependencies(baseDir, dependencies) {
205 for(var dependencyName in dependencies) {
206 var dependency = dependencies[dependencyName];
207
208 // Open package.json and augment metadata fields
209 var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
210 var packageJSONPath = path.join(packageJSONDir, "package.json");
211
212 if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
213 console.log("Adding metadata fields to: "+packageJSONPath);
214 var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
215
216 if(dependency.integrity) {
217 packageObj["_integrity"] = dependency.integrity;
218 } else {
219 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.
220 }
221
222 packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
223 fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
224 }
225
226 // Augment transitive dependencies
227 if(dependency.dependencies !== undefined) {
228 augmentDependencies(packageJSONDir, dependency.dependencies);
229 }
230 }
231 }
232
233 if(fs.existsSync("./package-lock.json")) {
234 var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
235
236 if(packageLock.lockfileVersion !== 1) {
237 process.stderr.write("Sorry, I only understand lock file version 1!\n");
238 process.exit(1);
239 }
240
241 if(packageLock.dependencies !== undefined) {
242 augmentDependencies(".", packageLock.dependencies);
243 }
244 }
245 '';
246 };
247
248 # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
249 reconstructPackageLock = writeTextFile {
250 name = "addintegrityfields.js";
251 text = ''
252 var fs = require('fs');
253 var path = require('path');
254
255 var packageObj = JSON.parse(fs.readFileSync("package.json"));
256
257 var lockObj = {
258 name: packageObj.name,
259 version: packageObj.version,
260 lockfileVersion: 1,
261 requires: true,
262 dependencies: {}
263 };
264
265 function augmentPackageJSON(filePath, dependencies) {
266 var packageJSON = path.join(filePath, "package.json");
267 if(fs.existsSync(packageJSON)) {
268 var packageObj = JSON.parse(fs.readFileSync(packageJSON));
269 dependencies[packageObj.name] = {
270 version: packageObj.version,
271 integrity: "sha1-000000000000000000000000000=",
272 dependencies: {}
273 };
274 processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
275 }
276 }
277
278 function processDependencies(dir, dependencies) {
279 if(fs.existsSync(dir)) {
280 var files = fs.readdirSync(dir);
281
282 files.forEach(function(entry) {
283 var filePath = path.join(dir, entry);
284 var stats = fs.statSync(filePath);
285
286 if(stats.isDirectory()) {
287 if(entry.substr(0, 1) == "@") {
288 // When we encounter a namespace folder, augment all packages belonging to the scope
289 var pkgFiles = fs.readdirSync(filePath);
290
291 pkgFiles.forEach(function(entry) {
292 if(stats.isDirectory()) {
293 var pkgFilePath = path.join(filePath, entry);
294 augmentPackageJSON(pkgFilePath, dependencies);
295 }
296 });
297 } else {
298 augmentPackageJSON(filePath, dependencies);
299 }
300 }
301 });
302 }
303 }
304
305 processDependencies("node_modules", lockObj.dependencies);
306
307 fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
308 '';
309 };
310
311 # Builds and composes an NPM package including all its dependencies
312 buildNodePackage =
313 { name
314 , packageName
315 , version
316 , dependencies ? []
317 , buildInputs ? []
318 , production ? true
319 , npmFlags ? ""
320 , dontNpmInstall ? false
321 , bypassCache ? false
322 , preRebuild ? ""
323 , dontStrip ? true
324 , unpackPhase ? "true"
325 , buildPhase ? "true"
326 , ... }@args:
327
328 let
329 forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
330 extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
331 in
332 stdenv.mkDerivation ({
333 name = "node-${name}-${version}";
334 buildInputs = [ tarWrapper python nodejs ]
335 ++ lib.optional (stdenv.isLinux) utillinux
336 ++ lib.optional (stdenv.isDarwin) libtool
337 ++ buildInputs;
338
339 inherit dontStrip; # Stripping may fail a build for some package deployments
340 inherit dontNpmInstall preRebuild unpackPhase buildPhase;
341
342 compositionScript = composePackage args;
343 pinpointDependenciesScript = pinpointDependenciesOfPackage args;
344
345 passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
346
347 installPhase = ''
348 # Create and enter a root node_modules/ folder
349 mkdir -p $out/lib/node_modules
350 cd $out/lib/node_modules
351
352 # Compose the package and all its dependencies
353 source $compositionScriptPath
354
355 # Pinpoint the versions of all dependencies to the ones that are actually being used
356 echo "pinpointing versions of dependencies..."
357 source $pinpointDependenciesScriptPath
358
359 # Patch the shebangs of the bundled modules to prevent them from
360 # calling executables outside the Nix store as much as possible
361 patchShebangs .
362
363 # Deploy the Node.js package by running npm install. Since the
364 # dependencies have been provided already by ourselves, it should not
365 # attempt to install them again, which is good, because we want to make
366 # it Nix's responsibility. If it needs to install any dependencies
367 # anyway (e.g. because the dependency parameters are
368 # incomplete/incorrect), it fails.
369 #
370 # The other responsibilities of NPM are kept -- version checks, build
371 # steps, postprocessing etc.
372
373 export HOME=$TMPDIR
374 cd "${packageName}"
375 runHook preRebuild
376
377 ${lib.optionalString bypassCache ''
378 if [ ! -f package-lock.json ]
379 then
380 echo "No package-lock.json file found, reconstructing..."
381 node ${reconstructPackageLock}
382 fi
383
384 node ${addIntegrityFieldsScript}
385 ''}
386
387 npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
388
389 if [ "$dontNpmInstall" != "1" ]
390 then
391 # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
392 rm -f npm-shrinkwrap.json
393
394 npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install
395 fi
396
397 # Create symlink to the deployed executable folder, if applicable
398 if [ -d "$out/lib/node_modules/.bin" ]
399 then
400 ln -s $out/lib/node_modules/.bin $out/bin
401 fi
402
403 # Create symlinks to the deployed manual page folders, if applicable
404 if [ -d "$out/lib/node_modules/${packageName}/man" ]
405 then
406 mkdir -p $out/share
407 for dir in "$out/lib/node_modules/${packageName}/man/"*
408 do
409 mkdir -p $out/share/man/$(basename "$dir")
410 for page in "$dir"/*
411 do
412 ln -s $page $out/share/man/$(basename "$dir")
413 done
414 done
415 fi
416
417 # Run post install hook, if provided
418 runHook postInstall
419 '';
420 } // extraArgs);
421
422 # Builds a development shell
423 buildNodeShell =
424 { name
425 , packageName
426 , version
427 , src
428 , dependencies ? []
429 , buildInputs ? []
430 , production ? true
431 , npmFlags ? ""
432 , dontNpmInstall ? false
433 , bypassCache ? false
434 , dontStrip ? true
435 , unpackPhase ? "true"
436 , buildPhase ? "true"
437 , ... }@args:
438
439 let
440 forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
441
442 extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
443
444 nodeDependencies = stdenv.mkDerivation ({
445 name = "node-dependencies-${name}-${version}";
446
447 buildInputs = [ tarWrapper python nodejs ]
448 ++ lib.optional (stdenv.isLinux) utillinux
449 ++ lib.optional (stdenv.isDarwin) libtool
450 ++ buildInputs;
451
452 inherit dontStrip; # Stripping may fail a build for some package deployments
453 inherit dontNpmInstall unpackPhase buildPhase;
454
455 includeScript = includeDependencies { inherit dependencies; };
456 pinpointDependenciesScript = pinpointDependenciesOfPackage args;
457
458 passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
459
460 installPhase = ''
461 mkdir -p $out/${packageName}
462 cd $out/${packageName}
463
464 source $includeScriptPath
465
466 # Create fake package.json to make the npm commands work properly
467 cp ${src}/package.json .
468 chmod 644 package.json
469 ${lib.optionalString bypassCache ''
470 if [ -f ${src}/package-lock.json ]
471 then
472 cp ${src}/package-lock.json .
473 fi
474 ''}
475
476 # Pinpoint the versions of all dependencies to the ones that are actually being used
477 echo "pinpointing versions of dependencies..."
478 cd ..
479 ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
480
481 source $pinpointDependenciesScriptPath
482 cd ${packageName}
483
484 # Patch the shebangs of the bundled modules to prevent them from
485 # calling executables outside the Nix store as much as possible
486 patchShebangs .
487
488 export HOME=$PWD
489
490 ${lib.optionalString bypassCache ''
491 if [ ! -f package-lock.json ]
492 then
493 echo "No package-lock.json file found, reconstructing..."
494 node ${reconstructPackageLock}
495 fi
496
497 node ${addIntegrityFieldsScript}
498 ''}
499
500 npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
501
502 ${lib.optionalString (!dontNpmInstall) ''
503 # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
504 rm -f npm-shrinkwrap.json
505
506 npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install
507 ''}
508
509 cd ..
510 ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
511
512 mv ${packageName} lib
513 ln -s $out/lib/node_modules/.bin $out/bin
514 '';
515 } // extraArgs);
516 in
517 stdenv.mkDerivation {
518 name = "node-shell-${name}-${version}";
519
520 buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
521 buildCommand = ''
522 mkdir -p $out/bin
523 cat > $out/bin/shell <<EOF
524 #! ${stdenv.shell} -e
525 $shellHook
526 exec ${stdenv.shell}
527 EOF
528 chmod +x $out/bin/shell
529 '';
530
531 # Provide the dependencies in a development shell through the NODE_PATH environment variable
532 inherit nodeDependencies;
533 shellHook = lib.optionalString (dependencies != []) ''
534 export NODE_PATH=$nodeDependencies/lib/node_modules
535 '';
536 };
537in
538{
539 buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist;
540 buildNodePackage = lib.makeOverridable buildNodePackage;
541 buildNodeShell = lib.makeOverridable buildNodeShell;
542}
diff --git a/flakes/mypackages/lib/private/default.nix b/flakes/mypackages/lib/private/default.nix
new file mode 100644
index 0000000..86dd840
--- /dev/null
+++ b/flakes/mypackages/lib/private/default.nix
@@ -0,0 +1,20 @@
1{ pkgs }:
2{
3 # This adds header colors to the builds, but it rebuilds the whole
4 # world from scratch, so only use it to debug!
5 # add it as postHook in derivations
6 immaePostHook = ''
7 header() {
8 echo -ne "\033[1;36m"
9 echo -n "$1"
10 echo -e "\033[0m"
11 }
12
13 echoCmd() {
14 printf "\033[1;34m%s:\033[0m" "$1"
15 shift
16 printf ' %q' "$@"
17 echo
18 }
19 '';
20}
diff --git a/flakes/mypackages/overlays/bitlbee-discord/default.nix b/flakes/mypackages/overlays/bitlbee-discord/default.nix
new file mode 100644
index 0000000..4227677
--- /dev/null
+++ b/flakes/mypackages/overlays/bitlbee-discord/default.nix
@@ -0,0 +1,12 @@
1self: super: {
2 bitlbee-discord = super.bitlbee-discord.overrideAttrs(old: rec {
3 version = "master";
4 name = "bitlbee-discord-${version}";
5 src = self.fetchFromGitHub {
6 rev = "607f9887ca85f246e970778e3d40aa5c346365a7";
7 owner = "sm00th";
8 repo = "bitlbee-discord";
9 sha256 = "0jkwhx2walx2ay0vc9x13q0j1qq4r5x30ss03a3j7ks28xvsnxc7";
10 };
11 });
12}
diff --git a/flakes/mypackages/overlays/bitlbee/bitlbee_long_nicks.patch b/flakes/mypackages/overlays/bitlbee/bitlbee_long_nicks.patch
new file mode 100644
index 0000000..70be092
--- /dev/null
+++ b/flakes/mypackages/overlays/bitlbee/bitlbee_long_nicks.patch
@@ -0,0 +1,56 @@
1diff --git a/bitlbee.h b/bitlbee.h
2index 17ab2979..5858277e 100644
3--- a/bitlbee.h
4+++ b/bitlbee.h
5@@ -121,7 +121,7 @@ extern "C" {
6 #define CONTROL_TOPIC "Welcome to the control channel. Type \2help\2 for help information."
7 #define IRCD_INFO PACKAGE " <http://www.bitlbee.org/>"
8
9-#define MAX_NICK_LENGTH 24
10+#define MAX_NICK_LENGTH 99
11
12 #define HELP_FILE VARDIR "help.txt"
13 #define CONF_FILE_DEF ETCDIR "bitlbee.conf"
14diff --git a/tests/check_nick.c b/tests/check_nick.c
15index ca5e5111..909fdcc9 100644
16--- a/tests/check_nick.c
17+++ b/tests/check_nick.c
18@@ -11,16 +11,16 @@
19 START_TEST(test_nick_strip){
20 int i;
21 const char *get[] = { "test:", "test", "test\n",
22- "thisisaveryveryveryverylongnick",
23- "thisisave:ryveryveryverylongnick",
24+ "thisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnick",
25+ "thisis:averyveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnick",
26 "t::::est",
27 "test123",
28 "123test",
29 "123",
30 NULL };
31 const char *expected[] = { "test", "test", "test",
32- "thisisaveryveryveryveryl",
33- "thisisaveryveryveryveryl",
34+ "thisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryve",
35+ "thisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryve",
36 "test",
37 "test123",
38 "_123test",
39@@ -28,7 +28,7 @@ START_TEST(test_nick_strip){
40 NULL };
41
42 for (i = 0; get[i]; i++) {
43- char copy[60];
44+ char copy[260];
45 strcpy(copy, get[i]);
46 nick_strip(NULL, copy);
47 fail_unless(strcmp(copy, expected[i]) == 0,
48@@ -53,7 +53,7 @@ END_TEST
49
50 START_TEST(test_nick_ok_notok)
51 {
52- const char *nicks[] = { "thisisaveryveryveryveryveryveryverylongnick",
53+ const char *nicks[] = { "thisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnickthisisaveryveryveryveryveryveryverylongnick",
54 "\nillegalchar", "", "nick%", "123test", NULL };
55 int i;
56
diff --git a/flakes/mypackages/overlays/bitlbee/default.nix b/flakes/mypackages/overlays/bitlbee/default.nix
new file mode 100644
index 0000000..5183d01
--- /dev/null
+++ b/flakes/mypackages/overlays/bitlbee/default.nix
@@ -0,0 +1,5 @@
1self: super: {
2 bitlbee = super.bitlbee.overrideAttrs(old: {
3 patches = (old.patches or []) ++ [ ./bitlbee_long_nicks.patch ];
4 });
5}
diff --git a/flakes/mypackages/overlays/databases/mysql/default.nix b/flakes/mypackages/overlays/databases/mysql/default.nix
new file mode 100644
index 0000000..45dc468
--- /dev/null
+++ b/flakes/mypackages/overlays/databases/mysql/default.nix
@@ -0,0 +1,28 @@
1self: super: rec {
2 #mariadb = super.mariadb_106.overrideAttrs(old: {
3 # passthru = old.passthru // { mysqlVersion = "5.7"; };
4 #});
5 #mariadb_pam = super.mariadb_106.overrideAttrs(old: {
6 # cmakeFlags = old.cmakeFlags ++ [ "-DWITH_AUTHENTICATION_PAM=ON" ];
7 # buildInputs = old.buildInputs ++ [ self.pam ];
8 # outputs = old.outputs ++ [ "dev" ];
9 # passthru = old.passthru // { mysqlVersion = "5.7"; };
10 # postInstall = ''
11 # mkdir -p $dev $dev/lib $dev/share
12 # cp -a $out/include $dev
13 # cp -a $out/lib/{libmariadbclient.a,libmysqlclient.a,libmysqlclient_r.a,libmysqlservices.a} $dev/lib
14 # cp -a $out/lib/pkgconfig $dev/lib
15 # cp -a $out/share/aclocal $dev/share
16 # '' + old.postInstall;
17 #});
18 ## This patched version includes C headers from the server part (see
19 ## above). It seems to be required to build pam support in clients.
20 #libmysqlclient_pam = super.libmysqlclient.overrideAttrs(old: {
21 # prePatch = old.prePatch or "" + ''
22 # 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
23 # '';
24 # postInstall = old.postInstall or "" + ''
25 # cp -a ${mariadb_pam.dev}/include/* $out/include/mariadb
26 # '';
27 #});
28}
diff --git a/flakes/mypackages/overlays/databases/postgresql/default.nix b/flakes/mypackages/overlays/databases/postgresql/default.nix
new file mode 100644
index 0000000..9ada29c
--- /dev/null
+++ b/flakes/mypackages/overlays/databases/postgresql/default.nix
@@ -0,0 +1,8 @@
1self: super: rec {
2 postgresql_pam = super.postgresql_11.overrideAttrs(old: {
3 # datadir in /var/lib/postgresql is named after psqlSchema
4 passthru = old.passthru // { psqlSchema = "11.0"; };
5 configureFlags = old.configureFlags ++ [ "--with-pam" ];
6 buildInputs = (old.buildInputs or []) ++ [ self.pam ];
7 });
8}
diff --git a/flakes/mypackages/overlays/default.nix b/flakes/mypackages/overlays/default.nix
new file mode 100644
index 0000000..e91d6a1
--- /dev/null
+++ b/flakes/mypackages/overlays/default.nix
@@ -0,0 +1,25 @@
1{ sources, mylibs }:
2{
3 mylibs = self: super: { inherit mylibs; };
4 mypkgs = final: prev: import ../pkgs/default.nix { pkgs = final; inherit mylibs sources; };
5
6 bitlbee = import ./bitlbee;
7 bitlbee-discord = import ./bitlbee-discord;
8 gitweb = import ./gitweb;
9 gitolite = import ./gitolite;
10 goaccess = import ./goaccess;
11 kanboard = import ./kanboard;
12 mysql = import ./databases/mysql;
13 postfix = import ./postfix;
14 postgresql = import ./databases/postgresql;
15 ympd = import ./ympd;
16 morph = import ./morph;
17 cron = self: super: {
18 cron = super.cron.overrideAttrs(old: {
19 # Allow "+" char in MAILTO
20 patchPhase = ''
21 sed -i -e "/static const char safe_delim/s/@/@+/" do_command.c
22 '';
23 });
24 };
25}
diff --git a/flakes/mypackages/overlays/gitolite/default.nix b/flakes/mypackages/overlays/gitolite/default.nix
new file mode 100644
index 0000000..7f8f007
--- /dev/null
+++ b/flakes/mypackages/overlays/gitolite/default.nix
@@ -0,0 +1,8 @@
1self: super: {
2 gitolite = super.gitolite.overrideAttrs(old: {
3 postPatch = old.postPatch + ''
4 sed -i -e "s@/bin/rm@rm@" src/commands/sskm
5 cp ${./invite} src/commands/invite
6 '';
7 });
8}
diff --git a/flakes/mypackages/overlays/gitolite/invite b/flakes/mypackages/overlays/gitolite/invite
new file mode 100755
index 0000000..3cc2dbd
--- /dev/null
+++ b/flakes/mypackages/overlays/gitolite/invite
@@ -0,0 +1,172 @@
1#!/usr/bin/perl
2use strict;
3use warnings;
4
5use lib $ENV{GL_LIBDIR};
6use Gitolite::Rc;
7use Gitolite::Common;
8
9=for usage
10Please see usage at https://www.immae.eu/docs/forge-logicielle/gitolite.html#inviter-des-collaborateurs
11=cut
12
13usage() if @ARGV and ($ARGV[0] eq '-h' or $ARGV[0] eq '--help');
14
15my $rb = $rc{GL_REPO_BASE};
16my $ab = $rc{GL_ADMIN_BASE};
17# get to the keydir
18_chdir("$ab/keydir");
19
20# save arguments for later
21my $operation = shift || 'list';
22my $invitekeyid = shift || '';
23$invitekeyid and $invitekeyid !~ /^[-0-9a-z_]+@[-0-9a-z_]+$/i and die "invalid keyid $invitekeyid\n";
24my ($invited, $keyid) = split /@/, $invitekeyid;
25
26# get the actual userid and keytype
27my $gl_user = $ENV{GL_USER};
28die "This function is reserved for actual users" if $gl_user =~ s/-invite-(.*)$//;
29
30# ----
31# first collect the keys
32
33my ( @invited_keys );
34
35for my $pubkey (`find . -type f -name "*.pub" | sort`) {
36 chomp($pubkey);
37 $pubkey =~ s(^./)(); # artifact of the find command
38
39 my $user = $pubkey;
40 $user =~ s(.*/)(); # foo/bar/baz.pub -> baz.pub
41 $user =~ s/(\@[^.]+)?\.pub$//; # baz.pub, baz@home.pub -> baz
42
43 if ( $user =~ m(^(zzz-marked-for-...-)?$gl_user-invite-) ) {
44 push @invited_keys, $pubkey;
45 }
46}
47
48# ----
49# list mode; just do it and exit
50sub print_keylist {
51 my ( $message, @list ) = @_;
52 return unless @list;
53 print "== $message ==\n";
54 my $count = 1;
55 for (@list) {
56 my $fp = fingerprint($_);
57 s/(zzz-marked-for-...-)?$gl_user-invite-//g;
58 s/\.pub$//;
59 s(.*/)();
60 print $count++ . ": $fp : $_\n";
61 }
62}
63if ( $operation eq 'list' ) {
64 print "you have the following invited keys:\n";
65 print_keylist( "keys for invited persons", @invited_keys );
66 print "\n\n";
67 exit;
68}
69
70# ----
71# please see docs for details on how a user interacts with this
72
73die "valid operations: add, del\n" unless $operation =~ /^(add|del)$/;
74
75if ( $operation eq 'add' ) {
76 print STDERR "please supply the new key on STDIN. (I recommend you
77 don't try to do this interactively, but use a pipe)\n";
78 kf_add( $gl_user, $invited, $keyid, safe_stdin() );
79} elsif ( $operation eq 'del' ) {
80 kf_del( $gl_user, $invited, $keyid );
81}
82
83exit;
84
85# ----
86
87# make a temp clone and switch to it
88our $TEMPDIR;
89BEGIN { $TEMPDIR = `mktemp -d -t tmp.XXXXXXXXXX`; }
90END { `rm -rf $TEMPDIR`; }
91
92sub cd_temp_clone {
93 chomp($TEMPDIR);
94 hushed_git( "clone", "$rb/gitolite-admin.git", "$TEMPDIR" );
95 chdir($TEMPDIR);
96 my $hostname = `hostname`; chomp($hostname);
97 hushed_git( "config", "--get", "user.email" ) and hushed_git( "config", "user.email", $ENV{USER} . "@" . $hostname );
98 hushed_git( "config", "--get", "user.name" ) and hushed_git( "config", "user.name", "$ENV{USER} on $hostname" );
99}
100
101sub fingerprint {
102 my ($fp, $output) = ssh_fingerprint_file(shift);
103 # Do not print the output of $output to an untrusted destination.
104 die "does not seem to be a valid pubkey\n" unless $fp;
105 return $fp;
106}
107
108sub safe_stdin {
109 # read one line from STDIN
110 my $data;
111 my $ret = read STDIN, $data, 4096;
112 # current pubkeys are approx 400 bytes so we go a little overboard
113 die "could not read pubkey data" . ( defined($ret) ? "" : ": $!" ) . "\n" unless $ret;
114 die "pubkey data seems to have more than one line\n" if $data =~ /\n./;
115 return $data;
116}
117
118sub hushed_git {
119 local (*STDOUT) = \*STDOUT;
120 local (*STDERR) = \*STDERR;
121 open( STDOUT, ">", "/dev/null" );
122 open( STDERR, ">", "/dev/null" );
123 system( "git", @_ );
124}
125
126sub highlander {
127 # there can be only one
128 my ( $keyid, $die_if_empty, @a ) = @_;
129 # too many?
130 if ( @a > 1 ) {
131 print STDERR "
132more than one key satisfies this condition, and I can't deal with that!
133The keys are:
134
135";
136 print STDERR "\t" . join( "\n\t", @a ), "\n\n";
137 exit 1;
138 }
139 # too few?
140 die "no keys with " . ( $keyid || "empty" ) . " keyid found\n" if $die_if_empty and not @a;
141
142 return @a;
143}
144
145sub kf_add {
146 my ( $gl_user, $invited, $keyid, $keymaterial ) = @_;
147
148 # add a new "invited" key for $gl_user.
149 cd_temp_clone();
150 chdir("keydir");
151
152 mkdir("invited");
153 _print( "invited/$gl_user-invite-$invited\@$keyid.pub", $keymaterial );
154 hushed_git( "add", "." ) and die "git add failed\n";
155 my $fp = fingerprint("invited/$gl_user-invite-$invited\@$keyid.pub");
156 hushed_git( "commit", "-m", "invite add $gl_user-invite-$invited\@$keyid ($fp)" ) and die "git commit failed\n";
157 system("gitolite push >/dev/null 2>/dev/null") and die "git push failed\n";
158}
159
160sub kf_del {
161 my ( $gl_user, $invited, $keyid ) = @_;
162
163 cd_temp_clone();
164 chdir("keydir");
165
166 my @pk = highlander( $keyid, 1, grep { m(^(.*/)?(zzz-marked-for-...-)?$gl_user-invite-$invited\@$keyid.pub$) } @invited_keys );
167
168 my $fp = fingerprint( $pk[0] );
169 hushed_git( "rm", $pk[0]) and die "git mv failed\n";
170 hushed_git( "commit", "-m", "invite del $pk[0] ($fp)" ) and die "git commit failed\n";
171 system("gitolite push >/dev/null 2>/dev/null") and die "git push failed\n";
172}
diff --git a/flakes/mypackages/overlays/gitweb/default.nix b/flakes/mypackages/overlays/gitweb/default.nix
new file mode 100644
index 0000000..27a1152
--- /dev/null
+++ b/flakes/mypackages/overlays/gitweb/default.nix
@@ -0,0 +1,7 @@
1self: super: {
2 gitweb = super.gitweb.overrideAttrs(old: {
3 postBuild = old.postBuild or "" + ''
4 cp -r ${./theme} $out/gitweb-theme;
5 '';
6 });
7}
diff --git a/flakes/mypackages/overlays/gitweb/theme/git-favicon.png b/flakes/mypackages/overlays/gitweb/theme/git-favicon.png
new file mode 100644
index 0000000..4fa44bb
--- /dev/null
+++ b/flakes/mypackages/overlays/gitweb/theme/git-favicon.png
Binary files differ
diff --git a/flakes/mypackages/overlays/gitweb/theme/git-logo.png b/flakes/mypackages/overlays/gitweb/theme/git-logo.png
new file mode 100644
index 0000000..fdaf7b7
--- /dev/null
+++ b/flakes/mypackages/overlays/gitweb/theme/git-logo.png
Binary files differ
diff --git a/flakes/mypackages/overlays/gitweb/theme/gitweb.css b/flakes/mypackages/overlays/gitweb/theme/gitweb.css
new file mode 100644
index 0000000..83e0742
--- /dev/null
+++ b/flakes/mypackages/overlays/gitweb/theme/gitweb.css
@@ -0,0 +1,783 @@
1/* Reset
2------------------------------------------------------------------------- */
3
4/* Based on http://meyerweb.com/eric/tools/css/reset/ */
5/* v1.0 | 20080212 */
6
7html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
8blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em,
9font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b,
10u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table,
11caption, tbody, tfoot, thead, tr, th, td {
12 margin: 0;
13 padding: 0;
14 border: 0;
15 outline: 0;
16 font-size: 100%;
17 vertical-align: baseline;
18 background: transparent;
19}
20
21ol, ul { list-style: none; }
22
23blockquote, q { quotes: none; }
24
25blockquote:before, blockquote:after,
26q:before, q:after {
27 content: '';
28 content: none;
29}
30
31:focus { outline: 0; }
32
33ins { text-decoration: none; }
34
35del { text-decoration: line-through; }
36
37table {
38 border-collapse: collapse;
39 border-spacing: 0;
40}
41
42a { outline: none; }
43
44/* General
45---------------------------------------------------------------------------- */
46
47html {
48 position: relative;
49 min-height: 100%;
50}
51
52body {
53 font: 13px Helvetica,arial,freesans,clean,sans-serif;
54 line-height: 1.4;
55 margin: 0 0 105px;
56 background-color: #fff;
57 color: #000000;
58}
59
60/* Monospaced Fonts */
61.sha1, .mode, .diff_tree .list, .pre, .diff, .patchset {
62 font-family: 'Consolas','Bitstream Vera Sans Mono',monospace;
63}
64
65a:link, a:visited {
66 color: #4183C4;
67 text-decoration: none;
68}
69
70a:hover {
71 text-decoration: underline;
72}
73
74td.list a[href*='tree'], td.list a[href*='blob'] {
75 padding-left: 20px;
76 display: block;
77 float: left;
78 height: 16px;
79 line-height: 16px;
80}
81
82td.list a[href*='tree'] {
83 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;
84}
85
86td.list a[href*='blob'] {
87 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA6ElEQVQoFQXBMW5TQRgGwNnHnoE0QbiCjoIooUmTU3AuS1BwIoTSUdJBigg3GCWOg9/++zHTop078wIAsPMrE4SL5/1aIyMjIyMjz/m0tbFECFdrPeaQQw75mz/5nZH7fN7aWILmauSYfznmmIfss8vIUx7zZWsTTXM5vpWvTk5Wq9VHQP/gtgOLa0Qpw940vAQdaG6thpOhlOkG0AEuAVGmEkAH+G4YSikxXQM6wDsAMRFAB/ihDNNUmN4DOsAbBAEAdICfpmmaAt4COoj2GgCASbIkZh1NAACznhQt2itnFgAAlF3u/gMDtJXPzQxoswAAAABJRU5ErkJgggo=) center left no-repeat;
88}
89
90i {
91 font-style: normal;
92}
93
94td, th {
95 padding: 5px;
96}
97
98.page_nav br {
99 display: none;
100}
101
102/* Page Header
103---------------------------------------------------------------------------- */
104
105.page_header {
106 height: 50px;
107 line-height: 50px;
108 position: relative;
109 padding: 0 27px;
110 margin-bottom: 20px;
111 font-size: 20px;
112 font-family: Helvetica, Arial, Freesans, Clean, sans-serif;
113 background: #FFFFFF; /* old browsers */
114 background: -moz-linear-gradient(top, #FFFFFF 0%, #F5F5F5 100%); /* firefox */
115 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#FFFFFF), color-stop(100%,#F5F5F5)); /* webkit */
116 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFFFFF', endColorstr='#F5F5F5',GradientType=0 ); /* ie */
117 background: -o-linear-gradient(top, #FFFFFF 0%, #F5F5F5 100%);
118 border-bottom: 1px solid #dfdfdf;
119}
120
121.page_header a:link, .page_header a:visited {
122 color: #4183C4;
123 text-decoration: none;
124 padding: 3px;
125 font-weight: bold;
126}
127
128.page_header a:hover {
129 font-weight: bold;
130 padding: 3px;
131 text-decoration: underline;
132}
133
134.page_header a:first-child {
135 background: transparent;
136}
137
138.page_header img.logo {
139 position: relative;
140 top: 7px;
141 margin-right: 5px;
142}
143
144/* Page Footer
145---------------------------------------------------------------------------- */
146
147.page_footer {
148 position: absolute;
149 left: 0;
150 bottom: 0;
151 width: 100%;
152 height: 80px;
153 line-height: 80px;
154 margin-top: 15px;
155 background: #f1f1f1;
156 border-top: 2px solid #ddd;
157 border-bottom: 1px solid #ddd;
158}
159
160.page_footer_text {
161 color: #666;
162 display: inline;
163 float: left;
164 margin-left: 25px;
165 width: 80%;
166 overflow: hidden;
167 white-space: nowrap;
168 text-overflow: ellipsis;
169}
170
171a.rss_logo {
172 float: right;
173 padding: 3px 1px;
174 width: 35px;
175 line-height: 10px;
176 border: 1px solid;
177 border-color: #fcc7a5 #7d3302 #3e1a01 #ff954e;
178 color: #ffffff;
179 background-color: #ff6600;
180 font-weight: bold;
181 font-family: sans-serif;
182 font-size: 80%;
183 text-align: center;
184 text-decoration: none;
185 margin-top: 30px;
186 margin-left: 5px;
187}
188
189a.rss_logo:hover {
190 background-color: #ee5500;
191}
192
193.rss_logo {
194 margin-right: 25px;
195 background: yellow;
196}
197
198.rss_logo:last-child {
199 margin-right: 5px;
200}
201
202/* Index include
203---------------------------------------------------------------------------- */
204
205.index_include {
206 width: 95%;
207 margin: 0 auto 15px;
208 background: -moz-linear-gradient(center top , #FFFFFF 0%, #F5F5F5 100%) repeat scroll 0 0 transparent;
209 border: 1px solid #DFDFDF;
210 padding: 8px;
211 -webkit-box-sizing: border-box;
212 -moz-box-sizing: border-box;
213 box-sizing: border-box;
214}
215
216/* Elements
217---------------------------------------------------------------------------- */
218
219.project_list,
220.shortlog,
221.tree,
222.commit_search,
223.history {
224 width: 95%;
225 margin: 0 auto 15px auto;
226 border: 1px solid #d8d8d8;
227 -moz-box-shadow: 0 0 3px rgba(0,0,0,0.2);
228 -webkit-box-shadow: 0 0 3px rgba(0,0,0,0.2);
229 box-shadow: 0 0 3px rgba(0,0,0,0.2);
230}
231
232.project_list th,
233.shortlog th,
234.tree th,
235.commit_search th {
236 color: #afafaf;
237 font-weight: normal;
238}
239
240.project_list th {
241 font-weight: bold;
242}
243
244.project_list tr,
245.shortlog tr,
246.tree tr,
247.commit_search tr {
248 background: #eaeaea;
249 height: 2.5em;
250 text-align: left;
251 color: #545454;
252}
253
254.project_list tr.dark, .project_list tr.light,
255.shortlog tr.dark, .shortlog tr.light,
256.tree tr.dark, .tree tr.light,
257.commit_search tr.dark, .commit_search tr.light,
258.history tr.dark, .history tr.light,
259.heads tr.dark, .heads tr.light {
260 background: #F9F9F9; /* old browsers */
261 background: -moz-linear-gradient(top, #F9F9F9 0%, #EFEFEF 100%); /* firefox */
262 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F9F9F9), color-stop(100%,#EFEFEF)); /* webkit */
263 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F9F9F9', endColorstr='#EFEFEF',GradientType=0 ); /* ie */
264 background: -o-linear-gradient(top, #F9F9F9 0%, #EFEFEF 100%);
265 height: 2.5em;
266 border-bottom: 1px solid #e1e1e1;
267}
268
269th .header {
270 background: transparent;
271 border: 0;
272 padding: 0;
273 font-weight: bold;
274}
275
276.tree {
277 width: 100%;
278 margin: 0;
279}
280
281.projsearch {
282 position: absolute;
283 right: 4%;
284 top: 15px;
285}
286
287.projsearch a {
288 display: none;
289}
290
291.commit_search {
292 background: #eaeaea;
293}
294
295.page_nav,
296.list_head,
297.page_path,
298.search {
299 width: 94%;
300 background: #eaeaea;
301 color: #545454;
302 border: 1px solid #d8d8d8;
303 padding: 5px;
304 margin: 0 auto 15px auto;
305}
306
307.history {
308 background: #eaeaea;
309}
310
311.title {
312 margin: 0 auto 15px auto;
313 padding: 5px;
314 width: 95%;
315}
316
317.readme {
318 background: #eaf2f5;
319 border: 1px solid #bedce7;
320 -moz-box-sizing: border-box;
321 -webkit-box-sizing: border-box;
322 box-sizing: border-box;
323 margin: 0 auto 15px auto;
324 padding: 15px;
325 width: 95%;
326}
327
328.readme h1 {
329 display: block;
330 font-size: 2em;
331 font-weight: bold;
332 margin-bottom: 0.67em;
333 margin-top: 0;
334}
335
336.readme h2 {
337 font-size: 1.5em;
338 font-weight: bold;
339 margin-bottom: 0.83em;
340}
341
342
343.readme h3 {
344 font-size: 1.17em;
345 font-weight: bold;
346 margin-bottom: 1em;
347}
348
349.readme p {
350 margin-bottom: 1em;
351}
352
353.readme ul {
354 list-style: disc;
355 margin-bottom: 1em;
356 margin-left: 1.5em;
357}
358
359.readme ul ul {
360 margin-bottom: 0;
361}
362
363.readme ol {
364 list-style: decimal;
365 margin-bottom: 1em;
366 margin-left: 1.5em;
367}
368
369.readme ol ol {
370 margin-bottom: 0;
371}
372
373.readme pre {
374 font-family: monospace;
375 margin: 1em 0;
376 white-space: pre;
377}
378
379.readme tt, .readme code, .readme kbd, .readme samp {
380 font-family: monospace;
381}
382
383.readme blockquote {
384 margin: 1em;
385}
386
387.projects_list,
388.tags {
389 width: 95%;
390 background: #f0f0f0;
391 color: #545454;
392 border: 1px solid #d8d8d8;
393 padding: 5px;
394 margin: 0 auto 15px auto;
395}
396
397.heads {
398 width: 95%;
399 color: #545454;
400 border: 1px solid #d8d8d8;
401 padding: 5px;
402 margin: 0 auto 15px auto;
403}
404
405.header {
406 width: 94%;
407 margin: 0 auto 15px auto;
408 background: #eaf2f5;
409 border: 1px solid #bedce7;
410 padding: 5px;
411}
412
413.header .age {
414 float: left;
415 color: #000;
416 font-weight: bold;
417 width: 10em;
418}
419
420.title_text {
421 width: 94%;
422 background: #eaf2f5;
423 border: 1px solid #bedce7;
424 padding: 5px;
425 margin: 0 auto 0 auto;
426}
427
428.log_body {
429 width: 94%;
430 background: #eaf2f5;
431 border: 1px solid #bedce7;
432 border-top: 0;
433 padding: 5px;
434 margin: 0 auto 15px auto;
435}
436
437.page_body {
438 line-height: 1.4em;
439 width: 94%;
440 background: #f8f8f8;
441 border: 1px solid #d8d8d8;
442 padding: 5px;
443 margin: 15px auto 15px auto;
444}
445
446.diff_tree {
447 width: 95%;
448 background: #f0f0f0;
449 border: 1px solid #d8d8d8;
450 padding: 5px;
451 margin: 0 auto 15px auto;
452}
453
454.page_body > .list_head {
455 width: 98.5%;
456}
457
458.page_body > .diff_tree {
459 width: 99.5%;
460}
461
462.patch > .header {
463 width: 99%;
464}
465
466.author .avatar,
467.author_date .avatar {
468 position: relative;
469 top: 3px;
470}
471
472.object_header .avatar {
473 border: 1px solid #D8D8D8;
474 float: right;
475}
476
477.object_header td,
478.object_header th {
479 vertical-align: top;
480}
481
482/* Refs
483---------------------------------------------------------------------------- */
484
485span.refs span {
486 color: #707070;
487 display: inline-block;
488 margin: 0;
489 background-color: #eee;
490 border: 1px solid #ccc;
491 border-radius: 3px;
492 height: 18px;
493 padding: 0 6px;
494 text-overflow: ellipsis;
495}
496
497span.refs span.ref {
498 color: #707070;
499 display: inline-block;
500 margin: 0;
501 background-color: #c4c4ff;
502 border: 1px solid #7878ff;
503 border-radius: 3px;
504 height: 18px;
505 padding: 0 6px;
506 text-overflow: ellipsis;
507 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=);
508 background-repeat: no-repeat;
509 padding-left: 18px;
510}
511
512span.refs span.tag {
513 color: #707070;
514 display: inline-block;
515 margin: 0;
516 background-color: #ffffab;
517 border: 1px solid #d9d93b;
518 border-radius: 3px;
519 height: 18px;
520 padding: 0 6px;
521 text-overflow: ellipsis;
522 background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gIKFSUZZ+h9RwAAAGZQTFRFAAAAtrYkwMBAwMBAx8c4yso11NQ71NQ51dU52Ng71tY519c719c719c62Ng719c719c62Ng72dk62Ng62Ng72Ng72dk62Ng72Ng62dk62dk72dk62Ng62dk72Ng72Ng72dk7////ou/AnQAAACB0Uk5TAAYHCxESLjRCWWlqa4uNkpissbrO19jc3ufs8vf6/f7atAU2AAAAAWJLR0QhxGwNFgAAAF1JREFUGFeNy0cOgCAABVGw94rY5d//lC7omhhn+ZIh5Gf1xPk0Zi5dAABROIQjSU/fsAXhDkCUljAv8jW2wlQpaixpo4Nj+dtatVpjkSJjLNaizRVpvhBCu/4h391jzw1lU12Z7wAAAABJRU5ErkJggg==);
523 background-repeat: no-repeat;
524 padding-left: 18px;
525}
526
527span.refs span.head {
528 color: #707070;
529 display: inline-block;
530 margin: 0;
531 background-color: #c4ffc4;
532 border: 1px solid #78ff78;
533 border-radius: 3px;
534 height: 18px;
535 padding: 0 6px;
536 text-overflow: ellipsis;
537 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==);
538 background-repeat: no-repeat;
539 padding-left: 18px;
540}
541
542span.refs a {
543 color: #4e4e4e;
544 font: 11px "Bitstream Vera Sans Mono", "DejaVu Sans Mono", Monaco, monospace;
545 line-height: 18px;
546}
547
548/* Diffs
549---------------------------------------------------------------------------- */
550
551div.diff.to_file a.path,
552div.diff.to_file {
553 color: #007000;
554}
555
556div.diff.from_file a.path,
557div.diff.from_file {
558 color: #aa0000;
559}
560
561.patch .header {
562 margin: 0;
563}
564
565.patchset {
566 overflow-x: auto;
567 overflow-y: hidden;
568}
569
570.chunk_header {
571 background: #eaf2f5;
572 color: #999;
573}
574
575.rem {
576 background: #ffdddd;
577}
578.rem .marked {
579 background: #ffaaaa;
580}
581.add {
582 background: #ddffdd;
583}
584.add .marked {
585 background: #7dff7d;
586}
587
588.extended_header {
589 width: 99.5%;
590}
591
592div.chunk_block {
593 overflow: hidden;
594}
595
596div.chunk_block div.old {
597 float: left;
598 width: 50%;
599 overflow: hidden;
600 border-right: 5px solid #EAF2F5;
601}
602
603div.chunk_block.rem,
604div.chunk_block.add {
605 background: transparent;
606}
607
608div.chunk_block div.old .add,
609div.chunk_block div.old .rem {
610 padding-right: 3px;
611}
612
613div.chunk_block div.new .add,
614div.chunk_block div.new .rem {
615 padding-left: 3px;
616}
617
618div.chunk_block div.new {
619 margin-left: 50%;
620 width: 50%;
621 border-left: 5px solid #EAF2F5;
622}
623
624/* Category
625---------------------------------------------------------------------------- */
626
627td.category {
628 background: #E6F1F6; /* old browsers */
629 background: -moz-linear-gradient(top, #C8D8E7 0%, #E6F1F3 100%); /* firefox */
630 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C8D8E7), color-stop(100%,#E6F1F3)); /* webkit */
631 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#C8D8E7', endColorstr='#E6F1F3',GradientType=0 ); /* ie */
632 background: -o-linear-gradient(top, #C8D8E7 0%, #E6F1F3 100%);
633 font-weight: bold;
634 border-bottom: 1px solid #D1D1D1;
635 border-top: 1px solid #D1D1D1;
636}
637
638/* Age
639---------------------------------------------------------------------------- */
640
641/* noage: "No commits" */
642.project_list td.noage {
643 color: #cdcdcd;
644}
645
646/* age2: 60*60*24*2 <= age */
647.project_list td.age2, .blame td.age2 {
648 color: #545454;
649}
650
651/* age1: 60*60*2 <= age < 60*60*24*2 */
652.project_list td.age1 {
653 color: #009900;
654}
655
656/* age0: age < 60*60*2 */
657.project_list td.age0 {
658 color: #009900;
659 font-weight: bold;
660}
661
662/* File status
663---------------------------------------------------------------------------- */
664
665.diff_tree span.file_status.new {
666 color: #008000;
667}
668
669table.diff_tree span.file_status.deleted {
670 color: #c00000;
671}
672
673table.diff_tree span.file_status.moved,
674table.diff_tree span.file_status.mode_chnge {
675 color: #545454;
676}
677
678table.diff_tree span.file_status.copied {
679 color: #70a070;
680}
681
682span.cntrl {
683 border: dashed #aaaaaa;
684 border-width: 1px;
685 padding: 0px 2px 0px 2px;
686 margin: 0px 2px 0px 2px;
687}
688
689span.match {
690 background: #aaffaa;
691 color: #000;
692}
693
694td.error {
695 color: red;
696 background: yellow;
697}
698
699/* blob view */
700
701td.pre, div.pre, div.diff {
702 white-space: pre-wrap;
703}
704
705/* JavaScript-based timezone manipulation */
706
707.popup { /* timezone selection UI */
708 position: absolute;
709 /* "top: 0; right: 0;" would be better, if not for bugs in browsers */
710 top: 0; left: 0;
711 border: 1px solid #d8d8d8;
712 padding: 2px;
713 background-color: #f0f0f0;
714 font-style: normal;
715 color: #545454;
716 cursor: auto;
717}
718
719.close-button { /* close timezone selection UI without selecting */
720 /* float doesn't work within absolutely positioned container,
721 * if width of container is not set explicitly */
722 /* float: right; */
723 position: absolute;
724 top: 0px; right: 0px;
725 border: 1px solid #ffaaaa;
726 margin: 1px 1px 1px 1px;
727 padding-bottom: 2px;
728 width: 12px;
729 height: 10px;
730 font-size: 9px;
731 font-weight: bold;
732 text-align: center;
733 background-color: #ffdddd;
734 cursor: pointer;
735}
736
737/* Style definition generated by highlight 2.4.5, http://www.andre-simon.de/ */
738
739/* Highlighting theme definition: */
740
741.num { color:#6ecf36; }
742.esc { color:#ff00ff; }
743.str { color:#ff00d3; background-color: #edc9ec }
744.dstr { color:#818100; }
745.slc { color:#838183; font-style:italic; }
746.com { color:#838183; font-style:italic; }
747.dir { color:#008200; }
748.sym { color:#000000; }
749.line { color:#555555; }
750.kwa { color:#666666; font-weight:bold; }
751.kwb { color:#6b3099; }
752.kwc { color:#d4663d; }
753.kwd { color:#2928ff; }
754
755/**** Styles supplémentaires *****/
756
757.readme div.toc {
758 float: right;
759 border: 1px solid black;
760 background-color: white;
761}
762.readme div.toc span.toctitle {
763 display: inline-block;
764 width: 100%;
765 text-align: center;
766 font-weight: bold;
767}
768
769.readme table {
770 background-color: white;
771}
772
773.readme table thead tr {
774 background-color: #ccc;
775}
776
777.readme table tbody tr:nth-child(2n) {
778 background-color: #f8f8f8;
779}
780
781.readme table td, .readme table th {
782 border: 1px solid black;
783}
diff --git a/flakes/mypackages/overlays/gitweb/theme/gitweb.js b/flakes/mypackages/overlays/gitweb/theme/gitweb.js
new file mode 100644
index 0000000..72f3cfa
--- /dev/null
+++ b/flakes/mypackages/overlays/gitweb/theme/gitweb.js
@@ -0,0 +1,27 @@
1function include(filename, onload) {
2 var head = document.getElementsByTagName('head')[0];
3 var script = document.createElement('script');
4 script.src = filename;
5 script.type = 'text/javascript';
6 script.onload = script.onreadystatechange = function() {
7 if (script.readyState) {
8 if (script.readyState === 'complete' || script.readyState === 'loaded') {
9 script.onreadystatechange = null;
10 onload();
11 }
12 }
13 else {
14 onload();
15 }
16 }
17 head.appendChild(script);
18}
19
20include('static/gitweb.js', function() {});
21include('//code.jquery.com/jquery-3.1.0.min.js', function() {
22 $("div.title").each(function(index, element) {
23 if ($(element).text() === "readme" || $(element).text() === " ") {
24 $(element).hide();
25 }
26 });
27});
diff --git a/flakes/mypackages/overlays/goaccess/default.nix b/flakes/mypackages/overlays/goaccess/default.nix
new file mode 100644
index 0000000..6b9758b
--- /dev/null
+++ b/flakes/mypackages/overlays/goaccess/default.nix
@@ -0,0 +1,13 @@
1self: super: {
2 goaccess = super.goaccess.overrideAttrs(old: rec {
3 name = "goaccess-${version}";
4 version = "1.4";
5 src = self.fetchurl {
6 url = "https://tar.goaccess.io/${name}.tar.gz";
7 sha256 = "1gkpjg39f3afdwm9128jqjsfap07p8s027czzlnxfmi5hpzvkyz8";
8 };
9 configureFlags = old.configureFlags ++ [ "--enable-tcb=btree" ];
10 buildInputs = old.buildInputs ++ [ self.tokyocabinet self.bzip2 ];
11 });
12
13}
diff --git a/flakes/mypackages/overlays/kanboard/default.nix b/flakes/mypackages/overlays/kanboard/default.nix
new file mode 100644
index 0000000..2a0d41b
--- /dev/null
+++ b/flakes/mypackages/overlays/kanboard/default.nix
@@ -0,0 +1,19 @@
1self: super: {
2 kanboard = self.stdenv.mkDerivation rec {
3 name = "kanboard-${version}";
4 version = "1.2.21";
5 src = self.fetchFromGitHub {
6 owner = "kanboard";
7 repo = "kanboard";
8 rev = "ee18479b7e019e6415d7b095da629932ee1b3fd5";
9 sha256 = "00pnpq5qgxpb2f9la58ycvx5kx3pmcvpssh6lwgpcdk04yciw8nh";
10 };
11
12 dontBuild = true;
13
14 installPhase = ''
15 cp -a . $out
16 mv $out/data $out/dataold
17 '';
18 };
19}
diff --git a/flakes/mypackages/overlays/morph/default.nix b/flakes/mypackages/overlays/morph/default.nix
new file mode 100644
index 0000000..b316d70
--- /dev/null
+++ b/flakes/mypackages/overlays/morph/default.nix
@@ -0,0 +1,27 @@
1self: super: {
2 morph = super.morph.overrideAttrs(old: rec {
3 version = "1.6.0-30-g5b85237";
4 src = self.fetchFromGitHub {
5 owner = "dbcdk";
6 repo = "morph";
7 rev = "5b852370d8054a895b5ba79b5ef017c3afbb3a3c";
8 sha256 = "166dwibbpb90bdy8dvhlinh6gc509f8pq8wn345h01pilf7fc8fh";
9 };
10
11 ldflags = [
12 "-X main.version=${version}"
13 ];
14 preBuild = ''
15 ldflags+=" -X main.assetRoot=$lib"
16 '';
17 postInstall = ''
18 mkdir -p $lib
19 cp -v ./data/*.nix $lib
20 '';
21
22 outputs = [ "out" "lib" ];
23 vendorSha256 = "08zzp0h4c4i5hk4whz06a3da7qjms6lr36596vxz0d8q0n7rspr9";
24
25 patches = (old.patches or []) ++ [ ./dry-run.patch ];
26 });
27}
diff --git a/flakes/mypackages/overlays/morph/dry-run.patch b/flakes/mypackages/overlays/morph/dry-run.patch
new file mode 100644
index 0000000..2ff099e
--- /dev/null
+++ b/flakes/mypackages/overlays/morph/dry-run.patch
@@ -0,0 +1,59 @@
1diff --git a/morph.go b/morph.go
2index a88414b..e5894df 100644
3--- a/morph.go
4+++ b/morph.go
5@@ -542,6 +542,7 @@ func getNixContext() *nix.NixContext {
6 return &nix.NixContext{
7 EvalMachines: filepath.Join(assetRoot, assets.Friendly, "eval-machines.nix"),
8 ShowTrace: showTrace,
9+ DryRun: *dryRun,
10 KeepGCRoot: *keepGCRoot,
11 AllowBuildShell: *allowBuildShell,
12 }
13@@ -574,8 +575,10 @@ func buildHosts(hosts []nix.Host) (resultPath string, err error) {
14 return
15 }
16
17- fmt.Fprintln(os.Stderr, "nix result path: ")
18- fmt.Println(resultPath)
19+ if resultPath != "" {
20+ fmt.Fprintln(os.Stderr, "nix result path: ")
21+ fmt.Println(resultPath)
22+ }
23 return
24 }
25
26diff --git a/nix/nix.go b/nix/nix.go
27index 6a9cfd5..0f7884b 100644
28--- a/nix/nix.go
29+++ b/nix/nix.go
30@@ -49,6 +49,7 @@ type Deployment struct {
31 type NixContext struct {
32 EvalMachines string
33 ShowTrace bool
34+ DryRun bool
35 KeepGCRoot bool
36 AllowBuildShell bool
37 }
38@@ -269,6 +270,10 @@ func (ctx *NixContext) BuildMachines(deploymentPath string, hosts []Host, nixArg
39 args = append(args, "--show-trace")
40 }
41
42+ if ctx.DryRun {
43+ args = append(args, "--dry-run")
44+ }
45+
46 if nixBuildTargets != "" {
47 args = append(args,
48 "--arg", "buildTargets", nixBuildTargets)
49@@ -308,6 +313,10 @@ func (ctx *NixContext) BuildMachines(deploymentPath string, hosts []Host, nixArg
50 return resultPath, errors.New(errorMessage)
51 }
52
53+ if ctx.DryRun {
54+ return "", err
55+ }
56+
57 resultPath, err = os.Readlink(resultLinkPath)
58 if err != nil {
59 return "", err
diff --git a/flakes/mypackages/overlays/morph/verbose_nix.patch b/flakes/mypackages/overlays/morph/verbose_nix.patch
new file mode 100644
index 0000000..389a79c
--- /dev/null
+++ b/flakes/mypackages/overlays/morph/verbose_nix.patch
@@ -0,0 +1,12 @@
1diff --git a/nix/nix.go b/nix/nix.go
2index bb63870..7fe04aa 100644
3--- a/nix/nix.go
4+++ b/nix/nix.go
5@@ -347,6 +347,7 @@ func Push(ctx *ssh.SSHContext, host Host, paths ...string) (err error) {
6 options := mkOptions(host)
7 for _, path := range paths {
8 args := []string{
9+ "-v",
10 "copy",
11 path,
12 "--to", "ssh://" + userArg + host.TargetHost + keyArg,
diff --git a/flakes/mypackages/overlays/php-packages/mysqli_patch.patch b/flakes/mypackages/overlays/php-packages/mysqli_patch.patch
new file mode 100644
index 0000000..a8f03e3
--- /dev/null
+++ b/flakes/mypackages/overlays/php-packages/mysqli_patch.patch
@@ -0,0 +1,11 @@
1--- a/ext/mysqli/mysqli_nonapi.c
2+++ b/ext/mysqli/mysqli_nonapi.c
3@@ -263,7 +263,7 @@ void mysqli_common_connect(INTERNAL_FUNC
4 php_mysqli_set_error(mysql_errno(mysql->mysql), (char *) mysql_error(mysql->mysql));
5
6 #if !defined(MYSQLI_USE_MYSQLND)
7- mysql->mysql->reconnect = MyG(reconnect);
8+ mysql_options(mysql->mysql, MYSQL_OPT_RECONNECT, (my_bool *)&MyG(reconnect));
9 #endif
10
11 mysql_options(mysql->mysql, MYSQL_OPT_LOCAL_INFILE, (char *)&MyG(allow_local_infile));
diff --git a/flakes/mypackages/overlays/postfix/default.nix b/flakes/mypackages/overlays/postfix/default.nix
new file mode 100644
index 0000000..c77e4cf
--- /dev/null
+++ b/flakes/mypackages/overlays/postfix/default.nix
@@ -0,0 +1,3 @@
1self: super: {
2 postfix = super.postfix.override { withMySQL = true; withPgSQL = true; };
3}
diff --git a/flakes/mypackages/overlays/taskwarrior/TW-1778_patch.diff b/flakes/mypackages/overlays/taskwarrior/TW-1778_patch.diff
new file mode 100644
index 0000000..6d7e376
--- /dev/null
+++ b/flakes/mypackages/overlays/taskwarrior/TW-1778_patch.diff
@@ -0,0 +1,12 @@
1--- a/src/text.cpp 2016-02-24 23:18:11.000000000 +0100
2+++ b/src/text.cpp 2020-02-26 18:53:15.869331031 +0100
3@@ -248,7 +248,7 @@
4 // Premature EOL.
5 if (character == '\n')
6 {
7- line = text.substr (offset, line_length);
8+ line = text.substr (offset, prior_cursor-offset);
9 offset = cursor;
10 return true;
11 }
12
diff --git a/flakes/mypackages/overlays/taskwarrior/default.nix b/flakes/mypackages/overlays/taskwarrior/default.nix
new file mode 100644
index 0000000..9ca52b8
--- /dev/null
+++ b/flakes/mypackages/overlays/taskwarrior/default.nix
@@ -0,0 +1,16 @@
1self: super:
2{
3 taskwarrior = super.taskwarrior.overrideAttrs (old: {
4 patches = old.patches or [] ++ [
5 ./TW-1778_patch.diff
6 ];
7 postInstall = ''${old.postInstall}
8 mkdir -p "$out/share/vim/vimfiles/ftdetect"
9 mkdir -p "$out/share/vim/vimfiles/syntax"
10 ln -s "../../../../share/doc/task/scripts/vim/ftdetect/task.vim" "$out/share/vim/vimfiles/ftdetect/"
11 ln -s "../../../../share/doc/task/scripts/vim/syntax/taskrc.vim" "$out/share/vim/vimfiles/syntax/"
12 ln -s "../../../../share/doc/task/scripts/vim/syntax/taskdata.vim" "$out/share/vim/vimfiles/syntax/"
13 ln -s "../../../../share/doc/task/scripts/vim/syntax/taskedit.vim" "$out/share/vim/vimfiles/syntax/"
14 '';
15 });
16}
diff --git a/flakes/mypackages/overlays/ympd/default.nix b/flakes/mypackages/overlays/ympd/default.nix
new file mode 100644
index 0000000..648403f
--- /dev/null
+++ b/flakes/mypackages/overlays/ympd/default.nix
@@ -0,0 +1,14 @@
1self: super: {
2 ympd = super.ympd.overrideAttrs(old: {
3 pname = "ympd";
4 version = "612f8fc-master";
5 src = self.fetchFromGitHub {
6 owner = "notandy";
7 repo = "ympd";
8 rev = "612f8fc0b2c47fc89d403e4a044541c6b2b238c8";
9 sha256 = "01hnj10zl103mrn82vyd42fvq7w5az3jf1qz18889zv67kn73ll9";
10 fetchSubmodules = true;
11 };
12 patches = (old.patches or []) ++ [ ./ympd-password-env.patch ];
13 });
14}
diff --git a/flakes/mypackages/overlays/ympd/ympd-password-env.patch b/flakes/mypackages/overlays/ympd/ympd-password-env.patch
new file mode 100644
index 0000000..2bbe188
--- /dev/null
+++ b/flakes/mypackages/overlays/ympd/ympd-password-env.patch
@@ -0,0 +1,23 @@
1diff --git a/src/ympd.c b/src/ympd.c
2index 3aed7e6..b3b6fda 100644
3--- a/src/ympd.c
4+++ b/src/ympd.c
5@@ -71,6 +71,7 @@ int main(int argc, char **argv)
6 char *run_as_user = NULL;
7 char const *error_msg = NULL;
8 char *webport = "8080";
9+ const char *s;
10
11 atexit(bye);
12 #ifdef WITH_DYNAMIC_ASSETS
13@@ -92,6 +93,10 @@ int main(int argc, char **argv)
14 {0, 0, 0, 0 }
15 };
16
17+ if ((s = getenv("MPD_PASSWORD")) != NULL) {
18+ mpd.password = strdup(s);
19+ }
20+
21 while((n = getopt_long(argc, argv, "h:p:w:u:vm:",
22 long_options, &option_index)) != -1) {
23 switch (n) {
diff --git a/flakes/mypackages/pkgs/bash-libs/default.nix b/flakes/mypackages/pkgs/bash-libs/default.nix
new file mode 100644
index 0000000..991c9d2
--- /dev/null
+++ b/flakes/mypackages/pkgs/bash-libs/default.nix
@@ -0,0 +1,33 @@
1{ lib, stdenv, fetchFromGitHub, makeWrapper, shellcheck, bashInteractive, coreutils, gnugrep, gawk, file, aspell, util-linux, gnused }:
2stdenv.mkDerivation {
3 pname = "bash-libs";
4 version = "master";
5 src = fetchFromGitHub {
6 owner = "foopgp";
7 repo = "bash-libs";
8 rev = "4bf7fe3a488f55beecc74b76e0daf24244bd824f";
9 sha256 = "sha256-8AHUXPd1dQpo1Ce9MT4++eFhJT3X8SYtgaIKbPFUYjM=";
10 };
11
12 buildInputs = [ shellcheck makeWrapper bashInteractive ];
13 phases = [ "checkPhase" "installPhase" ];
14 checkPhase = ''
15 shellcheck bin/*
16 '';
17 installPhase =
18 let binPath = lib.makeBinPath [
19 coreutils file aspell util-linux gnused gnugrep gawk
20 ];
21 in ''
22 mkdir -p $out/bin $out/nix-support $out/share/doc/bash-libs $out/share/bash-libs/include
23
24 for i in $src/bin/*; do
25 name=$(basename $i)
26 cp "$i" $out/share/bash-libs/include
27 patchShebangs $out/share/bash-libs/include/$name
28 makeWrapper $out/share/bash-libs/include/$name $out/bin/$name --set PATH ${binPath}
29 done
30 echo "${binPath}" > $out/nix-support/propagated-build-inputs
31 cp $src/man/* $out/share/doc/bash-libs
32 '';
33}
diff --git a/flakes/mypackages/pkgs/boinctui/default.nix b/flakes/mypackages/pkgs/boinctui/default.nix
new file mode 100644
index 0000000..565840c
--- /dev/null
+++ b/flakes/mypackages/pkgs/boinctui/default.nix
@@ -0,0 +1,21 @@
1{ stdenv, fetchurl, expat, openssl, autoconf269, ncurses }:
2stdenv.mkDerivation rec {
3 name = "boinctui-${version}";
4 version = "2.6.0";
5 src = fetchurl {
6 url = "http://sourceforge.net/projects/boinctui/files/boinctui_${version}.tar.gz";
7 sha256 = "1c6hc4x28z8hjncxcwxhb0r3980f72i6480569a0hd9y7vcgf3d0";
8 };
9
10 configureFlags = [ "--without-gnutls" ];
11 preConfigure = ''
12 autoconf
13 '';
14
15 makeFlags = [ "DESTDIR=$(out)" ];
16 preBuild = ''
17 sed -i -e 's/"HOME"/"XDG_CONFIG_HOME"/' src/cfg.cpp
18 sed -i -e 's@\.boinctui\.cfg@boinctui/boinctui.cfg@' src/mainprog.cpp
19 '';
20 buildInputs = [ expat openssl autoconf269 ncurses ];
21}
diff --git a/flakes/mypackages/pkgs/cnagios/default.nix b/flakes/mypackages/pkgs/cnagios/default.nix
new file mode 100644
index 0000000..2b8b0da
--- /dev/null
+++ b/flakes/mypackages/pkgs/cnagios/default.nix
@@ -0,0 +1,32 @@
1{ stdenv, fetchFromGitHub, perl, ncurses }:
2stdenv.mkDerivation (rec {
3 version = "3bd27fb-master";
4 pname = "cnagios";
5 name = "${pname}-${version}";
6 src = fetchFromGitHub {
7 owner = "dannywarren";
8 repo = "cnagios";
9 rev = "3bd27fb40e68f61ffd01bea6234b919a667b6fe4";
10 sha256 = "0iy5pmlcz6y3if72nav22xqxniiv1v8ywi0927m6s459hkw5n2rb";
11 fetchSubmodules = true;
12 };
13 configureFlags = [
14 "--with-etc-dir=/etc/cnagios"
15 "--with-var-dir=/var/lib/naemon"
16 "--with-status-file=/var/lib/naemon/status.dat"
17 "--with-nagios-data=4"
18 ];
19
20 prePatch = ''
21 sed -i -e "s/-lcurses/-lncurses/" Makefile.in
22 '';
23 installPhase = ''
24 install -dm755 $out/share/doc/cnagios
25 install -Dm644 cnagiosrc $out/share/doc/cnagios/
26 install -Dm644 cnagios.help $out/share/doc/cnagios/
27 install -Dm644 cnagios.pl $out/share/doc/cnagios/
28 install -dm755 $out/bin
29 install -Dm755 cnagios $out/bin/
30 '';
31 buildInputs = [ perl ncurses ];
32})
diff --git a/flakes/mypackages/pkgs/commento/default.nix b/flakes/mypackages/pkgs/commento/default.nix
new file mode 100644
index 0000000..6361583
--- /dev/null
+++ b/flakes/mypackages/pkgs/commento/default.nix
@@ -0,0 +1,20 @@
1{ stdenv, fetchurl, patchelfUnstable, autoPatchelfHook }:
2stdenv.mkDerivation rec {
3 pname = "commento";
4 version = "v1.8.0";
5 name = "${pname}-${version}";
6 src = fetchurl {
7 url = "https://dl.commento.io/release/${name}-linux-glibc-amd64.tar.gz";
8 sha256 = "1j88b16hdx3i8nsq56581cscij65slgbsa6yfj73ybbg1585axxs";
9 };
10 phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
11 unpackPhase = ''
12 tar --one-top-level=${name} -xf "$src"
13 '';
14 installPhase = ''
15 cp -a ${name} $out
16 '';
17 postFixup = ''
18 ${patchelfUnstable}/bin/patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/commento
19 '';
20}
diff --git a/flakes/mypackages/pkgs/composer-env/default.nix b/flakes/mypackages/pkgs/composer-env/default.nix
new file mode 100644
index 0000000..772ed73
--- /dev/null
+++ b/flakes/mypackages/pkgs/composer-env/default.nix
@@ -0,0 +1,243 @@
1# This file originates from composer2nix
2
3{ stdenv, lib, writeTextFile, fetchurl, php, unzip, composer ? php.packages.composer }:
4
5let
6 buildZipPackage = { name, src }:
7 stdenv.mkDerivation {
8 inherit name src;
9 buildInputs = [ unzip ];
10 buildCommand = ''
11 unzip $src
12 baseDir=$(find . -type d -mindepth 1 -maxdepth 1)
13 cd $baseDir
14 mkdir -p $out
15 mv * $out
16 '';
17 };
18
19 buildPackage =
20 { name
21 , src
22 , packages ? {}
23 , devPackages ? {}
24 , buildInputs ? []
25 , symlinkDependencies ? false
26 , executable ? false
27 , removeComposerArtifacts ? false
28 , postInstall ? ""
29 , preInstall ? ""
30 , noDev ? false
31 , unpackPhase ? "true"
32 , buildPhase ? "true"
33 , doRemoveVendor ? true
34 , ...}@args:
35
36 let
37 reconstructInstalled = writeTextFile {
38 name = "reconstructinstalled.php";
39 executable = true;
40 text = ''
41 #! ${php}/bin/php
42 <?php
43 if(file_exists($argv[1]))
44 {
45 $composerLockStr = file_get_contents($argv[1]);
46
47 if($composerLockStr === false)
48 {
49 fwrite(STDERR, "Cannot open composer.lock contents\n");
50 exit(1);
51 }
52 else
53 {
54 $config = json_decode($composerLockStr, true);
55
56 if(array_key_exists("packages", $config))
57 $allPackages = $config["packages"];
58 else
59 $allPackages = array();
60
61 ${lib.optionalString (!noDev) ''
62 if(array_key_exists("packages-dev", $config))
63 $allPackages = array_merge($allPackages, $config["packages-dev"]);
64 ''}
65
66 $packagesStr = json_encode($allPackages, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
67 print($packagesStr);
68 }
69 }
70 else
71 print("[]");
72 ?>
73 '';
74 };
75
76 constructBin = writeTextFile {
77 name = "constructbin.php";
78 executable = true;
79 text = ''
80 #! ${php}/bin/php
81 <?php
82 $composerJSONStr = file_get_contents($argv[1]);
83
84 if($composerJSONStr === false)
85 {
86 fwrite(STDERR, "Cannot open composer.json contents\n");
87 exit(1);
88 }
89 else
90 {
91 $config = json_decode($composerJSONStr, true);
92
93 if(array_key_exists("bin-dir", $config))
94 $binDir = $config["bin-dir"];
95 else
96 $binDir = "bin";
97
98 if(array_key_exists("bin", $config))
99 {
100 if(!file_exists("vendor/".$binDir))
101 mkdir("vendor/".$binDir);
102
103 foreach($config["bin"] as $bin)
104 symlink("../../".$bin, "vendor/".$binDir."/".basename($bin));
105 }
106 }
107 ?>
108 '';
109 };
110
111 bundleDependencies = dependencies:
112 lib.concatMapStrings (dependencyName:
113 let
114 dependency = dependencies.${dependencyName};
115 in
116 ''
117 ${if dependency.targetDir == "" then ''
118 vendorDir="$(dirname ${dependencyName})"
119 mkdir -p "$vendorDir"
120 ${if symlinkDependencies then
121 ''ln -s "${dependency.src}" "$vendorDir/$(basename "${dependencyName}")"''
122 else
123 ''cp -a "${dependency.src}" "$vendorDir/$(basename "${dependencyName}")"''
124 }${if dependency.needsModifyRights or false then "\n" + ''
125 chmod -R u+rwx "$vendorDir/$(basename "${dependencyName}")"
126 '' else ""}
127 '' else ''
128 namespaceDir="${dependencyName}/$(dirname "${dependency.targetDir}")"
129 mkdir -p "$namespaceDir"
130 ${if symlinkDependencies then
131 ''ln -s "${dependency.src}" "$namespaceDir/$(basename "${dependency.targetDir}")"''
132 else
133 ''cp -a "${dependency.src}" "$namespaceDir/$(basename "${dependency.targetDir}")"''
134 }${if dependency.needsModifyRights or false then "\n" + ''
135 chmod -R u+rwx "$namespaceDir/$(basename "${dependency.targetDir}")"
136 '' else ""}
137 ''}
138 '') (builtins.attrNames dependencies);
139
140 extraArgs = removeAttrs args [ "name" "packages" "devPackages" "buildInputs" ];
141 in
142 stdenv.mkDerivation ({
143 name = "composer-${name}";
144 buildInputs = [ php composer ] ++ buildInputs;
145
146 inherit unpackPhase buildPhase;
147
148 installPhase = ''
149 ${if executable then ''
150 mkdir -p $out/share/php
151 cp -a $src $out/share/php/$name
152 chmod -R u+w $out/share/php/$name
153 cd $out/share/php/$name
154 '' else ''
155 cp -a $src $out
156 chmod -R u+w $out
157 cd $out
158 ''}
159
160 # Execute pre install hook
161 runHook preInstall
162
163 # Remove unwanted files
164 rm -f *.nix
165
166 export HOME=$TMPDIR
167
168 ${if doRemoveVendor then ''
169 # Remove the provided vendor folder if it exists
170 rm -Rf vendor
171 '' else ""}
172 # If there is no composer.lock file, compose a dummy file.
173 # Otherwise, composer attempts to download the package.json file from
174 # the registry which we do not want.
175 if [ ! -f composer.lock ]
176 then
177 cat > composer.lock <<EOF
178 {
179 "packages": []
180 }
181 EOF
182 fi
183
184 # Reconstruct the installed.json file from the lock file
185 mkdir -p vendor/composer
186 ${reconstructInstalled} composer.lock > vendor/composer/installed.json
187
188 # Copy or symlink the provided dependencies
189 cd vendor
190 ${bundleDependencies packages}
191 ${lib.optionalString (!noDev) (bundleDependencies devPackages)}
192 cd ..
193
194 # Reconstruct autoload scripts
195 # We use the optimize feature because Nix packages cannot change after they have been built
196 # Using the dynamic loader for a Nix package is useless since there is nothing to dynamically reload.
197 composer dump-autoload --optimize ${lib.optionalString noDev "--no-dev"}
198
199 # Run the install step as a validation to confirm that everything works out as expected
200 composer install --optimize-autoloader ${lib.optionalString noDev "--no-dev"}
201
202 ${lib.optionalString executable ''
203 # Reconstruct the bin/ folder if we deploy an executable project
204 ${constructBin} composer.json
205 ln -s $(pwd)/vendor/bin $out/bin
206 ''}
207
208 ${lib.optionalString (!symlinkDependencies) ''
209 # Patch the shebangs if possible
210 if [ -d $(pwd)/vendor/bin ]
211 then
212 # Look for all executables in bin/
213 for i in $(pwd)/vendor/bin/*
214 do
215 # Look for their location
216 realFile=$(readlink -f "$i")
217
218 # Restore write permissions
219 chmod u+wx "$(dirname "$realFile")"
220 chmod u+w "$realFile"
221
222 # Patch shebang
223 sed -e "s|#!/usr/bin/php|#!${php}/bin/php|" \
224 -e "s|#!/usr/bin/env php|#!${php}/bin/php|" \
225 "$realFile" > tmp
226 mv tmp "$realFile"
227 chmod u+x "$realFile"
228 done
229 fi
230 ''}
231
232 if [ "$removeComposerArtifacts" = "1" ]
233 then
234 # Remove composer stuff
235 rm -f composer.json composer.lock
236 fi
237
238 # Execute post install hook
239 runHook postInstall
240 '';
241 } // extraArgs);
242in
243{ inherit composer buildZipPackage buildPackage; }
diff --git a/flakes/mypackages/pkgs/crypto/cardano-cli/default.nix b/flakes/mypackages/pkgs/crypto/cardano-cli/default.nix
new file mode 100644
index 0000000..3cd5a4c
--- /dev/null
+++ b/flakes/mypackages/pkgs/crypto/cardano-cli/default.nix
@@ -0,0 +1,16 @@
1{ rustPlatform, fetchFromGitHub }:
2rustPlatform.buildRustPackage rec {
3 name = "cardano-cli-${version}";
4 version = "master";
5
6 src = fetchFromGitHub {
7 owner = "input-output-hk";
8 repo = "cardano-cli";
9 rev = "ed064d5a3b96c23b52bb20ca49da9cb8764a2e0f";
10 sha256 = "07y5ssar6aq93snrvmapk05zmym4w23ydvjn2njp8saxk23ivqsg";
11 fetchSubmodules = true;
12 };
13
14 cargoSha256 = "0j68dsqahvgpa9ms62149530lbfa55lmpd56rgdxkrh2z32lshs8";
15 verifyCargoDeps = true;
16}
diff --git a/flakes/mypackages/pkgs/crypto/cardano/default.nix b/flakes/mypackages/pkgs/crypto/cardano/default.nix
new file mode 100644
index 0000000..8e3c83f
--- /dev/null
+++ b/flakes/mypackages/pkgs/crypto/cardano/default.nix
@@ -0,0 +1,35 @@
1{ stdenv, fetchFromGitHub }:
2let
3 src = fetchFromGitHub {
4 owner = "input-output-hk";
5 repo = "daedalus";
6 rev = "998fd3189c9a54fac496dfef7a6224714c67bc80";
7 sha256 = "1r3gwfv6hn7lzp4h2s6849m7x12nxadsql358ss615krvdlnb6rr";
8 fetchSubmodules = true;
9 };
10 daedalusOrig = (import src {}).daedalus;
11 cfg = stdenv.mkDerivation rec {
12 name = "launcher-config-custom";
13 buildInputs = [ src daedalusOrig.cfg ];
14 src = daedalusOrig.cfg;
15 installPhase = ''
16 cp -a $src $out
17 chmod -R u+w $out
18 cd $out/etc
19 sed -e "/^walletPath/d" -e "/^walletArgs/d" launcher-config.yaml > launcher-config-server-only.yaml
20 '';
21 };
22in
23stdenv.mkDerivation rec {
24 name = "daedalus-custom";
25 src = daedalusOrig;
26 buildInputs = [ cfg daedalusOrig ];
27 installPhase = ''
28 cp -a $src $out
29 chmod -R u+w $out
30 cd $out/bin
31 sed -i -e "s@${builtins.storeDir}/[0-9a-z]*-daedalus-config@${cfg}/etc@" daedalus
32 sed -e "s@${cfg}/etc/launcher-config.yaml@${cfg}/etc/launcher-config-server-only.yaml@" daedalus > daedalus-server-only
33 chmod a+x daedalus-server-only
34 '';
35}
diff --git a/flakes/mypackages/pkgs/crypto/iota-cli-app/default.nix b/flakes/mypackages/pkgs/crypto/iota-cli-app/default.nix
new file mode 100644
index 0000000..e386489
--- /dev/null
+++ b/flakes/mypackages/pkgs/crypto/iota-cli-app/default.nix
@@ -0,0 +1,29 @@
1{ stdenv, mylibs, fetchFromGitHub, fetchurl, fetchgit, callPackage, nodePackages, nodejs-10_x }:
2let
3 nodeEnv = callPackage mylibs.nodeEnv { nodejs = nodejs-10_x; };
4 # built using node2nix -8 -l package-lock.json
5 # and changing "./." to "src"
6 packageEnv = import ./node-packages.nix {
7 src = stdenv.mkDerivation ({
8 pname = "iota-cli-app";
9 version = "d7e2e08-master";
10 src = fetchFromGitHub {
11 owner = "iotaledger";
12 repo = "cli-app";
13 rev = "d7e2e0856ae6bd34890fefb4245c07cd467a5032";
14 sha256 = "1n9kczsxdgjv8282nj2grlijvxipiskx0ndn169vz6v1l1hrwc8b";
15 fetchSubmodules = true;
16 };
17 phases = "installPhase";
18 installPhase = ''
19 cp -a $src $out
20 chmod u+w -R $out
21 cd $out
22 sed -i -e "s@host: 'http://localhost',@host: 'https://nodes.thetangle.org',@" index.js
23 sed -i -e "s@port: 14265@port: 443@" index.js
24 '';
25 });
26 inherit fetchurl fetchgit nodeEnv;
27 };
28in
29packageEnv.package
diff --git a/flakes/mypackages/pkgs/crypto/iota-cli-app/node-packages.nix b/flakes/mypackages/pkgs/crypto/iota-cli-app/node-packages.nix
new file mode 100644
index 0000000..d5c61d6
--- /dev/null
+++ b/flakes/mypackages/pkgs/crypto/iota-cli-app/node-packages.nix
@@ -0,0 +1,1814 @@
1# This file has been generated by node2nix 1.6.0. Do not edit!
2
3{src, nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {
7 "acorn-3.3.0" = {
8 name = "acorn";
9 packageName = "acorn";
10 version = "3.3.0";
11 src = fetchurl {
12 url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz";
13 sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
14 };
15 };
16 "acorn-5.2.1" = {
17 name = "acorn";
18 packageName = "acorn";
19 version = "5.2.1";
20 src = fetchurl {
21 url = "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz";
22 sha512 = "jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==";
23 };
24 };
25 "acorn-jsx-3.0.1" = {
26 name = "acorn-jsx";
27 packageName = "acorn-jsx";
28 version = "3.0.1";
29 src = fetchurl {
30 url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz";
31 sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b";
32 };
33 };
34 "ajv-4.11.8" = {
35 name = "ajv";
36 packageName = "ajv";
37 version = "4.11.8";
38 src = fetchurl {
39 url = "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz";
40 sha1 = "82ffb02b29e662ae53bdc20af15947706739c536";
41 };
42 };
43 "ajv-keywords-1.5.1" = {
44 name = "ajv-keywords";
45 packageName = "ajv-keywords";
46 version = "1.5.1";
47 src = fetchurl {
48 url = "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz";
49 sha1 = "314dd0a4b3368fad3dfcdc54ede6171b886daf3c";
50 };
51 };
52 "ansi-escapes-1.4.0" = {
53 name = "ansi-escapes";
54 packageName = "ansi-escapes";
55 version = "1.4.0";
56 src = fetchurl {
57 url = "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz";
58 sha1 = "d3a8a83b319aa67793662b13e761c7911422306e";
59 };
60 };
61 "ansi-regex-2.1.1" = {
62 name = "ansi-regex";
63 packageName = "ansi-regex";
64 version = "2.1.1";
65 src = fetchurl {
66 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
67 sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
68 };
69 };
70 "ansi-regex-3.0.0" = {
71 name = "ansi-regex";
72 packageName = "ansi-regex";
73 version = "3.0.0";
74 src = fetchurl {
75 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz";
76 sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
77 };
78 };
79 "ansi-styles-2.2.1" = {
80 name = "ansi-styles";
81 packageName = "ansi-styles";
82 version = "2.2.1";
83 src = fetchurl {
84 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
85 sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
86 };
87 };
88 "ansi-styles-3.2.0" = {
89 name = "ansi-styles";
90 packageName = "ansi-styles";
91 version = "3.2.0";
92 src = fetchurl {
93 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz";
94 sha512 = "NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==";
95 };
96 };
97 "argparse-1.0.9" = {
98 name = "argparse";
99 packageName = "argparse";
100 version = "1.0.9";
101 src = fetchurl {
102 url = "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz";
103 sha1 = "73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86";
104 };
105 };
106 "array-union-1.0.2" = {
107 name = "array-union";
108 packageName = "array-union";
109 version = "1.0.2";
110 src = fetchurl {
111 url = "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz";
112 sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39";
113 };
114 };
115 "array-uniq-1.0.3" = {
116 name = "array-uniq";
117 packageName = "array-uniq";
118 version = "1.0.3";
119 src = fetchurl {
120 url = "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz";
121 sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
122 };
123 };
124 "arrify-1.0.1" = {
125 name = "arrify";
126 packageName = "arrify";
127 version = "1.0.1";
128 src = fetchurl {
129 url = "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz";
130 sha1 = "898508da2226f380df904728456849c1501a4b0d";
131 };
132 };
133 "async-2.6.0" = {
134 name = "async";
135 packageName = "async";
136 version = "2.6.0";
137 src = fetchurl {
138 url = "https://registry.npmjs.org/async/-/async-2.6.0.tgz";
139 sha512 = "xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==";
140 };
141 };
142 "babel-code-frame-6.26.0" = {
143 name = "babel-code-frame";
144 packageName = "babel-code-frame";
145 version = "6.26.0";
146 src = fetchurl {
147 url = "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz";
148 sha1 = "63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b";
149 };
150 };
151 "babel-polyfill-6.26.0" = {
152 name = "babel-polyfill";
153 packageName = "babel-polyfill";
154 version = "6.26.0";
155 src = fetchurl {
156 url = "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz";
157 sha1 = "379937abc67d7895970adc621f284cd966cf2153";
158 };
159 };
160 "babel-runtime-6.26.0" = {
161 name = "babel-runtime";
162 packageName = "babel-runtime";
163 version = "6.26.0";
164 src = fetchurl {
165 url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz";
166 sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
167 };
168 };
169 "balanced-match-1.0.0" = {
170 name = "balanced-match";
171 packageName = "balanced-match";
172 version = "1.0.0";
173 src = fetchurl {
174 url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
175 sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
176 };
177 };
178 "bignumber.js-4.1.0" = {
179 name = "bignumber.js";
180 packageName = "bignumber.js";
181 version = "4.1.0";
182 src = fetchurl {
183 url = "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz";
184 sha512 = "eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==";
185 };
186 };
187 "bluebird-3.5.1" = {
188 name = "bluebird";
189 packageName = "bluebird";
190 version = "3.5.1";
191 src = fetchurl {
192 url = "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz";
193 sha512 = "MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==";
194 };
195 };
196 "brace-expansion-1.1.8" = {
197 name = "brace-expansion";
198 packageName = "brace-expansion";
199 version = "1.1.8";
200 src = fetchurl {
201 url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz";
202 sha1 = "c07b211c7c952ec1f8efd51a77ef0d1d3990a292";
203 };
204 };
205 "caller-path-0.1.0" = {
206 name = "caller-path";
207 packageName = "caller-path";
208 version = "0.1.0";
209 src = fetchurl {
210 url = "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz";
211 sha1 = "94085ef63581ecd3daa92444a8fe94e82577751f";
212 };
213 };
214 "callsites-0.2.0" = {
215 name = "callsites";
216 packageName = "callsites";
217 version = "0.2.0";
218 src = fetchurl {
219 url = "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz";
220 sha1 = "afab96262910a7f33c19a5775825c69f34e350ca";
221 };
222 };
223 "chalk-1.1.3" = {
224 name = "chalk";
225 packageName = "chalk";
226 version = "1.1.3";
227 src = fetchurl {
228 url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
229 sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
230 };
231 };
232 "chalk-2.3.0" = {
233 name = "chalk";
234 packageName = "chalk";
235 version = "2.3.0";
236 src = fetchurl {
237 url = "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz";
238 sha512 = "Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==";
239 };
240 };
241 "circular-json-0.3.3" = {
242 name = "circular-json";
243 packageName = "circular-json";
244 version = "0.3.3";
245 src = fetchurl {
246 url = "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz";
247 sha512 = "UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==";
248 };
249 };
250 "cli-cursor-1.0.2" = {
251 name = "cli-cursor";
252 packageName = "cli-cursor";
253 version = "1.0.2";
254 src = fetchurl {
255 url = "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz";
256 sha1 = "64da3f7d56a54412e59794bd62dc35295e8f2987";
257 };
258 };
259 "cli-width-1.1.1" = {
260 name = "cli-width";
261 packageName = "cli-width";
262 version = "1.1.1";
263 src = fetchurl {
264 url = "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz";
265 sha1 = "a4d293ef67ebb7b88d4a4d42c0ccf00c4d1e366d";
266 };
267 };
268 "cli-width-2.2.0" = {
269 name = "cli-width";
270 packageName = "cli-width";
271 version = "2.2.0";
272 src = fetchurl {
273 url = "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz";
274 sha1 = "ff19ede8a9a5e579324147b0c11f0fbcbabed639";
275 };
276 };
277 "co-4.6.0" = {
278 name = "co";
279 packageName = "co";
280 version = "4.6.0";
281 src = fetchurl {
282 url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz";
283 sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
284 };
285 };
286 "code-point-at-1.1.0" = {
287 name = "code-point-at";
288 packageName = "code-point-at";
289 version = "1.1.0";
290 src = fetchurl {
291 url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
292 sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
293 };
294 };
295 "color-convert-1.9.1" = {
296 name = "color-convert";
297 packageName = "color-convert";
298 version = "1.9.1";
299 src = fetchurl {
300 url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz";
301 sha512 = "mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==";
302 };
303 };
304 "color-name-1.1.3" = {
305 name = "color-name";
306 packageName = "color-name";
307 version = "1.1.3";
308 src = fetchurl {
309 url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz";
310 sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
311 };
312 };
313 "colors-1.1.2" = {
314 name = "colors";
315 packageName = "colors";
316 version = "1.1.2";
317 src = fetchurl {
318 url = "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz";
319 sha1 = "168a4701756b6a7f51a12ce0c97bfa28c084ed63";
320 };
321 };
322 "concat-map-0.0.1" = {
323 name = "concat-map";
324 packageName = "concat-map";
325 version = "0.0.1";
326 src = fetchurl {
327 url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
328 sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
329 };
330 };
331 "concat-stream-1.6.0" = {
332 name = "concat-stream";
333 packageName = "concat-stream";
334 version = "1.6.0";
335 src = fetchurl {
336 url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz";
337 sha1 = "0aac662fd52be78964d5532f694784e70110acf7";
338 };
339 };
340 "core-js-2.5.3" = {
341 name = "core-js";
342 packageName = "core-js";
343 version = "2.5.3";
344 src = fetchurl {
345 url = "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz";
346 sha1 = "8acc38345824f16d8365b7c9b4259168e8ed603e";
347 };
348 };
349 "core-util-is-1.0.2" = {
350 name = "core-util-is";
351 packageName = "core-util-is";
352 version = "1.0.2";
353 src = fetchurl {
354 url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
355 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
356 };
357 };
358 "crypto-js-3.1.9-1" = {
359 name = "crypto-js";
360 packageName = "crypto-js";
361 version = "3.1.9-1";
362 src = fetchurl {
363 url = "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.9-1.tgz";
364 sha1 = "fda19e761fc077e01ffbfdc6e9fdfc59e8806cd8";
365 };
366 };
367 "d-1.0.0" = {
368 name = "d";
369 packageName = "d";
370 version = "1.0.0";
371 src = fetchurl {
372 url = "https://registry.npmjs.org/d/-/d-1.0.0.tgz";
373 sha1 = "754bb5bfe55451da69a58b94d45f4c5b0462d58f";
374 };
375 };
376 "debug-2.6.9" = {
377 name = "debug";
378 packageName = "debug";
379 version = "2.6.9";
380 src = fetchurl {
381 url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
382 sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
383 };
384 };
385 "deep-is-0.1.3" = {
386 name = "deep-is";
387 packageName = "deep-is";
388 version = "0.1.3";
389 src = fetchurl {
390 url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
391 sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
392 };
393 };
394 "del-2.2.2" = {
395 name = "del";
396 packageName = "del";
397 version = "2.2.2";
398 src = fetchurl {
399 url = "https://registry.npmjs.org/del/-/del-2.2.2.tgz";
400 sha1 = "c12c981d067846c84bcaf862cff930d907ffd1a8";
401 };
402 };
403 "doctrine-2.0.2" = {
404 name = "doctrine";
405 packageName = "doctrine";
406 version = "2.0.2";
407 src = fetchurl {
408 url = "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz";
409 sha512 = "y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==";
410 };
411 };
412 "encoding-0.1.12" = {
413 name = "encoding";
414 packageName = "encoding";
415 version = "0.1.12";
416 src = fetchurl {
417 url = "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz";
418 sha1 = "538b66f3ee62cd1ab51ec323829d1f9480c74beb";
419 };
420 };
421 "es5-ext-0.10.37" = {
422 name = "es5-ext";
423 packageName = "es5-ext";
424 version = "0.10.37";
425 src = fetchurl {
426 url = "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz";
427 sha1 = "0ee741d148b80069ba27d020393756af257defc3";
428 };
429 };
430 "es6-iterator-2.0.3" = {
431 name = "es6-iterator";
432 packageName = "es6-iterator";
433 version = "2.0.3";
434 src = fetchurl {
435 url = "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz";
436 sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7";
437 };
438 };
439 "es6-map-0.1.5" = {
440 name = "es6-map";
441 packageName = "es6-map";
442 version = "0.1.5";
443 src = fetchurl {
444 url = "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz";
445 sha1 = "9136e0503dcc06a301690f0bb14ff4e364e949f0";
446 };
447 };
448 "es6-set-0.1.5" = {
449 name = "es6-set";
450 packageName = "es6-set";
451 version = "0.1.5";
452 src = fetchurl {
453 url = "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz";
454 sha1 = "d2b3ec5d4d800ced818db538d28974db0a73ccb1";
455 };
456 };
457 "es6-symbol-3.1.1" = {
458 name = "es6-symbol";
459 packageName = "es6-symbol";
460 version = "3.1.1";
461 src = fetchurl {
462 url = "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz";
463 sha1 = "bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77";
464 };
465 };
466 "es6-weak-map-2.0.2" = {
467 name = "es6-weak-map";
468 packageName = "es6-weak-map";
469 version = "2.0.2";
470 src = fetchurl {
471 url = "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz";
472 sha1 = "5e3ab32251ffd1538a1f8e5ffa1357772f92d96f";
473 };
474 };
475 "escape-string-regexp-1.0.5" = {
476 name = "escape-string-regexp";
477 packageName = "escape-string-regexp";
478 version = "1.0.5";
479 src = fetchurl {
480 url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
481 sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
482 };
483 };
484 "escope-3.6.0" = {
485 name = "escope";
486 packageName = "escope";
487 version = "3.6.0";
488 src = fetchurl {
489 url = "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz";
490 sha1 = "e01975e812781a163a6dadfdd80398dc64c889c3";
491 };
492 };
493 "eslint-3.19.0" = {
494 name = "eslint";
495 packageName = "eslint";
496 version = "3.19.0";
497 src = fetchurl {
498 url = "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz";
499 sha1 = "c8fc6201c7f40dd08941b87c085767386a679acc";
500 };
501 };
502 "espree-3.5.2" = {
503 name = "espree";
504 packageName = "espree";
505 version = "3.5.2";
506 src = fetchurl {
507 url = "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz";
508 sha512 = "sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==";
509 };
510 };
511 "esprima-4.0.0" = {
512 name = "esprima";
513 packageName = "esprima";
514 version = "4.0.0";
515 src = fetchurl {
516 url = "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz";
517 sha512 = "oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==";
518 };
519 };
520 "esquery-1.0.0" = {
521 name = "esquery";
522 packageName = "esquery";
523 version = "1.0.0";
524 src = fetchurl {
525 url = "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz";
526 sha1 = "cfba8b57d7fba93f17298a8a006a04cda13d80fa";
527 };
528 };
529 "esrecurse-4.2.0" = {
530 name = "esrecurse";
531 packageName = "esrecurse";
532 version = "4.2.0";
533 src = fetchurl {
534 url = "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz";
535 sha1 = "fa9568d98d3823f9a41d91e902dcab9ea6e5b163";
536 };
537 };
538 "estraverse-4.2.0" = {
539 name = "estraverse";
540 packageName = "estraverse";
541 version = "4.2.0";
542 src = fetchurl {
543 url = "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz";
544 sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
545 };
546 };
547 "esutils-2.0.2" = {
548 name = "esutils";
549 packageName = "esutils";
550 version = "2.0.2";
551 src = fetchurl {
552 url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz";
553 sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
554 };
555 };
556 "event-emitter-0.3.5" = {
557 name = "event-emitter";
558 packageName = "event-emitter";
559 version = "0.3.5";
560 src = fetchurl {
561 url = "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz";
562 sha1 = "df8c69eef1647923c7157b9ce83840610b02cc39";
563 };
564 };
565 "exit-hook-1.1.1" = {
566 name = "exit-hook";
567 packageName = "exit-hook";
568 version = "1.1.1";
569 src = fetchurl {
570 url = "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz";
571 sha1 = "f05ca233b48c05d54fff07765df8507e95c02ff8";
572 };
573 };
574 "fast-levenshtein-2.0.6" = {
575 name = "fast-levenshtein";
576 packageName = "fast-levenshtein";
577 version = "2.0.6";
578 src = fetchurl {
579 url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
580 sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
581 };
582 };
583 "figures-1.7.0" = {
584 name = "figures";
585 packageName = "figures";
586 version = "1.7.0";
587 src = fetchurl {
588 url = "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz";
589 sha1 = "cbe1e3affcf1cd44b80cadfed28dc793a9701d2e";
590 };
591 };
592 "file-entry-cache-2.0.0" = {
593 name = "file-entry-cache";
594 packageName = "file-entry-cache";
595 version = "2.0.0";
596 src = fetchurl {
597 url = "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz";
598 sha1 = "c392990c3e684783d838b8c84a45d8a048458361";
599 };
600 };
601 "flat-cache-1.3.0" = {
602 name = "flat-cache";
603 packageName = "flat-cache";
604 version = "1.3.0";
605 src = fetchurl {
606 url = "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz";
607 sha1 = "d3030b32b38154f4e3b7e9c709f490f7ef97c481";
608 };
609 };
610 "fs.realpath-1.0.0" = {
611 name = "fs.realpath";
612 packageName = "fs.realpath";
613 version = "1.0.0";
614 src = fetchurl {
615 url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
616 sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
617 };
618 };
619 "generate-function-2.0.0" = {
620 name = "generate-function";
621 packageName = "generate-function";
622 version = "2.0.0";
623 src = fetchurl {
624 url = "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz";
625 sha1 = "6858fe7c0969b7d4e9093337647ac79f60dfbe74";
626 };
627 };
628 "generate-object-property-1.2.0" = {
629 name = "generate-object-property";
630 packageName = "generate-object-property";
631 version = "1.2.0";
632 src = fetchurl {
633 url = "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz";
634 sha1 = "9c0e1c40308ce804f4783618b937fa88f99d50d0";
635 };
636 };
637 "glob-7.1.2" = {
638 name = "glob";
639 packageName = "glob";
640 version = "7.1.2";
641 src = fetchurl {
642 url = "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz";
643 sha512 = "MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==";
644 };
645 };
646 "globals-9.18.0" = {
647 name = "globals";
648 packageName = "globals";
649 version = "9.18.0";
650 src = fetchurl {
651 url = "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz";
652 sha512 = "S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==";
653 };
654 };
655 "globby-5.0.0" = {
656 name = "globby";
657 packageName = "globby";
658 version = "5.0.0";
659 src = fetchurl {
660 url = "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz";
661 sha1 = "ebd84667ca0dbb330b99bcfc68eac2bc54370e0d";
662 };
663 };
664 "graceful-fs-4.1.11" = {
665 name = "graceful-fs";
666 packageName = "graceful-fs";
667 version = "4.1.11";
668 src = fetchurl {
669 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz";
670 sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658";
671 };
672 };
673 "has-ansi-2.0.0" = {
674 name = "has-ansi";
675 packageName = "has-ansi";
676 version = "2.0.0";
677 src = fetchurl {
678 url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
679 sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
680 };
681 };
682 "has-flag-2.0.0" = {
683 name = "has-flag";
684 packageName = "has-flag";
685 version = "2.0.0";
686 src = fetchurl {
687 url = "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz";
688 sha1 = "e8207af1cc7b30d446cc70b734b5e8be18f88d51";
689 };
690 };
691 "iconv-lite-0.4.19" = {
692 name = "iconv-lite";
693 packageName = "iconv-lite";
694 version = "0.4.19";
695 src = fetchurl {
696 url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz";
697 sha512 = "oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==";
698 };
699 };
700 "ignore-3.3.7" = {
701 name = "ignore";
702 packageName = "ignore";
703 version = "3.3.7";
704 src = fetchurl {
705 url = "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz";
706 sha512 = "YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==";
707 };
708 };
709 "imurmurhash-0.1.4" = {
710 name = "imurmurhash";
711 packageName = "imurmurhash";
712 version = "0.1.4";
713 src = fetchurl {
714 url = "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz";
715 sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
716 };
717 };
718 "in-publish-2.0.0" = {
719 name = "in-publish";
720 packageName = "in-publish";
721 version = "2.0.0";
722 src = fetchurl {
723 url = "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz";
724 sha1 = "e20ff5e3a2afc2690320b6dc552682a9c7fadf51";
725 };
726 };
727 "inflight-1.0.6" = {
728 name = "inflight";
729 packageName = "inflight";
730 version = "1.0.6";
731 src = fetchurl {
732 url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
733 sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
734 };
735 };
736 "inherits-2.0.3" = {
737 name = "inherits";
738 packageName = "inherits";
739 version = "2.0.3";
740 src = fetchurl {
741 url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
742 sha1 = "633c2c83e3da42a502f52466022480f4208261de";
743 };
744 };
745 "inquirer-0.11.0" = {
746 name = "inquirer";
747 packageName = "inquirer";
748 version = "0.11.0";
749 src = fetchurl {
750 url = "https://registry.npmjs.org/inquirer/-/inquirer-0.11.0.tgz";
751 sha1 = "7448bfa924092af311d47173bbab990cae2bb027";
752 };
753 };
754 "inquirer-0.12.0" = {
755 name = "inquirer";
756 packageName = "inquirer";
757 version = "0.12.0";
758 src = fetchurl {
759 url = "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz";
760 sha1 = "1ef2bfd63504df0bc75785fff8c2c41df12f077e";
761 };
762 };
763 "install-0.10.4" = {
764 name = "install";
765 packageName = "install";
766 version = "0.10.4";
767 src = fetchurl {
768 url = "https://registry.npmjs.org/install/-/install-0.10.4.tgz";
769 sha512 = "+IRyOastuPmLVx9zlVXJoKErSqz1Ma5at9A7S8yfsj3W+Kg95faPoh3bPDtMrZ/grz4PRmXzrswmlzfLlYyLOw==";
770 };
771 };
772 "interpret-1.1.0" = {
773 name = "interpret";
774 packageName = "interpret";
775 version = "1.1.0";
776 src = fetchurl {
777 url = "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz";
778 sha1 = "7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614";
779 };
780 };
781 "iota.lib.js-0.4.6" = {
782 name = "iota.lib.js";
783 packageName = "iota.lib.js";
784 version = "0.4.6";
785 src = fetchurl {
786 url = "https://registry.npmjs.org/iota.lib.js/-/iota.lib.js-0.4.6.tgz";
787 sha1 = "47afdc03d57c7f55d2f58f068db492df6bc6e9bb";
788 };
789 };
790 "is-fullwidth-code-point-1.0.0" = {
791 name = "is-fullwidth-code-point";
792 packageName = "is-fullwidth-code-point";
793 version = "1.0.0";
794 src = fetchurl {
795 url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
796 sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
797 };
798 };
799 "is-fullwidth-code-point-2.0.0" = {
800 name = "is-fullwidth-code-point";
801 packageName = "is-fullwidth-code-point";
802 version = "2.0.0";
803 src = fetchurl {
804 url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
805 sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
806 };
807 };
808 "is-my-json-valid-2.16.1" = {
809 name = "is-my-json-valid";
810 packageName = "is-my-json-valid";
811 version = "2.16.1";
812 src = fetchurl {
813 url = "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz";
814 sha512 = "ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==";
815 };
816 };
817 "is-path-cwd-1.0.0" = {
818 name = "is-path-cwd";
819 packageName = "is-path-cwd";
820 version = "1.0.0";
821 src = fetchurl {
822 url = "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz";
823 sha1 = "d225ec23132e89edd38fda767472e62e65f1106d";
824 };
825 };
826 "is-path-in-cwd-1.0.0" = {
827 name = "is-path-in-cwd";
828 packageName = "is-path-in-cwd";
829 version = "1.0.0";
830 src = fetchurl {
831 url = "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz";
832 sha1 = "6477582b8214d602346094567003be8a9eac04dc";
833 };
834 };
835 "is-path-inside-1.0.1" = {
836 name = "is-path-inside";
837 packageName = "is-path-inside";
838 version = "1.0.1";
839 src = fetchurl {
840 url = "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz";
841 sha1 = "8ef5b7de50437a3fdca6b4e865ef7aa55cb48036";
842 };
843 };
844 "is-property-1.0.2" = {
845 name = "is-property";
846 packageName = "is-property";
847 version = "1.0.2";
848 src = fetchurl {
849 url = "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz";
850 sha1 = "57fe1c4e48474edd65b09911f26b1cd4095dda84";
851 };
852 };
853 "is-resolvable-1.0.1" = {
854 name = "is-resolvable";
855 packageName = "is-resolvable";
856 version = "1.0.1";
857 src = fetchurl {
858 url = "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz";
859 sha512 = "y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==";
860 };
861 };
862 "is-stream-1.1.0" = {
863 name = "is-stream";
864 packageName = "is-stream";
865 version = "1.1.0";
866 src = fetchurl {
867 url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz";
868 sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
869 };
870 };
871 "isarray-1.0.0" = {
872 name = "isarray";
873 packageName = "isarray";
874 version = "1.0.0";
875 src = fetchurl {
876 url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
877 sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
878 };
879 };
880 "js-tokens-3.0.2" = {
881 name = "js-tokens";
882 packageName = "js-tokens";
883 version = "3.0.2";
884 src = fetchurl {
885 url = "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz";
886 sha1 = "9866df395102130e38f7f996bceb65443209c25b";
887 };
888 };
889 "js-yaml-3.10.0" = {
890 name = "js-yaml";
891 packageName = "js-yaml";
892 version = "3.10.0";
893 src = fetchurl {
894 url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz";
895 sha512 = "O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==";
896 };
897 };
898 "json-stable-stringify-1.0.1" = {
899 name = "json-stable-stringify";
900 packageName = "json-stable-stringify";
901 version = "1.0.1";
902 src = fetchurl {
903 url = "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
904 sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
905 };
906 };
907 "json5-0.5.1" = {
908 name = "json5";
909 packageName = "json5";
910 version = "0.5.1";
911 src = fetchurl {
912 url = "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz";
913 sha1 = "1eade7acc012034ad84e2396767ead9fa5495821";
914 };
915 };
916 "jsonify-0.0.0" = {
917 name = "jsonify";
918 packageName = "jsonify";
919 version = "0.0.0";
920 src = fetchurl {
921 url = "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz";
922 sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
923 };
924 };
925 "jsonpointer-4.0.1" = {
926 name = "jsonpointer";
927 packageName = "jsonpointer";
928 version = "4.0.1";
929 src = fetchurl {
930 url = "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz";
931 sha1 = "4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9";
932 };
933 };
934 "left-pad-1.2.0" = {
935 name = "left-pad";
936 packageName = "left-pad";
937 version = "1.2.0";
938 src = fetchurl {
939 url = "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz";
940 sha1 = "d30a73c6b8201d8f7d8e7956ba9616087a68e0ee";
941 };
942 };
943 "levn-0.3.0" = {
944 name = "levn";
945 packageName = "levn";
946 version = "0.3.0";
947 src = fetchurl {
948 url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
949 sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
950 };
951 };
952 "lodash-3.10.1" = {
953 name = "lodash";
954 packageName = "lodash";
955 version = "3.10.1";
956 src = fetchurl {
957 url = "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz";
958 sha1 = "5bf45e8e49ba4189e17d482789dfd15bd140b7b6";
959 };
960 };
961 "lodash-4.17.4" = {
962 name = "lodash";
963 packageName = "lodash";
964 version = "4.17.4";
965 src = fetchurl {
966 url = "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz";
967 sha1 = "78203a4d1c328ae1d86dca6460e369b57f4055ae";
968 };
969 };
970 "log-update-1.0.2" = {
971 name = "log-update";
972 packageName = "log-update";
973 version = "1.0.2";
974 src = fetchurl {
975 url = "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz";
976 sha1 = "19929f64c4093d2d2e7075a1dad8af59c296b8d1";
977 };
978 };
979 "minimatch-3.0.4" = {
980 name = "minimatch";
981 packageName = "minimatch";
982 version = "3.0.4";
983 src = fetchurl {
984 url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
985 sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
986 };
987 };
988 "minimist-0.0.8" = {
989 name = "minimist";
990 packageName = "minimist";
991 version = "0.0.8";
992 src = fetchurl {
993 url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
994 sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
995 };
996 };
997 "minimist-1.2.0" = {
998 name = "minimist";
999 packageName = "minimist";
1000 version = "1.2.0";
1001 src = fetchurl {
1002 url = "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz";
1003 sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
1004 };
1005 };
1006 "mkdirp-0.5.1" = {
1007 name = "mkdirp";
1008 packageName = "mkdirp";
1009 version = "0.5.1";
1010 src = fetchurl {
1011 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
1012 sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
1013 };
1014 };
1015 "moment-2.20.1" = {
1016 name = "moment";
1017 packageName = "moment";
1018 version = "2.20.1";
1019 src = fetchurl {
1020 url = "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz";
1021 sha512 = "Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==";
1022 };
1023 };
1024 "ms-2.0.0" = {
1025 name = "ms";
1026 packageName = "ms";
1027 version = "2.0.0";
1028 src = fetchurl {
1029 url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
1030 sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
1031 };
1032 };
1033 "mute-stream-0.0.5" = {
1034 name = "mute-stream";
1035 packageName = "mute-stream";
1036 version = "0.0.5";
1037 src = fetchurl {
1038 url = "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz";
1039 sha1 = "8fbfabb0a98a253d3184331f9e8deb7372fac6c0";
1040 };
1041 };
1042 "natural-compare-1.4.0" = {
1043 name = "natural-compare";
1044 packageName = "natural-compare";
1045 version = "1.4.0";
1046 src = fetchurl {
1047 url = "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz";
1048 sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7";
1049 };
1050 };
1051 "node-fetch-1.7.3" = {
1052 name = "node-fetch";
1053 packageName = "node-fetch";
1054 version = "1.7.3";
1055 src = fetchurl {
1056 url = "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz";
1057 sha512 = "NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==";
1058 };
1059 };
1060 "node-localstorage-0.6.0" = {
1061 name = "node-localstorage";
1062 packageName = "node-localstorage";
1063 version = "0.6.0";
1064 src = fetchurl {
1065 url = "https://registry.npmjs.org/node-localstorage/-/node-localstorage-0.6.0.tgz";
1066 sha1 = "45a0601c6932dfde6644a23361f1be173c75d3af";
1067 };
1068 };
1069 "number-is-nan-1.0.1" = {
1070 name = "number-is-nan";
1071 packageName = "number-is-nan";
1072 version = "1.0.1";
1073 src = fetchurl {
1074 url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
1075 sha1 = "097b602b53422a522c1afb8790318336941a011d";
1076 };
1077 };
1078 "object-assign-4.1.1" = {
1079 name = "object-assign";
1080 packageName = "object-assign";
1081 version = "4.1.1";
1082 src = fetchurl {
1083 url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
1084 sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
1085 };
1086 };
1087 "once-1.4.0" = {
1088 name = "once";
1089 packageName = "once";
1090 version = "1.4.0";
1091 src = fetchurl {
1092 url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
1093 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
1094 };
1095 };
1096 "onetime-1.1.0" = {
1097 name = "onetime";
1098 packageName = "onetime";
1099 version = "1.1.0";
1100 src = fetchurl {
1101 url = "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz";
1102 sha1 = "a1f7838f8314c516f05ecefcbc4ccfe04b4ed789";
1103 };
1104 };
1105 "optionator-0.8.2" = {
1106 name = "optionator";
1107 packageName = "optionator";
1108 version = "0.8.2";
1109 src = fetchurl {
1110 url = "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz";
1111 sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64";
1112 };
1113 };
1114 "os-homedir-1.0.2" = {
1115 name = "os-homedir";
1116 packageName = "os-homedir";
1117 version = "1.0.2";
1118 src = fetchurl {
1119 url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
1120 sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
1121 };
1122 };
1123 "path-is-absolute-1.0.1" = {
1124 name = "path-is-absolute";
1125 packageName = "path-is-absolute";
1126 version = "1.0.1";
1127 src = fetchurl {
1128 url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
1129 sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
1130 };
1131 };
1132 "path-is-inside-1.0.2" = {
1133 name = "path-is-inside";
1134 packageName = "path-is-inside";
1135 version = "1.0.2";
1136 src = fetchurl {
1137 url = "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz";
1138 sha1 = "365417dede44430d1c11af61027facf074bdfc53";
1139 };
1140 };
1141 "path-parse-1.0.5" = {
1142 name = "path-parse";
1143 packageName = "path-parse";
1144 version = "1.0.5";
1145 src = fetchurl {
1146 url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz";
1147 sha1 = "3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1";
1148 };
1149 };
1150 "pify-2.3.0" = {
1151 name = "pify";
1152 packageName = "pify";
1153 version = "2.3.0";
1154 src = fetchurl {
1155 url = "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz";
1156 sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
1157 };
1158 };
1159 "pinkie-2.0.4" = {
1160 name = "pinkie";
1161 packageName = "pinkie";
1162 version = "2.0.4";
1163 src = fetchurl {
1164 url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz";
1165 sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
1166 };
1167 };
1168 "pinkie-promise-2.0.1" = {
1169 name = "pinkie-promise";
1170 packageName = "pinkie-promise";
1171 version = "2.0.1";
1172 src = fetchurl {
1173 url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
1174 sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
1175 };
1176 };
1177 "pluralize-1.2.1" = {
1178 name = "pluralize";
1179 packageName = "pluralize";
1180 version = "1.2.1";
1181 src = fetchurl {
1182 url = "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz";
1183 sha1 = "d1a21483fd22bb41e58a12fa3421823140897c45";
1184 };
1185 };
1186 "prelude-ls-1.1.2" = {
1187 name = "prelude-ls";
1188 packageName = "prelude-ls";
1189 version = "1.1.2";
1190 src = fetchurl {
1191 url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
1192 sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
1193 };
1194 };
1195 "prettyjson-1.2.1" = {
1196 name = "prettyjson";
1197 packageName = "prettyjson";
1198 version = "1.2.1";
1199 src = fetchurl {
1200 url = "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.1.tgz";
1201 sha1 = "fcffab41d19cab4dfae5e575e64246619b12d289";
1202 };
1203 };
1204 "process-nextick-args-1.0.7" = {
1205 name = "process-nextick-args";
1206 packageName = "process-nextick-args";
1207 version = "1.0.7";
1208 src = fetchurl {
1209 url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz";
1210 sha1 = "150e20b756590ad3f91093f25a4f2ad8bff30ba3";
1211 };
1212 };
1213 "progress-1.1.8" = {
1214 name = "progress";
1215 packageName = "progress";
1216 version = "1.1.8";
1217 src = fetchurl {
1218 url = "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz";
1219 sha1 = "e260c78f6161cdd9b0e56cc3e0a85de17c7a57be";
1220 };
1221 };
1222 "readable-stream-2.3.3" = {
1223 name = "readable-stream";
1224 packageName = "readable-stream";
1225 version = "2.3.3";
1226 src = fetchurl {
1227 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz";
1228 sha512 = "m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==";
1229 };
1230 };
1231 "readline2-1.0.1" = {
1232 name = "readline2";
1233 packageName = "readline2";
1234 version = "1.0.1";
1235 src = fetchurl {
1236 url = "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz";
1237 sha1 = "41059608ffc154757b715d9989d199ffbf372e35";
1238 };
1239 };
1240 "rechoir-0.6.2" = {
1241 name = "rechoir";
1242 packageName = "rechoir";
1243 version = "0.6.2";
1244 src = fetchurl {
1245 url = "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz";
1246 sha1 = "85204b54dba82d5742e28c96756ef43af50e3384";
1247 };
1248 };
1249 "regenerator-runtime-0.10.5" = {
1250 name = "regenerator-runtime";
1251 packageName = "regenerator-runtime";
1252 version = "0.10.5";
1253 src = fetchurl {
1254 url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz";
1255 sha1 = "336c3efc1220adcedda2c9fab67b5a7955a33658";
1256 };
1257 };
1258 "regenerator-runtime-0.11.1" = {
1259 name = "regenerator-runtime";
1260 packageName = "regenerator-runtime";
1261 version = "0.11.1";
1262 src = fetchurl {
1263 url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
1264 sha512 = "MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==";
1265 };
1266 };
1267 "require-uncached-1.0.3" = {
1268 name = "require-uncached";
1269 packageName = "require-uncached";
1270 version = "1.0.3";
1271 src = fetchurl {
1272 url = "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz";
1273 sha1 = "4e0d56d6c9662fd31e43011c4b95aa49955421d3";
1274 };
1275 };
1276 "resolve-1.5.0" = {
1277 name = "resolve";
1278 packageName = "resolve";
1279 version = "1.5.0";
1280 src = fetchurl {
1281 url = "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz";
1282 sha512 = "hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==";
1283 };
1284 };
1285 "resolve-from-1.0.1" = {
1286 name = "resolve-from";
1287 packageName = "resolve-from";
1288 version = "1.0.1";
1289 src = fetchurl {
1290 url = "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz";
1291 sha1 = "26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226";
1292 };
1293 };
1294 "restore-cursor-1.0.1" = {
1295 name = "restore-cursor";
1296 packageName = "restore-cursor";
1297 version = "1.0.1";
1298 src = fetchurl {
1299 url = "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz";
1300 sha1 = "34661f46886327fed2991479152252df92daa541";
1301 };
1302 };
1303 "rimraf-2.6.2" = {
1304 name = "rimraf";
1305 packageName = "rimraf";
1306 version = "2.6.2";
1307 src = fetchurl {
1308 url = "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz";
1309 sha512 = "lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==";
1310 };
1311 };
1312 "run-async-0.1.0" = {
1313 name = "run-async";
1314 packageName = "run-async";
1315 version = "0.1.0";
1316 src = fetchurl {
1317 url = "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz";
1318 sha1 = "c8ad4a5e110661e402a7d21b530e009f25f8e389";
1319 };
1320 };
1321 "rx-lite-3.1.2" = {
1322 name = "rx-lite";
1323 packageName = "rx-lite";
1324 version = "3.1.2";
1325 src = fetchurl {
1326 url = "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz";
1327 sha1 = "19ce502ca572665f3b647b10939f97fd1615f102";
1328 };
1329 };
1330 "safe-buffer-5.1.1" = {
1331 name = "safe-buffer";
1332 packageName = "safe-buffer";
1333 version = "5.1.1";
1334 src = fetchurl {
1335 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz";
1336 sha512 = "kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==";
1337 };
1338 };
1339 "shelljs-0.7.8" = {
1340 name = "shelljs";
1341 packageName = "shelljs";
1342 version = "0.7.8";
1343 src = fetchurl {
1344 url = "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz";
1345 sha1 = "decbcf874b0d1e5fb72e14b164a9683048e9acb3";
1346 };
1347 };
1348 "slice-ansi-0.0.4" = {
1349 name = "slice-ansi";
1350 packageName = "slice-ansi";
1351 version = "0.0.4";
1352 src = fetchurl {
1353 url = "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz";
1354 sha1 = "edbf8903f66f7ce2f8eafd6ceed65e264c831b35";
1355 };
1356 };
1357 "sprintf-js-1.0.3" = {
1358 name = "sprintf-js";
1359 packageName = "sprintf-js";
1360 version = "1.0.3";
1361 src = fetchurl {
1362 url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz";
1363 sha1 = "04e6926f662895354f3dd015203633b857297e2c";
1364 };
1365 };
1366 "string-width-1.0.2" = {
1367 name = "string-width";
1368 packageName = "string-width";
1369 version = "1.0.2";
1370 src = fetchurl {
1371 url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
1372 sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
1373 };
1374 };
1375 "string-width-2.1.1" = {
1376 name = "string-width";
1377 packageName = "string-width";
1378 version = "2.1.1";
1379 src = fetchurl {
1380 url = "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz";
1381 sha512 = "nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==";
1382 };
1383 };
1384 "string_decoder-1.0.3" = {
1385 name = "string_decoder";
1386 packageName = "string_decoder";
1387 version = "1.0.3";
1388 src = fetchurl {
1389 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz";
1390 sha512 = "4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==";
1391 };
1392 };
1393 "strip-ansi-3.0.1" = {
1394 name = "strip-ansi";
1395 packageName = "strip-ansi";
1396 version = "3.0.1";
1397 src = fetchurl {
1398 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
1399 sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
1400 };
1401 };
1402 "strip-ansi-4.0.0" = {
1403 name = "strip-ansi";
1404 packageName = "strip-ansi";
1405 version = "4.0.0";
1406 src = fetchurl {
1407 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz";
1408 sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
1409 };
1410 };
1411 "strip-bom-3.0.0" = {
1412 name = "strip-bom";
1413 packageName = "strip-bom";
1414 version = "3.0.0";
1415 src = fetchurl {
1416 url = "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz";
1417 sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3";
1418 };
1419 };
1420 "strip-json-comments-2.0.1" = {
1421 name = "strip-json-comments";
1422 packageName = "strip-json-comments";
1423 version = "2.0.1";
1424 src = fetchurl {
1425 url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
1426 sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
1427 };
1428 };
1429 "supports-color-2.0.0" = {
1430 name = "supports-color";
1431 packageName = "supports-color";
1432 version = "2.0.0";
1433 src = fetchurl {
1434 url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
1435 sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
1436 };
1437 };
1438 "supports-color-4.5.0" = {
1439 name = "supports-color";
1440 packageName = "supports-color";
1441 version = "4.5.0";
1442 src = fetchurl {
1443 url = "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz";
1444 sha1 = "be7a0de484dec5c5cddf8b3d59125044912f635b";
1445 };
1446 };
1447 "table-3.8.3" = {
1448 name = "table";
1449 packageName = "table";
1450 version = "3.8.3";
1451 src = fetchurl {
1452 url = "https://registry.npmjs.org/table/-/table-3.8.3.tgz";
1453 sha1 = "2bbc542f0fda9861a755d3947fefd8b3f513855f";
1454 };
1455 };
1456 "text-table-0.2.0" = {
1457 name = "text-table";
1458 packageName = "text-table";
1459 version = "0.2.0";
1460 src = fetchurl {
1461 url = "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz";
1462 sha1 = "7f5ee823ae805207c00af2df4a84ec3fcfa570b4";
1463 };
1464 };
1465 "through-2.3.8" = {
1466 name = "through";
1467 packageName = "through";
1468 version = "2.3.8";
1469 src = fetchurl {
1470 url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz";
1471 sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
1472 };
1473 };
1474 "type-check-0.3.2" = {
1475 name = "type-check";
1476 packageName = "type-check";
1477 version = "0.3.2";
1478 src = fetchurl {
1479 url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
1480 sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
1481 };
1482 };
1483 "typedarray-0.0.6" = {
1484 name = "typedarray";
1485 packageName = "typedarray";
1486 version = "0.0.6";
1487 src = fetchurl {
1488 url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz";
1489 sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
1490 };
1491 };
1492 "user-home-2.0.0" = {
1493 name = "user-home";
1494 packageName = "user-home";
1495 version = "2.0.0";
1496 src = fetchurl {
1497 url = "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz";
1498 sha1 = "9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f";
1499 };
1500 };
1501 "util-deprecate-1.0.2" = {
1502 name = "util-deprecate";
1503 packageName = "util-deprecate";
1504 version = "1.0.2";
1505 src = fetchurl {
1506 url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
1507 sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
1508 };
1509 };
1510 "vorpal-1.12.0" = {
1511 name = "vorpal";
1512 packageName = "vorpal";
1513 version = "1.12.0";
1514 src = fetchurl {
1515 url = "https://registry.npmjs.org/vorpal/-/vorpal-1.12.0.tgz";
1516 sha1 = "4be7b2a4e48f8fcfc9cf3648c419d311c522159d";
1517 };
1518 };
1519 "wordwrap-1.0.0" = {
1520 name = "wordwrap";
1521 packageName = "wordwrap";
1522 version = "1.0.0";
1523 src = fetchurl {
1524 url = "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz";
1525 sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
1526 };
1527 };
1528 "wrap-ansi-2.1.0" = {
1529 name = "wrap-ansi";
1530 packageName = "wrap-ansi";
1531 version = "2.1.0";
1532 src = fetchurl {
1533 url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz";
1534 sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85";
1535 };
1536 };
1537 "wrappy-1.0.2" = {
1538 name = "wrappy";
1539 packageName = "wrappy";
1540 version = "1.0.2";
1541 src = fetchurl {
1542 url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
1543 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
1544 };
1545 };
1546 "write-0.2.1" = {
1547 name = "write";
1548 packageName = "write";
1549 version = "0.2.1";
1550 src = fetchurl {
1551 url = "https://registry.npmjs.org/write/-/write-0.2.1.tgz";
1552 sha1 = "5fc03828e264cea3fe91455476f7a3c566cb0757";
1553 };
1554 };
1555 "xmlhttprequest-1.8.0" = {
1556 name = "xmlhttprequest";
1557 packageName = "xmlhttprequest";
1558 version = "1.8.0";
1559 src = fetchurl {
1560 url = "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz";
1561 sha1 = "67fe075c5c24fef39f9d65f5f7b7fe75171968fc";
1562 };
1563 };
1564 "xtend-4.0.1" = {
1565 name = "xtend";
1566 packageName = "xtend";
1567 version = "4.0.1";
1568 src = fetchurl {
1569 url = "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz";
1570 sha1 = "a5c6d532be656e23db820efb943a1f04998d63af";
1571 };
1572 };
1573 };
1574 args = {
1575 name = "iota-cli-app";
1576 packageName = "iota-cli-app";
1577 version = "1.0.8";
1578 inherit src;
1579 dependencies = [
1580 sources."acorn-5.2.1"
1581 (sources."acorn-jsx-3.0.1" // {
1582 dependencies = [
1583 sources."acorn-3.3.0"
1584 ];
1585 })
1586 sources."ajv-4.11.8"
1587 sources."ajv-keywords-1.5.1"
1588 sources."ansi-escapes-1.4.0"
1589 sources."ansi-regex-2.1.1"
1590 sources."ansi-styles-3.2.0"
1591 sources."argparse-1.0.9"
1592 sources."array-union-1.0.2"
1593 sources."array-uniq-1.0.3"
1594 sources."arrify-1.0.1"
1595 sources."async-2.6.0"
1596 (sources."babel-code-frame-6.26.0" // {
1597 dependencies = [
1598 sources."ansi-styles-2.2.1"
1599 sources."chalk-1.1.3"
1600 sources."supports-color-2.0.0"
1601 ];
1602 })
1603 sources."babel-polyfill-6.26.0"
1604 (sources."babel-runtime-6.26.0" // {
1605 dependencies = [
1606 sources."regenerator-runtime-0.11.1"
1607 ];
1608 })
1609 sources."balanced-match-1.0.0"
1610 sources."bignumber.js-4.1.0"
1611 sources."bluebird-3.5.1"
1612 sources."brace-expansion-1.1.8"
1613 sources."caller-path-0.1.0"
1614 sources."callsites-0.2.0"
1615 sources."chalk-2.3.0"
1616 sources."circular-json-0.3.3"
1617 sources."cli-cursor-1.0.2"
1618 sources."cli-width-2.2.0"
1619 sources."co-4.6.0"
1620 sources."code-point-at-1.1.0"
1621 sources."color-convert-1.9.1"
1622 sources."color-name-1.1.3"
1623 sources."colors-1.1.2"
1624 sources."concat-map-0.0.1"
1625 sources."concat-stream-1.6.0"
1626 sources."core-js-2.5.3"
1627 sources."core-util-is-1.0.2"
1628 sources."crypto-js-3.1.9-1"
1629 sources."d-1.0.0"
1630 sources."debug-2.6.9"
1631 sources."deep-is-0.1.3"
1632 sources."del-2.2.2"
1633 sources."doctrine-2.0.2"
1634 sources."encoding-0.1.12"
1635 sources."es5-ext-0.10.37"
1636 sources."es6-iterator-2.0.3"
1637 sources."es6-map-0.1.5"
1638 sources."es6-set-0.1.5"
1639 sources."es6-symbol-3.1.1"
1640 sources."es6-weak-map-2.0.2"
1641 sources."escape-string-regexp-1.0.5"
1642 sources."escope-3.6.0"
1643 (sources."eslint-3.19.0" // {
1644 dependencies = [
1645 sources."ansi-styles-2.2.1"
1646 sources."chalk-1.1.3"
1647 sources."supports-color-2.0.0"
1648 ];
1649 })
1650 sources."espree-3.5.2"
1651 sources."esprima-4.0.0"
1652 sources."esquery-1.0.0"
1653 sources."esrecurse-4.2.0"
1654 sources."estraverse-4.2.0"
1655 sources."esutils-2.0.2"
1656 sources."event-emitter-0.3.5"
1657 sources."exit-hook-1.1.1"
1658 sources."fast-levenshtein-2.0.6"
1659 sources."figures-1.7.0"
1660 sources."file-entry-cache-2.0.0"
1661 sources."flat-cache-1.3.0"
1662 sources."fs.realpath-1.0.0"
1663 sources."generate-function-2.0.0"
1664 sources."generate-object-property-1.2.0"
1665 sources."glob-7.1.2"
1666 sources."globals-9.18.0"
1667 sources."globby-5.0.0"
1668 sources."graceful-fs-4.1.11"
1669 sources."has-ansi-2.0.0"
1670 sources."has-flag-2.0.0"
1671 sources."iconv-lite-0.4.19"
1672 sources."ignore-3.3.7"
1673 sources."imurmurhash-0.1.4"
1674 sources."in-publish-2.0.0"
1675 sources."inflight-1.0.6"
1676 sources."inherits-2.0.3"
1677 (sources."inquirer-0.12.0" // {
1678 dependencies = [
1679 sources."ansi-styles-2.2.1"
1680 sources."chalk-1.1.3"
1681 sources."supports-color-2.0.0"
1682 ];
1683 })
1684 sources."install-0.10.4"
1685 sources."interpret-1.1.0"
1686 sources."iota.lib.js-0.4.6"
1687 sources."is-fullwidth-code-point-1.0.0"
1688 sources."is-my-json-valid-2.16.1"
1689 sources."is-path-cwd-1.0.0"
1690 sources."is-path-in-cwd-1.0.0"
1691 sources."is-path-inside-1.0.1"
1692 sources."is-property-1.0.2"
1693 sources."is-resolvable-1.0.1"
1694 sources."is-stream-1.1.0"
1695 sources."isarray-1.0.0"
1696 sources."js-tokens-3.0.2"
1697 sources."js-yaml-3.10.0"
1698 sources."json-stable-stringify-1.0.1"
1699 sources."json5-0.5.1"
1700 sources."jsonify-0.0.0"
1701 sources."jsonpointer-4.0.1"
1702 sources."left-pad-1.2.0"
1703 sources."levn-0.3.0"
1704 sources."lodash-4.17.4"
1705 sources."log-update-1.0.2"
1706 sources."minimatch-3.0.4"
1707 sources."minimist-0.0.8"
1708 sources."mkdirp-0.5.1"
1709 sources."moment-2.20.1"
1710 sources."ms-2.0.0"
1711 sources."mute-stream-0.0.5"
1712 sources."natural-compare-1.4.0"
1713 sources."node-fetch-1.7.3"
1714 sources."node-localstorage-0.6.0"
1715 sources."number-is-nan-1.0.1"
1716 sources."object-assign-4.1.1"
1717 sources."once-1.4.0"
1718 sources."onetime-1.1.0"
1719 sources."optionator-0.8.2"
1720 sources."os-homedir-1.0.2"
1721 sources."path-is-absolute-1.0.1"
1722 sources."path-is-inside-1.0.2"
1723 sources."path-parse-1.0.5"
1724 sources."pify-2.3.0"
1725 sources."pinkie-2.0.4"
1726 sources."pinkie-promise-2.0.1"
1727 sources."pluralize-1.2.1"
1728 sources."prelude-ls-1.1.2"
1729 (sources."prettyjson-1.2.1" // {
1730 dependencies = [
1731 sources."minimist-1.2.0"
1732 ];
1733 })
1734 sources."process-nextick-args-1.0.7"
1735 sources."progress-1.1.8"
1736 sources."readable-stream-2.3.3"
1737 sources."readline2-1.0.1"
1738 sources."rechoir-0.6.2"
1739 sources."regenerator-runtime-0.10.5"
1740 sources."require-uncached-1.0.3"
1741 sources."resolve-1.5.0"
1742 sources."resolve-from-1.0.1"
1743 sources."restore-cursor-1.0.1"
1744 sources."rimraf-2.6.2"
1745 sources."run-async-0.1.0"
1746 sources."rx-lite-3.1.2"
1747 sources."safe-buffer-5.1.1"
1748 sources."shelljs-0.7.8"
1749 sources."slice-ansi-0.0.4"
1750 sources."sprintf-js-1.0.3"
1751 sources."string-width-1.0.2"
1752 sources."string_decoder-1.0.3"
1753 sources."strip-ansi-3.0.1"
1754 sources."strip-bom-3.0.0"
1755 sources."strip-json-comments-2.0.1"
1756 sources."supports-color-4.5.0"
1757 (sources."table-3.8.3" // {
1758 dependencies = [
1759 sources."ansi-regex-3.0.0"
1760 sources."ansi-styles-2.2.1"
1761 (sources."chalk-1.1.3" // {
1762 dependencies = [
1763 sources."ansi-regex-2.1.1"
1764 sources."strip-ansi-3.0.1"
1765 ];
1766 })
1767 sources."is-fullwidth-code-point-2.0.0"
1768 sources."string-width-2.1.1"
1769 sources."strip-ansi-4.0.0"
1770 sources."supports-color-2.0.0"
1771 ];
1772 })
1773 sources."text-table-0.2.0"
1774 sources."through-2.3.8"
1775 sources."type-check-0.3.2"
1776 sources."typedarray-0.0.6"
1777 sources."user-home-2.0.0"
1778 sources."util-deprecate-1.0.2"
1779 (sources."vorpal-1.12.0" // {
1780 dependencies = [
1781 sources."ansi-styles-2.2.1"
1782 sources."chalk-1.1.3"
1783 sources."cli-width-1.1.1"
1784 (sources."inquirer-0.11.0" // {
1785 dependencies = [
1786 sources."lodash-3.10.1"
1787 ];
1788 })
1789 sources."minimist-1.2.0"
1790 sources."supports-color-2.0.0"
1791 ];
1792 })
1793 sources."wordwrap-1.0.0"
1794 sources."wrap-ansi-2.1.0"
1795 sources."wrappy-1.0.2"
1796 sources."write-0.2.1"
1797 sources."xmlhttprequest-1.8.0"
1798 sources."xtend-4.0.1"
1799 ];
1800 buildInputs = globalBuildInputs;
1801 meta = {
1802 description = "IOTA CLI";
1803 homepage = "https://github.com/iotaledger/cli-app#readme";
1804 license = "MIT";
1805 };
1806 production = true;
1807 bypassCache = true;
1808 };
1809in
1810{
1811 tarball = nodeEnv.buildNodeSourceDist args;
1812 package = nodeEnv.buildNodePackage args;
1813 shell = nodeEnv.buildNodeShell args;
1814}
diff --git a/flakes/mypackages/pkgs/crypto/sia/default.nix b/flakes/mypackages/pkgs/crypto/sia/default.nix
new file mode 100644
index 0000000..27e4014
--- /dev/null
+++ b/flakes/mypackages/pkgs/crypto/sia/default.nix
@@ -0,0 +1,21 @@
1{ stdenv, fetchzip, autoPatchelfHook }:
2stdenv.mkDerivation rec {
3 version = "v1.4.3";
4 name = "Sia-${version}";
5 src = fetchzip {
6 url = "https://sia.tech/static/releases/${name}-linux-amd64.zip";
7 sha256 = "1i67zjzk4cwfzb1dxaxc1m41fa44sz1d0mf6dmlyg6pm4cyqizki";
8 };
9 phases = "installPhase fixupPhase";
10 nativeBuildInputs = [
11 autoPatchelfHook
12 ];
13 installPhase = ''
14 mkdir -p $out/share/doc
15 mkdir -p $out/bin
16 mkdir -p $out/share/sia
17 cp -a $src/doc $out/share/doc/sia
18 cp -a $src/LICENSE $src/README.md $out/share/sia
19 cp -a $src/{siac,siad} $out/bin
20 '';
21}
diff --git a/flakes/mypackages/pkgs/default.nix b/flakes/mypackages/pkgs/default.nix
new file mode 100644
index 0000000..cd6b1a1
--- /dev/null
+++ b/flakes/mypackages/pkgs/default.nix
@@ -0,0 +1,64 @@
1{ pkgs, mylibs, sources }:
2let
3 inherit (pkgs) callPackage python2Packages python38Packages python38;
4 composerEnv = callPackage ./composer-env {};
5 webapps = import ./webapps { inherit callPackage mylibs composerEnv sources; };
6in
7rec {
8 bash-libs = callPackage ./bash-libs {};
9 boinctui = callPackage ./boinctui {};
10 cnagios = callPackage ./cnagios {};
11 commento = callPackage ./commento {};
12 flrn = callPackage ./flrn { slang = callPackage ./slang_1 {}; };
13 fluentd = callPackage ./fluentd {};
14 fluent-bit = callPackage ./fluent-bit {};
15 genius = callPackage ./genius {};
16 ical2html = callPackage ./ical2html {};
17 mtop = callPackage ./mtop {};
18 muttprint = callPackage ./muttprint {};
19 mutt-ics = callPackage ./mutt-ics {};
20 nagios-cli = callPackage ./nagios-cli {};
21 nagnu = callPackage ./nagnu {};
22 nb = callPackage ./nb {};
23 note = callPackage ./note {};
24 notmuch-python2 = callPackage ./notmuch/notmuch-python { pythonPackages = python2Packages; };
25 notmuch-python3 = callPackage ./notmuch/notmuch-python { pythonPackages = python38Packages; };
26 notmuch-vim = callPackage ./notmuch/notmuch-vim {};
27 perl-ical-parser-html = callPackage ./perl-ical-parser-html {};
28 pgpid = callPackage ./pgpid { inherit bash-libs; };
29 predixy = callPackage ./predixy {};
30 riotkit-do = callPackage ./riotkit-do {};
31 rrsync_sudo = callPackage ./rrsync_sudo {};
32 signaldctl = callPackage ./signaldctl {};
33 telegram-history-dump = callPackage ./telegram-history-dump {};
34 telegramircd = callPackage ./telegramircd { telethon = callPackage ./telethon_sync {}; };
35 terminal-velocity = callPackage ./terminal-velocity {};
36 tiv = callPackage ./tiv {};
37 twins = callPackage ./twins {};
38 upcmd = callPackage ./upcmd {};
39 umami = callPackage ./umami {};
40 unicodeDoc = callPackage ./unicode {};
41 shaarli = callPackage ./shaarli {};
42
43 cardano = callPackage ./crypto/cardano {};
44 cardano-cli = callPackage ./crypto/cardano-cli {};
45 iota-cli-app = callPackage ./crypto/iota-cli-app { inherit mylibs; };
46 sia = callPackage ./crypto/sia {};
47
48 proftpd = callPackage ./proftpd {};
49 pure-ftpd = callPackage ./pure-ftpd {};
50
51 inherit composerEnv;
52
53 monitoring-plugins = callPackage ./monitoring-plugins {};
54 naemon = callPackage ./naemon { inherit monitoring-plugins; };
55 naemon-livestatus = callPackage ./naemon-livestatus { inherit naemon; };
56 gearmand = callPackage ./gearmand {};
57 status-engine-module = callPackage ./status_engine/module.nix { inherit gearmand; };
58 status-engine-worker = callPackage ./status_engine/worker.nix { inherit composerEnv gearmand; };
59 status-engine-interface = callPackage ./status_engine/interface.nix { inherit composerEnv; };
60
61 dovecot_deleted-to-trash = callPackage ./dovecot/plugins/deleted_to_trash {};
62}
63# lib.mapAttrs' produces infinite recursion
64// (builtins.listToAttrs (builtins.map (n: { name = "webapps-${n}"; value = webapps."${n}"; }) (builtins.attrNames webapps)))
diff --git a/flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/default.nix b/flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/default.nix
new file mode 100644
index 0000000..f270032
--- /dev/null
+++ b/flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/default.nix
@@ -0,0 +1,30 @@
1{ stdenv, fetchurl, dovecot, fetchFromGitHub, fetchpatch }:
2
3stdenv.mkDerivation ({
4 pname = "dovecot-deleted_to_trash";
5 version = "81b0754-master";
6 src = fetchFromGitHub {
7 owner = "lexbrugman";
8 repo = "dovecot_deleted_to_trash";
9 rev = "81b07549accfc36467bf8527a53c295c7a02dbb9";
10 sha256 = "1b3k31g898s4fa0a9l4kvjsdyds772waaay84sjdxv09jw6mqs0f";
11 fetchSubmodules = true;
12 };
13 buildInputs = [ dovecot ];
14 patches = [
15 (fetchpatch {
16 name = "fix-dovecot-2.3.diff";
17 url = "https://github.com/lexbrugman/dovecot_deleted_to_trash/commit/c52a3799a96104a603ade33404ef6aa1db647b2f.diff";
18 sha256 = "0pld3rdcjp9df2qxbp807k6v4f48lyk0xy5q508ypa57d559y6dq";
19 })
20 ./fix_mbox.patch
21 ];
22 preConfigure = ''
23 substituteInPlace Makefile --replace \
24 "/usr/include/dovecot" \
25 "${dovecot}/include/dovecot"
26 substituteInPlace Makefile --replace \
27 "/usr/lib/dovecot/modules" \
28 "$out/lib/dovecot"
29 '';
30})
diff --git a/flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/fix_mbox.patch b/flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/fix_mbox.patch
new file mode 100644
index 0000000..0060fb4
--- /dev/null
+++ b/flakes/mypackages/pkgs/dovecot/plugins/deleted_to_trash/fix_mbox.patch
@@ -0,0 +1,12 @@
1diff --git a/src/deleted-to-trash-plugin.c b/src/deleted-to-trash-plugin.c
2index bb4cc78..66bad53 100644
3--- a/src/deleted-to-trash-plugin.c
4+++ b/src/deleted-to-trash-plugin.c
5@@ -82,6 +82,7 @@ static struct mailbox *mailbox_open_or_create(struct mailbox_list *list, const c
6 *error_r = mail_storage_get_last_error(mailbox_get_storage(box), &error);
7 if (error != MAIL_ERROR_NOTFOUND)
8 {
9+ i_error("%s", *error_r);
10 mailbox_free(&box);
11 return NULL;
12 }
diff --git a/flakes/mypackages/pkgs/flrn/default.nix b/flakes/mypackages/pkgs/flrn/default.nix
new file mode 100644
index 0000000..088654c
--- /dev/null
+++ b/flakes/mypackages/pkgs/flrn/default.nix
@@ -0,0 +1,22 @@
1{ stdenv, fetchFromGitHub, libetpan, openssl, autoconf, groff, slang, yacc }:
2stdenv.mkDerivation (rec {
3 version = "860d642-master";
4 pname = "flrn";
5 src = fetchFromGitHub {
6 owner = "Cigaes";
7 repo = "flrn";
8 rev = "860d642bd6389a209c8b697bd044f78d23406509";
9 sha256 = "0sqlxxpy1xg7cb2hbxcr0al46nyr6jjnns4b5i8w04z5sypa9r5c";
10 fetchSubmodules = true;
11 };
12 buildInputs = [ libetpan openssl autoconf groff slang yacc ];
13 preConfigure = ''
14 sed -i -e "s/test -e configure/false/" configure.in
15 autoconf
16 sed -i -e '/define CHECK_MAIL/d' src/flrn_config.h
17 sed -i -e '/DEFAULT_DIR_FILE/s@".flrn"@".config/flrn"@' src/flrn_config.h
18 sed -i -e '/DEFAULT_CONFIG_FILE/s@".flrnrc"@"flrnrc"@' src/flrn_config.h
19 sed -i -e '/DEFAULT_FLNEWS_FILE/s@".flnewsrc"@"flnewsrc"@' src/flrn_config.h
20 sed -i -e '/flrn_char chaine/s@18@20@' src/flrn_command.c
21 '';
22})
diff --git a/flakes/mypackages/pkgs/fluent-bit/default.nix b/flakes/mypackages/pkgs/fluent-bit/default.nix
new file mode 100644
index 0000000..390223e
--- /dev/null
+++ b/flakes/mypackages/pkgs/fluent-bit/default.nix
@@ -0,0 +1,47 @@
1{ lib, stdenv, fetchFromGitHub, cmake, flex, bison, pkg-config
2, systemd, openssl, postgresql }:
3
4stdenv.mkDerivation rec {
5 pname = "fluent-bit";
6 version = "1.8.3";
7
8 src = fetchFromGitHub {
9 owner = "fluent";
10 repo = "fluent-bit";
11 rev = "v${version}";
12 sha256 = "004x135imja67babmmpkk1jpp5xwhfa8cwg1svaas2asq6cnv77d";
13 };
14
15 nativeBuildInputs = [ cmake flex bison pkg-config postgresql ];
16
17 buildInputs = [ openssl ]
18 ++ lib.optionals stdenv.isLinux [ systemd ];
19
20 cmakeFlags = [ "-DFLB_METRICS=ON" "-DFLB_HTTP_SERVER=ON" "-DFLB_SQLDB=ON" "-DFLB_OUT_PGSQL=ON" "-DFLB_IN_SYSTEMD=ON" ];
21
22 patches = lib.optionals stdenv.isDarwin [ ./fix-luajit-darwin.patch ];
23
24 NIX_CFLAGS_COMPILE = lib.optionals stdenv.cc.isGNU [
25 # _FORTIFY_SOURCE requires compiling with optimization (-O)
26 "-O"
27 # Needed due to bundled mbedtls
28 "-Wno-error=format"
29 "-Wno-error=format-truncation"
30 ];
31
32
33 outputs = [ "out" "dev" ];
34
35 postPatch = ''
36 substituteInPlace src/CMakeLists.txt \
37 --replace /lib/systemd $out/lib/systemd
38 '';
39
40 meta = with lib; {
41 description = "Log forwarder and processor, part of Fluentd ecosystem";
42 homepage = "https://fluentbit.io";
43 maintainers = with maintainers; [ samrose fpletz ];
44 license = licenses.asl20;
45 platforms = platforms.unix;
46 };
47}
diff --git a/flakes/mypackages/pkgs/fluentd/Gemfile b/flakes/mypackages/pkgs/fluentd/Gemfile
new file mode 100644
index 0000000..71486df
--- /dev/null
+++ b/flakes/mypackages/pkgs/fluentd/Gemfile
@@ -0,0 +1,3 @@
1source "https://rubygems.org"
2
3gem 'fluentd'
diff --git a/flakes/mypackages/pkgs/fluentd/Gemfile.lock b/flakes/mypackages/pkgs/fluentd/Gemfile.lock
new file mode 100644
index 0000000..3f022cf
--- /dev/null
+++ b/flakes/mypackages/pkgs/fluentd/Gemfile.lock
@@ -0,0 +1,38 @@
1GEM
2 remote: https://rubygems.org/
3 specs:
4 concurrent-ruby (1.1.9)
5 cool.io (1.7.1)
6 fluentd (1.13.3)
7 bundler
8 cool.io (>= 1.4.5, < 2.0.0)
9 http_parser.rb (>= 0.5.1, < 0.8.0)
10 msgpack (>= 1.3.1, < 2.0.0)
11 serverengine (>= 2.2.2, < 3.0.0)
12 sigdump (~> 0.2.2)
13 strptime (>= 0.2.2, < 1.0.0)
14 tzinfo (>= 1.0, < 3.0)
15 tzinfo-data (~> 1.0)
16 webrick (>= 1.4.2, < 1.8.0)
17 yajl-ruby (~> 1.0)
18 http_parser.rb (0.7.0)
19 msgpack (1.4.2)
20 serverengine (2.2.4)
21 sigdump (~> 0.2.2)
22 sigdump (0.2.4)
23 strptime (0.2.5)
24 tzinfo (2.0.4)
25 concurrent-ruby (~> 1.0)
26 tzinfo-data (1.2021.1)
27 tzinfo (>= 1.0.0)
28 webrick (1.7.0)
29 yajl-ruby (1.4.1)
30
31PLATFORMS
32 x86_64-linux
33
34DEPENDENCIES
35 fluentd
36
37BUNDLED WITH
38 2.2.20
diff --git a/flakes/mypackages/pkgs/fluentd/default.nix b/flakes/mypackages/pkgs/fluentd/default.nix
new file mode 100644
index 0000000..f6a22f0
--- /dev/null
+++ b/flakes/mypackages/pkgs/fluentd/default.nix
@@ -0,0 +1,20 @@
1{ ruby, bundlerEnv, bundlerUpdateScript, lib }:
2
3bundlerEnv {
4 inherit ruby;
5
6 pname = "fluentd";
7 gemdir = ./.;
8
9 passthru.updateScript = bundlerUpdateScript "fluentd";
10
11 copyGemFiles = true;
12
13 meta = with lib; {
14 description = "A data collector";
15 homepage = "https://www.fluentd.org/";
16 license = licenses.asl20;
17 maintainers = with maintainers; [ offline nicknovitski ];
18 platforms = platforms.unix;
19 };
20}
diff --git a/flakes/mypackages/pkgs/fluentd/gemset.nix b/flakes/mypackages/pkgs/fluentd/gemset.nix
new file mode 100644
index 0000000..8ee42b6
--- /dev/null
+++ b/flakes/mypackages/pkgs/fluentd/gemset.nix
@@ -0,0 +1,126 @@
1{
2 concurrent-ruby = {
3 groups = ["default"];
4 platforms = [];
5 source = {
6 remotes = ["https://rubygems.org"];
7 sha256 = "0nwad3211p7yv9sda31jmbyw6sdafzmdi2i2niaz6f0wk5nq9h0f";
8 type = "gem";
9 };
10 version = "1.1.9";
11 };
12 "cool.io" = {
13 groups = ["default"];
14 platforms = [];
15 source = {
16 remotes = ["https://rubygems.org"];
17 sha256 = "0dfq4h168wzvs9cvn2mm8648ynkl936pgjva2p8ik34p6d620537";
18 type = "gem";
19 };
20 version = "1.7.1";
21 };
22 fluentd = {
23 dependencies = ["cool.io" "http_parser.rb" "msgpack" "serverengine" "sigdump" "strptime" "tzinfo" "tzinfo-data" "webrick" "yajl-ruby"];
24 groups = ["default"];
25 platforms = [];
26 source = {
27 remotes = ["https://rubygems.org"];
28 sha256 = "12k9b9903x5fi3lqb41h20qx8s0fwx7chjldbxmyi7j1x6xdm7cv";
29 type = "gem";
30 };
31 version = "1.13.3";
32 };
33 "http_parser.rb" = {
34 groups = ["default"];
35 platforms = [];
36 source = {
37 remotes = ["https://rubygems.org"];
38 sha256 = "1xha614fi6l04wryqjj1xmpalzlmhb6lb9qmlh8mmliycdhvcshp";
39 type = "gem";
40 };
41 version = "0.7.0";
42 };
43 msgpack = {
44 groups = ["default"];
45 platforms = [];
46 source = {
47 remotes = ["https://rubygems.org"];
48 sha256 = "06iajjyhx0rvpn4yr3h1hc4w4w3k59bdmfhxnjzzh76wsrdxxrc6";
49 type = "gem";
50 };
51 version = "1.4.2";
52 };
53 serverengine = {
54 dependencies = ["sigdump"];
55 groups = ["default"];
56 platforms = [];
57 source = {
58 remotes = ["https://rubygems.org"];
59 sha256 = "1gzhggx40a53mnv4f32xag4h6ai0s5m3w06s59b0h6ih7rqvwns9";
60 type = "gem";
61 };
62 version = "2.2.4";
63 };
64 sigdump = {
65 groups = ["default"];
66 platforms = [];
67 source = {
68 remotes = ["https://rubygems.org"];
69 sha256 = "1mqf06iw7rymv54y7rgbmfi6ppddgjjmxzi3hrw658n1amp1gwhb";
70 type = "gem";
71 };
72 version = "0.2.4";
73 };
74 strptime = {
75 groups = ["default"];
76 platforms = [];
77 source = {
78 remotes = ["https://rubygems.org"];
79 sha256 = "1ycs0xz58kymf7yp4h56f0nid2z7g3s18dj7pa3p790pfzzpgvcq";
80 type = "gem";
81 };
82 version = "0.2.5";
83 };
84 tzinfo = {
85 dependencies = ["concurrent-ruby"];
86 groups = ["default"];
87 platforms = [];
88 source = {
89 remotes = ["https://rubygems.org"];
90 sha256 = "10qp5x7f9hvlc0psv9gsfbxg4a7s0485wsbq1kljkxq94in91l4z";
91 type = "gem";
92 };
93 version = "2.0.4";
94 };
95 tzinfo-data = {
96 dependencies = ["tzinfo"];
97 groups = ["default"];
98 platforms = [];
99 source = {
100 remotes = ["https://rubygems.org"];
101 sha256 = "0ik16lnsyr2739jzwl4r5sz8q639lqw8f9s68iszwhm2pcq8p4w2";
102 type = "gem";
103 };
104 version = "1.2021.1";
105 };
106 webrick = {
107 groups = ["default"];
108 platforms = [];
109 source = {
110 remotes = ["https://rubygems.org"];
111 sha256 = "1d4cvgmxhfczxiq5fr534lmizkhigd15bsx5719r5ds7k7ivisc7";
112 type = "gem";
113 };
114 version = "1.7.0";
115 };
116 yajl-ruby = {
117 groups = ["default"];
118 platforms = [];
119 source = {
120 remotes = ["https://rubygems.org"];
121 sha256 = "16v0w5749qjp13xhjgr2gcsvjv6mf35br7iqwycix1n2h7kfcckf";
122 type = "gem";
123 };
124 version = "1.4.1";
125 };
126} \ No newline at end of file
diff --git a/flakes/mypackages/pkgs/gearmand/default.nix b/flakes/mypackages/pkgs/gearmand/default.nix
new file mode 100644
index 0000000..14ef8c2
--- /dev/null
+++ b/flakes/mypackages/pkgs/gearmand/default.nix
@@ -0,0 +1,16 @@
1{ stdenv, fetchurl, boost, gperf, libevent, libmysqlclient, libuuid, sqlite, hiredis, postgresql, openssl }:
2stdenv.mkDerivation rec {
3 pname = "gearmand";
4 version = "1.1.20";
5 src = fetchurl {
6 url = "https://github.com/gearman/${pname}/releases/download/${version}/${pname}-${version}.tar.gz";
7 sha256 = "sha256-L2D6IH3NcwWV75ap3DyomVZnB8gXYQazxj7PR+3BR6Y=";
8 };
9 buildInputs = [ boost gperf libevent openssl libmysqlclient libuuid sqlite hiredis postgresql ];
10 configureFlags = [
11 "--with-boost=${boost.dev}"
12 "--with-boost-libdir=${boost}/lib"
13 "--with-openssl=${openssl.dev}"
14 "--enable-ssl"
15 ];
16}
diff --git a/flakes/mypackages/pkgs/genius/default.nix b/flakes/mypackages/pkgs/genius/default.nix
new file mode 100644
index 0000000..54a7957
--- /dev/null
+++ b/flakes/mypackages/pkgs/genius/default.nix
@@ -0,0 +1,19 @@
1{ stdenv, fetchurl, mpfr, glib, hicolor-icon-theme, gtk2, intltool, gnome-doc-utils, python38, gnome2, autoconf, automake, libtool, ncurses, readline, pkg-config, }:
2stdenv.mkDerivation rec {
3 name = "genius-${version}";
4 version = "1.0.24";
5 src = fetchurl {
6 url = "https://download.gnome.org/sources/genius/1.0/${name}.tar.xz";
7 sha256 = "772f95f6ae4716d39bb180cd50e8b6b9b074107bee0cd083b825e1e6e55916b6";
8 };
9 buildInputs = [
10 mpfr glib hicolor-icon-theme gtk2 intltool gnome-doc-utils python38 gnome2.gtksourceview
11 autoconf automake libtool ncurses readline pkg-config
12 ];
13 preConfigure = ''
14 autoreconf -fi
15 '';
16 preBuild = ''
17 sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
18 '';
19}
diff --git a/flakes/mypackages/pkgs/ical2html/default.nix b/flakes/mypackages/pkgs/ical2html/default.nix
new file mode 100644
index 0000000..62e0b95
--- /dev/null
+++ b/flakes/mypackages/pkgs/ical2html/default.nix
@@ -0,0 +1,11 @@
1{ stdenv, fetchurl, libical }:
2stdenv.mkDerivation rec {
3 pname = "ical2html";
4 version = "3.0";
5 src= fetchurl {
6 url = "https://www.w3.org/Tools/Ical2html/${pname}-${version}.tar.gz";
7 sha256 = "sha256-1QhE04cmohhPgZ3I8jz28Z7ZnSJkH2aPnRse5/pReEA=";
8 };
9 buildInputs = [ libical ];
10
11}
diff --git a/flakes/mypackages/pkgs/monitoring-plugins/default.nix b/flakes/mypackages/pkgs/monitoring-plugins/default.nix
new file mode 100644
index 0000000..b09d7a4
--- /dev/null
+++ b/flakes/mypackages/pkgs/monitoring-plugins/default.nix
@@ -0,0 +1,33 @@
1{ stdenv, iputils, fetchpatch, fetchurl, file, hostname, perl, openssl,
2 bind, openldap, procps, postfix,
3 wrapperDir ? "/run/wrappers/bin"
4}:
5stdenv.mkDerivation rec {
6 pname = "monitoring-plugins";
7 version = "2.2";
8 name = "${pname}-${version}";
9
10 src = fetchurl {
11 url = "https://www.monitoring-plugins.org/download/${name}.tar.gz";
12 sha256 = "0r9nvnk64nv7k8w352n99lw4p92pycxd9wlga9zyzjx9027m6si9";
13 };
14
15 patches = [
16 (fetchpatch {
17 name = "mariadb.patch";
18 url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/0001-mariadb.patch?h=packages/monitoring-plugins";
19 sha256 = "0jf6fqkyzag66rid92m7asnr2dp8rr8kn4zjvhqg0mqvf8imppky";
20 })
21 ];
22
23 # ping needs CAP_NET_RAW capability which is set only in the wrappers namespace
24 configurePhase = ''
25 ./configure --disable-static --disable-dependency-tracking \
26 --prefix=$out \
27 --with-ping-command="${wrapperDir}/ping -4 -n -U -w %d -c %d %s" \
28 --with-ping6-command="${wrapperDir}/ping -6 -n -U -w %d -c %d %s" \
29 --with-sudo-command="${wrapperDir}/sudo"
30 '';
31
32 buildInputs = [ perl file hostname iputils openssl openldap procps bind.dnsutils postfix ];
33}
diff --git a/flakes/mypackages/pkgs/mtop/default.nix b/flakes/mypackages/pkgs/mtop/default.nix
new file mode 100644
index 0000000..ca9be2c
--- /dev/null
+++ b/flakes/mypackages/pkgs/mtop/default.nix
@@ -0,0 +1,24 @@
1{ fetchurl, perlPackages, lib }:
2perlPackages.buildPerlPackage rec {
3 pname = "mtop";
4 version = "0.6.6";
5 src = fetchurl {
6 url = "http://downloads.sourceforge.net/project/mtop/mtop/v${version}/mtop-${version}.tar.gz";
7 sha256 = "0x0x5300b1j9i0xxk8rsrki0pspyzj2vylhzv8qg3l6j26aw0zrf";
8 };
9 outputs = ["out"];
10 buildInputs = with perlPackages; [ DBI DBDmysql Curses ];
11
12 postInstall = ''
13 cd "$out"
14 preConfigure || true
15 '';
16
17 meta = with lib; {
18 description = "MySQL top (monitor and examine slow queries)";
19 homepage = http://mtop.sourceforge.net/;
20 license = licenses.gpl3;
21 maintainers = with maintainers; [ { name = "Marc Prewitt"; email = "mprewitt@chelsea.net"; } ];
22 platforms = platforms.unix;
23 };
24}
diff --git a/flakes/mypackages/pkgs/mutt-ics/default.nix b/flakes/mypackages/pkgs/mutt-ics/default.nix
new file mode 100644
index 0000000..2d50475
--- /dev/null
+++ b/flakes/mypackages/pkgs/mutt-ics/default.nix
@@ -0,0 +1,15 @@
1{ python3Packages, fetchFromGitHub }:
2with python3Packages;
3buildPythonApplication (rec {
4 version = "d291187-master";
5 pname = "mutt-ics";
6 name = "${pname}-${version}";
7 src = fetchFromGitHub {
8 owner = "dmedvinsky";
9 repo = "mutt-ics";
10 rev = "d29118788f291f67d34fefa6eda9f95846a2fe34";
11 sha256 = "0kqzngsvzjq5gpf60jhfmb2xzjznvk172khf4dlcb72n3ak4rb92";
12 fetchSubmodules = true;
13 };
14 propagatedBuildInputs = [ icalendar ];
15})
diff --git a/flakes/mypackages/pkgs/muttprint/0.73-4.diff.gz b/flakes/mypackages/pkgs/muttprint/0.73-4.diff.gz
new file mode 100644
index 0000000..c4f3cef
--- /dev/null
+++ b/flakes/mypackages/pkgs/muttprint/0.73-4.diff.gz
Binary files differ
diff --git a/flakes/mypackages/pkgs/muttprint/default.nix b/flakes/mypackages/pkgs/muttprint/default.nix
new file mode 100644
index 0000000..0863a7b
--- /dev/null
+++ b/flakes/mypackages/pkgs/muttprint/default.nix
@@ -0,0 +1,44 @@
1{ stdenv, fetchurl, lib, psutils, dialog, texlive, makeWrapper, automake, autoconf, imagemagick, ghostscript, perl, perlPackages }:
2stdenv.mkDerivation rec {
3 name = "muttprint-${version}";
4 version = "0.73";
5 src = fetchurl {
6 url = "http://downloads.sf.net/muttprint/${name}.tar.gz";
7 sha256 = "1dny4niyibfgazwlzfcnb37jy6k140rs6baaj629z12rmahfdavw";
8 };
9 patches = [
10 ./0.73-4.diff.gz
11 ./regex.patch
12 ./two_edge.patch
13 ];
14 preConfigure = ''
15 aclocal
16 automake --add-missing --copy
17 autoconf
18 '';
19 preBuild = ''
20 cd pics
21 convert -flop BabyTuX.eps BabyTuX.eps
22 for i in BabyTuX_color.eps BabyTuX.eps Debian_color.eps \
23 Debian.eps Gentoo.eps Gentoo_color.eps ; do
24 convert $i $(basename $i .eps).png
25 done
26 convert penguin.eps penguin.jpg
27 cd ..
28 '';
29 postInstall = ''
30 perlFlags=
31 for i in $(IFS=:; echo $PERL5LIB); do
32 perlFlags="$perlFlags -I$i"
33 done
34
35 sed -i "$out/bin/muttprint" -e "s|^#\!\(.*[ /]perl.*\)$|#\!\1$perlFlags|"
36 sed -i "$out/bin/muttprint" -e "s|ENV{HOME}/.muttprintrc|ENV{XDG_CONFIG_HOME}/muttprint/muttprintrc|"
37
38 wrapProgram $out/bin/muttprint \
39 --prefix PATH : ${lib.makeBinPath [ psutils dialog
40 (texlive.combine { inherit (texlive) scheme-basic utopia fancyvrb lastpage marvosym ucs cm-super; }) ]}
41 '';
42 buildInputs = [ makeWrapper automake autoconf imagemagick ghostscript perl ] ++
43 (with perlPackages; [ TimeDate FileWhich TextIconv ]);
44}
diff --git a/flakes/mypackages/pkgs/muttprint/regex.patch b/flakes/mypackages/pkgs/muttprint/regex.patch
new file mode 100644
index 0000000..e99c4a2
--- /dev/null
+++ b/flakes/mypackages/pkgs/muttprint/regex.patch
@@ -0,0 +1,11 @@
1--- a/muttprint 2015-07-21 11:18:04.219578426 +1200
2+++ b/muttprint 2015-07-21 11:18:53.906243779 +1200
3@@ -1635,7 +1635,7 @@
4 open (AUX, "$auxfile") or fatalError "Could not open $auxfile:\n$!";
5
6 while (<AUX>) {
7- ($numberOfPages) = /\\newlabel{LastPage}{{}{(\d+)}}/;
8+ ($numberOfPages) = /\\newlabel\{LastPage}\{\{}\{(\d+)}}/;
9 }
10
11 close AUX or fatalError "Could not close $auxfile:\n$!";
diff --git a/flakes/mypackages/pkgs/muttprint/two_edge.patch b/flakes/mypackages/pkgs/muttprint/two_edge.patch
new file mode 100644
index 0000000..4a7290d
--- /dev/null
+++ b/flakes/mypackages/pkgs/muttprint/two_edge.patch
@@ -0,0 +1,19 @@
1--- a/muttprint 2016-05-05 13:48:50.515950744 +1200
2+++ b/muttprint 2016-05-05 13:52:10.722623902 +1200
3@@ -643,14 +643,14 @@
4 if ($Config{PAPERSAVE} eq "on") {
5 if ($useCups) {
6 $Config{PRINT_COMMAND} =~
7- s/\$CUPS_OPTIONS/ -o sides=two-sided-long-edge \$CUPS_OPTIONS/;
8+ s/\$CUPS_OPTIONS/ -o sides=two-sided-short-edge \$CUPS_OPTIONS/;
9 } else { # no cups
10 modifyPS("landscape");
11 }
12 } else { # no papersave
13 if ($useCups) {
14 $Config{PRINT_COMMAND} =~
15- s/\$CUPS_OPTIONS/ -o sides=two-sided-short-edge \$CUPS_OPTIONS/;
16+ s/\$CUPS_OPTIONS/ -o sides=two-sided-long-edge \$CUPS_OPTIONS/;
17 } else { # no cups
18 modifyPS("portrait");
19 }
diff --git a/flakes/mypackages/pkgs/naemon-livestatus/default.nix b/flakes/mypackages/pkgs/naemon-livestatus/default.nix
new file mode 100644
index 0000000..623230a
--- /dev/null
+++ b/flakes/mypackages/pkgs/naemon-livestatus/default.nix
@@ -0,0 +1,32 @@
1{ stdenv, fetchFromGitHub, autoconf, automake,
2 libtool, pkg-config, naemon,
3 varDir ? "/var/lib/naemon",
4 etcDir ? "/etc/naemon"
5}:
6stdenv.mkDerivation ({
7 pname = "naemon-livestatus";
8 version = "33dbcfe-master";
9 src = fetchFromGitHub {
10 owner = "naemon";
11 repo = "naemon-livestatus";
12 rev = "33dbcfe18e42158f25c27cff95a1e07b73be53b0";
13 sha256 = "16jk0c6pwr7ck0g6s12hj6czbhgdr7c7f74zzsp5279af86y8fd6";
14 fetchSubmodules = true;
15 };
16 preConfigure = ''
17 ./autogen.sh || true
18 '';
19
20 configureFlags = [
21 "--localstatedir=${varDir}"
22 "--sysconfdir=${etcDir}"
23 ];
24
25 preInstall = ''
26 substituteInPlace Makefile --replace \
27 '@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am' \
28 '@$(MAKE) $(AM_MAKEFLAGS) install-exec-am'
29 '';
30
31 buildInputs = [ autoconf automake libtool pkg-config naemon ];
32})
diff --git a/flakes/mypackages/pkgs/naemon/default.nix b/flakes/mypackages/pkgs/naemon/default.nix
new file mode 100644
index 0000000..2a29bdc
--- /dev/null
+++ b/flakes/mypackages/pkgs/naemon/default.nix
@@ -0,0 +1,44 @@
1{ stdenv, fetchFromGitHub, help2man, monitoring-plugins, autoconf, automake,
2 libtool, glib, pkg-config, gperf,
3 varDir ? "/var/lib/naemon",
4 etcDir ? "/etc/naemon",
5 cacheDir ? "/var/cache/naemon",
6 logDir ? "/var/log/naemon",
7 runDir ? "/run/naemon",
8 user ? "naemon",
9 group ? "naemon"
10}:
11stdenv.mkDerivation ({
12 pname = "naemon";
13 version = "d7ac1c8-master";
14 src = fetchFromGitHub {
15 owner = "naemon";
16 repo = "naemon-core";
17 rev = "d7ac1c824e01dbb1c4a6bd0550b324e7cf165d54";
18 sha256 = "003grwciplnqfn9jh2km2pm6xxp8fxvmwihg3vmch8f0vfwcmv1m";
19 fetchSubmodules = true;
20 };
21 passthru.status_engine_version = "1-1-0";
22 preConfigure = ''
23 ./autogen.sh || true
24 '';
25
26 configureFlags = [
27 "--localstatedir=${varDir}"
28 "--sysconfdir=${etcDir}"
29 "--with-pkgconfdir=${etcDir}"
30 "--with-pluginsdir=${monitoring-plugins}/libexec"
31 "--with-tempdir=${cacheDir}"
32 "--with-checkresultdir=${cacheDir}/checkresults"
33 "--with-logdir=${logDir}"
34 "--with-naemon-user=${user}"
35 "--with-naemon-group=${group}"
36 "--with-lockfile=${runDir}/naemon.pid"
37 ];
38
39 preInstall = ''
40 substituteInPlace Makefile --replace '$(MAKE) $(AM_MAKEFLAGS) install-exec-hook' ""
41 '';
42
43 buildInputs = [ autoconf automake help2man libtool glib pkg-config gperf ];
44})
diff --git a/flakes/mypackages/pkgs/nagios-cli/default.nix b/flakes/mypackages/pkgs/nagios-cli/default.nix
new file mode 100644
index 0000000..99ae843
--- /dev/null
+++ b/flakes/mypackages/pkgs/nagios-cli/default.nix
@@ -0,0 +1,12 @@
1{ python2Packages, fetchFromGitHub }:
2python2Packages.buildPythonApplication rec {
3 version = "edc51ea-master";
4 pname = "nagios-cli";
5 src = fetchFromGitHub {
6 owner = "tehmaze";
7 repo = "nagios-cli";
8 rev = "edc51eaccf1086bb4469ce45c5e5155f2d71a2f9";
9 sha256 = "1qw5fv4niz079zqwmfr3kzjv8cc31rbhi9whdbv9c32qdi3h7vsp";
10 fetchSubmodules = true;
11 };
12}
diff --git a/flakes/mypackages/pkgs/nagnu/default.nix b/flakes/mypackages/pkgs/nagnu/default.nix
new file mode 100644
index 0000000..c7a1162
--- /dev/null
+++ b/flakes/mypackages/pkgs/nagnu/default.nix
@@ -0,0 +1,21 @@
1{ stdenv, fetchFromGitHub, ncurses, curl }:
2stdenv.mkDerivation (rec {
3 pname = "nagnu";
4 version = "c7e65fc-master";
5 src = fetchFromGitHub {
6 owner = "frlen";
7 repo = "nagnu";
8 rev = "c7e65fc02f46a3756a4cc47953ea2f3e57a84728";
9 sha256 = "1i2jm8ibvqcc734daamnzc3hx8q0nsry1x12q0kr5yvcsdjjgyy3";
10 fetchSubmodules = true;
11 };
12 buildInputs = [ ncurses curl ];
13 installPhase = ''
14 mkdir -p $out/bin
15 cp nagnu $out/bin
16 mkdir -p $out/share/doc/nagnu
17 cp nagnu.conf.sample $out/share/doc/nagnu
18 mkdir -p $out/share/man/man8
19 cp docs/nagnu.8 $out/share/man/man8
20 '';
21})
diff --git a/flakes/mypackages/pkgs/nb/default.nix b/flakes/mypackages/pkgs/nb/default.nix
new file mode 100644
index 0000000..337c286
--- /dev/null
+++ b/flakes/mypackages/pkgs/nb/default.nix
@@ -0,0 +1,22 @@
1{ fetchFromGitHub, stdenv, makeWrapper, lib, file }:
2stdenv.mkDerivation {
3 pname = "nb";
4 version = "e0d4e24-master";
5 src = fetchFromGitHub {
6 owner = "xwmx";
7 repo = "nb";
8 rev = "e0d4e24201299916d736be6a9800793cec32927e";
9 sha256 = "0gpnlzxjlfn3bagw74lsrmfhxj2xzvk6sjj24wp9rjpk42d9mfml";
10 };
11 phases = "installPhase";
12 buildInputs = [ makeWrapper ];
13 installPhase = ''
14 mkdir -p $out/bin $out/share/zsh/vendor-completions $out/share/bash-completion/completions
15 cp $src/nb $out/bin/nb
16 chmod +x $out/bin/nb
17 patchShebangs $out/bin/nb
18 wrapProgram $out/bin/nb --prefix PATH : ${lib.makeBinPath [ file ]}
19 cp $src/etc/nb-completion.zsh $out/share/zsh/vendor-completions/_nb
20 cp $src/etc/nb-completion.bash $out/share/bash-completion/completions/nb
21 '';
22}
diff --git a/flakes/mypackages/pkgs/note/default.nix b/flakes/mypackages/pkgs/note/default.nix
new file mode 100644
index 0000000..b3b03ef
--- /dev/null
+++ b/flakes/mypackages/pkgs/note/default.nix
@@ -0,0 +1,19 @@
1{ lib, fetchurl, perlPackages }:
2perlPackages.buildPerlPackage rec {
3 pname = "note";
4 version = "1.3.26";
5 src = fetchurl {
6 url = "mirror://cpan/authors/id/T/TL/TLINDEN/${pname}-${version}.tar.gz";
7 sha256 = "1h645rnb5vpms48fcyzvp7cwwcbf9k5xq49w2bpniyzzgk2brjrq";
8 };
9 outputs = ["out" "man"];
10 propagatedBuildInputs = with perlPackages; [ YAML ];
11
12 meta = with lib; {
13 description = "A perl script for maintaining notes";
14 homepage = http://www.daemon.de/NOTE;
15 license = licenses.gpl3;
16 maintainers = with maintainers; [ { name = "T.v.Dein"; email = "tlinden@cpan.org"; } ];
17 platforms = platforms.unix;
18 };
19}
diff --git a/flakes/mypackages/pkgs/notmuch/notmuch-python/default.nix b/flakes/mypackages/pkgs/notmuch/notmuch-python/default.nix
new file mode 100644
index 0000000..d639d9a
--- /dev/null
+++ b/flakes/mypackages/pkgs/notmuch/notmuch-python/default.nix
@@ -0,0 +1,16 @@
1{ stdenv, notmuch, pythonPackages }:
2stdenv.mkDerivation rec {
3 name = "notmuch-${pythonPackages.python.name}-${version}";
4 version = notmuch.version;
5 outputs = [ "out" ];
6 buildInputs = with pythonPackages; [ sphinx python ];
7 src = notmuch.src;
8 phases = [ "unpackPhase" "buildPhase" "installPhase" "fixupPhase" ];
9 buildPhase = ''
10 cd bindings/python
11 python setup.py build
12 '';
13 installPhase = ''
14 python setup.py install --prefix=$out --optimize=1
15 '';
16}
diff --git a/flakes/mypackages/pkgs/notmuch/notmuch-vim/default.nix b/flakes/mypackages/pkgs/notmuch/notmuch-vim/default.nix
new file mode 100644
index 0000000..e79a253
--- /dev/null
+++ b/flakes/mypackages/pkgs/notmuch/notmuch-vim/default.nix
@@ -0,0 +1,11 @@
1{ stdenv, notmuch }:
2stdenv.mkDerivation rec {
3 name = "notmuch-vim-${version}";
4 version = notmuch.version;
5 outputs = [ "out" ];
6 src = notmuch.src;
7 phases = [ "unpackPhase" "installPhase" ];
8 installPhase = ''
9 make -C vim DESTDIR=$out prefix="/share/vim/vimfiles" install
10 '';
11}
diff --git a/flakes/mypackages/pkgs/perl-ical-parser-html/default.nix b/flakes/mypackages/pkgs/perl-ical-parser-html/default.nix
new file mode 100644
index 0000000..96e9abc
--- /dev/null
+++ b/flakes/mypackages/pkgs/perl-ical-parser-html/default.nix
@@ -0,0 +1,48 @@
1{ perlPackages, fetchurl }:
2let
3 TestXML = perlPackages.buildPerlPackage rec {
4 pname = "Test-XML";
5 version = "0.08";
6 src = fetchurl {
7 url = "mirror://cpan/authors/id/S/SE/SEMANTICO/Test-XML-0.08.tar.gz";
8 sha256 = "sha256-61TMI83shg062KyKaXy/A40N7JUimRLZdcMBiQyoPuI=";
9 };
10 propagatedBuildInputs = with perlPackages; [
11 ModuleBuild XMLSemanticDiff XMLParser
12 ];
13 };
14 iCalParserSAX = perlPackages.buildPerlPackage rec {
15 pname = "iCal-Parser-SAX";
16 version = "1.09";
17 src = fetchurl {
18 url = "mirror://cpan/authors/id/R/RF/RFRANKEL/iCal-Parser-SAX-1.09.tar.gz";
19 sha256 = "sha256-fouAjQ+MTUgwZ/j3dIarOK0rVBZcZy6aOJFor4pLql0=";
20 };
21 propagatedBuildInputs = with perlPackages; [
22 ModuleBuild DateTime IOString XMLSAXBase XMLSAXWriter iCalParser
23 LWPUserAgent
24 ];
25 buildInputs = [ TestXML ];
26 doCheck = false;
27 };
28in
29perlPackages.buildPerlPackage rec {
30 pname = "iCal-Parser-HTML";
31 version = "1.07";
32 src = fetchurl {
33 url = "mirror://cpan/authors/id/R/RF/RFRANKEL/${pname}-${version}.tar.gz";
34 sha256 = "sha256-cxRS2M6aVrCtAXHQae0Y6EtEfGnGx41UuB7z442NSrU=";
35 };
36 patchPhase = ''
37 sed -i -e "s/qw(week month year)/(qw(week month year))/" lib/iCal/Parser/HTML.pm
38 '';
39 doCheck = false;
40 postInstall = ''
41 mkdir -p $out/bin
42 cp scripts/ical2html $out/bin
43 chmod +x $out/bin/ical2html
44 '';
45 propagatedBuildInputs = with perlPackages; [
46 ModuleBuild XMLLibXML XMLLibXSLT iCalParser iCalParserSAX
47 ];
48}
diff --git a/flakes/mypackages/pkgs/pgpid/default.nix b/flakes/mypackages/pkgs/pgpid/default.nix
new file mode 100644
index 0000000..a1fb9c2
--- /dev/null
+++ b/flakes/mypackages/pkgs/pgpid/default.nix
@@ -0,0 +1,33 @@
1{ lib, stdenv, fetchFromGitHub, makeWrapper, bashInteractive, bash-libs, coreutils, file, gnugrep, texlive, pandoc, aspell, util-linux, findutils, gnused, gnupg, gawk, facedetect, graphicsmagick, qrencode, tesseract4, zbar, cups, vim }:
2stdenv.mkDerivation {
3 pname = "pgpid";
4 version = "master";
5 src = fetchFromGitHub {
6 owner = "foopgp";
7 repo = "pgpid";
8 rev = "26c2137951775652e9e774977639ecaea5845cf7";
9 sha256 = "sha256-noXDYWWxUryFnV99pyl0eV7hJLUkSy97Vqylx5dKN9g=";
10 };
11
12 buildInputs = [ makeWrapper ];
13 phases = [ "installPhase" ];
14 installPhase = ''
15 mkdir -p $out/bin $out/share/pgpid $out/share/doc/pgpid
16
17 cp $src/pgpid-gen $src/pgpid-qrscan $out/bin
18 cp -r $src/doc $out/share/doc/pgpid
19 cp -r $src/data $out/share/pgpid
20 cp -r $src/imgsamples $out/share/pgpid
21 for i in $out/bin/*; do
22 patchShebangs $i
23 sed -i -e "/^TESSDATADIR/d" -e "/^GEOLIST_CENTROID/d" $i
24 sed -i -e 's@"$(dirname "$BASH_SOURCE")"@${bash-libs}/share/bash-libs/include@' $i
25 wrapProgram $i --set PATH ${lib.makeBinPath [
26 facedetect graphicsmagick qrencode tesseract4 zbar cups gnugrep vim gnupg findutils
27 pandoc (texlive.combine { scheme-small = texlive.scheme-small; pdfcrop = texlive.pdfcrop; })
28 ]}:$(cat ${bash-libs}/nix-support/propagated-build-inputs) \
29 --set TESSDATADIR $out/share/pgpid/data \
30 --set GEOLIST_CENTROID $out/share/pgpid/data/geolist_centroid.txt
31 done
32 '';
33}
diff --git a/flakes/mypackages/pkgs/predixy/default.nix b/flakes/mypackages/pkgs/predixy/default.nix
new file mode 100644
index 0000000..259d7fd
--- /dev/null
+++ b/flakes/mypackages/pkgs/predixy/default.nix
@@ -0,0 +1,19 @@
1{ stdenv, fetchFromGitHub }:
2stdenv.mkDerivation ({
3 pname = "predixy";
4 version = "dacf3fb-master";
5 src = fetchFromGitHub {
6 owner = "joyieldInc";
7 repo = "predixy";
8 rev = "dacf3fb30c2602dc044040df04e194d44b49c1be";
9 sha256 = "0sbvy0jg551lwkfq8qh0a49cl9mhfnkhi3cnk25l8pz4jcdrr9k9";
10 fetchSubmodules = true;
11 };
12 installPhase = ''
13 mkdir -p $out/bin
14 cp src/predixy $out/bin
15 mkdir -p $out/share
16 cp -r doc $out/share
17 cp -r conf $out/share/doc
18 '';
19})
diff --git a/flakes/mypackages/pkgs/proftpd/default.nix b/flakes/mypackages/pkgs/proftpd/default.nix
new file mode 100644
index 0000000..8bdf531
--- /dev/null
+++ b/flakes/mypackages/pkgs/proftpd/default.nix
@@ -0,0 +1,22 @@
1{ stdenv, fetchurl, file, openssl, libsodium, ncurses, cyrus_sasl, openldap, pkg-config, libxcrypt }:
2
3stdenv.mkDerivation rec {
4 pname = "proftpd";
5 version = "1.3.8";
6 src = fetchurl {
7 url = "https://github.com/proftpd/proftpd/archive/refs/tags/v${version}.tar.gz";
8 sha256 = "sha256-9xOec3eiywWbi5sU12pt9fRA4xgcsVrokNQ7vK5XR0g=";
9 };
10 postPatch = ''
11 sed -i -e "s@/usr/bin/file@${file}/bin/file@" configure
12 '';
13 dontDisableStatic = 1;
14 configureFlags = [ "--enable-openssl" "--with-modules=mod_ldap:mod_sftp:mod_tls:mod_site_misc" "--with-includes=${libsodium.dev}/include" "--with-libraries=${libsodium}/lib" ];
15 preInstall = ''
16 installFlagsArray=(INSTALL_USER=$(id -u) INSTALL_GROUP=$(id -g))
17 '';
18 buildInputs = [ openssl libsodium ncurses cyrus_sasl openldap pkg-config libxcrypt ];
19 postInstall = ''
20 rmdir $out/var $out/libexec $out/lib/proftpd $out/share/locale
21 '';
22}
diff --git a/flakes/mypackages/pkgs/pure-ftpd/default.nix b/flakes/mypackages/pkgs/pure-ftpd/default.nix
new file mode 100644
index 0000000..55c698f
--- /dev/null
+++ b/flakes/mypackages/pkgs/pure-ftpd/default.nix
@@ -0,0 +1,30 @@
1{ ldapFtpId ? null
2, stdenv, lib, fetchurl, openssl, postgresql, openldap }:
3
4stdenv.mkDerivation rec {
5 name = "pure-ftpd-1.0.47";
6
7 src = fetchurl {
8 url = "https://download.pureftpd.org/pub/pure-ftpd/releases/${name}.tar.gz";
9 sha256 = "1b97ixva8m10vln8xrfwwwzi344bkgxqji26d0nrm1yzylbc6h27";
10 };
11
12 preConfigure = stdenv.lib.optionalString (!isNull ldapFtpId) ''
13 sed -i -e "s#FTPuid#${ldapFtpId}Uid#" src/log_ldap.h
14 sed -i -e "s#FTPgid#${ldapFtpId}Gid#" src/log_ldap.h
15 '';
16 postConfigure = ''
17 sed -i 's/define MAX_DATA_SIZE (40/define MAX_DATA_SIZE (70/' src/ftpd.h
18 '';
19 buildInputs = [ openssl postgresql openldap ];
20
21 configureFlags = [ "--with-everything" "--with-tls" "--with-pgsql" "--with-ldap" ];
22
23 meta = with lib; {
24 description = "A free, secure, production-quality and standard-conformant FTP server";
25 homepage = https://www.pureftpd.org;
26 license = licenses.isc; # with some parts covered by BSD3(?)
27 maintainers = [ maintainers.lethalman ];
28 platforms = platforms.linux;
29 };
30}
diff --git a/flakes/mypackages/pkgs/riotkit-do/default.nix b/flakes/mypackages/pkgs/riotkit-do/default.nix
new file mode 100644
index 0000000..3ddb1ab
--- /dev/null
+++ b/flakes/mypackages/pkgs/riotkit-do/default.nix
@@ -0,0 +1,60 @@
1{ python3Packages }:
2let
3 tabulate = python3Packages.buildPythonPackage rec {
4 version = "0.8.7";
5 pname = "tabulate";
6
7 src = python3Packages.fetchPypi {
8 inherit pname version;
9 sha256 = "sha256-2ycjog0EvNqFIhZcc+6nwwDtp04M6FLZAi4BWdeJUAc=";
10 };
11
12 checkInputs = with python3Packages; [ nose ];
13
14 doCheck = false;
15 };
16
17 python-dotenv = python3Packages.buildPythonPackage rec {
18 pname = "python-dotenv";
19 version = "0.13.0";
20
21 src = python3Packages.fetchPypi {
22 inherit pname version;
23 sha256 = "sha256-O5kJvJaw7cawFYbh7tBecRdO9OBMcdpXhjcM6+pTrXQ=";
24 };
25
26 propagatedBuildInputs = with python3Packages; [ click ];
27
28 checkInputs = with python3Packages; [
29 ipython
30 mock
31 pytestCheckHook
32 sh
33 ];
34
35 disabledTests = [
36 "cli"
37 ];
38
39 pythonImportsCheck = [ "dotenv" ];
40 };
41in
42python3Packages.buildPythonApplication rec {
43 pname = "rkd";
44 version = "2.4.0";
45 src = python3Packages.fetchPypi {
46 inherit pname version;
47 sha256 = "sha256-WC0FmUYGkV9PFvRtiFW6w6RtP+9Zf6kizl8jGiRb4HQ=";
48 };
49
50 propagatedBuildInputs = with python3Packages; [
51 pbr
52 jinja2
53 pyyaml
54 tabulate
55 psutil
56 pytest
57 python-dotenv
58 jsonschema
59 ];
60}
diff --git a/flakes/mypackages/pkgs/rrsync_sudo/default.nix b/flakes/mypackages/pkgs/rrsync_sudo/default.nix
new file mode 100644
index 0000000..7a47320
--- /dev/null
+++ b/flakes/mypackages/pkgs/rrsync_sudo/default.nix
@@ -0,0 +1,8 @@
1{ rrsync }:
2
3rrsync.overrideAttrs(old: {
4 patches = old.patches or [] ++ [ ./sudo.patch ];
5 postPatch = old.postPatch + ''
6 substituteInPlace support/rrsync --replace /usr/bin/sudo /run/wrappers/bin/sudo
7 '';
8})
diff --git a/flakes/mypackages/pkgs/rrsync_sudo/sudo.patch b/flakes/mypackages/pkgs/rrsync_sudo/sudo.patch
new file mode 100644
index 0000000..6de9cc9
--- /dev/null
+++ b/flakes/mypackages/pkgs/rrsync_sudo/sudo.patch
@@ -0,0 +1,20 @@
1--- a/support/rrsync 2015-09-14 01:23:54.000000000 +0200
2+++ b/support/rrsync 2020-02-08 13:55:14.302163313 +0100
3@@ -48,7 +48,7 @@
4
5 my $command = $ENV{SSH_ORIGINAL_COMMAND};
6 die "$0: Not invoked via sshd\n$Usage" unless defined $command;
7-die "$0: SSH_ORIGINAL_COMMAND='$command' is not rsync\n" unless $command =~ s/^rsync\s+//;
8+die "$0: SSH_ORIGINAL_COMMAND='$command' is not rsync\n" unless $command =~ s/^sudo rsync\s+//;
9 die "$0: --server option is not first\n" unless $command =~ /^--server\s/;
10 our $am_sender = $command =~ /^--server\s+--sender\s/; # Restrictive on purpose!
11 die "$0 sending to read-only server not allowed\n" if $only eq 'r' && !$am_sender;
12@@ -227,7 +227,7 @@
13 }
14
15 # Note: This assumes that the rsync protocol will not be maliciously hijacked.
16-exec(RSYNC, @opts, @args) or die "exec(rsync @opts @args) failed: $? $!";
17+exec("/usr/bin/sudo", RSYNC, @opts, @args) or die "exec(sudo rsync @opts @args) failed: $? $!";
18
19 sub check_arg
20 {
diff --git a/flakes/mypackages/pkgs/shaarli/default.nix b/flakes/mypackages/pkgs/shaarli/default.nix
new file mode 100644
index 0000000..23f9937
--- /dev/null
+++ b/flakes/mypackages/pkgs/shaarli/default.nix
@@ -0,0 +1,24 @@
1{ varDir ? "/var/lib/shaarli", stdenv, fetchurl }:
2
3stdenv.mkDerivation rec {
4 pname = "shaarli";
5 version = "0.10.2";
6 src = fetchurl {
7 url = "https://github.com/shaarli/Shaarli/releases/download/v${version}/shaarli-v${version}-full.tar.gz";
8 sha256 = "0h8sspj7siy3vgpi2i3gdrjcr5935fr4dfwq2zwd70sjx2sh9s78";
9 };
10 patchPhase = "";
11
12 outputs = [ "out" "doc" ];
13
14 patches = [ ./shaarli_ldap.patch ];
15 installPhase = ''
16 rm -r {cache,pagecache,tmp,data}/
17 mkdir -p $doc/share/doc
18 mv doc/ $doc/share/doc/shaarli
19 mkdir $out/
20 cp -R ./* $out
21 cp .htaccess $out/
22 ln -sf ${varDir}/{cache,pagecache,tmp,data} $out/
23 '';
24}
diff --git a/flakes/mypackages/pkgs/shaarli/shaarli_ldap.patch b/flakes/mypackages/pkgs/shaarli/shaarli_ldap.patch
new file mode 100644
index 0000000..e66a54f
--- /dev/null
+++ b/flakes/mypackages/pkgs/shaarli/shaarli_ldap.patch
@@ -0,0 +1,425 @@
1commit a19c24edc1057bd411821f9e3e7d1d309d38b1bb
2Author: Ismaël Bouya <ismael.bouya@normalesup.org>
3Date: Sun Feb 3 20:58:18 2019 +0100
4
5 Add ldap connection
6
7diff --git a/.htaccess b/.htaccess
8index 4c00427..5acd708 100644
9--- a/.htaccess
10+++ b/.htaccess
11@@ -6,10 +6,23 @@ RewriteEngine On
12 # Prevent accessing subdirectories not managed by SCM
13 RewriteRule ^(.git|doxygen|vendor) - [F]
14
15+RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
16+RewriteRule ^(.*) - [E=BASE:%1]
17+
18+RewriteCond %{ENV:REDIRECT_BASE} (.+)
19+RewriteRule .* - [E=BASE:%1]
20+
21 # Forward the "Authorization" HTTP header
22 RewriteCond %{HTTP:Authorization} ^(.*)
23 RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
24
25+RewriteCond %{REQUEST_FILENAME} !-f
26+RewriteCond %{REQUEST_FILENAME} !-d
27+RewriteRule ^((?!api/)[^/]*)/?(.*)$ $2?%{QUERY_STRING} [E=USERSPACE:$1]
28+
29+RewriteCond %{ENV:REDIRECT_USERSPACE} (.+)
30+RewriteRule .* - [E=USERSPACE:%1]
31+
32 # REST API
33 RewriteCond %{REQUEST_FILENAME} !-f
34 RewriteCond %{REQUEST_FILENAME} !-d
35diff --git a/application/ApplicationUtils.php b/application/ApplicationUtils.php
36index 911873a..f21a1ef 100644
37--- a/application/ApplicationUtils.php
38+++ b/application/ApplicationUtils.php
39@@ -191,6 +191,9 @@ public static function checkResourcePermissions($conf)
40 $conf->get('resource.page_cache'),
41 $conf->get('resource.raintpl_tmp'),
42 ) as $path) {
43+ if (! is_dir($path)) {
44+ mkdir($path, 0755, true);
45+ }
46 if (! is_readable(realpath($path))) {
47 $errors[] = '"'.$path.'" '. t('directory is not readable');
48 }
49diff --git a/application/config/ConfigManager.php b/application/config/ConfigManager.php
50index 32aaea4..99efc15 100644
51--- a/application/config/ConfigManager.php
52+++ b/application/config/ConfigManager.php
53@@ -21,6 +21,11 @@ class ConfigManager
54
55 public static $DEFAULT_PLUGINS = array('qrcode');
56
57+ /**
58+ * @var string User space.
59+ */
60+ protected $userSpace;
61+
62 /**
63 * @var string Config folder.
64 */
65@@ -41,12 +46,36 @@ class ConfigManager
66 *
67 * @param string $configFile Configuration file path without extension.
68 */
69- public function __construct($configFile = 'data/config')
70+ public function __construct($configFile = null, $userSpace = null)
71 {
72- $this->configFile = $configFile;
73+ $this->userSpace = $this->findLDAPUser($userSpace);
74+ if ($configFile !== null) {
75+ $this->configFile = $configFile;
76+ } else {
77+ $this->configFile = ($this->userSpace === null) ? 'data/config' : 'data/' . $this->userSpace . '/config';
78+ }
79 $this->initialize();
80 }
81
82+ public function findLDAPUser($login, $password = null) {
83+ $connect = ldap_connect(getenv('SHAARLI_LDAP_HOST'));
84+ ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
85+ if (!$connect || !ldap_bind($connect, getenv('SHAARLI_LDAP_DN'), getenv('SHAARLI_LDAP_PASSWORD'))) {
86+ return false;
87+ }
88+
89+ $search_query = str_replace('%login%', ldap_escape($login), getenv('SHAARLI_LDAP_FILTER'));
90+
91+ $search = ldap_search($connect, getenv('SHAARLI_LDAP_BASE'), $search_query);
92+ $info = ldap_get_entries($connect, $search);
93+
94+ if (ldap_count_entries($connect, $search) == 1 && (is_null($password) || ldap_bind($connect, $info[0]["dn"], $password))) {
95+ return $login;
96+ } else {
97+ return null;
98+ }
99+ }
100+
101 /**
102 * Reset the ConfigManager instance.
103 */
104@@ -269,6 +298,16 @@ public function getConfigFileExt()
105 return $this->configFile . $this->configIO->getExtension();
106 }
107
108+ /**
109+ * Get the current userspace.
110+ *
111+ * @return mixed User space.
112+ */
113+ public function getUserSpace()
114+ {
115+ return $this->userSpace;
116+ }
117+
118 /**
119 * Recursive function which find asked setting in the loaded config.
120 *
121@@ -342,19 +381,31 @@ protected static function removeConfig($settings, &$conf)
122 */
123 protected function setDefaultValues()
124 {
125- $this->setEmpty('resource.data_dir', 'data');
126- $this->setEmpty('resource.config', 'data/config.php');
127- $this->setEmpty('resource.datastore', 'data/datastore.php');
128- $this->setEmpty('resource.ban_file', 'data/ipbans.php');
129- $this->setEmpty('resource.updates', 'data/updates.txt');
130- $this->setEmpty('resource.log', 'data/log.txt');
131- $this->setEmpty('resource.update_check', 'data/lastupdatecheck.txt');
132- $this->setEmpty('resource.history', 'data/history.php');
133+ if ($this->userSpace === null) {
134+ $data = 'data';
135+ $tmp = 'tmp';
136+ $cache = 'cache';
137+ $pagecache = 'pagecache';
138+ } else {
139+ $data = 'data/' . ($this->userSpace);
140+ $tmp = 'tmp/' . ($this->userSpace);
141+ $cache = 'cache/' . ($this->userSpace);
142+ $pagecache = 'pagecache/' . ($this->userSpace);
143+ }
144+
145+ $this->setEmpty('resource.data_dir', $data);
146+ $this->setEmpty('resource.config', $data . '/config.php');
147+ $this->setEmpty('resource.datastore', $data . '/datastore.php');
148+ $this->setEmpty('resource.ban_file', $data . '/ipbans.php');
149+ $this->setEmpty('resource.updates', $data . '/updates.txt');
150+ $this->setEmpty('resource.log', $data . '/log.txt');
151+ $this->setEmpty('resource.update_check', $data . '/lastupdatecheck.txt');
152+ $this->setEmpty('resource.history', $data . '/history.php');
153 $this->setEmpty('resource.raintpl_tpl', 'tpl/');
154 $this->setEmpty('resource.theme', 'default');
155- $this->setEmpty('resource.raintpl_tmp', 'tmp/');
156- $this->setEmpty('resource.thumbnails_cache', 'cache');
157- $this->setEmpty('resource.page_cache', 'pagecache');
158+ $this->setEmpty('resource.raintpl_tmp', $tmp);
159+ $this->setEmpty('resource.thumbnails_cache', $cache);
160+ $this->setEmpty('resource.page_cache', $pagecache);
161
162 $this->setEmpty('security.ban_after', 4);
163 $this->setEmpty('security.ban_duration', 1800);
164diff --git a/application/security/LoginManager.php b/application/security/LoginManager.php
165index d6784d6..bdfaca7 100644
166--- a/application/security/LoginManager.php
167+++ b/application/security/LoginManager.php
168@@ -32,6 +32,9 @@ class LoginManager
169 /** @var string User sign-in token depending on remote IP and credentials */
170 protected $staySignedInToken = '';
171
172+ protected $lastErrorReason = '';
173+ protected $lastErrorIsBanishable = false;
174+
175 /**
176 * Constructor
177 *
178@@ -83,7 +86,7 @@ public function getStaySignedInToken()
179 */
180 public function checkLoginState($cookie, $clientIpId)
181 {
182- if (! $this->configManager->exists('credentials.login')) {
183+ if (! $this->configManager->exists('credentials.login') || (isset($_SESSION['username']) && $_SESSION['username'] && $this->configManager->get('credentials.login') !== $_SESSION['username'])) {
184 // Shaarli is not configured yet
185 $this->isLoggedIn = false;
186 return;
187@@ -133,20 +136,40 @@ public function isLoggedIn()
188 */
189 public function checkCredentials($remoteIp, $clientIpId, $login, $password)
190 {
191- $hash = sha1($password . $login . $this->configManager->get('credentials.salt'));
192+ $this->lastErrorIsBanishable = false;
193+
194+ if ($this->configManager->getUserSpace() !== null && $this->configManager->getUserSpace() !== $login) {
195+ logm($this->configManager->get('resource.log'),
196+ $remoteIp,
197+ 'Trying to login to wrong user space');
198+ $this->lastErrorReason = 'You’re trying to access the wrong account.';
199+ return false;
200+ }
201
202- if ($login != $this->configManager->get('credentials.login')
203- || $hash != $this->configManager->get('credentials.hash')
204- ) {
205+ logm($this->configManager->get('resource.log'),
206+ $remoteIp,
207+ 'Trying LDAP connection');
208+ $result = $this->configManager->findLDAPUser($login, $password);
209+ if ($result === false) {
210 logm(
211 $this->configManager->get('resource.log'),
212 $remoteIp,
213- 'Login failed for user ' . $login
214+ 'Impossible to connect to LDAP'
215 );
216+ $this->lastErrorReason = 'Server error.';
217+ return false;
218+ } else if (is_null($result)) {
219+ logm(
220+ $this->configManager->get('resource.log'),
221+ $remoteIp,
222+ 'Login failed for user ' . $login
223+ );
224+ $this->lastErrorIsBanishable = true;
225+ $this->lastErrorReason = 'Wrong login/password.';
226 return false;
227 }
228
229- $this->sessionManager->storeLoginInfo($clientIpId);
230+ $this->sessionManager->storeLoginInfo($clientIpId, $login);
231 logm(
232 $this->configManager->get('resource.log'),
233 $remoteIp,
234@@ -187,6 +210,10 @@ protected function writeBanFile()
235 */
236 public function handleFailedLogin($server)
237 {
238+ if (!$this->lastErrorIsBanishable) {
239+ return $this->lastErrorReason ?: 'Error during login.';
240+ };
241+
242 $ip = $server['REMOTE_ADDR'];
243 $trusted = $this->configManager->get('security.trusted_proxies', []);
244
245@@ -215,6 +242,7 @@ public function handleFailedLogin($server)
246 );
247 }
248 $this->writeBanFile();
249+ return $this->lastErrorReason ?: 'Error during login.';
250 }
251
252 /**
253diff --git a/application/security/SessionManager.php b/application/security/SessionManager.php
254index b8b8ab8..5eb4aac 100644
255--- a/application/security/SessionManager.php
256+++ b/application/security/SessionManager.php
257@@ -111,10 +111,10 @@ public static function checkId($sessionId)
258 *
259 * @param string $clientIpId Client IP address identifier
260 */
261- public function storeLoginInfo($clientIpId)
262+ public function storeLoginInfo($clientIpId, $login = null)
263 {
264 $this->session['ip'] = $clientIpId;
265- $this->session['username'] = $this->conf->get('credentials.login');
266+ $this->session['username'] = $login ?: $this->conf->get('credentials.login');
267 $this->extendTimeValidityBy(self::$SHORT_TIMEOUT);
268 }
269
270diff --git a/index.php b/index.php
271index 4b86a3e..58ae2dd 100644
272--- a/index.php
273+++ b/index.php
274@@ -121,7 +121,32 @@
275 $_COOKIE['shaarli'] = session_id();
276 }
277
278-$conf = new ConfigManager();
279+$folderBase = getenv("BASE");
280+
281+if (getenv("USERSPACE")) {
282+ if (isset($_GET["do"]) && $_GET["do"] == "login") {
283+ header("Location: $folderBase/?do=login");
284+ exit;
285+ }
286+ $userspace = preg_replace("/[^-_A-Za-z0-9]/", '', getenv("USERSPACE"));
287+} else if (isset($_SESSION["username"]) && $_SESSION["username"]) {
288+ header("Location: " . $folderBase . "/" . $_SESSION["username"] . "?");
289+ exit;
290+} else if (!isset($_GET["do"]) || $_GET["do"] != "login") {
291+ header("Location: $folderBase/?do=login");
292+ exit;
293+}
294+
295+if (!isset($userspace) && isset($_POST["login"])) {
296+ $userspace = preg_replace("/[^-_A-Za-z0-9]/", '', $_POST["login"]);
297+ error_log("debugImmae: setting userspace from POST: " . $userspace);
298+}
299+
300+if (isset($userspace)) {
301+ $conf = new ConfigManager(null, $userspace);
302+} else {
303+ $conf = new ConfigManager();
304+}
305 $sessionManager = new SessionManager($_SESSION, $conf);
306 $loginManager = new LoginManager($GLOBALS, $conf, $sessionManager);
307 $loginManager->generateStaySignedInToken($_SERVER['REMOTE_ADDR']);
308@@ -175,7 +200,7 @@
309 }
310
311 // Display the installation form if no existing config is found
312- install($conf, $sessionManager, $loginManager);
313+ install($conf, $sessionManager, $loginManager, $userspace);
314 }
315
316 $loginManager->checkLoginState($_COOKIE, $clientIpId);
317@@ -205,6 +230,7 @@ function isLoggedIn()
318 && $loginManager->checkCredentials($_SERVER['REMOTE_ADDR'], $clientIpId, $_POST['login'], $_POST['password'])
319 ) {
320 $loginManager->handleSuccessfulLogin($_SERVER);
321+ $userspace = $_POST['login'];
322
323 $cookiedir = '';
324 if (dirname($_SERVER['SCRIPT_NAME']) != '/') {
325@@ -241,25 +267,25 @@ function isLoggedIn()
326 $uri .= '&'.$param.'='.urlencode($_GET[$param]);
327 }
328 }
329- header('Location: '. $uri);
330+ header('Location: '. $userspace . $uri);
331 exit;
332 }
333
334 if (isset($_GET['edit_link'])) {
335- header('Location: ?edit_link='. escape($_GET['edit_link']));
336+ header('Location: ' . $userspace . '?edit_link='. escape($_GET['edit_link']));
337 exit;
338 }
339
340 if (isset($_POST['returnurl'])) {
341 // Prevent loops over login screen.
342 if (strpos($_POST['returnurl'], 'do=login') === false) {
343- header('Location: '. generateLocation($_POST['returnurl'], $_SERVER['HTTP_HOST']));
344+ header('Location: ' . generateLocation($_POST['returnurl'], $_SERVER['HTTP_HOST']));
345 exit;
346 }
347 }
348- header('Location: ?'); exit;
349+ header('Location: '. $userspace . '?'); exit;
350 } else {
351- $loginManager->handleFailedLogin($_SERVER);
352+ $errorReason = $loginManager->handleFailedLogin($_SERVER);
353 $redir = '&username='. urlencode($_POST['login']);
354 if (isset($_GET['post'])) {
355 $redir .= '&post=' . urlencode($_GET['post']);
356@@ -270,7 +296,7 @@ function isLoggedIn()
357 }
358 }
359 // Redirect to login screen.
360- echo '<script>alert("'. t("Wrong login/password.") .'");document.location=\'?do=login'.$redir.'\';</script>';
361+ echo '<script>alert("'. t($errorReason) .'");document.location=\'?do=login'.$redir.'\';</script>';
362 exit;
363 }
364 }
365@@ -1719,7 +1745,7 @@ function buildLinkList($PAGE, $LINKSDB, $conf, $pluginManager, $loginManager)
366 * @param SessionManager $sessionManager SessionManager instance
367 * @param LoginManager $loginManager LoginManager instance
368 */
369-function install($conf, $sessionManager, $loginManager) {
370+function install($conf, $sessionManager, $loginManager, $userspace) {
371 // On free.fr host, make sure the /sessions directory exists, otherwise login will not work.
372 if (endsWith($_SERVER['HTTP_HOST'],'.free.fr') && !is_dir($_SERVER['DOCUMENT_ROOT'].'/sessions')) mkdir($_SERVER['DOCUMENT_ROOT'].'/sessions',0705);
373
374@@ -1755,7 +1781,7 @@ function install($conf, $sessionManager, $loginManager) {
375 }
376
377
378- if (!empty($_POST['setlogin']) && !empty($_POST['setpassword']))
379+ if (true)
380 {
381 $tz = 'UTC';
382 if (!empty($_POST['continent']) && !empty($_POST['city'])
383@@ -1764,15 +1790,15 @@ function install($conf, $sessionManager, $loginManager) {
384 $tz = $_POST['continent'].'/'.$_POST['city'];
385 }
386 $conf->set('general.timezone', $tz);
387- $login = $_POST['setlogin'];
388- $conf->set('credentials.login', $login);
389+ $conf->set('credentials.login', $userspace);
390 $salt = sha1(uniqid('', true) .'_'. mt_rand());
391 $conf->set('credentials.salt', $salt);
392- $conf->set('credentials.hash', sha1($_POST['setpassword'] . $login . $salt));
393+ $hash = sha1(uniqid('', true) .'_'. mt_rand());
394+ $conf->set('credentials.hash', $hash);
395 if (!empty($_POST['title'])) {
396 $conf->set('general.title', escape($_POST['title']));
397 } else {
398- $conf->set('general.title', 'Shared links on '.escape(index_url($_SERVER)));
399+ $conf->set('general.title', ucwords(str_replace("_", " ", $userspace)));
400 }
401 $conf->set('translation.language', escape($_POST['language']));
402 $conf->set('updates.check_updates', !empty($_POST['updateCheck']));
403@@ -1841,7 +1867,12 @@ function install($conf, $sessionManager, $loginManager) {
404 $app = new \Slim\App($container);
405
406 // REST API routes
407-$app->group('/api/v1', function() {
408+if (isset($userspace)) {
409+ $mountpoint = '/' . $userspace . '/api/v1';
410+} else {
411+ $mountpoint = '/api/v1';
412+}
413+$app->group($mountpoint, function() {
414 $this->get('/info', '\Shaarli\Api\Controllers\Info:getInfo')->setName('getInfo');
415 $this->get('/links', '\Shaarli\Api\Controllers\Links:getLinks')->setName('getLinks');
416 $this->get('/links/{id:[\d]+}', '\Shaarli\Api\Controllers\Links:getLink')->setName('getLink');
417@@ -1860,7 +1891,7 @@ function install($conf, $sessionManager, $loginManager) {
418 $response = $app->run(true);
419 // Hack to make Slim and Shaarli router work together:
420 // If a Slim route isn't found and NOT API call, we call renderPage().
421-if ($response->getStatusCode() == 404 && strpos($_SERVER['REQUEST_URI'], '/api/v1') === false) {
422+if ($response->getStatusCode() == 404 && strpos($_SERVER['REQUEST_URI'], $mountpoint) === false) {
423 // We use UTF-8 for proper international characters handling.
424 header('Content-Type: text/html; charset=utf-8');
425 renderPage($conf, $pluginManager, $linkDb, $history, $sessionManager, $loginManager);
diff --git a/flakes/mypackages/pkgs/signaldctl/default.nix b/flakes/mypackages/pkgs/signaldctl/default.nix
new file mode 100644
index 0000000..3ae85d8
--- /dev/null
+++ b/flakes/mypackages/pkgs/signaldctl/default.nix
@@ -0,0 +1,13 @@
1{ buildGoModule, fetchgit, lib }:
2
3buildGoModule {
4 pname = "signaldctl";
5 version = "main-3ca2d6f6";
6 src = fetchgit {
7 url = "https://gitlab.com/signald/signald-go.git";
8 branchName = "main";
9 rev = "3ca2d6f6c91d44f34fca3221c430d1c47fa31a5a";
10 sha256 = "0hh2jqfdsvclilqllyfxswpw6fk0ncyhbiy08mwfp3dnk8nlz5vk";
11 };
12 vendorSha256 = "0m3spzv79fgnrg0sxhi3nrpdrvmrznwdca6rrz8qxgqb7a58qcxv";
13}
diff --git a/flakes/mypackages/pkgs/slang_1/default.nix b/flakes/mypackages/pkgs/slang_1/default.nix
new file mode 100644
index 0000000..cd626e0
--- /dev/null
+++ b/flakes/mypackages/pkgs/slang_1/default.nix
@@ -0,0 +1,25 @@
1{ stdenv, fetchpatch, fetchurl }:
2stdenv.mkDerivation rec {
3 name = "slang-debian-patched-${version}";
4 version = "1.4.9";
5 src = fetchurl {
6 url = "ftp://space.mit.edu/pub/davis/slang/v1.4/slang-1.4.9.tar.gz";
7 sha256 = "1y2mg0whqh4b3acd0k17i4biz55bimxg8aaxhmwd165cvspxns9r";
8 };
9 debian_patches = fetchurl {
10 url = "http://archive.debian.org/debian-archive/debian-amd64/pool/main/s/slang/slang_1.4.9dbs-8.diff.gz";
11 sha256 = "0xdq14k5ynqfwpmis1rcggs7m4n921i3bs27icbmbhfg5gb2hap2";
12 };
13 patchPhase = ''
14 gunzip -c ${debian_patches} | patch -p1
15 for i in debian/patches/*; do
16 patch -p1 < $i
17 done
18 '';
19 preConfigure = ''
20 makeFlagsArray=(CFLAGS=" -g -O2 -fno-strength-reduce -DUTF8 -D_REENTRANT -D_XOPEN_SOURCE=500")
21 '';
22 postBuild = ''
23 sed -i "1i#ifndef UTF8\n#define UTF8\n#endif" src/slang.h
24 '';
25}
diff --git a/flakes/mypackages/pkgs/status_engine/host_perfdata.patch b/flakes/mypackages/pkgs/status_engine/host_perfdata.patch
new file mode 100644
index 0000000..0c8a20b
--- /dev/null
+++ b/flakes/mypackages/pkgs/status_engine/host_perfdata.patch
@@ -0,0 +1,47 @@
1diff --git a/src/statusengine.c b/src/statusengine.c
2index cc0b06e..2a18dec 100644
3--- a/src/statusengine.c
4+++ b/src/statusengine.c
5@@ -304,6 +304,7 @@ int enable_ocsp = 0;
6
7 int use_restart_data=1;
8 int use_service_perfdata=0;
9+int use_host_perfdata=0;
10
11 int statusengine_process_config_var(char *arg);
12 int statusengine_process_module_args(char *args);
13@@ -612,6 +613,9 @@ int statusengine_process_config_var(char *arg) {
14 } else if (!strcmp(var, "use_service_perfdata")) {
15 use_service_perfdata = atoi(val);
16 logswitch(NSLOG_INFO_MESSAGE, "start with enabled use_service_perfdata");
17+ } else if (!strcmp(var, "use_host_perfdata")) {
18+ use_host_perfdata = atoi(val);
19+ logswitch(NSLOG_INFO_MESSAGE, "start with enabled use_host_perfdata");
20 } else {
21 return ERROR;
22 }
23@@ -1067,6 +1071,24 @@ int statusengine_handle_data(int event_type, void *data){
24 json_object_put(my_object);
25 free(raw_command);
26
27+ if(use_host_perfdata){
28+ my_object = json_object_new_object();
29+ json_object_object_add(my_object, "type", json_object_new_int(hostcheck->type));
30+ json_object_object_add(my_object, "flags", json_object_new_int(hostcheck->flags));
31+ json_object_object_add(my_object, "attr", json_object_new_int(hostcheck->attr));
32+ json_object_object_add(my_object, "timestamp", json_object_new_int(hostcheck->timestamp.tv_sec));
33+
34+ json_object *hostcheck_object = json_object_new_object();
35+ HOSTCHECKFIELD_STRING(host_name);
36+ HOSTCHECKFIELD_STRING(perf_data);
37+ json_object_object_add(hostcheck_object, "start_time", json_object_new_int64(nag_hostcheck->start_time.tv_sec));
38+
39+ json_object_object_add(my_object, "hostcheck", hostcheck_object);
40+ const char* json_string = json_object_to_json_string(my_object);
41+ statusengine_send_job("statusngin_host_perfdata", (void *)json_string);
42+
43+ json_object_put(my_object);
44+ }
45 }
46 break;
47
diff --git a/flakes/mypackages/pkgs/status_engine/interface.nix b/flakes/mypackages/pkgs/status_engine/interface.nix
new file mode 100644
index 0000000..9c8ff5e
--- /dev/null
+++ b/flakes/mypackages/pkgs/status_engine/interface.nix
@@ -0,0 +1,24 @@
1{ stdenv, composerEnv, php73, fetchurl, callPackage, config_file ? "/var/lib/status_engine/interface.yml" }:
2let
3 composerEnv' = composerEnv.override { php = php73; };
4in
5composerEnv'.buildPackage (
6 import ./interface_php_packages.nix { composerEnv = composerEnv'; inherit fetchurl; } // rec {
7 pname = "interface";
8 version = "3.4.0";
9 name = "${pname}-${version}";
10 src = fetchurl {
11 url = "https://github.com/statusengine/${pname}/archive/${version}.tar.gz";
12 sha256 = "1l11cskv740xvqs9a2yj9zkvgvxvymaq5qap36g2r4hkqbfbbjj2";
13 };
14 unpackPhase = null;
15 postUnpack = ''
16 src=$(pwd)/$sourceRoot
17 '';
18 postInstall = ''
19 ln -s ${config_file} $out/etc/config.yml
20 '';
21 preInstall = ''
22 cp ${./interface_composer.lock} $out/composer.lock
23 '';
24 })
diff --git a/flakes/mypackages/pkgs/status_engine/interface_composer.lock b/flakes/mypackages/pkgs/status_engine/interface_composer.lock
new file mode 100644
index 0000000..8911d9f
--- /dev/null
+++ b/flakes/mypackages/pkgs/status_engine/interface_composer.lock
@@ -0,0 +1,1323 @@
1{
2 "_readme": [
3 "This file locks the dependencies of your project to a known state",
4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5 "This file is @generated automatically"
6 ],
7 "content-hash": "668fd19407022566bb6a70398e2f954e",
8 "packages": [
9 {
10 "name": "crate/crate-dbal",
11 "version": "2.2.0",
12 "source": {
13 "type": "git",
14 "url": "https://github.com/crate/crate-dbal.git",
15 "reference": "f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417"
16 },
17 "dist": {
18 "type": "zip",
19 "url": "https://api.github.com/repos/crate/crate-dbal/zipball/f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417",
20 "reference": "f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417",
21 "shasum": ""
22 },
23 "require": {
24 "crate/crate-pdo": "^1.0.0",
25 "doctrine/dbal": "^2.10.1",
26 "php": "^7.2"
27 },
28 "require-dev": {
29 "phpunit/phpunit": "^8.0",
30 "squizlabs/php_codesniffer": "~1.5.2"
31 },
32 "type": "library",
33 "autoload": {
34 "psr-0": {
35 "Crate\\DBAL": "src"
36 }
37 },
38 "notification-url": "https://packagist.org/downloads/",
39 "license": [
40 "Apache-2.0"
41 ],
42 "authors": [
43 {
44 "name": "Crate.io",
45 "email": "office@crate.io",
46 "homepage": "https://crate.io",
47 "role": "maintainer"
48 }
49 ],
50 "description": "Doctrine Database Abstraction Layer (DBAL) adapter for CrateDB",
51 "homepage": "https://github.com/crate/crate-dbal",
52 "keywords": [
53 "crate",
54 "database",
55 "dbal",
56 "doctrine"
57 ],
58 "time": "2020-01-08T08:31:16+00:00"
59 },
60 {
61 "name": "crate/crate-pdo",
62 "version": "1.0.1",
63 "source": {
64 "type": "git",
65 "url": "https://github.com/crate/crate-pdo.git",
66 "reference": "33332cef1a27844e473265e584223f142c37317f"
67 },
68 "dist": {
69 "type": "zip",
70 "url": "https://api.github.com/repos/crate/crate-pdo/zipball/33332cef1a27844e473265e584223f142c37317f",
71 "reference": "33332cef1a27844e473265e584223f142c37317f",
72 "shasum": ""
73 },
74 "require": {
75 "ext-pdo": "*",
76 "guzzlehttp/guzzle": "~6.0",
77 "php": "^7.2"
78 },
79 "require-dev": {
80 "phpstan/phpstan": "^0.9.2",
81 "phpunit/phpunit": "~7.0",
82 "squizlabs/php_codesniffer": "^2.8.1"
83 },
84 "type": "library",
85 "autoload": {
86 "psr-0": {
87 "Crate\\": "src"
88 }
89 },
90 "notification-url": "https://packagist.org/downloads/",
91 "license": [
92 "Apache-2.0"
93 ],
94 "authors": [
95 {
96 "name": "Crate.io",
97 "email": "office@crate.io",
98 "homepage": "https://crate.io",
99 "role": "maintainer"
100 }
101 ],
102 "description": "PDO adapter for CrateDB",
103 "homepage": "https://github.com/crate/crate-pdo",
104 "keywords": [
105 "crate",
106 "database",
107 "pdo"
108 ],
109 "time": "2019-04-09T07:48:20+00:00"
110 },
111 {
112 "name": "doctrine/cache",
113 "version": "1.10.1",
114 "source": {
115 "type": "git",
116 "url": "https://github.com/doctrine/cache.git",
117 "reference": "35a4a70cd94e09e2259dfae7488afc6b474ecbd3"
118 },
119 "dist": {
120 "type": "zip",
121 "url": "https://api.github.com/repos/doctrine/cache/zipball/35a4a70cd94e09e2259dfae7488afc6b474ecbd3",
122 "reference": "35a4a70cd94e09e2259dfae7488afc6b474ecbd3",
123 "shasum": ""
124 },
125 "require": {
126 "php": "~7.1 || ^8.0"
127 },
128 "conflict": {
129 "doctrine/common": ">2.2,<2.4"
130 },
131 "require-dev": {
132 "alcaeus/mongo-php-adapter": "^1.1",
133 "doctrine/coding-standard": "^6.0",
134 "mongodb/mongodb": "^1.1",
135 "phpunit/phpunit": "^7.0",
136 "predis/predis": "~1.0"
137 },
138 "suggest": {
139 "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
140 },
141 "type": "library",
142 "extra": {
143 "branch-alias": {
144 "dev-master": "1.9.x-dev"
145 }
146 },
147 "autoload": {
148 "psr-4": {
149 "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
150 }
151 },
152 "notification-url": "https://packagist.org/downloads/",
153 "license": [
154 "MIT"
155 ],
156 "authors": [
157 {
158 "name": "Guilherme Blanco",
159 "email": "guilhermeblanco@gmail.com"
160 },
161 {
162 "name": "Roman Borschel",
163 "email": "roman@code-factory.org"
164 },
165 {
166 "name": "Benjamin Eberlei",
167 "email": "kontakt@beberlei.de"
168 },
169 {
170 "name": "Jonathan Wage",
171 "email": "jonwage@gmail.com"
172 },
173 {
174 "name": "Johannes Schmitt",
175 "email": "schmittjoh@gmail.com"
176 }
177 ],
178 "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
179 "homepage": "https://www.doctrine-project.org/projects/cache.html",
180 "keywords": [
181 "abstraction",
182 "apcu",
183 "cache",
184 "caching",
185 "couchdb",
186 "memcached",
187 "php",
188 "redis",
189 "xcache"
190 ],
191 "funding": [
192 {
193 "url": "https://www.doctrine-project.org/sponsorship.html",
194 "type": "custom"
195 },
196 {
197 "url": "https://www.patreon.com/phpdoctrine",
198 "type": "patreon"
199 },
200 {
201 "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
202 "type": "tidelift"
203 }
204 ],
205 "time": "2020-05-27T16:24:54+00:00"
206 },
207 {
208 "name": "doctrine/dbal",
209 "version": "2.10.2",
210 "source": {
211 "type": "git",
212 "url": "https://github.com/doctrine/dbal.git",
213 "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8"
214 },
215 "dist": {
216 "type": "zip",
217 "url": "https://api.github.com/repos/doctrine/dbal/zipball/aab745e7b6b2de3b47019da81e7225e14dcfdac8",
218 "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8",
219 "shasum": ""
220 },
221 "require": {
222 "doctrine/cache": "^1.0",
223 "doctrine/event-manager": "^1.0",
224 "ext-pdo": "*",
225 "php": "^7.2"
226 },
227 "require-dev": {
228 "doctrine/coding-standard": "^6.0",
229 "jetbrains/phpstorm-stubs": "^2019.1",
230 "nikic/php-parser": "^4.4",
231 "phpstan/phpstan": "^0.12",
232 "phpunit/phpunit": "^8.4.1",
233 "symfony/console": "^2.0.5|^3.0|^4.0|^5.0",
234 "vimeo/psalm": "^3.11"
235 },
236 "suggest": {
237 "symfony/console": "For helpful console commands such as SQL execution and import of files."
238 },
239 "bin": [
240 "bin/doctrine-dbal"
241 ],
242 "type": "library",
243 "extra": {
244 "branch-alias": {
245 "dev-master": "2.10.x-dev",
246 "dev-develop": "3.0.x-dev"
247 }
248 },
249 "autoload": {
250 "psr-4": {
251 "Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
252 }
253 },
254 "notification-url": "https://packagist.org/downloads/",
255 "license": [
256 "MIT"
257 ],
258 "authors": [
259 {
260 "name": "Guilherme Blanco",
261 "email": "guilhermeblanco@gmail.com"
262 },
263 {
264 "name": "Roman Borschel",
265 "email": "roman@code-factory.org"
266 },
267 {
268 "name": "Benjamin Eberlei",
269 "email": "kontakt@beberlei.de"
270 },
271 {
272 "name": "Jonathan Wage",
273 "email": "jonwage@gmail.com"
274 }
275 ],
276 "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
277 "homepage": "https://www.doctrine-project.org/projects/dbal.html",
278 "keywords": [
279 "abstraction",
280 "database",
281 "db2",
282 "dbal",
283 "mariadb",
284 "mssql",
285 "mysql",
286 "oci8",
287 "oracle",
288 "pdo",
289 "pgsql",
290 "postgresql",
291 "queryobject",
292 "sasql",
293 "sql",
294 "sqlanywhere",
295 "sqlite",
296 "sqlserver",
297 "sqlsrv"
298 ],
299 "funding": [
300 {
301 "url": "https://www.doctrine-project.org/sponsorship.html",
302 "type": "custom"
303 },
304 {
305 "url": "https://www.patreon.com/phpdoctrine",
306 "type": "patreon"
307 },
308 {
309 "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
310 "type": "tidelift"
311 }
312 ],
313 "time": "2020-04-20T17:19:26+00:00"
314 },
315 {
316 "name": "doctrine/event-manager",
317 "version": "1.1.0",
318 "source": {
319 "type": "git",
320 "url": "https://github.com/doctrine/event-manager.git",
321 "reference": "629572819973f13486371cb611386eb17851e85c"
322 },
323 "dist": {
324 "type": "zip",
325 "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c",
326 "reference": "629572819973f13486371cb611386eb17851e85c",
327 "shasum": ""
328 },
329 "require": {
330 "php": "^7.1"
331 },
332 "conflict": {
333 "doctrine/common": "<2.9@dev"
334 },
335 "require-dev": {
336 "doctrine/coding-standard": "^6.0",
337 "phpunit/phpunit": "^7.0"
338 },
339 "type": "library",
340 "extra": {
341 "branch-alias": {
342 "dev-master": "1.0.x-dev"
343 }
344 },
345 "autoload": {
346 "psr-4": {
347 "Doctrine\\Common\\": "lib/Doctrine/Common"
348 }
349 },
350 "notification-url": "https://packagist.org/downloads/",
351 "license": [
352 "MIT"
353 ],
354 "authors": [
355 {
356 "name": "Guilherme Blanco",
357 "email": "guilhermeblanco@gmail.com"
358 },
359 {
360 "name": "Roman Borschel",
361 "email": "roman@code-factory.org"
362 },
363 {
364 "name": "Benjamin Eberlei",
365 "email": "kontakt@beberlei.de"
366 },
367 {
368 "name": "Jonathan Wage",
369 "email": "jonwage@gmail.com"
370 },
371 {
372 "name": "Johannes Schmitt",
373 "email": "schmittjoh@gmail.com"
374 },
375 {
376 "name": "Marco Pivetta",
377 "email": "ocramius@gmail.com"
378 }
379 ],
380 "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
381 "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
382 "keywords": [
383 "event",
384 "event dispatcher",
385 "event manager",
386 "event system",
387 "events"
388 ],
389 "time": "2019-11-10T09:48:07+00:00"
390 },
391 {
392 "name": "guzzlehttp/guzzle",
393 "version": "6.5.4",
394 "source": {
395 "type": "git",
396 "url": "https://github.com/guzzle/guzzle.git",
397 "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d"
398 },
399 "dist": {
400 "type": "zip",
401 "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
402 "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
403 "shasum": ""
404 },
405 "require": {
406 "ext-json": "*",
407 "guzzlehttp/promises": "^1.0",
408 "guzzlehttp/psr7": "^1.6.1",
409 "php": ">=5.5",
410 "symfony/polyfill-intl-idn": "1.17.0"
411 },
412 "require-dev": {
413 "ext-curl": "*",
414 "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
415 "psr/log": "^1.1"
416 },
417 "suggest": {
418 "psr/log": "Required for using the Log middleware"
419 },
420 "type": "library",
421 "extra": {
422 "branch-alias": {
423 "dev-master": "6.5-dev"
424 }
425 },
426 "autoload": {
427 "psr-4": {
428 "GuzzleHttp\\": "src/"
429 },
430 "files": [
431 "src/functions_include.php"
432 ]
433 },
434 "notification-url": "https://packagist.org/downloads/",
435 "license": [
436 "MIT"
437 ],
438 "authors": [
439 {
440 "name": "Michael Dowling",
441 "email": "mtdowling@gmail.com",
442 "homepage": "https://github.com/mtdowling"
443 }
444 ],
445 "description": "Guzzle is a PHP HTTP client library",
446 "homepage": "http://guzzlephp.org/",
447 "keywords": [
448 "client",
449 "curl",
450 "framework",
451 "http",
452 "http client",
453 "rest",
454 "web service"
455 ],
456 "time": "2020-05-25T19:35:05+00:00"
457 },
458 {
459 "name": "guzzlehttp/promises",
460 "version": "v1.3.1",
461 "source": {
462 "type": "git",
463 "url": "https://github.com/guzzle/promises.git",
464 "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
465 },
466 "dist": {
467 "type": "zip",
468 "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
469 "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
470 "shasum": ""
471 },
472 "require": {
473 "php": ">=5.5.0"
474 },
475 "require-dev": {
476 "phpunit/phpunit": "^4.0"
477 },
478 "type": "library",
479 "extra": {
480 "branch-alias": {
481 "dev-master": "1.4-dev"
482 }
483 },
484 "autoload": {
485 "psr-4": {
486 "GuzzleHttp\\Promise\\": "src/"
487 },
488 "files": [
489 "src/functions_include.php"
490 ]
491 },
492 "notification-url": "https://packagist.org/downloads/",
493 "license": [
494 "MIT"
495 ],
496 "authors": [
497 {
498 "name": "Michael Dowling",
499 "email": "mtdowling@gmail.com",
500 "homepage": "https://github.com/mtdowling"
501 }
502 ],
503 "description": "Guzzle promises library",
504 "keywords": [
505 "promise"
506 ],
507 "time": "2016-12-20T10:07:11+00:00"
508 },
509 {
510 "name": "guzzlehttp/psr7",
511 "version": "1.6.1",
512 "source": {
513 "type": "git",
514 "url": "https://github.com/guzzle/psr7.git",
515 "reference": "239400de7a173fe9901b9ac7c06497751f00727a"
516 },
517 "dist": {
518 "type": "zip",
519 "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
520 "reference": "239400de7a173fe9901b9ac7c06497751f00727a",
521 "shasum": ""
522 },
523 "require": {
524 "php": ">=5.4.0",
525 "psr/http-message": "~1.0",
526 "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
527 },
528 "provide": {
529 "psr/http-message-implementation": "1.0"
530 },
531 "require-dev": {
532 "ext-zlib": "*",
533 "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
534 },
535 "suggest": {
536 "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
537 },
538 "type": "library",
539 "extra": {
540 "branch-alias": {
541 "dev-master": "1.6-dev"
542 }
543 },
544 "autoload": {
545 "psr-4": {
546 "GuzzleHttp\\Psr7\\": "src/"
547 },
548 "files": [
549 "src/functions_include.php"
550 ]
551 },
552 "notification-url": "https://packagist.org/downloads/",
553 "license": [
554 "MIT"
555 ],
556 "authors": [
557 {
558 "name": "Michael Dowling",
559 "email": "mtdowling@gmail.com",
560 "homepage": "https://github.com/mtdowling"
561 },
562 {
563 "name": "Tobias Schultze",
564 "homepage": "https://github.com/Tobion"
565 }
566 ],
567 "description": "PSR-7 message implementation that also provides common utility methods",
568 "keywords": [
569 "http",
570 "message",
571 "psr-7",
572 "request",
573 "response",
574 "stream",
575 "uri",
576 "url"
577 ],
578 "time": "2019-07-01T23:21:34+00:00"
579 },
580 {
581 "name": "nikic/fast-route",
582 "version": "v1.3.0",
583 "source": {
584 "type": "git",
585 "url": "https://github.com/nikic/FastRoute.git",
586 "reference": "181d480e08d9476e61381e04a71b34dc0432e812"
587 },
588 "dist": {
589 "type": "zip",
590 "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812",
591 "reference": "181d480e08d9476e61381e04a71b34dc0432e812",
592 "shasum": ""
593 },
594 "require": {
595 "php": ">=5.4.0"
596 },
597 "require-dev": {
598 "phpunit/phpunit": "^4.8.35|~5.7"
599 },
600 "type": "library",
601 "autoload": {
602 "psr-4": {
603 "FastRoute\\": "src/"
604 },
605 "files": [
606 "src/functions.php"
607 ]
608 },
609 "notification-url": "https://packagist.org/downloads/",
610 "license": [
611 "BSD-3-Clause"
612 ],
613 "authors": [
614 {
615 "name": "Nikita Popov",
616 "email": "nikic@php.net"
617 }
618 ],
619 "description": "Fast request router for PHP",
620 "keywords": [
621 "router",
622 "routing"
623 ],
624 "time": "2018-02-13T20:26:39+00:00"
625 },
626 {
627 "name": "paragonie/random_compat",
628 "version": "v9.99.99",
629 "source": {
630 "type": "git",
631 "url": "https://github.com/paragonie/random_compat.git",
632 "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
633 },
634 "dist": {
635 "type": "zip",
636 "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
637 "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
638 "shasum": ""
639 },
640 "require": {
641 "php": "^7"
642 },
643 "require-dev": {
644 "phpunit/phpunit": "4.*|5.*",
645 "vimeo/psalm": "^1"
646 },
647 "suggest": {
648 "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
649 },
650 "type": "library",
651 "notification-url": "https://packagist.org/downloads/",
652 "license": [
653 "MIT"
654 ],
655 "authors": [
656 {
657 "name": "Paragon Initiative Enterprises",
658 "email": "security@paragonie.com",
659 "homepage": "https://paragonie.com"
660 }
661 ],
662 "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
663 "keywords": [
664 "csprng",
665 "polyfill",
666 "pseudorandom",
667 "random"
668 ],
669 "time": "2018-07-02T15:55:56+00:00"
670 },
671 {
672 "name": "pimple/pimple",
673 "version": "v3.3.0",
674 "source": {
675 "type": "git",
676 "url": "https://github.com/silexphp/Pimple.git",
677 "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930"
678 },
679 "dist": {
680 "type": "zip",
681 "url": "https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930",
682 "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930",
683 "shasum": ""
684 },
685 "require": {
686 "php": "^7.2.5",
687 "psr/container": "^1.0"
688 },
689 "require-dev": {
690 "symfony/phpunit-bridge": "^3.4|^4.4|^5.0"
691 },
692 "type": "library",
693 "extra": {
694 "branch-alias": {
695 "dev-master": "3.3.x-dev"
696 }
697 },
698 "autoload": {
699 "psr-0": {
700 "Pimple": "src/"
701 }
702 },
703 "notification-url": "https://packagist.org/downloads/",
704 "license": [
705 "MIT"
706 ],
707 "authors": [
708 {
709 "name": "Fabien Potencier",
710 "email": "fabien@symfony.com"
711 }
712 ],
713 "description": "Pimple, a simple Dependency Injection Container",
714 "homepage": "https://pimple.symfony.com",
715 "keywords": [
716 "container",
717 "dependency injection"
718 ],
719 "time": "2020-03-03T09:12:48+00:00"
720 },
721 {
722 "name": "psr/container",
723 "version": "1.0.0",
724 "source": {
725 "type": "git",
726 "url": "https://github.com/php-fig/container.git",
727 "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
728 },
729 "dist": {
730 "type": "zip",
731 "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
732 "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
733 "shasum": ""
734 },
735 "require": {
736 "php": ">=5.3.0"
737 },
738 "type": "library",
739 "extra": {
740 "branch-alias": {
741 "dev-master": "1.0.x-dev"
742 }
743 },
744 "autoload": {
745 "psr-4": {
746 "Psr\\Container\\": "src/"
747 }
748 },
749 "notification-url": "https://packagist.org/downloads/",
750 "license": [
751 "MIT"
752 ],
753 "authors": [
754 {
755 "name": "PHP-FIG",
756 "homepage": "http://www.php-fig.org/"
757 }
758 ],
759 "description": "Common Container Interface (PHP FIG PSR-11)",
760 "homepage": "https://github.com/php-fig/container",
761 "keywords": [
762 "PSR-11",
763 "container",
764 "container-interface",
765 "container-interop",
766 "psr"
767 ],
768 "time": "2017-02-14T16:28:37+00:00"
769 },
770 {
771 "name": "psr/http-message",
772 "version": "1.0.1",
773 "source": {
774 "type": "git",
775 "url": "https://github.com/php-fig/http-message.git",
776 "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
777 },
778 "dist": {
779 "type": "zip",
780 "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
781 "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
782 "shasum": ""
783 },
784 "require": {
785 "php": ">=5.3.0"
786 },
787 "type": "library",
788 "extra": {
789 "branch-alias": {
790 "dev-master": "1.0.x-dev"
791 }
792 },
793 "autoload": {
794 "psr-4": {
795 "Psr\\Http\\Message\\": "src/"
796 }
797 },
798 "notification-url": "https://packagist.org/downloads/",
799 "license": [
800 "MIT"
801 ],
802 "authors": [
803 {
804 "name": "PHP-FIG",
805 "homepage": "http://www.php-fig.org/"
806 }
807 ],
808 "description": "Common interface for HTTP messages",
809 "homepage": "https://github.com/php-fig/http-message",
810 "keywords": [
811 "http",
812 "http-message",
813 "psr",
814 "psr-7",
815 "request",
816 "response"
817 ],
818 "time": "2016-08-06T14:39:51+00:00"
819 },
820 {
821 "name": "ralouphie/getallheaders",
822 "version": "3.0.3",
823 "source": {
824 "type": "git",
825 "url": "https://github.com/ralouphie/getallheaders.git",
826 "reference": "120b605dfeb996808c31b6477290a714d356e822"
827 },
828 "dist": {
829 "type": "zip",
830 "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
831 "reference": "120b605dfeb996808c31b6477290a714d356e822",
832 "shasum": ""
833 },
834 "require": {
835 "php": ">=5.6"
836 },
837 "require-dev": {
838 "php-coveralls/php-coveralls": "^2.1",
839 "phpunit/phpunit": "^5 || ^6.5"
840 },
841 "type": "library",
842 "autoload": {
843 "files": [
844 "src/getallheaders.php"
845 ]
846 },
847 "notification-url": "https://packagist.org/downloads/",
848 "license": [
849 "MIT"
850 ],
851 "authors": [
852 {
853 "name": "Ralph Khattar",
854 "email": "ralph.khattar@gmail.com"
855 }
856 ],
857 "description": "A polyfill for getallheaders.",
858 "time": "2019-03-08T08:55:37+00:00"
859 },
860 {
861 "name": "slim/csrf",
862 "version": "0.8.3",
863 "source": {
864 "type": "git",
865 "url": "https://github.com/slimphp/Slim-Csrf.git",
866 "reference": "5f2bcf5d89adf86dc0455a32bea84d912ab466a7"
867 },
868 "dist": {
869 "type": "zip",
870 "url": "https://api.github.com/repos/slimphp/Slim-Csrf/zipball/5f2bcf5d89adf86dc0455a32bea84d912ab466a7",
871 "reference": "5f2bcf5d89adf86dc0455a32bea84d912ab466a7",
872 "shasum": ""
873 },
874 "require": {
875 "paragonie/random_compat": "^1.1|^2.0|^9.99",
876 "php": ">=5.5.0",
877 "psr/http-message": "^1.0"
878 },
879 "require-dev": {
880 "phpunit/phpunit": "^4.0",
881 "slim/slim": "~3.0"
882 },
883 "type": "library",
884 "autoload": {
885 "psr-4": {
886 "Slim\\Csrf\\": "src"
887 }
888 },
889 "notification-url": "https://packagist.org/downloads/",
890 "license": [
891 "MIT"
892 ],
893 "authors": [
894 {
895 "name": "Josh Lockhart",
896 "email": "hello@joshlockhart.com",
897 "homepage": "http://joshlockhart.com"
898 }
899 ],
900 "description": "Slim Framework 3 CSRF protection middleware",
901 "homepage": "http://slimframework.com",
902 "keywords": [
903 "csrf",
904 "framework",
905 "middleware",
906 "slim"
907 ],
908 "time": "2018-08-22T16:12:18+00:00"
909 },
910 {
911 "name": "slim/slim",
912 "version": "3.12.3",
913 "source": {
914 "type": "git",
915 "url": "https://github.com/slimphp/Slim.git",
916 "reference": "1c9318a84ffb890900901136d620b4f03a59da38"
917 },
918 "dist": {
919 "type": "zip",
920 "url": "https://api.github.com/repos/slimphp/Slim/zipball/1c9318a84ffb890900901136d620b4f03a59da38",
921 "reference": "1c9318a84ffb890900901136d620b4f03a59da38",
922 "shasum": ""
923 },
924 "require": {
925 "ext-json": "*",
926 "ext-libxml": "*",
927 "ext-simplexml": "*",
928 "nikic/fast-route": "^1.0",
929 "php": ">=5.5.0",
930 "pimple/pimple": "^3.0",
931 "psr/container": "^1.0",
932 "psr/http-message": "^1.0"
933 },
934 "provide": {
935 "psr/http-message-implementation": "1.0"
936 },
937 "require-dev": {
938 "phpunit/phpunit": "^4.0",
939 "squizlabs/php_codesniffer": "^2.5"
940 },
941 "type": "library",
942 "autoload": {
943 "psr-4": {
944 "Slim\\": "Slim"
945 }
946 },
947 "notification-url": "https://packagist.org/downloads/",
948 "license": [
949 "MIT"
950 ],
951 "authors": [
952 {
953 "name": "Josh Lockhart",
954 "email": "hello@joshlockhart.com",
955 "homepage": "https://joshlockhart.com"
956 },
957 {
958 "name": "Andrew Smith",
959 "email": "a.smith@silentworks.co.uk",
960 "homepage": "http://silentworks.co.uk"
961 },
962 {
963 "name": "Rob Allen",
964 "email": "rob@akrabat.com",
965 "homepage": "http://akrabat.com"
966 },
967 {
968 "name": "Gabriel Manricks",
969 "email": "gmanricks@me.com",
970 "homepage": "http://gabrielmanricks.com"
971 }
972 ],
973 "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs",
974 "homepage": "https://slimframework.com",
975 "keywords": [
976 "api",
977 "framework",
978 "micro",
979 "router"
980 ],
981 "time": "2019-11-28T17:40:33+00:00"
982 },
983 {
984 "name": "symfony/console",
985 "version": "v2.8.0",
986 "source": {
987 "type": "git",
988 "url": "https://github.com/symfony/console.git",
989 "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41"
990 },
991 "dist": {
992 "type": "zip",
993 "url": "https://api.github.com/repos/symfony/console/zipball/d232bfc100dfd32b18ccbcab4bcc8f28697b7e41",
994 "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41",
995 "shasum": ""
996 },
997 "require": {
998 "php": ">=5.3.9",
999 "symfony/polyfill-mbstring": "~1.0"
1000 },
1001 "require-dev": {
1002 "psr/log": "~1.0",
1003 "symfony/event-dispatcher": "~2.1|~3.0.0",
1004 "symfony/process": "~2.1|~3.0.0"
1005 },
1006 "suggest": {
1007 "psr/log": "For using the console logger",
1008 "symfony/event-dispatcher": "",
1009 "symfony/process": ""
1010 },
1011 "type": "library",
1012 "extra": {
1013 "branch-alias": {
1014 "dev-master": "2.8-dev"
1015 }
1016 },
1017 "autoload": {
1018 "psr-4": {
1019 "Symfony\\Component\\Console\\": ""
1020 },
1021 "exclude-from-classmap": [
1022 "/Tests/"
1023 ]
1024 },
1025 "notification-url": "https://packagist.org/downloads/",
1026 "license": [
1027 "MIT"
1028 ],
1029 "authors": [
1030 {
1031 "name": "Fabien Potencier",
1032 "email": "fabien@symfony.com"
1033 },
1034 {
1035 "name": "Symfony Community",
1036 "homepage": "https://symfony.com/contributors"
1037 }
1038 ],
1039 "description": "Symfony Console Component",
1040 "homepage": "https://symfony.com",
1041 "time": "2015-11-30T12:35:10+00:00"
1042 },
1043 {
1044 "name": "symfony/polyfill-intl-idn",
1045 "version": "v1.17.0",
1046 "source": {
1047 "type": "git",
1048 "url": "https://github.com/symfony/polyfill-intl-idn.git",
1049 "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a"
1050 },
1051 "dist": {
1052 "type": "zip",
1053 "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a",
1054 "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a",
1055 "shasum": ""
1056 },
1057 "require": {
1058 "php": ">=5.3.3",
1059 "symfony/polyfill-mbstring": "^1.3",
1060 "symfony/polyfill-php72": "^1.10"
1061 },
1062 "suggest": {
1063 "ext-intl": "For best performance"
1064 },
1065 "type": "library",
1066 "extra": {
1067 "branch-alias": {
1068 "dev-master": "1.17-dev"
1069 }
1070 },
1071 "autoload": {
1072 "psr-4": {
1073 "Symfony\\Polyfill\\Intl\\Idn\\": ""
1074 },
1075 "files": [
1076 "bootstrap.php"
1077 ]
1078 },
1079 "notification-url": "https://packagist.org/downloads/",
1080 "license": [
1081 "MIT"
1082 ],
1083 "authors": [
1084 {
1085 "name": "Laurent Bassin",
1086 "email": "laurent@bassin.info"
1087 },
1088 {
1089 "name": "Symfony Community",
1090 "homepage": "https://symfony.com/contributors"
1091 }
1092 ],
1093 "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
1094 "homepage": "https://symfony.com",
1095 "keywords": [
1096 "compatibility",
1097 "idn",
1098 "intl",
1099 "polyfill",
1100 "portable",
1101 "shim"
1102 ],
1103 "funding": [
1104 {
1105 "url": "https://symfony.com/sponsor",
1106 "type": "custom"
1107 },
1108 {
1109 "url": "https://github.com/fabpot",
1110 "type": "github"
1111 },
1112 {
1113 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1114 "type": "tidelift"
1115 }
1116 ],
1117 "time": "2020-05-12T16:47:27+00:00"
1118 },
1119 {
1120 "name": "symfony/polyfill-mbstring",
1121 "version": "v1.17.0",
1122 "source": {
1123 "type": "git",
1124 "url": "https://github.com/symfony/polyfill-mbstring.git",
1125 "reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
1126 },
1127 "dist": {
1128 "type": "zip",
1129 "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
1130 "reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
1131 "shasum": ""
1132 },
1133 "require": {
1134 "php": ">=5.3.3"
1135 },
1136 "suggest": {
1137 "ext-mbstring": "For best performance"
1138 },
1139 "type": "library",
1140 "extra": {
1141 "branch-alias": {
1142 "dev-master": "1.17-dev"
1143 }
1144 },
1145 "autoload": {
1146 "psr-4": {
1147 "Symfony\\Polyfill\\Mbstring\\": ""
1148 },
1149 "files": [
1150 "bootstrap.php"
1151 ]
1152 },
1153 "notification-url": "https://packagist.org/downloads/",
1154 "license": [
1155 "MIT"
1156 ],
1157 "authors": [
1158 {
1159 "name": "Nicolas Grekas",
1160 "email": "p@tchwork.com"
1161 },
1162 {
1163 "name": "Symfony Community",
1164 "homepage": "https://symfony.com/contributors"
1165 }
1166 ],
1167 "description": "Symfony polyfill for the Mbstring extension",
1168 "homepage": "https://symfony.com",
1169 "keywords": [
1170 "compatibility",
1171 "mbstring",
1172 "polyfill",
1173 "portable",
1174 "shim"
1175 ],
1176 "funding": [
1177 {
1178 "url": "https://symfony.com/sponsor",
1179 "type": "custom"
1180 },
1181 {
1182 "url": "https://github.com/fabpot",
1183 "type": "github"
1184 },
1185 {
1186 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1187 "type": "tidelift"
1188 }
1189 ],
1190 "time": "2020-05-12T16:47:27+00:00"
1191 },
1192 {
1193 "name": "symfony/polyfill-php72",
1194 "version": "v1.17.0",
1195 "source": {
1196 "type": "git",
1197 "url": "https://github.com/symfony/polyfill-php72.git",
1198 "reference": "f048e612a3905f34931127360bdd2def19a5e582"
1199 },
1200 "dist": {
1201 "type": "zip",
1202 "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
1203 "reference": "f048e612a3905f34931127360bdd2def19a5e582",
1204 "shasum": ""
1205 },
1206 "require": {
1207 "php": ">=5.3.3"
1208 },
1209 "type": "library",
1210 "extra": {
1211 "branch-alias": {
1212 "dev-master": "1.17-dev"
1213 }
1214 },
1215 "autoload": {
1216 "psr-4": {
1217 "Symfony\\Polyfill\\Php72\\": ""
1218 },
1219 "files": [
1220 "bootstrap.php"
1221 ]
1222 },
1223 "notification-url": "https://packagist.org/downloads/",
1224 "license": [
1225 "MIT"
1226 ],
1227 "authors": [
1228 {
1229 "name": "Nicolas Grekas",
1230 "email": "p@tchwork.com"
1231 },
1232 {
1233 "name": "Symfony Community",
1234 "homepage": "https://symfony.com/contributors"
1235 }
1236 ],
1237 "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
1238 "homepage": "https://symfony.com",
1239 "keywords": [
1240 "compatibility",
1241 "polyfill",
1242 "portable",
1243 "shim"
1244 ],
1245 "funding": [
1246 {
1247 "url": "https://symfony.com/sponsor",
1248 "type": "custom"
1249 },
1250 {
1251 "url": "https://github.com/fabpot",
1252 "type": "github"
1253 },
1254 {
1255 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1256 "type": "tidelift"
1257 }
1258 ],
1259 "time": "2020-05-12T16:47:27+00:00"
1260 },
1261 {
1262 "name": "symfony/yaml",
1263 "version": "v2.8.0",
1264 "source": {
1265 "type": "git",
1266 "url": "https://github.com/symfony/yaml.git",
1267 "reference": "f79824187de95064a2f5038904c4d7f0227fedb5"
1268 },
1269 "dist": {
1270 "type": "zip",
1271 "url": "https://api.github.com/repos/symfony/yaml/zipball/f79824187de95064a2f5038904c4d7f0227fedb5",
1272 "reference": "f79824187de95064a2f5038904c4d7f0227fedb5",
1273 "shasum": ""
1274 },
1275 "require": {
1276 "php": ">=5.3.9"
1277 },
1278 "type": "library",
1279 "extra": {
1280 "branch-alias": {
1281 "dev-master": "2.8-dev"
1282 }
1283 },
1284 "autoload": {
1285 "psr-4": {
1286 "Symfony\\Component\\Yaml\\": ""
1287 },
1288 "exclude-from-classmap": [
1289 "/Tests/"
1290 ]
1291 },
1292 "notification-url": "https://packagist.org/downloads/",
1293 "license": [
1294 "MIT"
1295 ],
1296 "authors": [
1297 {
1298 "name": "Fabien Potencier",
1299 "email": "fabien@symfony.com"
1300 },
1301 {
1302 "name": "Symfony Community",
1303 "homepage": "https://symfony.com/contributors"
1304 }
1305 ],
1306 "description": "Symfony Yaml Component",
1307 "homepage": "https://symfony.com",
1308 "time": "2015-11-30T12:35:10+00:00"
1309 }
1310 ],
1311 "packages-dev": [],
1312 "aliases": [],
1313 "minimum-stability": "stable",
1314 "stability-flags": [],
1315 "prefer-stable": false,
1316 "prefer-lowest": false,
1317 "platform": {
1318 "php": ">=5.5.9",
1319 "ext-ldap": "*"
1320 },
1321 "platform-dev": [],
1322 "plugin-api-version": "1.1.0"
1323}
diff --git a/flakes/mypackages/pkgs/status_engine/interface_php_packages.nix b/flakes/mypackages/pkgs/status_engine/interface_php_packages.nix
new file mode 100644
index 0000000..d81e83c
--- /dev/null
+++ b/flakes/mypackages/pkgs/status_engine/interface_php_packages.nix
@@ -0,0 +1,217 @@
1# Generated with composer2nix and adapted to return only the list of
2# packages
3{ composerEnv, fetchurl }:
4{
5 packages = {
6 "crate/crate-dbal" = {
7 targetDir = "";
8 src = composerEnv.buildZipPackage {
9 name = "crate-crate-dbal-f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417";
10 src = fetchurl {
11 url = https://api.github.com/repos/crate/crate-dbal/zipball/f5e3f5cb4f2d32f00d2dde2b91beae17f38ff417;
12 sha256 = "0778m29av1nj6596b7x6xz6frd41nrswn20r327lpdfw7y6b19ni";
13 };
14 };
15 };
16 "crate/crate-pdo" = {
17 targetDir = "";
18 src = composerEnv.buildZipPackage {
19 name = "crate-crate-pdo-33332cef1a27844e473265e584223f142c37317f";
20 src = fetchurl {
21 url = https://api.github.com/repos/crate/crate-pdo/zipball/33332cef1a27844e473265e584223f142c37317f;
22 sha256 = "11w30hyr0lfw800aakl0ii8pwdv7vzpbjklw0z96hzsky788hfa7";
23 };
24 };
25 };
26 "doctrine/cache" = {
27 targetDir = "";
28 src = composerEnv.buildZipPackage {
29 name = "doctrine-cache-35a4a70cd94e09e2259dfae7488afc6b474ecbd3";
30 src = fetchurl {
31 url = https://api.github.com/repos/doctrine/cache/zipball/35a4a70cd94e09e2259dfae7488afc6b474ecbd3;
32 sha256 = "1fk0c8vhjgl7j4b2vd4k7sshdrqysqwcp9mlxbapf8x7nmpa6i9b";
33 };
34 };
35 };
36 "doctrine/dbal" = {
37 targetDir = "";
38 src = composerEnv.buildZipPackage {
39 name = "doctrine-dbal-aab745e7b6b2de3b47019da81e7225e14dcfdac8";
40 src = fetchurl {
41 url = https://api.github.com/repos/doctrine/dbal/zipball/aab745e7b6b2de3b47019da81e7225e14dcfdac8;
42 sha256 = "04c6r4p1b0iknjk95hpc4fsyxg8s2x1skfmnx2g11z64jvldzs62";
43 };
44 };
45 };
46 "doctrine/event-manager" = {
47 targetDir = "";
48 src = composerEnv.buildZipPackage {
49 name = "doctrine-event-manager-629572819973f13486371cb611386eb17851e85c";
50 src = fetchurl {
51 url = https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c;
52 sha256 = "02zglsk2zfnpabs83an7zg18h2k31h00vzk6qpawvmy35r1vmrfn";
53 };
54 };
55 };
56 "guzzlehttp/guzzle" = {
57 targetDir = "";
58 src = composerEnv.buildZipPackage {
59 name = "guzzlehttp-guzzle-a4a1b6930528a8f7ee03518e6442ec7a44155d9d";
60 src = fetchurl {
61 url = https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d;
62 sha256 = "0midln6ji6b990vkc0syn631nf6r94lv5600dcc26lcivz8c4gk3";
63 };
64 };
65 };
66 "guzzlehttp/promises" = {
67 targetDir = "";
68 src = composerEnv.buildZipPackage {
69 name = "guzzlehttp-promises-a59da6cf61d80060647ff4d3eb2c03a2bc694646";
70 src = fetchurl {
71 url = https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646;
72 sha256 = "1kpl91fzalcgkcs16lpakvzcnbkry3id4ynx6xhq477p4fipdciz";
73 };
74 };
75 };
76 "guzzlehttp/psr7" = {
77 targetDir = "";
78 src = composerEnv.buildZipPackage {
79 name = "guzzlehttp-psr7-239400de7a173fe9901b9ac7c06497751f00727a";
80 src = fetchurl {
81 url = https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a;
82 sha256 = "0mfq93x7ayix6l3v5jkk40a9hnmrxaqr9vk1r26q39d1s6292ma7";
83 };
84 };
85 };
86 "nikic/fast-route" = {
87 targetDir = "";
88 src = composerEnv.buildZipPackage {
89 name = "nikic-fast-route-181d480e08d9476e61381e04a71b34dc0432e812";
90 src = fetchurl {
91 url = https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812;
92 sha256 = "0sjqivm0gp6d6nal58n4r5wzyi21r4hdzn4v31ydgjgni7877p4i";
93 };
94 };
95 };
96 "paragonie/random_compat" = {
97 targetDir = "";
98 src = composerEnv.buildZipPackage {
99 name = "paragonie-random_compat-84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95";
100 src = fetchurl {
101 url = https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95;
102 sha256 = "03nsccdvcb79l64b7lsmx0n8ldf5z3v8niqr7bpp6wg401qp9p09";
103 };
104 };
105 };
106 "pimple/pimple" = {
107 targetDir = "";
108 src = composerEnv.buildZipPackage {
109 name = "pimple-pimple-e55d12f9d6a0e7f9c85992b73df1267f46279930";
110 src = fetchurl {
111 url = https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930;
112 sha256 = "0xmx8jc9shh2a63wg6574g6qc63w3nvr7w4062d97sbgnn62r6hw";
113 };
114 };
115 };
116 "psr/container" = {
117 targetDir = "";
118 src = composerEnv.buildZipPackage {
119 name = "psr-container-b7ce3b176482dbbc1245ebf52b181af44c2cf55f";
120 src = fetchurl {
121 url = https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f;
122 sha256 = "0rkz64vgwb0gfi09klvgay4qnw993l1dc03vyip7d7m2zxi6cy4j";
123 };
124 };
125 };
126 "psr/http-message" = {
127 targetDir = "";
128 src = composerEnv.buildZipPackage {
129 name = "psr-http-message-f6561bf28d520154e4b0ec72be95418abe6d9363";
130 src = fetchurl {
131 url = https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363;
132 sha256 = "195dd67hva9bmr52iadr4kyp2gw2f5l51lplfiay2pv6l9y4cf45";
133 };
134 };
135 };
136 "ralouphie/getallheaders" = {
137 targetDir = "";
138 src = composerEnv.buildZipPackage {
139 name = "ralouphie-getallheaders-120b605dfeb996808c31b6477290a714d356e822";
140 src = fetchurl {
141 url = https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822;
142 sha256 = "1bv7ndkkankrqlr2b4kw7qp3fl0dxi6bp26bnim6dnlhavd6a0gg";
143 };
144 };
145 };
146 "slim/csrf" = {
147 targetDir = "";
148 src = composerEnv.buildZipPackage {
149 name = "slim-csrf-5f2bcf5d89adf86dc0455a32bea84d912ab466a7";
150 src = fetchurl {
151 url = https://api.github.com/repos/slimphp/Slim-Csrf/zipball/5f2bcf5d89adf86dc0455a32bea84d912ab466a7;
152 sha256 = "1n8q8cgc2y60z7waqw9xyq9pl9dvww85rbdcnap55d5a55api8j5";
153 };
154 };
155 };
156 "slim/slim" = {
157 targetDir = "";
158 src = composerEnv.buildZipPackage {
159 name = "slim-slim-1c9318a84ffb890900901136d620b4f03a59da38";
160 src = fetchurl {
161 url = https://api.github.com/repos/slimphp/Slim/zipball/1c9318a84ffb890900901136d620b4f03a59da38;
162 sha256 = "08s7y7apz609vg745wr61nn0ji029zvnd0435fn3kmn57f8lgq7x";
163 };
164 };
165 };
166 "symfony/console" = {
167 targetDir = "";
168 src = composerEnv.buildZipPackage {
169 name = "symfony-console-d232bfc100dfd32b18ccbcab4bcc8f28697b7e41";
170 src = fetchurl {
171 url = https://api.github.com/repos/symfony/console/zipball/d232bfc100dfd32b18ccbcab4bcc8f28697b7e41;
172 sha256 = "16kgs7x60y3vj0bbmljj80hq1x8fb6w1g0fd1j2hc1cbphgj8x67";
173 };
174 };
175 };
176 "symfony/polyfill-intl-idn" = {
177 targetDir = "";
178 src = composerEnv.buildZipPackage {
179 name = "symfony-polyfill-intl-idn-3bff59ea7047e925be6b7f2059d60af31bb46d6a";
180 src = fetchurl {
181 url = https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a;
182 sha256 = "0c26v3xpchyiqckp663n7i3hgswbzy56r0jdwjizrsgqq731h6fp";
183 };
184 };
185 };
186 "symfony/polyfill-mbstring" = {
187 targetDir = "";
188 src = composerEnv.buildZipPackage {
189 name = "symfony-polyfill-mbstring-fa79b11539418b02fc5e1897267673ba2c19419c";
190 src = fetchurl {
191 url = https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c;
192 sha256 = "17m46mkkcv7fsxf71si0cq8xdf6b1k272mc5bfwgl00h8s9bk0rs";
193 };
194 };
195 };
196 "symfony/polyfill-php72" = {
197 targetDir = "";
198 src = composerEnv.buildZipPackage {
199 name = "symfony-polyfill-php72-f048e612a3905f34931127360bdd2def19a5e582";
200 src = fetchurl {
201 url = https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582;
202 sha256 = "1lkjxh17nfaglh7v2m3zw2fy6b2w8nmxr7jb1gqqpvg74yqqz83f";
203 };
204 };
205 };
206 "symfony/yaml" = {
207 targetDir = "";
208 src = composerEnv.buildZipPackage {
209 name = "symfony-yaml-f79824187de95064a2f5038904c4d7f0227fedb5";
210 src = fetchurl {
211 url = https://api.github.com/repos/symfony/yaml/zipball/f79824187de95064a2f5038904c4d7f0227fedb5;
212 sha256 = "1pwx4bckfjz0afz62q02vl0i4wmg3c6f963jrhlx247b1z6isram";
213 };
214 };
215 };
216 };
217}
diff --git a/flakes/mypackages/pkgs/status_engine/module.nix b/flakes/mypackages/pkgs/status_engine/module.nix
new file mode 100644
index 0000000..d3ac03e
--- /dev/null
+++ b/flakes/mypackages/pkgs/status_engine/module.nix
@@ -0,0 +1,19 @@
1{ stdenv, fetchFromGitHub, gearmand, json_c, libuuid, libevent, pkgconfig, glib }:
2stdenv.mkDerivation ({
3 pname = "statusengine-module";
4 version = "d461e95-master";
5 src = fetchFromGitHub {
6 owner = "statusengine";
7 repo = "module";
8 rev = "d461e95a11fffaac604d11ac42d237b5e13071bc";
9 sha256 = "1awmq9rck9xy82pambnd2wh66ndif8x8jpk4qbbghs9f2sd48x1n";
10 fetchSubmodules = true;
11 };
12 patches = [ ./host_perfdata.patch ];
13 buildInputs = [ gearmand json_c libuuid libevent pkgconfig glib ];
14 makeFlags = "all";
15 installPhase = ''
16 mkdir -p $out/lib/status-engine
17 cp -a src/bin/* $out/lib/status-engine
18 '';
19})
diff --git a/flakes/mypackages/pkgs/status_engine/worker.nix b/flakes/mypackages/pkgs/status_engine/worker.nix
new file mode 100644
index 0000000..d8425e1
--- /dev/null
+++ b/flakes/mypackages/pkgs/status_engine/worker.nix
@@ -0,0 +1,37 @@
1{ stdenv, fetchFromGitHub, composerEnv, fetchurl, gearmand, callPackage, php81, config_file ? "/var/lib/status_engine/ui.yml" }:
2let
3 gearman = php81.buildPecl rec {
4 # git describe
5 version = "2.1.0-12-g8fb88d5";
6 pname = "gearman";
7 src = fetchFromGitHub {
8 owner = "php";
9 repo = "pecl-networking-gearman";
10 rev = "8fb88d5a97111a7e8f0dc67553c387b49f047e53";
11 sha256 = "sha256-VPJX29JfNjh0mHlYY+iYKBHSJGUINbWHvojyYBSkSho=";
12 };
13 configureFlags = [ "--with-gearman=${gearmand}" ];
14 nativeBuildInputs = [ gearmand ];
15 };
16 php = php81.withExtensions({ enabled, all }: enabled ++ (with all; [gearman redis mbstring bcmath iconv]));
17in
18(composerEnv.override { inherit php; }).buildPackage (
19 import ./worker_php_packages.nix { inherit composerEnv fetchurl; } // rec {
20 name = "${pname}-${version}";
21 pname = "worker";
22 version = "master";
23 src = fetchFromGitHub {
24 owner = "statusengine";
25 repo = "worker";
26 rev = "e20d6b5c83c6b3c6a2030c9506542fa59dcbb551";
27 sha256 = "sha256-dcC+SLEqMUubp4JQFSuKNpd6U4VYvGR38Vn1jf6ZvTU=";
28 fetchSubmodules = true;
29 };
30 passthru.php = php;
31 postInstall = ''
32 ln -s ${config_file} $out/etc/config.yml
33 '';
34 preInstall = ''
35 cp ${./worker_composer.lock} $out/composer.lock
36 '';
37})
diff --git a/flakes/mypackages/pkgs/status_engine/worker_composer.lock b/flakes/mypackages/pkgs/status_engine/worker_composer.lock
new file mode 100644
index 0000000..bba0d2d
--- /dev/null
+++ b/flakes/mypackages/pkgs/status_engine/worker_composer.lock
@@ -0,0 +1,2072 @@
1{
2 "_readme": [
3 "This file locks the dependencies of your project to a known state",
4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5 "This file is @generated automatically"
6 ],
7 "content-hash": "f61ef94b19969eb2446f52577078d701",
8 "packages": [
9 {
10 "name": "composer/package-versions-deprecated",
11 "version": "1.11.99.5",
12 "source": {
13 "type": "git",
14 "url": "https://github.com/composer/package-versions-deprecated.git",
15 "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d"
16 },
17 "dist": {
18 "type": "zip",
19 "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d",
20 "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d",
21 "shasum": ""
22 },
23 "require": {
24 "composer-plugin-api": "^1.1.0 || ^2.0",
25 "php": "^7 || ^8"
26 },
27 "replace": {
28 "ocramius/package-versions": "1.11.99"
29 },
30 "require-dev": {
31 "composer/composer": "^1.9.3 || ^2.0@dev",
32 "ext-zip": "^1.13",
33 "phpunit/phpunit": "^6.5 || ^7"
34 },
35 "type": "composer-plugin",
36 "extra": {
37 "class": "PackageVersions\\Installer",
38 "branch-alias": {
39 "dev-master": "1.x-dev"
40 }
41 },
42 "autoload": {
43 "psr-4": {
44 "PackageVersions\\": "src/PackageVersions"
45 }
46 },
47 "notification-url": "https://packagist.org/downloads/",
48 "license": [
49 "MIT"
50 ],
51 "authors": [
52 {
53 "name": "Marco Pivetta",
54 "email": "ocramius@gmail.com"
55 },
56 {
57 "name": "Jordi Boggiano",
58 "email": "j.boggiano@seld.be"
59 }
60 ],
61 "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
62 "support": {
63 "issues": "https://github.com/composer/package-versions-deprecated/issues",
64 "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5"
65 },
66 "funding": [
67 {
68 "url": "https://packagist.com",
69 "type": "custom"
70 },
71 {
72 "url": "https://github.com/composer",
73 "type": "github"
74 },
75 {
76 "url": "https://tidelift.com/funding/github/packagist/composer/composer",
77 "type": "tidelift"
78 }
79 ],
80 "time": "2022-01-17T14:14:24+00:00"
81 },
82 {
83 "name": "doctrine/cache",
84 "version": "2.2.0",
85 "source": {
86 "type": "git",
87 "url": "https://github.com/doctrine/cache.git",
88 "reference": "1ca8f21980e770095a31456042471a57bc4c68fb"
89 },
90 "dist": {
91 "type": "zip",
92 "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb",
93 "reference": "1ca8f21980e770095a31456042471a57bc4c68fb",
94 "shasum": ""
95 },
96 "require": {
97 "php": "~7.1 || ^8.0"
98 },
99 "conflict": {
100 "doctrine/common": ">2.2,<2.4"
101 },
102 "require-dev": {
103 "cache/integration-tests": "dev-master",
104 "doctrine/coding-standard": "^9",
105 "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
106 "psr/cache": "^1.0 || ^2.0 || ^3.0",
107 "symfony/cache": "^4.4 || ^5.4 || ^6",
108 "symfony/var-exporter": "^4.4 || ^5.4 || ^6"
109 },
110 "type": "library",
111 "autoload": {
112 "psr-4": {
113 "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
114 }
115 },
116 "notification-url": "https://packagist.org/downloads/",
117 "license": [
118 "MIT"
119 ],
120 "authors": [
121 {
122 "name": "Guilherme Blanco",
123 "email": "guilhermeblanco@gmail.com"
124 },
125 {
126 "name": "Roman Borschel",
127 "email": "roman@code-factory.org"
128 },
129 {
130 "name": "Benjamin Eberlei",
131 "email": "kontakt@beberlei.de"
132 },
133 {
134 "name": "Jonathan Wage",
135 "email": "jonwage@gmail.com"
136 },
137 {
138 "name": "Johannes Schmitt",
139 "email": "schmittjoh@gmail.com"
140 }
141 ],
142 "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
143 "homepage": "https://www.doctrine-project.org/projects/cache.html",
144 "keywords": [
145 "abstraction",
146 "apcu",
147 "cache",
148 "caching",
149 "couchdb",
150 "memcached",
151 "php",
152 "redis",
153 "xcache"
154 ],
155 "support": {
156 "issues": "https://github.com/doctrine/cache/issues",
157 "source": "https://github.com/doctrine/cache/tree/2.2.0"
158 },
159 "funding": [
160 {
161 "url": "https://www.doctrine-project.org/sponsorship.html",
162 "type": "custom"
163 },
164 {
165 "url": "https://www.patreon.com/phpdoctrine",
166 "type": "patreon"
167 },
168 {
169 "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
170 "type": "tidelift"
171 }
172 ],
173 "time": "2022-05-20T20:07:39+00:00"
174 },
175 {
176 "name": "doctrine/dbal",
177 "version": "2.13.9",
178 "source": {
179 "type": "git",
180 "url": "https://github.com/doctrine/dbal.git",
181 "reference": "c480849ca3ad6706a39c970cdfe6888fa8a058b8"
182 },
183 "dist": {
184 "type": "zip",
185 "url": "https://api.github.com/repos/doctrine/dbal/zipball/c480849ca3ad6706a39c970cdfe6888fa8a058b8",
186 "reference": "c480849ca3ad6706a39c970cdfe6888fa8a058b8",
187 "shasum": ""
188 },
189 "require": {
190 "doctrine/cache": "^1.0|^2.0",
191 "doctrine/deprecations": "^0.5.3|^1",
192 "doctrine/event-manager": "^1.0",
193 "ext-pdo": "*",
194 "php": "^7.1 || ^8"
195 },
196 "require-dev": {
197 "doctrine/coding-standard": "9.0.0",
198 "jetbrains/phpstorm-stubs": "2021.1",
199 "phpstan/phpstan": "1.4.6",
200 "phpunit/phpunit": "^7.5.20|^8.5|9.5.16",
201 "psalm/plugin-phpunit": "0.16.1",
202 "squizlabs/php_codesniffer": "3.6.2",
203 "symfony/cache": "^4.4",
204 "symfony/console": "^2.0.5|^3.0|^4.0|^5.0",
205 "vimeo/psalm": "4.22.0"
206 },
207 "suggest": {
208 "symfony/console": "For helpful console commands such as SQL execution and import of files."
209 },
210 "bin": [
211 "bin/doctrine-dbal"
212 ],
213 "type": "library",
214 "autoload": {
215 "psr-4": {
216 "Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
217 }
218 },
219 "notification-url": "https://packagist.org/downloads/",
220 "license": [
221 "MIT"
222 ],
223 "authors": [
224 {
225 "name": "Guilherme Blanco",
226 "email": "guilhermeblanco@gmail.com"
227 },
228 {
229 "name": "Roman Borschel",
230 "email": "roman@code-factory.org"
231 },
232 {
233 "name": "Benjamin Eberlei",
234 "email": "kontakt@beberlei.de"
235 },
236 {
237 "name": "Jonathan Wage",
238 "email": "jonwage@gmail.com"
239 }
240 ],
241 "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
242 "homepage": "https://www.doctrine-project.org/projects/dbal.html",
243 "keywords": [
244 "abstraction",
245 "database",
246 "db2",
247 "dbal",
248 "mariadb",
249 "mssql",
250 "mysql",
251 "oci8",
252 "oracle",
253 "pdo",
254 "pgsql",
255 "postgresql",
256 "queryobject",
257 "sasql",
258 "sql",
259 "sqlanywhere",
260 "sqlite",
261 "sqlserver",
262 "sqlsrv"
263 ],
264 "support": {
265 "issues": "https://github.com/doctrine/dbal/issues",
266 "source": "https://github.com/doctrine/dbal/tree/2.13.9"
267 },
268 "funding": [
269 {
270 "url": "https://www.doctrine-project.org/sponsorship.html",
271 "type": "custom"
272 },
273 {
274 "url": "https://www.patreon.com/phpdoctrine",
275 "type": "patreon"
276 },
277 {
278 "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
279 "type": "tidelift"
280 }
281 ],
282 "time": "2022-05-02T20:28:55+00:00"
283 },
284 {
285 "name": "doctrine/deprecations",
286 "version": "v1.1.1",
287 "source": {
288 "type": "git",
289 "url": "https://github.com/doctrine/deprecations.git",
290 "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3"
291 },
292 "dist": {
293 "type": "zip",
294 "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
295 "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
296 "shasum": ""
297 },
298 "require": {
299 "php": "^7.1 || ^8.0"
300 },
301 "require-dev": {
302 "doctrine/coding-standard": "^9",
303 "phpstan/phpstan": "1.4.10 || 1.10.15",
304 "phpstan/phpstan-phpunit": "^1.0",
305 "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
306 "psalm/plugin-phpunit": "0.18.4",
307 "psr/log": "^1 || ^2 || ^3",
308 "vimeo/psalm": "4.30.0 || 5.12.0"
309 },
310 "suggest": {
311 "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
312 },
313 "type": "library",
314 "autoload": {
315 "psr-4": {
316 "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
317 }
318 },
319 "notification-url": "https://packagist.org/downloads/",
320 "license": [
321 "MIT"
322 ],
323 "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
324 "homepage": "https://www.doctrine-project.org/",
325 "support": {
326 "issues": "https://github.com/doctrine/deprecations/issues",
327 "source": "https://github.com/doctrine/deprecations/tree/v1.1.1"
328 },
329 "time": "2023-06-03T09:27:29+00:00"
330 },
331 {
332 "name": "doctrine/event-manager",
333 "version": "1.2.0",
334 "source": {
335 "type": "git",
336 "url": "https://github.com/doctrine/event-manager.git",
337 "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520"
338 },
339 "dist": {
340 "type": "zip",
341 "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520",
342 "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520",
343 "shasum": ""
344 },
345 "require": {
346 "doctrine/deprecations": "^0.5.3 || ^1",
347 "php": "^7.1 || ^8.0"
348 },
349 "conflict": {
350 "doctrine/common": "<2.9"
351 },
352 "require-dev": {
353 "doctrine/coding-standard": "^9 || ^10",
354 "phpstan/phpstan": "~1.4.10 || ^1.8.8",
355 "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
356 "vimeo/psalm": "^4.24"
357 },
358 "type": "library",
359 "autoload": {
360 "psr-4": {
361 "Doctrine\\Common\\": "src"
362 }
363 },
364 "notification-url": "https://packagist.org/downloads/",
365 "license": [
366 "MIT"
367 ],
368 "authors": [
369 {
370 "name": "Guilherme Blanco",
371 "email": "guilhermeblanco@gmail.com"
372 },
373 {
374 "name": "Roman Borschel",
375 "email": "roman@code-factory.org"
376 },
377 {
378 "name": "Benjamin Eberlei",
379 "email": "kontakt@beberlei.de"
380 },
381 {
382 "name": "Jonathan Wage",
383 "email": "jonwage@gmail.com"
384 },
385 {
386 "name": "Johannes Schmitt",
387 "email": "schmittjoh@gmail.com"
388 },
389 {
390 "name": "Marco Pivetta",
391 "email": "ocramius@gmail.com"
392 }
393 ],
394 "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
395 "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
396 "keywords": [
397 "event",
398 "event dispatcher",
399 "event manager",
400 "event system",
401 "events"
402 ],
403 "support": {
404 "issues": "https://github.com/doctrine/event-manager/issues",
405 "source": "https://github.com/doctrine/event-manager/tree/1.2.0"
406 },
407 "funding": [
408 {
409 "url": "https://www.doctrine-project.org/sponsorship.html",
410 "type": "custom"
411 },
412 {
413 "url": "https://www.patreon.com/phpdoctrine",
414 "type": "patreon"
415 },
416 {
417 "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager",
418 "type": "tidelift"
419 }
420 ],
421 "time": "2022-10-12T20:51:15+00:00"
422 },
423 {
424 "name": "doctrine/migrations",
425 "version": "2.3.5",
426 "source": {
427 "type": "git",
428 "url": "https://github.com/doctrine/migrations.git",
429 "reference": "28d92a34348fee5daeb80879e56461b2e862fc05"
430 },
431 "dist": {
432 "type": "zip",
433 "url": "https://api.github.com/repos/doctrine/migrations/zipball/28d92a34348fee5daeb80879e56461b2e862fc05",
434 "reference": "28d92a34348fee5daeb80879e56461b2e862fc05",
435 "shasum": ""
436 },
437 "require": {
438 "composer/package-versions-deprecated": "^1.8",
439 "doctrine/dbal": "^2.9",
440 "friendsofphp/proxy-manager-lts": "^1.0",
441 "php": "^7.1 || ^8.0",
442 "symfony/console": "^3.4||^4.4.16||^5.0",
443 "symfony/stopwatch": "^3.4||^4.0||^5.0"
444 },
445 "require-dev": {
446 "doctrine/coding-standard": "^8.2",
447 "doctrine/orm": "^2.6",
448 "ext-pdo_sqlite": "*",
449 "jdorn/sql-formatter": "^1.1",
450 "mikey179/vfsstream": "^1.6",
451 "phpstan/phpstan": "^0.12",
452 "phpstan/phpstan-deprecation-rules": "^0.12",
453 "phpstan/phpstan-phpunit": "^0.12",
454 "phpstan/phpstan-strict-rules": "^0.12",
455 "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4",
456 "symfony/cache": "^4.4. || ^5.3",
457 "symfony/process": "^3.4||^4.0||^5.0",
458 "symfony/yaml": "^3.4||^4.0||^5.0"
459 },
460 "suggest": {
461 "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.",
462 "symfony/yaml": "Allows the use of yaml for migration configuration files."
463 },
464 "bin": [
465 "bin/doctrine-migrations"
466 ],
467 "type": "library",
468 "autoload": {
469 "psr-4": {
470 "Doctrine\\Migrations\\": "lib/Doctrine/Migrations"
471 }
472 },
473 "notification-url": "https://packagist.org/downloads/",
474 "license": [
475 "MIT"
476 ],
477 "authors": [
478 {
479 "name": "Benjamin Eberlei",
480 "email": "kontakt@beberlei.de"
481 },
482 {
483 "name": "Jonathan Wage",
484 "email": "jonwage@gmail.com"
485 },
486 {
487 "name": "Michael Simonson",
488 "email": "contact@mikesimonson.com"
489 }
490 ],
491 "description": "PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.",
492 "homepage": "https://www.doctrine-project.org/projects/migrations.html",
493 "keywords": [
494 "database",
495 "dbal",
496 "migrations",
497 "php"
498 ],
499 "support": {
500 "issues": "https://github.com/doctrine/migrations/issues",
501 "source": "https://github.com/doctrine/migrations/tree/2.3.5"
502 },
503 "funding": [
504 {
505 "url": "https://www.doctrine-project.org/sponsorship.html",
506 "type": "custom"
507 },
508 {
509 "url": "https://www.patreon.com/phpdoctrine",
510 "type": "patreon"
511 },
512 {
513 "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fmigrations",
514 "type": "tidelift"
515 }
516 ],
517 "time": "2021-10-19T19:55:20+00:00"
518 },
519 {
520 "name": "friendsofphp/proxy-manager-lts",
521 "version": "v1.0.16",
522 "source": {
523 "type": "git",
524 "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git",
525 "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c"
526 },
527 "dist": {
528 "type": "zip",
529 "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/ecadbdc9052e4ad08c60c8a02268712e50427f7c",
530 "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c",
531 "shasum": ""
532 },
533 "require": {
534 "laminas/laminas-code": "~3.4.1|^4.0",
535 "php": ">=7.1",
536 "symfony/filesystem": "^4.4.17|^5.0|^6.0|^7.0"
537 },
538 "conflict": {
539 "laminas/laminas-stdlib": "<3.2.1",
540 "zendframework/zend-stdlib": "<3.2.1"
541 },
542 "replace": {
543 "ocramius/proxy-manager": "^2.1"
544 },
545 "require-dev": {
546 "ext-phar": "*",
547 "symfony/phpunit-bridge": "^5.4|^6.0|^7.0"
548 },
549 "type": "library",
550 "extra": {
551 "thanks": {
552 "name": "ocramius/proxy-manager",
553 "url": "https://github.com/Ocramius/ProxyManager"
554 }
555 },
556 "autoload": {
557 "psr-4": {
558 "ProxyManager\\": "src/ProxyManager"
559 }
560 },
561 "notification-url": "https://packagist.org/downloads/",
562 "license": [
563 "MIT"
564 ],
565 "authors": [
566 {
567 "name": "Marco Pivetta",
568 "email": "ocramius@gmail.com",
569 "homepage": "https://ocramius.github.io/"
570 },
571 {
572 "name": "Nicolas Grekas",
573 "email": "p@tchwork.com"
574 }
575 ],
576 "description": "Adding support for a wider range of PHP versions to ocramius/proxy-manager",
577 "homepage": "https://github.com/FriendsOfPHP/proxy-manager-lts",
578 "keywords": [
579 "aop",
580 "lazy loading",
581 "proxy",
582 "proxy pattern",
583 "service proxies"
584 ],
585 "support": {
586 "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues",
587 "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.16"
588 },
589 "funding": [
590 {
591 "url": "https://github.com/Ocramius",
592 "type": "github"
593 },
594 {
595 "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager",
596 "type": "tidelift"
597 }
598 ],
599 "time": "2023-05-24T07:17:17+00:00"
600 },
601 {
602 "name": "laminas/laminas-code",
603 "version": "4.7.1",
604 "source": {
605 "type": "git",
606 "url": "https://github.com/laminas/laminas-code.git",
607 "reference": "91aabc066d5620428120800c0eafc0411e441a62"
608 },
609 "dist": {
610 "type": "zip",
611 "url": "https://api.github.com/repos/laminas/laminas-code/zipball/91aabc066d5620428120800c0eafc0411e441a62",
612 "reference": "91aabc066d5620428120800c0eafc0411e441a62",
613 "shasum": ""
614 },
615 "require": {
616 "php": ">=7.4, <8.2"
617 },
618 "require-dev": {
619 "doctrine/annotations": "^1.13.2",
620 "ext-phar": "*",
621 "laminas/laminas-coding-standard": "^2.3.0",
622 "laminas/laminas-stdlib": "^3.6.1",
623 "phpunit/phpunit": "^9.5.10",
624 "psalm/plugin-phpunit": "^0.17.0",
625 "vimeo/psalm": "^4.13.1"
626 },
627 "suggest": {
628 "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
629 "laminas/laminas-stdlib": "Laminas\\Stdlib component"
630 },
631 "type": "library",
632 "autoload": {
633 "files": [
634 "polyfill/ReflectionEnumPolyfill.php"
635 ],
636 "psr-4": {
637 "Laminas\\Code\\": "src/"
638 }
639 },
640 "notification-url": "https://packagist.org/downloads/",
641 "license": [
642 "BSD-3-Clause"
643 ],
644 "description": "Extensions to the PHP Reflection API, static code scanning, and code generation",
645 "homepage": "https://laminas.dev",
646 "keywords": [
647 "code",
648 "laminas",
649 "laminasframework"
650 ],
651 "support": {
652 "chat": "https://laminas.dev/chat",
653 "docs": "https://docs.laminas.dev/laminas-code/",
654 "forum": "https://discourse.laminas.dev",
655 "issues": "https://github.com/laminas/laminas-code/issues",
656 "rss": "https://github.com/laminas/laminas-code/releases.atom",
657 "source": "https://github.com/laminas/laminas-code"
658 },
659 "funding": [
660 {
661 "url": "https://funding.communitybridge.org/projects/laminas-project",
662 "type": "community_bridge"
663 }
664 ],
665 "time": "2022-11-21T01:32:31+00:00"
666 },
667 {
668 "name": "paragonie/constant_time_encoding",
669 "version": "v2.6.3",
670 "source": {
671 "type": "git",
672 "url": "https://github.com/paragonie/constant_time_encoding.git",
673 "reference": "58c3f47f650c94ec05a151692652a868995d2938"
674 },
675 "dist": {
676 "type": "zip",
677 "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938",
678 "reference": "58c3f47f650c94ec05a151692652a868995d2938",
679 "shasum": ""
680 },
681 "require": {
682 "php": "^7|^8"
683 },
684 "require-dev": {
685 "phpunit/phpunit": "^6|^7|^8|^9",
686 "vimeo/psalm": "^1|^2|^3|^4"
687 },
688 "type": "library",
689 "autoload": {
690 "psr-4": {
691 "ParagonIE\\ConstantTime\\": "src/"
692 }
693 },
694 "notification-url": "https://packagist.org/downloads/",
695 "license": [
696 "MIT"
697 ],
698 "authors": [
699 {
700 "name": "Paragon Initiative Enterprises",
701 "email": "security@paragonie.com",
702 "homepage": "https://paragonie.com",
703 "role": "Maintainer"
704 },
705 {
706 "name": "Steve 'Sc00bz' Thomas",
707 "email": "steve@tobtu.com",
708 "homepage": "https://www.tobtu.com",
709 "role": "Original Developer"
710 }
711 ],
712 "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)",
713 "keywords": [
714 "base16",
715 "base32",
716 "base32_decode",
717 "base32_encode",
718 "base64",
719 "base64_decode",
720 "base64_encode",
721 "bin2hex",
722 "encoding",
723 "hex",
724 "hex2bin",
725 "rfc4648"
726 ],
727 "support": {
728 "email": "info@paragonie.com",
729 "issues": "https://github.com/paragonie/constant_time_encoding/issues",
730 "source": "https://github.com/paragonie/constant_time_encoding"
731 },
732 "time": "2022-06-14T06:56:20+00:00"
733 },
734 {
735 "name": "paragonie/random_compat",
736 "version": "v9.99.100",
737 "source": {
738 "type": "git",
739 "url": "https://github.com/paragonie/random_compat.git",
740 "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
741 },
742 "dist": {
743 "type": "zip",
744 "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
745 "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
746 "shasum": ""
747 },
748 "require": {
749 "php": ">= 7"
750 },
751 "require-dev": {
752 "phpunit/phpunit": "4.*|5.*",
753 "vimeo/psalm": "^1"
754 },
755 "suggest": {
756 "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
757 },
758 "type": "library",
759 "notification-url": "https://packagist.org/downloads/",
760 "license": [
761 "MIT"
762 ],
763 "authors": [
764 {
765 "name": "Paragon Initiative Enterprises",
766 "email": "security@paragonie.com",
767 "homepage": "https://paragonie.com"
768 }
769 ],
770 "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
771 "keywords": [
772 "csprng",
773 "polyfill",
774 "pseudorandom",
775 "random"
776 ],
777 "support": {
778 "email": "info@paragonie.com",
779 "issues": "https://github.com/paragonie/random_compat/issues",
780 "source": "https://github.com/paragonie/random_compat"
781 },
782 "time": "2020-10-15T08:29:30+00:00"
783 },
784 {
785 "name": "php-amqplib/php-amqplib",
786 "version": "v3.5.4",
787 "source": {
788 "type": "git",
789 "url": "https://github.com/php-amqplib/php-amqplib.git",
790 "reference": "1aecbd182b35eb039667c50d7d92d71f105be779"
791 },
792 "dist": {
793 "type": "zip",
794 "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/1aecbd182b35eb039667c50d7d92d71f105be779",
795 "reference": "1aecbd182b35eb039667c50d7d92d71f105be779",
796 "shasum": ""
797 },
798 "require": {
799 "ext-mbstring": "*",
800 "ext-sockets": "*",
801 "php": "^7.1||^8.0",
802 "phpseclib/phpseclib": "^2.0|^3.0"
803 },
804 "conflict": {
805 "php": "7.4.0 - 7.4.1"
806 },
807 "replace": {
808 "videlalvaro/php-amqplib": "self.version"
809 },
810 "require-dev": {
811 "ext-curl": "*",
812 "nategood/httpful": "^0.2.20",
813 "phpunit/phpunit": "^7.5|^9.5",
814 "squizlabs/php_codesniffer": "^3.6"
815 },
816 "type": "library",
817 "extra": {
818 "branch-alias": {
819 "dev-master": "3.0-dev"
820 }
821 },
822 "autoload": {
823 "psr-4": {
824 "PhpAmqpLib\\": "PhpAmqpLib/"
825 }
826 },
827 "notification-url": "https://packagist.org/downloads/",
828 "license": [
829 "LGPL-2.1-or-later"
830 ],
831 "authors": [
832 {
833 "name": "Alvaro Videla",
834 "role": "Original Maintainer"
835 },
836 {
837 "name": "Raúl Araya",
838 "email": "nubeiro@gmail.com",
839 "role": "Maintainer"
840 },
841 {
842 "name": "Luke Bakken",
843 "email": "luke@bakken.io",
844 "role": "Maintainer"
845 },
846 {
847 "name": "Ramūnas Dronga",
848 "email": "github@ramuno.lt",
849 "role": "Maintainer"
850 }
851 ],
852 "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.",
853 "homepage": "https://github.com/php-amqplib/php-amqplib/",
854 "keywords": [
855 "message",
856 "queue",
857 "rabbitmq"
858 ],
859 "support": {
860 "issues": "https://github.com/php-amqplib/php-amqplib/issues",
861 "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.5.4"
862 },
863 "time": "2023-07-01T11:25:08+00:00"
864 },
865 {
866 "name": "phpseclib/phpseclib",
867 "version": "3.0.21",
868 "source": {
869 "type": "git",
870 "url": "https://github.com/phpseclib/phpseclib.git",
871 "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1"
872 },
873 "dist": {
874 "type": "zip",
875 "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4580645d3fc05c189024eb3b834c6c1e4f0f30a1",
876 "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1",
877 "shasum": ""
878 },
879 "require": {
880 "paragonie/constant_time_encoding": "^1|^2",
881 "paragonie/random_compat": "^1.4|^2.0|^9.99.99",
882 "php": ">=5.6.1"
883 },
884 "require-dev": {
885 "phpunit/phpunit": "*"
886 },
887 "suggest": {
888 "ext-dom": "Install the DOM extension to load XML formatted public keys.",
889 "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.",
890 "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.",
891 "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
892 "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
893 },
894 "type": "library",
895 "autoload": {
896 "files": [
897 "phpseclib/bootstrap.php"
898 ],
899 "psr-4": {
900 "phpseclib3\\": "phpseclib/"
901 }
902 },
903 "notification-url": "https://packagist.org/downloads/",
904 "license": [
905 "MIT"
906 ],
907 "authors": [
908 {
909 "name": "Jim Wigginton",
910 "email": "terrafrost@php.net",
911 "role": "Lead Developer"
912 },
913 {
914 "name": "Patrick Monnerat",
915 "email": "pm@datasphere.ch",
916 "role": "Developer"
917 },
918 {
919 "name": "Andreas Fischer",
920 "email": "bantu@phpbb.com",
921 "role": "Developer"
922 },
923 {
924 "name": "Hans-Jürgen Petrich",
925 "email": "petrich@tronic-media.com",
926 "role": "Developer"
927 },
928 {
929 "name": "Graham Campbell",
930 "email": "graham@alt-three.com",
931 "role": "Developer"
932 }
933 ],
934 "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.",
935 "homepage": "http://phpseclib.sourceforge.net",
936 "keywords": [
937 "BigInteger",
938 "aes",
939 "asn.1",
940 "asn1",
941 "blowfish",
942 "crypto",
943 "cryptography",
944 "encryption",
945 "rsa",
946 "security",
947 "sftp",
948 "signature",
949 "signing",
950 "ssh",
951 "twofish",
952 "x.509",
953 "x509"
954 ],
955 "support": {
956 "issues": "https://github.com/phpseclib/phpseclib/issues",
957 "source": "https://github.com/phpseclib/phpseclib/tree/3.0.21"
958 },
959 "funding": [
960 {
961 "url": "https://github.com/terrafrost",
962 "type": "github"
963 },
964 {
965 "url": "https://www.patreon.com/phpseclib",
966 "type": "patreon"
967 },
968 {
969 "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib",
970 "type": "tidelift"
971 }
972 ],
973 "time": "2023-07-09T15:24:48+00:00"
974 },
975 {
976 "name": "psr/container",
977 "version": "2.0.2",
978 "source": {
979 "type": "git",
980 "url": "https://github.com/php-fig/container.git",
981 "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
982 },
983 "dist": {
984 "type": "zip",
985 "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
986 "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
987 "shasum": ""
988 },
989 "require": {
990 "php": ">=7.4.0"
991 },
992 "type": "library",
993 "extra": {
994 "branch-alias": {
995 "dev-master": "2.0.x-dev"
996 }
997 },
998 "autoload": {
999 "psr-4": {
1000 "Psr\\Container\\": "src/"
1001 }
1002 },
1003 "notification-url": "https://packagist.org/downloads/",
1004 "license": [
1005 "MIT"
1006 ],
1007 "authors": [
1008 {
1009 "name": "PHP-FIG",
1010 "homepage": "https://www.php-fig.org/"
1011 }
1012 ],
1013 "description": "Common Container Interface (PHP FIG PSR-11)",
1014 "homepage": "https://github.com/php-fig/container",
1015 "keywords": [
1016 "PSR-11",
1017 "container",
1018 "container-interface",
1019 "container-interop",
1020 "psr"
1021 ],
1022 "support": {
1023 "issues": "https://github.com/php-fig/container/issues",
1024 "source": "https://github.com/php-fig/container/tree/2.0.2"
1025 },
1026 "time": "2021-11-05T16:47:00+00:00"
1027 },
1028 {
1029 "name": "symfony/console",
1030 "version": "v5.4.26",
1031 "source": {
1032 "type": "git",
1033 "url": "https://github.com/symfony/console.git",
1034 "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273"
1035 },
1036 "dist": {
1037 "type": "zip",
1038 "url": "https://api.github.com/repos/symfony/console/zipball/b504a3d266ad2bb632f196c0936ef2af5ff6e273",
1039 "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273",
1040 "shasum": ""
1041 },
1042 "require": {
1043 "php": ">=7.2.5",
1044 "symfony/deprecation-contracts": "^2.1|^3",
1045 "symfony/polyfill-mbstring": "~1.0",
1046 "symfony/polyfill-php73": "^1.9",
1047 "symfony/polyfill-php80": "^1.16",
1048 "symfony/service-contracts": "^1.1|^2|^3",
1049 "symfony/string": "^5.1|^6.0"
1050 },
1051 "conflict": {
1052 "psr/log": ">=3",
1053 "symfony/dependency-injection": "<4.4",
1054 "symfony/dotenv": "<5.1",
1055 "symfony/event-dispatcher": "<4.4",
1056 "symfony/lock": "<4.4",
1057 "symfony/process": "<4.4"
1058 },
1059 "provide": {
1060 "psr/log-implementation": "1.0|2.0"
1061 },
1062 "require-dev": {
1063 "psr/log": "^1|^2",
1064 "symfony/config": "^4.4|^5.0|^6.0",
1065 "symfony/dependency-injection": "^4.4|^5.0|^6.0",
1066 "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
1067 "symfony/lock": "^4.4|^5.0|^6.0",
1068 "symfony/process": "^4.4|^5.0|^6.0",
1069 "symfony/var-dumper": "^4.4|^5.0|^6.0"
1070 },
1071 "suggest": {
1072 "psr/log": "For using the console logger",
1073 "symfony/event-dispatcher": "",
1074 "symfony/lock": "",
1075 "symfony/process": ""
1076 },
1077 "type": "library",
1078 "autoload": {
1079 "psr-4": {
1080 "Symfony\\Component\\Console\\": ""
1081 },
1082 "exclude-from-classmap": [
1083 "/Tests/"
1084 ]
1085 },
1086 "notification-url": "https://packagist.org/downloads/",
1087 "license": [
1088 "MIT"
1089 ],
1090 "authors": [
1091 {
1092 "name": "Fabien Potencier",
1093 "email": "fabien@symfony.com"
1094 },
1095 {
1096 "name": "Symfony Community",
1097 "homepage": "https://symfony.com/contributors"
1098 }
1099 ],
1100 "description": "Eases the creation of beautiful and testable command line interfaces",
1101 "homepage": "https://symfony.com",
1102 "keywords": [
1103 "cli",
1104 "command-line",
1105 "console",
1106 "terminal"
1107 ],
1108 "support": {
1109 "source": "https://github.com/symfony/console/tree/v5.4.26"
1110 },
1111 "funding": [
1112 {
1113 "url": "https://symfony.com/sponsor",
1114 "type": "custom"
1115 },
1116 {
1117 "url": "https://github.com/fabpot",
1118 "type": "github"
1119 },
1120 {
1121 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1122 "type": "tidelift"
1123 }
1124 ],
1125 "time": "2023-07-19T20:11:33+00:00"
1126 },
1127 {
1128 "name": "symfony/deprecation-contracts",
1129 "version": "v3.0.2",
1130 "source": {
1131 "type": "git",
1132 "url": "https://github.com/symfony/deprecation-contracts.git",
1133 "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c"
1134 },
1135 "dist": {
1136 "type": "zip",
1137 "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
1138 "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
1139 "shasum": ""
1140 },
1141 "require": {
1142 "php": ">=8.0.2"
1143 },
1144 "type": "library",
1145 "extra": {
1146 "branch-alias": {
1147 "dev-main": "3.0-dev"
1148 },
1149 "thanks": {
1150 "name": "symfony/contracts",
1151 "url": "https://github.com/symfony/contracts"
1152 }
1153 },
1154 "autoload": {
1155 "files": [
1156 "function.php"
1157 ]
1158 },
1159 "notification-url": "https://packagist.org/downloads/",
1160 "license": [
1161 "MIT"
1162 ],
1163 "authors": [
1164 {
1165 "name": "Nicolas Grekas",
1166 "email": "p@tchwork.com"
1167 },
1168 {
1169 "name": "Symfony Community",
1170 "homepage": "https://symfony.com/contributors"
1171 }
1172 ],
1173 "description": "A generic function and convention to trigger deprecation notices",
1174 "homepage": "https://symfony.com",
1175 "support": {
1176 "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2"
1177 },
1178 "funding": [
1179 {
1180 "url": "https://symfony.com/sponsor",
1181 "type": "custom"
1182 },
1183 {
1184 "url": "https://github.com/fabpot",
1185 "type": "github"
1186 },
1187 {
1188 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1189 "type": "tidelift"
1190 }
1191 ],
1192 "time": "2022-01-02T09:55:41+00:00"
1193 },
1194 {
1195 "name": "symfony/filesystem",
1196 "version": "v6.0.19",
1197 "source": {
1198 "type": "git",
1199 "url": "https://github.com/symfony/filesystem.git",
1200 "reference": "3d49eec03fda1f0fc19b7349fbbe55ebc1004214"
1201 },
1202 "dist": {
1203 "type": "zip",
1204 "url": "https://api.github.com/repos/symfony/filesystem/zipball/3d49eec03fda1f0fc19b7349fbbe55ebc1004214",
1205 "reference": "3d49eec03fda1f0fc19b7349fbbe55ebc1004214",
1206 "shasum": ""
1207 },
1208 "require": {
1209 "php": ">=8.0.2",
1210 "symfony/polyfill-ctype": "~1.8",
1211 "symfony/polyfill-mbstring": "~1.8"
1212 },
1213 "type": "library",
1214 "autoload": {
1215 "psr-4": {
1216 "Symfony\\Component\\Filesystem\\": ""
1217 },
1218 "exclude-from-classmap": [
1219 "/Tests/"
1220 ]
1221 },
1222 "notification-url": "https://packagist.org/downloads/",
1223 "license": [
1224 "MIT"
1225 ],
1226 "authors": [
1227 {
1228 "name": "Fabien Potencier",
1229 "email": "fabien@symfony.com"
1230 },
1231 {
1232 "name": "Symfony Community",
1233 "homepage": "https://symfony.com/contributors"
1234 }
1235 ],
1236 "description": "Provides basic utilities for the filesystem",
1237 "homepage": "https://symfony.com",
1238 "support": {
1239 "source": "https://github.com/symfony/filesystem/tree/v6.0.19"
1240 },
1241 "funding": [
1242 {
1243 "url": "https://symfony.com/sponsor",
1244 "type": "custom"
1245 },
1246 {
1247 "url": "https://github.com/fabpot",
1248 "type": "github"
1249 },
1250 {
1251 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1252 "type": "tidelift"
1253 }
1254 ],
1255 "time": "2023-01-20T17:44:14+00:00"
1256 },
1257 {
1258 "name": "symfony/polyfill-ctype",
1259 "version": "v1.27.0",
1260 "source": {
1261 "type": "git",
1262 "url": "https://github.com/symfony/polyfill-ctype.git",
1263 "reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
1264 },
1265 "dist": {
1266 "type": "zip",
1267 "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
1268 "reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
1269 "shasum": ""
1270 },
1271 "require": {
1272 "php": ">=7.1"
1273 },
1274 "provide": {
1275 "ext-ctype": "*"
1276 },
1277 "suggest": {
1278 "ext-ctype": "For best performance"
1279 },
1280 "type": "library",
1281 "extra": {
1282 "branch-alias": {
1283 "dev-main": "1.27-dev"
1284 },
1285 "thanks": {
1286 "name": "symfony/polyfill",
1287 "url": "https://github.com/symfony/polyfill"
1288 }
1289 },
1290 "autoload": {
1291 "files": [
1292 "bootstrap.php"
1293 ],
1294 "psr-4": {
1295 "Symfony\\Polyfill\\Ctype\\": ""
1296 }
1297 },
1298 "notification-url": "https://packagist.org/downloads/",
1299 "license": [
1300 "MIT"
1301 ],
1302 "authors": [
1303 {
1304 "name": "Gert de Pagter",
1305 "email": "BackEndTea@gmail.com"
1306 },
1307 {
1308 "name": "Symfony Community",
1309 "homepage": "https://symfony.com/contributors"
1310 }
1311 ],
1312 "description": "Symfony polyfill for ctype functions",
1313 "homepage": "https://symfony.com",
1314 "keywords": [
1315 "compatibility",
1316 "ctype",
1317 "polyfill",
1318 "portable"
1319 ],
1320 "support": {
1321 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
1322 },
1323 "funding": [
1324 {
1325 "url": "https://symfony.com/sponsor",
1326 "type": "custom"
1327 },
1328 {
1329 "url": "https://github.com/fabpot",
1330 "type": "github"
1331 },
1332 {
1333 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1334 "type": "tidelift"
1335 }
1336 ],
1337 "time": "2022-11-03T14:55:06+00:00"
1338 },
1339 {
1340 "name": "symfony/polyfill-intl-grapheme",
1341 "version": "v1.27.0",
1342 "source": {
1343 "type": "git",
1344 "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
1345 "reference": "511a08c03c1960e08a883f4cffcacd219b758354"
1346 },
1347 "dist": {
1348 "type": "zip",
1349 "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354",
1350 "reference": "511a08c03c1960e08a883f4cffcacd219b758354",
1351 "shasum": ""
1352 },
1353 "require": {
1354 "php": ">=7.1"
1355 },
1356 "suggest": {
1357 "ext-intl": "For best performance"
1358 },
1359 "type": "library",
1360 "extra": {
1361 "branch-alias": {
1362 "dev-main": "1.27-dev"
1363 },
1364 "thanks": {
1365 "name": "symfony/polyfill",
1366 "url": "https://github.com/symfony/polyfill"
1367 }
1368 },
1369 "autoload": {
1370 "files": [
1371 "bootstrap.php"
1372 ],
1373 "psr-4": {
1374 "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
1375 }
1376 },
1377 "notification-url": "https://packagist.org/downloads/",
1378 "license": [
1379 "MIT"
1380 ],
1381 "authors": [
1382 {
1383 "name": "Nicolas Grekas",
1384 "email": "p@tchwork.com"
1385 },
1386 {
1387 "name": "Symfony Community",
1388 "homepage": "https://symfony.com/contributors"
1389 }
1390 ],
1391 "description": "Symfony polyfill for intl's grapheme_* functions",
1392 "homepage": "https://symfony.com",
1393 "keywords": [
1394 "compatibility",
1395 "grapheme",
1396 "intl",
1397 "polyfill",
1398 "portable",
1399 "shim"
1400 ],
1401 "support": {
1402 "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0"
1403 },
1404 "funding": [
1405 {
1406 "url": "https://symfony.com/sponsor",
1407 "type": "custom"
1408 },
1409 {
1410 "url": "https://github.com/fabpot",
1411 "type": "github"
1412 },
1413 {
1414 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1415 "type": "tidelift"
1416 }
1417 ],
1418 "time": "2022-11-03T14:55:06+00:00"
1419 },
1420 {
1421 "name": "symfony/polyfill-intl-normalizer",
1422 "version": "v1.27.0",
1423 "source": {
1424 "type": "git",
1425 "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
1426 "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
1427 },
1428 "dist": {
1429 "type": "zip",
1430 "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
1431 "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
1432 "shasum": ""
1433 },
1434 "require": {
1435 "php": ">=7.1"
1436 },
1437 "suggest": {
1438 "ext-intl": "For best performance"
1439 },
1440 "type": "library",
1441 "extra": {
1442 "branch-alias": {
1443 "dev-main": "1.27-dev"
1444 },
1445 "thanks": {
1446 "name": "symfony/polyfill",
1447 "url": "https://github.com/symfony/polyfill"
1448 }
1449 },
1450 "autoload": {
1451 "files": [
1452 "bootstrap.php"
1453 ],
1454 "psr-4": {
1455 "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
1456 },
1457 "classmap": [
1458 "Resources/stubs"
1459 ]
1460 },
1461 "notification-url": "https://packagist.org/downloads/",
1462 "license": [
1463 "MIT"
1464 ],
1465 "authors": [
1466 {
1467 "name": "Nicolas Grekas",
1468 "email": "p@tchwork.com"
1469 },
1470 {
1471 "name": "Symfony Community",
1472 "homepage": "https://symfony.com/contributors"
1473 }
1474 ],
1475 "description": "Symfony polyfill for intl's Normalizer class and related functions",
1476 "homepage": "https://symfony.com",
1477 "keywords": [
1478 "compatibility",
1479 "intl",
1480 "normalizer",
1481 "polyfill",
1482 "portable",
1483 "shim"
1484 ],
1485 "support": {
1486 "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
1487 },
1488 "funding": [
1489 {
1490 "url": "https://symfony.com/sponsor",
1491 "type": "custom"
1492 },
1493 {
1494 "url": "https://github.com/fabpot",
1495 "type": "github"
1496 },
1497 {
1498 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1499 "type": "tidelift"
1500 }
1501 ],
1502 "time": "2022-11-03T14:55:06+00:00"
1503 },
1504 {
1505 "name": "symfony/polyfill-mbstring",
1506 "version": "v1.27.0",
1507 "source": {
1508 "type": "git",
1509 "url": "https://github.com/symfony/polyfill-mbstring.git",
1510 "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
1511 },
1512 "dist": {
1513 "type": "zip",
1514 "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
1515 "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
1516 "shasum": ""
1517 },
1518 "require": {
1519 "php": ">=7.1"
1520 },
1521 "provide": {
1522 "ext-mbstring": "*"
1523 },
1524 "suggest": {
1525 "ext-mbstring": "For best performance"
1526 },
1527 "type": "library",
1528 "extra": {
1529 "branch-alias": {
1530 "dev-main": "1.27-dev"
1531 },
1532 "thanks": {
1533 "name": "symfony/polyfill",
1534 "url": "https://github.com/symfony/polyfill"
1535 }
1536 },
1537 "autoload": {
1538 "files": [
1539 "bootstrap.php"
1540 ],
1541 "psr-4": {
1542 "Symfony\\Polyfill\\Mbstring\\": ""
1543 }
1544 },
1545 "notification-url": "https://packagist.org/downloads/",
1546 "license": [
1547 "MIT"
1548 ],
1549 "authors": [
1550 {
1551 "name": "Nicolas Grekas",
1552 "email": "p@tchwork.com"
1553 },
1554 {
1555 "name": "Symfony Community",
1556 "homepage": "https://symfony.com/contributors"
1557 }
1558 ],
1559 "description": "Symfony polyfill for the Mbstring extension",
1560 "homepage": "https://symfony.com",
1561 "keywords": [
1562 "compatibility",
1563 "mbstring",
1564 "polyfill",
1565 "portable",
1566 "shim"
1567 ],
1568 "support": {
1569 "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
1570 },
1571 "funding": [
1572 {
1573 "url": "https://symfony.com/sponsor",
1574 "type": "custom"
1575 },
1576 {
1577 "url": "https://github.com/fabpot",
1578 "type": "github"
1579 },
1580 {
1581 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1582 "type": "tidelift"
1583 }
1584 ],
1585 "time": "2022-11-03T14:55:06+00:00"
1586 },
1587 {
1588 "name": "symfony/polyfill-php73",
1589 "version": "v1.27.0",
1590 "source": {
1591 "type": "git",
1592 "url": "https://github.com/symfony/polyfill-php73.git",
1593 "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9"
1594 },
1595 "dist": {
1596 "type": "zip",
1597 "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
1598 "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
1599 "shasum": ""
1600 },
1601 "require": {
1602 "php": ">=7.1"
1603 },
1604 "type": "library",
1605 "extra": {
1606 "branch-alias": {
1607 "dev-main": "1.27-dev"
1608 },
1609 "thanks": {
1610 "name": "symfony/polyfill",
1611 "url": "https://github.com/symfony/polyfill"
1612 }
1613 },
1614 "autoload": {
1615 "files": [
1616 "bootstrap.php"
1617 ],
1618 "psr-4": {
1619 "Symfony\\Polyfill\\Php73\\": ""
1620 },
1621 "classmap": [
1622 "Resources/stubs"
1623 ]
1624 },
1625 "notification-url": "https://packagist.org/downloads/",
1626 "license": [
1627 "MIT"
1628 ],
1629 "authors": [
1630 {
1631 "name": "Nicolas Grekas",
1632 "email": "p@tchwork.com"
1633 },
1634 {
1635 "name": "Symfony Community",
1636 "homepage": "https://symfony.com/contributors"
1637 }
1638 ],
1639 "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
1640 "homepage": "https://symfony.com",
1641 "keywords": [
1642 "compatibility",
1643 "polyfill",
1644 "portable",
1645 "shim"
1646 ],
1647 "support": {
1648 "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0"
1649 },
1650 "funding": [
1651 {
1652 "url": "https://symfony.com/sponsor",
1653 "type": "custom"
1654 },
1655 {
1656 "url": "https://github.com/fabpot",
1657 "type": "github"
1658 },
1659 {
1660 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1661 "type": "tidelift"
1662 }
1663 ],
1664 "time": "2022-11-03T14:55:06+00:00"
1665 },
1666 {
1667 "name": "symfony/polyfill-php80",
1668 "version": "v1.27.0",
1669 "source": {
1670 "type": "git",
1671 "url": "https://github.com/symfony/polyfill-php80.git",
1672 "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
1673 },
1674 "dist": {
1675 "type": "zip",
1676 "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
1677 "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
1678 "shasum": ""
1679 },
1680 "require": {
1681 "php": ">=7.1"
1682 },
1683 "type": "library",
1684 "extra": {
1685 "branch-alias": {
1686 "dev-main": "1.27-dev"
1687 },
1688 "thanks": {
1689 "name": "symfony/polyfill",
1690 "url": "https://github.com/symfony/polyfill"
1691 }
1692 },
1693 "autoload": {
1694 "files": [
1695 "bootstrap.php"
1696 ],
1697 "psr-4": {
1698 "Symfony\\Polyfill\\Php80\\": ""
1699 },
1700 "classmap": [
1701 "Resources/stubs"
1702 ]
1703 },
1704 "notification-url": "https://packagist.org/downloads/",
1705 "license": [
1706 "MIT"
1707 ],
1708 "authors": [
1709 {
1710 "name": "Ion Bazan",
1711 "email": "ion.bazan@gmail.com"
1712 },
1713 {
1714 "name": "Nicolas Grekas",
1715 "email": "p@tchwork.com"
1716 },
1717 {
1718 "name": "Symfony Community",
1719 "homepage": "https://symfony.com/contributors"
1720 }
1721 ],
1722 "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
1723 "homepage": "https://symfony.com",
1724 "keywords": [
1725 "compatibility",
1726 "polyfill",
1727 "portable",
1728 "shim"
1729 ],
1730 "support": {
1731 "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
1732 },
1733 "funding": [
1734 {
1735 "url": "https://symfony.com/sponsor",
1736 "type": "custom"
1737 },
1738 {
1739 "url": "https://github.com/fabpot",
1740 "type": "github"
1741 },
1742 {
1743 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1744 "type": "tidelift"
1745 }
1746 ],
1747 "time": "2022-11-03T14:55:06+00:00"
1748 },
1749 {
1750 "name": "symfony/service-contracts",
1751 "version": "v3.0.2",
1752 "source": {
1753 "type": "git",
1754 "url": "https://github.com/symfony/service-contracts.git",
1755 "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66"
1756 },
1757 "dist": {
1758 "type": "zip",
1759 "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d78d39c1599bd1188b8e26bb341da52c3c6d8a66",
1760 "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66",
1761 "shasum": ""
1762 },
1763 "require": {
1764 "php": ">=8.0.2",
1765 "psr/container": "^2.0"
1766 },
1767 "conflict": {
1768 "ext-psr": "<1.1|>=2"
1769 },
1770 "suggest": {
1771 "symfony/service-implementation": ""
1772 },
1773 "type": "library",
1774 "extra": {
1775 "branch-alias": {
1776 "dev-main": "3.0-dev"
1777 },
1778 "thanks": {
1779 "name": "symfony/contracts",
1780 "url": "https://github.com/symfony/contracts"
1781 }
1782 },
1783 "autoload": {
1784 "psr-4": {
1785 "Symfony\\Contracts\\Service\\": ""
1786 }
1787 },
1788 "notification-url": "https://packagist.org/downloads/",
1789 "license": [
1790 "MIT"
1791 ],
1792 "authors": [
1793 {
1794 "name": "Nicolas Grekas",
1795 "email": "p@tchwork.com"
1796 },
1797 {
1798 "name": "Symfony Community",
1799 "homepage": "https://symfony.com/contributors"
1800 }
1801 ],
1802 "description": "Generic abstractions related to writing services",
1803 "homepage": "https://symfony.com",
1804 "keywords": [
1805 "abstractions",
1806 "contracts",
1807 "decoupling",
1808 "interfaces",
1809 "interoperability",
1810 "standards"
1811 ],
1812 "support": {
1813 "source": "https://github.com/symfony/service-contracts/tree/v3.0.2"
1814 },
1815 "funding": [
1816 {
1817 "url": "https://symfony.com/sponsor",
1818 "type": "custom"
1819 },
1820 {
1821 "url": "https://github.com/fabpot",
1822 "type": "github"
1823 },
1824 {
1825 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1826 "type": "tidelift"
1827 }
1828 ],
1829 "time": "2022-05-30T19:17:58+00:00"
1830 },
1831 {
1832 "name": "symfony/stopwatch",
1833 "version": "v5.4.21",
1834 "source": {
1835 "type": "git",
1836 "url": "https://github.com/symfony/stopwatch.git",
1837 "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee"
1838 },
1839 "dist": {
1840 "type": "zip",
1841 "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee",
1842 "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee",
1843 "shasum": ""
1844 },
1845 "require": {
1846 "php": ">=7.2.5",
1847 "symfony/service-contracts": "^1|^2|^3"
1848 },
1849 "type": "library",
1850 "autoload": {
1851 "psr-4": {
1852 "Symfony\\Component\\Stopwatch\\": ""
1853 },
1854 "exclude-from-classmap": [
1855 "/Tests/"
1856 ]
1857 },
1858 "notification-url": "https://packagist.org/downloads/",
1859 "license": [
1860 "MIT"
1861 ],
1862 "authors": [
1863 {
1864 "name": "Fabien Potencier",
1865 "email": "fabien@symfony.com"
1866 },
1867 {
1868 "name": "Symfony Community",
1869 "homepage": "https://symfony.com/contributors"
1870 }
1871 ],
1872 "description": "Provides a way to profile code",
1873 "homepage": "https://symfony.com",
1874 "support": {
1875 "source": "https://github.com/symfony/stopwatch/tree/v5.4.21"
1876 },
1877 "funding": [
1878 {
1879 "url": "https://symfony.com/sponsor",
1880 "type": "custom"
1881 },
1882 {
1883 "url": "https://github.com/fabpot",
1884 "type": "github"
1885 },
1886 {
1887 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1888 "type": "tidelift"
1889 }
1890 ],
1891 "time": "2023-02-14T08:03:56+00:00"
1892 },
1893 {
1894 "name": "symfony/string",
1895 "version": "v6.0.19",
1896 "source": {
1897 "type": "git",
1898 "url": "https://github.com/symfony/string.git",
1899 "reference": "d9e72497367c23e08bf94176d2be45b00a9d232a"
1900 },
1901 "dist": {
1902 "type": "zip",
1903 "url": "https://api.github.com/repos/symfony/string/zipball/d9e72497367c23e08bf94176d2be45b00a9d232a",
1904 "reference": "d9e72497367c23e08bf94176d2be45b00a9d232a",
1905 "shasum": ""
1906 },
1907 "require": {
1908 "php": ">=8.0.2",
1909 "symfony/polyfill-ctype": "~1.8",
1910 "symfony/polyfill-intl-grapheme": "~1.0",
1911 "symfony/polyfill-intl-normalizer": "~1.0",
1912 "symfony/polyfill-mbstring": "~1.0"
1913 },
1914 "conflict": {
1915 "symfony/translation-contracts": "<2.0"
1916 },
1917 "require-dev": {
1918 "symfony/error-handler": "^5.4|^6.0",
1919 "symfony/http-client": "^5.4|^6.0",
1920 "symfony/translation-contracts": "^2.0|^3.0",
1921 "symfony/var-exporter": "^5.4|^6.0"
1922 },
1923 "type": "library",
1924 "autoload": {
1925 "files": [
1926 "Resources/functions.php"
1927 ],
1928 "psr-4": {
1929 "Symfony\\Component\\String\\": ""
1930 },
1931 "exclude-from-classmap": [
1932 "/Tests/"
1933 ]
1934 },
1935 "notification-url": "https://packagist.org/downloads/",
1936 "license": [
1937 "MIT"
1938 ],
1939 "authors": [
1940 {
1941 "name": "Nicolas Grekas",
1942 "email": "p@tchwork.com"
1943 },
1944 {
1945 "name": "Symfony Community",
1946 "homepage": "https://symfony.com/contributors"
1947 }
1948 ],
1949 "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
1950 "homepage": "https://symfony.com",
1951 "keywords": [
1952 "grapheme",
1953 "i18n",
1954 "string",
1955 "unicode",
1956 "utf-8",
1957 "utf8"
1958 ],
1959 "support": {
1960 "source": "https://github.com/symfony/string/tree/v6.0.19"
1961 },
1962 "funding": [
1963 {
1964 "url": "https://symfony.com/sponsor",
1965 "type": "custom"
1966 },
1967 {
1968 "url": "https://github.com/fabpot",
1969 "type": "github"
1970 },
1971 {
1972 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1973 "type": "tidelift"
1974 }
1975 ],
1976 "time": "2023-01-01T08:36:10+00:00"
1977 },
1978 {
1979 "name": "symfony/yaml",
1980 "version": "v5.4.23",
1981 "source": {
1982 "type": "git",
1983 "url": "https://github.com/symfony/yaml.git",
1984 "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b"
1985 },
1986 "dist": {
1987 "type": "zip",
1988 "url": "https://api.github.com/repos/symfony/yaml/zipball/4cd2e3ea301aadd76a4172756296fe552fb45b0b",
1989 "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b",
1990 "shasum": ""
1991 },
1992 "require": {
1993 "php": ">=7.2.5",
1994 "symfony/deprecation-contracts": "^2.1|^3",
1995 "symfony/polyfill-ctype": "^1.8"
1996 },
1997 "conflict": {
1998 "symfony/console": "<5.3"
1999 },
2000 "require-dev": {
2001 "symfony/console": "^5.3|^6.0"
2002 },
2003 "suggest": {
2004 "symfony/console": "For validating YAML files using the lint command"
2005 },
2006 "bin": [
2007 "Resources/bin/yaml-lint"
2008 ],
2009 "type": "library",
2010 "autoload": {
2011 "psr-4": {
2012 "Symfony\\Component\\Yaml\\": ""
2013 },
2014 "exclude-from-classmap": [
2015 "/Tests/"
2016 ]
2017 },
2018 "notification-url": "https://packagist.org/downloads/",
2019 "license": [
2020 "MIT"
2021 ],
2022 "authors": [
2023 {
2024 "name": "Fabien Potencier",
2025 "email": "fabien@symfony.com"
2026 },
2027 {
2028 "name": "Symfony Community",
2029 "homepage": "https://symfony.com/contributors"
2030 }
2031 ],
2032 "description": "Loads and dumps YAML files",
2033 "homepage": "https://symfony.com",
2034 "support": {
2035 "source": "https://github.com/symfony/yaml/tree/v5.4.23"
2036 },
2037 "funding": [
2038 {
2039 "url": "https://symfony.com/sponsor",
2040 "type": "custom"
2041 },
2042 {
2043 "url": "https://github.com/fabpot",
2044 "type": "github"
2045 },
2046 {
2047 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
2048 "type": "tidelift"
2049 }
2050 ],
2051 "time": "2023-04-23T19:33:36+00:00"
2052 }
2053 ],
2054 "packages-dev": [],
2055 "aliases": [],
2056 "minimum-stability": "stable",
2057 "stability-flags": [],
2058 "prefer-stable": false,
2059 "prefer-lowest": false,
2060 "platform": {
2061 "php": ">=7.2.0",
2062 "ext-redis": "*",
2063 "ext-gearman": "*",
2064 "ext-mbstring": "*",
2065 "ext-bcmath": "*",
2066 "ext-json": "*",
2067 "ext-iconv": "*",
2068 "ext-pdo": "*"
2069 },
2070 "platform-dev": [],
2071 "plugin-api-version": "2.2.0"
2072}
diff --git a/flakes/mypackages/pkgs/status_engine/worker_php_packages.nix b/flakes/mypackages/pkgs/status_engine/worker_php_packages.nix
new file mode 100644
index 0000000..47291d2
--- /dev/null
+++ b/flakes/mypackages/pkgs/status_engine/worker_php_packages.nix
@@ -0,0 +1,266 @@
1{composerEnv, fetchurl, fetchgit ? null, fetchhg ? null, fetchsvn ? null, noDev ? false}:
2{
3 packages =
4 {
5 "composer/package-versions-deprecated" = {
6 targetDir = "";
7 src = composerEnv.buildZipPackage {
8 name = "composer-package-versions-deprecated-b4f54f74ef3453349c24a845d22392cd31e65f1d";
9 src = fetchurl {
10 url = "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d";
11 sha256 = "1hrjxvk8i14pw9gi7j3qc0gljjy74hwdkv8zwsrg5brgyzhqfwam";
12 };
13 };
14 };
15 "doctrine/cache" = {
16 targetDir = "";
17 src = composerEnv.buildZipPackage {
18 name = "doctrine-cache-1ca8f21980e770095a31456042471a57bc4c68fb";
19 src = fetchurl {
20 url = "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb";
21 sha256 = "1p8ia9g3mqz71bv4x8q1ng1fgcidmyksbsli1fjbialpgjk9k1ss";
22 };
23 };
24 };
25 "doctrine/dbal" = {
26 targetDir = "";
27 src = composerEnv.buildZipPackage {
28 name = "doctrine-dbal-c480849ca3ad6706a39c970cdfe6888fa8a058b8";
29 src = fetchurl {
30 url = "https://api.github.com/repos/doctrine/dbal/zipball/c480849ca3ad6706a39c970cdfe6888fa8a058b8";
31 sha256 = "15j98h80li6m1aj53p8ddy0lkbkanc5kdy6xrikpdd6zhmsfgq9k";
32 };
33 };
34 };
35 "doctrine/deprecations" = {
36 targetDir = "";
37 src = composerEnv.buildZipPackage {
38 name = "doctrine-deprecations-612a3ee5ab0d5dd97b7cf3874a6efe24325efac3";
39 src = fetchurl {
40 url = "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3";
41 sha256 = "078w4k0xdywyb44caz5grbcbxsi87iy13g7a270rs9g5f0p245fi";
42 };
43 };
44 };
45 "doctrine/event-manager" = {
46 targetDir = "";
47 src = composerEnv.buildZipPackage {
48 name = "doctrine-event-manager-95aa4cb529f1e96576f3fda9f5705ada4056a520";
49 src = fetchurl {
50 url = "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520";
51 sha256 = "0xi2s28jmmvrndg1yd0r5s10d9a0q6j2dxdbazvcbws9waf0yrvj";
52 };
53 };
54 };
55 "doctrine/migrations" = {
56 targetDir = "";
57 src = composerEnv.buildZipPackage {
58 name = "doctrine-migrations-28d92a34348fee5daeb80879e56461b2e862fc05";
59 src = fetchurl {
60 url = "https://api.github.com/repos/doctrine/migrations/zipball/28d92a34348fee5daeb80879e56461b2e862fc05";
61 sha256 = "0j5snc96r03vcjlb3k94cx871f69xaq53bza8mm8xs4jk85gr5jg";
62 };
63 };
64 };
65 "friendsofphp/proxy-manager-lts" = {
66 targetDir = "";
67 src = composerEnv.buildZipPackage {
68 name = "friendsofphp-proxy-manager-lts-ecadbdc9052e4ad08c60c8a02268712e50427f7c";
69 src = fetchurl {
70 url = "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/ecadbdc9052e4ad08c60c8a02268712e50427f7c";
71 sha256 = "15ch54cm3rvjyvsvqs9ixfn3vnydfxa0knd4g6myapsryirrskvi";
72 };
73 };
74 };
75 "laminas/laminas-code" = {
76 targetDir = "";
77 src = composerEnv.buildZipPackage {
78 name = "laminas-laminas-code-91aabc066d5620428120800c0eafc0411e441a62";
79 src = fetchurl {
80 url = "https://api.github.com/repos/laminas/laminas-code/zipball/91aabc066d5620428120800c0eafc0411e441a62";
81 sha256 = "01wsb6ph5h8ga9rnlr0lxd3qwn897ccxqxpbz540lfgz7a1prpb0";
82 };
83 };
84 };
85 "paragonie/constant_time_encoding" = {
86 targetDir = "";
87 src = composerEnv.buildZipPackage {
88 name = "paragonie-constant_time_encoding-58c3f47f650c94ec05a151692652a868995d2938";
89 src = fetchurl {
90 url = "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938";
91 sha256 = "0i9km0lzvc7df9758fm1p3y0679pzvr5m9x3mrz0d2hxlppsm764";
92 };
93 };
94 };
95 "paragonie/random_compat" = {
96 targetDir = "";
97 src = composerEnv.buildZipPackage {
98 name = "paragonie-random_compat-996434e5492cb4c3edcb9168db6fbb1359ef965a";
99 src = fetchurl {
100 url = "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a";
101 sha256 = "0ky7lal59dihf969r1k3pb96ql8zzdc5062jdbg69j6rj0scgkyx";
102 };
103 };
104 };
105 "php-amqplib/php-amqplib" = {
106 targetDir = "";
107 src = composerEnv.buildZipPackage {
108 name = "php-amqplib-php-amqplib-1aecbd182b35eb039667c50d7d92d71f105be779";
109 src = fetchurl {
110 url = "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/1aecbd182b35eb039667c50d7d92d71f105be779";
111 sha256 = "0wwzlf2yhjrc523n0y7qh23pxgn4f2qhkbr0jnxzq9j6mm75hnjm";
112 };
113 };
114 };
115 "phpseclib/phpseclib" = {
116 targetDir = "";
117 src = composerEnv.buildZipPackage {
118 name = "phpseclib-phpseclib-4580645d3fc05c189024eb3b834c6c1e4f0f30a1";
119 src = fetchurl {
120 url = "https://api.github.com/repos/phpseclib/phpseclib/zipball/4580645d3fc05c189024eb3b834c6c1e4f0f30a1";
121 sha256 = "0v3c7n9h99pw4f03bfxjsgni7wpq7xr47nw2hf2hq8yjndw19n3p";
122 };
123 };
124 };
125 "psr/container" = {
126 targetDir = "";
127 src = composerEnv.buildZipPackage {
128 name = "psr-container-c71ecc56dfe541dbd90c5360474fbc405f8d5963";
129 src = fetchurl {
130 url = "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963";
131 sha256 = "1mvan38yb65hwk68hl0p7jymwzr4zfnaxmwjbw7nj3rsknvga49i";
132 };
133 };
134 };
135 "symfony/console" = {
136 targetDir = "";
137 src = composerEnv.buildZipPackage {
138 name = "symfony-console-b504a3d266ad2bb632f196c0936ef2af5ff6e273";
139 src = fetchurl {
140 url = "https://api.github.com/repos/symfony/console/zipball/b504a3d266ad2bb632f196c0936ef2af5ff6e273";
141 sha256 = "0na3lpgzvrsxngyzv2w90k3ykw1y5j4p6v965v3sal03y6rr2w2i";
142 };
143 };
144 };
145 "symfony/deprecation-contracts" = {
146 targetDir = "";
147 src = composerEnv.buildZipPackage {
148 name = "symfony-deprecation-contracts-26954b3d62a6c5fd0ea8a2a00c0353a14978d05c";
149 src = fetchurl {
150 url = "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c";
151 sha256 = "1wlaj9ngbyjmgr92gjyf7lsmjfswyh8vpbzq5rdzaxjb6bcsj3dp";
152 };
153 };
154 };
155 "symfony/filesystem" = {
156 targetDir = "";
157 src = composerEnv.buildZipPackage {
158 name = "symfony-filesystem-3d49eec03fda1f0fc19b7349fbbe55ebc1004214";
159 src = fetchurl {
160 url = "https://api.github.com/repos/symfony/filesystem/zipball/3d49eec03fda1f0fc19b7349fbbe55ebc1004214";
161 sha256 = "0dhnyj6m9n6359z5c0xh4pz38n89i9x5c9r1s2dlgxz0daysbbyy";
162 };
163 };
164 };
165 "symfony/polyfill-ctype" = {
166 targetDir = "";
167 src = composerEnv.buildZipPackage {
168 name = "symfony-polyfill-ctype-5bbc823adecdae860bb64756d639ecfec17b050a";
169 src = fetchurl {
170 url = "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a";
171 sha256 = "0vyv70z1yi2is727d1mkb961w5r1pb1v3wy1pvdp30h8ffy15wk6";
172 };
173 };
174 };
175 "symfony/polyfill-intl-grapheme" = {
176 targetDir = "";
177 src = composerEnv.buildZipPackage {
178 name = "symfony-polyfill-intl-grapheme-511a08c03c1960e08a883f4cffcacd219b758354";
179 src = fetchurl {
180 url = "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354";
181 sha256 = "0ifsgsyxf0z0nkynqvr5259dm5dsmbgdpvyi5zfvy8935mi0ki0i";
182 };
183 };
184 };
185 "symfony/polyfill-intl-normalizer" = {
186 targetDir = "";
187 src = composerEnv.buildZipPackage {
188 name = "symfony-polyfill-intl-normalizer-19bd1e4fcd5b91116f14d8533c57831ed00571b6";
189 src = fetchurl {
190 url = "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6";
191 sha256 = "1d80jph5ykiw6ydv8fwd43s0aglh24qc1yrzds2f3aqanpbk1gr2";
192 };
193 };
194 };
195 "symfony/polyfill-mbstring" = {
196 targetDir = "";
197 src = composerEnv.buildZipPackage {
198 name = "symfony-polyfill-mbstring-8ad114f6b39e2c98a8b0e3bd907732c207c2b534";
199 src = fetchurl {
200 url = "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534";
201 sha256 = "1ym84qp609i50lv4vkd4yz99y19kaxd5kmpdnh66mxx1a4a104mi";
202 };
203 };
204 };
205 "symfony/polyfill-php73" = {
206 targetDir = "";
207 src = composerEnv.buildZipPackage {
208 name = "symfony-polyfill-php73-9e8ecb5f92152187c4799efd3c96b78ccab18ff9";
209 src = fetchurl {
210 url = "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9";
211 sha256 = "1p0jr92x323pl4frjbhmziyk5g1zig1g30i1v1p0wfli2sq8h5mb";
212 };
213 };
214 };
215 "symfony/polyfill-php80" = {
216 targetDir = "";
217 src = composerEnv.buildZipPackage {
218 name = "symfony-polyfill-php80-7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936";
219 src = fetchurl {
220 url = "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936";
221 sha256 = "16yydk7rsknlasrpn47n4b4js8svvp4rxzw99dkav52wr3cqmcwd";
222 };
223 };
224 };
225 "symfony/service-contracts" = {
226 targetDir = "";
227 src = composerEnv.buildZipPackage {
228 name = "symfony-service-contracts-d78d39c1599bd1188b8e26bb341da52c3c6d8a66";
229 src = fetchurl {
230 url = "https://api.github.com/repos/symfony/service-contracts/zipball/d78d39c1599bd1188b8e26bb341da52c3c6d8a66";
231 sha256 = "1cgbn2yx2fyrc3c1d85vdriiwwifr1sdg868f3rhq9bh78f03z99";
232 };
233 };
234 };
235 "symfony/stopwatch" = {
236 targetDir = "";
237 src = composerEnv.buildZipPackage {
238 name = "symfony-stopwatch-f83692cd869a6f2391691d40a01e8acb89e76fee";
239 src = fetchurl {
240 url = "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee";
241 sha256 = "1qh49p2jfca5kpcmlcbjx5izgqqvjd91385zy5mipyslsdik2lwg";
242 };
243 };
244 };
245 "symfony/string" = {
246 targetDir = "";
247 src = composerEnv.buildZipPackage {
248 name = "symfony-string-d9e72497367c23e08bf94176d2be45b00a9d232a";
249 src = fetchurl {
250 url = "https://api.github.com/repos/symfony/string/zipball/d9e72497367c23e08bf94176d2be45b00a9d232a";
251 sha256 = "0k4vvcjfdp2dni8gzq4rn8d6n0ivd38sfna70lgsh8vlc8rrlhpf";
252 };
253 };
254 };
255 "symfony/yaml" = {
256 targetDir = "";
257 src = composerEnv.buildZipPackage {
258 name = "symfony-yaml-4cd2e3ea301aadd76a4172756296fe552fb45b0b";
259 src = fetchurl {
260 url = "https://api.github.com/repos/symfony/yaml/zipball/4cd2e3ea301aadd76a4172756296fe552fb45b0b";
261 sha256 = "18yirwiqbh11fwlpqypm0wlc0lnx7prgk68xrn607zcg6cxnfhiz";
262 };
263 };
264 };
265 };
266}
diff --git a/flakes/mypackages/pkgs/telegram-history-dump/default.nix b/flakes/mypackages/pkgs/telegram-history-dump/default.nix
new file mode 100644
index 0000000..492e265
--- /dev/null
+++ b/flakes/mypackages/pkgs/telegram-history-dump/default.nix
@@ -0,0 +1,18 @@
1{ stdenv, ruby, fetchFromGitHub }:
2stdenv.mkDerivation ({
3 pname = "telegram-history-dump";
4 version = "468ea91-master";
5 src = fetchFromGitHub {
6 owner = "tvdstaaij";
7 repo = "telegram-history-dump";
8 rev = "468ea91e543529b54bc2c5ea28b1ea17f362fd3e";
9 sha256 = "1wmwiqacfa56bmwx50njnb15cg0fy6rbdrmrjd4xfbh8bs6yp0gh";
10 fetchSubmodules = true;
11 };
12 installPhase = ''
13 mkdir -p $out/lib $out/bin
14 cp -a $src $out/lib/telegram-history-dump
15 ln -s $out/lib/telegram-history-dump/telegram-history-dump.rb $out/bin/telegram-history-dump
16 '';
17 buildInputs = [ ruby ];
18})
diff --git a/flakes/mypackages/pkgs/telegramircd/default.nix b/flakes/mypackages/pkgs/telegramircd/default.nix
new file mode 100644
index 0000000..d9196a2
--- /dev/null
+++ b/flakes/mypackages/pkgs/telegramircd/default.nix
@@ -0,0 +1,22 @@
1{ openssl, telethon, python3Packages, fetchFromGitHub }:
2with python3Packages;
3buildPythonApplication rec {
4 format = "other";
5 pname = "telegramircd";
6 version = "master";
7 propagatedBuildInputs = [ telethon aiohttp ConfigArgParse openssl ];
8 src = fetchFromGitHub {
9 owner = "MaskRay";
10 repo = "telegramircd";
11 rev = "40a0c7cf60492bde3f44d43f06f62e3792480139";
12 sha256 = "123fjhgxq2fzn0ar8274jv7jjbxnlpidrj5333kbch7rpcipks0y";
13 fetchSubmodules = true;
14 };
15 LD_LIBRARY_PATH = "${openssl.out}/lib";
16 installPhase = ''
17 install -D $src/telegramircd.py $out/bin/telegramircd
18 wrapProgram "$out/bin/telegramircd" \
19 --prefix LD_LIBRARY_PATH : "${openssl.out}/lib"
20 install -Dm644 "$src/config" -t "$out/etc/telegramircd/"
21 '';
22}
diff --git a/flakes/mypackages/pkgs/telethon_sync/default.nix b/flakes/mypackages/pkgs/telethon_sync/default.nix
new file mode 100644
index 0000000..a03e1c3
--- /dev/null
+++ b/flakes/mypackages/pkgs/telethon_sync/default.nix
@@ -0,0 +1,24 @@
1{ lib, python3Packages, fetchgit }:
2with python3Packages;
3buildPythonPackage rec {
4 pname = "Telethon-sync";
5 version = "1.1.1";
6
7 src = fetchgit {
8 url = "https://github.com/LonamiWebs/Telethon";
9 branchName = "sync-stale";
10 rev = "6a785a01aa56cfd21c8c5beb9d722c68d664ba5e";
11 sha256 = "0g7gnln5kbh1gy6sfb3jg6knmi33n6sgzy2rni2x6af84lza0lgc";
12 };
13
14 propagatedBuildInputs = [
15 rsa pyaes async_generator
16 ];
17 doCheck = false;
18
19 meta = with lib; {
20 homepage = https://github.com/LonamiWebs/Telethon;
21 description = "Full-featured Telegram client library for Python 3";
22 license = licenses.mit;
23 };
24}
diff --git a/flakes/mypackages/pkgs/terminal-velocity/default.nix b/flakes/mypackages/pkgs/terminal-velocity/default.nix
new file mode 100644
index 0000000..3ccfcd3
--- /dev/null
+++ b/flakes/mypackages/pkgs/terminal-velocity/default.nix
@@ -0,0 +1,37 @@
1{ python37Packages }:
2with python37Packages;
3buildPythonApplication rec {
4 pname = "terminal-velocity-git";
5 version = "0.2.0";
6 src = fetchPypi {
7 inherit pname version;
8 sha256 = "13yrkcmvh5h5fwnai61sbmqkrjyisz08n62pq0ada2lyyqf7g6b9";
9 };
10
11 patches = [
12 ./sort_found_notes.patch
13 ./python3_support.patch
14 # FIXME: update this patch when version changes
15 ./fix_build.patch
16 ];
17
18 preCheck = ''
19 # Needed for urwid test
20 export LC_ALL=en_US.UTF-8
21 '';
22 propagatedBuildInputs = [
23 chardet
24 urwid
25 (sh.overridePythonAttrs { doCheck = false; })
26 pyyaml
27 ];
28 buildInputs = [
29 m2r
30 (restructuredtext_lint.overridePythonAttrs { doCheck = false; })
31 pygments
32 ];
33
34 postInstall = ''
35 rm $out/bin/terminal_velocity
36 '';
37}
diff --git a/flakes/mypackages/pkgs/terminal-velocity/fix_build.patch b/flakes/mypackages/pkgs/terminal-velocity/fix_build.patch
new file mode 100644
index 0000000..b08e0c4
--- /dev/null
+++ b/flakes/mypackages/pkgs/terminal-velocity/fix_build.patch
@@ -0,0 +1,21 @@
1commit a64bf3d58f6ba7f5fa72fe5b89a3973cac0c1a99
2Author: Ismaël Bouya <ismael.bouya@normalesup.org>
3Date: Sat Mar 9 20:13:52 2019 +0100
4
5 Remove mister_bump dependency
6
7diff --git a/setup.py b/setup.py
8index 84a99e9..a783dff 100644
9--- a/setup.py
10+++ b/setup.py
11@@ -1,7 +1,9 @@
12 from setuptools import setup
13 from m2r import parse_from_file
14 import restructuredtext_lint
15-from mister_bump import bump
16+
17+def bump():
18+ return "0.2.0"
19
20 # Parser README.md into reStructuredText format
21 rst_readme = parse_from_file('README.md')
diff --git a/flakes/mypackages/pkgs/terminal-velocity/python3_support.patch b/flakes/mypackages/pkgs/terminal-velocity/python3_support.patch
new file mode 100644
index 0000000..bd4aec7
--- /dev/null
+++ b/flakes/mypackages/pkgs/terminal-velocity/python3_support.patch
@@ -0,0 +1,215 @@
1commit 6ca19964b9e8a7866fd7e21a3dac9ccd35f0d434
2Author: Ismaël Bouya <ismael.bouya@normalesup.org>
3Date: Sat Mar 9 20:13:18 2019 +0100
4
5 Add python3 support
6
7diff --git a/terminal_velocity/notebook.py b/terminal_velocity/notebook.py
8index b6226dc..11f76de 100644
9--- a/terminal_velocity/notebook.py
10+++ b/terminal_velocity/notebook.py
11@@ -60,51 +60,6 @@ import sys
12 import chardet
13
14
15-def unicode_or_bust(raw_text):
16- """Return the given raw text data decoded to unicode.
17-
18- If the text cannot be decoded, return None.
19-
20- """
21- encodings = ["utf-8"]
22- for encoding in (sys.getfilesystemencoding(), sys.getdefaultencoding()):
23- # I would use a set for this, but they don't maintain order.
24- if encoding not in encodings:
25- encodings.append(encoding)
26-
27- for encoding in encodings:
28- if encoding: # getfilesystemencoding() may return None
29- try:
30- decoded = unicode(raw_text, encoding=encoding)
31- return decoded
32- except UnicodeDecodeError:
33- pass
34-
35- # If none of those guesses worked, let chardet have a go.
36- encoding = chardet.detect(raw_text)["encoding"]
37- if encoding and encoding not in encodings:
38- try:
39- decoded = unicode(raw_text, encoding=encoding)
40- logger.debug("File decoded with chardet, encoding was {0}".format(
41- encoding))
42- return decoded
43- except UnicodeDecodeError:
44- pass
45- except LookupError:
46- pass
47-
48- # I've heard that decoding with cp1252 never fails, so try that last.
49- try:
50- decoded = unicode(raw_text, encoding="cp1252")
51- logger.debug("File decoded with encoding cp1252")
52- return decoded
53- except UnicodeDecodeError:
54- pass
55-
56- # If nothing worked then give up.
57- return None
58-
59-
60 class Error(Exception):
61 """Base class for exceptions in this module."""
62 pass
63@@ -192,12 +147,12 @@ class PlainTextNote(object):
64 # subdirs) if they don't exist.
65 directory = os.path.split(self.abspath)[0]
66 if not os.path.isdir(directory):
67- logger.debug(u"'{0} doesn't exist, creating it".format(directory))
68+ logger.debug("'{0} doesn't exist, creating it".format(directory))
69 try:
70 os.makedirs(directory)
71 except os.error as e:
72 raise NewNoteError(
73- u"{0} could not be created: {1}".format(directory, e))
74+ "{0} could not be created: {1}".format(directory, e))
75
76 # Create an empty file if the file doesn't exist.
77 open(self.abspath, 'a')
78@@ -217,11 +172,11 @@ class PlainTextNote(object):
79
80 @property
81 def contents(self):
82- contents = unicode_or_bust(open(self.abspath, "r").read())
83+ contents = open(self.abspath, "rb").read().decode(errors='ignore')
84 if contents is None:
85 logger.error(
86- u"Could not decode file contents: {0}".format(self.abspath))
87- return u""
88+ "Could not decode file contents: {0}".format(self.abspath))
89+ return ""
90 else:
91 return contents
92
93@@ -322,12 +277,12 @@ class PlainTextNoteBook(object):
94
95 # Create notebook_dir if it doesn't exist.
96 if not os.path.isdir(self.path):
97- logger.debug(u"'{0} doesn't exist, creating it".format(self.path))
98+ logger.debug("'{0} doesn't exist, creating it".format(self.path))
99 try:
100 os.makedirs(self.path)
101 except os.error as e:
102 raise NewNoteBookError(
103- u"{0} could not be created: {1}".format(self.path, e))
104+ "{0} could not be created: {1}".format(self.path, e))
105 else:
106 # TODO: Check that self.path is a directory, if not raise.
107 pass
108@@ -358,13 +313,12 @@ class PlainTextNoteBook(object):
109 abspath = os.path.join(root, filename)
110 relpath = os.path.relpath(abspath, self.path)
111 relpath, ext = os.path.splitext(relpath)
112- unicode_relpath = unicode_or_bust(relpath)
113 if relpath is None:
114 # The filename could not be decoded.
115 logger.error(
116 "Could not decode filename: {0}".format(relpath))
117 else:
118- self.add_new(title=unicode_relpath, extension=ext)
119+ self.add_new(title=relpath, extension=ext)
120
121 @property
122 def path(self):
123@@ -418,7 +372,7 @@ class PlainTextNoteBook(object):
124 for note in self._notes:
125 if note.title == title and note.extension == extension:
126 raise NoteAlreadyExistsError(
127- u"Note already in NoteBook: {0}".format(note.title))
128+ "Note already in NoteBook: {0}".format(note.title))
129
130 # Ok, add the note.
131 note = PlainTextNote(title, self, extension)
132diff --git a/terminal_velocity/terminal_velocity.py b/terminal_velocity/terminal_velocity.py
133index 5f0e213..9234bea 100755
134--- a/terminal_velocity/terminal_velocity.py
135+++ b/terminal_velocity/terminal_velocity.py
136@@ -1,7 +1,7 @@
137-#!/usr/bin/env python2
138+#!/usr/bin/env python3
139 """A fast note-taking app for the UNIX terminal"""
140 from __future__ import print_function
141-import ConfigParser
142+import configparser
143 import argparse
144 import os
145 import logging
146@@ -9,9 +9,9 @@ import logging.handlers
147 import sys
148
149 #import terminal_velocity.urwid_ui as urwid_ui
150-import urwid_ui
151+from . import urwid_ui
152
153-from git import get_git_project_config, git_project_is_configured, fetch_changes, push_changes
154+from .git import get_git_project_config, git_project_is_configured, fetch_changes, push_changes
155
156
157 def startup():
158@@ -37,7 +37,7 @@ def main():
159
160 # Parse the config file.
161 config_file = os.path.abspath(os.path.expanduser(args.config))
162- config = ConfigParser.SafeConfigParser()
163+ config = configparser.ConfigParser()
164 config.read(config_file)
165 defaults = dict(config.items('DEFAULT'))
166
167diff --git a/terminal_velocity/urwid_ui.py b/terminal_velocity/urwid_ui.py
168index caebcb9..89bab35 100644
169--- a/terminal_velocity/urwid_ui.py
170+++ b/terminal_velocity/urwid_ui.py
171@@ -10,7 +10,7 @@ import logging
172 logger = logging.getLogger(__name__)
173
174 import urwid
175-import notebook
176+from . import notebook
177
178
179 palette = [
180@@ -27,8 +27,6 @@ def system(cmd, loop):
181
182 loop.screen.stop()
183
184- cmd = u"{0}".format(cmd)
185- cmd = cmd.encode("utf-8") # FIXME: Correct encoding?
186 safe_cmd = shlex.split(cmd)
187
188 logger.debug("System command: {0}".format(safe_cmd))
189@@ -114,7 +112,7 @@ class AutocompleteWidget(urwid.Edit):
190
191 # When search bar is empty show placeholder text.
192 if not self.edit_text and not self.autocomplete_text:
193- placeholder_text = u"Find or Create"
194+ placeholder_text = "Find or Create"
195 return (placeholder_text,
196 [("placeholder", len(placeholder_text))])
197
198@@ -186,7 +184,7 @@ class NoteFilterListBox(urwid.ListBox):
199
200 def render(self, size, focus=False):
201 if len(self.list_walker) == 0:
202- placeholder = placeholder_text(u"No matching notes, press Enter "
203+ placeholder = placeholder_text("No matching notes, press Enter "
204 "to create a new note")
205 return placeholder.render(size)
206 return super(NoteFilterListBox, self).render(size, self.fake_focus)
207@@ -399,7 +397,7 @@ class MainFrame(urwid.Frame):
208 # If the user has no notes yet show some placeholder text, otherwise
209 # show the note list.
210 if len(self.notebook) == 0:
211- self.body = placeholder_text(u"You have no notes yet, to create "
212+ self.body = placeholder_text("You have no notes yet, to create "
213 "a note type a note title then press Enter")
214 else:
215 self.body = urwid.Padding(self.list_box, left=1, right=1)
diff --git a/flakes/mypackages/pkgs/terminal-velocity/sort_found_notes.patch b/flakes/mypackages/pkgs/terminal-velocity/sort_found_notes.patch
new file mode 100644
index 0000000..2bc563c
--- /dev/null
+++ b/flakes/mypackages/pkgs/terminal-velocity/sort_found_notes.patch
@@ -0,0 +1,73 @@
1commit 0f9df37046e58c8963aff93c649e5d3dbf2202bd
2Author: Ismaël Bouya <ismael.bouya@normalesup.org>
3Date: Sat Mar 9 20:11:46 2019 +0100
4
5 Add sorting option
6
7diff --git a/terminal_velocity/terminal_velocity.py b/terminal_velocity/terminal_velocity.py
8index a53eda3..5f0e213 100755
9--- a/terminal_velocity/terminal_velocity.py
10+++ b/terminal_velocity/terminal_velocity.py
11@@ -90,6 +90,10 @@ the default default will be used"""
12 default=defaults.get("log_file", "~/.tvlog"),
13 help="the file to log to (default: %(default)s)")
14
15+ parser.add_argument("-s", "--sort", dest="sort", action="store",
16+ default=defaults.get("sort", "date"),
17+ help="the note sorting rules. Possible values: date, title (default: %(default)s)")
18+
19 parser.add_argument("-p", "--print-config", dest="print_config",
20 action="store_true", default=False,
21 help="print your configuration settings then exit")
22@@ -138,7 +142,7 @@ the default default will be used"""
23 try:
24 urwid_ui.launch(notes_dir=args.notes_dir, editor=args.editor,
25 extension=args.extension, extensions=args.extensions,
26- exclude=args.exclude)
27+ exclude=args.exclude, sort=args.sort)
28 except KeyboardInterrupt:
29 # Run the shutdown hook
30 shutdown()
31diff --git a/terminal_velocity/urwid_ui.py b/terminal_velocity/urwid_ui.py
32index 34cf4f6..caebcb9 100644
33--- a/terminal_velocity/urwid_ui.py
34+++ b/terminal_velocity/urwid_ui.py
35@@ -237,11 +237,12 @@ class NoteFilterListBox(urwid.ListBox):
36 class MainFrame(urwid.Frame):
37 """The topmost urwid widget."""
38
39- def __init__(self, notes_dir, editor, extension, extensions, exclude=None):
40+ def __init__(self, notes_dir, editor, extension, extensions, exclude=None, sort="date"):
41
42 self.editor = editor
43 self.notebook = notebook.PlainTextNoteBook(notes_dir, extension,
44 extensions, exclude=exclude)
45+ self.sort = sort
46
47 # Don't filter the note list when the text in the search box changes.
48 self.suppress_filter = False
49@@ -408,7 +409,10 @@ class MainFrame(urwid.Frame):
50
51 # Sort the notes.
52 # TODO: Support different sort orderings.
53- matching_notes.sort(key=lambda x: x.mtime, reverse=True)
54+ if self.sort == "title":
55+ matching_notes.sort(key=lambda x: x.title)
56+ else:
57+ matching_notes.sort(key=lambda x: x.mtime, reverse=True)
58
59 # Tell the list box to show only the matching notes.
60 self.list_box.filter(matching_notes)
61@@ -433,10 +437,10 @@ class MainFrame(urwid.Frame):
62 self.selected_note = note
63
64
65-def launch(notes_dir, editor, extension, extensions, exclude=None):
66+def launch(notes_dir, editor, extension, extensions, exclude=None, sort="date"):
67 """Launch the user interface."""
68
69- frame = MainFrame(notes_dir, editor, extension, extensions, exclude=exclude)
70+ frame = MainFrame(notes_dir, editor, extension, extensions, exclude=exclude, sort=sort)
71 loop = urwid.MainLoop(frame, palette)
72 frame.loop = loop
73 loop.run()
diff --git a/flakes/mypackages/pkgs/tiv/default.nix b/flakes/mypackages/pkgs/tiv/default.nix
new file mode 100644
index 0000000..2415db9
--- /dev/null
+++ b/flakes/mypackages/pkgs/tiv/default.nix
@@ -0,0 +1,19 @@
1{ fetchurl, perlPackages }:
2perlPackages.buildPerlPackage rec {
3 pname = "tiv";
4 version = "2015";
5 src = fetchurl {
6 url = "http://xyne.archlinux.ca/projects/tiv/src/tiv-${version}.tar.xz";
7 sha256 = "1vq073v7z7vmcd57lhs4rf4jasji69cpjgkz4dykp94a77p1qq90";
8 };
9
10 outputs = ["out"];
11 buildInputs = with perlPackages; [ PerlMagick ];
12 perlPreHookScript = ./tiv_builder.sh;
13 perlPreHook = ''
14 source $perlPreHookScript
15 '';
16 installPhase = ''
17 install -Dm755 tiv "$out/bin/tiv"
18 '';
19}
diff --git a/flakes/mypackages/pkgs/tiv/tiv_builder.sh b/flakes/mypackages/pkgs/tiv/tiv_builder.sh
new file mode 100644
index 0000000..ea16682
--- /dev/null
+++ b/flakes/mypackages/pkgs/tiv/tiv_builder.sh
@@ -0,0 +1,8 @@
1orig=$(declare -f preConfigure)
2new_name="preConfigure2 ${orig#preConfigure}"
3eval "$new_name"
4
5preConfigure() {
6 preConfigure2 || true
7}
8
diff --git a/flakes/mypackages/pkgs/twins/default.nix b/flakes/mypackages/pkgs/twins/default.nix
new file mode 100644
index 0000000..d0656bb
--- /dev/null
+++ b/flakes/mypackages/pkgs/twins/default.nix
@@ -0,0 +1,15 @@
1{ buildGoModule, fetchgit }:
2
3buildGoModule {
4 pname = "twins";
5 version = "master-cd85204";
6 src = fetchgit {
7 url = "https://code.rocketnine.space/tslocum/twins.git";
8 branchName = "master";
9 rev = "cd8520468072c39914ce5c8f6900dd804848d7ad";
10 sha256 = "14pxcq24g3cllq8w76dwn7mmcphdpw4f5d2nhwxh06hs8ci22fz3";
11 };
12
13 vendorSha256 = "1h8bk8v1p52b3qwk71mv8015p990jczq31p7b7bwypb4im5l5pd9";
14
15}
diff --git a/flakes/mypackages/pkgs/umami/build-geo.patch b/flakes/mypackages/pkgs/umami/build-geo.patch
new file mode 100644
index 0000000..7a4f075
--- /dev/null
+++ b/flakes/mypackages/pkgs/umami/build-geo.patch
@@ -0,0 +1,15 @@
1diff --git a/scripts/build-geo.js b/scripts/build-geo.js
2index cc66f94..5464b54 100644
3--- a/scripts/build-geo.js
4+++ b/scripts/build-geo.js
5@@ -22,9 +22,7 @@ if (!fs.existsSync(dest)) {
6
7 const download = url =>
8 new Promise(resolve => {
9- https.get(url, res => {
10- resolve(res.pipe(zlib.createGunzip({})).pipe(tar.t()));
11- });
12+ resolve(fs.createReadStream(url).pipe(zlib.createGunzip({})).pipe(tar.t()));
13 });
14
15 download(url).then(
diff --git a/flakes/mypackages/pkgs/umami/default.nix b/flakes/mypackages/pkgs/umami/default.nix
new file mode 100644
index 0000000..5620f90
--- /dev/null
+++ b/flakes/mypackages/pkgs/umami/default.nix
@@ -0,0 +1,72 @@
1{ nodejs, writeScriptBin, stdenv, yarn2nix-moretea, lib, fetchzip, fetchurl, zlib, openssl, fetchFromGitHub }:
2let
3 version = "1.17.0";
4 geolite2-country-url = "https://raw.githubusercontent.com/GitSquared/node-geolite2-redist/master/redist/GeoLite2-Country.tar.gz";
5 geolite2-country = fetchurl {
6 url = geolite2-country-url;
7 sha256 = "0mdjvx1dfpkhg5kbp7jnrspzybaavhlxmna44l7rw05nrw5nv9zw";
8 };
9 toBin = sha256: name: fetchurl {
10 inherit name sha256;
11 url = "https://binaries.prisma.sh/all_commits/e421996c87d5f3c8f7eeadd502d4ad402c89464d/debian-openssl-1.1.x/${name}.gz";
12 downloadToTemp = true;
13 executable = true;
14 postFetch = ''
15 cat "$downloadedFile" | gunzip > $out
16 patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \
17 --set-rpath "${lib.makeLibraryPath [ openssl zlib ]}:$(patchelf --print-rpath $out)" \
18 $out
19 chmod +x $out
20 '';
21 };
22 binaries = {
23 DATABASE_TYPE = "postgresql";
24 PRISMA_QUERY_ENGINE_BINARY = toBin "1sy67xqvbmgzksw7bl31k74k41jr44n514idqbi70j2i6jxbrl4j" "query-engine";
25 PRISMA_INTROSPECTION_ENGINE_BINARY = toBin "1kcszg11f71sg2y0ki7kg4prwlyb67bdjpjcky9kyjd8n9ilc8hj" "introspection-engine";
26 PRISMA_MIGRATION_ENGINE_BINARY = toBin "1lmz0wwjaavap9k6z5ysqrhlgs3r3kc9jpri2lv0lq95qmwr5hzq" "migration-engine";
27 PRISMA_FMT_BINARY = toBin "0241aszja3j1pp7pxs40irmfj06ilfjbzyqjzrzrb5azk7izwm73" "prisma-fmt";
28 };
29 src = fetchFromGitHub {
30 owner = "mikecao";
31 repo = "umami";
32 rev = "v${version}";
33 sha256 = "15jfgf057lsl20vdw45v5cim5d2ilalzaaxn6h82pz4d2fj1w0nh";
34 };
35 node-modules = yarn2nix-moretea.mkYarnModules rec {
36 pname = "umami";
37 inherit version;
38 name = "${pname}-${version}";
39 yarnLock = "${src}/yarn.lock";
40 packageJSON = "${src}/package.json";
41 pkgConfig.npm-run-all.postInstall = ''
42 patchShebangs .
43 '';
44 pkgConfig.rollup.postInstall = ''
45 patchShebangs .
46 '';
47 };
48 package = stdenv.mkDerivation (binaries // {
49 pname = "umami";
50 inherit version src;
51 buildInputs = [ nodejs ];
52 patches = [ ./build-geo.patch ];
53 configurePhase = ''
54 cp -r ${node-modules}/node_modules .
55 chmod u+w -R node_modules
56 '';
57 buildPhase = ''
58 sed -i -e "s@${geolite2-country-url}@${geolite2-country}@" scripts/build-geo.js
59 npm run build
60 '';
61 installPhase = ''
62 cp -a . $out
63 '';
64 });
65 script = writeScriptBin "umami" (''
66 #! ${stdenv.shell}
67 cd ${package}
68 '' + builtins.concatStringsSep "\n" (lib.mapAttrsToList (n: v: "export ${n}=${v}") binaries) + "\n" + ''
69 ${nodejs}/bin/npm run start-env
70 '');
71in
72 script // { nodeApp = package; }
diff --git a/flakes/mypackages/pkgs/unicode/default.nix b/flakes/mypackages/pkgs/unicode/default.nix
new file mode 100644
index 0000000..756e939
--- /dev/null
+++ b/flakes/mypackages/pkgs/unicode/default.nix
@@ -0,0 +1,48 @@
1{ lib, fetchurl, runCommand, libarchive }:
2with lib.attrsets;
3let
4 version = "12.0";
5 version-full = "${version}.0";
6 files = {
7 emoji-data = fetchurl {
8 url = "http://www.unicode.org/Public/emoji/${version}/emoji-data.txt";
9 sha256 = "03sf7h1d6kb9m5s02lif88jsi5kjszpkfvcymaqxj8ds70ar9pgv";
10 };
11 emoji-sequences = fetchurl {
12 url = "http://www.unicode.org/Public/emoji/${version}/emoji-sequences.txt";
13 sha256 = "1hghki2rn3n7m4lwpwi2a5wrsf2nij4bxga9ldabx4g0g2k23svs";
14 };
15 emoji-test = fetchurl {
16 url = "http://www.unicode.org/Public/emoji/${version}/emoji-test.txt";
17 sha256 = "1dqd0fh999mh6naj816ni113m9dimfy3ih9nffjq2lrv9mmlgdck";
18 };
19 emoji-variation-sequences = fetchurl {
20 url = "http://www.unicode.org/Public/emoji/${version}/emoji-variation-sequences.txt";
21 sha256 = "1cccwx5bl79w4c19vi5dhjqxrph92s8hihp9y8s2cqvdzmgbln7a";
22 };
23 emoji-zwj-sequences = fetchurl {
24 url = "http://www.unicode.org/Public/emoji/${version}/emoji-zwj-sequences.txt";
25 sha256 = "1l791nbijmmhwa7kmvfn8gp26ban512l6mgqpz1mnbq3xm19181n";
26 };
27 };
28 zippedFiles = {
29 UCD = fetchurl {
30 url = "http://www.unicode.org/Public/zipped/${version-full}/UCD.zip";
31 sha256 = "1ighy39cjkmqnv1797wrxjz76mv1fdw7zp5j04q55bkwxsdkvrmh";
32 };
33 Unihan = fetchurl {
34 url = "http://www.unicode.org/Public/zipped/${version-full}/Unihan.zip";
35 sha256 = "1kfdhgg2gm52x3s07bijb5cxjy0jxwhd097k5lqhvzpznprm6ibf";
36 };
37 };
38in
39 runCommand "unicode" {
40 buildInputs = [ libarchive ];
41 } ''
42 mkdir -p $out/share/unicode
43 ${builtins.concatStringsSep "\n" (mapAttrsToList (n: u: "install -Dm644 ${u} $out/share/unicode/emoji/${n}.txt") files)}
44 ${builtins.concatStringsSep "\n" (mapAttrsToList (n: u: ''
45 install -Dm644 ${u} $out/share/unicode/${n}.zip
46 bsdtar -C "$out/share/unicode" -x -f "$out/share/unicode/${n}.zip"
47 '') zippedFiles)}
48 ''
diff --git a/flakes/mypackages/pkgs/upcmd/default.nix b/flakes/mypackages/pkgs/upcmd/default.nix
new file mode 100644
index 0000000..614ae2b
--- /dev/null
+++ b/flakes/mypackages/pkgs/upcmd/default.nix
@@ -0,0 +1,13 @@
1{ buildGoModule, fetchFromGitHub }:
2buildGoModule rec {
3 pname = "upcmd";
4 version = "20220112";
5 src = fetchFromGitHub {
6 owner = pname;
7 repo = "up";
8 rev = "rolling-${version}";
9 sha256 = "sha256-dCi8p0oqLjEhEazbT4sgH7Sku3f/N79VWj5CO7LbvVA=";
10 };
11 doCheck = false;
12 vendorSha256 = "sha256-Ve+lEVrxv4rwymrqHSc1V4SL7BWP4wsIHF8ObBWyHE4=";
13}
diff --git a/flakes/mypackages/pkgs/webapps/adminer/default.nix b/flakes/mypackages/pkgs/webapps/adminer/default.nix
new file mode 100644
index 0000000..cd01080
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/adminer/default.nix
@@ -0,0 +1,14 @@
1{ stdenv, fetchurl }:
2stdenv.mkDerivation rec {
3 version = "4.8.2";
4 pname = "adminer";
5 src = fetchurl {
6 url = "https://github.com/adminerevo/adminerevo/releases/download/v${version}/${pname}-${version}.php";
7 sha256 = "sha256-jXcnGLyNQZqJKS0Rs+UY1SxzknBEZwBhcbD0BmJVFKs=";
8 };
9 phases = "installPhase";
10 installPhase = ''
11 mkdir -p $out
12 cp $src $out/index.php
13 '';
14}
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/default.nix b/flakes/mypackages/pkgs/webapps/apache-theme/default.nix
new file mode 100644
index 0000000..4b5755a
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/default.nix
@@ -0,0 +1,88 @@
1{ theme_root ? null }:
2rec {
3 theme = ./theme;
4 apacheConfig = let
5 theme_root' = if isNull theme_root then theme else theme_root;
6 in ''
7 <Macro Apaxy %{folder} %{ignored}>
8 Alias /theme ${theme_root'}
9 <Directory ${theme_root'}>
10 Options -Indexes
11 AllowOverride None
12 Require all granted
13 </Directory>
14
15 # mod_autoindex
16 <Directory %{folder}>
17 Options Indexes
18 AllowOverride None
19 Require all granted
20
21 # Inspired from Apaxy by @adamwhitcroft
22
23 IndexOptions +Charset=UTF-8 +FancyIndexing +IgnoreCase +FoldersFirst +XHTML +HTMLTable +SuppressRules +SuppressDescription +NameWidth=* +IconsAreLinks +ShowForbidden
24
25 IndexHeadInsert "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />"
26
27 IndexIgnoreReset ON
28 IndexIgnore /theme .htaccess %{ignored}
29
30 AddIcon /theme/icons/blank.png ^^BLANKICON^^
31 AddIcon /theme/icons/folder.png ^^DIRECTORY^^
32 AddIcon /theme/icons/folder-home.png ..
33
34 AddIconByType (TXT,/theme/icons/text.png) text/*
35 AddIconByType (IMG,/theme/icons/image.png) image/*
36 AddIconByType (SND,/theme/icons/audio.png) audio/*
37 AddIconByType (VID,/theme/icons/video.png) video/*
38
39 AddIcon /theme/icons/archive.png .7z .bz2 .cab .gz .tar
40 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
41 AddIcon /theme/icons/bin.png .bin .hex
42 AddIcon /theme/icons/bmp.png .bmp
43 AddIcon /theme/icons/c.png .c
44 AddIcon /theme/icons/calc.png .xlsx .xlsm .xltx .xltm .xlam .xlr .xls .csv
45 AddIcon /theme/icons/cd.png .iso
46 AddIcon /theme/icons/cpp.png .cpp
47 AddIcon /theme/icons/css.png .css .sass .scss
48 AddIcon /theme/icons/deb.png .deb
49 AddIcon /theme/icons/doc.png .doc .docx .docm .dot .dotx .dotm .log .msg .odt .pages .rtf .tex .wpd .wps
50 AddIcon /theme/icons/draw.png .svg .svgz
51 AddIcon /theme/icons/eps.png .ai .eps
52 AddIcon /theme/icons/exe.png .exe
53 AddIcon /theme/icons/gif.png .gif
54 AddIcon /theme/icons/h.png .h
55 AddIcon /theme/icons/html.png .html .xhtml .shtml .htm .URL .url
56 AddIcon /theme/icons/ico.png .ico
57 AddIcon /theme/icons/java.png .jar
58 AddIcon /theme/icons/jpg.png .jpg .jpeg .jpe
59 AddIcon /theme/icons/js.png .js .json
60 AddIcon /theme/icons/markdown.png .md
61 AddIcon /theme/icons/package.png .pkg .dmg
62 AddIcon /theme/icons/pdf.png .pdf
63 AddIcon /theme/icons/php.png .php .phtml
64 AddIcon /theme/icons/playlist.png .m3u .m3u8 .pls .pls8
65 AddIcon /theme/icons/png.png .png
66 AddIcon /theme/icons/ps.png .ps
67 AddIcon /theme/icons/psd.png .psd
68 AddIcon /theme/icons/py.png .py
69 AddIcon /theme/icons/rar.png .rar
70 AddIcon /theme/icons/rb.png .rb
71 AddIcon /theme/icons/rpm.png .rpm
72 AddIcon /theme/icons/rss.png .rss
73 AddIcon /theme/icons/script.png .bat .cmd .sh
74 AddIcon /theme/icons/sql.png .sql
75 AddIcon /theme/icons/tiff.png .tiff .tif
76 AddIcon /theme/icons/text.png .txt .nfo
77 AddIcon /theme/icons/video.png .asf .asx .avi .flv .mkv .mov .mp4 .mpg .rm .srt .swf .vob .wmv .m4v .f4v .f4p .ogv
78 AddIcon /theme/icons/xml.png .xml
79 AddIcon /theme/icons/zip.png .zip
80 DefaultIcon /theme/icons/default.png
81
82 HeaderName /theme/header.html
83 ReadmeName /theme/footer.html
84 IndexStyleSheet /theme/style.css
85 </Directory>
86 </Macro>
87 '';
88}
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/.htaccess b/flakes/mypackages/pkgs/webapps/apache-theme/theme/.htaccess
new file mode 100644
index 0000000..f9e5472
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/.htaccess
@@ -0,0 +1,9 @@
1#
2# Apaxy by @adamwhitcroft
3#
4# For a full breakdown of the mod_autoindex module
5# http://apache.org/docs/2.2/mod/mod_autoindex.html
6#
7
8# Don't index this folder
9Options -Indexes
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/footer.html b/flakes/mypackages/pkgs/webapps/apache-theme/theme/footer.html
new file mode 100644
index 0000000..57a2012
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/footer.html
@@ -0,0 +1,31 @@
1</div><!--/.wrapper-->
2
3<script type="text/javascript">
4// grab the 2nd child and add the parent class. tr:nth-child(2)
5document.getElementsByTagName('tr')[1].className = 'parent';
6// fix links when not adding a / at the end of the URI
7var uri = window.location.pathname.substr(1);
8if (uri.length > 0 && uri.substring(uri.length-1) != '/'){
9 var indexes = document.getElementsByClassName('indexcolname'),
10 i = indexes.length;
11 while (i--){
12 var a = indexes[i].getElementsByTagName('a')[0];
13 a.href = '/' + uri + '/' + a.getAttribute('href',2);
14 }
15}
16
17function getAjax(url, success) {
18 var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
19 xhr.open('GET', url);
20 xhr.onreadystatechange = function() {
21 if (xhr.readyState>3 && xhr.status==200)
22 success(xhr.responseText);
23 };
24 xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
25 xhr.send();
26 return xhr;
27}
28getAjax("title", function(data) {
29 document.getElementById('pagetitle').innerHTML = data;
30});
31</script>
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/header.html b/flakes/mypackages/pkgs/webapps/apache-theme/theme/header.html
new file mode 100644
index 0000000..cbded6a
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/header.html
@@ -0,0 +1,3 @@
1<div class="wrapper">
2 <h1 id="pagetitle"></h1>
3<!-- we open the `wrapper` element here, but close it in the `footer.html` file -->
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/archive.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/archive.png
new file mode 100644
index 0000000..99ae6fc
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/archive.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/audio.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/audio.png
new file mode 100644
index 0000000..a67618d
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/audio.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/authors.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/authors.png
new file mode 100644
index 0000000..78bf784
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/authors.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bin.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bin.png
new file mode 100644
index 0000000..ec2220b
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bin.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/blank.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/blank.png
new file mode 100644
index 0000000..bef1f60
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/blank.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bmp.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bmp.png
new file mode 100644
index 0000000..c6f3044
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/bmp.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/c.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/c.png
new file mode 100644
index 0000000..12adaa3
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/c.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/calc.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/calc.png
new file mode 100644
index 0000000..a034367
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/calc.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cd.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cd.png
new file mode 100644
index 0000000..3a3ffbb
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cd.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/copying.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/copying.png
new file mode 100644
index 0000000..83fa06e
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/copying.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cpp.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cpp.png
new file mode 100644
index 0000000..47e8b1e
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/cpp.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/css.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/css.png
new file mode 100644
index 0000000..15f7695
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/css.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/deb.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/deb.png
new file mode 100644
index 0000000..1b12d29
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/deb.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/default.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/default.png
new file mode 100644
index 0000000..6997229
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/default.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/diff.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/diff.png
new file mode 100644
index 0000000..5bef920
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/diff.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/doc.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/doc.png
new file mode 100644
index 0000000..5732f9b
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/doc.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/draw.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/draw.png
new file mode 100644
index 0000000..8f1da5c
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/draw.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/eps.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/eps.png
new file mode 100644
index 0000000..93736bb
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/eps.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/exe.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/exe.png
new file mode 100644
index 0000000..31299b7
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/exe.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-home.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-home.png
new file mode 100644
index 0000000..14fe20a
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-home.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-open.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-open.png
new file mode 100644
index 0000000..2aa5cc7
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-open.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-page.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-page.png
new file mode 100644
index 0000000..604f9ad
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-page.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent-old.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent-old.png
new file mode 100644
index 0000000..b82d7a9
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent-old.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent.png
new file mode 100644
index 0000000..3c964f1
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder-parent.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder.png
new file mode 100644
index 0000000..7c613e0
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/folder.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gif.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gif.png
new file mode 100644
index 0000000..01a2f2a
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gif.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gzip.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gzip.png
new file mode 100644
index 0000000..99ae6fc
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/gzip.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/h.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/h.png
new file mode 100644
index 0000000..d3c7a9c
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/h.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/hpp.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/hpp.png
new file mode 100644
index 0000000..e5e52e2
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/hpp.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/html.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/html.png
new file mode 100644
index 0000000..2f94a78
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/html.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ico.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ico.png
new file mode 100644
index 0000000..82227e8
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ico.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/image.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/image.png
new file mode 100644
index 0000000..add1c59
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/image.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/install.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/install.png
new file mode 100644
index 0000000..0a9c036
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/install.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/java.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/java.png
new file mode 100644
index 0000000..63b8683
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/java.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/jpg.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/jpg.png
new file mode 100644
index 0000000..a50c99b
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/jpg.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/js.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/js.png
new file mode 100644
index 0000000..af1a475
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/js.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/json.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/json.png
new file mode 100644
index 0000000..af1a475
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/json.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/log.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/log.png
new file mode 100644
index 0000000..02f1b9a
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/log.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/makefile.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/makefile.png
new file mode 100644
index 0000000..f99ea4c
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/makefile.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/markdown.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/markdown.png
new file mode 100644
index 0000000..25c8373
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/markdown.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/package.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/package.png
new file mode 100644
index 0000000..fb1343e
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/package.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pdf.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pdf.png
new file mode 100644
index 0000000..7408d8d
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pdf.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/php.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/php.png
new file mode 100644
index 0000000..22c4df6
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/php.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/playlist.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/playlist.png
new file mode 100644
index 0000000..8d6f281
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/playlist.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/png.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/png.png
new file mode 100644
index 0000000..1fe1ec4
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/png.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pres.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pres.png
new file mode 100644
index 0000000..db195e9
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/pres.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ps.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ps.png
new file mode 100644
index 0000000..05f3ed9
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/ps.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/psd.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/psd.png
new file mode 100644
index 0000000..62718ee
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/psd.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/py.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/py.png
new file mode 100644
index 0000000..0aaffd1
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/py.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rar.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rar.png
new file mode 100644
index 0000000..8a0ff54
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rar.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rb.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rb.png
new file mode 100644
index 0000000..c7db42f
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rb.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/readme.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/readme.png
new file mode 100644
index 0000000..3ae48cd
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/readme.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rpm.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rpm.png
new file mode 100644
index 0000000..64699ac
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rpm.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rss.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rss.png
new file mode 100644
index 0000000..a1130a1
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rss.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rtf.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rtf.png
new file mode 100644
index 0000000..25c8373
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/rtf.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/script.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/script.png
new file mode 100644
index 0000000..1099b5f
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/script.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/source.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/source.png
new file mode 100644
index 0000000..5bef920
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/source.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/sql.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/sql.png
new file mode 100644
index 0000000..b3b1467
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/sql.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tar.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tar.png
new file mode 100644
index 0000000..bab3b6a
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tar.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tex.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tex.png
new file mode 100644
index 0000000..1487b25
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tex.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/text.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/text.png
new file mode 100644
index 0000000..1d48677
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/text.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tiff.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tiff.png
new file mode 100644
index 0000000..819e64c
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/tiff.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/unknown.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/unknown.png
new file mode 100644
index 0000000..b1dcc3f
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/unknown.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/vcal.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/vcal.png
new file mode 100644
index 0000000..3d81455
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/vcal.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/video.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/video.png
new file mode 100644
index 0000000..f92f7e1
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/video.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/xml.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/xml.png
new file mode 100644
index 0000000..83a83df
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/xml.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/zip.png b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/zip.png
new file mode 100644
index 0000000..cc196c1
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/icons/zip.png
Binary files differ
diff --git a/flakes/mypackages/pkgs/webapps/apache-theme/theme/style.css b/flakes/mypackages/pkgs/webapps/apache-theme/theme/style.css
new file mode 100644
index 0000000..e46139f
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/apache-theme/theme/style.css
@@ -0,0 +1,160 @@
1/*------------------------------------*\
2 Apaxy
3 by @adamwhitcroft
4
5 Theme name: Apaxy
6 Theme author: @adamwhitcroft
7\*------------------------------------*/
8@import url('//assets.immae.eu/fonts/OpenSans/font.css');
9/* Have to use @import for the font, as you can only specify a single stylesheet */
10* {
11 margin:0;
12 padding:0;
13 -webkit-box-sizing:border-box;
14 -moz-box-sizing:border-box;
15 box-sizing: border-box;
16}
17
18html {
19 min-height:100%;
20 border-top:10px solid #ECEEF1;
21 border-bottom:10px solid #ECEEF1;
22 color:#61666c;
23 font-weight:400;
24 font-size:1em;
25 font-family:'Open Sans', sans-serif;
26 line-height:2em;
27}
28body {
29 padding:20px;
30 -webkit-backface-visibility:hidden;
31}
32code {
33 font-family:consolas,monospace;
34}
35a {
36 color:#61666c;
37 text-decoration:none;
38}
39a, img {
40 border:none;
41 outline:none
42}
43a:hover {
44 color:#2a2a2a;
45}
46/*------------------------------------*\
47 Wrapper
48\*------------------------------------*/
49.wrapper {
50 margin:0 auto;
51 padding-top:20px;
52 max-width:80%;
53}
54/*------------------------------------*\
55 Demo block
56\*------------------------------------*/
57.block {
58 font-size:.875em;
59 margin:20px 0;
60 padding:20px;
61 color:#9099A3;
62}
63/*------------------------------------*\
64 Table (directory listing)
65\*------------------------------------*/
66table {
67 width:100%;
68 border-collapse:collapse;
69 font-size:.875em;
70}
71tr {
72 outline:0;
73 border:0;
74}
75tr:hover td {
76 background:#f6f6f6;
77}
78th {
79 text-align:left;
80 font-size:.75em;
81 padding-right:20px;
82}
83/* 2nd Column: Filename */
84th + th {
85 width:65%;
86}
87/* 3rd Column: Last Modified */
88th + th + th {
89}
90/* 4th Column: Size */
91th + th + th + th {
92 width:5%;
93}
94tr td:first-of-type {
95 padding-left:10px;
96 padding-right:10px;
97}
98td {
99 padding:5px 0;
100 outline:0;
101 border:0;
102 border-bottom:1px solid #edf1f5;
103 vertical-align:middle;
104 text-align:left;
105 -webkit-transition:background 300ms ease;
106 -moz-transition:background 300ms ease;
107 -ms-transition:background 300ms ease;
108 -o-transition:background 300ms ease;
109 transition:background 300ms ease;
110}
111td a{
112 display: block;
113}
114tr.parent a[href^="/"] {
115 color:#9099A3;
116}
117 .parent a[href^="/"]:hover {
118 color:#2281d0;
119 }
120/*------------------------------------*\
121 Footer
122\*------------------------------------*/
123.footer {
124 text-align:center;
125 font-size:.75em;
126}
127
128h1#pagetitle {
129 text-align: center;
130}
131tr.parent a[href="/"]{
132 display: none;
133}
134
135tr.indexhead {
136 visibility: hidden;
137}
138
139th.indexcollastmod, td.indexcollastmod, th.indexcolsize, td.indexcolsize {
140 visibility: hidden;
141}
142
143.instructions a {
144 text-decoration: underline;
145}
146
147.instructions h2 {
148 margin-top: 10px;
149}
150.instructions em.important:before {
151 content: "⚠ Important ⚠ ";
152 color: red;
153}
154.instructions pre {
155 width: 50em;
156 padding: 10px 15px;
157 display: table;
158 border: 1px inset black;
159 line-height: 1em;
160}
diff --git a/flakes/mypackages/pkgs/webapps/awl/default.nix b/flakes/mypackages/pkgs/webapps/awl/default.nix
new file mode 100644
index 0000000..dc78339
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/awl/default.nix
@@ -0,0 +1,16 @@
1{ stdenv, fetchurl }:
2stdenv.mkDerivation rec {
3 version = "0.62";
4 name = "awl-${version}";
5 src = fetchurl {
6 url = "https://www.davical.org/downloads/awl_${version}.orig.tar.xz";
7 sha256 = "0x9pr8sq3bicnvzsxfwdsqxnvfygn6gy5pawmm6i6fyb1p5h5izz";
8 };
9 unpackCmd = ''
10 tar --one-top-level -xf $curSrc
11 '';
12 installPhase = ''
13 mkdir -p $out
14 cp -ra dba docs inc scripts tests $out
15 '';
16}
diff --git a/flakes/mypackages/pkgs/webapps/davical/default.nix b/flakes/mypackages/pkgs/webapps/davical/default.nix
new file mode 100644
index 0000000..045a93b
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/davical/default.nix
@@ -0,0 +1,23 @@
1{ davical_config ? "/etc/davical/config.php", stdenv, fetchurl, gettext }:
2stdenv.mkDerivation rec {
3 version = "1.1.10";
4 name = "davical-${version}";
5 src = fetchurl {
6 url = "https://www.davical.org/downloads/davical_${version}.orig.tar.xz";
7 sha256 = "1d8zw558qrz2rybdv853ai04ar7v5a2dsypnffapx9ihgnrv4hq3";
8 };
9 unpackCmd = ''
10 tar --one-top-level -xf $curSrc
11 '';
12 makeFlags = "all";
13 patchPhase = ''
14 # https://gitlab.com/davical-project/davical/-/issues/229
15 sed -i -e 's/"newpass1"/"newpass1", "password"/g' htdocs/always.php
16 '';
17 installPhase = ''
18 mkdir -p $out
19 cp -ra config dba docs htdocs inc locale po scripts testing zonedb $out
20 ln -s ${davical_config} $out/config/config.php
21 '';
22 buildInputs = [ gettext ];
23}
diff --git a/flakes/mypackages/pkgs/webapps/default.nix b/flakes/mypackages/pkgs/webapps/default.nix
new file mode 100644
index 0000000..18a724d
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/default.nix
@@ -0,0 +1,24 @@
1{ callPackage, mylibs, composerEnv, sources }:
2rec {
3 adminer = callPackage ./adminer {};
4 apache-theme = import ./apache-theme;
5 awl = callPackage ./awl {};
6 davical = callPackage ./davical {};
7 dokuwiki = callPackage ./dokuwiki {};
8 infcloud = callPackage ./infcloud {};
9 mantisbt_2 = callPackage ./mantisbt_2 {};
10 nextcloud_25 = callPackage ./nextcloud { nextcloudVersion = 25; };
11 nextcloud_26 = callPackage ./nextcloud { nextcloudVersion = 26; };
12 nextcloud_27 = callPackage ./nextcloud { nextcloudVersion = 27; };
13 nextcloud_25-all = nextcloud_25.withApps (a: builtins.attrValues nextcloud_25.allSupportedApps);
14 nextcloud_26-all = nextcloud_26.withApps (a: builtins.attrValues nextcloud_26.allSupportedApps);
15 nextcloud_27-all = nextcloud_27.withApps (a: builtins.attrValues nextcloud_27.allSupportedApps);
16 phpbb = callPackage ./phpbb {};
17 phpldapadmin = callPackage ./phpldapadmin {};
18 rompr = callPackage ./rompr {};
19 roundcubemail = callPackage ./roundcubemail {};
20 spip = callPackage ./spip {};
21 ttrss = callPackage ./ttrss { inherit sources; };
22 wallabag = callPackage ./wallabag { inherit composerEnv; };
23 yourls = callPackage ./yourls {};
24}
diff --git a/flakes/mypackages/pkgs/webapps/dokuwiki/default.nix b/flakes/mypackages/pkgs/webapps/dokuwiki/default.nix
new file mode 100644
index 0000000..db8be30
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/dokuwiki/default.nix
@@ -0,0 +1,54 @@
1{ varDir ? "/var/lib/dokuwiki", preload ? "", lib, callPackage, stdenv, fetchFromGitHub, writeText }:
2let
3 preloadFile = plugins: let preloads = [preload]
4 ++ builtins.concatMap (p: lib.optional (lib.hasAttr "preload" p) (p.preload p)) plugins;
5 in writeText "preload.php" (''
6 <?php
7 '' + builtins.concatStringsSep "\n" preloads
8 );
9 pluginNames = [ "farmer" "todo" ];
10 allPlugins = lib.attrsets.genAttrs pluginNames
11 (name: callPackage (./plugins + "/${name}.nix") {});
12 toPassthru = pkg: plugins: {
13 inherit plugins varDir allPlugins;
14 withPlugins = withPlugins pkg;
15 };
16 withPlugins = pkg: toPlugins:
17 let
18 plugins = toPlugins allPlugins;
19 toInstallPlugin = n:
20 "ln -sf ${n} $out/lib/plugins/${n.pluginName}";
21 newDokuwiki = pkg.overrideAttrs(old: {
22 installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins);
23 installPreloadPhase = ''
24 cp ${preloadFile (pkg.plugins ++ plugins)} $out/inc/preload.php
25 '';
26 passthru = toPassthru newDokuwiki (pkg.plugins ++ plugins);
27 });
28 in newDokuwiki;
29 package = stdenv.mkDerivation (rec {
30 pname = "dokuwiki";
31 version = "release_stable_2018-04-22b";
32 src = fetchFromGitHub {
33 owner = "splitbrain";
34 repo = "dokuwiki";
35 rev = "871dae1320b40211626c7ec665f5e6d5290aca95";
36 sha256 = "1syvd5dvv3v75swf8ig7dxqs0g5xikb0f6vlcy7g4c4ghldkw7nz";
37 fetchSubmodules = true;
38 };
39 phases = "unpackPhase buildPhase installPhase installPreloadPhase fixupPhase";
40 buildPhase = ''
41 mv conf conf.dist
42 mv data data.dist
43 '';
44 installPhase = ''
45 cp -a . $out
46 ln -sf ${varDir}/{conf,data} $out/
47 ln -sf ${varDir}/conf/.htaccess $out/
48 '';
49 installPreloadPhase = ''
50 cp ${preloadFile []} $out/inc/preload.php
51 '';
52 passthru = toPassthru package [];
53 });
54in package
diff --git a/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/farmer.nix b/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/farmer.nix
new file mode 100644
index 0000000..b737b2d
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/farmer.nix
@@ -0,0 +1,25 @@
1{ stdenv, fetchFromGitHub }:
2stdenv.mkDerivation rec {
3 version = "72b8577-master";
4 name = "dokuwiki-plugin-farmer-${version}";
5 src = fetchFromGitHub {
6 owner = "cosmocode";
7 repo = "dokuwiki-plugin-farmer";
8 rev = "72b857734fd164bf79cc6e17abe56491d55c1072";
9 sha256 = "1c9vc1z7yvzjz4p054kshb9yd00a4bb52s43k9zav0lvwvjij9l0";
10 };
11 installPhase = ''
12 mkdir $out
13 cp -a * $out
14 '';
15 passthru = {
16 pluginName = "farmer";
17 preload = out: ''
18 # farm setup by farmer plugin
19 if (file_exists('${out}/DokuWikiFarmCore.php'))
20 {
21 include('${out}/DokuWikiFarmCore.php');
22 }
23 '';
24 };
25}
diff --git a/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/todo.nix b/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/todo.nix
new file mode 100644
index 0000000..a3e03fb
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/dokuwiki/plugins/todo.nix
@@ -0,0 +1,18 @@
1{ stdenv, fetchFromGitHub }:
2stdenv.mkDerivation rec {
3 version = "49068ec-master";
4 name = "dokuwiki-plugin-todo-${version}";
5 src = fetchFromGitHub {
6 owner = "leibler";
7 repo = "dokuwiki-plugin-todo";
8 rev = "49068ecea455ea997d1e4a7adab171ccaf8228e8";
9 sha256 = "1jaq623kp14fyhamsas5mk9ryqlk4q6x6znijrb5xhcdg3r83gmq";
10 };
11 installPhase = ''
12 mkdir $out
13 cp -a * $out
14 '';
15 passthru = {
16 pluginName = "todo";
17 };
18}
diff --git a/flakes/mypackages/pkgs/webapps/infcloud/default.nix b/flakes/mypackages/pkgs/webapps/infcloud/default.nix
new file mode 100644
index 0000000..45354fa
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/infcloud/default.nix
@@ -0,0 +1,19 @@
1{ infcloud_config ? ./infcloud_config.js, stdenv, fetchzip, ed }:
2stdenv.mkDerivation rec {
3 version = "0.13.2rc1";
4 name = "InfCloud-${version}";
5 src = fetchzip {
6 url = "https://www.inf-it.com/InfCloud_${version}.zip";
7 sha256 = "1qgw6l7ccfkyzcw9dxcjwhxw9q27c0x9w584amc579mmrn9ppz3n";
8 };
9 buildPhase = ''
10 patchShebangs .
11 ./cache_update.sh
12 rm config.js
13 '';
14 installPhase = ''
15 cp -a . $out
16 ln -s ${infcloud_config} $out/config.js
17 '';
18 buildInputs = [ ed ];
19}
diff --git a/flakes/mypackages/pkgs/webapps/infcloud/infcloud_config.js b/flakes/mypackages/pkgs/webapps/infcloud/infcloud_config.js
new file mode 100644
index 0000000..ba73860
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/infcloud/infcloud_config.js
@@ -0,0 +1,1446 @@
1/*
2InfCloud - the open source CalDAV/CardDAV Web Client
3Copyright (C) 2011-2015
4 Jan Mate <jan.mate@inf-it.com>
5 Andrej Lezo <andrej.lezo@inf-it.com>
6 Matej Mihalik <matej.mihalik@inf-it.com>
7
8This program is free software: you can redistribute it and/or modify
9it under the terms of the GNU Affero General Public License as
10published by the Free Software Foundation, either version 3 of the
11License, or (at your option) any later version.
12
13This program is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU Affero General Public License for more details.
17
18You should have received a copy of the GNU Affero General Public License
19along with this program. If not, see <http://www.gnu.org/licenses/>.
20*/
21
22
23// NOTE: see readme.txt before you start to configure this client!
24
25
26// NOTE: do not forget to execute the cache_update.sh script every time you
27// update this configuration file or any other files (otherwise your browser
28// will use the previous version of files stored in HTML5 cache). Alternatively
29// you can update the cache.manifest manually - edit the second line beginning
30// with "#V 20" to anything else (this file simple needs "some" change)
31
32
33// Supported setup types (use ONE of them):
34// a.) globalAccountSettings => username and password is hardcoded
35// in config.js, automatic login without the login screen
36// - advantages: fast login process = no username/password is required
37// - disadvantages: username/password is visible in your config.js, so
38// this type of setup is recommended ONLY for intranet/home users
39// b.) globalNetworkCheckSettings => standard setup with login screen
40// - advantages: username/password is required (no visible
41// username/password in config.js)
42// - disadvantages: if a user enters wrong username/password then
43// the browser will show authentication popup window (it is NOT
44// possible to disable it in JavaScript; see the next option)
45// c.) globalNetworkAccountSettings => advanced setup with login screen
46// - advantages: no authentication popup if you enter wrong username/
47// password, dynamic XML configuration generator (you can generate
48// different configurations for your users /by modifying the "auth"
49// module configuration or the PHP code itself/)
50// - disadvantages: requires PHP >= 5.3 and additional configuration,
51// only basic http authentication is supported => always use https!
52//
53//
54// What is a "principal URL"? => Check you server documentation!
55// - "principal URL" is NOT "collection URL"
56// - this client automatically detects collections for "principal URL"
57// - PROPER "principal URL" looks like:
58// https://server.com:8443/principals/users/USER/
59// https://server.com:8443/caldav.php/USER/
60// - INVALID principal URL looks like:
61// https://server.com:8443/principals/users/USER/collection/
62// => this is a collection URL
63// https://server.com:8443/caldav.php/USER/collection/
64// => this is a collection URL
65// https://server.com:8443/principals/users/USER
66// => missing trailing '/'
67// https://server.com:8443/caldav.php/USER
68// => missing trailing '/'
69// /caldav.php/USER/
70// => relative URL instead of full URL
71//
72//
73// List of properties used in globalAccountSettings, globalNetworkCheckSettings
74// and globalNetworkAccountSettings variables (+ in the "auth" module):
75// - href
76// Depending on the setup type set the value to:
77// a.) globalAccountSettings: full "principal URL"
78// b.) globalNetworkCheckSettings: "principal URL" WITHOUT the "USER/" part
79// c.) globalNetworkAccountSettings: "full URL" to the "auth" directory
80// This property is supported in:
81// globalAccountSettings
82// globalNetworkCheckSettings
83// globalNetworkAccountSettings
84// - userAuth
85// - userName
86// Set the username you want to login.
87// - userPassword
88// Set the password for the given username.
89// This property is supported in:
90// globalAccountSettings
91// - timeOut
92// This option sets the timeout for jQuery .ajax call (in miliseconds).
93// Example:
94// timeOut: 90000
95// This property is supported in:
96// globalAccountSettings
97// globalNetworkCheckSettings
98// globalNetworkAccountSettings
99// - lockTimeOut
100// NOTE: used only if server supports LOCK requests
101// This option sets the LOCK timeout value if resource locking
102// is used (in miliseconds).
103// Example:
104// lockTimeOut: 10000
105// This property is supported in:
106// globalAccountSettings
107// globalNetworkCheckSettings
108// globalNetworkAccountSettings (available in auth module only)
109// - checkContentType
110// This option enables a content-type checking for server response.
111// If enabled then only objects with proper content-type are inserted
112// into the interface.
113// If you cannot see data in the interface you may try to disable it (useful
114// if your server returns wrong value in "propstat/prop/getcontenttype").
115// If undefined then content-type checking is enabled.
116// Examples:
117// checkContentType: true
118// checkContentType: false
119// This property is supported in:
120// globalAccountSettings
121// globalNetworkCheckSettings
122// globalNetworkAccountSettings (available in auth module only)
123// - settingsAccount
124// NOTE: server support for custom DAV properties is REQUIRED!
125// This option sets the account where the client properties such as:
126// loaded collections, enabled collections, ... are saved during
127// the logout and resource/collection synchronisation
128// NOTE: set it to true ONLY for ONE account!
129// Examples:
130// settingsAccount: true
131// settingsAccount: false
132// This property is supported in:
133// globalAccountSettings
134// globalNetworkCheckSettings
135// globalNetworkAccountSettings (available in auth module only)
136// - delegation
137// NOTE: server support for this functionality is REQUIRED!
138// This option allows you to load delegated (shared) collections.
139// If set to true (default) then delegation functionality is enabled,
140// and the interface allows you to load delegated collections.
141// If false then delegation functionality is completely disabled.
142// Examples:
143// delegation: true
144// delegation: false
145// This property is supported in:
146// globalAccountSettings
147// globalNetworkCheckSettings
148// globalNetworkAccountSettings (available in auth module only)
149// - additionalResources
150// This options sets the list of additional resources (e.g. shared resources
151// accessible by all users). If the server supports delegation (see
152// the delegation option above) there is no reason to use this option!
153// Supported values:
154// - array of URL encoded resource names (not collections), such as:
155// 'company'
156// 'shared_resource'
157// If empty (default) or undefined then shared resources are not loaded
158// using this option, but may be loaded using the delegation option.
159// Examples:
160// additionalResources=[]
161// additionalResources=['public', 'shared_resource']
162// This property is supported in:
163// globalNetworkCheckSettings
164// - hrefLabel
165// This option sets the server name in the resource header (useful if
166// you want to see custom resource header above the collections).
167// You can use the following variables in the value:
168// %H = full hostname (including the port number)
169// %h = full hostname (without the port number)
170// %D = full domain name
171// %d = only the first and second level domain
172// %P = principal name
173// %p = principal name without the @domain.com part (if present)
174// %U = logged user name
175// %u = logged user name without the @domain.com part (if present)
176// If undefined, empty or or null then '%d/%p [%u]' is used.
177// Examples:
178// hrefLabel: '%d/%p [%u]'
179// hrefLabel: '%D/%u'
180// This property is supported in:
181// globalAccountSettings
182// globalNetworkCheckSettings
183// globalNetworkAccountSettings (available in auth module only)
184// - forceReadOnly
185// This option sets the list of collections as "read-only".
186// Supported values:
187// - true
188// all collections will be "read-only"
189// - array of URL encoded
190// - collections, such as:
191// '/caldav.php/user/calendar/'
192// '/caldav.php/user%40domain.com/calendar/'
193// - regexes, such as:
194// new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i')
195// specifies the list of collections marked as "read-only"
196// If null (default) or undefined then server detected privileges are used.
197// Examples:
198// forceReadOnly: null
199// forceReadOnly: true
200// forceReadOnly: ['/caldav.php/user/calendar/',
201// '/caldav.php/user/calendar2/']
202// forceReadOnly: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')]
203// This property is supported in:
204// globalAccountSettings
205// globalNetworkCheckSettings
206// globalNetworkAccountSettings (available in auth module only, with
207// different syntax for regexes)
208// - ignoreAlarms
209// This option sets list of calendar collections with disabled
210// alarm functionality.
211// Supported values:
212// - true
213// alarm functionality is disabled for all collections
214// - array of URL encoded
215// - collections, such as:
216// '/caldav.php/user/calendar/'
217// '/caldav.php/user%40domain.com/calendar/'
218// - regexes, such as:
219// new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i')
220// specifies the list of collections with disabled alarm functionality.
221// If false (default) or undefined then alarm functionality is enabled
222// for all collections.
223// Examples:
224// ignoreAlarms: true
225// ignoreAlarms: ['/caldav.php/user/calendar/',
226// '/caldav.php/user/calendar2/']
227// ignoreAlarms: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')]
228// This property is supported in:
229// globalAccountSettings
230// globalNetworkCheckSettings
231// globalNetworkAccountSettings (available in auth module only, with
232// different syntax for regexes)
233// - backgroundCalendars
234// This options defines a list of background calendars. If there is
235// at least one event defined for the given day in a background calendar,
236// the background color for that day will be pink/light-red.
237// Supported values:
238// - array of URL encoded
239// - collections, such as:
240// '/caldav.php/user/calendar/'
241// '/caldav.php/user%40domain.com/calendar/'
242// - regexes, such as:
243// new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i')
244// specifies the list of background calendar collections.
245// Examples:
246// backgroundCalendars: ['/caldav.php/user/calendar/',
247// '/caldav.php/user/calendar2/']
248// backgroundCalendars: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')]
249// This property is supported in:
250// globalAccountSettings
251// globalNetworkCheckSettings
252// globalNetworkAccountSettings (available in auth module only, with
253// different syntax for regexes)
254// Special options not present in configuration examples:
255// NOTE: use ONLY if you know what are you doing!
256// - crossDomain
257// This option sets the crossDomain for jQuery .ajax call. If null (default)
258// then the value is autodetected /and the result is shown in the console/
259// - withCredentials
260// This option sets the withCredentials for jQuery .ajax call. The default
261// value is false and there is NO REASON to change it to true!
262// NOTE: if true, Access-Control-Allow-Origin "*" (CORS header) not works!
263
264
265// globalAccountSettings
266// Use this option if you want to use automatic login (without a login
267// screen) with hardcoded username/password in config.js. Otherwise use
268// globalNetworkCheckSettings or globalNetworkAccountSettings (see below).
269// NOTE: if this option is used the value must be an array of object(s).
270// List of properties used in globalAccountSettings variable:
271// - href
272// Set this option to the full "principal URL".
273// NOTE: the last character in the value must be '/'
274// - userAuth
275// - userName
276// Set the username you want to login.
277// - userPassword
278// Set the password for the given username.
279// NOTE: for description of other properties see comments at the beginning
280// of this file.
281// NOTE: for minimal/fast setup you need to set only the href and userAuth
282// options. It is safe/recommended to keep the remaining options unchanged!
283// Example:
284//var globalAccountSettings=[
285// {
286// href: 'https://server1.com:8443/caldav.php/USERNAME1/',
287// userAuth:
288// {
289// userName: 'USERNAME1',
290// userPassword: 'PASSWORD1'
291// },
292// timeOut: 90000,
293// lockTimeOut: 10000,
294// checkContentType: true,
295// settingsAccount: true,
296// delegation: true,
297// hrefLabel: null,
298// forceReadOnly: null,
299// ignoreAlarms: false,
300// backgroundCalendars: []
301// },
302// {
303// href: 'https://server2.com:8443/caldav.php/USERNAME2/',
304// ...
305// ...
306// }
307//];
308
309
310// globalNetworkCheckSettings
311// Use this option if you want to use standard login screen without
312// hardcoded username/password in config.js (used by globalAccountSettings).
313// NOTE: if this option is used the value must be an object.
314// List of properties used in globalAccountSettings variable:
315// - href
316// Set this option to the "principal URL" WITHOUT the "USERNAME/"
317// part (this options uses the username from the login screen).
318// NOTE: the last character in the value must be '/'
319// NOTE: for description of other properties see comments at the beginning
320// of this file.
321// NOTE: for minimal/fast setup you need to set only the href option. It is
322// safe/recommended to keep the remaining options unchanged!
323// Example href values:
324// OS X server http example (see misc/readme_osx.txt for server setup):
325// href: 'http://osx.server.com:8008/principals/users/'
326// OS X server https example (see misc/readme_osx.txt for server setup):
327// href: 'https://osx.server.com:8443/principals/users/'
328// Cyrus server https example:
329// href: 'https://cyrus.server.com/dav/principals/user/'
330// Example:
331// Davical example which automatically detects the protocol, server name,
332// port, ... (client installed into Davical "htdocs" subdirectory;
333// works "out of the box", no additional setup required):
334var globalNetworkCheckSettings={
335 href: location.protocol+'//'+location.hostname+
336 (location.port ? ':'+location.port: '')+
337 location.pathname.replace(RegExp('/+[^/]+/*(index\.html)?$'),'')+
338 '/caldav.php/',
339 timeOut: 90000,
340 lockTimeOut: 10000,
341 checkContentType: true,
342 settingsAccount: true,
343 delegation: true,
344 additionalResources: [],
345 hrefLabel: null,
346 forceReadOnly: null,
347 ignoreAlarms: false,
348 backgroundCalendars: []
349}
350
351
352// globalNetworkAccountSettings
353// Try this option ONLY if you have working setup using
354// globalNetworkCheckSettings and want to fix the authentication popup
355// window problem (if invalid username/password is entered)!
356// If you use this option then your browser sends username/password to the PHP
357// "auth" module ("auth" directory) instead of the DAV server itself.
358// The "auth" module then validates your username/password against your server,
359// and if the authentication is successful, then it sends back a configuration
360// XML (requires additional configuration). The resulting XML is handled
361// IDENTICALLY as the globalAccountSettings configuration option.
362// NOTE: for the "auth" module configuration see readme.txt!
363// NOTE: this option invokes a login screen and disallows access until
364// the client gets correct XML configuration file from the server!
365// List of properties used in globalNetworkAccountSettings variable:
366// - href
367// Set this option to the "full URL" of the "auth" directory
368// NOTE: the last character in the value must be '/'
369// NOTE: for description of other properties see comments at the beginning
370// of this file.
371// Example href values:
372// href: 'https://server.com/client/auth/'
373// Example:
374// Use this configuration if the "auth" module is located in the client
375// installation subdirectory (default):
376//var globalNetworkAccountSettings={
377// href: location.protocol+'//'+location.hostname+
378// (location.port ? ':'+location.port : '')+
379// location.pathname.replace(RegExp('index\.html$'),'')+
380// 'auth/',
381// timeOut: 30000
382//};
383
384
385// globalUseJqueryAuth
386// Use jQuery .ajax() auth or custom header for HTTP basic auth (default).
387// Set this option to true if your server uses digest auth (note: you may
388// experience auth popups on some browsers).
389// If undefined (or empty), custom header for HTTP basic auth is used.
390// Example:
391//var globalUseJqueryAuth=false;
392
393
394// globalBackgroundSync
395// Enable background synchronization even if the browser window/tab has no
396// focus.
397// If false, synchronization is performed only if the browser window/tab
398// is focused. If undefined or not false, then background sync is enabled.
399// Example:
400var globalBackgroundSync=true;
401
402
403// globalSyncResourcesInterval
404// This option defines how often (in miliseconds) are resources/collections
405// asynchronously synchronized.
406// Example:
407var globalSyncResourcesInterval=120000;
408
409
410// globalEnableRefresh
411// This option enables or disables the manual synchronization button in
412// the interface. If this option is enabled then users can perform server
413// synchronization manually. Enabling this option may cause high server
414// load (even DDOS) if users will try to manually synchronize data too
415// often (instead of waiting for the automatic synchronization).
416// If undefined or false, the synchronization button is disabled.
417// NOTE: enable this option only if you really know what are you doing!
418// Example:
419var globalEnableRefresh=false;
420
421
422// globalEnableKbNavigation
423// Enable basic keyboard navigation using arrow keys?
424// If undefined or not false, keyboard navigation is enabled.
425// Example:
426var globalEnableKbNavigation=true;
427
428
429// globalSettingsType
430// Where to store user settings such as: active view, enabled/selected
431// collections, ... (the client store them into DAV property on the server).
432// NOTE: not all servers support storing DAV properties (some servers support
433// only subset /or none/ of these URLs).
434// Supported values:
435// - 'principal-URL', '', null or undefined (default) => settings are stored
436// to principal-URL (recommended for most servers)
437// - 'addressbook-home-set' => settings are are stored to addressbook-home-set
438// - 'calendar-home-set' => settings are stored to calendar-home-set
439// Example:
440//var globalSettingsType='';
441
442
443// globalCrossServerSettingsURL
444// Settings such as enabled/selected collections are stored on the server
445// (see the previous option) in form of full URL
446// (e.g.: https://user@server:port/principal/collection/), but even if this
447// approach is "correct" (you can use the same principal URL with multiple
448// different logins, ...) it causes a problem if your server is accessible
449// from multiple URLs (e.g. http://server/ and https://server/). If you want
450// to store only the "principal/collection/" part of the URL (instead of the
451// full URL) then enable this option.
452// Example:
453//var globalCrossServerSettingsURL=false;
454
455
456// globalInterfaceLanguage
457// Default interface language (note: this option is case sensitive):
458// cs_CZ (Čeština [Czech])
459// da_DK (Dansk [Danish]; thanks Niels Bo Andersen)
460// de_DE (Deutsch [German]; thanks Marten Gajda and Thomas Scheel)
461// en_US (English [English/US])
462// es_ES (Español [Spanish]; thanks Damián Vila)
463// fr_FR (Français [French]; thanks John Fischer)
464// it_IT (Italiano [Italian]; thanks Luca Ferrario)
465// ja_JP (日本語 [Japan]; thanks Muimu Nakayama)
466// hu_HU (Magyar [Hungarian])
467// nl_NL (Nederlands [Dutch]; thanks Johan Vromans)
468// sk_SK (Slovenčina [Slovak])
469// tr_TR (Türkçe [Turkish]; thanks Selcuk Pultar)
470// ru_RU (Русский [Russian]; thanks Александр Симонов)
471// uk_UA (Українська [Ukrainian]; thanks Serge Yakimchuck)
472// zh_CN (中国 [Chinese]; thanks Fandy)
473// Example:
474var globalInterfaceLanguage='fr_FR';
475
476
477// globalInterfaceCustomLanguages
478// If defined and not empty then only languages listed here are shown
479// at the login screen, otherwise (default) all languages are shown
480// NOTE: values in the array must refer to an existing localization
481// (see the option above)
482// Example:
483// globalInterfaceCustomLanguages=['en_US', 'sk_SK'];
484var globalInterfaceCustomLanguages=[];
485
486
487// globalSortAlphabet
488// Use JavaScript localeCompare() or custom alphabet for data sorting.
489// Custom alphabet is used by default because JavaScript localeCompare()
490// not supports collation and often returns "wrong" result. If set to null
491// then localeCompare() is used.
492// Example:
493// var globalSortAlphabet=null;
494var globalSortAlphabet=' 0123456789'+
495 'AÀÁÂÄÆÃÅĀBCÇĆČDĎEÈÉÊËĒĖĘĚFGĞHIÌÍÎİÏĪĮJKLŁĹĽMNŃÑŇOÒÓÔÖŐŒØÕŌ'+
496 'PQRŔŘSŚŠȘșŞşẞTŤȚțŢţUÙÚÛÜŰŮŪVWXYÝŸZŹŻŽ'+
497 'aàáâäæãåābcçćčdďeèéêëēėęěfgğhiìíîïīįıjklłĺľmnńñňoòóôöőœøõō'+
498 'pqrŕřsśšßtťuùúûüűůūvwxyýÿzźżžАБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЮЯ'+
499 'Ьабвгґдеєжзиіїйклмнопрстуфхцчшщюяь';
500
501
502// globalSearchTransformAlphabet
503// To support search without diacritics (e.g. search for 'd' will find: 'Ď', 'ď')
504// it is required to define something like "character equivalence".
505// key = regex text, value = search character
506// Example:
507var globalSearchTransformAlphabet={
508 '[ÀàÁáÂâÄäÆæÃãÅåĀā]': 'a', '[ÇçĆćČč]': 'c', '[Ďď]': 'd',
509 '[ÈèÉéÊêËëĒēĖėĘęĚě]': 'e', '[Ğğ]': 'g', '[ÌìÍíÎîİıÏïĪīĮį]': 'i',
510 '[ŁłĹ弾]': 'l', '[ŃńÑñŇň]': 'n', '[ÒòÓóÔôÖöŐőŒœØøÕõŌō]': 'o',
511 '[ŔŕŘř]': 'r', '[ŚśŠšȘșŞşẞß]': 's', '[ŤťȚțŢţ]': 't',
512 '[ÙùÚúÛûÜüŰűŮůŪū]': 'u', '[ÝýŸÿ]': 'y', '[ŹźŻżŽž]': 'z'
513};
514
515// globalResourceAlphabetSorting
516// If more than one resource (server account) is configured, sort the
517// resources alphabetically?
518// Example:
519var globalResourceAlphabetSorting=true;
520
521
522// globalNewVersionNotifyUsers
523// Update notification will be shown only to users with login names defined
524// in this array.
525// If undefined (or empty), update notifications will be shown to all users.
526// Example:
527// globalNewVersionNotifyUsers=['admin', 'peter'];
528var globalNewVersionNotifyUsers=[];
529
530
531// globalDatepickerFormat
532// Set the datepicker format (see
533// http://docs.jquery.com/UI/Datepicker/formatDate for valid values).
534// NOTE: date format is predefined for each localization - use this option
535// ONLY if you want to use custom date format (instead of the localization
536// predefined one).
537// Example:
538//var globalDatepickerFormat='dd.mm.yy';
539var globalDatepickerFormat='yy-mm-dd';
540
541
542// globalDatepickerFirstDayOfWeek
543// Set the datepicker first day of the week: Sunday is 0, Monday is 1, etc.
544// Example:
545var globalDatepickerFirstDayOfWeek=1;
546
547
548// globalHideInfoMessageAfter
549// How long are information messages (such as: success, error) displayed
550// (in miliseconds).
551// Example:
552var globalHideInfoMessageAfter=1800;
553
554
555// globalEditorFadeAnimation
556// Set the editor fade in/out animation duration when editing or saving data
557// (in miliseconds).
558// Example:
559var globalEditorFadeAnimation=666;
560
561
562
563
564// ******* CalDAV (CalDavZAP) related settings ******* //
565
566// globalEventStartPastLimit, globalEventStartFutureLimit, globalTodoPastLimit
567// Number of months pre-loaded from past/future in advance for calendars
568// and todo lists (if null then date range synchronization is disabled).
569// NOTE: interval synchronization is used only if your server supports
570// sync-collection REPORT (e.g. DAViCal).
571// NOTE: if you experience problems with data loading and your server has
572// no time-range filtering support set these variables to null.
573// Example:
574var globalEventStartPastLimit=3;
575var globalEventStartFutureLimit=3;
576var globalTodoPastLimit=1;
577
578
579// globalLoadedCalendarCollections
580// This option sets the list of calendar collections (down)loaded after login.
581// If empty then all calendar collections for the currently logged user are
582// loaded.
583// NOTE: settings stored on the server (see settingsAccount) overwrite this
584// option.
585// Example:
586var globalLoadedCalendarCollections=[];
587
588
589// globalLoadedTodoCollections
590// This option sets the list of todo collections (down)loaded after login.
591// If empty then all todo collections for the currently logged user are loaded.
592// NOTE: settings stored on the server (see settingsAccount) overwrite this
593// option.
594// Example:
595var globalLoadedTodoCollections=[];
596
597
598// globalActiveCalendarCollections
599// This options sets the list of calendar collections checked (enabled
600// checkbox => data visible in the interface) by default after login.
601// If empty then all loaded calendar collections for the currently logged
602// user are checked.
603// NOTE: only already (down)loaded collections can be checked (see
604// the globalLoadedCalendarCollections option).
605// NOTE: settings stored on the server (see settingsAccount) overwrite this
606// option.
607// Example:
608var globalActiveCalendarCollections=[];
609
610
611// globalActiveTodoCollections
612// This options sets the list of todo collections checked (enabled
613// checkbox => data visible in the interface) by default after login.
614// If empty then all loaded todo collections for the currently logged
615// user are checked.
616// NOTE: only already (down)loaded collections can be checked (see
617// the globalLoadedTodoCollections option).
618// NOTE: settings stored on the server (see settingsAccount) overwrite this
619// option.
620// Example:
621var globalActiveTodoCollections=[];
622
623
624// globalCalendarSelected
625// This option sets which calendar collection will be pre-selected
626// (if you create a new event) by default after login.
627// The value must be URL encoded path to a calendar collection,
628// for example: 'USER/calendar/'
629// If empty or undefined then the first available calendar collection
630// is selected automatically.
631// NOTE: only already (down)loaded collections can be pre-selected (see
632// the globalLoadedCalendarCollections option).
633// NOTE: settings stored on the server (see settingsAccount) overwrite this
634// option.
635// Example:
636//var globalCalendarSelected='';
637
638
639// globalTodoCalendarSelected
640// This option sets which todo collection will be pre-selected
641// (if you create a new todo) by default after login.
642// The value must be URL encoded path to a todo collection,
643// for example: 'USER/todo_calendar/'
644// If empty or undefined then the first available todo collection
645// is selected automatically.
646// NOTE: only already (down)loaded collections can be pre-selected (see
647// the globalLoadedTodoCollections option).
648// NOTE: settings stored on the server (see settingsAccount) overwrite this
649// option.
650// Example:
651//var globalTodoCalendarSelected='';
652
653
654// globalActiveView
655// This options sets the default fullcalendar view option (the default calendar
656// view after the first login).
657// Supported values:
658// - 'month'
659// - 'multiWeek'
660// - 'agendaWeek'
661// - 'agendaDay'
662// NOTE: we use custom and enhanced version of fullcalendar!
663// Example:
664var globalActiveView='multiWeek';
665
666
667// globalOpenFormMode
668// Open new event form on 'single' or 'double' click.
669// If undefined or not 'double', then 'single' is used.
670// Example:
671var globalOpenFormMode='double';
672
673
674// globalTodoListFilterSelected
675// This options sets the list of filters in todo list that are selected
676// after login.
677// Supported options:
678// - 'filterAction'
679// - 'filterProgress' (available only if globalAppleRemindersMode is disabled)
680// - 'filterCompleted'
681// - 'filterCanceled' (available only if globalAppleRemindersMode is disabled)
682// NOTE: settings stored on the server (see settingsAccount) overwrite this
683// option.
684// Example:
685var globalTodoListFilterSelected=['filterAction', 'filterProgress'];
686
687
688// globalCalendarStartOfBusiness, globalCalendarEndOfBusiness
689// These options set the start and end of business hours with 0.5 hour
690// precision. Non-business hours are faded out in the calendar interface.
691// If both variables are set to the same value then no fade out occurs.
692// Example:
693var globalCalendarStartOfBusiness=8;
694var globalCalendarEndOfBusiness=17;
695
696
697// globalDefaultEventDuration
698// This option sets the default duration (in minutes) for newly created events.
699// If undefined or null, globalCalendarEndOfBusiness value will be taken as
700// a default end time instead.
701// Example:
702var globalDefaultEventDuration=120;
703
704
705// globalAMPMFormat
706// This option enables to use 12 hours format (AM/PM) for displaying time.
707// NOTE: time format is predefined for each localization - use this option
708// ONLY if you want to use custom time format (instead of the localization
709// predefined one).
710// Example:
711//var globalAMPMFormat=false;
712
713
714// globalTimeFormatBasic
715// This option defines the time format information for events in month and
716// multiweek views. If undefined or null then default value is used.
717// If defined as empty string no time information is shown in these views.
718// See http://arshaw.com/fullcalendar/docs/utilities/formatDate/ for exact
719// formating rules.
720// Example:
721//var globalTimeFormatBasic='';
722
723
724// globalTimeFormatAgenda
725// This option defines the time format information for events in day and
726// week views. If undefined or null then default value is used.
727// If defined as empty string no time information is shown in these views.
728// See http://arshaw.com/fullcalendar/docs/utilities/formatDate/ for exact
729// formating rules.
730// Example:
731//var globalTimeFormatAgenda='';
732
733
734// globalDisplayHiddenEvents
735// This option defined whether events from unechecked calendars are displayed
736// with certain transparency (true) or completely hidden (false).
737// Example:
738var globalDisplayHiddenEvents=false;
739
740
741// globalTimeZoneSupport
742// This option enables timezone support in the client.
743// NOTE: timezone cannot be specified for all-day events because these don't
744// have start and end time.
745// If this option is disabled then local time is used.
746// Example:
747var globalTimeZoneSupport=true;
748
749
750// globalTimeZone
751// If timezone support is enabled, this option sets the default timezone.
752// See timezones.js or use the following command to get the list of supported
753// timezones (defined in timezones.js):
754// grep "'[^']\+': {" timezones.js | sed -Ee "s#(\s*'|':\s*\{)##g"
755// Example:
756var globalTimeZone='Europe/Paris';
757
758
759// globalTimeZonesEnabled
760// This option sets the list of available timezones in the interface (for the
761// list of supported timezones see the comment for the previous configuration
762// option).
763// NOTE: if there is at least one event/todo with a certain timezone defined,
764// that timezone is enabled (even if it is not present in this list).
765// Example:
766// var globalTimeZonesEnabled=['America/New_York', 'Europe/Berlin'];
767var globalTimeZonesEnabled=[];
768
769
770// globalRewriteTimezoneComponent
771// This options sets whether the client will enhance/replace (if you edit an
772// event or todo) the timezone information using the official IANA timezone
773// database information (recommended).
774// Example:
775var globalRewriteTimezoneComponent=true;
776
777
778// globalRemoveUnknownTimezone
779// This options sets whether the client will remove all non-standard timezone
780// names from events and todos (if you edit an event or todo)
781// (e.g.: /freeassociation.sourceforge.net/Tzfile/Europe/Vienna)
782// Example:
783var globalRemoveUnknownTimezone=false;
784
785
786// globalShowHiddenAlarms
787// This option sets whether the client will show alarm notifications for
788// unchecked calendars. If this option is enabled and you uncheck a calendar
789// in the calendar list, alarm notifications will be temporary disabled for
790// unchecked calendar(s).
791// Example:
792var globalShowHiddenAlarms=false;
793
794
795// globalIgnoreCompletedOrCancelledAlarms
796// This options sets whether the client will show alarm notifications for
797// already completed or cancelled todos. If enabled then alarm notification
798// for completed and cancelled todos are disabled.
799// Example:
800var globalIgnoreCompletedOrCancelledAlarms=true;
801
802
803// globalMozillaSupport
804// Mozilla automatically treats custom repeating event calculations as if
805// the start day of the week is Monday, despite what day is chosen in settings.
806// Set this variable to true to use the same approach, ensuring compatible
807// event rendering in special cases.
808// Example:
809var globalMozillaSupport=false;
810
811
812// globalCalendarColorPropertyXmlns
813// This options sets the namespace used for storing the "calendar-color"
814// property by the client.
815// If true, undefined (or empty) "http://apple.com/ns/ical/" is used (Apple
816// compatible). If false, then the calendar color modification functionality
817// is completely disabled.
818// Example:
819//var globalCalendarColorPropertyXmlns=true;
820
821
822// globalWeekendDays
823// This option sets the list of days considered as weekend days (these
824// are faded out in the calendar interface). Non-weekend days are automatically
825// considered as business days.
826// Sunday is 0, Monday is 1, etc.
827// Example:
828var globalWeekendDays=[0, 6];
829
830
831// globalAppleRemindersMode
832// If this option is enabled then then client will use the same approach
833// for handling repeating reminders (todos) as Apple. It is STRONGLY
834// recommended to enabled this option if you use any Apple clients for
835// reminders (todos).
836// Supported options:
837// - 'iOS6'
838// - 'iOS7'
839// - true (support of the latest iOS version - 'iOS8')
840// - false
841// If this option is enabled:
842// - RFC todo support is SEVERELY limited and the client mimics the behaviour
843// of Apple Reminders.app (to ensure maximum compatibility)
844// - when a single instance of repeating todo is edited, it becomes an
845// autonomous non-repeating todo with NO relation to the original repeating
846// todo
847// - capabilities of repeating todos are limited - only the first instance
848// is ever visible in the interface
849// - support for todo DTSTART attribute is disabled
850// - support for todo STATUS attribute other than COMPLETED and NEEDS-ACTION
851// is disabled
852// - [iOS6 only] support for LOCATION and URL attributes is disabled
853// Example:
854var globalAppleRemindersMode=true;
855
856
857// globalSubscribedCalendars
858// This option specifies a list of remote URLs to ics files (e.g.: used
859// for distributing holidays information). Subscribed calendars are
860// ALWAYS read-only. Remote servers where ics files are hosted MUST
861// return proper CORS headers (see readme.txt) otherwise this functionality
862// will not work!
863// NOTE: subsribed calendars are NOT "shared" calendars. For "shared"
864// calendars see the delegation option in globalAccountSettings,
865// globalNetworkCheckSettings and globalNetworkAccountSettings.
866// List of properties used in globalSubscribedCalendars variable:
867// - hrefLabel
868// This options defines the header string above the subcsribed calendars.
869// - calendars
870// This option specifies an array of remote calendar objects with the
871// following properties:
872// - href
873// Set this option to the "full URL" of the remote calendar
874// - userAuth
875// NOTE: keep empty if remote authentication is not required!
876// - userName
877// Set the username you want to login.
878// - userPassword
879// Set the password for the given username.
880// - typeList
881// Set the list of objects you want to process from remote calendars;
882// two options are available:
883// - 'vevent' (show remote events in the interface)
884// - 'vtodo' (show remote todos in the interface)
885// - ignoreAlarm
886// Set this option to true if you want to disable alarm notifications
887// from the remote calendar.
888// - displayName
889// Set this option to the name of the calendar you want to see
890// in the interface.
891// - color
892// Set the calendar color you want to see in the interface.
893// Example:
894//var globalSubscribedCalendars={
895// hrefLabel: 'Subscribed',
896// calendars: [
897// {
898// href: 'http://something.com/calendar.ics',
899// userAuth: {
900// userName: '',
901// userPassword: ''
902// },
903// typeList: ['vevent', 'vtodo'],
904// ignoreAlarm: true,
905// displayName: 'Remote Calendar 1',
906// color: '#ff0000'
907// },
908// {
909// href: 'http://calendar.com/calendar2.ics',
910// ...
911// ...
912// }
913// ]
914//};
915
916
917
918// ******* CardDAV (CardDavMATE) related settings ******* //
919
920
921// globalLoadedAddressbookCollections
922// This option sets the list of addressbook collections (down)loaded after
923// login. If empty then all addressbook collections for the currently logged
924// user are loaded.
925// NOTE: settings stored on the server (see settingsAccount) overwrite this
926// option.
927// Example:
928var globalLoadedAddressbookCollections=[];
929
930
931// globalActiveAddressbookCollections
932// This options sets the list of addressbook collections checked (enabled
933// checkbox => data visible in the interface) by default after login.
934// If empty then all loaded addressbook collections for the currently logged
935// user are checked.
936// NOTE: only already (down)loaded collections can be checked (see
937// the globalLoadedAddressbookCollections option).
938// NOTE: settings stored on the server (see settingsAccount) overwrite this
939// option.
940// Example:
941var globalActiveAddressbookCollections=[];
942
943
944// globalAddressbookSelected
945// This option sets which addressbook collection will be pre-selected
946// (if you create a new contact) by default after login.
947// The value must be URL encoded path to an addressbook collection,
948// for example: 'USER/addressbook/'
949// If empty or undefined then the first available addressbook collection
950// is selected automatically.
951// NOTE: only already (down)loaded collections can be pre-selected (see
952// the globalLoadedAddressbookCollections option).
953// NOTE: settings stored on the server (see settingsAccount) overwrite this
954// option.
955// Example:
956//var globalAddressbookSelected='';
957
958
959// globalCompatibility
960// This options is reserved for various compatibility settings.
961// NOTE: if this option is used the value must be an object.
962// Currently there is only one supported option:
963// - anniversaryOutputFormat
964// Different clients use different (and incompatible) approach
965// to store anniversary date in vCards. Apple stores this attribute as:
966// itemX.X-ABDATE;TYPE=pref:2000-01-01\r\n
967// itemX.X-ABLabel:_$!<Anniversary>!$_\r\n'
968// other clients store this attribute as:
969// X-ANNIVERSARY:2000-01-01\r\n
970// Choose 'apple' or 'other' (lower case) for your 3rd party client
971// compatibility. You can chose both: ['apple', 'other'], but it may
972// cause many problems in the future, for example: duplicate anniversary
973// dates, invalid/old anniversary date in your clients, ...)
974// Examples:
975// anniversaryOutputFormat: ['other']
976// anniversaryOutputFormat: ['apple', 'other']
977// Example:
978var globalCompatibility={anniversaryOutputFormat: ['apple']};
979
980
981// globalUriHandler{Tel,Email,Url,Profile}
982// These options set the URI handlers for TEL, EMAIL, URL and X-SOCIALPROFILE
983// vCard attributes. Set them to null (or comment out) to disable.
984// NOTE: for globalUriHandlerTel is recommended to use 'tel:', 'callto:'
985// or 'skype:'. The globalUriHandlerUrl value is used only if no URI handler
986// is defined in the URL.
987// NOTE: it is safe to keep these values unchanged!
988// Example:
989var globalUriHandlerTel='tel:';
990var globalUriHandlerEmail='mailto:';
991var globalUriHandlerUrl='http://';
992var globalUriHandlerProfile={
993 'twitter': 'http://twitter.com/%u',
994 'facebook': 'http://www.facebook.com/%u',
995 'flickr': 'http://www.flickr.com/photos/%u',
996 'linkedin': 'http://www.linkedin.com/in/%u',
997 'myspace': 'http://www.myspace.com/%u',
998 'sinaweibo': 'http://weibo.com/n/%u'
999};
1000
1001
1002// globalDefaultAddressCountry
1003// This option sets the default country for new address fields.
1004// See common.js or use the following command to get the list of
1005// all supported country codes (defined in common.js):
1006// grep -E "'[a-z]{2}':\s+\[" common.js | sed -Ee 's#^\s+|\s+\[\s+# #g'
1007// Example:
1008var globalDefaultAddressCountry='fr';
1009
1010
1011// globalAddressCountryEquivalence
1012// This option sets the processing of the country field specified
1013// in the vCard ADR attribute.
1014// By default the address field in vCard looks like:
1015// ADR;TYPE=WORK:;;1 Waters Edge;Baytown;LA;30314;USA\r\n
1016// what cause a problem, because the country field is a plain
1017// text and can contain any value, e.g.:
1018// USA
1019// United States of America
1020// US
1021// and because the address format can be completely different for
1022// each country, e.g.:
1023// China address example:
1024// [China]
1025// [Province] [City]
1026// [Street]
1027// [Postal]
1028// Japan address example:
1029// [Postal]
1030// [Prefecture] [County/City]
1031// [Further Divisions]
1032// [Japan]
1033// the client needs to correctly detect the country from the ADR
1034// attribute. Apple solved this problem by using:
1035// item1.ADR;TYPE=WORK:;;1 Waters Edge;Baytown;LA;30314;USA\r\n
1036// item1.X-ABADR:us\r\n
1037// where the second "related" attribute defines the country code
1038// for the ADR attribute. This client uses the same approach, but
1039// if the vCard is created by 3rd party clients and the X-ABADR
1040// is missing, it is possible to define additional "rules" for
1041// country matching. These rules are specied by the country code
1042// (for full list of country codes see the comment for pre previous
1043// option) and a case insensitive regular expression (which matches
1044// the plain text value in the country field).
1045// NOTE: if X-ABADR is not present and the country not matches any
1046// country defined in this option, then globalDefaultAddressCountry
1047// is used by default.
1048// Example:
1049var globalAddressCountryEquivalence=[
1050 {country: 'de', regex: '^\\W*Deutschland\\W*$'},
1051 {country: 'sk', regex: '^\\W*Slovensko\\W*$'}
1052];
1053
1054
1055// globalAddressCountryFavorites
1056// This option defines the list of countries which are shown at the top
1057// of the country list in the interface (for full list of country codes
1058// see the comment for pre globalDefaultAddressCountry option).
1059// Example:
1060// var globalAddressCountryFavorites=['de','sk'];
1061var globalAddressCountryFavorites=[];
1062
1063
1064// globalAddrColorPropertyXmlns
1065// This options sets the namespace used for storing the "addressbook-color"
1066// property by the client.
1067// If true, undefined (or empty) "http://inf-it.com/ns/ab/" is used.
1068// If false, then the addressbook color modification functionality
1069// is completely disabled, and addressbook colors in the interface are
1070// generated automatically.
1071// Example:
1072//var globalAddrColorPropertyXmlns=true;
1073
1074
1075// globalContactStoreFN
1076// This option specifies how the FN (formatted name) is stored into vCard.
1077// The value for this options must be an array of strings, that can contain
1078// the following variables:
1079// prefix
1080// last
1081// middle
1082// first
1083// suffix
1084// The string element of the array can contain any other characters (usually
1085// space or colon). Elements are added into FN only if the there is
1086// a variable match, for example if:
1087// last='Lastname'
1088// first='Firstname'
1089// middle='' (empty)
1090// and this option is set to:
1091// ['last', ' middle', ' first'] (space in the second and third element)
1092// the resulting value for FN will be: 'Lastname Firstname' and not
1093// 'Lastname Firstname' (two spaces), because the middle name is empty (so
1094// the second element is completely ignored /not added into FN/).
1095// NOTE: this attribute is NOT used by this client, and it is also NOT
1096// possible to directly edit it in the interface.
1097// Examples:
1098// var globalContactStoreFN=[' last', ' middle', ' first'];
1099// var globalContactStoreFN=['last', ', middle', ' ,first'];
1100var globalContactStoreFN=['prefix',' last',' middle',' first',' suffix'];
1101
1102
1103// globalGroupContactsByCompanies
1104// This options specifies how contacts are grouped in the interface.
1105// By default the interface looks like (very simple example):
1106// A
1107// Adams Adam
1108// Anderson Peter
1109// B
1110// Brown John
1111// Baker Josh
1112// if grouped by company/deparment the result is:
1113// Company A [Department X]
1114// Adams Adam
1115// Brown John
1116// Company B [Department Y]
1117// Anderson Peter
1118// Baker Josh
1119// If this option is set to true contacts are grouped by company/department,
1120// otherwise (default) contacts are grouped by letters of the alphabet.
1121// If undefined or not true, grouping by alphabet letters is used.
1122// NOTE: see also the globalCollectionDisplay option below.
1123var globalGroupContactsByCompanies=false;
1124
1125
1126// globalCollectionDisplay
1127// This options specifies how data columns in the contact list are displayed.
1128//
1129// NOTE: columns are displayed ONLY if there is enought horizontal place in
1130// the browser window (e.g. if you define 5 columns here, but your browser
1131// window is not wide enough, you will see only first 3 columns instead of 5).
1132//
1133// NOTE: see the globalContactDataMinVisiblePercentage option which defines the
1134// width for columns.
1135//
1136// The value must be an array of columns, where each column is represented by
1137// an object with the following properties:
1138// label => the value of this option is a string used as column header
1139// You can use the following localized variables in the label string:
1140// - {Name}
1141// - {FirstName}
1142// - {LastName}
1143// - {MiddleName}
1144// - {NickName}
1145// - {Prefix}
1146// - {Suffix}
1147// - {BirthDay}
1148// - {PhoneticLastName}
1149// - {PhoneticFirstName}
1150// - {JobTitle}
1151// - {Company}
1152// - {Department}
1153// - {Categories}
1154// - {NoteText}
1155// - {Address}, {AddressWork}, {AddressHome}, {AddressOther}
1156// - {Phone}, {PhoneWork}, {PhoneHome}, {PhoneCell}, {PhoneMain},
1157// {PhonePager}, {PhoneFax}, {PhoneIphone}, {PhoneOther}
1158// - {Email}, {EmailWork}, {EmailHome}, {EmailMobileme}, {EmailOther}
1159// - {URL}, {URLWork}, {URLHome}, {URLHomepage}, {URLOther}
1160// - {Dates}, {DatesAnniversary}, {DatesOther}
1161// - {Related}, {RelatedManager}, {RelatedAssistant}, {RelatedFather},
1162// {RelatedMother}, {RelatedParent}, {RelatedBrother}, {RelatedSister},
1163// {RelatedChild}, {RelatedFriend}, {RelatedSpouse}, {RelatedPartner},
1164// {RelatedOther}
1165// - {Profile}, {ProfileTwitter}, {ProfileFacebook}, {ProfileFlickr},
1166// {ProfileLinkedin}, {ProfileMyspace}, {ProfileSinaweibo}
1167// - {IM}, {IMWork}, {IMHome}, {IMMobileme}, {IMOther}, {IMAim}, {IMIcq},
1168// {IMIrc}, {IMJabber}, {IMMsn}, {IMYahoo}, {IMFacebook}, {IMGadugadu},
1169// {IMGoogletalk}, {IMQq}, {IMSkype}
1170// value => the value of this option is an array of format strings, or
1171// an object with the following properties:
1172// - company (used for company contacts)
1173// - personal (used for user contacts)
1174// where the value of these properties is an array of format strings used
1175// for company or user contacts (you can have different values in the same
1176// column for personal and company contacts).
1177// You can use the following simple variables in the format string:
1178// - {FirstName}
1179// - {LastName}
1180// - {MiddleName}
1181// - {NickName}
1182// - {Prefix}
1183// - {Suffix}
1184// - {BirthDay}
1185// - {PhoneticLastName}
1186// - {PhoneticFirstName}
1187// - {JobTitle}
1188// - {Company}
1189// - {Department}
1190// - {Categories}
1191// - {NoteText}
1192// You can also use parametrized variables, where the parameter is enclosed
1193// in square bracket. Paramatrized variables are useful to extract data
1194// such as home phone {Phone[type=home]}, extract the second phone number
1195// {Phone[:1]} (zero based indexing) or extract the third home phone number
1196// {Phone[type=home][:2]} from the vCard.
1197// NOTE: if the parametrized variable matches multiple items, e.g.:
1198// {Phone[type=work]} (if the contact has multiple work phones) then the
1199// first one is used!
1200//
1201// The following parametrized variables are supported (note: you can use
1202// all of them also without parameters /the first one will be used/):
1203// - {Address[type=XXX]} or {Address[:NUM]} or {Address[type=XXX][:NUM]}
1204// where supported values for XXX are:
1205// - work
1206// - home
1207// - other
1208// - any other custom value
1209// - {Phone[type=XXX]} or {Phone[:NUM]} or {Phone[type=XXX][:NUM]}
1210// where supported values for XXX are:
1211// - work
1212// - home
1213// - cell
1214// - main
1215// - pager
1216// - fax
1217// - iphone
1218// - other
1219// - any other custom value
1220// - {Email[type=XXX]} or {Email[:NUM]} or {Email[type=XXX][:NUM]}
1221// where supported values for XXX are:
1222// - work
1223// - home
1224// - mobileme
1225// - other
1226// - any other custom value
1227// - {URL[type=XXX]} or {URL[:NUM]} or {URL[type=XXX][:NUM]}
1228// where supported values for XXX are:
1229// - work
1230// - home
1231// - homepage
1232// - other
1233// - any other custom value
1234// - {Dates[type=XXX]} or {Dates[:NUM]} or {Dates[type=XXX][:NUM]}
1235// where supported values for XXX are:
1236// - anniversary
1237// - other
1238// - any other custom value
1239// - {Related[type=XXX]} or {Related[:NUM]} or {Related[type=XXX][:NUM]}
1240// where supported values for XXX are:
1241// - manager
1242// - assistant
1243// - father
1244// - mother
1245// - parent
1246// - brother
1247// - sister
1248// - child
1249// - friend
1250// - spouse
1251// - partner
1252// - other
1253// - any other custom value
1254// - {Profile[type=XXX]} or {Profile[:NUM]} or {Profile[type=XXX][:NUM]}
1255// where supported values for XXX are:
1256// - twitter
1257// - facebook
1258// - flickr
1259// - linkedin
1260// - myspace
1261// - sinaweibo
1262// - any other custom value
1263// - {IM[type=XXX]} or {IM[service-type=YYY]} or {IM[:NUM]}
1264// where supported values for XXX are:
1265// - work
1266// - home
1267// - mobileme
1268// - other
1269// - any other custom value
1270// and supported values for YYY are:
1271// - aim
1272// - icq
1273// - irc
1274// - jabber
1275// - msn
1276// - yahoo
1277// - facebook
1278// - gadugadu
1279// - googletalk
1280// - qq
1281// - skype
1282// - any other custom value
1283//
1284// NOTE: if you want to use the "any other custom value" option (for XXX
1285// or YYY above) you MUST double escape the following characters:
1286// =[]{}\
1287// for example:
1288// - for profile type "=XXX=" use: '{Profile[type=\\=XXX\\=]}'
1289// - for profile type "\XXX\" use: '{Profile[type=\\\\XXX\\\\]}'
1290//
1291// NOTE: if you want to use curly brackets in the format string you must
1292// double escape it, e.g.: ['{Company}', '\\{{Department}\\}']
1293//
1294// The format string (for the value option) is an array to allow full
1295// customization of the interface. For example if:
1296// value: ['{LastName} {MiddleName} {FirstName}']
1297// and the person has no middle name, then the result in the column
1298// will be (without quotes):
1299// "Parker Peter" (note: two space characters)
1300// but if you use:
1301// value: ['{LastName}', ' {MiddleName}', ' {FirstName}']
1302// then the result will be (without quotes):
1303// "Parker Peter" (note: only one space character)
1304// The reason is that only those elements of the array are appended
1305// into the result where non-empty substitution was performed (so the
1306// ' {MiddleName}' element in this case is ignored, because the person
1307// in the example above has no /more precisely has empty/ middle name).
1308//
1309// Examples:
1310// To specify two columns (named "Company" and "Department / LastName"),
1311// where the first will display the company name, and the second will display
1312// department for company contacts (with "Dep -" prefix), and lastname for
1313// personal contacts (with "Name -" prefix) use:
1314// var globalCollectionDisplay=[
1315// {
1316// label: 'Company',
1317// value: ['{Company}']
1318// },
1319// {
1320// label: 'Department / LastName',
1321// value: {
1322// company: ['Dep - {Department}'],
1323// personal: ['Name - {LastName}']
1324// }
1325// }
1326// ];
1327// To specify 3 columns (named "Categories", "URL" and "IM"), where the first
1328// will display categories, second will display the third work URL, and third
1329// will display ICQ IM use:
1330// var globalCollectionDisplay=[
1331// {
1332// label: 'Categories',
1333// value: ['{Categories}']
1334// },
1335// {
1336// label: 'URL',
1337// value: ['{URL[type=WORK][:2]}']
1338// },
1339// {
1340// label: 'IM',
1341// value: ['{IM[service-type=ICQ]}']
1342// }
1343// ];
1344//
1345// Recommended settings if globalGroupContactsByCompanies
1346// is set to false:
1347// var globalCollectionDisplay=[
1348// {
1349// label: '{Name}',
1350// value: ['{LastName}', ' {MiddleName}', ' {FirstName}']
1351// },
1352// {
1353// label: '{Company} [{Department}]',
1354// value: ['{Company}', ' [{Department}]']
1355// },
1356// {
1357// label: '{JobTitle}',
1358// value: ['{JobTitle}']
1359// },
1360// {
1361// label: '{Email}',
1362// value: ['{Email[:0]}']
1363// },
1364// {
1365// label: '{Phone} 1',
1366// value: ['{Phone[:0]}']
1367// },
1368// {
1369// label: '{Phone} 2',
1370// value: ['{Phone[:1]}']
1371// },
1372// {
1373// label: '{NoteText}',
1374// value: ['{NoteText}']
1375// }
1376// ];
1377//
1378// Recommended settings if globalGroupContactsByCompanies
1379// is set to true:
1380// var globalCollectionDisplay=[
1381// {
1382// label: '{Name}',
1383// value: {
1384// personal: ['{LastName}', ' {MiddleName}', ' {FirstName}'],
1385// company: ['{Company}', ' [{Department}]']
1386// }
1387// },
1388// {
1389// label: '{JobTitle}',
1390// value: ['{JobTitle}']
1391// },
1392// {
1393// label: '{Email}',
1394// value: ['{Email[:0]}']
1395// },
1396// {
1397// label: '{Phone} 1',
1398// value: ['{Phone[:0]}']
1399// },
1400// {
1401// label: '{Phone} 2',
1402// value: ['{Phone[:1]}']
1403// },
1404// {
1405// label: '{NoteText}',
1406// value: ['{NoteText}']
1407// }
1408// ];
1409//
1410// NOTE: if left undefined, the recommended settings will be used.
1411
1412
1413// globalCollectionSort
1414// This options sets the ordering of contacts in the interface. In general
1415// contacts are ordered alphabetically by an internal "sort string" which
1416// is created for each contact. Here you can specify how this internal string
1417// is created. The value is a simple array holding only the values from the
1418// value property defined in the globalCollectionDisplay option.
1419// If undefined, the definition from globalCollectionDisplay is used.
1420// Example:
1421// var globalCollectionSort = [
1422// ['{LastName}'],
1423// ['{FirstName}'],
1424// ['{MiddleName}'],
1425// {
1426// company: ['{Categories}'],
1427// personal: ['{Company}']
1428// }
1429// ];
1430var globalCollectionSort=[
1431 ['{LastName}'],
1432 ['{FirstName}'],
1433 ['{MiddleName}']
1434];
1435
1436
1437// globalContactDataMinVisiblePercentage
1438// This option defines how the width for columns are computed. If you set
1439// it to 1 then 100% of all data in the column will be visible (the column
1440// width is determined by the longest string in the column). If you set it
1441// to 0.95 then 95% of data will fit into the column width, and the remaining
1442// 5% will be truncated (" ...").
1443// Example:
1444var globalContactDataMinVisiblePercentage=0.95;
1445
1446
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report.php.diff b/flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report.php.diff
new file mode 100644
index 0000000..2924252
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report.php.diff
@@ -0,0 +1,20 @@
1--- a/bug_report.php 2019-05-06 12:06:44.265508011 +0200
2+++ b/bug_report.php 2019-05-06 12:09:40.106952738 +0200
3@@ -67,6 +67,17 @@
4 'copy_files' => $f_copy_attachments_from_parent
5 );
6
7+# begin captcha check for anon user
8+if ( current_user_is_anonymous() && get_gd_version() > 0 ) {
9+ $f_captcha = gpc_get_string( 'captcha', '' );
10+ $f_captcha = utf8_strtolower( trim( $f_captcha ) );
11+
12+ $t_securimage = new Securimage();
13+ if( $t_securimage->check( $f_captcha ) == false ) {
14+ trigger_error( ERROR_SIGNUP_NOT_MATCHING_CAPTCHA, ERROR );
15+ }
16+}
17+
18 if( $f_master_bug_id > 0 ) {
19 bug_ensure_exists( $f_master_bug_id );
20
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report_page.php.diff b/flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report_page.php.diff
new file mode 100644
index 0000000..80dea91
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/bug_report_page.php.diff
@@ -0,0 +1,53 @@
1--- a/bug_report_page.php 2018-02-10 21:29:27.000000000 +0100
2+++ b/bug_report_page.php 2018-03-03 15:04:19.622499678 +0100
3@@ -708,7 +708,50 @@
4 <span class="lbl padding-6"><?php echo lang_get( 'check_report_more_bugs' ) ?></span>
5 </label>
6 </td>
7 </tr>
8+<?php
9+ # captcha image requires GD library and related option to ON
10+ if( current_user_is_anonymous() && get_gd_version() > 0 ) {
11+ $t_securimage_path = 'vendor/dapphp/securimage';
12+ $t_securimage_show = $t_securimage_path . '/securimage_show.php';
13+ $t_securimage_play = $t_securimage_path . '/securimage_play.swf?'
14+ . http_build_query( array(
15+ 'audio_file' => $t_securimage_path . '/securimage_play.php',
16+ 'bgColor1=' => '#fff',
17+ 'bgColor2=' => '#fff',
18+ 'iconColor=' => '#777',
19+ 'borderWidth=' => 1,
20+ 'borderColor=' => '#000',
21+ ) );
22+?>
23+ <tr>
24+ <th class="category">CAPTCHA</th>
25+ <td>
26+
27+ <label for="captcha-field" class="block clearfix">
28+ <strong><?php echo lang_get( 'signup_captcha_request_label' ); ?></strong>
29+ </label>
30+ <span id="captcha-input" class="input">
31+ <?php print_captcha_input( 'captcha' ); ?>
32+
33+ <span id="captcha-image" class="captcha-image" style="padding-right:3px;">
34+ <img src="<?php echo $t_securimage_show; ?>" alt="visual captcha" />
35+ <ul id="captcha-refresh"><li><a href="#"><?php
36+ echo lang_get( 'signup_captcha_refresh' );
37+ ?></a></li></ul>
38+ </span>
39+
40+ <object type="application/x-shockwave-flash" width="19" height="19"
41+ data="<?php echo $t_securimage_play; ?>">
42+ <param name="movie" value="<?php echo $t_securimage_play; ?>" />
43+ </object>
44+ </span>
45+ </td>
46+ </tr>
47+<?php
48+ }
49+?>
50+
51 </table>
52 </div>
53 </div>
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 @@
1--- a/bugnote_add.php 2018-02-10 21:29:27.000000000 +0100
2+++ b/bugnote_add.php 2018-03-03 15:13:12.439919511 +0100
3@@ -44,6 +44,17 @@
4
5 $t_query = array( 'issue_id' => $f_bug_id );
6
7+# begin captcha check for anon user
8+if ( current_user_is_anonymous() && get_gd_version() > 0 ) {
9+ $f_captcha = gpc_get_string( 'captcha', '' );
10+ $f_captcha = utf8_strtolower( trim( $f_captcha ) );
11+
12+ $t_securimage = new Securimage();
13+ if( $t_securimage->check( $f_captcha ) == false ) {
14+ trigger_error( ERROR_SIGNUP_NOT_MATCHING_CAPTCHA, ERROR );
15+ }
16+}
17+
18 if( count( $f_files ) > 0 && is_blank( $f_text ) && helper_duration_to_minutes( $f_duration ) == 0 ) {
19 $t_payload = array(
20 '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 @@
1--- a/bugnote_add_inc.php 2018-02-10 21:29:27.000000000 +0100
2+++ b/bugnote_add_inc.php 2018-03-03 15:14:27.332428557 +0100
3@@ -119,6 +119,49 @@
4 <textarea name="bugnote_text" id="bugnote_text" class="<?php echo $t_bugnote_class ?>" rows="7"></textarea>
5 </td>
6 </tr>
7+<?php
8+ # captcha image requires GD library and related option to ON
9+ if( current_user_is_anonymous() && get_gd_version() > 0 ) {
10+ $t_securimage_path = 'vendor/dapphp/securimage';
11+ $t_securimage_show = $t_securimage_path . '/securimage_show.php';
12+ $t_securimage_play = $t_securimage_path . '/securimage_play.swf?'
13+ . http_build_query( array(
14+ 'audio_file' => $t_securimage_path . '/securimage_play.php',
15+ 'bgColor1=' => '#fff',
16+ 'bgColor2=' => '#fff',
17+ 'iconColor=' => '#777',
18+ 'borderWidth=' => 1,
19+ 'borderColor=' => '#000',
20+ ) );
21+?>
22+ <tr>
23+ <th class="category">CAPTCHA</th>
24+ <td>
25+
26+ <label for="captcha-field" class="block clearfix">
27+ <strong><?php echo lang_get( 'signup_captcha_request_label' ); ?></strong>
28+ </label>
29+ <span id="captcha-input" class="input">
30+ <?php print_captcha_input( 'captcha' ); ?>
31+
32+ <span id="captcha-image" class="captcha-image" style="padding-right:3px;">
33+ <img src="<?php echo $t_securimage_show; ?>" alt="visual captcha" />
34+ <ul id="captcha-refresh"><li><a href="#"><?php
35+ echo lang_get( 'signup_captcha_refresh' );
36+ ?></a></li></ul>
37+ </span>
38+
39+ <object type="application/x-shockwave-flash" width="19" height="19"
40+ data="<?php echo $t_securimage_play; ?>">
41+ <param name="movie" value="<?php echo $t_securimage_play; ?>" />
42+ </object>
43+ </span>
44+ </td>
45+ </tr>
46+<?php
47+ }
48+?>
49+
50
51 <?php
52 if( config_get( 'time_tracking_enabled' ) ) {
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/default.nix b/flakes/mypackages/pkgs/webapps/mantisbt_2/default.nix
new file mode 100644
index 0000000..466595d
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/default.nix
@@ -0,0 +1,44 @@
1{ mantis_config ? "/etc/mantisbt/config_inc.php", stdenv, fetchurl, lib, callPackage}:
2let
3 pluginNames = [ "slack" "source-integration" ];
4 allPlugins = lib.attrsets.genAttrs pluginNames
5 (name: callPackage (./plugins + "/${name}") {});
6 toPassthru = pkg: plugins: {
7 inherit plugins allPlugins;
8 pluginNames = map (n: n.pluginName) plugins;
9 withPlugins = withPlugins pkg;
10 };
11 withPlugins = pkg: toPlugins:
12 let
13 plugins = toPlugins allPlugins;
14 toInstallPlugin = n:
15 if builtins.hasAttr "selector" n then
16 "ln -sf ${n}/${n.selector} $out/plugins/"
17 else
18 "ln -sf ${n} $out/plugins/${n.pluginName}";
19 newMantisbt = pkg.overrideAttrs(old: {
20 installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins);
21 passthru = toPassthru newMantisbt (pkg.plugins ++ plugins);
22 });
23 in newMantisbt;
24 package = stdenv.mkDerivation rec {
25 name = "mantisbt-${version}";
26 version = "2.21.0";
27 src = fetchurl {
28 url = "https://downloads.sourceforge.net/project/mantisbt/mantis-stable/${version}/${name}.tar.gz";
29 sha256 = "13lx569dp1gibq5daqp7dj6gsqic85rrix1s7xkp60gwpzk8wiw5";
30 };
31 patches = [
32 ./bug_report.php.diff
33 ./bug_report_page.php.diff
34 ./bugnote_add.php.diff
35 ./bugnote_add_inc.php.diff
36 ];
37 installPhase = ''
38 cp -a . $out
39 ln -s ${mantis_config} $out/config/config_inc.php
40 '';
41
42 passthru = toPassthru package [];
43 };
44in package
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/slack/default.nix b/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/slack/default.nix
new file mode 100644
index 0000000..61ed15f
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/slack/default.nix
@@ -0,0 +1,18 @@
1{ stdenv, fetchFromGitHub }:
2stdenv.mkDerivation rec {
3 passthru = {
4 pluginName = "Slack";
5 };
6 version = "9286d2e-master";
7 name = "mantisbt-plugin-slack-${version}";
8 src = fetchFromGitHub {
9 owner = "mantisbt-plugins";
10 repo = "Slack";
11 rev = "9286d2eeeb8a986ed949e378711fef5f0bf182dc";
12 sha256 = "0nn0v4jc967giilkzrppi5svd04m2hnals75xxp0iabcdjnih0mn";
13 };
14 installPhase = ''
15 sed -i -e "s/return '@' . \\\$username;/return \\\$username;/" Slack.php
16 cp -a . $out
17 '';
18}
diff --git a/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/Source.API.php.diff b/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/Source.API.php.diff
new file mode 100644
index 0000000..c355144
--- /dev/null
+++ b/flakes/mypackages/pkgs/webapps/mantisbt_2/plugins/source-integration/Source.API.php.diff
@@ -0,0 +1,12 @@
1--- b/Source/Source.API.php 2017-09-18 00:50:32.000000000 +0200
2+++ a/Source/Source.API.php 2018-03-04 19:00:25.578889039 +0100
3@@ -452,6 +452,9 @@
4 # Allow other plugins to post-process commit data
5 event_signal( 'EVENT_SOURCE_COMMITS', array( $p_changesets ) );
6 event_signal( 'EVENT_SOURCE_FIXED', array( $t_fixed_bugs ) );
7+ foreach( $t_fixed_bugs as $t_bug_id => $t_changeset ) {
8+ event_signal( 'EVENT_BUG_ACTION', array('RESOLVE', $t_bug_id) );
9+ }
10 }
11
12 /**
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 @@
1{ stdenv, fetchFromGitHub }:
2stdenv.mkDerivation rec {
3 version = "v2.2.0";
4 name = "mantisbt-plugin-source-integration-${version}";
5 src = fetchFromGitHub {
6 owner = "mantisbt-plugins";
7 repo = "source-integration";
8 rev = "44fc9e2e770aff4f40f56833f26a86ce0e2deb76";
9 sha256 = "0gcm6kqqijnv303sk59zn27adwx5vkr545mwzyaq2nrpxnkwdy5b";
10 };
11 patches = [
12 ./Source.API.php.diff
13 ];
14 installPhase = ''
15 mkdir $out
16 cp -a Source* $out/
17 '';
18 passthru = {
19 pluginName = "source-integration";
20 selector = "Source*";
21 };
22}
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 @@
1{ buildApp, nextcloudVersion }:
2let
3 audioplayer_3_4_0 = buildApp rec {
4 appName = "audioplayer";
5 version = "3.4.0";
6 url = "https://github.com/Rello/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
7 sha256 = "sha256-pog9cll02+AbYHG/jiUztO9odqu7PSEWBUieK32Eqf4=";
8 };
9 versions = {
10 "25" = audioplayer_3_4_0;
11 "26" = audioplayer_3_4_0;
12 "27" = audioplayer_3_4_0;
13 };
14in
15 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 bookmarks_12_1_0 = buildApp rec {
4 appName = "bookmarks";
5 version = "12.1.0";
6 url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
7 sha256 = "sha256-NVyaVeg/UPgFaW/iCZiJkw1l5Vqc+S/4FMfFhHCBUTo=";
8 };
9 bookmarks_13_0_1 = buildApp rec {
10 appName = "bookmarks";
11 version = "13.0.1";
12 url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
13 sha256 = "sha256-7Gx8e8C2dDkB/39eAGKOLrP3YkVbGkfPKpQBeCaV/cE=";
14 };
15 versions = {
16 "25" = bookmarks_12_1_0;
17 "26" = bookmarks_13_0_1;
18 "27" = bookmarks_13_0_1;
19 };
20in
21 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 calendar_4_4_4 = buildApp rec {
4 appName = "calendar";
5 version = "4.4.4";
6 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
7 sha256 = "sha256-8UeHOpgbUf2oHHOvLN58v68QvyDYQXkSjsVKn6UGrGU=";
8 };
9 versions = {
10 "25" = calendar_4_4_4;
11 "26" = calendar_4_4_4;
12 "27" = calendar_4_4_4;
13 };
14in
15 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 carnet_0_25_2 = buildApp rec {
4 appName = "carnet";
5 version = "0.25.2";
6 url = "https://github.com/PhieF/CarnetNextcloud/releases/download/v${version}/${appName}-nc-v${version}.tar.gz";
7 sha256 = "sha256-HArD+M6UA9BhSsrlpp/gsKWkUTWAoNHl/gr0S3AlKzg=";
8 };
9 versions = {
10 "25" = carnet_0_25_2;
11 "26" = carnet_0_25_2;
12 "27" = carnet_0_25_2;
13 };
14in
15 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 contacts_5_3_2 = buildApp rec {
4 appName = "contacts";
5 version = "5.3.2";
6 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
7 sha256 = "sha256-1jQ+pyLBPU7I4wSPkmezJq7ukrQh8WPErG4J6Ps3LR4=";
8 };
9 versions = {
10 "25" = contacts_5_3_2;
11 "26" = contacts_5_3_2;
12 "27" = contacts_5_3_2;
13 };
14in
15 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 cookbook_0_10_2 = buildApp rec {
4 appName = "cookbook";
5 version = "0.10.2";
6 url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/Cookbook-${version}.tar.gz";
7 sha256 = "sha256-H7KVeISBnu0/4Q31ihhiXvRtkXz4yLGOAsAj5ERgeCM=";
8 };
9 versions = {
10 "25" = cookbook_0_10_2;
11 "26" = cookbook_0_10_2;
12 "27" = cookbook_0_10_2;
13 };
14in
15 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 deck_1_8_5 = buildApp rec {
4 appName = "deck";
5 version = "1.8.5";
6 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
7 sha256 = "sha256-KsSSl9orqMEKJlBftHwCi/dh+aMCxZqjS7kPT0uDZlE=";
8 };
9 deck_1_9_2 = buildApp rec {
10 appName = "deck";
11 version = "1.9.2";
12 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
13 sha256 = "sha256-h1fmT4CCEFDZPBwFDIBLmFGJmO1Wt3a5nVXX5xCk0o0=";
14 };
15 deck_1_10_0 = buildApp rec {
16 appName = "deck";
17 version = "1.10.0";
18 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
19 sha256 = "sha256-W0XVvhTQoCjoK7S2tEd7bvU0MTWtqYt7QiB9H1p1UP8=";
20 };
21 versions = {
22 "25" = deck_1_8_5;
23 "26" = deck_1_9_2;
24 "27" = deck_1_10_0;
25 };
26in
27 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 otherConfig = {
4 mimetypealiases = {
5 "application/x-drawio" = "drawio";
6 };
7 mimetypemapping = {
8 "drawio" = ["application/x-drawio"];
9 };
10 };
11 drawio_2_1_2 = buildApp rec {
12 appName = "drawio";
13 version = "2.1.2";
14 url = "https://github.com/jgraph/drawio-nextcloud/releases/download/v${version}/${appName}-v${version}.tar.gz";
15 sha256 = "sha256-5BrEnS2cMk/vwkAr1lXKtfocqReZAj1+pbDqmi/uG0A=";
16 inherit otherConfig;
17 };
18 versions = {
19 "25" = drawio_2_1_2;
20 "26" = drawio_2_1_2;
21 "27" = drawio_2_1_2;
22 };
23in
24 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 external_5_0_2 = buildApp rec {
4 appName = "external";
5 version = "5.0.2";
6 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
7 sha256 = "sha256-Bkk9X1tVonKsiA3YlKux2y8K7HdJv4qM/eJ9TP+i17I=";
8 };
9 external_5_1_0 = buildApp rec {
10 appName = "external";
11 version = "5.1.0";
12 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
13 sha256 = "sha256-EMKWSXufw4FMyaN2f37yifrpUm6QBqqpPPFmvLvYYmY=";
14 };
15 external_5_2_0 = buildApp rec {
16 appName = "external";
17 version = "5.2.0";
18 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
19 sha256 = "sha256-XqeJCWS8mncS7CfrnXdhtzdgkFTib/RnursJ/AqyvD8=";
20 };
21 versions = {
22 "25" = external_5_0_2;
23 "26" = external_5_1_0;
24 "27" = external_5_2_0;
25 };
26in
27 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 extract_1_3_6 = buildApp rec {
4 appName = "extract";
5 version = "1.3.6";
6 url = "https://github.com/PaulLereverend/NextcloudExtract/releases/download/${version}/${appName}.tar.gz";
7 sha256 = "sha256-y1NacOWnCd/f5sOeEOLeZrWnqwi8q/XezOrhT7AzV/o=";
8 };
9 versions = {
10 "25" = extract_1_3_6;
11 "26" = extract_1_3_6;
12 "27" = extract_1_3_6;
13 };
14in
15 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 files_markdown_2_4_1 = buildApp rec {
4 appName = "files_markdown";
5 version = "2.4.1";
6 url = "https://github.com/icewind1991/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
7 sha256 = "sha256-6A9IMfRbKcF1+et7pzFF4zlZDmegx562cnyYsOFsVzU=";
8 };
9 versions = {
10 "25" = files_markdown_2_4_1;
11 "26" = files_markdown_2_4_1;
12 "27" = files_markdown_2_4_1;
13 };
14in
15 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 files_mindmap_0_0_28 = buildApp rec {
4 appName = "files_mindmap";
5 version = "0.0.28";
6 url = "https://github.com/ACTom/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
7 sha256 = "sha256-VlzqstlsdinaqkbK32NvS1oFoQcFasJGHSlcKxdQwIM=";
8 };
9 versions = {
10 "25" = files_mindmap_0_0_28;
11 "26" = files_mindmap_0_0_28;
12 "27" = files_mindmap_0_0_28;
13 };
14in
15 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 files_readmemd_2_0_0 = buildApp rec {
4 appName = "files_readmemd";
5 version = "2.0.0";
6 url = "https://github.com/mamatt/files_readmemd/releases/download/V${version}/${appName}.tar.gz";
7 sha256 = "sha256-vUoSK+b4gj51eJcocrXINO/eFKPRZQoj0q6l0gVBqgw=";
8 };
9 versions = {
10 "25" = files_readmemd_2_0_0;
11 "26" = files_readmemd_2_0_0;
12 };
13in
14 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 flowupload_1_1_3 = buildApp rec {
4 appName = "flowupload";
5 version = "1.1.3";
6 url = "https://github.com/e-alfred/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
7 sha256 = "0d1xvimd4hzd0jpvv1h89zfqv3ajlrrm1xdbggvjhk9bllwqgxng";
8 };
9 versions = {
10 "22" = flowupload_1_1_3;
11 "23" = flowupload_1_1_3;
12 };
13in
14 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 gpxedit_0_0_14 = buildApp rec {
4 appName = "gpxedit";
5 version = "0.0.14";
6 url = "https://gitlab.com/eneiluj/gpxedit-oc/wikis/uploads/5b184c24f9e767ad19a84e177a9b473c/${appName}-${version}.tar.gz";
7 sha256 = "1kgpcxps73l83krrjxdzh4vzacja4m3vwidf9kidgqq505cgzq90";
8 otherConfig = {
9 mimetypealiases = {
10 "application/gpx+xml" = "gpx";
11 };
12 mimetypemapping = {
13 "gpx" = ["application/gpx+xml"];
14 };
15 };
16 };
17 versions = {
18 "22" = gpxedit_0_0_14;
19 "23" = gpxedit_0_0_14;
20 };
21in
22 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 otherConfig = {
4 mimetypealiases = {
5 "application/gpx+xml" = "gpx";
6 };
7 mimetypemapping = {
8 "gpx" = ["application/gpx+xml"];
9 };
10 };
11 gpxpod_5_0_10 = buildApp rec {
12 appName = "gpxpod";
13 version = "5.0.10";
14 url = "https://github.com/julien-nc/gpxpod/releases/download/v${version}/${appName}-${version}.tar.gz";
15 sha256 = "sha256-Ylhl9jdOxG+Qfk5zgNO8FwOtAzrjGHS66y59qmorXPU=";
16 inherit otherConfig;
17 };
18 gpxpod_5_0_12 = buildApp rec {
19 appName = "gpxpod";
20 version = "5.0.12";
21 url = "https://github.com/julien-nc/gpxpod/releases/download/v${version}/${appName}-${version}.tar.gz";
22 sha256 = "sha256-uhz6AC8opDQkFQDpG4u8H4vkFtzbFAZvb8r32QHj/8I=";
23 inherit otherConfig;
24 };
25 versions = {
26 "25" = gpxpod_5_0_10;
27 "26" = gpxpod_5_0_12;
28 "27" = gpxpod_5_0_12;
29 };
30in
31 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 groupfolders_13_1_5 = buildApp rec {
4 appName = "groupfolders";
5 version = "13.1.5";
6 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
7 sha256 = "sha256-1yf/uSN8TRsYvK3m2pxGaXo9xxHNrI/NjyWJ8rLPQfg=";
8 };
9 groupfolders_14_0_4 = buildApp rec {
10 appName = "groupfolders";
11 version = "14.0.4";
12 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
13 sha256 = "sha256-QzlD8dLI6T7Sex75ZsO2F40nTrg2Ig6tHTG8cslnNME=";
14 };
15 groupfolders_15_0_2 = buildApp rec {
16 appName = "groupfolders";
17 version = "15.0.2";
18 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
19 sha256 = "sha256-NsTZhmY1XBKHn/1IcIp2Al7BwJzE2xoBzgyBXnmuWls=";
20 };
21 versions = {
22 "25" = groupfolders_13_1_5;
23 "26" = groupfolders_14_0_4;
24 "27" = groupfolders_15_0_2;
25 };
26in
27 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 impersonate_1_12_1 = buildApp rec {
4 appName = "impersonate";
5 version = "1.12.1";
6 url = "https://github.com/nextcloud-releases/impersonate/releases/download/v${version}/${appName}-v${version}.tar.gz";
7 sha256 = "sha256-xhlWGbLm1CtW4BSa/yQhv05Kn2r1DZJDUoDXQOLpEeQ=";
8 };
9 impersonate_1_13_1 = buildApp rec {
10 appName = "impersonate";
11 version = "1.13.1";
12 url = "https://github.com/nextcloud-releases/impersonate/releases/download/v${version}/${appName}-v${version}.tar.gz";
13 sha256 = "sha256-+tFWW5wQnbHxbgGdnp2GAFzfXnrW+e3eECY4O6ZckCU=";
14 };
15 impersonate_1_14_0 = buildApp rec {
16 appName = "impersonate";
17 version = "1.14.0";
18 url = "https://github.com/nextcloud-releases/impersonate/releases/download/v${version}/${appName}-v${version}.tar.gz";
19 sha256 = "sha256-A1rGJJLaWhiNf9l0YUh6WOB+fKRBRDckE890hq5OB4k=";
20 };
21 versions = {
22 "25" = impersonate_1_12_1;
23 "26" = impersonate_1_13_1;
24 "27" = impersonate_1_14_0;
25 };
26in
27 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 integration_dropbox_2_0_1 = buildApp rec {
4 appName = "integration_dropbox";
5 version = "2.0.1";
6 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
7 sha256 = "sha256-RPCd8+/yKNlIGfEU+ITS8DBIxJDfc//8MGHaIjfYxdQ=";
8 };
9 versions = {
10 "27" = integration_dropbox_2_0_1;
11 };
12in
13 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 keeweb_0_6_13 = buildApp rec {
4 appName = "keeweb";
5 version = "0.6.13";
6 url = "https://github.com/jhass/nextcloud-keeweb/releases/download/v${version}/${appName}-${version}.tar.gz";
7 sha256 = "sha256-J9jFVXpmoeAjDI/crsXHVJvPvxCYaimWVuq473nLsNM=";
8 installPhase = ''
9 mkdir -p $out
10 cp -R . $out/
11 '';
12 otherConfig = {
13 mimetypemapping = {
14 "kdbx" = ["application/x-kdbx"];
15 };
16 };
17 };
18 versions = {
19 "25" = keeweb_0_6_13;
20 "26" = keeweb_0_6_13;
21 "27" = keeweb_0_6_13;
22 };
23in
24 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 maps_1_1_0 = buildApp rec {
4 appName = "maps";
5 version = "1.1.0";
6 url = "https://github.com/nextcloud/maps/releases/download/v${version}/${appName}-${version}.tar.gz";
7 sha256 = "sha256-Me/V+9wXZyq3UEVx9Nqim6pfPFJaALjKv9f7iUjill8=";
8 };
9 versions = {
10 "25" = maps_1_1_0;
11 "26" = maps_1_1_0;
12 "27" = maps_1_1_0;
13 };
14in
15 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 metadata_0_19_0 = buildApp rec {
4 appName = "metadata";
5 version = "0.19.0";
6 url = "https://github.com/gino0631/nextcloud-metadata/releases/download/v${version}/${appName}.tar.gz";
7 sha256 = "sha256-XfFxCwRFO0WnBPU4CIejNXySRQdguvzauu62bzUKD44=";
8 };
9 versions = {
10 "25" = metadata_0_19_0;
11 "26" = metadata_0_19_0;
12 "27" = metadata_0_19_0;
13 };
14in
15 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 music_1_8_4 = buildApp rec {
4 appName = "music";
5 version = "1.8.4";
6 url = "https://github.com/owncloud/music/releases/download/v${version}/${appName}_${version}_for_nextcloud.tar.gz";
7 sha256 = "sha256-WWXMpOyTRxykAVeUj/h6QP5ENqaMvTcPIqPQjhY68KA=";
8 };
9 versions = {
10 "25" = music_1_8_4;
11 "26" = music_1_8_4;
12 "27" = music_1_8_4;
13 };
14in
15 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 notes_4_8_1 = buildApp rec {
4 appName = "notes";
5 version = "4.8.1";
6 url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
7 sha256 = "sha256-BfH1W+7TWKZRuAAhKQEQtlv8ePTtJQvZQVMMu3zULR4=";
8 };
9 versions = {
10 "25" = notes_4_8_1;
11 "26" = notes_4_8_1;
12 "27" = notes_4_8_1;
13 };
14in
15 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 ocsms_2_2_0 = buildApp rec {
4 appName = "ocsms";
5 version = "2.2.0";
6 url = "https://github.com/nextcloud/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
7 sha256 = "1hjl11lxdflk4w0l8prcjr3jvmsm8njldbrmnqm7yhdy6qcfli28";
8 installPhase = ''
9 mkdir -p $out
10 cp -R . $out/
11 '';
12 };
13 versions = {
14 "18" = ocsms_2_2_0;
15 "19" = ocsms_2_2_0;
16 "20" = ocsms_2_2_0;
17 # Beware, 1.10.1 has a too wide range of versions and is not
18 # compatible with nextcloud > 20!
19 };
20in
21 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 onlyoffice_7_9_0 = buildApp rec {
4 appName = "onlyoffice";
5 version = "7.9.0";
6 url = "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v${version}/${appName}.tar.gz";
7 sha256 = "sha256-GN0edA/aVdOEDR0LF6PgG2vTcULaG9RMj2gIAoxSVAM=";
8 };
9 onlyoffice_8_2_0 = buildApp rec {
10 appName = "onlyoffice";
11 version = "8.2.0";
12 url = "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v${version}/${appName}.tar.gz";
13 sha256 = "sha256-DfZKgpkpcogy9I3A3ru0V/WR5wYWBr+wrHe+mQJBPYk=";
14 };
15 versions = {
16 "25" = onlyoffice_7_9_0;
17 "26" = onlyoffice_7_9_0;
18 "27" = onlyoffice_8_2_0;
19 };
20in
21 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 passman_2_4_5 = buildApp rec {
4 appName = "passman";
5 version = "2.4.5";
6 url = "https://releases.passman.cc/${appName}_${version}.tar.gz";
7 sha256 = "sha256-wcRx1lUEHbJBJBBSKOScGljOgHM7Vpf69OymJoI8S2Y=";
8 };
9 passman_2_4_7 = buildApp rec {
10 appName = "passman";
11 version = "2.4.7";
12 url = "https://releases.passman.cc/${appName}_${version}.tar.gz";
13 sha256 = "sha256-CeNaN0cioVjcW6ILB//BIvmjQWcbvfK3m8jVQ8LGtyM=";
14 };
15 versions = {
16 "25" = passman_2_4_5;
17 "26" = passman_2_4_7;
18 "27" = passman_2_4_7;
19 };
20in
21 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 polls_5_2_0 = buildApp rec {
4 appName = "polls";
5 version = "5.2.0";
6 url = "https://github.com/nextcloud/polls/releases/download/v${version}/${appName}.tar.gz";
7 sha256 = "sha256-45YNcSeFG9v3mfk7eLbDiy6hFgmfePY0j86JiVS0k14=";
8 };
9 versions = {
10 "25" = polls_5_2_0;
11 "26" = polls_5_2_0;
12 "27" = polls_5_2_0;
13 };
14in
15 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 side_menu_3_10_3 = buildApp rec {
4 appName = "side_menu";
5 version = "3.10.3";
6 url = "https://gitnet.fr/attachments/9c9be610-5d3b-414d-a523-396c237c15ef";
7 filename = "${appName}-${version}.tar.gz";
8 sha256 = "sha256-WKbc6Ln6v3LYyRzwy0xAOmXilbqrWGS8XGWIT+TajdM=";
9 };
10 versions = {
11 "25" = side_menu_3_10_3;
12 "26" = side_menu_3_10_3;
13 "27" = side_menu_3_10_3;
14 };
15in
16 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 social_0_6_1 = buildApp rec {
4 appName = "social";
5 version = "0.6.1";
6 url = "https://github.com/nextcloud-releases/social/releases/download/v${version}/${appName}-v${version}.tar.gz";
7 sha256 = "sha256-5mww31ibwgnSiTuTaKo5MngbhPIw8lwLt1tkQySmerY=";
8 };
9 versions = {
10 "26" = social_0_6_1;
11 "27" = social_0_6_1;
12 };
13in
14 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 spreed_15_0_7 = buildApp rec {
4 appName = "spreed";
5 version = "15.0.7";
6 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
7 sha256 = "sha256-J9udO7qlRL+TDwTPTbBpYeZLUi4oco42LoqYoHJbIyE=";
8 };
9 spreed_16_0_5 = buildApp rec {
10 appName = "spreed";
11 version = "16.0.5";
12 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
13 sha256 = "sha256-tTDnWqNkP6fMSdCP1c0vPh8f0K7sTFBvRwws5Gln9Mg=";
14 };
15 spreed_17_0_3 = buildApp rec {
16 appName = "spreed";
17 version = "17.0.3";
18 url = "https://github.com/nextcloud-releases/${appName}/releases/download/v${version}/${appName}-v${version}.tar.gz";
19 sha256 = "sha256-vb08DI+q+5f87zz2UguE1y6b0NV2EoICYpaKUGmyF5w=";
20 };
21 versions = {
22 "25" = spreed_15_0_7;
23 "26" = spreed_16_0_5;
24 "27" = spreed_17_0_3;
25 };
26in
27 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 talk_matterbridge_1_26_0 = buildApp rec {
4 appName = "talk_matterbridge";
5 version = "1.26.0";
6 url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
7 sha256 = "sha256-gD5lfLWBjWOiy2ULf31ngQVIQbMZj3iwu3zuVrEDSks=";
8 };
9 versions = {
10 "25" = talk_matterbridge_1_26_0;
11 "26" = talk_matterbridge_1_26_0;
12 };
13in
14 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 @@
1{ buildApp, nextcloudVersion }:
2let
3 tasks_0_15_0 = buildApp rec {
4 appName = "tasks";
5 version = "0.15.0";
6 url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
7 sha256 = "sha256-nizJUFByK78FZ6KPJ4zfOU5Z9ClAxhwgQ7d+X5TGnM8=";
8 };
9 versions = {
10 "25" = tasks_0_15_0;
11 "26" = tasks_0_15_0;
12 "27" = tasks_0_15_0;
13 };
14in
15 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 @@
1{ nextcloudVersion, otherConfig ? {}, lib, stdenv, callPackage, fetchzip, fetchurl, postInstall ? null }:
2let
3 shasumsAndVersion = {
4 "25" = { sum = "sha256-alvh0fWESSS5KbfiKI1gaoahisDWnfT/bUhsSEEXfQI="; fullVersion = "25.0.10"; }; # php 7.4 - 8.2
5 "26" = { sum = "sha256-nhq0aAY4T1hUZdKJY66ZSlirCSgPQet8YJpciwJw1b4="; fullVersion = "26.0.5"; }; # php 8.0 - 8.2
6 "27" = { sum = "sha256-ei3OpDqjuPswM0fv2kxvN3M8yhE8juFt2fDl+2jHIS8="; fullVersion = "27.0.2"; }; # php 8.0 - 8.2
7 };
8 appNames = [
9 "audioplayer" "bookmarks" "calendar" "carnet"
10 "contacts" "cookbook" "deck" "external" "extract" "files_markdown" "files_mindmap"
11 "files_readmemd" "flowupload" "gpxedit" "gpxpod" "groupfolders" "impersonate"
12 "keeweb" "maps" "metadata" "music" "notes" "ocsms" "onlyoffice" "passman" "polls"
13 "social" "spreed" "talk_matterbridge" "tasks" "drawio" "side_menu"
14 "integration_dropbox"
15 ];
16 toApp = name: callPackage (./apps + "/${name}.nix") { inherit buildApp nextcloudVersion; };
17 allSupportedApps = lib.mapAttrs (n: v: v.value) (lib.filterAttrs (n: v: v.success) (lib.genAttrs appNames (name: builtins.tryEval (toApp name))));
18 allApps = lib.genAttrs appNames toApp;
19 buildApp = { appName, version, filename ? null, url, sha256, installHook ? (n: ""), otherConfig ? {}, installPhase ? "mkdir -p $out && cp -R . $out/" }:
20 stdenv.mkDerivation rec {
21 name = "nextcloud-app-${appName}-${version}";
22 inherit version;
23 phases = "unpackPhase installPhase";
24 inherit installPhase;
25 src = fetchurl ({ inherit url sha256; } // lib.optionalAttrs (filename != null) { name = filename; });
26 passthru = {
27 inherit appName otherConfig installHook;
28 };
29 };
30 toPassthru = pkg: apps: otherConfig: {
31 inherit apps otherConfig allApps allSupportedApps buildApp;
32 withApps = withApps pkg;
33 };
34 withApps = pkg: toApps:
35 let
36 apps = toApps allApps;
37 toInstallApp = n: ''
38 if [ -e $out/apps/${n.appName} ]; then
39 echo "${n.appName} already exists"
40 false
41 fi
42 ln -sf ${n} $out/apps/${n.appName}
43 '' + (n.installHook n);
44 zipped = lib.attrsets.zipAttrs ([pkg.otherConfig or {}] ++ map (v: v.otherConfig) apps);
45 appConfigs = with lib.attrsets; with lib.lists; {
46 mimetypealiases = foldr (h: prev: prev // h) {} (zipped.mimetypealiases or []);
47 mimetypemapping = mapAttrs (_: v: unique (flatten v)) (zipAttrs (zipped.mimetypemapping or []));
48 };
49 newNextcloud = pkg.overrideAttrs(old: {
50 installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallApp apps);
51 passthru = toPassthru newNextcloud (pkg.apps ++ apps) appConfigs;
52 });
53 in newNextcloud;
54 package = stdenv.mkDerivation rec {
55 name = "nextcloud-${version}";
56 version = shasumsAndVersion."${builtins.toString nextcloudVersion}".fullVersion;
57
58 src = fetchurl {
59 url = "https://download.nextcloud.com/server/releases/${name}.tar.bz2";
60 sha256 = shasumsAndVersion."${builtins.toString nextcloudVersion}".sum;
61 };
62
63 inherit postInstall;
64 installPhase = ''
65 mkdir -p $out/
66 cp -R . $out/
67 sed -i -e "/'appDirsWithDifferentOwner'/d" $out/apps/settings/lib/Controller/CheckSetupController.php
68 mv $out/config $out/config.example
69 runHook postInstall
70 '';
71
72 noAuditTmpdir = true;
73 dontPatchELF = true;
74 dontStrip = true;
75 passthru = toPassthru package [] otherConfig;
76 meta = {
77 description = "Sharing solution for files, calendars, contacts and more";
78 homepage = https://nextcloud.com;
79 maintainers = with lib.maintainers; [ schneefux bachp globin fpletz ];
80 license = lib.licenses.agpl3Plus;
81 platforms = with lib.platforms; unix;
82 };
83 };
84in 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 @@
1{ stdenv, fetchurl, callPackage
2, varDir ? "/var/lib/phpbb"
3}:
4let
5 allExts = {
6 alfredoramos.markdown = callPackage ./extensions/markdown.nix {};
7 davidiq.mailinglist = callPackage ./extensions/mailinglist.nix {};
8 dmzx.mchat = callPackage ./extensions/mchat.nix {};
9 empteintesduweb.monitoranswers = callPackage ./extensions/monitoranswers.nix {};
10 lr94.autosubscribe = callPackage ./extensions/autosubscribe.nix {};
11 phpbbmodders.adduser = callPackage ./extensions/adduser.nix {};
12 };
13 allLangs = {
14 fr = callPackage ./langs/fr.nix {};
15 };
16 toPassthru = pkg: {
17 inherit allLangs allExts;
18 withLangs = withLangs pkg;
19 withExts = withExts pkg;
20 };
21 withExts = pkg: toExts:
22 let
23 exts = toExts allExts;
24 toInstallExt = ext: "cp -r ${ext}/* $out/ext/";
25 newPhpBB = pkg.overrideAttrs(old: {
26 installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallExt exts);
27 passthru = toPassthru newPhpBB;
28 });
29 in newPhpBB;
30 withLangs = pkg: toLangs:
31 let
32 langs = toLangs allLangs;
33 toInstallLang = lang: "cp -r ${lang}/*/ $out";
34 newPhpBB = pkg.overrideAttrs(old: {
35 installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallLang langs);
36 passthru = toPassthru newPhpBB;
37 });
38 in newPhpBB;
39 phpBB = stdenv.mkDerivation rec {
40 pname = "phpBB";
41 version = "3.3.0";
42
43 src = fetchurl {
44 url = "https://download.phpbb.com/pub/release/3.3/${version}/${pname}-${version}.tar.bz2";
45 sha256 = "a6234ac9dcf9086c025ece29a0a235f997a92bb9a994eff0ddcf8917e841262f";
46 };
47
48 phases = [ "unpackPhase" "installPhase" ];
49
50 installPhase = ''
51 cp -a . $out
52 mkdir -p $out/vars
53 mv $out/{cache,files,store,config.php} $out/vars
54 ln -s ${varDir}/{cache,files,store,config.php} $out/
55 echo -e "core:\n allow_install_dir: true" >> $out/config/production/config.yml
56 '';
57
58 passthru = toPassthru phpBB;
59 };
60in
61 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 @@
1{ stdenv, fetchurl, unzip }:
2stdenv.mkDerivation rec {
3 pname = "phpBB-extension-adduser";
4 version = "1.0.4";
5 src = fetchurl {
6 # https://www.phpbb.com/customise/db/extension/acp_add_user_2
7 url = "https://www.phpbb.com/customise/db/download/141601";
8 sha256 = "13m4anib74cinnv1ap3b1ncb8cxm3mzhhmlqhbrr9mlrqmwf4zg2";
9 };
10
11 buildInputs = [ unzip ];
12 phases = [ "unpackPhase" "installPhase" ];
13 unpackPhase = ''
14 mkdir src
15 cd src
16 unzip $src
17 '';
18 installPhase = ''
19 cp -a . $out
20 cp -a $out/phpbbmodders/adduser/language/en $out/phpbbmodders/adduser/language/fr
21 '';
22}
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 @@
1{ stdenv, fetchurl, unzip }:
2stdenv.mkDerivation rec {
3 pname = "phpBB-extension-autosubscribe";
4 version = "1.1.0";
5 src = fetchurl {
6 # https://www.phpbb.com/customise/db/extension/autosubscribe
7 url = "https://www.phpbb.com/customise/db/download/146556";
8 sha256 = "0dsay463g4impw86w1nv307nslc195fkgkqmihfn5kc0hya0giv0";
9 };
10
11 buildInputs = [ unzip ];
12 phases = [ "unpackPhase" "installPhase" ];
13 unpackPhase = ''
14 mkdir src
15 cd src
16 unzip $src
17 '';
18 installPhase = "cp -a . $out";
19}
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 @@
1{ stdenv, fetchurl, unzip }:
2stdenv.mkDerivation rec {
3 pname = "phpBB-extension-MailingList";
4 version = "2.0.0";
5 src = fetchurl {
6 url = "https://github.com/DavidIQ/MailingList/archive/${version}.tar.gz";
7 sha256 = "1ddg8bci85jwmvyakcwdn4yzqwz1rgy7ljf4nmfk9p2kvx2nhj62";
8 };
9
10 phases = [ "unpackPhase" "installPhase" ];
11 installPhase = ''
12 mkdir -p $out/davidiq/mailinglist
13 cp -a . $out/davidiq/mailinglist
14 # delete last two lines which contain EMAIL_SIG
15 sed -i -n -e :a -e '1,2!{P;N;D;};N;ba' $out/davidiq/mailinglist/language/en/email/*
16 '';
17}
18
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 @@
1{ stdenv, fetchurl, unzip }:
2stdenv.mkDerivation rec {
3 pname = "phpBB-extension-markdown";
4 version = "1.2.0";
5 src = fetchurl {
6 # https://www.phpbb.com/customise/db/extension/markdown
7 name = "alfredoramos_markdown_${version}.zip";
8 url = "https://www.phpbb.com/customise/db/download/173626";
9 sha256 = "0bmgi8qr6azaaz8xnz8dkyf147dyawqvqr93r01qbm9s8bfkpzqx";
10 };
11
12 buildInputs = [ unzip ];
13 phases = [ "unpackPhase" "installPhase" ];
14 unpackPhase = ''
15 mkdir src
16 cd src
17 unzip $src
18 '';
19 installPhase = "cp -a . $out";
20}
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 @@
1{ stdenv, fetchurl, unzip }:
2stdenv.mkDerivation rec {
3 pname = "phpBB-extension-mchat";
4 version = "2.1.3";
5 src = fetchurl {
6 # https://www.phpbb.com/customise/db/extension/mchat_extension
7 name = "dmzx_mchat_${version}.zip";
8 url = "https://www.phpbb.com/customise/db/download/168331";
9 sha256 = "0mcka02wamn899vg64m1c5d5k6f4qml18cshhzfvccrdc7a0m5p1";
10 };
11
12 buildInputs = [ unzip ];
13 phases = [ "unpackPhase" "installPhase" ];
14 unpackPhase = ''
15 mkdir src
16 cd src
17 unzip $src
18 '';
19 installPhase = "cp -a . $out";
20}
21
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 @@
1{ stdenv, fetchurl, unzip }:
2stdenv.mkDerivation rec {
3 pname = "phpBB-extension-monitoranswers";
4 version = "1.0.0";
5 src = fetchurl {
6 # http://forums.phpbb-fr.com/extensions-developpement-en-cours/sujet208410.html
7 url = "https://www.empreintesduweb.com/dl/extension_empreintesduweb_monitoranswers_v100.zip";
8 sha256 = "0g5khzz7brkra9rnnjh8vsv11h8vf36pcw53b4wrkcjb66bfm20s";
9 };
10
11 buildInputs = [ unzip ];
12 phases = [ "unpackPhase" "installPhase" ];
13 unpackPhase = ''
14 mkdir src
15 cd src
16 unzip $src
17 '';
18 installPhase = "cp -a . $out";
19}
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 @@
1{ stdenv, fetchurl }:
2stdenv.mkDerivation rec {
3 pname = "phpBB-language-fr";
4 version = "v4.0.0";
5 src = fetchurl {
6 url = "https://github.com/milescellar/phpbb-language-fr/archive/${version}.tar.gz";
7 sha256 = "0pkw55pb8ka4ayn1861hwvjwzs8vkq04yaxrs7zm9c8lh2g7y8z0";
8 };
9
10 phases = [ "unpackPhase" "installPhase" ];
11 installPhase = "cp -a . $out";
12}
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 @@
1{ config ? "/etc/phpldapadmin/config.php", fetchurl, fetchFromGitHub, stdenv, optipng }:
2stdenv.mkDerivation rec {
3 version = "1.2.5";
4 name = "phpldapadmin-${version}";
5 src = fetchFromGitHub {
6 owner = "leenooks";
7 repo = "phpLDAPadmin";
8 rev = "8f4ced96f9c63a09510a5bccb2189a8b92fb29ba";
9 sha256 = "1x6xc3xbvw3aj46i5ds06a8h6mfljxdv3argxrzz02l541ra6ni7";
10 };
11 patches = [
12 #./ldap-php5_5.patch
13 #./ldap-disable-mcrypt.patch
14 #./ldap-php7_2.patch
15 ./ldap-sort-in-templates.patch
16 ./ldap-align-button.patch
17 ./ldap-fix-password.patch
18 ];
19 buildInputs = [ optipng ];
20 buildPhase = ''
21 find -name '*.png' -exec optipng -quiet -force -fix {} \;
22 '';
23 installPhase = ''
24 cp -a . $out
25 ln -sf ${config} $out/config/config.php
26 '';
27}
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 @@
1--- a/htdocs/update_confirm.php 2012-10-01 08:54:14.000000000 +0200
2+++ b/htdocs/update_confirm.php 2018-06-06 15:47:44.122398888 +0200
3@@ -187,7 +187,7 @@
4
5 echo '</table>';
6
7- echo '<div style="text-align: center;">';
8+ echo '<div style="text-align: left;">';
9 echo '<br />';
10 // @todo cant use AJAX here, it affects file uploads.
11 printf('<input type="submit" value="%s" />',
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 @@
1diff --git a/htdocs/login.php b/htdocs/login.php
2index 48f9e2e..298b07d 100644
3--- a/htdocs/login.php
4+++ b/htdocs/login.php
5@@ -13,7 +13,7 @@ require './common.php';
6
7 $user = array();
8 $user['login'] = get_request('login');
9-$user['password'] = get_request('login_pass');
10+$user['password'] = get_request('login_pass','POST',false,null,false);
11
12 if ($user['login'] && ! strlen($user['password']))
13 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 @@
1diff -wbBur phpldapadmin-1.2.3.org/lib/TemplateRender.php phpldapadmin-1.2.3/lib/TemplateRender.php
2--- phpldapadmin-1.2.3.org/lib/TemplateRender.php 2012-10-01 10:54:14.000000000 +0400
3+++ phpldapadmin-1.2.3/lib/TemplateRender.php 2018-02-02 19:06:45.674760057 +0300
4@@ -321,6 +321,8 @@
5
6 $vals = array();
7
8+ asort($picklistvalues);
9+
10 foreach ($picklistvalues as $key => $values) {
11 $display = $args[3];
12
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 @@
1{ varDir ? "/var/lib/rompr", stdenv, fetchFromGitHub }:
2stdenv.mkDerivation ({
3 pname = "rompr";
4 version = "1.24";
5 src = fetchFromGitHub {
6 owner = "fatg3erman";
7 repo = "RompR";
8 rev = "0d8f597027ac71b320963fe3f33f461a136312ad";
9 sha256 = "13p3c4whhmvz1vvh9fva5gdx4xji288k108hjdi8b1yn506lzix2";
10 fetchSubmodules = true;
11 };
12 installPhase = ''
13 cp -a . $out
14 ln -sf ${varDir}/prefs $out/prefs
15 ln -sf ${varDir}/albumart $out/albumart
16 '';
17})
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 @@
1diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php
2index 0552b89c2..1b84e1b4e 100644
3--- a/program/include/rcmail_output_html.php
4+++ b/program/include/rcmail_output_html.php
5@@ -1013,13 +1013,13 @@ EOF;
6 // use minified file if exists (not in development mode)
7 if (!$this->devel_mode && !preg_match('/\.min\.' . $ext . '$/', $file)) {
8 $minified_file = substr($file, 0, strlen($ext) * -1) . 'min.' . $ext;
9- if ($fs = @filemtime($this->assets_dir . $minified_file)) {
10- return $minified_file . '?s=' . $fs;
11+ if ($fs = @md5_file($this->assets_dir . $minified_file)) {
12+ return $minified_file . '?s=' . substr($fs, 0, 6);
13 }
14 }
15
16- if ($fs = @filemtime($this->assets_dir . $file)) {
17- $file .= '?s=' . $fs;
18+ if ($fs = @md5_file($this->assets_dir . $file)) {
19+ $file .= '?s=' . substr($fs, 0, 6);
20 }
21
22 return $file;
23diff --git a/program/js/app.js b/program/js/app.js
24index 2094b7b7b..06fe96a80 100644
25--- a/program/js/app.js
26+++ b/program/js/app.js
27@@ -2277,6 +2277,9 @@ function rcube_webmail()
28 }
29
30 tree += '<span id="msgicn'+row.id+'" class="'+css_class+status_class+'" title="'+status_label+'"></span>';
31+ if (flags.mbox != this.env.mailbox) {
32+ tree += '<span style="color:#737677">' + flags.mbox + '&nbsp;<span>';
33+ }
34 row.className = row_class;
35
36 // build subject link
37diff --git a/program/localization/en_CA/labels.inc b/program/localization/en_CA/labels.inc
38index 03c1c8e11..8d67a49ac 100644
39--- a/program/localization/en_CA/labels.inc
40+++ b/program/localization/en_CA/labels.inc
41@@ -128,6 +128,7 @@ $labels['markunread'] = 'As unread';
42 $labels['markflagged'] = 'As flagged';
43 $labels['markunflagged'] = 'As unflagged';
44 $labels['moreactions'] = 'More actions...';
45+$labels['folders-allsubscribed'] = 'All subscribed folders';
46 $labels['folders-all'] = 'All folders';
47 $labels['more'] = 'More';
48 $labels['back'] = 'Back';
49@@ -184,6 +185,7 @@ $labels['namex'] = 'Name';
50 $labels['searchscope'] = 'Scope';
51 $labels['currentfolder'] = 'Current folder';
52 $labels['subfolders'] = 'This and subfolders';
53+$labels['allsubscribedfolders'] = 'All subscribed folders';
54 $labels['allfolders'] = 'All folders';
55 $labels['openinextwin'] = 'Open in new window';
56 $labels['emlsave'] = 'Download (.eml)';
57diff --git a/program/localization/en_GB/labels.inc b/program/localization/en_GB/labels.inc
58index a442965de..b5b4839e3 100644
59--- a/program/localization/en_GB/labels.inc
60+++ b/program/localization/en_GB/labels.inc
61@@ -135,6 +135,7 @@ $labels['moreactions'] = 'More actions...';
62 $labels['markallread'] = 'Mark all as read';
63 $labels['folders-cur'] = 'Selected folder only';
64 $labels['folders-sub'] = 'Selected folder and its subfolders';
65+$labels['folders-allsubscribed'] = 'All subscribed folders';
66 $labels['folders-all'] = 'All folders';
67 $labels['more'] = 'More';
68 $labels['back'] = 'Back';
69@@ -221,6 +222,7 @@ $labels['namex'] = 'Name';
70 $labels['searchscope'] = 'Scope';
71 $labels['currentfolder'] = 'Current folder';
72 $labels['subfolders'] = 'This and subfolders';
73+$labels['allsubscribedfolders'] = 'All subscribed folders';
74 $labels['allfolders'] = 'All folders';
75 $labels['searchinterval-1W'] = 'older than a week';
76 $labels['searchinterval-1M'] = 'older than a month';
77diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
78index 2e8ec8009..c7736557f 100644
79--- a/program/localization/en_US/labels.inc
80+++ b/program/localization/en_US/labels.inc
81@@ -158,6 +158,7 @@ $labels['moreactions'] = 'More actions...';
82 $labels['markallread'] = 'Mark all as read';
83 $labels['folders-cur'] = 'Selected folder only';
84 $labels['folders-sub'] = 'Selected folder and its subfolders';
85+$labels['folders-allsubscribed'] = 'All subscribed folders';
86 $labels['folders-all'] = 'All folders';
87 $labels['more'] = 'More';
88 $labels['back'] = 'Back';
89@@ -249,6 +250,7 @@ $labels['namex'] = 'Name';
90 $labels['searchscope'] = 'Scope';
91 $labels['currentfolder'] = 'Current folder';
92 $labels['subfolders'] = 'This and subfolders';
93+$labels['allsubscribedfolders'] = 'All subscribed folders';
94 $labels['allfolders'] = 'All folders';
95 $labels['searchinterval-1W'] = 'older than a week';
96 $labels['searchinterval-1M'] = 'older than a month';
97diff --git a/program/localization/fr_FR/labels.inc b/program/localization/fr_FR/labels.inc
98index 6db44f95c..ad83e15d8 100644
99--- a/program/localization/fr_FR/labels.inc
100+++ b/program/localization/fr_FR/labels.inc
101@@ -135,6 +135,7 @@ $labels['moreactions'] = 'Plus d’actions…';
102 $labels['markallread'] = 'Tout marquer comme lu';
103 $labels['folders-cur'] = 'Dossier sélectionné seulement';
104 $labels['folders-sub'] = 'Dossier sélectionné et ses sous-dossiers';
105+$labels['folders-allsubscribed'] = 'Tous les dossiers souscrits';
106 $labels['folders-all'] = 'Tous les dossiers';
107 $labels['more'] = 'Plus';
108 $labels['back'] = 'Retour';
109@@ -221,6 +222,7 @@ $labels['namex'] = 'Nom';
110 $labels['searchscope'] = 'Portée';
111 $labels['currentfolder'] = 'Répertoire actuel';
112 $labels['subfolders'] = 'Ceci et les sous-dossiers';
113+$labels['allsubscribedfolders'] = 'Tous les dossiers souscrits';
114 $labels['allfolders'] = 'Tous les dossiers';
115 $labels['searchinterval-1W'] = 'plus d’une semaine';
116 $labels['searchinterval-1M'] = 'plus d’un mois';
117diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
118index 8e0c642f6..ac79780e0 100644
119--- a/program/steps/mail/func.inc
120+++ b/program/steps/mail/func.inc
121@@ -110,8 +110,8 @@ if (empty($RCMAIL->action) || $RCMAIL->action == 'list') {
122 'copy', 'move', 'quota', 'replyall', 'replylist', 'stillsearching',
123 'flagged', 'unflagged', 'unread', 'deleted', 'replied', 'forwarded',
124 'priority', 'withattachment', 'fileuploaderror', 'mark', 'markallread',
125- 'folders-cur', 'folders-sub', 'folders-all', 'cancel', 'bounce', 'bouncemsg',
126- 'sendingmessage');
127+ 'folders-cur', 'folders-sub', 'folders-allsubscribed', 'folder-all',
128+ 'cancel', 'bounce', 'bouncemsg', 'sendingmessage');
129 }
130 }
131
132diff --git a/program/steps/mail/search.inc b/program/steps/mail/search.inc
133index f60528835..836a715b0 100644
134--- a/program/steps/mail/search.inc
135+++ b/program/steps/mail/search.inc
136@@ -86,7 +86,7 @@ else if (strlen(trim($str))) {
137 }
138
139 // save search modifiers for the current folder to user prefs
140- $mkey = $scope == 'all' ? '*' : $mbox;
141+ $mkey = ($scope == 'all' || $scope == 'allsubscribed') ? '*' : $mbox;
142 $search_mods = rcmail_search_mods();
143 $search_mods[$mkey] = array_fill_keys(array_keys($subject), 1);
144
145@@ -124,6 +124,10 @@ if (!empty($continue) && isset($_SESSION['search']) && $_SESSION['search_request
146 if ($search_str) {
147 // search all, current or subfolders folders
148 if ($scope == 'all') {
149+ $mboxes = $RCMAIL->storage->list_folders('', '*', 'mail', null, true);
150+ natcasesort($mboxes); // we want natural alphabetic sorting of folders in the result set
151+ }
152+ else if ($scope == 'allsubscribed') {
153 $mboxes = $RCMAIL->storage->list_folders_subscribed('', '*', 'mail', null, true);
154 natcasesort($mboxes); // we want natural alphabetic sorting of folders in the result set
155 }
156@@ -133,7 +137,7 @@ if ($search_str) {
157 array_unshift($mboxes, $mbox);
158 }
159
160- if ($scope != 'all') {
161+ if ($scope != 'all' && $scope != 'allsubscribed') {
162 // Remember current folder, it can change in meantime (plugins)
163 // but we need it to e.g. recognize Sent folder to handle From/To column later
164 $RCMAIL->output->set_env('mailbox', $mbox);
165@@ -194,7 +198,7 @@ else {
166 $count = 0;
167 $OUTPUT->show_message('searchnomatch', 'notice');
168 $OUTPUT->set_env('multifolder_listing', (bool)$result->multi);
169- if ($result->multi && $scope == 'all') {
170+ if ($result->multi && ($scope == 'all' || $scope == 'allsubscribed')) {
171 $OUTPUT->command('select_folder', '');
172 }
173 }
174diff --git a/skins/classic/templates/mail.html b/skins/classic/templates/mail.html
175index 666adf606..23d12a275 100644
176--- a/skins/classic/templates/mail.html
177+++ b/skins/classic/templates/mail.html
178@@ -106,6 +106,7 @@
179 <li><label class="comment"><roundcube:label name="searchscope" /></label></li>
180 <li><label><input type="radio" name="s_scope" value="base" id="s_scope_base" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="currentfolder" /></span></label></li>
181 <li><label><input type="radio" name="s_scope" value="sub" id="s_scope_sub" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="subfolders" /></span></label></li>
182+ <li><label><input type="radio" name="s_scope" value="allsubscribed" id="s_scope_allsubscribed" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="allsubscribedfolders" /></span></label></li>
183 <li><label><input type="radio" name="s_scope" value="all" id="s_scope_all" onclick="rcmail.set_searchscope(this.value)" /> <span><roundcube:label name="allfolders" /></span></label></li>
184 </ul>
185 </div>
186diff --git a/skins/elastic/templates/mail.html b/skins/elastic/templates/mail.html
187index 51dbfcd30..4c2281281 100644
188--- a/skins/elastic/templates/mail.html
189+++ b/skins/elastic/templates/mail.html
190@@ -77,6 +77,7 @@
191 <select name="s_scope" id="s_scope">
192 <option value="base"><roundcube:label name="currentfolder" /></option>
193 <option value="sub"><roundcube:label name="subfolders" /></option>
194+ <option value="allsubscribed"><roundcube:label name="allsubscribedfolders" /></option>
195 <option value="all"><roundcube:label name="allfolders" /></option>
196 </select>
197 </div>
198diff --git a/skins/larry/templates/mail.html b/skins/larry/templates/mail.html
199index 5ef0bc211..e0e8280ad 100644
200--- a/skins/larry/templates/mail.html
201+++ b/skins/larry/templates/mail.html
202@@ -56,6 +56,7 @@
203 <li role="separator" class="separator"><label><roundcube:label name="searchscope" /></label></li>
204 <li role="menuitem"><label><input type="radio" name="s_scope" value="base" id="s_scope_base" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="currentfolder" /></span></label></li>
205 <li role="menuitem"><label><input type="radio" name="s_scope" value="sub" id="s_scope_sub" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="subfolders" /></span></label></li>
206+ <li role="menuitem"><label><input type="radio" name="s_scope" value="allsubscribed" id="s_scope_allsubscribed" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="allsubscribedfolders" /></span></label></li>
207 <li role="menuitem"><label><input type="radio" name="s_scope" value="all" id="s_scope_all" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="allfolders" /></span></label></li>
208 </ul>
209 <div class="buttons"><a class="button" href="#" onclick="if (rcmail.command('search')) UI.show_popup('searchmenu',false)"><roundcube:label name="search" /></a></div>
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 @@
1{ varDir ? "/var/lib/roundcubemail"
2, roundcube_config ? "/etc/roundcube/config.php"
3, stdenv, fetchurl, jre, unzip, lib, callPackage }:
4let
5 defaultInstall = ''
6 mkdir -p $out
7 cp -R . $out/
8 cd $out
9 if [ -d skins -a -d skins/larry -a ! -d skins/elastic ]; then
10 ln -s larry skins/elastic
11 fi
12 '';
13 buildPlugin = { appName, version, url, sha256, installPhase ? defaultInstall }:
14 stdenv.mkDerivation rec {
15 name = "roundcube-${appName}-${version}";
16 inherit version;
17 phases = "unpackPhase installPhase";
18 inherit installPhase;
19 src = fetchurl { inherit url sha256; };
20 passthru.pluginName = appName;
21 };
22 skinNames = [];
23 allSkins = lib.attrsets.genAttrs skinNames
24 (name: callPackage (./skins + "/${name}") {});
25 pluginNames = [
26 "automatic_addressbook" "carddav" "contextmenu"
27 "contextmenu_folder" "html5_notifier" "ident_switch"
28 "message_highlight" "thunderbird_labels"
29 ];
30 allPlugins = lib.attrsets.genAttrs pluginNames
31 (name: callPackage (./plugins + "/${name}") { inherit buildPlugin; });
32 toPassthru = pkg: plugins: skins: {
33 inherit plugins skins allSkins allPlugins;
34 withSkins = withSkins pkg;
35 withPlugins = withPlugins pkg;
36 };
37 withPlugins = pkg: toPlugins:
38 let
39 plugins = toPlugins allPlugins;
40 toInstallPlugin = n: "ln -s ${n} $out/plugins/${n.pluginName}";
41 newRoundcube = pkg.overrideAttrs(old: {
42 installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins);
43 passthru = toPassthru newRoundcube (pkg.plugins ++ plugins) pkg.skins;
44 });
45 in newRoundcube;
46 withSkins = pkg: toSkins:
47 let
48 skins = toSkins allSkins;
49 toInstallSkin = n: "ln -s ${n} $out/skins/${n.skinName}";
50 newRoundcube = pkg.overrideAttrs(old: {
51 installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallSkin skins);
52 passthru = toPassthru newRoundcube pkg.plugins (pkg.skins ++ skins);
53 });
54 in newRoundcube;
55 shrinker = fetchurl {
56 url = "https://dl.google.com/closure-compiler/compiler-20200719.zip";
57 sha256 = "0j46y9ack2yq67naca6nfysbmyilwjlkl29dbswidf1lq09yhhj3";
58 };
59 package = stdenv.mkDerivation rec {
60 version = "1.4.4";
61 name = "roundcubemail-${version}";
62 src= fetchurl {
63 url = "https://github.com/roundcube/roundcubemail/releases/download/${version}/${name}-complete.tar.gz";
64 sha256 = "1my726p0wmsn21nbdsjx02h6hnbh8nidzipzdy0gk0qgda1j729b";
65 };
66 patches = [ ./add_all.patch ]; # This patch includes js modification which requires to re-run the jsshrink below
67 buildInputs = [ unzip jre ];
68 buildPhase = ''
69 mkdir -p /tmp
70 unzip -p "${shrinker}" "*.jar" > "/tmp/compiler.jar"
71 ./bin/jsshrink.sh
72 sed -i \
73 -e "s|RCUBE_INSTALL_PATH . 'temp.*|'${varDir}/cache';|" \
74 config/defaults.inc.php
75 sed -i \
76 -e "s|RCUBE_INSTALL_PATH . 'logs.*|'${varDir}/logs';|" \
77 config/defaults.inc.php
78 '';
79 installPhase = ''
80 cp -a . $out
81 ln -s ${roundcube_config} $out/config/config.inc.php
82 '';
83 passthru = toPassthru package [] [];
84 };
85in 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 @@
1{ buildPlugin }:
2buildPlugin rec {
3 appName = "automatic_addressbook";
4 version = "0.4.3";
5 url = "https://github.com/sblaisot/${appName}/archive/${version}.tar.gz";
6 sha256 = "0bx5qjzp3a3wc72fr295bvgsy5n15949c041hq76n6c7sqdn7inc";
7}
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 @@
1{ buildPlugin }:
2buildPlugin rec {
3 appName = "carddav";
4 version = "3.0.3";
5 url = "https://github.com/blind-coder/rcmcarddav/releases/download/v${version}/${appName}-${version}.tar.bz2";
6 sha256 = "0cf5rnqkhhag2vdy808zfpr4l5586fn43nvcia8ac1ha58azrxal";
7}
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 @@
1{ buildPlugin }:
2buildPlugin rec {
3 appName = "contextmenu";
4 version = "3.2";
5 url = "https://github.com/johndoh/roundcube-${appName}/archive/${version}.tar.gz";
6 sha256 = "1j7qns42bvgwav8d5n8g16iajyrhydd76hgil8625f3xyjbv4mx0";
7}
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 @@
1{ buildPlugin }:
2buildPlugin rec {
3 appName = "contextmenu_folder";
4 version = "1.3.3";
5 url = "https://github.com/random-cuber/${appName}/archive/${version}.tar.gz";
6 sha256 = "1ngfws1v8qrpa52rjh7kirc98alchk2vbqwra86h00agyjjlcc57";
7}
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 @@
1{ buildPlugin }:
2buildPlugin rec {
3 appName = "html5_notifier";
4 version = "v0.6.4";
5 url = "https://github.com/stremlau/${appName}/archive/${version}.tar.gz";
6 sha256 = "1w6xkffgxwbahi7acixdh5sgjvsjlfwdq942gkvc64byk8r3bhsj";
7}
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 @@
1{ buildPlugin }:
2buildPlugin rec {
3 appName = "ident_switch";
4 version = "4.2";
5 url = "https://bitbucket.org/BoresExpress/${appName}/get/${version}.tar.gz";
6 sha256 = "0rf2krjsnly4i0mzgsbx09xckr3p9a9dzxf8qq4lkyng1a7dvjkq";
7}
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 @@
1{ buildPlugin }:
2buildPlugin rec {
3 appName = "message_highlight";
4 version = "4.4";
5 url = "https://github.com/corbosman/${appName}/archive/${version}.tar.gz";
6 sha256 = "12c4x47y70xdl5pgm8csh5i4yiyhpi232lvjbixmca6di4lkhh9j";
7}
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 @@
1{ buildPlugin }:
2buildPlugin rec {
3 appName = "thunderbird_labels";
4 version = "v1.4.2";
5 url = "https://github.com/mike-kfed/roundcube-${appName}/archive/${version}.tar.gz";
6 sha256 = "00dqqlq6m8a6dwynp6gwfimc10anbs8kh0qdy8xvq2l06hk6jxyc";
7}
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 @@
1{ siteName ? "spip"
2, siteDir ? runCommand "empty" { preferLocalBuild = true; } "mkdir -p $out"
3, environment ? "prod"
4, ldap ? false
5, varDir ? "/var/lib/${siteName}_${environment}"
6, lib, fetchzip, runCommand, stdenv }:
7let
8 app = stdenv.mkDerivation rec {
9 name = "${siteName}-${environment}-spip-${version}";
10 version = "3.2.7";
11 src = fetchzip {
12 url = "https://files.spip.net/spip/archives/SPIP-v${version}.zip";
13 sha256 = "0n4kc95nhn524zbb11bpfjs965pm4v026s3m3q44pl8nyms91r33";
14 };
15 paches = lib.optionals ldap [ ./spip_ldap_patch.patch ];
16 buildPhase = ''
17 rm -rf IMG local tmp config/remove.txt
18 ln -sf ${./spip_mes_options.php} config/mes_options.php
19 echo "Require all denied" > "config/.htaccess"
20 ln -sf ${varDir}/{IMG,local} .
21 '';
22 installPhase = ''
23 cp -a . $out
24 cp -a ${siteDir}/* $out
25 '';
26 passthru = {
27 inherit siteName siteDir environment varDir;
28 webRoot = app;
29 spipConfig = ./spip_mes_options.php;
30 };
31 };
32in 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 @@
1--- old/ecrire/auth/ldap.php 2017-06-08 21:58:17.000000000 +0200
2+++ new/ecrire/auth/ldap.php 2017-06-10 02:54:02.687954143 +0200
3@@ -171,24 +171,41 @@
4 $desc = isset($ldap['attributes']) && $ldap['attributes'] ? $ldap['attributes'] : $GLOBALS['ldap_attributes'] ;
5
6 $logins = is_array($desc['login']) ? $desc['login'] : array($desc['login']);
7+ if (isset($GLOBALS['ldap_search'])) {
8+ $search_query = str_replace("%user%", $login_search, $GLOBALS['ldap_search']);
9+ $result = @ldap_search($ldap_link, $ldap_base, $search_query, array("dn"));
10+ $info = @ldap_get_entries($ldap_link, $result);
11+ // Ne pas accepter les resultats si plus d'une entree
12+ // (on veut un attribut unique)
13
14- // Tenter une recherche pour essayer de retrouver le DN
15- foreach ($logins as $att) {
16- $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn"));
17- $info = @ldap_get_entries($ldap_link, $result);
18- // Ne pas accepter les resultats si plus d'une entree
19- // (on veut un attribut unique)
20+ if (is_array($info) and $info['count'] == 1) {
21+ $dn = $info[0]['dn'];
22+ if (!$checkpass) {
23+ return $dn;
24+ }
25+ if (@ldap_bind($ldap_link, $dn, $pass)) {
26+ return $dn;
27+ }
28+ }
29+ } else {
30+ // Tenter une recherche pour essayer de retrouver le DN
31+ foreach ($logins as $att) {
32+ $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", array("dn"));
33+ $info = @ldap_get_entries($ldap_link, $result);
34+ // Ne pas accepter les resultats si plus d'une entree
35+ // (on veut un attribut unique)
36
37- if (is_array($info) and $info['count'] == 1) {
38- $dn = $info[0]['dn'];
39- if (!$checkpass) {
40- return $dn;
41- }
42- if (@ldap_bind($ldap_link, $dn, $pass)) {
43- return $dn;
44- }
45- }
46- }
47+ if (is_array($info) and $info['count'] == 1) {
48+ $dn = $info[0]['dn'];
49+ if (!$checkpass) {
50+ return $dn;
51+ }
52+ if (@ldap_bind($ldap_link, $dn, $pass)) {
53+ return $dn;
54+ }
55+ }
56+ }
57+ }
58
59 if ($checkpass and !isset($dn)) {
60 // 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 @@
1<?php // /!\ Important: There must be no blank space before &lt;?php or after ?&gt;
2// This file was inspired from the spip contrib website
3// http://www.spip.net/fr_article3811.html
4
5$config_dir = getenv('SPIP_CONFIG_DIR') . '/';
6$var_dir = getenv('SPIP_VAR_DIR') . '/';
7
8$cookie_prefix = str_replace('.', '_', getenv("SPIP_SITE"));
9$table_prefix = 'spip';
10
11spip_initialisation(
12 $config_dir,
13 _DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES,
14 $var_dir . _NOM_TEMPORAIRES_INACCESSIBLES,
15 _DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES
16);
17
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 @@
1{ ttrss_config ? "/etc/ttrss/config.php"
2, varDir ? "/var/lib/ttrss"
3, stdenv, lib, callPackage, sources }:
4let
5 pluginNames = [ "auth_ldap" "af_feedmod" "feediron" "ff_instagram" "tumblr_gdpr_ua" ];
6 allPlugins = lib.attrsets.genAttrs pluginNames
7 (name: callPackage (./plugins + "/${name}") {});
8 toPassthru = pkg: plugins: {
9 inherit plugins allPlugins;
10 withPlugins = withPlugins pkg;
11 };
12 withPlugins = pkg: toPlugins:
13 let
14 plugins = toPlugins allPlugins;
15 toInstallPlugin = n:
16 "ln -sf ${n} $out/plugins/${n.pluginName}";
17 newTtrss = pkg.overrideAttrs(old: {
18 installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins);
19 passthru = toPassthru newTtrss (pkg.plugins ++ plugins);
20 });
21 in newTtrss;
22 package = stdenv.mkDerivation rec {
23 pname = "tt-rss";
24 version = "${sources.tools.ttrss.shortRev}-master";
25 name = "${pname}-${version}";
26 src = sources.tools.ttrss;
27 buildPhase = ''
28 rm -rf lock feed-icons cache
29 ln -sf ${varDir}/{lock,feed-icons,cache} .
30 '';
31 installPhase = ''
32 cp -a . $out
33 ln -s ${ttrss_config} $out/config.php
34 '';
35 passthru = toPassthru package [];
36 };
37in 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 @@
1{ patched ? false, stdenv, fetchFromGitHub, lib }:
2stdenv.mkDerivation ({
3 pname = "ttrss-af_feedmod";
4 version = "0ea2092-master";
5 src = fetchFromGitHub {
6 owner = "mbirth";
7 repo = "ttrss_plugin-af_feedmod";
8 rev = "0ea2092dd34067ecd898802cfca3570023d1ecfe";
9 sha256 = "02ibf47zcrsc2rr45wsix8gxyyf371davj8n8i0gj1zdq95klvnv";
10 fetchSubmodules = true;
11 };
12 patches = lib.optionals patched [ ./type_replace.patch ];
13 installPhase = ''
14 mkdir $out
15 cp init.php $out
16 '';
17 passthru.pluginName = "af_feedmod";
18})
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 @@
1--- a/init.php 2014-06-16 14:21:06.995480038 +0200
2+++ b/init.php 2014-06-16 14:22:00.151027654 +0200
3@@ -147,6 +147,9 @@
4 }
5 }
6 break;
7+ case 'replace':
8+ $article['content'] = preg_replace("/".$config['pattern']."/",$config['replacement'],$article['content']);
9+ break;
10
11 default:
12 // 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 @@
1{ stdenv, fetchFromGitHub }:
2stdenv.mkDerivation ({
3 pname = "ttrss-auth-ldap";
4 version = "4d751b0-master";
5 src = fetchFromGitHub {
6 owner = "hydrian";
7 repo = "TTRSS-Auth-LDAP";
8 rev = "4d751b095c29a8dbe2dc7bb07777742956136e94";
9 sha256 = "0b9fl86acrzpcv41r7pj3bl8b3n72hpkdywzx9zjyfqv5pskxyim";
10 fetchSubmodules = true;
11 };
12 installPhase = ''
13 mkdir $out
14 cp plugins/auth_ldap/init.php $out
15 '';
16 passthru.pluginName = "auth_ldap";
17})
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 @@
1{ patched ? false, stdenv, fetchFromGitHub, lib }:
2stdenv.mkDerivation ({
3 pname = "ttrss-feediron";
4 version = "407168c-master";
5 src = fetchFromGitHub {
6 owner = "m42e";
7 repo = "ttrss_plugin-feediron";
8 rev = "407168c628880b5ced572cc549db6d50e866d3c8";
9 sha256 = "17b95ifpcph6m03hjd1mhi8gi1hw9yd3fnffmw66fqr5c9l3zd9r";
10 fetchSubmodules = true;
11 };
12 patches = lib.optionals patched [ ./json_reformat.patch ];
13 installPhase = ''
14 mkdir $out
15 cp -a . $out
16 '';
17 passthru.pluginName = "feediron";
18})
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 @@
1diff --git a/init.php b/init.php
2index 3c0f2f9..1aad146 100644
3--- a/init.php
4+++ b/init.php
5@@ -600,10 +600,11 @@ class Feediron extends Plugin implements IHandler
6 return false;
7 }
8
9- $this->host->set($this, 'json_conf', Feediron_Json::format($json_conf));
10+ $new_conf = json_encode(json_decode($json_conf), JSON_PRETTY_PRINT);
11+ $this->host->set($this, 'json_conf', $new_conf);
12 $json_reply['success'] = true;
13 $json_reply['message'] = __('Configuration saved.');
14- $json_reply['json_conf'] = Feediron_Json::format($json_conf);
15+ $json_reply['json_conf'] = $new_conf;
16 echo json_encode($json_reply);
17 }
18
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 @@
1{ stdenv, fetchFromGitHub }:
2stdenv.mkDerivation ({
3 pname = "ttrss-ff_instagram";
4 version = "0366ffb-master";
5 src = fetchFromGitHub {
6 owner = "wltb";
7 repo = "ff_instagram";
8 rev = "0366ffb18c4d490c8fbfba2f5f3367a5af23cfe8";
9 sha256 = "0vvzl6wi6jmrqknsfddvckjgsgfizz1d923d1nyrpzjfn6bda1vk";
10 fetchSubmodules = true;
11 };
12 installPhase = ''
13 mkdir $out
14 cp -a . $out
15 '';
16 passthru.pluginName = "ff_instagram";
17})
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 @@
1{ stdenv, fetchFromGitHub }:
2stdenv.mkDerivation ({
3 pname = "ttrss-tumblr_gdpr_ua";
4 version = "287c584-master";
5 src = fetchFromGitHub {
6 owner = "hkockerbeck";
7 repo = "ttrss-tumblr-gdpr-ua";
8 rev = "287c584e68845d524f920156bff0b2eaa6f65117";
9 sha256 = "1fviawgcclqky4k4xv1sqzvpb8i74w9f0pclm09m78s8l85wh9py";
10 fetchSubmodules = true;
11 };
12 installPhase = ''
13 mkdir $out
14 cp -a . $out
15 '';
16 passthru.pluginName = "tumblr_gdpr_ua";
17})
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 @@
1{ varDir ? "/var/lib/wallabag"
2, wallabag_config ? "/etc/wallabag/parameters.yml"
3, ldap ? false
4, composerEnv, fetchurl, lib }:
5composerEnv.buildPackage rec {
6 packages = {
7 "fr3d/ldap-bundle" = {
8 targetDir = "";
9 src = composerEnv.buildZipPackage {
10 name = "fr3d-ldap-bundle-5a8927c11af45fa06331b97221c6da1a4a237475";
11 src = fetchurl {
12 url = https://api.github.com/repos/Maks3w/FR3DLdapBundle/zipball/5a8927c11af45fa06331b97221c6da1a4a237475;
13 sha256 = "168zkd82j200wd6h0a3lq81g5s2pifg889rv27q2g429nppsbfxc";
14 };
15 };
16 };
17 "zendframework/zend-ldap" = {
18 targetDir = "";
19 src = composerEnv.buildZipPackage {
20 name = "zendframework-zend-ldap-b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49";
21 src = fetchurl {
22 url = https://api.github.com/repos/zendframework/zend-ldap/zipball/b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49;
23 sha256 = "0mn4yqnb5prqhrbbybmw1i2rx7xf4s4wagbdq9qi55fa0vk3jgw9";
24 };
25 };
26 };
27 };
28 noDev = true;
29 doRemoveVendor = false;
30 # Beware when upgrading, I probably messed up with the migrations table
31 # (due to a psql bug in wallabag)
32 version = "2.3.8";
33 name = "wallabag-${version}";
34 src = fetchurl {
35 url = "https://static.wallabag.org/releases/wallabag-release-${version}.tar.gz";
36 sha256 = "1sr62hfk2f2rl5by48dg8yd1gchngjnc850as17wr3w287p1kwsq";
37 };
38 unpackPhase = ''
39 unpackFile "$src"
40 sourceRoot=${version}
41 src=$PWD/${version}
42 '';
43 patches = lib.optionals ldap [ ./ldap.patch ];
44 preInstall = ''
45 export SYMFONY_ENV="prod"
46 '';
47 postInstall = ''
48 rm -rf web/assets var/{cache,logs,sessions} app/config/parameters.yml data
49 ln -sf ${wallabag_config} app/config/parameters.yml
50 ln -sf ${varDir}/var/{cache,logs,sessions} var
51 ln -sf ${varDir}/data data
52 ln -sf ${varDir}/assets web/assets
53 '';
54}
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 @@
1diff --git a/.travis.yml b/.travis.yml
2index 04cea258..56b1f576 100644
3--- a/.travis.yml
4+++ b/.travis.yml
5@@ -58,6 +58,7 @@ install:
6
7 before_script:
8 - PHP=$TRAVIS_PHP_VERSION
9+ - echo "extension=ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
10 - if [[ ! $PHP = hhvm* ]]; then echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi;
11 # xdebug isn't enable for PHP 7.1
12 - if [[ ! $PHP = hhvm* ]]; then phpenv config-rm xdebug.ini || echo "xdebug not available"; fi
13diff --git a/app/AppKernel.php b/app/AppKernel.php
14index 40726f05..c4f465dc 100644
15--- a/app/AppKernel.php
16+++ b/app/AppKernel.php
17@@ -42,6 +42,10 @@ class AppKernel extends Kernel
18 new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(),
19 ];
20
21+ if (class_exists('FR3D\\LdapBundle\\FR3DLdapBundle')) {
22+ $bundles[] = new FR3D\LdapBundle\FR3DLdapBundle();
23+ }
24+
25 if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
26 $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
27 $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
28diff --git a/app/DoctrineMigrations/Version20170710113900.php b/app/DoctrineMigrations/Version20170710113900.php
29new file mode 100644
30index 00000000..7be83110
31--- /dev/null
32+++ b/app/DoctrineMigrations/Version20170710113900.php
33@@ -0,0 +1,54 @@
34+<?php
35+
36+namespace Application\Migrations;
37+
38+use Doctrine\DBAL\Migrations\AbstractMigration;
39+use Doctrine\DBAL\Schema\Schema;
40+use Symfony\Component\DependencyInjection\ContainerAwareInterface;
41+use Symfony\Component\DependencyInjection\ContainerInterface;
42+
43+/**
44+ * Added dn field on wallabag_users
45+ */
46+class Version20170710113900 extends AbstractMigration implements ContainerAwareInterface
47+{
48+ /**
49+ * @var ContainerInterface
50+ */
51+ private $container;
52+
53+ public function setContainer(ContainerInterface $container = null)
54+ {
55+ $this->container = $container;
56+ }
57+
58+ private function getTable($tableName)
59+ {
60+ return $this->container->getParameter('database_table_prefix').$tableName;
61+ }
62+
63+ /**
64+ * @param Schema $schema
65+ */
66+ public function up(Schema $schema)
67+ {
68+ $usersTable = $schema->getTable($this->getTable('user'));
69+
70+ $this->skipIf($usersTable->hasColumn('dn'), 'It seems that you already played this migration.');
71+
72+ $usersTable->addColumn('dn', 'text', [
73+ 'default' => null,
74+ 'notnull' => false,
75+ ]);
76+ }
77+
78+ /**
79+ * @param Schema $schema
80+ */
81+ public function down(Schema $schema)
82+ {
83+ $usersTable = $schema->getTable($this->getTable('user'));
84+ $usersTable->dropColumn('dn');
85+ }
86+}
87+
88diff --git a/app/config/parameters.yml.dist b/app/config/parameters.yml.dist
89index 6b0cb8e8..cfd41b69 100644
90--- a/app/config/parameters.yml.dist
91+++ b/app/config/parameters.yml.dist
92@@ -62,3 +62,23 @@ parameters:
93 redis_port: 6379
94 redis_path: null
95 redis_password: null
96+
97+ # ldap configuration
98+ # To enable, you need to require fr3d/ldap-bundle
99+ ldap_enabled: false
100+ ldap_host: localhost
101+ ldap_port: 389
102+ ldap_tls: false
103+ ldap_ssl: false
104+ ldap_bind_requires_dn: true
105+ ldap_base: dc=example,dc=com
106+ ldap_manager_dn: ou=Manager,dc=example,dc=com
107+ ldap_manager_pw: password
108+ ldap_filter: (&(ObjectClass=Person))
109+ # optional (if null: no ldap user is admin)
110+ ldap_admin_filter: (&(memberOf=ou=admins,dc=example,dc=com)(uid=%s))
111+ ldap_username_attribute: uid
112+ ldap_email_attribute: mail
113+ ldap_name_attribute: cn
114+ # optional (default sets user as enabled unconditionally)
115+ ldap_enabled_attribute: ~
116diff --git a/app/config/security.yml b/app/config/security.yml
117index 02afc9ea..48fbb553 100644
118--- a/app/config/security.yml
119+++ b/app/config/security.yml
120@@ -6,6 +6,7 @@ security:
121 ROLE_ADMIN: ROLE_USER
122 ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
123
124+ # /!\ This list is modified in WallabagUserBundle when LDAP is enabled
125 providers:
126 administrators:
127 entity:
128@@ -36,6 +37,7 @@ security:
129 pattern: ^/login$
130 anonymous: ~
131
132+ # /!\ This section is modified in WallabagUserBundle when LDAP is enabled
133 secured_area:
134 pattern: ^/
135 form_login:
136diff --git a/composer.json b/composer.json
137index 0483da1d..e3e47bdc 100644
138--- a/composer.json
139+++ b/composer.json
140@@ -87,7 +87,11 @@
141 "bdunogier/guzzle-site-authenticator": "^1.0.0",
142 "defuse/php-encryption": "^2.1",
143 "html2text/html2text": "^4.1",
144- "sulu/symfony-intl-fix": "^1.0"
145+ "sulu/symfony-intl-fix": "^1.0",
146+ "fr3d/ldap-bundle": "^3.0"
147+ },
148+ "suggest": {
149+ "fr3d/ldap-bundle": "If you want to authenticate via LDAP"
150 },
151 "require-dev": {
152 "doctrine/doctrine-fixtures-bundle": "~2.2",
153diff --git a/composer.lock b/composer.lock
154index b3b0a4c6..8c8a87ee 100644
155--- a/composer.lock
156+++ b/composer.lock
157@@ -1346,6 +1346,65 @@
158 ],
159 "time": "2019-05-09T11:53:40+00:00"
160 },
161+ {
162+ "name": "fr3d/ldap-bundle",
163+ "version": "v3.0.0",
164+ "source": {
165+ "type": "git",
166+ "url": "https://github.com/Maks3w/FR3DLdapBundle.git",
167+ "reference": "5a8927c11af45fa06331b97221c6da1a4a237475"
168+ },
169+ "dist": {
170+ "type": "zip",
171+ "url": "https://api.github.com/repos/Maks3w/FR3DLdapBundle/zipball/5a8927c11af45fa06331b97221c6da1a4a237475",
172+ "reference": "5a8927c11af45fa06331b97221c6da1a4a237475",
173+ "shasum": ""
174+ },
175+ "require": {
176+ "php": ">=5.5",
177+ "psr/log": "~1.0",
178+ "symfony/config": "2.3 - 3",
179+ "symfony/dependency-injection": "2.3 - 3",
180+ "symfony/polyfill-php56": "^1.1",
181+ "symfony/security": "2.3 - 3",
182+ "symfony/security-bundle": "2.3 - 3",
183+ "zendframework/zend-ldap": "2.5 - 3"
184+ },
185+ "require-dev": {
186+ "fabpot/php-cs-fixer": "1.11.*",
187+ "fr3d/psr3-message-assertions": "0.1.*",
188+ "friendsofsymfony/user-bundle": "~1.3",
189+ "maks3w/phpunit-methods-trait": "^4.6",
190+ "phpunit/phpunit": "^4.6",
191+ "symfony/validator": "2.3 - 3"
192+ },
193+ "suggest": {
194+ "friendsofsymfony/user-bundle": "Integrate authentication and management for DB users, useful for unmanned LDAP servers",
195+ "symfony/validator": "Allow pre-validate for existing users before register new ones"
196+ },
197+ "type": "symfony-bundle",
198+ "autoload": {
199+ "psr-4": {
200+ "FR3D\\LdapBundle\\": ""
201+ }
202+ },
203+ "notification-url": "https://packagist.org/downloads/",
204+ "license": [
205+ "MIT"
206+ ],
207+ "authors": [
208+ {
209+ "name": "Maks3w"
210+ }
211+ ],
212+ "description": "This package provide users and authentication services based on LDAP directories for Symfony2 framework",
213+ "homepage": "https://github.com/Maks3w/FR3DLdapBundle",
214+ "keywords": [
215+ "Authentication",
216+ "ldap"
217+ ],
218+ "time": "2016-02-12T17:45:14+00:00"
219+ },
220 {
221 "name": "friendsofsymfony/jsrouting-bundle",
222 "version": "1.6.3",
223@@ -7069,6 +7128,59 @@
224 "zf2"
225 ],
226 "time": "2018-04-25T15:33:34+00:00"
227+ },
228+ {
229+ "name": "zendframework/zend-ldap",
230+ "version": "2.10.0",
231+ "source": {
232+ "type": "git",
233+ "url": "https://github.com/zendframework/zend-ldap.git",
234+ "reference": "b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49"
235+ },
236+ "dist": {
237+ "type": "zip",
238+ "url": "https://api.github.com/repos/zendframework/zend-ldap/zipball/b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49",
239+ "reference": "b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49",
240+ "shasum": ""
241+ },
242+ "require": {
243+ "ext-ldap": "*",
244+ "php": "^5.6 || ^7.0"
245+ },
246+ "require-dev": {
247+ "php-mock/php-mock-phpunit": "^1.1.2 || ^2.1.1",
248+ "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2",
249+ "zendframework/zend-coding-standard": "~1.0.0",
250+ "zendframework/zend-config": "^2.5",
251+ "zendframework/zend-eventmanager": "^2.6.3 || ^3.0.1",
252+ "zendframework/zend-stdlib": "^2.7 || ^3.0"
253+ },
254+ "suggest": {
255+ "zendframework/zend-eventmanager": "Zend\\EventManager component"
256+ },
257+ "type": "library",
258+ "extra": {
259+ "branch-alias": {
260+ "dev-master": "2.10.x-dev",
261+ "dev-develop": "2.11.x-dev"
262+ }
263+ },
264+ "autoload": {
265+ "psr-4": {
266+ "Zend\\Ldap\\": "src/"
267+ }
268+ },
269+ "notification-url": "https://packagist.org/downloads/",
270+ "license": [
271+ "BSD-3-Clause"
272+ ],
273+ "description": "Provides support for LDAP operations including but not limited to binding, searching and modifying entries in an LDAP directory",
274+ "keywords": [
275+ "ZendFramework",
276+ "ldap",
277+ "zf"
278+ ],
279+ "time": "2018-07-05T05:05:12+00:00"
280 }
281 ],
282 "packages-dev": [
283diff --git a/scripts/install.sh b/scripts/install.sh
284index affa715f..45254212 100755
285--- a/scripts/install.sh
286+++ b/scripts/install.sh
287@@ -37,5 +37,8 @@ fi
288 TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
289
290 git checkout $TAG
291+if [ -n "$LDAP_ENABLED" ]; then
292+ SYMFONY_ENV=$ENV $COMPOSER_COMMAND require --no-update fr3d/ldap-bundle
293+fi
294 SYMFONY_ENV=$ENV $COMPOSER_COMMAND install --no-dev -o --prefer-dist
295 php bin/console wallabag:install --env=$ENV
296diff --git a/scripts/update.sh b/scripts/update.sh
297index 3ef10439..eeee28d6 100755
298--- a/scripts/update.sh
299+++ b/scripts/update.sh
300@@ -42,6 +42,9 @@ git fetch origin
301 git fetch --tags
302 TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
303 git checkout $TAG --force
304+if [ -n "$LDAP_ENABLED" ]; then
305+ SYMFONY_ENV=$ENV $COMPOSER_COMMAND require --no-update fr3d/ldap-bundle
306+fi
307 SYMFONY_ENV=$ENV $COMPOSER_COMMAND install --no-dev -o --prefer-dist
308 php bin/console doctrine:migrations:migrate --no-interaction --env=$ENV
309 php bin/console cache:clear --env=$ENV
310diff --git a/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php b/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php
311index 5ca3482e..904a6af1 100644
312--- a/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php
313+++ b/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php
314@@ -6,9 +6,34 @@ use Symfony\Component\Config\FileLocator;
315 use Symfony\Component\DependencyInjection\ContainerBuilder;
316 use Symfony\Component\DependencyInjection\Loader;
317 use Symfony\Component\HttpKernel\DependencyInjection\Extension;
318+use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
319
320-class WallabagUserExtension extends Extension
321+class WallabagUserExtension extends Extension implements PrependExtensionInterface
322 {
323+ public function prepend(ContainerBuilder $container)
324+ {
325+ $ldap = $container->getParameter('ldap_enabled');
326+
327+ if ($ldap) {
328+ $container->prependExtensionConfig('security', array(
329+ 'providers' => array(
330+ 'chain_provider' => array(),
331+ ),
332+ ));
333+ $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
334+ $loader->load('ldap.yml');
335+ } elseif ($container->hasExtension('fr3d_ldap')) {
336+ $container->prependExtensionConfig('fr3_d_ldap', array(
337+ 'driver' => array(
338+ 'host' => 'localhost',
339+ ),
340+ 'user' => array(
341+ 'baseDn' => 'dc=example,dc=com',
342+ ),
343+ ));
344+ }
345+ }
346+
347 public function load(array $configs, ContainerBuilder $container)
348 {
349 $configuration = new Configuration();
350@@ -16,6 +41,9 @@ class WallabagUserExtension extends Extension
351
352 $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
353 $loader->load('services.yml');
354+ if ($container->getParameter('ldap_enabled')) {
355+ $loader->load('ldap_services.yml');
356+ }
357 $container->setParameter('wallabag_user.registration_enabled', $config['registration_enabled']);
358 }
359
360diff --git a/src/Wallabag/UserBundle/Entity/User.php b/src/Wallabag/UserBundle/Entity/User.php
361index 48446e3c..f93c59c7 100644
362--- a/src/Wallabag/UserBundle/Entity/User.php
363+++ b/src/Wallabag/UserBundle/Entity/User.php
364@@ -1,5 +1,15 @@
365 <?php
366
367+// This permits to have the LdapUserInterface even when fr3d/ldap-bundle is not
368+// in the packages
369+namespace FR3D\LdapBundle\Model;
370+
371+interface LdapUserInterface
372+{
373+ public function setDn($dn);
374+ public function getDn();
375+}
376+
377 namespace Wallabag\UserBundle\Entity;
378
379 use Doctrine\Common\Collections\ArrayCollection;
380@@ -16,6 +26,7 @@ use Wallabag\ApiBundle\Entity\Client;
381 use Wallabag\CoreBundle\Entity\Config;
382 use Wallabag\CoreBundle\Entity\Entry;
383 use Wallabag\CoreBundle\Helper\EntityTimestampsTrait;
384+use FR3D\LdapBundle\Model\LdapUserInterface;
385
386 /**
387 * User.
388@@ -28,7 +39,7 @@ use Wallabag\CoreBundle\Helper\EntityTimestampsTrait;
389 * @UniqueEntity("email")
390 * @UniqueEntity("username")
391 */
392-class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterface
393+class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterface, LdapUserInterface
394 {
395 use EntityTimestampsTrait;
396
397@@ -67,6 +78,13 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf
398 */
399 protected $email;
400
401+ /**
402+ * @var string
403+ *
404+ * @ORM\Column(name="dn", type="text", nullable=true)
405+ */
406+ protected $dn;
407+
408 /**
409 * @var \DateTime
410 *
411@@ -309,4 +327,33 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf
412 return $this->clients->first();
413 }
414 }
415+
416+ /**
417+ * Set dn.
418+ *
419+ * @param string $dn
420+ *
421+ * @return User
422+ */
423+ public function setDn($dn)
424+ {
425+ $this->dn = $dn;
426+
427+ return $this;
428+ }
429+
430+ /**
431+ * Get dn.
432+ *
433+ * @return string
434+ */
435+ public function getDn()
436+ {
437+ return $this->dn;
438+ }
439+
440+ public function isLdapUser()
441+ {
442+ return $this->dn !== null;
443+ }
444 }
445diff --git a/src/Wallabag/UserBundle/LdapHydrator.php b/src/Wallabag/UserBundle/LdapHydrator.php
446new file mode 100644
447index 00000000..cea2450f
448--- /dev/null
449+++ b/src/Wallabag/UserBundle/LdapHydrator.php
450@@ -0,0 +1,103 @@
451+<?php
452+
453+namespace Wallabag\UserBundle;
454+
455+use FR3D\LdapBundle\Hydrator\HydratorInterface;
456+use FOS\UserBundle\FOSUserEvents;
457+use FOS\UserBundle\Event\UserEvent;
458+
459+class LdapHydrator implements HydratorInterface
460+{
461+ private $userManager;
462+ private $eventDispatcher;
463+ private $attributesMap;
464+ private $enabledAttribute;
465+ private $ldapBaseDn;
466+ private $ldapAdminFilter;
467+ private $ldapDriver;
468+
469+ public function __construct(
470+ $user_manager,
471+ $event_dispatcher,
472+ array $attributes_map,
473+ $ldap_base_dn,
474+ $ldap_admin_filter,
475+ $ldap_driver
476+ ) {
477+ $this->userManager = $user_manager;
478+ $this->eventDispatcher = $event_dispatcher;
479+
480+ $this->attributesMap = array(
481+ 'setUsername' => $attributes_map[0],
482+ 'setEmail' => $attributes_map[1],
483+ 'setName' => $attributes_map[2],
484+ );
485+ $this->enabledAttribute = $attributes_map[3];
486+
487+ $this->ldapBaseDn = $ldap_base_dn;
488+ $this->ldapAdminFilter = $ldap_admin_filter;
489+ $this->ldapDriver = $ldap_driver;
490+ }
491+
492+ public function hydrate(array $ldapEntry)
493+ {
494+ $user = $this->userManager->findUserBy(array('dn' => $ldapEntry['dn']));
495+
496+ if (!$user) {
497+ $user = $this->userManager->createUser();
498+ $user->setDn($ldapEntry['dn']);
499+ $user->setPassword('');
500+ $user->setSalt('');
501+ $this->updateUserFields($user, $ldapEntry);
502+
503+ $event = new UserEvent($user);
504+ $this->eventDispatcher->dispatch(FOSUserEvents::USER_CREATED, $event);
505+
506+ $this->userManager->reloadUser($user);
507+ } else {
508+ $this->updateUserFields($user, $ldapEntry);
509+ }
510+
511+ return $user;
512+ }
513+
514+ private function updateUserFields($user, $ldapEntry)
515+ {
516+ foreach ($this->attributesMap as $key => $value) {
517+ if (is_array($ldapEntry[$value])) {
518+ $ldap_value = $ldapEntry[$value][0];
519+ } else {
520+ $ldap_value = $ldapEntry[$value];
521+ }
522+
523+ call_user_func([$user, $key], $ldap_value);
524+ }
525+
526+ if ($this->enabledAttribute !== null) {
527+ $user->setEnabled($ldapEntry[$this->enabledAttribute]);
528+ } else {
529+ $user->setEnabled(true);
530+ }
531+
532+ if ($this->isAdmin($user)) {
533+ $user->addRole('ROLE_SUPER_ADMIN');
534+ } else {
535+ $user->removeRole('ROLE_SUPER_ADMIN');
536+ }
537+
538+ $this->userManager->updateUser($user, true);
539+ }
540+
541+ private function isAdmin($user)
542+ {
543+ if ($this->ldapAdminFilter === null) {
544+ return false;
545+ }
546+
547+ $escaped_username = ldap_escape($user->getUsername(), '', LDAP_ESCAPE_FILTER);
548+ $filter = sprintf($this->ldapAdminFilter, $escaped_username);
549+ $entries = $this->ldapDriver->search($this->ldapBaseDn, $filter);
550+
551+ return $entries['count'] == 1;
552+ }
553+}
554diff --git a/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php b/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php
555new file mode 100644
556index 00000000..8a851f12
557--- /dev/null
558+++ b/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php
559@@ -0,0 +1,43 @@
560+<?php
561+
562+namespace Wallabag\UserBundle;
563+
564+use FOS\OAuthServerBundle\Storage\OAuthStorage;
565+use OAuth2\Model\IOAuth2Client;
566+use Symfony\Component\Security\Core\Exception\AuthenticationException;
567+
568+class OAuthStorageLdapWrapper extends OAuthStorage
569+{
570+ private $ldapManager;
571+
572+ public function setLdapManager($ldap_manager)
573+ {
574+ $this->ldapManager = $ldap_manager;
575+ }
576+
577+ public function checkUserCredentials(IOAuth2Client $client, $username, $password)
578+ {
579+ try {
580+ $user = $this->userProvider->loadUserByUsername($username);
581+ } catch (AuthenticationException $e) {
582+ return false;
583+ }
584+
585+ if ($user->isLdapUser()) {
586+ return $this->checkLdapUserCredentials($user, $password);
587+ } else {
588+ return parent::checkUserCredentials($client, $username, $password);
589+ }
590+ }
591+
592+ private function checkLdapUserCredentials($user, $password)
593+ {
594+ if ($this->ldapManager->bind($user, $password)) {
595+ return array(
596+ 'data' => $user,
597+ );
598+ } else {
599+ return false;
600+ }
601+ }
602+}
603diff --git a/src/Wallabag/UserBundle/Resources/config/ldap.yml b/src/Wallabag/UserBundle/Resources/config/ldap.yml
604new file mode 100644
605index 00000000..5ec16088
606--- /dev/null
607+++ b/src/Wallabag/UserBundle/Resources/config/ldap.yml
608@@ -0,0 +1,28 @@
609+fr3d_ldap:
610+ service:
611+ user_hydrator: ldap_user_hydrator
612+ driver:
613+ host: "%ldap_host%"
614+ port: "%ldap_port%"
615+ useSsl: "%ldap_ssl%"
616+ useStartTls: "%ldap_tls%"
617+ bindRequiresDn: "%ldap_bind_requires_dn%"
618+ username: "%ldap_manager_dn%"
619+ password: "%ldap_manager_pw%"
620+ user:
621+ baseDn: "%ldap_base%"
622+ filter: "%ldap_filter%"
623+ usernameAttribute: "%ldap_username_attribute%"
624+security:
625+ providers:
626+ chain_provider:
627+ chain:
628+ providers: [ fr3d_ldapbundle, fos_userbundle ]
629+ fr3d_ldapbundle:
630+ id: fr3d_ldap.security.user.provider
631+ firewalls:
632+ secured_area:
633+ fr3d_ldap: ~
634+ form_login:
635+ provider: chain_provider
636+
637diff --git a/src/Wallabag/UserBundle/Resources/config/ldap_services.yml b/src/Wallabag/UserBundle/Resources/config/ldap_services.yml
638new file mode 100644
639index 00000000..b3e3fd8a
640--- /dev/null
641+++ b/src/Wallabag/UserBundle/Resources/config/ldap_services.yml
642@@ -0,0 +1,22 @@
643+services:
644+ fos_oauth_server.server:
645+ class: OAuth2\OAuth2
646+ arguments:
647+ - "@oauth_storage_ldap_wrapper"
648+ - "%fos_oauth_server.server.options%"
649+ oauth_storage_ldap_wrapper:
650+ class: Wallabag\UserBundle\OAuthStorageLdapWrapper
651+ parent: fos_oauth_server.storage
652+ calls:
653+ - [setLdapManager, ["@fr3d_ldap.ldap_manager"]]
654+
655+ ldap_user_hydrator:
656+ class: Wallabag\UserBundle\LdapHydrator
657+ arguments:
658+ - "@fos_user.user_manager"
659+ - "@event_dispatcher"
660+ - [ "%ldap_username_attribute%", "%ldap_email_attribute%", "%ldap_name_attribute%", "%ldap_enabled_attribute%" ]
661+ - "%ldap_base%"
662+ - "%ldap_admin_filter%"
663+ - "@fr3d_ldap.ldap_driver"
664+
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 @@
1{ yourls_config ? "/etc/yourls/config.php", fetchFromGitHub, callPackage, lib, stdenv }:
2let
3 pluginNames = [ "ldap" ];
4 allPlugins = lib.attrsets.genAttrs pluginNames
5 (name: callPackage (./plugins + "/${name}") {});
6 toPassthru = pkg: plugins: {
7 inherit plugins allPlugins;
8 withPlugins = withPlugins pkg;
9 };
10 withPlugins = pkg: toPlugins:
11 let
12 plugins = toPlugins allPlugins;
13 toInstallPlugin = n: "ln -s ${n} $out/user/plugins/${n.pluginName}";
14 newYourls = pkg.overrideAttrs(old: {
15 installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins);
16 passthru = toPassthru newYourls (pkg.plugins ++ plugins);
17 });
18 in newYourls;
19 package = stdenv.mkDerivation (rec {
20 pname = "yourls";
21 version = "1.7.3";
22 src = fetchFromGitHub {
23 owner = "YOURLS";
24 repo = "YOURLS";
25 rev = "077018822d3594229daa8343310d0b40804b9ddc";
26 sha256 = "1av6h619rwqn0yn0kjn2s2h3gmrhmxaaa9hd5ns4ralxgg731imd";
27 fetchSubmodules = true;
28 };
29 installPhase = ''
30 mkdir -p $out
31 cp -a */ *.php $out/
32 cp sample-robots.txt $out/robots.txt
33 ln -sf ${yourls_config} $out/includes/config.php
34 '';
35 passthru = toPassthru package [];
36 });
37in 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 @@
1{ stdenv, fetchFromGitHub }:
2stdenv.mkDerivation (rec {
3 pname = "yourls-ldap-plugin";
4 version = "2a3cb03-master";
5 src = fetchFromGitHub {
6 owner = "k3a";
7 repo = "yourls-ldap-plugin";
8 rev = "2a3cb0334b8a6b81b284a7196e614bbd2b2b1615";
9 sha256 = "0cchbnli77d295lzf7kjmn4dcxj2bmdqa9qc3f8l8qgmp4n5n0gh";
10 fetchSubmodules = true;
11 };
12 installPhase = ''
13 mkdir -p $out
14 cp plugin.php $out
15 '';
16 passthru.pluginName = "ldap";
17})
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 @@
6 # Check that there is no clash with nixos/modules/misc/ids.nix 6 # Check that there is no clash with nixos/modules/misc/ids.nix
7 uids = { 7 uids = {
8 cryptpad = 386; 8 cryptpad = 386;
9 openldap = 99; # commented in the ids file
9 postfixscripts = 387; 10 postfixscripts = 387;
10 acme = 388; 11 acme = 388;
11 backup = 389; 12 backup = 389;
@@ -21,6 +22,7 @@
21 }; 22 };
22 gids = { 23 gids = {
23 nagios = 11; # commented in the ids file 24 nagios = 11; # commented in the ids file
25 openldap = 99; # commented in the ids file
24 cryptpad = 386; 26 cryptpad = 386;
25 acme = 388; 27 acme = 388;
26 backup = 389; 28 backup = 389;
@@ -35,10 +37,20 @@
35 mastodon = 399; 37 mastodon = 399;
36 }; 38 };
37 }; 39 };
38 nixosModule = { ... }: { 40 nixosModule = { config, lib, ... }: {
39 config = { 41 config = {
40 ids.uids = self.lib.uids; 42 ids.uids = self.lib.uids;
41 ids.gids = self.lib.gids; 43 ids.gids = self.lib.gids;
44 assertions = [
45 {
46 assertion = builtins.length (builtins.attrValues config.ids.gids) == builtins.length (lib.unique (builtins.attrValues config.ids.gids));
47 message = "Non-unique list of gids";
48 }
49 {
50 assertion = builtins.length (builtins.attrValues config.ids.uids) == builtins.length (lib.unique (builtins.attrValues config.ids.uids));
51 message = "Non-unique list of uids";
52 }
53 ];
42 }; 54 };
43 }; 55 };
44 }; 56 };
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 @@
1{
2 outputs = { self }: {
3 nixosModule = self.nixosModules.naemon;
4 nixosModules.naemon = { config, lib, pkgs, ... }:
5 with lib;
6
7 let
8 cfg = config.services.naemon;
9
10 naemonConfig = pkgs.runCommand "naemon-config" {
11 objectsFile = pkgs.writeText "naemon_objects.cfg" cfg.objectDefs;
12 resourceFile = config.secrets.fullPaths."naemon/resources.cfg";
13 extraConfig = pkgs.writeText "extra.cfg" cfg.extraConfig;
14 inherit (cfg) logDir varDir runDir cacheDir;
15 } ''
16 substituteAll ${./naemon.cfg} $out
17 cat $extraConfig >> $out
18 '';
19 in
20 {
21 # Necessary for situations where flake gets included multiple times
22 key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
23
24 options = {
25 services.naemon = {
26 enable = mkOption {
27 default = false;
28 description = "
29 Whether to use <link
30 xlink:href='http://www.naemon.org/'>Naemon</link> to monitor
31 your system or network.
32 ";
33 };
34
35 objectDefs = mkOption {
36 type = types.lines;
37 default = "";
38 description = "
39 A list of Naemon object configuration that must define
40 the hosts, host groups, services and contacts for the
41 network that you want Naemon to monitor.
42 ";
43 };
44
45 extraResource = mkOption {
46 type = types.lines;
47 default = "";
48 example = ''
49 # Sets $USER2$ to be the path to event handlers
50 #$USER2$=/usr/lib/monitoring-plugins/eventhandlers
51
52 # Store some usernames and passwords (hidden from the CGIs)
53 #$USER3$=someuser
54 #$USER4$=somepassword
55 '';
56 description = "
57 Lines to add to the resource file
58 # You can define $USERx$ macros in this file, which can in turn be used
59 # in command definitions in your host config file(s). $USERx$ macros are
60 # useful for storing sensitive information such as usernames, passwords,
61 # etc. They are also handy for specifying the path to plugins and
62 # event handlers - if you decide to move the plugins or event handlers to
63 # a different directory in the future, you can just update one or two
64 # $USERx$ macros, instead of modifying a lot of command definitions.
65 #
66 # Naemon supports up to 256 $USERx$ macros ($USER1$ through $USER256$)
67 #
68 # Resource files may also be used to store configuration directives for
69 # external data sources like MySQL...
70 #
71 ";
72 };
73
74 extraConfig = mkOption {
75 type = types.lines;
76 default = "";
77 description = "
78 Extra config to append to main config
79 ";
80 };
81
82 user = mkOption {
83 type = types.str;
84 default = "naemon";
85 description = "User for naemon";
86 };
87
88 group = mkOption {
89 type = types.str;
90 default = "naemon";
91 description = "Group for naemon";
92 };
93
94 varDir = mkOption {
95 type = types.path;
96 default = "/var/lib/naemon";
97 description = "The directory where naemon stores its data";
98 };
99
100 cacheDir = mkOption {
101 type = types.path;
102 default = "/var/cache/naemon";
103 description = "The directory where naemon stores its cache";
104 };
105
106 runDir = mkOption {
107 type = types.path;
108 default = "/run/naemon";
109 description = "The directory where naemon stores its runtime files";
110 };
111
112 logDir = mkOption {
113 type = types.path;
114 default = "/var/log/naemon";
115 description = "The directory where naemon stores its log files";
116 };
117
118 package = mkOption {
119 type = types.package;
120 default = pkgs.naemon.override {
121 inherit (cfg) varDir cacheDir logDir runDir user group;
122 };
123 description = ''
124 Naemon package to use
125 '';
126 };
127 };
128 };
129
130
131 config = mkIf cfg.enable {
132 secrets.keys = {
133 "naemon/resources.cfg" = {
134 user = cfg.user;
135 group = cfg.group;
136 permissions = "0400";
137 text = ''
138 $USER1$=${pkgs.monitoring-plugins}/libexec
139 ${cfg.extraResource}
140 '';
141 keyDependencies = [ pkgs.monitoring-plugins ];
142 };
143 };
144
145 users.users = optionalAttrs (cfg.user == "naemon") {
146 naemon = {
147 group = cfg.group;
148 uid = config.ids.uids.nagios;
149 extraGroups = [ "keys" ];
150 };
151 };
152 users.groups = optionalAttrs (cfg.user == "naemon") {
153 naemon = {
154 gid = config.ids.gids.nagios;
155 };
156 };
157
158 services.filesWatcher.naemon = {
159 paths = [ config.secrets.fullPaths."naemon/resources.cfg" ];
160 };
161 systemd.services.naemon = {
162 description = "Naemon monitoring daemon";
163 path = [ cfg.package ];
164 wantedBy = [ "multi-user.target" ];
165 after = [ "network.target" ];
166
167 preStart = "${cfg.package}/bin/naemon -vp ${naemonConfig}";
168 script = "${cfg.package}/bin/naemon --daemon ${naemonConfig}";
169 reload = "${pkgs.utillinux}/bin/kill -HUP $MAINPID";
170 serviceConfig = {
171 User = cfg.user;
172 Restart = "always";
173 RestartSec = 2;
174 StandardOutput = "journal";
175 StandardError = "inherit";
176 PIDFile = "${cfg.runDir}/naemon.pid";
177 LogsDirectory = assert lib.strings.hasPrefix "/var/log/" cfg.logDir;
178 lib.strings.removePrefix "/var/log/" cfg.logDir;
179 CacheDirectory = assert lib.strings.hasPrefix "/var/cache/" cfg.cacheDir;
180 let unprefixed = lib.strings.removePrefix "/var/cache/" cfg.cacheDir;
181 in [ unprefixed "${unprefixed}/checkresults" ];
182 StateDirectory = assert lib.strings.hasPrefix "/var/lib/" cfg.varDir;
183 lib.strings.removePrefix "/var/lib/" cfg.varDir;
184 RuntimeDirectory = assert lib.strings.hasPrefix "/run/" cfg.runDir;
185 lib.strings.removePrefix "/run/" cfg.runDir;
186 };
187 };
188 };
189 };
190 };
191}
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 @@
1##############################################################################
2#
3# naemon.cfg - Sample Main Config File for Naemon 1.0.10.gc2a87305.dirty.20190703.source
4#
5# Read the documentation for more information on this configuration
6# file. I've provided some comments here, but things may not be so
7# clear without further explanation.
8#
9#
10##############################################################################
11
12
13# LOG FILE
14# This is the main log file where service and host events are logged
15# for historical purposes. This should be the first option specified
16# in the config file!!!
17
18log_file=@logDir@/naemon.log
19
20
21
22# OBJECT CONFIGURATION FILE(S)
23# These are the object configuration files in which you define hosts,
24# host groups, contacts, contact groups, services, etc.
25# You can split your object definitions across several config files
26# if you wish (as shown below), or keep them all in a single config file.
27
28# You can specify individual object config files as shown below:
29#cfg_file=/etc/naemon/objects/commands.cfg
30#cfg_file=/etc/naemon/objects/contacts.cfg
31#cfg_file=/etc/naemon/objects/timeperiods.cfg
32#cfg_file=/etc/naemon/objects/templates.cfg
33cfg_file=@objectsFile@
34
35
36# You can also tell naemon to process all config files (with a .cfg
37# extension) in a particular directory by using the cfg_dir
38# directive as shown below:
39#cfg_dir=/etc/naemon/conf.d
40
41
42
43
44# OBJECT CACHE FILE
45# This option determines where object definitions are cached when
46# naemon starts/restarts. The CGIs read object definitions from
47# this cache file (rather than looking at the object config files
48# directly) in order to prevent inconsistencies that can occur
49# when the config files are modified after naemon starts.
50
51object_cache_file=@varDir@/objects.cache
52
53
54
55# PRE-CACHED OBJECT FILE
56# This options determines the location of the precached object file.
57# If you run naemon with the -p command line option, it will preprocess
58# your object configuration file(s) and write the cached config to this
59# file. You can then start naemon with the -u option to have it read
60# object definitions from this precached file, rather than the standard
61# object configuration files (see the cfg_file and cfg_dir options above).
62# Using a precached object file can speed up the time needed to (re)start
63# the naemon process if you've got a large and/or complex configuration.
64# Read the documentation section on optimizing naemon to find our more
65# about how this feature works.
66
67precached_object_file=@varDir@/objects.precache
68
69
70
71# RESOURCE FILE
72# This is an optional resource file that contains $USERx$ macro
73# definitions. Multiple resource files can be specified by using
74# multiple resource_file definitions. The CGIs will not attempt to
75# read the contents of resource files, so information that is
76# considered to be sensitive (usernames, passwords, etc) can be
77# defined as macros in this file and restrictive permissions (600)
78# can be placed on this file.
79
80resource_file=@resourceFile@
81
82
83
84# STATUS FILE
85# This is where the current status of all monitored services and
86# hosts is stored. Its contents are read and processed by the CGIs.
87# The contents of the status file are deleted every time naemon
88# restarts.
89
90status_file=@varDir@/status.dat
91
92
93
94# STATUS FILE UPDATE INTERVAL
95# This option determines the frequency (in seconds) that
96# naemon will periodically dump program, host, and
97# service status data. Set it to 0 to disable updates.
98
99status_update_interval=10
100
101
102
103# EXTERNAL COMMAND OPTION
104# This option allows you to specify whether or not Naemon should check
105# for external commands (in the command file defined below). By default
106# Naemon will *not* check for external commands, just to be on the
107# cautious side. If you want to be able to use the CGI command interface
108# you will have to enable this.
109# Values: 0 = disable commands, 1 = enable commands
110
111check_external_commands=1
112
113
114
115# EXTERNAL COMMAND FILE
116# This is the file that Naemon checks for external command requests.
117# It is also where the command CGI will write commands that are submitted
118# by users, so it must be writeable by the user that the web server
119# is running as (usually 'nobody'). Permissions should be set at the
120# directory level instead of on the file, as the file is deleted every
121# time its contents are processed.
122
123command_file=@runDir@/naemon.cmd
124
125
126
127# QUERY HANDLER INTERFACE
128# This is the socket that is created for the Query Handler interface
129
130query_socket=@runDir@/naemon.qh
131
132
133
134# LOCK FILE
135# This is the lockfile that Naemon will use to store its PID number
136# in when it is running in daemon mode.
137
138lock_file=@runDir@/naemon.pid
139
140
141
142# TEMP FILE
143# This is a temporary file that is used as scratch space when Naemon
144# updates the status log, cleans the comment file, etc. This file
145# is created, used, and deleted throughout the time that Naemon is
146# running.
147
148temp_file=@cacheDir@/naemon.tmp
149
150
151
152# TEMP PATH
153# This is path where Naemon can create temp files for service and
154# host check results, etc.
155
156temp_path=@cacheDir@
157
158
159
160# EVENT BROKER OPTIONS
161# Controls what (if any) data gets sent to the event broker.
162# Values: 0 = Broker nothing
163# -1 = Broker everything
164# <other> = See documentation
165
166event_broker_options=-1
167
168
169
170# EVENT BROKER MODULE(S)
171# This directive is used to specify an event broker module that should
172# be loaded by Naemon at startup. Use multiple directives if you want
173# to load more than one module. Arguments that should be passed to
174# the module at startup are seperated from the module path by a space.
175#
176# Example:
177#
178# broker_module=<modulepath> [moduleargs]
179
180#broker_module=/usr/lib/naemon/naemon-livestatus/livestatus.so @cacheDir@/live
181#broker_module=/somewhere/module1.o
182#broker_module=/somewhere/module2.o arg1 arg2=3 debug=0
183
184# In order to provide drop-in support for new modules, you can also make use of
185# the include_dir directive. The include_dir directive causes Naemon to parse
186# any configuration (not just object configuration, as with cfg_dir) as if the
187# contents of the files in the pointed-to directory was included on this line.
188# The path to the directory is relative to the path of the main naemon.cfg
189# file.
190#include_dir=module-conf.d
191
192# LOG ARCHIVE PATH
193# This is the directory where archived (rotated) log files are placed by the
194# logrotate daemon. It is used by out of core add-ons to discover the logfiles.
195
196log_archive_path=@logDir@/archives
197
198
199
200# LOGGING OPTIONS
201# If you want messages logged to the syslog facility, as well as the
202# Naemon log file set this option to 1. If not, set it to 0.
203
204use_syslog=0
205
206# NOTIFICATION LOGGING OPTION
207# If you don't want notifications to be logged, set this value to 0.
208# If notifications should be logged, set the value to 1.
209
210log_notifications=1
211
212# Notification suppression reason (NSR) logging causes the reason for a
213# notification suppression to be logged, when it occurs. This can potentially
214# add some noise to your log file, but is highly useful when troubleshooting
215# missing notifications.
216
217enable_notification_suppression_reason_logging=1
218
219
220# SERVICE RETRY LOGGING OPTION
221# If you don't want service check retries to be logged, set this value
222# to 0. If retries should be logged, set the value to 1.
223
224log_service_retries=1
225
226
227
228# HOST RETRY LOGGING OPTION
229# If you don't want host check retries to be logged, set this value to
230# 0. If retries should be logged, set the value to 1.
231
232log_host_retries=1
233
234
235
236# EVENT HANDLER LOGGING OPTION
237# If you don't want host and service event handlers to be logged, set
238# this value to 0. If event handlers should be logged, set the value
239# to 1.
240
241log_event_handlers=1
242
243
244
245# INITIAL STATES LOGGING OPTION
246# If you want Naemon to log all initial host and service states to
247# the main log file (the first time the service or host is checked)
248# you can enable this option by setting this value to 1. If you
249# are not using an external application that does long term state
250# statistics reporting, you do not need to enable this option. In
251# this case, set the value to 0.
252
253log_initial_states=0
254
255
256
257# CURRENT STATES LOGGING OPTION
258# If you don't want Naemon to log all current host and service states
259# after log has been rotated to the main log file, you can disable this
260# option by setting this value to 0. Default value is 1.
261
262log_current_states=1
263
264
265
266# EXTERNAL COMMANDS LOGGING OPTION
267# If you don't want Naemon to log external commands, set this value
268# to 0. If external commands should be logged, set this value to 1.
269# Note: This option does not include logging of passive service
270# checks - see the option below for controlling whether or not
271# passive checks are logged.
272
273log_external_commands=1
274
275
276
277# PASSIVE CHECKS LOGGING OPTION
278# If you don't want Naemon to log passive host and service checks, set
279# this value to 0. If passive checks should be logged, set
280# this value to 1.
281
282log_passive_checks=1
283
284
285
286# GLOBAL HOST AND SERVICE EVENT HANDLERS
287# These options allow you to specify a host and service event handler
288# command that is to be run for every host or service state change.
289# The global event handler is executed immediately prior to the event
290# handler that you have optionally specified in each host or
291# service definition. The command argument is the short name of a
292# command definition that you define in your host configuration file.
293# Read the HTML docs for more information.
294
295#global_host_event_handler=somecommand
296#global_service_event_handler=somecommand
297
298
299
300# MAXIMUM CONCURRENT SERVICE CHECKS
301# This option allows you to specify the maximum number of
302# service checks that can be run in parallel at any given time.
303# Specifying a value of 1 for this variable essentially prevents
304# any service checks from being parallelized. A value of 0
305# will not restrict the number of concurrent checks that are
306# being executed.
307
308max_concurrent_checks=0
309
310
311# CHECK RESULT PATH
312# This is directory where Naemon reads check results of host and
313# service checks to further process them.
314#
315# Note: Naemon does not require this folder internally but it still
316# can be used to pass check results to Naemon.
317
318check_result_path=@cacheDir@/checkresults
319
320
321# CACHED HOST CHECK HORIZON
322# This option determines the maximum amount of time (in seconds)
323# that the state of a previous host check is considered current.
324# Cached host states (from host checks that were performed more
325# recently that the timeframe specified by this value) can immensely
326# improve performance in regards to the host check logic.
327# Too high of a value for this option may result in inaccurate host
328# states being used by Naemon, while a lower value may result in a
329# performance hit for host checks. Use a value of 0 to disable host
330# check caching.
331
332cached_host_check_horizon=15
333
334
335
336# CACHED SERVICE CHECK HORIZON
337# This option determines the maximum amount of time (in seconds)
338# that the state of a previous service check is considered current.
339# Cached service states (from service checks that were performed more
340# recently that the timeframe specified by this value) can immensely
341# improve performance in regards to predictive dependency checks.
342# Use a value of 0 to disable service check caching.
343
344cached_service_check_horizon=15
345
346
347
348# ENABLE PREDICTIVE HOST DEPENDENCY CHECKS
349# This option determines whether or not Naemon will attempt to execute
350# checks of hosts when it predicts that future dependency logic test
351# may be needed. These predictive checks can help ensure that your
352# host dependency logic works well.
353# Values:
354# 0 = Disable predictive checks
355# 1 = Enable predictive checks (default)
356
357enable_predictive_host_dependency_checks=1
358
359
360
361# ENABLE PREDICTIVE SERVICE DEPENDENCY CHECKS
362# This option determines whether or not Naemon will attempt to execute
363# checks of service when it predicts that future dependency logic test
364# may be needed. These predictive checks can help ensure that your
365# service dependency logic works well.
366# Values:
367# 0 = Disable predictive checks
368# 1 = Enable predictive checks (default)
369
370enable_predictive_service_dependency_checks=1
371
372
373
374# SOFT STATE DEPENDENCIES
375# This option determines whether or not Naemon will use soft state
376# information when checking host and service dependencies. Normally
377# Naemon will only use the latest hard host or service state when
378# checking dependencies. If you want it to use the latest state (regardless
379# of whether its a soft or hard state type), enable this option.
380# Values:
381# 0 = Don't use soft state dependencies (default)
382# 1 = Use soft state dependencies
383
384soft_state_dependencies=0
385
386
387
388# TIME CHANGE ADJUSTMENT THRESHOLDS
389# These options determine when Naemon will react to detected changes
390# in system time (either forward or backwards).
391
392#time_change_threshold=900
393
394
395
396# TIMEOUT VALUES
397# These options control how much time Naemon will allow various
398# types of commands to execute before killing them off. Options
399# are available for controlling maximum time allotted for
400# service checks, host checks, event handlers, notifications, the
401# ocsp command, and performance data commands. All values are in
402# seconds.
403
404service_check_timeout=60
405host_check_timeout=30
406event_handler_timeout=30
407notification_timeout=30
408ocsp_timeout=5
409perfdata_timeout=5
410
411
412
413# RETAIN STATE INFORMATION
414# This setting determines whether or not Naemon will save state
415# information for services and hosts before it shuts down. Upon
416# startup Naemon will reload all saved service and host state
417# information before starting to monitor. This is useful for
418# maintaining long-term data on state statistics, etc, but will
419# slow Naemon down a bit when it (re)starts. Since its only
420# a one-time penalty, I think its well worth the additional
421# startup delay.
422
423retain_state_information=1
424
425
426
427# STATE RETENTION FILE
428# This is the file that Naemon should use to store host and
429# service state information before it shuts down. The state
430# information in this file is also read immediately prior to
431# starting to monitor the network when Naemon is restarted.
432# This file is used only if the retain_state_information
433# variable is set to 1.
434
435state_retention_file=@varDir@/retention.dat
436
437
438
439# RETENTION DATA UPDATE INTERVAL
440# This setting determines how often (in minutes) that Naemon
441# will automatically save retention data during normal operation.
442# If you set this value to 0, Naemon will not save retention
443# data at regular interval, but it will still save retention
444# data before shutting down or restarting. If you have disabled
445# state retention, this option has no effect.
446
447retention_update_interval=60
448
449
450
451# USE RETAINED PROGRAM STATE
452# This setting determines whether or not Naemon will set
453# program status variables based on the values saved in the
454# retention file. If you want to use retained program status
455# information, set this value to 1. If not, set this value
456# to 0.
457
458use_retained_program_state=1
459
460
461
462# USE RETAINED SCHEDULING INFO
463# This setting determines whether or not Naemon will retain
464# the scheduling info (next check time) for hosts and services
465# based on the values saved in the retention file. If you
466# If you want to use retained scheduling info, set this
467# value to 1. If not, set this value to 0.
468
469use_retained_scheduling_info=1
470
471
472# RETAINED_SCHEDULING_RANDOMIZE_WINDOW
473# If use_retained_scheduling info is enabled, this setting
474# sets the window (in seconds), in which checks that were
475# supposed to executed during a restart, is rescheduled.
476# That is, if set to 60 seconds, then all checks that were
477# missed due to a restart will be scheduled randomly to be
478# executed in the first 60 seconds after a restart.
479# If the retained_scheduling_randomize_window is larger than
480# the objects check_interval, the check_interval is used
481# instead.
482
483retained_scheduling_randomize_window=60
484
485
486# RETAINED ATTRIBUTE MASKS (ADVANCED FEATURE)
487# The following variables are used to specify specific host and
488# service attributes that should *not* be retained by Naemon during
489# program restarts.
490#
491# The values of the masks are bitwise ANDs of values specified
492# by the "MODATTR_" definitions found in include/common.h.
493# For example, if you do not want the current enabled/disabled state
494# of flap detection and event handlers for hosts to be retained, you
495# would use a value of 24 for the host attribute mask...
496# MODATTR_EVENT_HANDLER_ENABLED (8) + MODATTR_FLAP_DETECTION_ENABLED (16) = 24
497
498# This mask determines what host attributes are not retained
499retained_host_attribute_mask=0
500
501# This mask determines what service attributes are not retained
502retained_service_attribute_mask=0
503
504# These two masks determine what process attributes are not retained.
505# There are two masks, because some process attributes have host and service
506# options. For example, you can disable active host checks, but leave active
507# service checks enabled.
508retained_process_host_attribute_mask=0
509retained_process_service_attribute_mask=0
510
511# These two masks determine what contact attributes are not retained.
512# There are two masks, because some contact attributes have host and
513# service options. For example, you can disable host notifications for
514# a contact, but leave service notifications enabled for them.
515retained_contact_host_attribute_mask=0
516retained_contact_service_attribute_mask=0
517
518
519
520# INTERVAL LENGTH
521# This is the seconds per unit interval as used in the
522# host/contact/service configuration files. Setting this to 60 means
523# that each interval is one minute long (60 seconds). Other settings
524# have not been tested much, so your mileage is likely to vary...
525
526interval_length=60
527
528
529
530# AGGRESSIVE HOST CHECKING OPTION
531# If you don't want to turn on aggressive host checking features, set
532# this value to 0 (the default). Otherwise set this value to 1 to
533# enable the aggressive check option. Read the docs for more info
534# on what aggressive host check is or check out the source code in
535# base/checks.c
536
537use_aggressive_host_checking=0
538
539
540
541# SERVICE CHECK EXECUTION OPTION
542# This determines whether or not Naemon will actively execute
543# service checks when it initially starts. If this option is
544# disabled, checks are not actively made, but Naemon can still
545# receive and process passive check results that come in. Unless
546# you're implementing redundant hosts or have a special need for
547# disabling the execution of service checks, leave this enabled!
548# Values: 1 = enable checks, 0 = disable checks
549
550execute_service_checks=1
551
552
553
554# PASSIVE SERVICE CHECK ACCEPTANCE OPTION
555# This determines whether or not Naemon will accept passive
556# service checks results when it initially (re)starts.
557# Values: 1 = accept passive checks, 0 = reject passive checks
558
559accept_passive_service_checks=1
560
561
562
563# HOST CHECK EXECUTION OPTION
564# This determines whether or not Naemon will actively execute
565# host checks when it initially starts. If this option is
566# disabled, checks are not actively made, but Naemon can still
567# receive and process passive check results that come in. Unless
568# you're implementing redundant hosts or have a special need for
569# disabling the execution of host checks, leave this enabled!
570# Values: 1 = enable checks, 0 = disable checks
571
572execute_host_checks=1
573
574
575
576# PASSIVE HOST CHECK ACCEPTANCE OPTION
577# This determines whether or not Naemon will accept passive
578# host checks results when it initially (re)starts.
579# Values: 1 = accept passive checks, 0 = reject passive checks
580
581accept_passive_host_checks=1
582
583
584
585# NOTIFICATIONS OPTION
586# This determines whether or not Naemon will sent out any host or
587# service notifications when it is initially (re)started.
588# Values: 1 = enable notifications, 0 = disable notifications
589
590enable_notifications=1
591
592
593
594# EVENT HANDLER USE OPTION
595# This determines whether or not Naemon will run any host or
596# service event handlers when it is initially (re)started. Unless
597# you're implementing redundant hosts, leave this option enabled.
598# Values: 1 = enable event handlers, 0 = disable event handlers
599
600enable_event_handlers=1
601
602
603
604# PROCESS PERFORMANCE DATA OPTION
605# This determines whether or not Naemon will process performance
606# data returned from service and host checks. If this option is
607# enabled, host performance data will be processed using the
608# host_perfdata_command (defined below) and service performance
609# data will be processed using the service_perfdata_command (also
610# defined below). Read the HTML docs for more information on
611# performance data.
612# Values: 1 = process performance data, 0 = do not process performance data
613
614process_performance_data=0
615
616
617
618# HOST AND SERVICE PERFORMANCE DATA PROCESSING COMMANDS
619# These commands are run after every host and service check is
620# performed. These commands are executed only if the
621# enable_performance_data option (above) is set to 1. The command
622# argument is the short name of a command definition that you
623# define in your host configuration file. Read the HTML docs for
624# more information on performance data.
625
626#host_perfdata_command=process-host-perfdata
627#service_perfdata_command=process-service-perfdata
628
629
630
631# HOST AND SERVICE PERFORMANCE DATA FILES
632# These files are used to store host and service performance data.
633# Performance data is only written to these files if the
634# enable_performance_data option (above) is set to 1.
635
636#host_perfdata_file=@varDir@/host-perfdata
637#service_perfdata_file=@varDir@/service-perfdata
638
639
640
641# HOST AND SERVICE PERFORMANCE DATA FILE TEMPLATES
642# These options determine what data is written (and how) to the
643# performance data files. The templates may contain macros, special
644# characters (\t for tab, \r for carriage return, \n for newline)
645# and plain text. A newline is automatically added after each write
646# to the performance data file. Some examples of what you can do are
647# shown below.
648
649#host_perfdata_file_template=[HOSTPERFDATA]\t$TIMET$\t$HOSTNAME$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$
650#service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$
651
652
653
654# HOST AND SERVICE PERFORMANCE DATA FILE MODES
655# This option determines whether or not the host and service
656# performance data files are opened in write ("w") or append ("a")
657# mode. If you want to use named pipes, you should use the special
658# pipe ("p") mode which avoid blocking at startup, otherwise you will
659# likely want the defult append ("a") mode.
660
661#host_perfdata_file_mode=a
662#service_perfdata_file_mode=a
663
664
665
666# HOST AND SERVICE PERFORMANCE DATA FILE PROCESSING INTERVAL
667# These options determine how often (in seconds) the host and service
668# performance data files are processed using the commands defined
669# below. A value of 0 indicates the files should not be periodically
670# processed.
671
672#host_perfdata_file_processing_interval=0
673#service_perfdata_file_processing_interval=0
674
675
676
677# HOST AND SERVICE PERFORMANCE DATA FILE PROCESSING COMMANDS
678# These commands are used to periodically process the host and
679# service performance data files. The interval at which the
680# processing occurs is determined by the options above.
681
682#host_perfdata_file_processing_command=process-host-perfdata-file
683#service_perfdata_file_processing_command=process-service-perfdata-file
684
685
686
687# HOST AND SERVICE PERFORMANCE DATA PROCESS EMPTY RESULTS
688# These options determine wether the core will process empty perfdata
689# results or not. This is needed for distributed monitoring, and intentionally
690# turned on by default.
691# If you don't require empty perfdata - saving some cpu cycles
692# on unwanted macro calculation - you can turn that off. Be careful!
693# Values: 1 = enable, 0 = disable
694
695#host_perfdata_process_empty_results=1
696#service_perfdata_process_empty_results=1
697
698
699# OBSESS OVER SERVICE CHECKS OPTION
700# This determines whether or not Naemon will obsess over service
701# checks and run the ocsp_command defined below. Unless you're
702# planning on implementing distributed monitoring, do not enable
703# this option. Read the HTML docs for more information on
704# implementing distributed monitoring.
705# Values: 1 = obsess over services, 0 = do not obsess (default)
706
707obsess_over_services=0
708
709
710
711# OBSESSIVE COMPULSIVE SERVICE PROCESSOR COMMAND
712# This is the command that is run for every service check that is
713# processed by Naemon. This command is executed only if the
714# obsess_over_services option (above) is set to 1. The command
715# argument is the short name of a command definition that you
716# define in your host configuration file. Read the HTML docs for
717# more information on implementing distributed monitoring.
718
719#ocsp_command=somecommand
720
721
722
723# OBSESS OVER HOST CHECKS OPTION
724# This determines whether or not Naemon will obsess over host
725# checks and run the ochp_command defined below. Unless you're
726# planning on implementing distributed monitoring, do not enable
727# this option. Read the HTML docs for more information on
728# implementing distributed monitoring.
729# Values: 1 = obsess over hosts, 0 = do not obsess (default)
730
731obsess_over_hosts=0
732
733
734
735# OBSESSIVE COMPULSIVE HOST PROCESSOR COMMAND
736# This is the command that is run for every host check that is
737# processed by Naemon. This command is executed only if the
738# obsess_over_hosts option (above) is set to 1. The command
739# argument is the short name of a command definition that you
740# define in your host configuration file. Read the HTML docs for
741# more information on implementing distributed monitoring.
742
743#ochp_command=somecommand
744
745
746
747# TRANSLATE PASSIVE HOST CHECKS OPTION
748# This determines whether or not Naemon will translate
749# DOWN/UNREACHABLE passive host check results into their proper
750# state for this instance of Naemon. This option is useful
751# if you have distributed or failover monitoring setup. In
752# these cases your other Naemon servers probably have a different
753# "view" of the network, with regards to the parent/child relationship
754# of hosts. If a distributed monitoring server thinks a host
755# is DOWN, it may actually be UNREACHABLE from the point of
756# this Naemon instance. Enabling this option will tell Naemon
757# to translate any DOWN or UNREACHABLE host states it receives
758# passively into the correct state from the view of this server.
759# Values: 1 = perform translation, 0 = do not translate (default)
760
761translate_passive_host_checks=0
762
763
764
765# PASSIVE HOST CHECKS ARE SOFT OPTION
766# This determines whether or not Naemon will treat passive host
767# checks as being HARD or SOFT. By default, a passive host check
768# result will put a host into a HARD state type. This can be changed
769# by enabling this option.
770# Values: 0 = passive checks are HARD, 1 = passive checks are SOFT
771
772passive_host_checks_are_soft=0
773
774
775
776# ORPHANED HOST/SERVICE CHECK OPTIONS
777# These options determine whether or not Naemon will periodically
778# check for orphaned host service checks. Since service checks are
779# not rescheduled until the results of their previous execution
780# instance are processed, there exists a possibility that some
781# checks may never get rescheduled. A similar situation exists for
782# host checks, although the exact scheduling details differ a bit
783# from service checks. Orphaned checks seem to be a rare
784# problem and should not happen under normal circumstances.
785# If you have problems with service checks never getting
786# rescheduled, make sure you have orphaned service checks enabled.
787# Values: 1 = enable checks, 0 = disable checks
788
789check_for_orphaned_services=1
790check_for_orphaned_hosts=1
791
792
793
794# SERVICE FRESHNESS CHECK OPTION
795# This option determines whether or not Naemon will periodically
796# check the "freshness" of service results. Enabling this option
797# is useful for ensuring passive checks are received in a timely
798# manner.
799# Values: 1 = enabled freshness checking, 0 = disable freshness checking
800
801check_service_freshness=1
802
803
804
805# SERVICE FRESHNESS CHECK INTERVAL
806# This setting determines how often (in seconds) Naemon will
807# check the "freshness" of service check results. If you have
808# disabled service freshness checking, this option has no effect.
809
810service_freshness_check_interval=60
811
812
813
814# SERVICE CHECK TIMEOUT STATE
815# This setting determines the state Naemon will report when a
816# service check times out - that is does not respond within
817# service_check_timeout seconds. This can be useful if a
818# machine is running at too high a load and you do not want
819# to consider a failed service check to be critical (the default).
820# Valid settings are:
821# c - Critical (default)
822# u - Unknown
823# w - Warning
824# o - OK
825
826service_check_timeout_state=c
827
828
829
830# HOST FRESHNESS CHECK OPTION
831# This option determines whether or not Naemon will periodically
832# check the "freshness" of host results. Enabling this option
833# is useful for ensuring passive checks are received in a timely
834# manner.
835# Values: 1 = enabled freshness checking, 0 = disable freshness checking
836
837check_host_freshness=0
838
839
840
841# HOST FRESHNESS CHECK INTERVAL
842# This setting determines how often (in seconds) Naemon will
843# check the "freshness" of host check results. If you have
844# disabled host freshness checking, this option has no effect.
845
846host_freshness_check_interval=60
847
848
849
850
851# ADDITIONAL FRESHNESS THRESHOLD LATENCY
852# This setting determines the number of seconds that Naemon
853# will add to any host and service freshness thresholds that
854# it calculates (those not explicitly specified by the user).
855
856additional_freshness_latency=15
857
858
859
860
861# FLAP DETECTION OPTION
862# This option determines whether or not Naemon will try
863# and detect hosts and services that are "flapping".
864# Flapping occurs when a host or service changes between
865# states too frequently. When Naemon detects that a
866# host or service is flapping, it will temporarily suppress
867# notifications for that host/service until it stops
868# flapping. Flap detection is very experimental, so read
869# the HTML documentation before enabling this feature!
870# Values: 1 = enable flap detection
871# 0 = disable flap detection (default)
872
873enable_flap_detection=1
874
875
876
877# FLAP DETECTION THRESHOLDS FOR HOSTS AND SERVICES
878# Read the HTML documentation on flap detection for
879# an explanation of what this option does. This option
880# has no effect if flap detection is disabled.
881
882low_service_flap_threshold=5.0
883high_service_flap_threshold=20.0
884low_host_flap_threshold=5.0
885high_host_flap_threshold=20.0
886
887
888
889# DATE FORMAT OPTION
890# This option determines how short dates are displayed. Valid options
891# include:
892# us (MM-DD-YYYY HH:MM:SS)
893# euro (DD-MM-YYYY HH:MM:SS)
894# iso8601 (YYYY-MM-DD HH:MM:SS)
895# strict-iso8601 (YYYY-MM-DDTHH:MM:SS)
896#
897
898date_format=us
899
900
901
902
903# TIMEZONE OFFSET
904# This option is used to override the default timezone that this
905# instance of Naemon runs in. If not specified, Naemon will use
906# the system configured timezone.
907
908#use_timezone=US/Mountain
909#use_timezone=Australia/Brisbane
910
911
912
913# ILLEGAL OBJECT NAME CHARACTERS
914# This option allows you to specify illegal characters that cannot
915# be used in host names, service descriptions, or names of other
916# object types.
917
918illegal_object_name_chars=`~!$%^&*|'"<>?,()=
919
920
921
922# ILLEGAL MACRO OUTPUT CHARACTERS
923# This option allows you to specify illegal characters that are
924# stripped from macros before being used in notifications, event
925# handlers, etc. This DOES NOT affect macros used in service or
926# host check commands.
927# The following macros are stripped of the characters you specify:
928# $HOSTOUTPUT$
929# $HOSTPERFDATA$
930# $HOSTACKAUTHOR$
931# $HOSTACKCOMMENT$
932# $SERVICEOUTPUT$
933# $SERVICEPERFDATA$
934# $SERVICEACKAUTHOR$
935# $SERVICEACKCOMMENT$
936
937illegal_macro_output_chars=`~$&|'"<>
938
939
940
941# REGULAR EXPRESSION MATCHING
942# This option controls whether or not regular expression matching
943# takes place in the object config files. Regular expression
944# matching is used to match host, hostgroup, service, and service
945# group names/descriptions in some fields of various object types.
946# Values: 1 = enable regexp matching, 0 = disable regexp matching
947
948use_regexp_matching=0
949
950
951
952# "TRUE" REGULAR EXPRESSION MATCHING
953# This option controls whether or not "true" regular expression
954# matching takes place in the object config files. This option
955# only has an effect if regular expression matching is enabled
956# (see above). If this option is DISABLED, regular expression
957# matching only occurs if a string contains wildcard characters
958# (* and ?). If the option is ENABLED, regexp matching occurs
959# all the time (which can be annoying).
960# Values: 1 = enable true matching, 0 = disable true matching
961
962use_true_regexp_matching=0
963
964
965
966# ADMINISTRATOR EMAIL/PAGER ADDRESSES
967# The email and pager address of a global administrator (likely you).
968# Naemon never uses these values itself, but you can access them by
969# using the $ADMINEMAIL$ and $ADMINPAGER$ macros in your notification
970# commands.
971
972admin_email=naemon@localhost
973admin_pager=pagenaemon@localhost
974
975
976
977# DEBUG LEVEL
978# This option determines how much (if any) debugging information will
979# be written to the debug file. OR values together to log multiple
980# types of information.
981# Values:
982# -1 = Everything
983# 0 = Nothing
984# 1 = Functions
985# 2 = Configuration
986# 4 = Process information
987# 8 = Scheduled events
988# 16 = Host/service checks
989# 32 = Notifications
990# 64 = Event broker
991# 128 = External commands
992# 256 = Commands
993# 512 = Scheduled downtime
994# 1024 = Comments
995# 2048 = Macros
996
997debug_level=0
998
999
1000
1001# DEBUG VERBOSITY
1002# This option determines how verbose the debug log out will be.
1003# Values: 0 = Brief output
1004# 1 = More detailed
1005# 2 = Very detailed
1006
1007debug_verbosity=1
1008
1009
1010
1011# DEBUG FILE
1012# This option determines where Naemon should write debugging information.
1013
1014debug_file=@cacheDir@/naemon.debug
1015
1016
1017
1018# MAX DEBUG FILE SIZE
1019# This option determines the maximum size (in bytes) of the debug file. If
1020# the file grows larger than this size, it will be renamed with a .old
1021# extension. If a file already exists with a .old extension it will
1022# automatically be deleted. This helps ensure your disk space usage doesn't
1023# get out of control when debugging Naemon.
1024
1025max_debug_file_size=1000000
1026
1027
1028
1029# Should we allow hostgroups to have no hosts, we default this to off since
1030# that was the old behavior
1031
1032allow_empty_hostgroup_assignment=0
1033
1034
1035
1036# Normally worker count is dynamically allocated based on 1.5 * number of cpu's
1037# with a minimum of 4 workers. This value will override the defaults
1038
1039#check_workers=3
1040
1041
1042# DISABLE SERVICE CHECKS WHEN HOST DOWN
1043# This option will disable all service checks if the host is not in an UP state
1044#
1045# While desirable in some environments, enabling this value can distort report
1046# values as the expected quantity of checks will not have been performed
1047
1048#host_down_disable_service_checks=0
1049
1050
1051# CIRCULAR DEPENDENCIES (EXPERIMENTAL)
1052# Allow for circular dependencies in naemon's host graph.
1053# Enabaling this will cause propagation the following to stop working:
1054# * scheduling downtime
1055# * enabling notification
1056# * disabling notification
1057# This feature is experimental and bugs might occur.
1058
1059allow_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 @@
17 }, 17 },
18 "myuids": { 18 "myuids": {
19 "locked": { 19 "locked": {
20 "dir": "flakes/myuids", 20 "lastModified": 1,
21 "lastModified": 1628207001, 21 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
22 "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=", 22 "path": "../myuids",
23 "ref": "master", 23 "type": "path"
24 "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
25 "revCount": 865,
26 "type": "git",
27 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
28 }, 24 },
29 "original": { 25 "original": {
30 "dir": "flakes/myuids", 26 "path": "../myuids",
31 "type": "git", 27 "type": "path"
32 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
33 } 28 }
34 }, 29 },
35 "nixpkgs": { 30 "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 @@
2 description = "Open source ARC implementation"; 2 description = "Open source ARC implementation";
3 3
4 inputs.myuids = { 4 inputs.myuids = {
5 url = "https://git.immae.eu/perso/Immae/Config/Nix.git"; 5 url = "path:../myuids";
6 type = "git";
7 dir = "flakes/myuids";
8 }; 6 };
9 inputs.flake-utils.url = "github:numtide/flake-utils"; 7 inputs.flake-utils.url = "github:numtide/flake-utils";
10 inputs.nixpkgs.url = "github:NixOS/nixpkgs"; 8 inputs.nixpkgs.url = "github:NixOS/nixpkgs";
@@ -66,6 +64,8 @@
66 defaultSock = "/run/openarc/openarc.sock"; 64 defaultSock = "/run/openarc/openarc.sock";
67 args = [ "-f" "-p" "local:${cfg.socket}" ] ++ lib.optionals (cfg.configFile != null) [ "-c" cfg.configFile ]; 65 args = [ "-f" "-p" "local:${cfg.socket}" ] ++ lib.optionals (cfg.configFile != null) [ "-c" cfg.configFile ];
68 in { 66 in {
67 # Necessary for situations where flake gets included multiple times
68 key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
69 options = { 69 options = {
70 services.openarc = { 70 services.openarc = {
71 enable = lib.mkOption { 71 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 @@
17 }, 17 },
18 "myuids": { 18 "myuids": {
19 "locked": { 19 "locked": {
20 "dir": "flakes/myuids", 20 "lastModified": 1,
21 "lastModified": 1628207001, 21 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
22 "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=", 22 "path": "../myuids",
23 "ref": "master", 23 "type": "path"
24 "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
25 "revCount": 865,
26 "type": "git",
27 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
28 }, 24 },
29 "original": { 25 "original": {
30 "dir": "flakes/myuids", 26 "path": "../myuids",
31 "type": "git", 27 "type": "path"
32 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
33 } 28 }
34 }, 29 },
35 "nixpkgs": { 30 "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 @@
2 description = "Open source ARC implementation"; 2 description = "Open source ARC implementation";
3 3
4 inputs.myuids = { 4 inputs.myuids = {
5 url = "https://git.immae.eu/perso/Immae/Config/Nix.git"; 5 url = "path:../myuids";
6 type = "git";
7 dir = "flakes/myuids";
8 }; 6 };
9 inputs.flake-utils.url = "github:numtide/flake-utils"; 7 inputs.flake-utils.url = "github:numtide/flake-utils";
10 inputs.nixpkgs.url = "github:NixOS/nixpkgs"; 8 inputs.nixpkgs.url = "github:NixOS/nixpkgs";
@@ -51,7 +49,9 @@
51 defaultSock = "/run/opendmarc/opendmarc.sock"; 49 defaultSock = "/run/opendmarc/opendmarc.sock";
52 args = [ "-f" "-l" "-p" "local:${cfg.socket}" ] ++ lib.optionals (cfg.configFile != null) [ "-c" cfg.configFile ]; 50 args = [ "-f" "-l" "-p" "local:${cfg.socket}" ] ++ lib.optionals (cfg.configFile != null) [ "-c" cfg.configFile ];
53 in { 51 in {
54 options = { 52 # Necessary for situations where flake gets included multiple times
53 key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
54 options = {
55 services.opendmarc = { 55 services.opendmarc = {
56 enable = lib.mkOption { 56 enable = lib.mkOption {
57 type = lib.types.bool; 57 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 @@
1{ bundlerEnv, defaultGemConfig, writeShellScript, v8, stdenv }:
2
3let
4 gems = bundlerEnv {
5 name = "openfoodnetwork";
6 gemfile = ./Gemfile;
7 lockfile = ./Gemfile.lock;
8 gemset = import ./gemset.nix;
9 gemConfig = defaultGemConfig // {
10 libv8-node = attrs: {
11 dontBuild = false;
12 postPatch = let
13 noopScript = writeShellScript "noop" "exit 0";
14 linkFiles = writeShellScript "link-files" ''
15 cd ../..
16
17 mkdir -p vendor/v8/out.gn/libv8/obj/
18 ln -s "${v8}/lib/libv8.a" vendor/v8/out.gn/libv8/obj/libv8_monolith.a
19
20 ln -s ${v8}/include vendor/v8/include
21
22 mkdir -p ext/libv8-node
23 echo '--- !ruby/object:Libv8::Node::Location::Vendor {}' >ext/libv8-node/.location.yml
24 '';
25 in ''
26 cp ${noopScript} libexec/build-libv8
27 cp ${noopScript} libexec/build-monolith
28 cp ${noopScript} libexec/download-node
29 cp ${noopScript} libexec/extract-node
30 cp ${linkFiles} libexec/inject-libv8
31 '';
32 };
33 };
34 };
35in
36 stdenv.mkDerivation {
37 name = "openfoodnetwork";
38 inherit
39 }
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 @@
1{
2 actioncable = {
3 dependencies = ["actionpack" "activesupport" "nio4r" "websocket-driver"];
4 groups = ["default"];
5 platforms = [];
6 source = {
7 remotes = ["https://rubygems.org"];
8 sha256 = "0ilq5mniarm0zlvnkagqj9n9p73ljrhphciz02aymrpfxxxclz2x";
9 type = "gem";
10 };
11 version = "6.1.4.1";
12 };
13 actionmailbox = {
14 dependencies = ["actionpack" "activejob" "activerecord" "activestorage" "activesupport" "mail"];
15 groups = ["default"];
16 platforms = [];
17 source = {
18 remotes = ["https://rubygems.org"];
19 sha256 = "16azdnjws215clb056b9mabglx4b8f61hr82hv7hm80dmn89zqq6";
20 type = "gem";
21 };
22 version = "6.1.4.1";
23 };
24 actionmailer = {
25 dependencies = ["actionpack" "actionview" "activejob" "activesupport" "mail" "rails-dom-testing"];
26 groups = ["default"];
27 platforms = [];
28 source = {
29 remotes = ["https://rubygems.org"];
30 sha256 = "00s07l2ac5igch1g2rpa0linmiq7mhgk6v6wxkckg8gbiqijb592";
31 type = "gem";
32 };
33 version = "6.1.4.1";
34 };
35 actionpack = {
36 dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
37 groups = ["default" "development" "test"];
38 platforms = [];
39 source = {
40 remotes = ["https://rubygems.org"];
41 sha256 = "0xgysqnibjsy6kdz10x2xb3kwa6lssiqhh0zggrbgs31ypwhlpia";
42 type = "gem";
43 };
44 version = "6.1.4.1";
45 };
46 actionpack-action_caching = {
47 dependencies = ["actionpack"];
48 groups = ["default"];
49 platforms = [];
50 source = {
51 remotes = ["https://rubygems.org"];
52 sha256 = "1bxaz8sdhqkdjqwk58icy9668s0yxpgm28gdkdmxl3g41m94b8id";
53 type = "gem";
54 };
55 version = "1.2.2";
56 };
57 actiontext = {
58 dependencies = ["actionpack" "activerecord" "activestorage" "activesupport" "nokogiri"];
59 groups = ["default"];
60 platforms = [];
61 source = {
62 remotes = ["https://rubygems.org"];
63 sha256 = "0m4fy4qqh09vnzbhx383vjdfid6fzbs49bzzg415x05nmmjkx582";
64 type = "gem";
65 };
66 version = "6.1.4.1";
67 };
68 actionview = {
69 dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
70 groups = ["default" "development" "test"];
71 platforms = [];
72 source = {
73 remotes = ["https://rubygems.org"];
74 sha256 = "1yf4ic5kl324rs0raralpwx24s6hvvdzxfhinafylf8f3x7jj23z";
75 type = "gem";
76 };
77 version = "6.1.4.1";
78 };
79 active_model_serializers = {
80 dependencies = ["activemodel"];
81 groups = ["default"];
82 platforms = [];
83 source = {
84 remotes = ["https://rubygems.org"];
85 sha256 = "0k3mgia2ahh7mbk30hjq9pzqbk0kh281s91kq2z6p555nv9y6l3k";
86 type = "gem";
87 };
88 version = "0.8.4";
89 };
90 activejob = {
91 dependencies = ["activesupport" "globalid"];
92 groups = ["default"];
93 platforms = [];
94 source = {
95 remotes = ["https://rubygems.org"];
96 sha256 = "1q7c0i0kwarxgcbxk71wa9jnlg45grbxmhlrh7dk9bgcv7r7r7hn";
97 type = "gem";
98 };
99 version = "6.1.4.1";
100 };
101 activemerchant = {
102 dependencies = ["activesupport" "builder" "i18n" "nokogiri"];
103 groups = ["default"];
104 platforms = [];
105 source = {
106 remotes = ["https://rubygems.org"];
107 sha256 = "0ajmcgc4idxmvh8sghyb1ngxsc9x6r5yfi4r1z22d6a4j7b1yjzj";
108 type = "gem";
109 };
110 version = "1.123.0";
111 };
112 activemodel = {
113 dependencies = ["activesupport"];
114 groups = ["default" "development" "test"];
115 platforms = [];
116 source = {
117 remotes = ["https://rubygems.org"];
118 sha256 = "16ixam4lni8b5lgx0whnax0imzh1dh10fy5r9pxs52n83yz5nbq3";
119 type = "gem";
120 };
121 version = "6.1.4.1";
122 };
123 activerecord = {
124 dependencies = ["activemodel" "activesupport"];
125 groups = ["default" "development" "test"];
126 platforms = [];
127 source = {
128 remotes = ["https://rubygems.org"];
129 sha256 = "1ccgvlj767ybps3pxlaa4iw77n7wbriw2sr8754id3ngjfap08ja";
130 type = "gem";
131 };
132 version = "6.1.4.1";
133 };
134 activerecord-import = {
135 dependencies = ["activerecord"];
136 groups = ["default"];
137 platforms = [];
138 source = {
139 remotes = ["https://rubygems.org"];
140 sha256 = "17ydad9gcsh0c9ny68fyvxmh6rbld4pyvyabnc7882678dnvfy8i";
141 type = "gem";
142 };
143 version = "1.2.0";
144 };
145 activerecord-postgresql-adapter = {
146 dependencies = ["pg"];
147 groups = ["default"];
148 platforms = [];
149 source = {
150 remotes = ["https://rubygems.org"];
151 sha256 = "1wdfd1mkns28ilr6nm18x69h651mjxwb8p2zk8pb6cjgx7c26axl";
152 type = "gem";
153 };
154 version = "0.0.1";
155 };
156 activerecord-session_store = {
157 dependencies = ["actionpack" "activerecord" "multi_json" "rack" "railties"];
158 groups = ["default"];
159 platforms = [];
160 source = {
161 remotes = ["https://rubygems.org"];
162 sha256 = "06ddhz1b2yg72iv09n48gcd3ix5da7hxlzi7vvj13nrps2qwlffg";
163 type = "gem";
164 };
165 version = "2.0.0";
166 };
167 activestorage = {
168 dependencies = ["actionpack" "activejob" "activerecord" "activesupport" "marcel" "mini_mime"];
169 groups = ["default"];
170 platforms = [];
171 source = {
172 remotes = ["https://rubygems.org"];
173 sha256 = "17knzz9fvqg4x582vy0xmlgjkxfb13xyzl2rgw19qfma86hxsvvi";
174 type = "gem";
175 };
176 version = "6.1.4.1";
177 };
178 activesupport = {
179 dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo" "zeitwerk"];
180 groups = ["default" "development" "test"];
181 platforms = [];
182 source = {
183 remotes = ["https://rubygems.org"];
184 sha256 = "19gx1jcq46x9d1pi1w8xq0bgvvfw239y4lalr8asm291gj3q3ds4";
185 type = "gem";
186 };
187 version = "6.1.4.1";
188 };
189 acts-as-taggable-on = {
190 dependencies = ["activerecord"];
191 groups = ["default"];
192 platforms = [];
193 source = {
194 remotes = ["https://rubygems.org"];
195 sha256 = "0kfnyix173bazjswab21bx7hmqmik71awj2kz090fsa2nv58c4mw";
196 type = "gem";
197 };
198 version = "8.1.0";
199 };
200 acts_as_list = {
201 dependencies = ["activerecord"];
202 groups = ["default"];
203 platforms = [];
204 source = {
205 remotes = ["https://rubygems.org"];
206 sha256 = "12p22h59c45dnccb51pqk275ziyi502azf9w3qcnkcsq827ma5jm";
207 type = "gem";
208 };
209 version = "1.0.4";
210 };
211 addressable = {
212 dependencies = ["public_suffix"];
213 groups = ["default" "development" "test"];
214 platforms = [];
215 source = {
216 remotes = ["https://rubygems.org"];
217 sha256 = "022r3m9wdxljpbya69y2i3h9g3dhhfaqzidf95m6qjzms792jvgp";
218 type = "gem";
219 };
220 version = "2.8.0";
221 };
222 afm = {
223 groups = ["default" "test"];
224 platforms = [];
225 source = {
226 remotes = ["https://rubygems.org"];
227 sha256 = "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8";
228 type = "gem";
229 };
230 version = "0.2.2";
231 };
232 angular-rails-templates = {
233 dependencies = ["railties" "sprockets" "tilt"];
234 groups = ["default"];
235 platforms = [];
236 source = {
237 remotes = ["https://rubygems.org"];
238 sha256 = "0aja8b2bjj8af29zagkm6pv48s0933l0d38j5b4wgxipf0c0mjxq";
239 type = "gem";
240 };
241 version = "1.1.0";
242 };
243 angular_rails_csrf = {
244 dependencies = ["railties"];
245 groups = ["default"];
246 platforms = [];
247 source = {
248 remotes = ["https://rubygems.org"];
249 sha256 = "08g6xwz98apbfxwd0kbsxl7ll4bms11m563rjl4mavm1dnf3nsgh";
250 type = "gem";
251 };
252 version = "4.5.0";
253 };
254 angularjs-file-upload-rails = {
255 groups = ["default"];
256 platforms = [];
257 source = {
258 remotes = ["https://rubygems.org"];
259 sha256 = "07s0b8bwdp8asc16rp16q78p17cl5qnw8svqarbcsv0b1fkxiqbd";
260 type = "gem";
261 };
262 version = "2.4.1";
263 };
264 angularjs-rails = {
265 groups = ["default"];
266 platforms = [];
267 source = {
268 remotes = ["https://rubygems.org"];
269 sha256 = "01blhjrzg82l76s5fj7jcgnykxxdj61m5swwy9x0wxnxhid81rgx";
270 type = "gem";
271 };
272 version = "1.8.0";
273 };
274 Ascii85 = {
275 groups = ["default" "test"];
276 platforms = [];
277 source = {
278 remotes = ["https://rubygems.org"];
279 sha256 = "1ds4v9xgsyvijnlflak4dzf1qwmda9yd5bv8jwsb56nngd399rlw";
280 type = "gem";
281 };
282 version = "1.1.0";
283 };
284 ast = {
285 groups = ["default" "development"];
286 platforms = [];
287 source = {
288 remotes = ["https://rubygems.org"];
289 sha256 = "04nc8x27hlzlrr5c2gn7mar4vdr0apw5xg22wp6m8dx3wqr04a0y";
290 type = "gem";
291 };
292 version = "2.4.2";
293 };
294 awesome_nested_set = {
295 dependencies = ["activerecord"];
296 groups = ["default"];
297 platforms = [];
298 source = {
299 remotes = ["https://rubygems.org"];
300 sha256 = "06ggf81dy8wkds0b37xgx065b325fm0c6i6g1k0ml4ai8jwphm6r";
301 type = "gem";
302 };
303 version = "3.4.0";
304 };
305 awesome_print = {
306 groups = ["development" "test"];
307 platforms = [];
308 source = {
309 remotes = ["https://rubygems.org"];
310 sha256 = "0vkq6c8y2jvaw03ynds5vjzl1v9wg608cimkd3bidzxc0jvk56z9";
311 type = "gem";
312 };
313 version = "1.9.2";
314 };
315 aws-sdk = {
316 dependencies = ["aws-sdk-resources"];
317 groups = ["default"];
318 platforms = [];
319 source = {
320 remotes = ["https://rubygems.org"];
321 sha256 = "1xfan8fpiy019zp32l2a8smwfbii5m9hy49d8b8gvww2qcy5m3pr";
322 type = "gem";
323 };
324 version = "2.2.0";
325 };
326 aws-sdk-core = {
327 dependencies = ["jmespath"];
328 groups = ["default"];
329 platforms = [];
330 source = {
331 remotes = ["https://rubygems.org"];
332 sha256 = "1f8diki6xvz048i0lhkxqngirgmqqj50jda8vjw0xxgv3qzklq4r";
333 type = "gem";
334 };
335 version = "2.2.0";
336 };
337 aws-sdk-resources = {
338 dependencies = ["aws-sdk-core"];
339 groups = ["default"];
340 platforms = [];
341 source = {
342 remotes = ["https://rubygems.org"];
343 sha256 = "06y7sj2371pjw9vgsfipbz2g3pw3i4asdz27h1lb7pny8gwndkzk";
344 type = "gem";
345 };
346 version = "2.2.0";
347 };
348 bcrypt = {
349 groups = ["default"];
350 platforms = [];
351 source = {
352 remotes = ["https://rubygems.org"];
353 sha256 = "02r1c3isfchs5fxivbq99gc3aq4vfyn8snhcy707dal1p8qz12qb";
354 type = "gem";
355 };
356 version = "3.1.16";
357 };
358 bigdecimal = {
359 groups = ["default"];
360 platforms = [];
361 source = {
362 remotes = ["https://rubygems.org"];
363 sha256 = "0fxl2hybnfij668h7133p28f8b13jaj13wyyniqdiy8m3s6b1pcb";
364 type = "gem";
365 };
366 version = "3.0.2";
367 };
368 bindex = {
369 groups = ["default" "development"];
370 platforms = [];
371 source = {
372 remotes = ["https://rubygems.org"];
373 sha256 = "0zmirr3m02p52bzq4xgksq4pn8j641rx5d4czk68pv9rqnfwq7kv";
374 type = "gem";
375 };
376 version = "0.8.1";
377 };
378 bootsnap = {
379 dependencies = ["msgpack"];
380 groups = ["default"];
381 platforms = [];
382 source = {
383 remotes = ["https://rubygems.org"];
384 sha256 = "1ndjra3h86dq28njm2swmaw6n3vsywrycrf7i5iy9l8hrhfhv4x2";
385 type = "gem";
386 };
387 version = "1.9.1";
388 };
389 bugsnag = {
390 dependencies = ["concurrent-ruby"];
391 groups = ["default"];
392 platforms = [];
393 source = {
394 remotes = ["https://rubygems.org"];
395 sha256 = "19yz4s0sw2w8jywkdf445zpdkg3s9869hmxcs7w68xvykpx0ickb";
396 type = "gem";
397 };
398 version = "6.24.0";
399 };
400 builder = {
401 groups = ["default" "development" "test"];
402 platforms = [];
403 source = {
404 remotes = ["https://rubygems.org"];
405 sha256 = "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr";
406 type = "gem";
407 };
408 version = "3.2.4";
409 };
410 bullet = {
411 dependencies = ["activesupport" "uniform_notifier"];
412 groups = ["development" "test"];
413 platforms = [];
414 source = {
415 remotes = ["https://rubygems.org"];
416 sha256 = "01xachwsyykmp153514vz2khanbsz1n27j09za5gcxj54srh5l4p";
417 type = "gem";
418 };
419 version = "6.1.5";
420 };
421 byebug = {
422 groups = ["development" "test"];
423 platforms = [];
424 source = {
425 remotes = ["https://rubygems.org"];
426 sha256 = "0nx3yjf4xzdgb8jkmk2344081gqr22pgjqnmjg2q64mj5d6r9194";
427 type = "gem";
428 };
429 version = "11.1.3";
430 };
431 cable_ready = {
432 dependencies = ["rails" "thread-local"];
433 groups = ["default"];
434 platforms = [];
435 source = {
436 remotes = ["https://rubygems.org"];
437 sha256 = "06lqnv1b3zxgn189v7df6avf3zrk1snfxkbm1ax0fz129k997hak";
438 type = "gem";
439 };
440 version = "5.0.0.pre2";
441 };
442 cancancan = {
443 groups = ["default"];
444 platforms = [];
445 source = {
446 remotes = ["https://rubygems.org"];
447 sha256 = "05kb459laaw339n7mas37v4k83nwz228bfpaghgybza347341x85";
448 type = "gem";
449 };
450 version = "1.15.0";
451 };
452 capybara = {
453 dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
454 groups = ["development" "test"];
455 platforms = [];
456 source = {
457 remotes = ["https://rubygems.org"];
458 sha256 = "1viqcpsngy9fqjd68932m43ad6xj656d1x33nx9565q57chgi29k";
459 type = "gem";
460 };
461 version = "3.35.3";
462 };
463 catalog = {
464 groups = ["default"];
465 platforms = [];
466 source = {
467 path = engines/catalog;
468 type = "path";
469 };
470 version = "0.0.1";
471 };
472 childprocess = {
473 groups = ["default" "development" "test"];
474 platforms = [];
475 source = {
476 remotes = ["https://rubygems.org"];
477 sha256 = "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5";
478 type = "gem";
479 };
480 version = "3.0.0";
481 };
482 chronic = {
483 groups = ["default"];
484 platforms = [];
485 source = {
486 remotes = ["https://rubygems.org"];
487 sha256 = "1hrdkn4g8x7dlzxwb1rfgr8kw3bp4ywg5l4y4i9c2g5cwv62yvvn";
488 type = "gem";
489 };
490 version = "0.10.2";
491 };
492 chunky_png = {
493 groups = ["default"];
494 platforms = [];
495 source = {
496 remotes = ["https://rubygems.org"];
497 sha256 = "1znw5x86hmm9vfhidwdsijz8m38pqgmv98l9ryilvky0aldv7mc9";
498 type = "gem";
499 };
500 version = "1.4.0";
501 };
502 climate_control = {
503 groups = ["default"];
504 platforms = [];
505 source = {
506 remotes = ["https://rubygems.org"];
507 sha256 = "0q11v0iabvr6rif0d025xh078ili5frrihlj0m04zfg7lgvagxji";
508 type = "gem";
509 };
510 version = "0.2.0";
511 };
512 cliver = {
513 groups = ["default" "development" "test"];
514 platforms = [];
515 source = {
516 remotes = ["https://rubygems.org"];
517 sha256 = "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7";
518 type = "gem";
519 };
520 version = "0.3.2";
521 };
522 cocaine = {
523 dependencies = ["climate_control"];
524 groups = ["default"];
525 platforms = [];
526 source = {
527 remotes = ["https://rubygems.org"];
528 sha256 = "01kk5xd7lspbkdvn6nyj0y51zhvia3z6r4nalbdcqw5fbsywwi7d";
529 type = "gem";
530 };
531 version = "0.5.8";
532 };
533 codecov = {
534 dependencies = ["simplecov"];
535 groups = ["test"];
536 platforms = [];
537 source = {
538 remotes = ["https://rubygems.org"];
539 sha256 = "1pi2dmqxjw5wsn65yx5qz5ks5msqflj0zxvk11r3cxwgacvj3hys";
540 type = "gem";
541 };
542 version = "0.6.0";
543 };
544 coderay = {
545 groups = ["default" "development"];
546 platforms = [];
547 source = {
548 remotes = ["https://rubygems.org"];
549 sha256 = "0jvxqxzply1lwp7ysn94zjhh57vc14mcshw1ygw14ib8lhc00lyw";
550 type = "gem";
551 };
552 version = "1.1.3";
553 };
554 coffee-rails = {
555 dependencies = ["coffee-script" "railties"];
556 groups = ["default"];
557 platforms = [];
558 source = {
559 remotes = ["https://rubygems.org"];
560 sha256 = "170sp4y82bf6nsczkkkzypzv368sgjg6lfrkib4hfjgxa6xa3ajx";
561 type = "gem";
562 };
563 version = "5.0.0";
564 };
565 coffee-script = {
566 dependencies = ["coffee-script-source" "execjs"];
567 groups = ["default"];
568 platforms = [];
569 source = {
570 remotes = ["https://rubygems.org"];
571 sha256 = "0rc7scyk7mnpfxqv5yy4y5q1hx3i7q3ahplcp4bq2g5r24g2izl2";
572 type = "gem";
573 };
574 version = "2.4.1";
575 };
576 coffee-script-source = {
577 groups = ["default"];
578 platforms = [];
579 source = {
580 remotes = ["https://rubygems.org"];
581 sha256 = "1907v9q1zcqmmyqzhzych5l7qifgls2rlbnbhy5vzyr7i7yicaz1";
582 type = "gem";
583 };
584 version = "1.12.2";
585 };
586 combine_pdf = {
587 dependencies = ["ruby-rc4"];
588 groups = ["default"];
589 platforms = [];
590 source = {
591 remotes = ["https://rubygems.org"];
592 sha256 = "1bxakrrip0sg5gxy50wdn7lr3h2w7rd590cjhnj4qi477cvi1qgg";
593 type = "gem";
594 };
595 version = "1.0.21";
596 };
597 compass = {
598 dependencies = ["chunky_png" "compass-core" "compass-import-once" "rb-fsevent" "rb-inotify" "sass"];
599 groups = ["default"];
600 platforms = [];
601 source = {
602 remotes = ["https://rubygems.org"];
603 sha256 = "0lfi83w8z75czr0pf0rmj9hda22082h3cmvczl8r1ma9agf88y2c";
604 type = "gem";
605 };
606 version = "1.0.3";
607 };
608 compass-core = {
609 dependencies = ["multi_json" "sass"];
610 groups = ["default"];
611 platforms = [];
612 source = {
613 remotes = ["https://rubygems.org"];
614 sha256 = "0yaspqwdmzwdcqviclbs3blq7an16pysrfzylz8q1gxmmd6bpj3a";
615 type = "gem";
616 };
617 version = "1.0.3";
618 };
619 compass-import-once = {
620 dependencies = ["sass"];
621 groups = ["default"];
622 platforms = [];
623 source = {
624 remotes = ["https://rubygems.org"];
625 sha256 = "0bn7gwbfz7jvvdd0qdfqlx67fcb83gyvxqc7dr9fhcnks3z8z5rq";
626 type = "gem";
627 };
628 version = "1.0.5";
629 };
630 compass-rails = {
631 dependencies = ["compass" "sass-rails" "sprockets"];
632 groups = ["default"];
633 platforms = [];
634 source = {
635 remotes = ["https://rubygems.org"];
636 sha256 = "1y1gi9lcmxzn0xvx2pf4xzj8n0s6rl0vbycyjk1kpcvycyjnbjgr";
637 type = "gem";
638 };
639 version = "4.0.0";
640 };
641 concurrent-ruby = {
642 groups = ["default" "development" "test"];
643 platforms = [];
644 source = {
645 remotes = ["https://rubygems.org"];
646 sha256 = "0nwad3211p7yv9sda31jmbyw6sdafzmdi2i2niaz6f0wk5nq9h0f";
647 type = "gem";
648 };
649 version = "1.1.9";
650 };
651 connection_pool = {
652 groups = ["default"];
653 platforms = [];
654 source = {
655 remotes = ["https://rubygems.org"];
656 sha256 = "0ffdxhgirgc86qb42yvmfj6v1v0x4lvi0pxn9zhghkff44wzra0k";
657 type = "gem";
658 };
659 version = "2.2.5";
660 };
661 crack = {
662 dependencies = ["rexml"];
663 groups = ["default" "test"];
664 platforms = [];
665 source = {
666 remotes = ["https://rubygems.org"];
667 sha256 = "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r";
668 type = "gem";
669 };
670 version = "0.4.5";
671 };
672 crass = {
673 groups = ["default" "development" "test"];
674 platforms = [];
675 source = {
676 remotes = ["https://rubygems.org"];
677 sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw";
678 type = "gem";
679 };
680 version = "1.0.6";
681 };
682 css_parser = {
683 dependencies = ["addressable"];
684 groups = ["default"];
685 platforms = [];
686 source = {
687 remotes = ["https://rubygems.org"];
688 sha256 = "0xs4ind9xd099rb52b73pch8ha143dl8bhivqsbba4wrvxpbx751";
689 type = "gem";
690 };
691 version = "1.9.0";
692 };
693 cuprite = {
694 dependencies = ["capybara" "ferrum"];
695 groups = ["development" "test"];
696 platforms = [];
697 source = {
698 remotes = ["https://rubygems.org"];
699 sha256 = "1gz7min595pq4xkzm1nvn538i7plg7jwfc1pw6w8f4apfh94fv56";
700 type = "gem";
701 };
702 version = "0.13";
703 };
704 custom_error_message = {
705 groups = ["default"];
706 platforms = [];
707 source = {
708 fetchSubmodules = false;
709 rev = "3a8ec9dddc7a5b0aab7c69a6060596de300c68f4";
710 sha256 = "1r2yah8dzng7i0000xfdksv3cj2z65x1nr4vjrnsv9sm7fj7bbld";
711 type = "git";
712 url = "https://github.com/jeremydurham/custom-err-msg.git";
713 };
714 version = "1.1.1";
715 };
716 dalli = {
717 groups = ["default"];
718 platforms = [];
719 source = {
720 remotes = ["https://rubygems.org"];
721 sha256 = "0br39scmr187w3ifl5gsddl2fhq6ahijgw6358plqjdzrizlg764";
722 type = "gem";
723 };
724 version = "2.7.11";
725 };
726 database_cleaner = {
727 dependencies = ["database_cleaner-active_record"];
728 groups = ["development" "test"];
729 platforms = [];
730 source = {
731 remotes = ["https://rubygems.org"];
732 sha256 = "1x4r22rnpwnm9yln88vhzqj4cl3sbd26c4j50g9k6wp7y01rln4w";
733 type = "gem";
734 };
735 version = "2.0.1";
736 };
737 database_cleaner-active_record = {
738 dependencies = ["activerecord" "database_cleaner-core"];
739 groups = ["default" "development" "test"];
740 platforms = [];
741 source = {
742 remotes = ["https://rubygems.org"];
743 sha256 = "1jg7jd7w65hdarzbi8f252la3qgsnd2sjavhlmc82kwzfx37k38m";
744 type = "gem";
745 };
746 version = "2.0.0";
747 };
748 database_cleaner-core = {
749 groups = ["default" "development" "test"];
750 platforms = [];
751 source = {
752 remotes = ["https://rubygems.org"];
753 sha256 = "0v44bn386ipjjh4m2kl53dal8g4d41xajn2jggnmjbhn6965fil6";
754 type = "gem";
755 };
756 version = "2.0.1";
757 };
758 db2fog = {
759 dependencies = ["activerecord" "fog-core" "rails"];
760 groups = ["default"];
761 platforms = [];
762 source = {
763 fetchSubmodules = false;
764 rev = "5b63343847452f52aa42f7fc169d6ab3af57cda3";
765 sha256 = "02fc3v81sx6rnvc492bdg057fs67qpsf83y25bsdqz83k21xmzyl";
766 type = "git";
767 url = "https://github.com/openfoodfoundation/db2fog.git";
768 };
769 version = "0.9.2";
770 };
771 ddtrace = {
772 dependencies = ["ffi" "msgpack"];
773 groups = ["production" "staging"];
774 platforms = [];
775 source = {
776 remotes = ["https://rubygems.org"];
777 sha256 = "0p7d6r2zpy9mqmd26ni9cpgc2yas4jira66rxx92l87amypkvasc";
778 type = "gem";
779 };
780 version = "0.53.0";
781 };
782 debugger-linecache = {
783 groups = ["development"];
784 platforms = [];
785 source = {
786 remotes = ["https://rubygems.org"];
787 sha256 = "0iwyx190fd5vfwj1gzr8pg3m374kqqix4g4fc4qw29sp54d3fpdz";
788 type = "gem";
789 };
790 version = "1.2.0";
791 };
792 devise = {
793 dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
794 groups = ["default"];
795 platforms = [];
796 source = {
797 remotes = ["https://rubygems.org"];
798 sha256 = "0ag0skzk3h7bhmf1n2zwa7cg6kx5k5inxmq0kf5qpm7917ffm0mz";
799 type = "gem";
800 };
801 version = "4.8.0";
802 };
803 devise-encryptable = {
804 dependencies = ["devise"];
805 groups = ["default"];
806 platforms = [];
807 source = {
808 remotes = ["https://rubygems.org"];
809 sha256 = "1dh9gl7qa1a8x091xk9dc6lwc5jw6lqmiw7sii1hq0w4jknwlq4q";
810 type = "gem";
811 };
812 version = "0.2.0";
813 };
814 devise-i18n = {
815 dependencies = ["devise"];
816 groups = ["default"];
817 platforms = [];
818 source = {
819 remotes = ["https://rubygems.org"];
820 sha256 = "11knkl0b40pyjz8934pmr3apzsmvvaj09w5ks8xzppd5agid2r6f";
821 type = "gem";
822 };
823 version = "1.10.0";
824 };
825 devise-token_authenticatable = {
826 dependencies = ["devise"];
827 groups = ["default"];
828 platforms = [];
829 source = {
830 remotes = ["https://rubygems.org"];
831 sha256 = "0ss9wcmjghl6s2kyqrgjn5z4bw1gxmlbqv0in2kirn56428w239f";
832 type = "gem";
833 };
834 version = "1.1.0";
835 };
836 dfc_provider = {
837 dependencies = ["active_model_serializers" "jwt" "rspec"];
838 groups = ["default"];
839 platforms = [];
840 source = {
841 path = engines/dfc_provider;
842 type = "path";
843 };
844 version = "0.0.1";
845 };
846 diff-lcs = {
847 groups = ["default" "development" "test"];
848 platforms = [];
849 source = {
850 remotes = ["https://rubygems.org"];
851 sha256 = "0m925b8xc6kbpnif9dldna24q1szg4mk0fvszrki837pfn46afmz";
852 type = "gem";
853 };
854 version = "1.4.4";
855 };
856 docile = {
857 groups = ["default" "test"];
858 platforms = [];
859 source = {
860 remotes = ["https://rubygems.org"];
861 sha256 = "1lxqxgq71rqwj1lpl9q1mbhhhhhhdkkj7my341f2889pwayk85sz";
862 type = "gem";
863 };
864 version = "1.4.0";
865 };
866 dotenv = {
867 groups = ["default"];
868 platforms = [];
869 source = {
870 remotes = ["https://rubygems.org"];
871 sha256 = "0iym172c5337sm1x2ykc2i3f961vj3wdclbyg1x6sxs3irgfsl94";
872 type = "gem";
873 };
874 version = "2.7.6";
875 };
876 dotenv-rails = {
877 dependencies = ["dotenv" "railties"];
878 groups = ["default"];
879 platforms = [];
880 source = {
881 remotes = ["https://rubygems.org"];
882 sha256 = "1my2jdmgmpf32rfxffkb9cyxh7ayis4q5ygpwjqj4vpp25y3a70c";
883 type = "gem";
884 };
885 version = "2.7.6";
886 };
887 e2mmap = {
888 groups = ["default"];
889 platforms = [];
890 source = {
891 remotes = ["https://rubygems.org"];
892 sha256 = "0n8gxjb63dck3vrmsdcqqll7xs7f3wk78mw8w0gdk9wp5nx6pvj5";
893 type = "gem";
894 };
895 version = "0.1.0";
896 };
897 erubi = {
898 groups = ["default" "development" "test"];
899 platforms = [];
900 source = {
901 remotes = ["https://rubygems.org"];
902 sha256 = "09l8lz3j00m898li0yfsnb6ihc63rdvhw3k5xczna5zrjk104f2l";
903 type = "gem";
904 };
905 version = "1.10.0";
906 };
907 et-orbi = {
908 dependencies = ["tzinfo"];
909 groups = ["default"];
910 platforms = [];
911 source = {
912 remotes = ["https://rubygems.org"];
913 sha256 = "0xr8i8ql4xzx17d12590i3j299hj6vc0ja2j29dy12i5nlchxrvp";
914 type = "gem";
915 };
916 version = "1.2.4";
917 };
918 excon = {
919 groups = ["default"];
920 platforms = [];
921 source = {
922 remotes = ["https://rubygems.org"];
923 sha256 = "19g5nvkycnkzqq4mqn1zjznq9adrlv2jz0dr9w10cbn42hhqpiz7";
924 type = "gem";
925 };
926 version = "0.81.0";
927 };
928 execjs = {
929 groups = ["default"];
930 platforms = [];
931 source = {
932 remotes = ["https://rubygems.org"];
933 sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
934 type = "gem";
935 };
936 version = "2.7.0";
937 };
938 factory_bot = {
939 dependencies = ["activesupport"];
940 groups = ["default" "development" "test"];
941 platforms = [];
942 source = {
943 remotes = ["https://rubygems.org"];
944 sha256 = "04vxmjr200akcil9fqxc9ghbb9q0lyrh2q03xxncycd5vln910fi";
945 type = "gem";
946 };
947 version = "6.2.0";
948 };
949 factory_bot_rails = {
950 dependencies = ["factory_bot" "railties"];
951 groups = ["development" "test"];
952 platforms = [];
953 source = {
954 remotes = ["https://rubygems.org"];
955 sha256 = "18fhcihkc074gk62iwqgbdgc3ymim4fm0b4p3ipffy5hcsb9d2r7";
956 type = "gem";
957 };
958 version = "6.2.0";
959 };
960 faraday = {
961 dependencies = ["faraday-excon" "faraday-net_http" "faraday-net_http_persistent" "multipart-post" "ruby2_keywords"];
962 groups = ["default"];
963 platforms = [];
964 source = {
965 remotes = ["https://rubygems.org"];
966 sha256 = "0q646m07lfahakx5jdq77j004rcgfj6lkg13c0f84993gi78dhvi";
967 type = "gem";
968 };
969 version = "1.4.1";
970 };
971 faraday-excon = {
972 groups = ["default"];
973 platforms = [];
974 source = {
975 remotes = ["https://rubygems.org"];
976 sha256 = "0h09wkb0k0bhm6dqsd47ac601qiaah8qdzjh8gvxfd376x1chmdh";
977 type = "gem";
978 };
979 version = "1.1.0";
980 };
981 faraday-net_http = {
982 groups = ["default"];
983 platforms = [];
984 source = {
985 remotes = ["https://rubygems.org"];
986 sha256 = "1fi8sda5hc54v1w3mqfl5yz09nhx35kglyx72w7b8xxvdr0cwi9j";
987 type = "gem";
988 };
989 version = "1.0.1";
990 };
991 faraday-net_http_persistent = {
992 groups = ["default"];
993 platforms = [];
994 source = {
995 remotes = ["https://rubygems.org"];
996 sha256 = "0l2c835wl7gv34xp49fhd1bl4czkpw2g3ahqsak2251iqv5589ka";
997 type = "gem";
998 };
999 version = "1.1.0";
1000 };
1001 ferrum = {
1002 dependencies = ["addressable" "cliver" "concurrent-ruby" "websocket-driver"];
1003 groups = ["default" "development" "test"];
1004 platforms = [];
1005 source = {
1006 remotes = ["https://rubygems.org"];
1007 sha256 = "17c2bryyzpdx3mj6rig4aym3wy24g2212zm0jz2gisbymhv9adbl";
1008 type = "gem";
1009 };
1010 version = "0.11";
1011 };
1012 ffaker = {
1013 groups = ["default"];
1014 platforms = [];
1015 source = {
1016 remotes = ["https://rubygems.org"];
1017 sha256 = "0gif76bq11qz73qm8hv050wf642f9zwawra78bnpnj5kpqhjg3dl";
1018 type = "gem";
1019 };
1020 version = "2.20.0";
1021 };
1022 ffi = {
1023 groups = ["default" "production" "staging"];
1024 platforms = [];
1025 source = {
1026 remotes = ["https://rubygems.org"];
1027 sha256 = "0ssxcywmb3flxsjdg13is6k01807zgzasdhj4j48dm7ac59cmksn";
1028 type = "gem";
1029 };
1030 version = "1.15.4";
1031 };
1032 flipper = {
1033 groups = ["default"];
1034 platforms = [];
1035 source = {
1036 remotes = ["https://rubygems.org"];
1037 sha256 = "1gdnd7j12a560r4pi22v1z2cy0nymwr340922rfj9qkpj7h46371";
1038 type = "gem";
1039 };
1040 version = "0.20.4";
1041 };
1042 flipper-active_record = {
1043 dependencies = ["activerecord" "flipper"];
1044 groups = ["default"];
1045 platforms = [];
1046 source = {
1047 remotes = ["https://rubygems.org"];
1048 sha256 = "042x64rr11ia7n4db2y6vjbfjv2ip0jp2m2mlyb6d9srbxvvkiif";
1049 type = "gem";
1050 };
1051 version = "0.20.4";
1052 };
1053 flipper-ui = {
1054 dependencies = ["erubi" "flipper" "rack" "rack-protection"];
1055 groups = ["default"];
1056 platforms = [];
1057 source = {
1058 remotes = ["https://rubygems.org"];
1059 sha256 = "0sf9giwiwrncvvac48rgc56xgj6s8scs7a9ahr6b2hqbyr1nja9l";
1060 type = "gem";
1061 };
1062 version = "0.20.4";
1063 };
1064 fog-aws = {
1065 dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"];
1066 groups = ["default"];
1067 platforms = [];
1068 source = {
1069 remotes = ["https://rubygems.org"];
1070 sha256 = "00skbbgvhqzq6gpgzmw0957n0wf1y3vjgrdyq3sib0ghpyfgmig3";
1071 type = "gem";
1072 };
1073 version = "2.0.1";
1074 };
1075 fog-core = {
1076 dependencies = ["builder" "excon" "formatador"];
1077 groups = ["default"];
1078 platforms = [];
1079 source = {
1080 remotes = ["https://rubygems.org"];
1081 sha256 = "02449kh2x3zj9xxszm02vy8zpbsrykvjrg5gj3kqcy2yizy2bhp3";
1082 type = "gem";
1083 };
1084 version = "1.45.0";
1085 };
1086 fog-json = {
1087 dependencies = ["fog-core" "multi_json"];
1088 groups = ["default"];
1089 platforms = [];
1090 source = {
1091 remotes = ["https://rubygems.org"];
1092 sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
1093 type = "gem";
1094 };
1095 version = "1.2.0";
1096 };
1097 fog-xml = {
1098 dependencies = ["fog-core" "nokogiri"];
1099 groups = ["default"];
1100 platforms = [];
1101 source = {
1102 remotes = ["https://rubygems.org"];
1103 sha256 = "043lwdw2wsi6d55ifk0w3izi5l1d1h0alwyr3fixic7b94kc812n";
1104 type = "gem";
1105 };
1106 version = "0.1.3";
1107 };
1108 foreman = {
1109 groups = ["development"];
1110 platforms = [];
1111 source = {
1112 remotes = ["https://rubygems.org"];
1113 sha256 = "0szgxvnzwkzrfbq5dkwa98mig78aqglfy6irdsvq1gq045pbq9r7";
1114 type = "gem";
1115 };
1116 version = "0.87.2";
1117 };
1118 formatador = {
1119 groups = ["default"];
1120 platforms = [];
1121 source = {
1122 remotes = ["https://rubygems.org"];
1123 sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
1124 type = "gem";
1125 };
1126 version = "0.2.5";
1127 };
1128 foundation-icons-sass-rails = {
1129 dependencies = ["railties" "sass-rails"];
1130 groups = ["default"];
1131 platforms = [];
1132 source = {
1133 remotes = ["https://rubygems.org"];
1134 sha256 = "1z3bp0kcz7csid9r6h8z8asywh8mn2fwcm71b4v4qjca13qf4n2w";
1135 type = "gem";
1136 };
1137 version = "3.0.0";
1138 };
1139 foundation-rails = {
1140 dependencies = ["railties" "sass"];
1141 groups = ["default"];
1142 platforms = [];
1143 source = {
1144 remotes = ["https://rubygems.org"];
1145 sha256 = "1dizpi3k3bb2arnf96rxx1qx3x3rwqshbdzb3l8ycj1laddrhwnl";
1146 type = "gem";
1147 };
1148 version = "5.5.2.1";
1149 };
1150 fugit = {
1151 dependencies = ["et-orbi" "raabro"];
1152 groups = ["default"];
1153 platforms = [];
1154 source = {
1155 remotes = ["https://rubygems.org"];
1156 sha256 = "0jhbmc1l94vz25byfbmgi783lrwsh74xvslqzxd0pjf8i9xsxv49";
1157 type = "gem";
1158 };
1159 version = "1.4.5";
1160 };
1161 fuubar = {
1162 dependencies = ["rspec-core" "ruby-progressbar"];
1163 groups = ["development" "test"];
1164 platforms = [];
1165 source = {
1166 remotes = ["https://rubygems.org"];
1167 sha256 = "1028vn7j3kc5qqwswrf3has3qm4j9xva70xmzb3n29i89f0afwmj";
1168 type = "gem";
1169 };
1170 version = "2.5.1";
1171 };
1172 geocoder = {
1173 groups = ["default"];
1174 platforms = [];
1175 source = {
1176 remotes = ["https://rubygems.org"];
1177 sha256 = "0is3xss043nxvckqrbk0r881950q4khigrh41qqqjff44gm24bs3";
1178 type = "gem";
1179 };
1180 version = "1.6.7";
1181 };
1182 globalid = {
1183 dependencies = ["activesupport"];
1184 groups = ["default"];
1185 platforms = [];
1186 source = {
1187 remotes = ["https://rubygems.org"];
1188 sha256 = "0k6ww3shk3mv119xvr9m99l6ql0czq91xhd66hm8hqssb18r2lvm";
1189 type = "gem";
1190 };
1191 version = "0.5.2";
1192 };
1193 gmaps4rails = {
1194 groups = ["default"];
1195 platforms = [];
1196 source = {
1197 remotes = ["https://rubygems.org"];
1198 sha256 = "0avwx3ygmq2krkawyplw76q4bm05v56rwp1vdwfpvsd8bh4vzhq9";
1199 type = "gem";
1200 };
1201 version = "2.1.2";
1202 };
1203 good_migrations = {
1204 dependencies = ["activerecord" "railties"];
1205 groups = ["default"];
1206 platforms = [];
1207 source = {
1208 remotes = ["https://rubygems.org"];
1209 sha256 = "0f613j6gkdkipzhw6r9kngqk3g2zi6hwmscy1sdf5snfjpamhvin";
1210 type = "gem";
1211 };
1212 version = "0.1.0";
1213 };
1214 haml = {
1215 dependencies = ["temple" "tilt"];
1216 groups = ["default"];
1217 platforms = [];
1218 source = {
1219 remotes = ["https://rubygems.org"];
1220 sha256 = "035fgbfr20m08w4603ls2lwqbggr0vy71mijz0p68ib1am394xbf";
1221 type = "gem";
1222 };
1223 version = "5.2.2";
1224 };
1225 hashdiff = {
1226 groups = ["default" "test"];
1227 platforms = [];
1228 source = {
1229 remotes = ["https://rubygems.org"];
1230 sha256 = "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c";
1231 type = "gem";
1232 };
1233 version = "1.0.1";
1234 };
1235 hashery = {
1236 groups = ["default" "test"];
1237 platforms = [];
1238 source = {
1239 remotes = ["https://rubygems.org"];
1240 sha256 = "0qj8815bf7q6q7llm5rzdz279gzmpqmqqicxnzv066a020iwqffj";
1241 type = "gem";
1242 };
1243 version = "2.1.2";
1244 };
1245 highline = {
1246 groups = ["default"];
1247 platforms = [];
1248 source = {
1249 remotes = ["https://rubygems.org"];
1250 sha256 = "0yclf57n2j3cw8144ania99h1zinf8q3f5zrhqa754j6gl95rp9d";
1251 type = "gem";
1252 };
1253 version = "2.0.3";
1254 };
1255 hiredis = {
1256 groups = ["default"];
1257 platforms = [];
1258 source = {
1259 remotes = ["https://rubygems.org"];
1260 sha256 = "04jj8k7lxqxw24sp0jiravigdkgsyrpprxpxm71ba93x1wr2w1bz";
1261 type = "gem";
1262 };
1263 version = "0.6.3";
1264 };
1265 i18n = {
1266 dependencies = ["concurrent-ruby"];
1267 groups = ["default" "development" "test"];
1268 platforms = [];
1269 source = {
1270 remotes = ["https://rubygems.org"];
1271 sha256 = "0g2fnag935zn2ggm5cn6k4s4xvv53v2givj1j90szmvavlpya96a";
1272 type = "gem";
1273 };
1274 version = "1.8.10";
1275 };
1276 i18n-js = {
1277 dependencies = ["i18n"];
1278 groups = ["default"];
1279 platforms = [];
1280 source = {
1281 remotes = ["https://rubygems.org"];
1282 sha256 = "0xiq65q0rhafp3aknj602nbj7i016yjfvw28y83hg8ddqlqvc9x0";
1283 type = "gem";
1284 };
1285 version = "3.9.0";
1286 };
1287 immigrant = {
1288 dependencies = ["activerecord"];
1289 groups = ["default"];
1290 platforms = [];
1291 source = {
1292 remotes = ["https://rubygems.org"];
1293 sha256 = "15jf08h8if3wyq0kdgijcknqzmgfw4rqnyln68mydg1c5bn4s5cw";
1294 type = "gem";
1295 };
1296 version = "0.3.6";
1297 };
1298 ipaddress = {
1299 groups = ["default"];
1300 platforms = [];
1301 source = {
1302 remotes = ["https://rubygems.org"];
1303 sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
1304 type = "gem";
1305 };
1306 version = "0.8.3";
1307 };
1308 jmespath = {
1309 groups = ["default"];
1310 platforms = [];
1311 source = {
1312 remotes = ["https://rubygems.org"];
1313 sha256 = "1d4wac0dcd1jf6kc57891glih9w57552zgqswgy74d1xhgnk0ngf";
1314 type = "gem";
1315 };
1316 version = "1.4.0";
1317 };
1318 jquery-rails = {
1319 dependencies = ["rails-dom-testing" "railties" "thor"];
1320 groups = ["default"];
1321 platforms = [];
1322 source = {
1323 remotes = ["https://rubygems.org"];
1324 sha256 = "0dkhm8lan1vnyl3ll0ks2q06576pdils8a1dr354vfc1y5dqw15i";
1325 type = "gem";
1326 };
1327 version = "4.4.0";
1328 };
1329 jquery-ui-rails = {
1330 dependencies = ["railties"];
1331 groups = ["default"];
1332 platforms = [];
1333 source = {
1334 remotes = ["https://rubygems.org"];
1335 sha256 = "1garrnqwh35acj2pp4sp6fpm2g881h23y644lzbic2qmcrq9wd2v";
1336 type = "gem";
1337 };
1338 version = "4.2.1";
1339 };
1340 json = {
1341 groups = ["default"];
1342 platforms = [];
1343 source = {
1344 remotes = ["https://rubygems.org"];
1345 sha256 = "0lrirj0gw420kw71bjjlqkqhqbrplla61gbv1jzgsz6bv90qr3ci";
1346 type = "gem";
1347 };
1348 version = "2.5.1";
1349 };
1350 json-schema = {
1351 dependencies = ["addressable"];
1352 groups = ["default" "development" "test"];
1353 platforms = [];
1354 source = {
1355 remotes = ["https://rubygems.org"];
1356 sha256 = "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5";
1357 type = "gem";
1358 };
1359 version = "2.8.1";
1360 };
1361 json_spec = {
1362 dependencies = ["multi_json" "rspec"];
1363 groups = ["development" "test"];
1364 platforms = [];
1365 source = {
1366 remotes = ["https://rubygems.org"];
1367 sha256 = "03yiravv6q8lp37rip2i25w2qd63mwwi4jmw7ymf51y7j9xbjxvs";
1368 type = "gem";
1369 };
1370 version = "1.1.5";
1371 };
1372 jwt = {
1373 groups = ["default"];
1374 platforms = [];
1375 source = {
1376 remotes = ["https://rubygems.org"];
1377 sha256 = "0bg8pjx0mpvl10k6d8a6gc8dzlv2z5jkqcjbjcirnk032iriq838";
1378 type = "gem";
1379 };
1380 version = "2.3.0";
1381 };
1382 knapsack = {
1383 dependencies = ["rake"];
1384 groups = ["development" "test"];
1385 platforms = [];
1386 source = {
1387 remotes = ["https://rubygems.org"];
1388 sha256 = "1f42akjbdkrg1ihwvls9pkkvz8vikaapzgxl82dd128rfn42chm9";
1389 type = "gem";
1390 };
1391 version = "4.0.0";
1392 };
1393 launchy = {
1394 dependencies = ["addressable"];
1395 groups = ["default" "development" "test"];
1396 platforms = [];
1397 source = {
1398 remotes = ["https://rubygems.org"];
1399 sha256 = "1xdyvr5j0gjj7b10kgvh8ylxnwk3wx19my42wqn9h82r4p246hlm";
1400 type = "gem";
1401 };
1402 version = "2.5.0";
1403 };
1404 letter_opener = {
1405 dependencies = ["launchy"];
1406 groups = ["development" "test"];
1407 platforms = [];
1408 source = {
1409 remotes = ["https://rubygems.org"];
1410 sha256 = "09a7kgsmr10a0hrc9bwxglgqvppjxij9w8bxx91mnvh0ivaw0nq9";
1411 type = "gem";
1412 };
1413 version = "1.7.0";
1414 };
1415 libv8-node = {
1416 groups = ["default"];
1417 platforms = [];
1418 source = {
1419 remotes = ["https://rubygems.org"];
1420 sha256 = "1xx217hrkpcm41p41inmy05kb7g8p9w5fwabgjgmpvz0d60j2862";
1421 type = "gem";
1422 };
1423 version = "15.14.0.1";
1424 };
1425 loofah = {
1426 dependencies = ["crass" "nokogiri"];
1427 groups = ["default" "development" "test"];
1428 platforms = [];
1429 source = {
1430 remotes = ["https://rubygems.org"];
1431 sha256 = "1nqcya57x2n58y1dify60i0dpla40n4yir928khp4nj5jrn9mgmw";
1432 type = "gem";
1433 };
1434 version = "2.12.0";
1435 };
1436 mail = {
1437 dependencies = ["mini_mime"];
1438 groups = ["default"];
1439 platforms = [];
1440 source = {
1441 remotes = ["https://rubygems.org"];
1442 sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
1443 type = "gem";
1444 };
1445 version = "2.7.1";
1446 };
1447 marcel = {
1448 groups = ["default"];
1449 platforms = [];
1450 source = {
1451 remotes = ["https://rubygems.org"];
1452 sha256 = "0bp001p687nsa4a8sp3q1iv8pfhs24w7s3avychjp64sdkg6jxq3";
1453 type = "gem";
1454 };
1455 version = "1.0.1";
1456 };
1457 method_source = {
1458 groups = ["default" "development" "test"];
1459 platforms = [];
1460 source = {
1461 remotes = ["https://rubygems.org"];
1462 sha256 = "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp";
1463 type = "gem";
1464 };
1465 version = "1.0.0";
1466 };
1467 mime-types = {
1468 dependencies = ["mime-types-data"];
1469 groups = ["default"];
1470 platforms = [];
1471 source = {
1472 remotes = ["https://rubygems.org"];
1473 sha256 = "1zj12l9qk62anvk9bjvandpa6vy4xslil15wl6wlivyf51z773vh";
1474 type = "gem";
1475 };
1476 version = "3.3.1";
1477 };
1478 mime-types-data = {
1479 groups = ["default"];
1480 platforms = [];
1481 source = {
1482 remotes = ["https://rubygems.org"];
1483 sha256 = "1phcq7z0zpipwd7y4fbqmlaqghv07fjjgrx99mwq3z3n0yvy7fmi";
1484 type = "gem";
1485 };
1486 version = "3.2021.0225";
1487 };
1488 mimemagic = {
1489 dependencies = ["nokogiri" "rake"];
1490 groups = ["default"];
1491 platforms = [];
1492 source = {
1493 remotes = ["https://rubygems.org"];
1494 sha256 = "17ycgsmz2229jh224ws77yg974cz326flgc401xrdkfpw90jvb08";
1495 type = "gem";
1496 };
1497 version = "0.4.3";
1498 };
1499 mini_mime = {
1500 groups = ["default" "development" "test"];
1501 platforms = [];
1502 source = {
1503 remotes = ["https://rubygems.org"];
1504 sha256 = "0kb7jq3wjgckmkzna799y5qmvn6vg52878bkgw35qay6lflcrwih";
1505 type = "gem";
1506 };
1507 version = "1.1.0";
1508 };
1509 mini_portile2 = {
1510 groups = ["default" "development" "test"];
1511 platforms = [];
1512 source = {
1513 remotes = ["https://rubygems.org"];
1514 sha256 = "1lvxm91hi0pabnkkg47wh1siv56s6slm2mdq1idfm86dyfidfprq";
1515 type = "gem";
1516 };
1517 version = "2.6.1";
1518 };
1519 mini_racer = {
1520 dependencies = ["libv8-node"];
1521 groups = ["default"];
1522 platforms = [];
1523 source = {
1524 remotes = ["https://rubygems.org"];
1525 sha256 = "0334q46gi3il9izw7k4z32fj06nm8pznqdkr9r51033lnwwy9zy3";
1526 type = "gem";
1527 };
1528 version = "0.4.0";
1529 };
1530 minitest = {
1531 groups = ["default" "development" "test"];
1532 platforms = [];
1533 source = {
1534 remotes = ["https://rubygems.org"];
1535 sha256 = "19z7wkhg59y8abginfrm2wzplz7py3va8fyngiigngqvsws6cwgl";
1536 type = "gem";
1537 };
1538 version = "5.14.4";
1539 };
1540 monetize = {
1541 dependencies = ["money"];
1542 groups = ["default"];
1543 platforms = [];
1544 source = {
1545 remotes = ["https://rubygems.org"];
1546 sha256 = "0cna2myxdbwfq0gn6k2hgrh368dq7wld3jklm96443ysykd0difn";
1547 type = "gem";
1548 };
1549 version = "1.11.0";
1550 };
1551 money = {
1552 dependencies = ["i18n"];
1553 groups = ["default"];
1554 platforms = [];
1555 source = {
1556 remotes = ["https://rubygems.org"];
1557 sha256 = "11fk7i1w3qjb1br7507z748g1rh3mcmnvpm4jach0i4hsc2wrb5k";
1558 type = "gem";
1559 };
1560 version = "6.14.1";
1561 };
1562 msgpack = {
1563 groups = ["default" "production" "staging"];
1564 platforms = [];
1565 source = {
1566 remotes = ["https://rubygems.org"];
1567 sha256 = "06iajjyhx0rvpn4yr3h1hc4w4w3k59bdmfhxnjzzh76wsrdxxrc6";
1568 type = "gem";
1569 };
1570 version = "1.4.2";
1571 };
1572 multi_json = {
1573 groups = ["default" "development" "test"];
1574 platforms = [];
1575 source = {
1576 remotes = ["https://rubygems.org"];
1577 sha256 = "0pb1g1y3dsiahavspyzkdy39j4q377009f6ix0bh1ag4nqw43l0z";
1578 type = "gem";
1579 };
1580 version = "1.15.0";
1581 };
1582 multi_xml = {
1583 groups = ["default"];
1584 platforms = [];
1585 source = {
1586 remotes = ["https://rubygems.org"];
1587 sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj";
1588 type = "gem";
1589 };
1590 version = "0.6.0";
1591 };
1592 multipart-post = {
1593 groups = ["default"];
1594 platforms = [];
1595 source = {
1596 remotes = ["https://rubygems.org"];
1597 sha256 = "1zgw9zlwh2a6i1yvhhc4a84ry1hv824d6g2iw2chs3k5aylpmpfj";
1598 type = "gem";
1599 };
1600 version = "2.1.1";
1601 };
1602 nio4r = {
1603 groups = ["default"];
1604 platforms = [];
1605 source = {
1606 remotes = ["https://rubygems.org"];
1607 sha256 = "0xk64wghkscs6bv2n22853k2nh39d131c6rfpnlw12mbjnnv9v1v";
1608 type = "gem";
1609 };
1610 version = "2.5.8";
1611 };
1612 nokogiri = {
1613 dependencies = ["mini_portile2" "racc"];
1614 groups = ["default" "development" "test"];
1615 platforms = [];
1616 source = {
1617 remotes = ["https://rubygems.org"];
1618 sha256 = "1v02g7k7cxiwdcahvlxrmizn3avj2q6nsjccgilq1idc89cr081b";
1619 type = "gem";
1620 };
1621 version = "1.12.5";
1622 };
1623 oauth2 = {
1624 dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"];
1625 groups = ["default"];
1626 platforms = [];
1627 source = {
1628 remotes = ["https://rubygems.org"];
1629 sha256 = "1q6q2kgpxmygk8kmxqn54zkw8cs57a34zzz5cxpsh1bj3ag06rk3";
1630 type = "gem";
1631 };
1632 version = "1.4.7";
1633 };
1634 ofn-qz = {
1635 groups = ["default"];
1636 platforms = [];
1637 source = {
1638 fetchSubmodules = false;
1639 rev = "467f6ea1c44529c7c91cac4c8211bbd863588c0b";
1640 sha256 = "1rm2r2gfbc8cbv9gd4619ivv3qvklwpdayvklyd7w5k9c110fm7j";
1641 type = "git";
1642 url = "https://github.com/openfoodfoundation/ofn-qz.git";
1643 };
1644 version = "0.1.0";
1645 };
1646 order_management = {
1647 groups = ["default"];
1648 platforms = [];
1649 source = {
1650 path = engines/order_management;
1651 type = "path";
1652 };
1653 version = "0.0.1";
1654 };
1655 orm_adapter = {
1656 groups = ["default"];
1657 platforms = [];
1658 source = {
1659 remotes = ["https://rubygems.org"];
1660 sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
1661 type = "gem";
1662 };
1663 version = "0.5.0";
1664 };
1665 pagy = {
1666 groups = ["default"];
1667 platforms = [];
1668 source = {
1669 remotes = ["https://rubygems.org"];
1670 sha256 = "010z4lmpj7ld8k6hcpsyd2m0iicycaaabyzscgvnir8cklx1w9cw";
1671 type = "gem";
1672 };
1673 version = "4.11.0";
1674 };
1675 paper_trail = {
1676 dependencies = ["activerecord" "request_store"];
1677 groups = ["default"];
1678 platforms = [];
1679 source = {
1680 remotes = ["https://rubygems.org"];
1681 sha256 = "1hvz0fdzginyyx2x8c755aibdhfvmpjfb9666pdk6ccr9nkb7w1k";
1682 type = "gem";
1683 };
1684 version = "12.1.0";
1685 };
1686 paperclip = {
1687 dependencies = ["activemodel" "activerecord" "activesupport" "cocaine" "mime-types"];
1688 groups = ["default"];
1689 platforms = [];
1690 source = {
1691 remotes = ["https://rubygems.org"];
1692 sha256 = "12acd9ambpsq25x4mi4anmsz9p442zhqkba2f4hgml01njxpn8y9";
1693 type = "gem";
1694 };
1695 version = "3.4.2";
1696 };
1697 parallel = {
1698 groups = ["default" "development"];
1699 platforms = [];
1700 source = {
1701 remotes = ["https://rubygems.org"];
1702 sha256 = "1hkfpm78c2vs1qblnva3k1grijvxh87iixcnyd83s3lxrxsjvag4";
1703 type = "gem";
1704 };
1705 version = "1.21.0";
1706 };
1707 paranoia = {
1708 dependencies = ["activerecord"];
1709 groups = ["default"];
1710 platforms = [];
1711 source = {
1712 remotes = ["https://rubygems.org"];
1713 sha256 = "02plzv9qygzxa3fryz6cgap64jqrzwprjsm7r467g15mhaa4fzxi";
1714 type = "gem";
1715 };
1716 version = "2.4.3";
1717 };
1718 parser = {
1719 dependencies = ["ast"];
1720 groups = ["default" "development"];
1721 platforms = [];
1722 source = {
1723 remotes = ["https://rubygems.org"];
1724 sha256 = "06ma6w87ph8lnc9z4hi40ynmcdnjv0p8x53x0s3fjkz4q2p6sxh5";
1725 type = "gem";
1726 };
1727 version = "3.0.2.0";
1728 };
1729 paypal-sdk-core = {
1730 dependencies = ["multi_json" "xml-simple"];
1731 groups = ["default"];
1732 platforms = [];
1733 source = {
1734 remotes = ["https://rubygems.org"];
1735 sha256 = "0zjqykpxn6snv92wn8a179xyn1vbj327x91dh75lld3myfjz0b0l";
1736 type = "gem";
1737 };
1738 version = "0.3.4";
1739 };
1740 paypal-sdk-merchant = {
1741 dependencies = ["paypal-sdk-core"];
1742 groups = ["default"];
1743 platforms = [];
1744 source = {
1745 remotes = ["https://rubygems.org"];
1746 sha256 = "0v8gqhn7s53xdf5583hcf3ph22n81hniwli3s1jprak7nx5453f7";
1747 type = "gem";
1748 };
1749 version = "1.117.2";
1750 };
1751 pdf-reader = {
1752 dependencies = ["Ascii85" "afm" "hashery" "ruby-rc4" "ttfunk"];
1753 groups = ["test"];
1754 platforms = [];
1755 source = {
1756 remotes = ["https://rubygems.org"];
1757 sha256 = "14cxj3ra9nnn334qpm2vsx9s0zk3095s8ih6cwcp47h3hv03c73y";
1758 type = "gem";
1759 };
1760 version = "2.5.0";
1761 };
1762 pg = {
1763 groups = ["default"];
1764 platforms = [];
1765 source = {
1766 remotes = ["https://rubygems.org"];
1767 sha256 = "13mfrysrdrh8cka1d96zm0lnfs59i5x2g6ps49r2kz5p3q81xrzj";
1768 type = "gem";
1769 };
1770 version = "1.2.3";
1771 };
1772 power_assert = {
1773 groups = ["default"];
1774 platforms = [];
1775 source = {
1776 remotes = ["https://rubygems.org"];
1777 sha256 = "01z44m715rb6nzfrc90c5rkkdiy42dv3q94jw1q8baf9dg33nwi5";
1778 type = "gem";
1779 };
1780 version = "2.0.1";
1781 };
1782 pry = {
1783 dependencies = ["coderay" "method_source"];
1784 groups = ["development"];
1785 platforms = [];
1786 source = {
1787 remotes = ["https://rubygems.org"];
1788 sha256 = "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk";
1789 type = "gem";
1790 };
1791 version = "0.13.1";
1792 };
1793 pry-byebug = {
1794 dependencies = ["byebug" "pry"];
1795 groups = ["development"];
1796 platforms = [];
1797 source = {
1798 remotes = ["https://rubygems.org"];
1799 sha256 = "096y5vmzpyy4x9h4ky4cs4y7d19vdq9vbwwrqafbh5gagzwhifiv";
1800 type = "gem";
1801 };
1802 version = "3.9.0";
1803 };
1804 public_suffix = {
1805 groups = ["default" "development" "test"];
1806 platforms = [];
1807 source = {
1808 remotes = ["https://rubygems.org"];
1809 sha256 = "1xqcgkl7bwws1qrlnmxgh8g4g9m10vg60bhlw40fplninb3ng6d9";
1810 type = "gem";
1811 };
1812 version = "4.0.6";
1813 };
1814 puma = {
1815 dependencies = ["nio4r"];
1816 groups = ["default"];
1817 platforms = [];
1818 source = {
1819 remotes = ["https://rubygems.org"];
1820 sha256 = "0ahk9a2a05985m0037gqlpha5vdkvmwhyk8v1shkbnwkkm30k0mq";
1821 type = "gem";
1822 };
1823 version = "5.5.0";
1824 };
1825 raabro = {
1826 groups = ["default"];
1827 platforms = [];
1828 source = {
1829 remotes = ["https://rubygems.org"];
1830 sha256 = "10m8bln9d00dwzjil1k42i5r7l82x25ysbi45fwyv4932zsrzynl";
1831 type = "gem";
1832 };
1833 version = "1.4.0";
1834 };
1835 racc = {
1836 groups = ["default" "development" "test"];
1837 platforms = [];
1838 source = {
1839 remotes = ["https://rubygems.org"];
1840 sha256 = "178k7r0xn689spviqzhvazzvxfq6fyjldxb3ywjbgipbfi4s8j1g";
1841 type = "gem";
1842 };
1843 version = "1.5.2";
1844 };
1845 rack = {
1846 groups = ["default" "development" "test"];
1847 platforms = [];
1848 source = {
1849 remotes = ["https://rubygems.org"];
1850 sha256 = "0i5vs0dph9i5jn8dfc6aqd6njcafmb20rwqngrf759c9cvmyff16";
1851 type = "gem";
1852 };
1853 version = "2.2.3";
1854 };
1855 rack-mini-profiler = {
1856 dependencies = ["rack"];
1857 groups = ["development"];
1858 platforms = [];
1859 source = {
1860 remotes = ["https://rubygems.org"];
1861 sha256 = "03hcvjw9nrv0w6yjy2zkv4ivin9xg2wr7xfcvx7rc2msv1gmjb6z";
1862 type = "gem";
1863 };
1864 version = "2.3.3";
1865 };
1866 rack-protection = {
1867 dependencies = ["rack"];
1868 groups = ["default"];
1869 platforms = [];
1870 source = {
1871 remotes = ["https://rubygems.org"];
1872 sha256 = "159a4j4kragqh0z0z8vrpilpmaisnlz3n7kgiyf16bxkwlb3qlhz";
1873 type = "gem";
1874 };
1875 version = "2.1.0";
1876 };
1877 rack-proxy = {
1878 dependencies = ["rack"];
1879 groups = ["default"];
1880 platforms = [];
1881 source = {
1882 remotes = ["https://rubygems.org"];
1883 sha256 = "0jdr2r5phr3q7d6k9cnxjwlkaps0my0n43wq9mzw3xdqhg9wa3d6";
1884 type = "gem";
1885 };
1886 version = "0.7.0";
1887 };
1888 rack-rewrite = {
1889 groups = ["default"];
1890 platforms = [];
1891 source = {
1892 remotes = ["https://rubygems.org"];
1893 sha256 = "0milw71dv96wnc6i48vbzypws51dgf415kkp8c4air0mkdhpj838";
1894 type = "gem";
1895 };
1896 version = "1.5.1";
1897 };
1898 rack-ssl = {
1899 dependencies = ["rack"];
1900 groups = ["default"];
1901 platforms = [];
1902 source = {
1903 remotes = ["https://rubygems.org"];
1904 sha256 = "0c21xqkjyl10fngq6dy8082vmn2png8cwkiyzv83ymixq5cx7ygp";
1905 type = "gem";
1906 };
1907 version = "1.4.1";
1908 };
1909 rack-test = {
1910 dependencies = ["rack"];
1911 groups = ["default" "development" "test"];
1912 platforms = [];
1913 source = {
1914 remotes = ["https://rubygems.org"];
1915 sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
1916 type = "gem";
1917 };
1918 version = "1.1.0";
1919 };
1920 rack-timeout = {
1921 groups = ["production" "staging"];
1922 platforms = [];
1923 source = {
1924 remotes = ["https://rubygems.org"];
1925 sha256 = "16ahj3qz3xhfrwvqb4nf6cfzvliigg0idfsp5jyr8qwk676d2f30";
1926 type = "gem";
1927 };
1928 version = "0.6.0";
1929 };
1930 rails = {
1931 dependencies = ["actioncable" "actionmailbox" "actionmailer" "actionpack" "actiontext" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties" "sprockets-rails"];
1932 groups = ["default"];
1933 platforms = [];
1934 source = {
1935 remotes = ["https://rubygems.org"];
1936 sha256 = "1y59m2x8rdc581bjgyyr9dabi3vk3frqhhpbb5ldpbj622kxfpbz";
1937 type = "gem";
1938 };
1939 version = "6.1.4.1";
1940 };
1941 rails-controller-testing = {
1942 dependencies = ["actionpack" "actionview" "activesupport"];
1943 groups = ["test"];
1944 platforms = [];
1945 source = {
1946 remotes = ["https://rubygems.org"];
1947 sha256 = "151f303jcvs8s149mhx2g5mn67487x0blrf9dzl76q1nb7dlh53l";
1948 type = "gem";
1949 };
1950 version = "1.0.5";
1951 };
1952 rails-dom-testing = {
1953 dependencies = ["activesupport" "nokogiri"];
1954 groups = ["default" "development" "test"];
1955 platforms = [];
1956 source = {
1957 remotes = ["https://rubygems.org"];
1958 sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
1959 type = "gem";
1960 };
1961 version = "2.0.3";
1962 };
1963 rails-html-sanitizer = {
1964 dependencies = ["loofah"];
1965 groups = ["default" "development" "test"];
1966 platforms = [];
1967 source = {
1968 remotes = ["https://rubygems.org"];
1969 sha256 = "09qrfi3pgllxb08r024lln9k0qzxs57v0slsj8616xf9c0cwnwbk";
1970 type = "gem";
1971 };
1972 version = "1.4.2";
1973 };
1974 rails-i18n = {
1975 dependencies = ["i18n" "railties"];
1976 groups = ["default"];
1977 platforms = [];
1978 source = {
1979 remotes = ["https://rubygems.org"];
1980 sha256 = "05mcgv748vppnm3fnml37wjy3dw61wj8vfw14ldaj1yx1bmkhb07";
1981 type = "gem";
1982 };
1983 version = "6.0.0";
1984 };
1985 rails_safe_tasks = {
1986 groups = ["default"];
1987 platforms = [];
1988 source = {
1989 remotes = ["https://rubygems.org"];
1990 sha256 = "06bl9cgj8jyc04qdm4jp02ph2vlarapy119lagk6cq1hadzdw7n2";
1991 type = "gem";
1992 };
1993 version = "1.0.0";
1994 };
1995 railties = {
1996 dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
1997 groups = ["default" "development" "test"];
1998 platforms = [];
1999 source = {
2000 remotes = ["https://rubygems.org"];
2001 sha256 = "1kwpm068cqys34p2g0j3l1g0cd5f3kxnsay5v7lmbd0sgarac0vy";
2002 type = "gem";
2003 };
2004 version = "6.1.4.1";
2005 };
2006 rainbow = {
2007 groups = ["default" "development"];
2008 platforms = [];
2009 source = {
2010 remotes = ["https://rubygems.org"];
2011 sha256 = "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk";
2012 type = "gem";
2013 };
2014 version = "3.0.0";
2015 };
2016 rake = {
2017 groups = ["default" "development" "test"];
2018 platforms = [];
2019 source = {
2020 remotes = ["https://rubygems.org"];
2021 sha256 = "15whn7p9nrkxangbs9hh75q585yfn66lv0v2mhj6q6dl6x8bzr2w";
2022 type = "gem";
2023 };
2024 version = "13.0.6";
2025 };
2026 ransack = {
2027 dependencies = ["activerecord" "activesupport" "i18n"];
2028 groups = ["default"];
2029 platforms = [];
2030 source = {
2031 remotes = ["https://rubygems.org"];
2032 sha256 = "0z25sv93lfiyjjm9fgkmnjkc9kjdlpkd7wairk2vqj7dxklv7yvs";
2033 type = "gem";
2034 };
2035 version = "2.4.2";
2036 };
2037 rb-fsevent = {
2038 groups = ["default"];
2039 platforms = [];
2040 source = {
2041 remotes = ["https://rubygems.org"];
2042 sha256 = "1qsx9c4jr11vr3a9s5j83avczx9qn9rjaf32gxpc2v451hvbc0is";
2043 type = "gem";
2044 };
2045 version = "0.11.0";
2046 };
2047 rb-inotify = {
2048 dependencies = ["ffi"];
2049 groups = ["default"];
2050 platforms = [];
2051 source = {
2052 remotes = ["https://rubygems.org"];
2053 sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005";
2054 type = "gem";
2055 };
2056 version = "0.10.1";
2057 };
2058 redcarpet = {
2059 groups = ["default"];
2060 platforms = [];
2061 source = {
2062 remotes = ["https://rubygems.org"];
2063 sha256 = "0bvk8yyns5s1ls437z719y5sdv9fr8kfs8dmr6g8s761dv5n8zvi";
2064 type = "gem";
2065 };
2066 version = "3.5.1";
2067 };
2068 redis = {
2069 groups = ["default"];
2070 platforms = [];
2071 source = {
2072 remotes = ["https://rubygems.org"];
2073 sha256 = "1ig832dp0xmpp6a934nifzaj7wm9lzjxzasw911fagycs8p6m720";
2074 type = "gem";
2075 };
2076 version = "4.4.0";
2077 };
2078 regexp_parser = {
2079 groups = ["default" "development" "test"];
2080 platforms = [];
2081 source = {
2082 remotes = ["https://rubygems.org"];
2083 sha256 = "0vg7imjnfcqjx7kw94ccj5r78j4g190cqzi1i59sh4a0l940b9cr";
2084 type = "gem";
2085 };
2086 version = "2.1.1";
2087 };
2088 request_store = {
2089 dependencies = ["rack"];
2090 groups = ["default"];
2091 platforms = [];
2092 source = {
2093 remotes = ["https://rubygems.org"];
2094 sha256 = "0cx74kispmnw3ljwb239j65a2j14n8jlsygy372hrsa8mxc71hxi";
2095 type = "gem";
2096 };
2097 version = "1.5.0";
2098 };
2099 responders = {
2100 dependencies = ["actionpack" "railties"];
2101 groups = ["default"];
2102 platforms = [];
2103 source = {
2104 remotes = ["https://rubygems.org"];
2105 sha256 = "14kjykc6rpdh24sshg9savqdajya2dislc1jmbzg91w9967f4gv1";
2106 type = "gem";
2107 };
2108 version = "3.0.1";
2109 };
2110 rexml = {
2111 groups = ["default" "development" "test"];
2112 platforms = [];
2113 source = {
2114 remotes = ["https://rubygems.org"];
2115 sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53";
2116 type = "gem";
2117 };
2118 version = "3.2.5";
2119 };
2120 roadie = {
2121 dependencies = ["css_parser" "nokogiri"];
2122 groups = ["default"];
2123 platforms = [];
2124 source = {
2125 remotes = ["https://rubygems.org"];
2126 sha256 = "01kld3drqfiih5x8c13cvr6dpvdl7jml0v9bcw4fsy322lax3kn0";
2127 type = "gem";
2128 };
2129 version = "4.0.0";
2130 };
2131 roadie-rails = {
2132 dependencies = ["railties" "roadie"];
2133 groups = ["default"];
2134 platforms = [];
2135 source = {
2136 remotes = ["https://rubygems.org"];
2137 sha256 = "0jjcqnp37z65dksykzwjiz149kx65nw70lyx8dkw1fm5x7yraqvh";
2138 type = "gem";
2139 };
2140 version = "2.2.0";
2141 };
2142 roo = {
2143 dependencies = ["nokogiri" "rubyzip"];
2144 groups = ["default"];
2145 platforms = [];
2146 source = {
2147 remotes = ["https://rubygems.org"];
2148 sha256 = "1z2nbf1w48ip2akf1ql86y6569aizi53d6ickjbplkga12n0isf8";
2149 type = "gem";
2150 };
2151 version = "2.8.3";
2152 };
2153 rspec = {
2154 dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
2155 groups = ["default" "development" "test"];
2156 platforms = [];
2157 source = {
2158 remotes = ["https://rubygems.org"];
2159 sha256 = "1dwai7jnwmdmd7ajbi2q0k0lx1dh88knv5wl7c34wjmf94yv8w5q";
2160 type = "gem";
2161 };
2162 version = "3.10.0";
2163 };
2164 rspec-core = {
2165 dependencies = ["rspec-support"];
2166 groups = ["default" "development" "test"];
2167 platforms = [];
2168 source = {
2169 remotes = ["https://rubygems.org"];
2170 sha256 = "0wwnfhxxvrlxlk1a3yxlb82k2f9lm0yn0598x7lk8fksaz4vv6mc";
2171 type = "gem";
2172 };
2173 version = "3.10.1";
2174 };
2175 rspec-expectations = {
2176 dependencies = ["diff-lcs" "rspec-support"];
2177 groups = ["default" "development" "test"];
2178 platforms = [];
2179 source = {
2180 remotes = ["https://rubygems.org"];
2181 sha256 = "1sz9bj4ri28adsklnh257pnbq4r5ayziw02qf67wry0kvzazbb17";
2182 type = "gem";
2183 };
2184 version = "3.10.1";
2185 };
2186 rspec-mocks = {
2187 dependencies = ["diff-lcs" "rspec-support"];
2188 groups = ["default" "development" "test"];
2189 platforms = [];
2190 source = {
2191 remotes = ["https://rubygems.org"];
2192 sha256 = "1d13g6kipqqc9lmwz5b244pdwc97z15vcbnbq6n9rlf32bipdz4k";
2193 type = "gem";
2194 };
2195 version = "3.10.2";
2196 };
2197 rspec-rails = {
2198 dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
2199 groups = ["development" "test"];
2200 platforms = [];
2201 source = {
2202 remotes = ["https://rubygems.org"];
2203 sha256 = "152yz205p8zi5nxxhs8z581rjdvvqsfjndklkvn11f2vi50nv7n9";
2204 type = "gem";
2205 };
2206 version = "5.0.2";
2207 };
2208 rspec-retry = {
2209 dependencies = ["rspec-core"];
2210 groups = ["development" "test"];
2211 platforms = [];
2212 source = {
2213 remotes = ["https://rubygems.org"];
2214 sha256 = "0n6qc0d16h6bgh1xarmc8vc58728mgjcsjj8wcd822c8lcivl0b1";
2215 type = "gem";
2216 };
2217 version = "0.6.2";
2218 };
2219 rspec-support = {
2220 groups = ["default" "development" "test"];
2221 platforms = [];
2222 source = {
2223 remotes = ["https://rubygems.org"];
2224 sha256 = "15j52parvb8cgvl6s0pbxi2ywxrv6x0764g222kz5flz0s4mycbl";
2225 type = "gem";
2226 };
2227 version = "3.10.2";
2228 };
2229 rswag = {
2230 dependencies = ["rswag-api" "rswag-specs" "rswag-ui"];
2231 groups = ["development" "test"];
2232 platforms = [];
2233 source = {
2234 remotes = ["https://rubygems.org"];
2235 sha256 = "1w7dc4ipxaf6dagj6zbn4j7r384gh4zhdb2i7dvpqahrszf6cc7r";
2236 type = "gem";
2237 };
2238 version = "2.4.0";
2239 };
2240 rswag-api = {
2241 dependencies = ["railties"];
2242 groups = ["default" "development" "test"];
2243 platforms = [];
2244 source = {
2245 remotes = ["https://rubygems.org"];
2246 sha256 = "1s8wc2m4xngbdm5ms2xskpykzbmr9cvapxpjv4k6yirv71lqdxqc";
2247 type = "gem";
2248 };
2249 version = "2.4.0";
2250 };
2251 rswag-specs = {
2252 dependencies = ["activesupport" "json-schema" "railties"];
2253 groups = ["default" "development" "test"];
2254 platforms = [];
2255 source = {
2256 remotes = ["https://rubygems.org"];
2257 sha256 = "1dma3j5vfjhyclg8y0gsp44vs4wn9chf4jgfhc9r6ws018xrbxzd";
2258 type = "gem";
2259 };
2260 version = "2.4.0";
2261 };
2262 rswag-ui = {
2263 dependencies = ["actionpack" "railties"];
2264 groups = ["default" "development" "test"];
2265 platforms = [];
2266 source = {
2267 remotes = ["https://rubygems.org"];
2268 sha256 = "08f7g0cmz5gyzsszaqwmy4mrj2xh6krnd03jw9yi80gqayda4rkr";
2269 type = "gem";
2270 };
2271 version = "2.4.0";
2272 };
2273 rubocop = {
2274 dependencies = ["parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
2275 groups = ["development"];
2276 platforms = [];
2277 source = {
2278 remotes = ["https://rubygems.org"];
2279 sha256 = "19jg2mm4xj044j06asqv7v0bmq1axikl9pskf35riz54rskv8wci";
2280 type = "gem";
2281 };
2282 version = "1.22.1";
2283 };
2284 rubocop-ast = {
2285 dependencies = ["parser"];
2286 groups = ["default" "development"];
2287 platforms = [];
2288 source = {
2289 remotes = ["https://rubygems.org"];
2290 sha256 = "0x0xfq2mpg194rcanbjrgvjbh94s9kq72jynxx61789s628kxy59";
2291 type = "gem";
2292 };
2293 version = "1.12.0";
2294 };
2295 rubocop-rails = {
2296 dependencies = ["activesupport" "rack" "rubocop"];
2297 groups = ["development"];
2298 platforms = [];
2299 source = {
2300 remotes = ["https://rubygems.org"];
2301 sha256 = "1mq3x7jpmp49wwa2r880dcmn27arqc9ln8v2y0dv3ha7s5g8mzrn";
2302 type = "gem";
2303 };
2304 version = "2.12.3";
2305 };
2306 ruby-progressbar = {
2307 groups = ["default" "development" "test"];
2308 platforms = [];
2309 source = {
2310 remotes = ["https://rubygems.org"];
2311 sha256 = "02nmaw7yx9kl7rbaan5pl8x5nn0y4j5954mzrkzi9i3dhsrps4nc";
2312 type = "gem";
2313 };
2314 version = "1.11.0";
2315 };
2316 ruby-rc4 = {
2317 groups = ["default" "test"];
2318 platforms = [];
2319 source = {
2320 remotes = ["https://rubygems.org"];
2321 sha256 = "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00";
2322 type = "gem";
2323 };
2324 version = "0.1.5";
2325 };
2326 ruby2_keywords = {
2327 groups = ["default"];
2328 platforms = [];
2329 source = {
2330 remotes = ["https://rubygems.org"];
2331 sha256 = "15wfcqxyfgka05v2a7kpg64x57gl1y4xzvnc9lh60bqx5sf1iqrs";
2332 type = "gem";
2333 };
2334 version = "0.0.4";
2335 };
2336 rubyzip = {
2337 groups = ["default" "development" "test"];
2338 platforms = [];
2339 source = {
2340 remotes = ["https://rubygems.org"];
2341 sha256 = "0grps9197qyxakbpw02pda59v45lfgbgiyw48i0mq9f2bn9y6mrz";
2342 type = "gem";
2343 };
2344 version = "2.3.2";
2345 };
2346 rufus-scheduler = {
2347 dependencies = ["fugit"];
2348 groups = ["default"];
2349 platforms = [];
2350 source = {
2351 remotes = ["https://rubygems.org"];
2352 sha256 = "1x1cr9hd3phshgrrh796ql37339j5i6w7i7skxjkyygigdzl5kjy";
2353 type = "gem";
2354 };
2355 version = "3.7.0";
2356 };
2357 sass = {
2358 groups = ["default"];
2359 platforms = [];
2360 source = {
2361 remotes = ["https://rubygems.org"];
2362 sha256 = "0kfpcwh8dgw4lc81qglkvjl73689jy3g7196zkxm4fpskg1p5lkw";
2363 type = "gem";
2364 };
2365 version = "3.4.25";
2366 };
2367 sass-rails = {
2368 dependencies = ["railties" "sass" "sprockets" "sprockets-rails" "tilt"];
2369 groups = ["default"];
2370 platforms = [];
2371 source = {
2372 remotes = ["https://rubygems.org"];
2373 sha256 = "19bcs1ya3bkx36qaz21kgiz28s9h678m3rszcw7aany2lsis56y7";
2374 type = "gem";
2375 };
2376 version = "5.0.8";
2377 };
2378 sd_notify = {
2379 groups = ["production" "staging"];
2380 platforms = [];
2381 source = {
2382 remotes = ["https://rubygems.org"];
2383 sha256 = "0c9imnjbakx25r2n7widfp00s19ndzmmwax761mx5vbwm9nariyb";
2384 type = "gem";
2385 };
2386 version = "0.1.1";
2387 };
2388 select2-rails = {
2389 dependencies = ["sass-rails" "thor"];
2390 groups = ["default"];
2391 platforms = [];
2392 source = {
2393 fetchSubmodules = false;
2394 rev = "fc240e85fbdf1878ff3c39d972c0cd9a312f5ed4";
2395 sha256 = "0lflvygxgmm4yqhnx66h77g742g01x7jajjjn33a4hm0n7lgdq5y";
2396 type = "git";
2397 url = "https://github.com/openfoodfoundation/select2-rails.git";
2398 };
2399 version = "3.4.9";
2400 };
2401 selenium-webdriver = {
2402 dependencies = ["childprocess" "rubyzip"];
2403 groups = ["development" "test"];
2404 platforms = [];
2405 source = {
2406 remotes = ["https://rubygems.org"];
2407 sha256 = "0adcvp86dinaqq3nhf8p3m0rl2g6q0a4h52k0i7kdnsg1qz9k86y";
2408 type = "gem";
2409 };
2410 version = "3.142.7";
2411 };
2412 semantic_range = {
2413 groups = ["default"];
2414 platforms = [];
2415 source = {
2416 remotes = ["https://rubygems.org"];
2417 sha256 = "1dlp97vg95plrsaaqj7x8l7z9vsjbhnqk4rw1l30gy26lmxpfrih";
2418 type = "gem";
2419 };
2420 version = "3.0.0";
2421 };
2422 shoulda-matchers = {
2423 dependencies = ["activesupport"];
2424 groups = ["development" "test"];
2425 platforms = [];
2426 source = {
2427 remotes = ["https://rubygems.org"];
2428 sha256 = "0z6v2acldnvqrnvfk70f9xq39ppw5j03kbz2hpz7s17lgnn21vx8";
2429 type = "gem";
2430 };
2431 version = "5.0.0";
2432 };
2433 sidekiq = {
2434 dependencies = ["connection_pool" "rack" "redis"];
2435 groups = ["default"];
2436 platforms = [];
2437 source = {
2438 remotes = ["https://rubygems.org"];
2439 sha256 = "104a97cl94aclg71ngrr097zjbdf6cibnz4q3rqjb88izmd7cfk6";
2440 type = "gem";
2441 };
2442 version = "6.2.2";
2443 };
2444 sidekiq-scheduler = {
2445 dependencies = ["e2mmap" "redis" "rufus-scheduler" "sidekiq" "thwait" "tilt"];
2446 groups = ["default"];
2447 platforms = [];
2448 source = {
2449 remotes = ["https://rubygems.org"];
2450 sha256 = "0k686psrg8rd902yyqi38vys11zb07192skzx8zyyvyz2l9vrzds";
2451 type = "gem";
2452 };
2453 version = "3.1.0";
2454 };
2455 simplecov = {
2456 dependencies = ["docile" "simplecov-html" "simplecov_json_formatter"];
2457 groups = ["test"];
2458 platforms = [];
2459 source = {
2460 remotes = ["https://rubygems.org"];
2461 sha256 = "1hrv046jll6ad1s964gsmcq4hvkr3zzr6jc7z1mns22mvfpbc3cr";
2462 type = "gem";
2463 };
2464 version = "0.21.2";
2465 };
2466 simplecov-html = {
2467 groups = ["default" "test"];
2468 platforms = [];
2469 source = {
2470 remotes = ["https://rubygems.org"];
2471 sha256 = "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb";
2472 type = "gem";
2473 };
2474 version = "0.12.3";
2475 };
2476 simplecov_json_formatter = {
2477 groups = ["default" "test"];
2478 platforms = [];
2479 source = {
2480 remotes = ["https://rubygems.org"];
2481 sha256 = "19r15hyvh52jx7fmsrcflb58xh8l7l0zx4sxkh3hqzhq68y81pjl";
2482 type = "gem";
2483 };
2484 version = "0.1.3";
2485 };
2486 spring = {
2487 groups = ["development"];
2488 platforms = [];
2489 source = {
2490 remotes = ["https://rubygems.org"];
2491 sha256 = "12kyz3jdnaarhf2jbykmd9mqg085gxsx00c16la5q7czxvpb2x2r";
2492 type = "gem";
2493 };
2494 version = "3.0.0";
2495 };
2496 spring-commands-rspec = {
2497 dependencies = ["spring"];
2498 groups = ["development"];
2499 platforms = [];
2500 source = {
2501 remotes = ["https://rubygems.org"];
2502 sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2";
2503 type = "gem";
2504 };
2505 version = "1.0.4";
2506 };
2507 sprockets = {
2508 dependencies = ["concurrent-ruby" "rack"];
2509 groups = ["default"];
2510 platforms = [];
2511 source = {
2512 remotes = ["https://rubygems.org"];
2513 sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
2514 type = "gem";
2515 };
2516 version = "3.7.2";
2517 };
2518 sprockets-rails = {
2519 dependencies = ["actionpack" "activesupport" "sprockets"];
2520 groups = ["default"];
2521 platforms = [];
2522 source = {
2523 remotes = ["https://rubygems.org"];
2524 sha256 = "0mwmz36265646xqfyczgr1mhkm1hfxgxxvgdgr4xfcbf2g72p1k2";
2525 type = "gem";
2526 };
2527 version = "3.2.2";
2528 };
2529 state_machines = {
2530 groups = ["default"];
2531 platforms = [];
2532 source = {
2533 remotes = ["https://rubygems.org"];
2534 sha256 = "00mi16hg3rhkxz4y58s173cbnjlba41y9bfcim90p4ja6yfj9ri3";
2535 type = "gem";
2536 };
2537 version = "0.5.0";
2538 };
2539 state_machines-activemodel = {
2540 dependencies = ["activemodel" "state_machines"];
2541 groups = ["default"];
2542 platforms = [];
2543 source = {
2544 remotes = ["https://rubygems.org"];
2545 sha256 = "0b4dffzlj38adin6gm0ky72r5c507qdb1jprnm7h9gnlj2qxlcp9";
2546 type = "gem";
2547 };
2548 version = "0.8.0";
2549 };
2550 state_machines-activerecord = {
2551 dependencies = ["activerecord" "state_machines-activemodel"];
2552 groups = ["default"];
2553 platforms = [];
2554 source = {
2555 remotes = ["https://rubygems.org"];
2556 sha256 = "1dmaf4f4cg3gamzgga3gamp0kv9lvianqzr9103dw0xbp00vfbq7";
2557 type = "gem";
2558 };
2559 version = "0.8.0";
2560 };
2561 stringex = {
2562 groups = ["default"];
2563 platforms = [];
2564 source = {
2565 remotes = ["https://rubygems.org"];
2566 sha256 = "15ns7j5smw04w6w7bqd5mm2qcl7w9lhwykyb974i4isgg9yc23ys";
2567 type = "gem";
2568 };
2569 version = "2.8.5";
2570 };
2571 stripe = {
2572 groups = ["default"];
2573 platforms = [];
2574 source = {
2575 remotes = ["https://rubygems.org"];
2576 sha256 = "0b2savy5h9shdzr6fkfqyrpmpx1a82gn4j47895zwc279dhwnlrh";
2577 type = "gem";
2578 };
2579 version = "5.38.0";
2580 };
2581 temple = {
2582 groups = ["default"];
2583 platforms = [];
2584 source = {
2585 remotes = ["https://rubygems.org"];
2586 sha256 = "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861";
2587 type = "gem";
2588 };
2589 version = "0.8.2";
2590 };
2591 test-prof = {
2592 groups = ["test"];
2593 platforms = [];
2594 source = {
2595 remotes = ["https://rubygems.org"];
2596 sha256 = "1vg0zjfgibdcgkzb4c25v0f4v6v8mvpzvgcag194rwglmkkyrwkx";
2597 type = "gem";
2598 };
2599 version = "1.0.7";
2600 };
2601 test-unit = {
2602 dependencies = ["power_assert"];
2603 groups = ["default"];
2604 platforms = [];
2605 source = {
2606 remotes = ["https://rubygems.org"];
2607 sha256 = "03pn837vgza8v550ggzhcxbvb80d6qivqnhv3n39lrfnsc8xgi7m";
2608 type = "gem";
2609 };
2610 version = "3.4.7";
2611 };
2612 thor = {
2613 groups = ["default" "development" "test"];
2614 platforms = [];
2615 source = {
2616 remotes = ["https://rubygems.org"];
2617 sha256 = "18yhlvmfya23cs3pvhr1qy38y41b6mhr5q9vwv5lrgk16wmf3jna";
2618 type = "gem";
2619 };
2620 version = "1.1.0";
2621 };
2622 thread-local = {
2623 groups = ["default"];
2624 platforms = [];
2625 source = {
2626 remotes = ["https://rubygems.org"];
2627 sha256 = "1ryjgfwcsbkxph1l24x87p1yabnnbqy958s57w37iwhf3z9nid9g";
2628 type = "gem";
2629 };
2630 version = "1.1.0";
2631 };
2632 thwait = {
2633 dependencies = ["e2mmap"];
2634 groups = ["default"];
2635 platforms = [];
2636 source = {
2637 remotes = ["https://rubygems.org"];
2638 sha256 = "0q0fqlh0668j66z0g3s5yhqs39368az2ycxyphsx4c5nib5r4kak";
2639 type = "gem";
2640 };
2641 version = "0.2.0";
2642 };
2643 tilt = {
2644 groups = ["default"];
2645 platforms = [];
2646 source = {
2647 remotes = ["https://rubygems.org"];
2648 sha256 = "0rn8z8hda4h41a64l0zhkiwz2vxw9b1nb70gl37h1dg2k874yrlv";
2649 type = "gem";
2650 };
2651 version = "2.0.10";
2652 };
2653 timecop = {
2654 groups = ["development" "test"];
2655 platforms = [];
2656 source = {
2657 remotes = ["https://rubygems.org"];
2658 sha256 = "1fw3nzycvd15qa7sxy9dxb4hqyizy1s8f7q3d50smbzyyvr8fvia";
2659 type = "gem";
2660 };
2661 version = "0.9.4";
2662 };
2663 ttfunk = {
2664 groups = ["default" "test"];
2665 platforms = [];
2666 source = {
2667 remotes = ["https://rubygems.org"];
2668 sha256 = "15iaxz9iak5643bq2bc0jkbjv8w2zn649lxgvh5wg48q9d4blw13";
2669 type = "gem";
2670 };
2671 version = "1.7.0";
2672 };
2673 tzinfo = {
2674 dependencies = ["concurrent-ruby"];
2675 groups = ["default" "development" "test"];
2676 platforms = [];
2677 source = {
2678 remotes = ["https://rubygems.org"];
2679 sha256 = "10qp5x7f9hvlc0psv9gsfbxg4a7s0485wsbq1kljkxq94in91l4z";
2680 type = "gem";
2681 };
2682 version = "2.0.4";
2683 };
2684 uglifier = {
2685 dependencies = ["execjs"];
2686 groups = ["default"];
2687 platforms = [];
2688 source = {
2689 remotes = ["https://rubygems.org"];
2690 sha256 = "0wgh7bzy68vhv9v68061519dd8samcy8sazzz0w3k8kqpy3g4s5f";
2691 type = "gem";
2692 };
2693 version = "4.2.0";
2694 };
2695 unicode-display_width = {
2696 groups = ["default" "development"];
2697 platforms = [];
2698 source = {
2699 remotes = ["https://rubygems.org"];
2700 sha256 = "0csjm9shhfik0ci9mgimb7hf3xgh7nx45rkd9rzgdz6vkwr8rzxn";
2701 type = "gem";
2702 };
2703 version = "2.1.0";
2704 };
2705 uniform_notifier = {
2706 groups = ["default" "development" "test"];
2707 platforms = [];
2708 source = {
2709 remotes = ["https://rubygems.org"];
2710 sha256 = "1614dqnky0f9f1znj0lih8i184vfps86md93dw0kxrg3af9gnqb4";
2711 type = "gem";
2712 };
2713 version = "1.14.2";
2714 };
2715 valid_email2 = {
2716 dependencies = ["activemodel" "mail"];
2717 groups = ["default"];
2718 platforms = [];
2719 source = {
2720 remotes = ["https://rubygems.org"];
2721 sha256 = "0l4xkwvx7aj5z18h6vzp0wsfjbcrl76ixp0x95wwlrhn03qab6hs";
2722 type = "gem";
2723 };
2724 version = "4.0.0";
2725 };
2726 view_component = {
2727 dependencies = ["activesupport" "method_source"];
2728 groups = ["default" "development"];
2729 platforms = [];
2730 source = {
2731 remotes = ["https://rubygems.org"];
2732 sha256 = "0qygf9dfn42q8y3i2g04zqqmw1bjklmsxgdcpfk07nbnpjh391i9";
2733 type = "gem";
2734 };
2735 version = "2.40.0";
2736 };
2737 view_component_storybook = {
2738 dependencies = ["view_component"];
2739 groups = ["development"];
2740 platforms = [];
2741 source = {
2742 remotes = ["https://rubygems.org"];
2743 sha256 = "0yslfpcw58mqqaig83b2h98mf04i19ck37m270d8naxr69iv9h0n";
2744 type = "gem";
2745 };
2746 version = "0.10.1";
2747 };
2748 warden = {
2749 dependencies = ["rack"];
2750 groups = ["default"];
2751 platforms = [];
2752 source = {
2753 remotes = ["https://rubygems.org"];
2754 sha256 = "1l7gl7vms023w4clg02pm4ky9j12la2vzsixi2xrv9imbn44ys26";
2755 type = "gem";
2756 };
2757 version = "1.2.9";
2758 };
2759 web = {
2760 groups = ["default"];
2761 platforms = [];
2762 source = {
2763 path = engines/web;
2764 type = "path";
2765 };
2766 version = "0.0.1";
2767 };
2768 web-console = {
2769 dependencies = ["actionview" "activemodel" "bindex" "railties"];
2770 groups = ["development"];
2771 platforms = [];
2772 source = {
2773 remotes = ["https://rubygems.org"];
2774 sha256 = "0d9hk929cmisix2l1w9kkh05b57ih9yvnh4wv52axxw41scnv2d9";
2775 type = "gem";
2776 };
2777 version = "4.1.0";
2778 };
2779 webdrivers = {
2780 dependencies = ["nokogiri" "rubyzip" "selenium-webdriver"];
2781 groups = ["development" "test"];
2782 platforms = [];
2783 source = {
2784 remotes = ["https://rubygems.org"];
2785 sha256 = "1naymcfmm9pkf0f67xd99d9f6dpv477ggyvc1c04gxifirynfydp";
2786 type = "gem";
2787 };
2788 version = "4.6.1";
2789 };
2790 webmock = {
2791 dependencies = ["addressable" "crack" "hashdiff"];
2792 groups = ["test"];
2793 platforms = [];
2794 source = {
2795 remotes = ["https://rubygems.org"];
2796 sha256 = "1l8vh8p0g92cqcvv0ra3mblsa4nczh0rz8nbwbkc3g3yzbva85xk";
2797 type = "gem";
2798 };
2799 version = "3.14.0";
2800 };
2801 webpacker = {
2802 dependencies = ["activesupport" "rack-proxy" "railties" "semantic_range"];
2803 groups = ["default"];
2804 platforms = [];
2805 source = {
2806 remotes = ["https://rubygems.org"];
2807 sha256 = "1cq6m5qwm3bmi7hkjfmbg2cs4qjq4wswlrwcfk8l1svfqbi135v3";
2808 type = "gem";
2809 };
2810 version = "5.4.3";
2811 };
2812 websocket-driver = {
2813 dependencies = ["websocket-extensions"];
2814 groups = ["default" "development" "test"];
2815 platforms = [];
2816 source = {
2817 remotes = ["https://rubygems.org"];
2818 sha256 = "0a3bwxd9v3ghrxzjc4vxmf4xa18c6m4xqy5wb0yk5c6b9psc7052";
2819 type = "gem";
2820 };
2821 version = "0.7.5";
2822 };
2823 websocket-extensions = {
2824 groups = ["default" "development" "test"];
2825 platforms = [];
2826 source = {
2827 remotes = ["https://rubygems.org"];
2828 sha256 = "0hc2g9qps8lmhibl5baa91b4qx8wqw872rgwagml78ydj8qacsqw";
2829 type = "gem";
2830 };
2831 version = "0.1.5";
2832 };
2833 whenever = {
2834 dependencies = ["chronic"];
2835 groups = ["default"];
2836 platforms = [];
2837 source = {
2838 remotes = ["https://rubygems.org"];
2839 sha256 = "0im2x9rgr752hb9f1nnfj486k96bfiqj0xsv2bmzaq1rqhbi9dyr";
2840 type = "gem";
2841 };
2842 version = "1.0.0";
2843 };
2844 wicked_pdf = {
2845 dependencies = ["activesupport"];
2846 groups = ["default"];
2847 platforms = [];
2848 source = {
2849 remotes = ["https://rubygems.org"];
2850 sha256 = "0i7ifpb5ynvg7m6i1bivmvnaz29vjfwf6f4qj9gs7nq4yyxflqr6";
2851 type = "gem";
2852 };
2853 version = "2.1.0";
2854 };
2855 wkhtmltopdf-binary = {
2856 groups = ["default"];
2857 platforms = [];
2858 source = {
2859 remotes = ["https://rubygems.org"];
2860 sha256 = "1ksmryizimmw60k5siciv3xfxx9q797bh5a1rga7hqban98rv0c2";
2861 type = "gem";
2862 };
2863 version = "0.12.6.5";
2864 };
2865 xml-simple = {
2866 groups = ["default"];
2867 platforms = [];
2868 source = {
2869 remotes = ["https://rubygems.org"];
2870 sha256 = "1flpmghcbil6qbl3f6w67kpjrnjbw86x7h6g5n4m5ff0cg4sylrv";
2871 type = "gem";
2872 };
2873 version = "1.1.8";
2874 };
2875 xpath = {
2876 dependencies = ["nokogiri"];
2877 groups = ["default" "development" "test"];
2878 platforms = [];
2879 source = {
2880 remotes = ["https://rubygems.org"];
2881 sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
2882 type = "gem";
2883 };
2884 version = "3.2.0";
2885 };
2886 zeitwerk = {
2887 groups = ["default" "development" "test"];
2888 platforms = [];
2889 source = {
2890 remotes = ["https://rubygems.org"];
2891 sha256 = "1746czsjarixq0x05f7p3hpzi38ldg6wxnxxw74kbjzh1sdjgmpl";
2892 type = "gem";
2893 };
2894 version = "2.4.2";
2895 };
2896} \ 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 @@
45 let 45 let
46 cfg = config.services.paste; 46 cfg = config.services.paste;
47 in { 47 in {
48 # Necessary for situations where flake gets included multiple times
49 key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
48 options = { 50 options = {
49 services.paste = { 51 services.paste = {
50 enable = lib.mkOption { 52 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
10 10
11magic = magic.Magic(mime=True) 11magic = magic.Magic(mime=True)
12 12
13mit_license = """
14Copyright (c) 2022 Immae
15
16Permission is hereby granted, free of charge, to any person obtaining a copy
17of this software and associated documentation files (the "Software"), to deal
18in the Software without restriction, including without limitation the rights
19to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
20copies of the Software, and to permit persons to whom the Software is
21furnished to do so, subject to the following conditions:
22
23The above copyright notice and this permission notice shall be included in all
24copies or substantial portions of the Software.
25
26THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32SOFTWARE.
33"""
34
13config = { 35config = {
14 "directory": os.environ["PASTE_DIRECTORY"], 36 "directory": os.environ["PASTE_DIRECTORY"],
15 "self_paste_id": "abcd123", 37 "self_paste_id": "abcd123",
38 "license_paste_id": "license",
16 "max_content_length": 16 * 1000 * 1000 39 "max_content_length": 16 * 1000 * 1000
17 } 40 }
18 41
@@ -33,6 +56,8 @@ def read_paste(paste_id):
33 if mime.startswith("text/x-script."): 56 if mime.startswith("text/x-script."):
34 mime="text/plain" 57 mime="text/plain"
35 return (content, mime) 58 return (content, mime)
59 elif paste_id == config["license_paste_id"]:
60 return (mit_license, "text/plain")
36 else: 61 else:
37 abort(404) 62 abort(404)
38 63
@@ -69,9 +94,11 @@ $ curl -X POST --data-binary @{self} {host}
69-> GET {paste}/download 94-> GET {paste}/download
70 force download of file 95 force download of file
71</pre> 96</pre>
72<a href="{paste}/py">Get the source</a> 97<a href="{paste}/py">Get the source</a><br />
98Software licensed under the terms of the <a href="{host}/license">MIT license</a>
73'''.format(host=url_for('post_paste', _external=True, _scheme="https"), 99'''.format(host=url_for('post_paste', _external=True, _scheme="https"),
74 paste=url_for('get_paste', _external=True, _scheme="https", paste_id=config["self_paste_id"]), 100 paste=url_for('get_paste', _external=True, _scheme="https", paste_id=config["self_paste_id"]),
101 license=url_for('get_paste', _external=True, _scheme="https", paste_id=config["license_paste_id"]),
75 self=os.path.basename(__file__) 102 self=os.path.basename(__file__)
76 ), mimetype="text/html") 103 ), mimetype="text/html")
77 104
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 @@
17 }, 17 },
18 "myuids": { 18 "myuids": {
19 "locked": { 19 "locked": {
20 "dir": "flakes/myuids", 20 "lastModified": 1,
21 "lastModified": 1628207001, 21 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
22 "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=", 22 "path": "../myuids",
23 "ref": "master", 23 "type": "path"
24 "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
25 "revCount": 865,
26 "type": "git",
27 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
28 }, 24 },
29 "original": { 25 "original": {
30 "dir": "flakes/myuids", 26 "path": "../myuids",
31 "type": "git", 27 "type": "path"
32 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
33 } 28 }
34 }, 29 },
35 "nixpkgs": { 30 "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 @@
1{ 1{
2 description = "A free software to take back control of your videos"; 2 description = "A free software to take back control of your videos";
3 inputs.myuids = { 3 inputs.myuids = {
4 url = "https://git.immae.eu/perso/Immae/Config/Nix.git"; 4 url = "path:../myuids";
5 type = "git";
6 dir = "flakes/myuids";
7 }; 5 };
8 inputs.flake-utils.url = "github:numtide/flake-utils"; 6 inputs.flake-utils.url = "github:numtide/flake-utils";
9 inputs.nixpkgs.url = "github:NixOS/nixpkgs"; 7 inputs.nixpkgs.url = "github:NixOS/nixpkgs";
@@ -166,10 +164,10 @@
166 nixosModule = { lib, pkgs, config, ... }: 164 nixosModule = { lib, pkgs, config, ... }:
167 let 165 let
168 name = "peertube"; 166 name = "peertube";
169 cfg = config.services.peertube; 167 cfg = config.immaeServices.peertube;
170 in 168 in
171 { 169 {
172 options.services.peertube = { 170 options.immaeServices.peertube = {
173 enable = lib.mkEnableOption "Enable Peertube’s service"; 171 enable = lib.mkEnableOption "Enable Peertube’s service";
174 user = lib.mkOption { 172 user = lib.mkOption {
175 type = lib.types.str; 173 type = lib.types.str;
@@ -239,6 +237,8 @@
239 237
240 environment.NODE_CONFIG_DIR = "${cfg.dataDir}/config"; 238 environment.NODE_CONFIG_DIR = "${cfg.dataDir}/config";
241 environment.NODE_ENV = "production"; 239 environment.NODE_ENV = "production";
240 environment.NPM_CONFIG_LOGS_DIR = "${cfg.dataDir}/npm_logs";
241 environment.NPM_CONFIG_CACHE = "${cfg.dataDir}/npm_cache";
242 environment.HOME = cfg.package; 242 environment.HOME = cfg.package;
243 243
244 path = [ pkgs.nodejs pkgs.yarn pkgs.bashInteractive pkgs.ffmpeg pkgs.openssl ]; 244 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 @@
1# Generated by bower2nix v3.2.0 (https://github.com/rvl/bower2nix)
2{ fetchbower, buildEnv }:
3buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [
4 (fetchbower "jquery" "2.1.1" "2.1.1" "1qir36vi0bppjr9ckm6303vk1f1dkvq5wandpihb7dxl76s832bd")
5 (fetchbower "angular" "1.5.11" "~1.5.3" "1sw31v3dhmxwgrmncw2f9yl07i9px62ssbj0739zsgi59cq2khl7")
6 (fetchbower "lodash" "2.4.2" "~2.4.1" "0bhqarlvhlrxfvcgnxgsrsjgi6az4c117ffxyfi7gjwr9cvrzz4q")
7 (fetchbower "angular-mocks" "1.5.11" "~1.5.3" "0yv0396fw51i6d9lwiwf241rmc28rnxgg2aa9vsc7dnm4qjkn6gx")
8 (fetchbower "buildbot-data" "2.1.0" "~2.1.0" "0hkmm1byy7d712898lhkxf7i0wshmd1f8cr98iz67679nm6abimk")
9]; }
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 @@
1{ stdenv, runCommand, writeScriptBin, buildBowerComponents, pythonPackages, fetchurl, jq, yarn, nodejs-10_x, yarn2nix-moretea, buildslist_src }:
2let
3 yarn2nix-moretea' = yarn2nix-moretea.override({
4 yarn = yarn.override({ nodejs = nodejs-10_x; });
5 nodejs = nodejs-10_x;
6 });
7 packagejson = runCommand "package.json" { buildInputs = [ jq ]; } ''
8 cat ${buildslist_src}/package.json | jq -r '.version = "${pythonPackages.buildbot-pkg.version}"|.license= "MIT"' > $out
9 '';
10 nodeHeaders = fetchurl {
11 url = "https://nodejs.org/download/release/v${nodejs-10_x.version}/node-v${nodejs-10_x.version}-headers.tar.gz";
12 sha256 = "sha256-LEk6BOW/vwdUXGAialDOoyFIkZ81k6ADy6MhMfRiE5Y=";
13 };
14 buildslist_yarn = yarn2nix-moretea'.mkYarnModules rec {
15 name = "buildslist-yarn-modules";
16 pname = name;
17 inherit (pythonPackages.buildbot-pkg) version;
18 packageJSON = packagejson;
19 yarnLock = "${buildslist_src}/yarn.lock";
20 yarnNix = ./yarn-packages.nix;
21 pkgConfig = {
22 node-sass = {
23 buildInputs = with yarn2nix-moretea'.pkgs; [ libsass python2 ];
24 postInstall =
25 ''
26 node scripts/build.js --tarball=${nodeHeaders}
27 '';
28 };
29 };
30 };
31 buildslist_bower = buildBowerComponents {
32 name = "buildslist";
33 generated = ./bower.nix;
34 src = "${buildslist_src}/guanlecoja/";
35 };
36 # the buildbot-pkg calls yarn and screws up everything...
37 fakeYarn = writeScriptBin "yarn" ''
38 #!${stdenv.shell}
39 if [ "$1" = "--version" ]; then
40 echo "1.17"
41 fi
42 '';
43in
44pythonPackages.buildPythonPackage rec {
45 pname = "buildbot-buildslist";
46 inherit (pythonPackages.buildbot-pkg) version;
47
48 preConfigure = ''
49 export HOME=$PWD
50 ln -s ${buildslist_yarn}/node_modules .
51 cp -a ${buildslist_bower}/bower_components ./libs
52 PATH=${buildslist_yarn}/node_modules/.bin:$PATH
53 chmod -R u+w libs
54 '';
55 propagatedBuildInputs = with pythonPackages; [
56 (klein.overridePythonAttrs(old: { checkPhase = ""; }))
57 buildbot-pkg
58 ];
59 nativeBuildInputs = [ fakeYarn nodejs-10_x ];
60 buildInputs = [ buildslist_yarn buildslist_bower ];
61
62 doCheck = false;
63 src = buildslist_src;
64}
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 @@
1{fetchurl, linkFarm}: rec {
2 offline_cache = linkFarm "offline" packages;
3 packages = [
4
5 {
6 name = "_types_babel_types___babel_types_7.0.7.tgz";
7 path = fetchurl {
8 name = "_types_babel_types___babel_types_7.0.7.tgz";
9 url = "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.7.tgz";
10 sha1 = "667eb1640e8039436028055737d2b9986ee336e3";
11 };
12 }
13
14 {
15 name = "_types_babylon___babylon_6.16.5.tgz";
16 path = fetchurl {
17 name = "_types_babylon___babylon_6.16.5.tgz";
18 url = "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.5.tgz";
19 sha1 = "1c5641db69eb8cdf378edd25b4be7754beeb48b4";
20 };
21 }
22
23 {
24 name = "_types_color_name___color_name_1.1.1.tgz";
25 path = fetchurl {
26 name = "_types_color_name___color_name_1.1.1.tgz";
27 url = "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz";
28 sha1 = "1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0";
29 };
30 }
31
32 {
33 name = "Base64___Base64_0.2.1.tgz";
34 path = fetchurl {
35 name = "Base64___Base64_0.2.1.tgz";
36 url = "https://registry.yarnpkg.com/Base64/-/Base64-0.2.1.tgz";
37 sha1 = "ba3a4230708e186705065e66babdd4c35cf60028";
38 };
39 }
40
41 {
42 name = "JSONStream___JSONStream_0.6.4.tgz";
43 path = fetchurl {
44 name = "JSONStream___JSONStream_0.6.4.tgz";
45 url = "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.6.4.tgz";
46 sha1 = "4b2c8063f8f512787b2375f7ee9db69208fa2dcb";
47 };
48 }
49
50 {
51 name = "JSONStream___JSONStream_0.7.4.tgz";
52 path = fetchurl {
53 name = "JSONStream___JSONStream_0.7.4.tgz";
54 url = "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.7.4.tgz";
55 sha1 = "734290e41511eea7c2cfe151fbf9a563a97b9786";
56 };
57 }
58
59 {
60 name = "abbrev___abbrev_1.1.1.tgz";
61 path = fetchurl {
62 name = "abbrev___abbrev_1.1.1.tgz";
63 url = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz";
64 sha1 = "f8f2c887ad10bf67f634f005b6987fed3179aac8";
65 };
66 }
67
68 {
69 name = "abbrev___abbrev_1.0.9.tgz";
70 path = fetchurl {
71 name = "abbrev___abbrev_1.0.9.tgz";
72 url = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz";
73 sha1 = "91b4792588a7738c25f35dd6f63752a2f8776135";
74 };
75 }
76
77 {
78 name = "accepts___accepts_1.3.3.tgz";
79 path = fetchurl {
80 name = "accepts___accepts_1.3.3.tgz";
81 url = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz";
82 sha1 = "c3ca7434938648c3e0d9c1e328dd68b622c284ca";
83 };
84 }
85
86 {
87 name = "acorn_globals___acorn_globals_3.1.0.tgz";
88 path = fetchurl {
89 name = "acorn_globals___acorn_globals_3.1.0.tgz";
90 url = "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz";
91 sha1 = "fd8270f71fbb4996b004fa880ee5d46573a731bf";
92 };
93 }
94
95 {
96 name = "acorn___acorn_2.7.0.tgz";
97 path = fetchurl {
98 name = "acorn___acorn_2.7.0.tgz";
99 url = "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz";
100 sha1 = "ab6e7d9d886aaca8b085bc3312b79a198433f0e7";
101 };
102 }
103
104 {
105 name = "acorn___acorn_3.3.0.tgz";
106 path = fetchurl {
107 name = "acorn___acorn_3.3.0.tgz";
108 url = "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz";
109 sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
110 };
111 }
112
113 {
114 name = "acorn___acorn_4.0.13.tgz";
115 path = fetchurl {
116 name = "acorn___acorn_4.0.13.tgz";
117 url = "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz";
118 sha1 = "105495ae5361d697bd195c825192e1ad7f253787";
119 };
120 }
121
122 {
123 name = "acorn___acorn_2.6.4.tgz";
124 path = fetchurl {
125 name = "acorn___acorn_2.6.4.tgz";
126 url = "https://registry.yarnpkg.com/acorn/-/acorn-2.6.4.tgz";
127 sha1 = "eb1f45b4a43fa31d03701a5ec46f3b52673e90ee";
128 };
129 }
130
131 {
132 name = "after___after_0.8.2.tgz";
133 path = fetchurl {
134 name = "after___after_0.8.2.tgz";
135 url = "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz";
136 sha1 = "fedb394f9f0e02aa9768e702bda23b505fae7e1f";
137 };
138 }
139
140 {
141 name = "ajv___ajv_6.12.0.tgz";
142 path = fetchurl {
143 name = "ajv___ajv_6.12.0.tgz";
144 url = "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz";
145 sha1 = "06d60b96d87b8454a5adaba86e7854da629db4b7";
146 };
147 }
148
149 {
150 name = "align_text___align_text_0.1.4.tgz";
151 path = fetchurl {
152 name = "align_text___align_text_0.1.4.tgz";
153 url = "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz";
154 sha1 = "0cd90a561093f35d0a99256c22b7069433fad117";
155 };
156 }
157
158 {
159 name = "alter___alter_0.2.0.tgz";
160 path = fetchurl {
161 name = "alter___alter_0.2.0.tgz";
162 url = "https://registry.yarnpkg.com/alter/-/alter-0.2.0.tgz";
163 sha1 = "c7588808617572034aae62480af26b1d4d1cb3cd";
164 };
165 }
166
167 {
168 name = "amdefine___amdefine_1.0.1.tgz";
169 path = fetchurl {
170 name = "amdefine___amdefine_1.0.1.tgz";
171 url = "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz";
172 sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
173 };
174 }
175
176 {
177 name = "ansi_gray___ansi_gray_0.1.1.tgz";
178 path = fetchurl {
179 name = "ansi_gray___ansi_gray_0.1.1.tgz";
180 url = "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz";
181 sha1 = "2962cf54ec9792c48510a3deb524436861ef7251";
182 };
183 }
184
185 {
186 name = "ansi_regex___ansi_regex_0.2.1.tgz";
187 path = fetchurl {
188 name = "ansi_regex___ansi_regex_0.2.1.tgz";
189 url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz";
190 sha1 = "0d8e946967a3d8143f93e24e298525fc1b2235f9";
191 };
192 }
193
194 {
195 name = "ansi_regex___ansi_regex_1.1.1.tgz";
196 path = fetchurl {
197 name = "ansi_regex___ansi_regex_1.1.1.tgz";
198 url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-1.1.1.tgz";
199 sha1 = "41c847194646375e6a1a5d10c3ca054ef9fc980d";
200 };
201 }
202
203 {
204 name = "ansi_regex___ansi_regex_2.1.1.tgz";
205 path = fetchurl {
206 name = "ansi_regex___ansi_regex_2.1.1.tgz";
207 url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz";
208 sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
209 };
210 }
211
212 {
213 name = "ansi_regex___ansi_regex_3.0.0.tgz";
214 path = fetchurl {
215 name = "ansi_regex___ansi_regex_3.0.0.tgz";
216 url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz";
217 sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
218 };
219 }
220
221 {
222 name = "ansi_styles___ansi_styles_1.1.0.tgz";
223 path = fetchurl {
224 name = "ansi_styles___ansi_styles_1.1.0.tgz";
225 url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz";
226 sha1 = "eaecbf66cd706882760b2f4691582b8f55d7a7de";
227 };
228 }
229
230 {
231 name = "ansi_styles___ansi_styles_2.2.1.tgz";
232 path = fetchurl {
233 name = "ansi_styles___ansi_styles_2.2.1.tgz";
234 url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz";
235 sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
236 };
237 }
238
239 {
240 name = "ansi_styles___ansi_styles_4.2.1.tgz";
241 path = fetchurl {
242 name = "ansi_styles___ansi_styles_4.2.1.tgz";
243 url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz";
244 sha1 = "90ae75c424d008d2624c5bf29ead3177ebfcf359";
245 };
246 }
247
248 {
249 name = "ansi_styles___ansi_styles_1.0.0.tgz";
250 path = fetchurl {
251 name = "ansi_styles___ansi_styles_1.0.0.tgz";
252 url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz";
253 sha1 = "cb102df1c56f5123eab8b67cd7b98027a0279178";
254 };
255 }
256
257 {
258 name = "ansi_wrap___ansi_wrap_0.1.0.tgz";
259 path = fetchurl {
260 name = "ansi_wrap___ansi_wrap_0.1.0.tgz";
261 url = "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz";
262 sha1 = "a82250ddb0015e9a27ca82e82ea603bbfa45efaf";
263 };
264 }
265
266 {
267 name = "ansicolors___ansicolors_0.2.1.tgz";
268 path = fetchurl {
269 name = "ansicolors___ansicolors_0.2.1.tgz";
270 url = "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz";
271 sha1 = "be089599097b74a5c9c4a84a0cdbcdb62bd87aef";
272 };
273 }
274
275 {
276 name = "anymatch___anymatch_1.3.2.tgz";
277 path = fetchurl {
278 name = "anymatch___anymatch_1.3.2.tgz";
279 url = "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz";
280 sha1 = "553dcb8f91e3c889845dfdba34c77721b90b9d7a";
281 };
282 }
283
284 {
285 name = "aproba___aproba_1.2.0.tgz";
286 path = fetchurl {
287 name = "aproba___aproba_1.2.0.tgz";
288 url = "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz";
289 sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
290 };
291 }
292
293 {
294 name = "archy___archy_1.0.0.tgz";
295 path = fetchurl {
296 name = "archy___archy_1.0.0.tgz";
297 url = "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz";
298 sha1 = "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40";
299 };
300 }
301
302 {
303 name = "archy___archy_0.0.2.tgz";
304 path = fetchurl {
305 name = "archy___archy_0.0.2.tgz";
306 url = "https://registry.yarnpkg.com/archy/-/archy-0.0.2.tgz";
307 sha1 = "910f43bf66141fc335564597abc189df44b3d35e";
308 };
309 }
310
311 {
312 name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
313 path = fetchurl {
314 name = "are_we_there_yet___are_we_there_yet_1.1.5.tgz";
315 url = "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
316 sha1 = "4b35c2944f062a8bfcda66410760350fe9ddfc21";
317 };
318 }
319
320 {
321 name = "argparse___argparse_1.0.10.tgz";
322 path = fetchurl {
323 name = "argparse___argparse_1.0.10.tgz";
324 url = "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz";
325 sha1 = "bcd6791ea5ae09725e17e5ad988134cd40b3d911";
326 };
327 }
328
329 {
330 name = "argparse___argparse_0.1.16.tgz";
331 path = fetchurl {
332 name = "argparse___argparse_0.1.16.tgz";
333 url = "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz";
334 sha1 = "cfd01e0fbba3d6caed049fbd758d40f65196f57c";
335 };
336 }
337
338 {
339 name = "arr_diff___arr_diff_2.0.0.tgz";
340 path = fetchurl {
341 name = "arr_diff___arr_diff_2.0.0.tgz";
342 url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz";
343 sha1 = "8f3b827f955a8bd669697e4a4256ac3ceae356cf";
344 };
345 }
346
347 {
348 name = "arr_diff___arr_diff_4.0.0.tgz";
349 path = fetchurl {
350 name = "arr_diff___arr_diff_4.0.0.tgz";
351 url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz";
352 sha1 = "d6461074febfec71e7e15235761a329a5dc7c520";
353 };
354 }
355
356 {
357 name = "arr_flatten___arr_flatten_1.1.0.tgz";
358 path = fetchurl {
359 name = "arr_flatten___arr_flatten_1.1.0.tgz";
360 url = "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz";
361 sha1 = "36048bbff4e7b47e136644316c99669ea5ae91f1";
362 };
363 }
364
365 {
366 name = "arr_union___arr_union_3.1.0.tgz";
367 path = fetchurl {
368 name = "arr_union___arr_union_3.1.0.tgz";
369 url = "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz";
370 sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
371 };
372 }
373
374 {
375 name = "array_differ___array_differ_1.0.0.tgz";
376 path = fetchurl {
377 name = "array_differ___array_differ_1.0.0.tgz";
378 url = "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz";
379 sha1 = "eff52e3758249d33be402b8bb8e564bb2b5d4031";
380 };
381 }
382
383 {
384 name = "array_each___array_each_1.0.1.tgz";
385 path = fetchurl {
386 name = "array_each___array_each_1.0.1.tgz";
387 url = "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz";
388 sha1 = "a794af0c05ab1752846ee753a1f211a05ba0c44f";
389 };
390 }
391
392 {
393 name = "array_filter___array_filter_0.0.1.tgz";
394 path = fetchurl {
395 name = "array_filter___array_filter_0.0.1.tgz";
396 url = "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz";
397 sha1 = "7da8cf2e26628ed732803581fd21f67cacd2eeec";
398 };
399 }
400
401 {
402 name = "array_find_index___array_find_index_1.0.2.tgz";
403 path = fetchurl {
404 name = "array_find_index___array_find_index_1.0.2.tgz";
405 url = "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz";
406 sha1 = "df010aa1287e164bbda6f9723b0a96a1ec4187a1";
407 };
408 }
409
410 {
411 name = "array_map___array_map_0.0.0.tgz";
412 path = fetchurl {
413 name = "array_map___array_map_0.0.0.tgz";
414 url = "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz";
415 sha1 = "88a2bab73d1cf7bcd5c1b118a003f66f665fa662";
416 };
417 }
418
419 {
420 name = "array_reduce___array_reduce_0.0.0.tgz";
421 path = fetchurl {
422 name = "array_reduce___array_reduce_0.0.0.tgz";
423 url = "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz";
424 sha1 = "173899d3ffd1c7d9383e4479525dbe278cab5f2b";
425 };
426 }
427
428 {
429 name = "array_slice___array_slice_0.2.3.tgz";
430 path = fetchurl {
431 name = "array_slice___array_slice_0.2.3.tgz";
432 url = "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz";
433 sha1 = "dd3cfb80ed7973a75117cdac69b0b99ec86186f5";
434 };
435 }
436
437 {
438 name = "array_slice___array_slice_1.1.0.tgz";
439 path = fetchurl {
440 name = "array_slice___array_slice_1.1.0.tgz";
441 url = "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz";
442 sha1 = "e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4";
443 };
444 }
445
446 {
447 name = "array_uniq___array_uniq_1.0.3.tgz";
448 path = fetchurl {
449 name = "array_uniq___array_uniq_1.0.3.tgz";
450 url = "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz";
451 sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
452 };
453 }
454
455 {
456 name = "array_unique___array_unique_0.2.1.tgz";
457 path = fetchurl {
458 name = "array_unique___array_unique_0.2.1.tgz";
459 url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz";
460 sha1 = "a1d97ccafcbc2625cc70fadceb36a50c58b01a53";
461 };
462 }
463
464 {
465 name = "array_unique___array_unique_0.3.2.tgz";
466 path = fetchurl {
467 name = "array_unique___array_unique_0.3.2.tgz";
468 url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz";
469 sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
470 };
471 }
472
473 {
474 name = "arraybuffer.slice___arraybuffer.slice_0.0.6.tgz";
475 path = fetchurl {
476 name = "arraybuffer.slice___arraybuffer.slice_0.0.6.tgz";
477 url = "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz";
478 sha1 = "f33b2159f0532a3f3107a272c0ccfbd1ad2979ca";
479 };
480 }
481
482 {
483 name = "asap___asap_2.0.6.tgz";
484 path = fetchurl {
485 name = "asap___asap_2.0.6.tgz";
486 url = "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz";
487 sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
488 };
489 }
490
491 {
492 name = "asn1___asn1_0.1.11.tgz";
493 path = fetchurl {
494 name = "asn1___asn1_0.1.11.tgz";
495 url = "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz";
496 sha1 = "559be18376d08a4ec4dbe80877d27818639b2df7";
497 };
498 }
499
500 {
501 name = "asn1___asn1_0.2.4.tgz";
502 path = fetchurl {
503 name = "asn1___asn1_0.2.4.tgz";
504 url = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz";
505 sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136";
506 };
507 }
508
509 {
510 name = "assert_plus___assert_plus_1.0.0.tgz";
511 path = fetchurl {
512 name = "assert_plus___assert_plus_1.0.0.tgz";
513 url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz";
514 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
515 };
516 }
517
518 {
519 name = "assert_plus___assert_plus_0.1.5.tgz";
520 path = fetchurl {
521 name = "assert_plus___assert_plus_0.1.5.tgz";
522 url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz";
523 sha1 = "ee74009413002d84cec7219c6ac811812e723160";
524 };
525 }
526
527 {
528 name = "assert___assert_1.1.2.tgz";
529 path = fetchurl {
530 name = "assert___assert_1.1.2.tgz";
531 url = "https://registry.yarnpkg.com/assert/-/assert-1.1.2.tgz";
532 sha1 = "adaa04c46bb58c6dd1f294da3eb26e6228eb6e44";
533 };
534 }
535
536 {
537 name = "assign_symbols___assign_symbols_1.0.0.tgz";
538 path = fetchurl {
539 name = "assign_symbols___assign_symbols_1.0.0.tgz";
540 url = "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz";
541 sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
542 };
543 }
544
545 {
546 name = "astw___astw_2.2.0.tgz";
547 path = fetchurl {
548 name = "astw___astw_2.2.0.tgz";
549 url = "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz";
550 sha1 = "7bd41784d32493987aeb239b6b4e1c57a873b917";
551 };
552 }
553
554 {
555 name = "async_each___async_each_1.0.3.tgz";
556 path = fetchurl {
557 name = "async_each___async_each_1.0.3.tgz";
558 url = "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz";
559 sha1 = "b727dbf87d7651602f06f4d4ac387f47d91b0cbf";
560 };
561 }
562
563 {
564 name = "async_foreach___async_foreach_0.1.3.tgz";
565 path = fetchurl {
566 name = "async_foreach___async_foreach_0.1.3.tgz";
567 url = "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz";
568 sha1 = "36121f845c0578172de419a97dbeb1d16ec34542";
569 };
570 }
571
572 {
573 name = "async___async_1.5.2.tgz";
574 path = fetchurl {
575 name = "async___async_1.5.2.tgz";
576 url = "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz";
577 sha1 = "ec6a61ae56480c0c3cb241c95618e20892f9672a";
578 };
579 }
580
581 {
582 name = "async___async_0.2.10.tgz";
583 path = fetchurl {
584 name = "async___async_0.2.10.tgz";
585 url = "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz";
586 sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
587 };
588 }
589
590 {
591 name = "async___async_0.8.0.tgz";
592 path = fetchurl {
593 name = "async___async_0.8.0.tgz";
594 url = "https://registry.yarnpkg.com/async/-/async-0.8.0.tgz";
595 sha1 = "ee65ec77298c2ff1456bc4418a052d0f06435112";
596 };
597 }
598
599 {
600 name = "async___async_0.9.2.tgz";
601 path = fetchurl {
602 name = "async___async_0.9.2.tgz";
603 url = "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz";
604 sha1 = "aea74d5e61c1f899613bf64bda66d4c78f2fd17d";
605 };
606 }
607
608 {
609 name = "asynckit___asynckit_0.4.0.tgz";
610 path = fetchurl {
611 name = "asynckit___asynckit_0.4.0.tgz";
612 url = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz";
613 sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
614 };
615 }
616
617 {
618 name = "atob___atob_2.1.2.tgz";
619 path = fetchurl {
620 name = "atob___atob_2.1.2.tgz";
621 url = "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz";
622 sha1 = "6d9517eb9e030d2436666651e86bd9f6f13533c9";
623 };
624 }
625
626 {
627 name = "aws_sign2___aws_sign2_0.5.0.tgz";
628 path = fetchurl {
629 name = "aws_sign2___aws_sign2_0.5.0.tgz";
630 url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.5.0.tgz";
631 sha1 = "c57103f7a17fc037f02d7c2e64b602ea223f7d63";
632 };
633 }
634
635 {
636 name = "aws_sign2___aws_sign2_0.7.0.tgz";
637 path = fetchurl {
638 name = "aws_sign2___aws_sign2_0.7.0.tgz";
639 url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz";
640 sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
641 };
642 }
643
644 {
645 name = "aws_sign___aws_sign_0.3.0.tgz";
646 path = fetchurl {
647 name = "aws_sign___aws_sign_0.3.0.tgz";
648 url = "https://registry.yarnpkg.com/aws-sign/-/aws-sign-0.3.0.tgz";
649 sha1 = "3d81ca69b474b1e16518728b51c24ff0bbedc6e9";
650 };
651 }
652
653 {
654 name = "aws4___aws4_1.9.1.tgz";
655 path = fetchurl {
656 name = "aws4___aws4_1.9.1.tgz";
657 url = "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz";
658 sha1 = "7e33d8f7d449b3f673cd72deb9abdc552dbe528e";
659 };
660 }
661
662 {
663 name = "babel_runtime___babel_runtime_6.26.0.tgz";
664 path = fetchurl {
665 name = "babel_runtime___babel_runtime_6.26.0.tgz";
666 url = "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz";
667 sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
668 };
669 }
670
671 {
672 name = "babel_types___babel_types_6.26.0.tgz";
673 path = fetchurl {
674 name = "babel_types___babel_types_6.26.0.tgz";
675 url = "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz";
676 sha1 = "a3b073f94ab49eb6fa55cd65227a334380632497";
677 };
678 }
679
680 {
681 name = "babylon___babylon_6.18.0.tgz";
682 path = fetchurl {
683 name = "babylon___babylon_6.18.0.tgz";
684 url = "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz";
685 sha1 = "af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3";
686 };
687 }
688
689 {
690 name = "backo2___backo2_1.0.2.tgz";
691 path = fetchurl {
692 name = "backo2___backo2_1.0.2.tgz";
693 url = "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz";
694 sha1 = "31ab1ac8b129363463e35b3ebb69f4dfcfba7947";
695 };
696 }
697
698 {
699 name = "balanced_match___balanced_match_1.0.0.tgz";
700 path = fetchurl {
701 name = "balanced_match___balanced_match_1.0.0.tgz";
702 url = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz";
703 sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
704 };
705 }
706
707 {
708 name = "base64_arraybuffer___base64_arraybuffer_0.1.5.tgz";
709 path = fetchurl {
710 name = "base64_arraybuffer___base64_arraybuffer_0.1.5.tgz";
711 url = "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz";
712 sha1 = "73926771923b5a19747ad666aa5cd4bf9c6e9ce8";
713 };
714 }
715
716 {
717 name = "base64_js___base64_js_0.0.8.tgz";
718 path = fetchurl {
719 name = "base64_js___base64_js_0.0.8.tgz";
720 url = "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz";
721 sha1 = "1101e9544f4a76b1bc3b26d452ca96d7a35e7978";
722 };
723 }
724
725 {
726 name = "base64id___base64id_1.0.0.tgz";
727 path = fetchurl {
728 name = "base64id___base64id_1.0.0.tgz";
729 url = "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz";
730 sha1 = "47688cb99bb6804f0e06d3e763b1c32e57d8e6b6";
731 };
732 }
733
734 {
735 name = "base___base_0.11.2.tgz";
736 path = fetchurl {
737 name = "base___base_0.11.2.tgz";
738 url = "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz";
739 sha1 = "7bde5ced145b6d551a90db87f83c558b4eb48a8f";
740 };
741 }
742
743 {
744 name = "batch___batch_0.5.3.tgz";
745 path = fetchurl {
746 name = "batch___batch_0.5.3.tgz";
747 url = "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz";
748 sha1 = "3f3414f380321743bfc1042f9a83ff1d5824d464";
749 };
750 }
751
752 {
753 name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
754 path = fetchurl {
755 name = "bcrypt_pbkdf___bcrypt_pbkdf_1.0.2.tgz";
756 url = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
757 sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
758 };
759 }
760
761 {
762 name = "beeper___beeper_1.1.1.tgz";
763 path = fetchurl {
764 name = "beeper___beeper_1.1.1.tgz";
765 url = "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz";
766 sha1 = "e6d5ea8c5dad001304a70b22638447f69cb2f809";
767 };
768 }
769
770 {
771 name = "better_assert___better_assert_1.0.2.tgz";
772 path = fetchurl {
773 name = "better_assert___better_assert_1.0.2.tgz";
774 url = "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz";
775 sha1 = "40866b9e1b9e0b55b481894311e68faffaebc522";
776 };
777 }
778
779 {
780 name = "binary_extensions___binary_extensions_1.13.1.tgz";
781 path = fetchurl {
782 name = "binary_extensions___binary_extensions_1.13.1.tgz";
783 url = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz";
784 sha1 = "598afe54755b2868a5330d2aff9d4ebb53209b65";
785 };
786 }
787
788 {
789 name = "binary___binary_0.3.0.tgz";
790 path = fetchurl {
791 name = "binary___binary_0.3.0.tgz";
792 url = "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz";
793 sha1 = "9f60553bc5ce8c3386f3b553cff47462adecaa79";
794 };
795 }
796
797 {
798 name = "binaryextensions___binaryextensions_1.0.1.tgz";
799 path = fetchurl {
800 name = "binaryextensions___binaryextensions_1.0.1.tgz";
801 url = "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-1.0.1.tgz";
802 sha1 = "1e637488b35b58bda5f4774bf96a5212a8c90755";
803 };
804 }
805
806 {
807 name = "bindings___bindings_1.5.0.tgz";
808 path = fetchurl {
809 name = "bindings___bindings_1.5.0.tgz";
810 url = "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz";
811 sha1 = "10353c9e945334bc0511a6d90b38fbc7c9c504df";
812 };
813 }
814
815 {
816 name = "bl___bl_0.9.5.tgz";
817 path = fetchurl {
818 name = "bl___bl_0.9.5.tgz";
819 url = "https://registry.yarnpkg.com/bl/-/bl-0.9.5.tgz";
820 sha1 = "c06b797af085ea00bc527afc8efcf11de2232054";
821 };
822 }
823
824 {
825 name = "blob___blob_0.0.4.tgz";
826 path = fetchurl {
827 name = "blob___blob_0.0.4.tgz";
828 url = "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz";
829 sha1 = "bcf13052ca54463f30f9fc7e95b9a47630a94921";
830 };
831 }
832
833 {
834 name = "block_stream___block_stream_0.0.9.tgz";
835 path = fetchurl {
836 name = "block_stream___block_stream_0.0.9.tgz";
837 url = "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz";
838 sha1 = "13ebfe778a03205cfe03751481ebb4b3300c126a";
839 };
840 }
841
842 {
843 name = "bluebird___bluebird_2.11.0.tgz";
844 path = fetchurl {
845 name = "bluebird___bluebird_2.11.0.tgz";
846 url = "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz";
847 sha1 = "534b9033c022c9579c56ba3b3e5a5caafbb650e1";
848 };
849 }
850
851 {
852 name = "body_parser___body_parser_1.19.0.tgz";
853 path = fetchurl {
854 name = "body_parser___body_parser_1.19.0.tgz";
855 url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz";
856 sha1 = "96b2709e57c9c4e09a6fd66a8fd979844f69f08a";
857 };
858 }
859
860 {
861 name = "body_parser___body_parser_1.14.2.tgz";
862 path = fetchurl {
863 name = "body_parser___body_parser_1.14.2.tgz";
864 url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.14.2.tgz";
865 sha1 = "1015cb1fe2c443858259581db53332f8d0cf50f9";
866 };
867 }
868
869 {
870 name = "boom___boom_0.4.2.tgz";
871 path = fetchurl {
872 name = "boom___boom_0.4.2.tgz";
873 url = "https://registry.yarnpkg.com/boom/-/boom-0.4.2.tgz";
874 sha1 = "7a636e9ded4efcefb19cef4947a3c67dfaee911b";
875 };
876 }
877
878 {
879 name = "bower_config___bower_config_0.5.3.tgz";
880 path = fetchurl {
881 name = "bower_config___bower_config_0.5.3.tgz";
882 url = "https://registry.yarnpkg.com/bower-config/-/bower-config-0.5.3.tgz";
883 sha1 = "98fc5b41a87870ef9cbb9297635cf81f5505fdb1";
884 };
885 }
886
887 {
888 name = "bower_endpoint_parser___bower_endpoint_parser_0.2.2.tgz";
889 path = fetchurl {
890 name = "bower_endpoint_parser___bower_endpoint_parser_0.2.2.tgz";
891 url = "https://registry.yarnpkg.com/bower-endpoint-parser/-/bower-endpoint-parser-0.2.2.tgz";
892 sha1 = "00b565adbfab6f2d35addde977e97962acbcb3f6";
893 };
894 }
895
896 {
897 name = "bower_json___bower_json_0.4.0.tgz";
898 path = fetchurl {
899 name = "bower_json___bower_json_0.4.0.tgz";
900 url = "https://registry.yarnpkg.com/bower-json/-/bower-json-0.4.0.tgz";
901 sha1 = "a99c3ccf416ef0590ed0ded252c760f1c6d93766";
902 };
903 }
904
905 {
906 name = "bower_logger___bower_logger_0.2.2.tgz";
907 path = fetchurl {
908 name = "bower_logger___bower_logger_0.2.2.tgz";
909 url = "https://registry.yarnpkg.com/bower-logger/-/bower-logger-0.2.2.tgz";
910 sha1 = "39be07e979b2fc8e03a94634205ed9422373d381";
911 };
912 }
913
914 {
915 name = "bower_registry_client___bower_registry_client_0.2.4.tgz";
916 path = fetchurl {
917 name = "bower_registry_client___bower_registry_client_0.2.4.tgz";
918 url = "https://registry.yarnpkg.com/bower-registry-client/-/bower-registry-client-0.2.4.tgz";
919 sha1 = "269fc7e898b627fb939d1144a593254d7fbbeebc";
920 };
921 }
922
923 {
924 name = "bower___bower_1.3.8.tgz";
925 path = fetchurl {
926 name = "bower___bower_1.3.8.tgz";
927 url = "https://registry.yarnpkg.com/bower/-/bower-1.3.8.tgz";
928 sha1 = "afa3338a8a88a6e084c38112ea4a15998cbee3e6";
929 };
930 }
931
932 {
933 name = "brace_expansion___brace_expansion_1.1.11.tgz";
934 path = fetchurl {
935 name = "brace_expansion___brace_expansion_1.1.11.tgz";
936 url = "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz";
937 sha1 = "3c7fcbf529d87226f3d2f52b966ff5271eb441dd";
938 };
939 }
940
941 {
942 name = "braces___braces_0.1.5.tgz";
943 path = fetchurl {
944 name = "braces___braces_0.1.5.tgz";
945 url = "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz";
946 sha1 = "c085711085291d8b75fdd74eab0f8597280711e6";
947 };
948 }
949
950 {
951 name = "braces___braces_1.8.5.tgz";
952 path = fetchurl {
953 name = "braces___braces_1.8.5.tgz";
954 url = "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz";
955 sha1 = "ba77962e12dff969d6b76711e914b737857bf6a7";
956 };
957 }
958
959 {
960 name = "braces___braces_2.3.2.tgz";
961 path = fetchurl {
962 name = "braces___braces_2.3.2.tgz";
963 url = "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz";
964 sha1 = "5979fd3f14cd531565e5fa2df1abfff1dfaee729";
965 };
966 }
967
968 {
969 name = "browser_pack___browser_pack_2.0.1.tgz";
970 path = fetchurl {
971 name = "browser_pack___browser_pack_2.0.1.tgz";
972 url = "https://registry.yarnpkg.com/browser-pack/-/browser-pack-2.0.1.tgz";
973 sha1 = "5d1c527f56c582677411c4db2a128648ff6bf150";
974 };
975 }
976
977 {
978 name = "browser_resolve___browser_resolve_1.2.4.tgz";
979 path = fetchurl {
980 name = "browser_resolve___browser_resolve_1.2.4.tgz";
981 url = "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.2.4.tgz";
982 sha1 = "59ae7820a82955ecd32f5fb7c468ac21c4723806";
983 };
984 }
985
986 {
987 name = "browserify_shim___browserify_shim_2.0.10.tgz";
988 path = fetchurl {
989 name = "browserify_shim___browserify_shim_2.0.10.tgz";
990 url = "https://registry.yarnpkg.com/browserify-shim/-/browserify-shim-2.0.10.tgz";
991 sha1 = "74a0ed5b9b784a5a287906513a896d31f54a84b8";
992 };
993 }
994
995 {
996 name = "browserify_zlib___browserify_zlib_0.1.4.tgz";
997 path = fetchurl {
998 name = "browserify_zlib___browserify_zlib_0.1.4.tgz";
999 url = "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz";
1000 sha1 = "bb35f8a519f600e0fa6b8485241c979d0141fb2d";
1001 };
1002 }
1003
1004 {
1005 name = "browserify___browserify_3.46.1.tgz";
1006 path = fetchurl {
1007 name = "browserify___browserify_3.46.1.tgz";
1008 url = "https://registry.yarnpkg.com/browserify/-/browserify-3.46.1.tgz";
1009 sha1 = "2c2e4a7f2f408178e78c223b5b57b37c2185ad8e";
1010 };
1011 }
1012
1013 {
1014 name = "buffer_alloc_unsafe___buffer_alloc_unsafe_1.1.0.tgz";
1015 path = fetchurl {
1016 name = "buffer_alloc_unsafe___buffer_alloc_unsafe_1.1.0.tgz";
1017 url = "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz";
1018 sha1 = "bd7dc26ae2972d0eda253be061dba992349c19f0";
1019 };
1020 }
1021
1022 {
1023 name = "buffer_alloc___buffer_alloc_1.2.0.tgz";
1024 path = fetchurl {
1025 name = "buffer_alloc___buffer_alloc_1.2.0.tgz";
1026 url = "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz";
1027 sha1 = "890dd90d923a873e08e10e5fd51a57e5b7cce0ec";
1028 };
1029 }
1030
1031 {
1032 name = "buffer_fill___buffer_fill_1.0.0.tgz";
1033 path = fetchurl {
1034 name = "buffer_fill___buffer_fill_1.0.0.tgz";
1035 url = "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz";
1036 sha1 = "f8f78b76789888ef39f205cd637f68e702122b2c";
1037 };
1038 }
1039
1040 {
1041 name = "buffer___buffer_2.1.13.tgz";
1042 path = fetchurl {
1043 name = "buffer___buffer_2.1.13.tgz";
1044 url = "https://registry.yarnpkg.com/buffer/-/buffer-2.1.13.tgz";
1045 sha1 = "c88838ebf79f30b8b4a707788470bea8a62c2355";
1046 };
1047 }
1048
1049 {
1050 name = "buffers___buffers_0.1.1.tgz";
1051 path = fetchurl {
1052 name = "buffers___buffers_0.1.1.tgz";
1053 url = "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz";
1054 sha1 = "b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb";
1055 };
1056 }
1057
1058 {
1059 name = "bufferstreams___bufferstreams_0.0.2.tgz";
1060 path = fetchurl {
1061 name = "bufferstreams___bufferstreams_0.0.2.tgz";
1062 url = "https://registry.yarnpkg.com/bufferstreams/-/bufferstreams-0.0.2.tgz";
1063 sha1 = "7ce8dff968bbac00b9e90158a2c41456f740abdd";
1064 };
1065 }
1066
1067 {
1068 name = "builtins___builtins_0.0.7.tgz";
1069 path = fetchurl {
1070 name = "builtins___builtins_0.0.7.tgz";
1071 url = "https://registry.yarnpkg.com/builtins/-/builtins-0.0.7.tgz";
1072 sha1 = "355219cd6cf18dbe7c01cc7fd2dce765cfdc549a";
1073 };
1074 }
1075
1076 {
1077 name = "bytes___bytes_2.2.0.tgz";
1078 path = fetchurl {
1079 name = "bytes___bytes_2.2.0.tgz";
1080 url = "https://registry.yarnpkg.com/bytes/-/bytes-2.2.0.tgz";
1081 sha1 = "fd35464a403f6f9117c2de3609ecff9cae000588";
1082 };
1083 }
1084
1085 {
1086 name = "bytes___bytes_2.4.0.tgz";
1087 path = fetchurl {
1088 name = "bytes___bytes_2.4.0.tgz";
1089 url = "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz";
1090 sha1 = "7d97196f9d5baf7f6935e25985549edd2a6c2339";
1091 };
1092 }
1093
1094 {
1095 name = "bytes___bytes_3.1.0.tgz";
1096 path = fetchurl {
1097 name = "bytes___bytes_3.1.0.tgz";
1098 url = "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz";
1099 sha1 = "f6cf7933a360e0588fa9fde85651cdc7f805d1f6";
1100 };
1101 }
1102
1103 {
1104 name = "cache_base___cache_base_1.0.1.tgz";
1105 path = fetchurl {
1106 name = "cache_base___cache_base_1.0.1.tgz";
1107 url = "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz";
1108 sha1 = "0a7f46416831c8b662ee36fe4e7c59d76f666ab2";
1109 };
1110 }
1111
1112 {
1113 name = "callsite___callsite_1.0.0.tgz";
1114 path = fetchurl {
1115 name = "callsite___callsite_1.0.0.tgz";
1116 url = "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz";
1117 sha1 = "280398e5d664bd74038b6f0905153e6e8af1bc20";
1118 };
1119 }
1120
1121 {
1122 name = "camelcase_keys___camelcase_keys_2.1.0.tgz";
1123 path = fetchurl {
1124 name = "camelcase_keys___camelcase_keys_2.1.0.tgz";
1125 url = "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz";
1126 sha1 = "308beeaffdf28119051efa1d932213c91b8f92e7";
1127 };
1128 }
1129
1130 {
1131 name = "camelcase___camelcase_1.2.1.tgz";
1132 path = fetchurl {
1133 name = "camelcase___camelcase_1.2.1.tgz";
1134 url = "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz";
1135 sha1 = "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39";
1136 };
1137 }
1138
1139 {
1140 name = "camelcase___camelcase_2.1.1.tgz";
1141 path = fetchurl {
1142 name = "camelcase___camelcase_2.1.1.tgz";
1143 url = "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz";
1144 sha1 = "7c1d16d679a1bbe59ca02cacecfb011e201f5a1f";
1145 };
1146 }
1147
1148 {
1149 name = "camelcase___camelcase_3.0.0.tgz";
1150 path = fetchurl {
1151 name = "camelcase___camelcase_3.0.0.tgz";
1152 url = "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz";
1153 sha1 = "32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a";
1154 };
1155 }
1156
1157 {
1158 name = "cardinal___cardinal_0.4.4.tgz";
1159 path = fetchurl {
1160 name = "cardinal___cardinal_0.4.4.tgz";
1161 url = "https://registry.yarnpkg.com/cardinal/-/cardinal-0.4.4.tgz";
1162 sha1 = "ca5bb68a5b511b90fe93b9acea49bdee5c32bfe2";
1163 };
1164 }
1165
1166 {
1167 name = "caseless___caseless_0.12.0.tgz";
1168 path = fetchurl {
1169 name = "caseless___caseless_0.12.0.tgz";
1170 url = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz";
1171 sha1 = "1b681c21ff84033c826543090689420d187151dc";
1172 };
1173 }
1174
1175 {
1176 name = "caseless___caseless_0.8.0.tgz";
1177 path = fetchurl {
1178 name = "caseless___caseless_0.8.0.tgz";
1179 url = "https://registry.yarnpkg.com/caseless/-/caseless-0.8.0.tgz";
1180 sha1 = "5bca2881d41437f54b2407ebe34888c7b9ad4f7d";
1181 };
1182 }
1183
1184 {
1185 name = "center_align___center_align_0.1.3.tgz";
1186 path = fetchurl {
1187 name = "center_align___center_align_0.1.3.tgz";
1188 url = "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz";
1189 sha1 = "aa0d32629b6ee972200411cbd4461c907bc2b7ad";
1190 };
1191 }
1192
1193 {
1194 name = "chainsaw___chainsaw_0.1.0.tgz";
1195 path = fetchurl {
1196 name = "chainsaw___chainsaw_0.1.0.tgz";
1197 url = "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz";
1198 sha1 = "5eab50b28afe58074d0d58291388828b5e5fbc98";
1199 };
1200 }
1201
1202 {
1203 name = "chalk___chalk_3.0.0.tgz";
1204 path = fetchurl {
1205 name = "chalk___chalk_3.0.0.tgz";
1206 url = "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz";
1207 sha1 = "3f73c2bf526591f574cc492c51e2456349f844e4";
1208 };
1209 }
1210
1211 {
1212 name = "chalk___chalk_0.5.1.tgz";
1213 path = fetchurl {
1214 name = "chalk___chalk_0.5.1.tgz";
1215 url = "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz";
1216 sha1 = "663b3a648b68b55d04690d49167aa837858f2174";
1217 };
1218 }
1219
1220 {
1221 name = "chalk___chalk_1.1.3.tgz";
1222 path = fetchurl {
1223 name = "chalk___chalk_1.1.3.tgz";
1224 url = "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz";
1225 sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
1226 };
1227 }
1228
1229 {
1230 name = "chalk___chalk_0.4.0.tgz";
1231 path = fetchurl {
1232 name = "chalk___chalk_0.4.0.tgz";
1233 url = "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz";
1234 sha1 = "5199a3ddcd0c1efe23bc08c1b027b06176e0c64f";
1235 };
1236 }
1237
1238 {
1239 name = "character_parser___character_parser_2.2.0.tgz";
1240 path = fetchurl {
1241 name = "character_parser___character_parser_2.2.0.tgz";
1242 url = "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz";
1243 sha1 = "c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0";
1244 };
1245 }
1246
1247 {
1248 name = "chmodr___chmodr_0.1.2.tgz";
1249 path = fetchurl {
1250 name = "chmodr___chmodr_0.1.2.tgz";
1251 url = "https://registry.yarnpkg.com/chmodr/-/chmodr-0.1.2.tgz";
1252 sha1 = "0dd8041c915087575bec383b47827bb7576a4fd6";
1253 };
1254 }
1255
1256 {
1257 name = "chokidar___chokidar_1.7.0.tgz";
1258 path = fetchurl {
1259 name = "chokidar___chokidar_1.7.0.tgz";
1260 url = "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz";
1261 sha1 = "798e689778151c8076b4b360e5edd28cda2bb468";
1262 };
1263 }
1264
1265 {
1266 name = "chownr___chownr_1.1.4.tgz";
1267 path = fetchurl {
1268 name = "chownr___chownr_1.1.4.tgz";
1269 url = "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz";
1270 sha1 = "6fc9d7b42d32a583596337666e7d08084da2cc6b";
1271 };
1272 }
1273
1274 {
1275 name = "class_utils___class_utils_0.3.6.tgz";
1276 path = fetchurl {
1277 name = "class_utils___class_utils_0.3.6.tgz";
1278 url = "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz";
1279 sha1 = "f93369ae8b9a7ce02fd41faad0ca83033190c463";
1280 };
1281 }
1282
1283 {
1284 name = "clean_css___clean_css_2.2.23.tgz";
1285 path = fetchurl {
1286 name = "clean_css___clean_css_2.2.23.tgz";
1287 url = "https://registry.yarnpkg.com/clean-css/-/clean-css-2.2.23.tgz";
1288 sha1 = "0590b5478b516c4903edc2d89bd3fdbdd286328c";
1289 };
1290 }
1291
1292 {
1293 name = "clean_css___clean_css_4.2.3.tgz";
1294 path = fetchurl {
1295 name = "clean_css___clean_css_4.2.3.tgz";
1296 url = "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz";
1297 sha1 = "507b5de7d97b48ee53d84adb0160ff6216380f78";
1298 };
1299 }
1300
1301 {
1302 name = "cli_color___cli_color_0.2.3.tgz";
1303 path = fetchurl {
1304 name = "cli_color___cli_color_0.2.3.tgz";
1305 url = "https://registry.yarnpkg.com/cli-color/-/cli-color-0.2.3.tgz";
1306 sha1 = "0a25ceae5a6a1602be7f77d28563c36700274e88";
1307 };
1308 }
1309
1310 {
1311 name = "cli_color___cli_color_0.3.3.tgz";
1312 path = fetchurl {
1313 name = "cli_color___cli_color_0.3.3.tgz";
1314 url = "https://registry.yarnpkg.com/cli-color/-/cli-color-0.3.3.tgz";
1315 sha1 = "12d5bdd158ff8a0b0db401198913c03df069f6f5";
1316 };
1317 }
1318
1319 {
1320 name = "cliui___cliui_2.1.0.tgz";
1321 path = fetchurl {
1322 name = "cliui___cliui_2.1.0.tgz";
1323 url = "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz";
1324 sha1 = "4b475760ff80264c762c3a1719032e91c7fea0d1";
1325 };
1326 }
1327
1328 {
1329 name = "cliui___cliui_3.2.0.tgz";
1330 path = fetchurl {
1331 name = "cliui___cliui_3.2.0.tgz";
1332 url = "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz";
1333 sha1 = "120601537a916d29940f934da3b48d585a39213d";
1334 };
1335 }
1336
1337 {
1338 name = "clone_buffer___clone_buffer_1.0.0.tgz";
1339 path = fetchurl {
1340 name = "clone_buffer___clone_buffer_1.0.0.tgz";
1341 url = "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz";
1342 sha1 = "e3e25b207ac4e701af721e2cb5a16792cac3dc58";
1343 };
1344 }
1345
1346 {
1347 name = "clone_stats___clone_stats_0.0.1.tgz";
1348 path = fetchurl {
1349 name = "clone_stats___clone_stats_0.0.1.tgz";
1350 url = "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz";
1351 sha1 = "b88f94a82cf38b8791d58046ea4029ad88ca99d1";
1352 };
1353 }
1354
1355 {
1356 name = "clone_stats___clone_stats_1.0.0.tgz";
1357 path = fetchurl {
1358 name = "clone_stats___clone_stats_1.0.0.tgz";
1359 url = "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz";
1360 sha1 = "b3782dff8bb5474e18b9b6bf0fdfe782f8777680";
1361 };
1362 }
1363
1364 {
1365 name = "clone___clone_0.2.0.tgz";
1366 path = fetchurl {
1367 name = "clone___clone_0.2.0.tgz";
1368 url = "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz";
1369 sha1 = "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f";
1370 };
1371 }
1372
1373 {
1374 name = "clone___clone_1.0.4.tgz";
1375 path = fetchurl {
1376 name = "clone___clone_1.0.4.tgz";
1377 url = "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz";
1378 sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e";
1379 };
1380 }
1381
1382 {
1383 name = "clone___clone_2.1.2.tgz";
1384 path = fetchurl {
1385 name = "clone___clone_2.1.2.tgz";
1386 url = "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz";
1387 sha1 = "1b7f4b9f591f1e8f83670401600345a02887435f";
1388 };
1389 }
1390
1391 {
1392 name = "cloneable_readable___cloneable_readable_1.1.3.tgz";
1393 path = fetchurl {
1394 name = "cloneable_readable___cloneable_readable_1.1.3.tgz";
1395 url = "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz";
1396 sha1 = "120a00cb053bfb63a222e709f9683ea2e11d8cec";
1397 };
1398 }
1399
1400 {
1401 name = "code_point_at___code_point_at_1.1.0.tgz";
1402 path = fetchurl {
1403 name = "code_point_at___code_point_at_1.1.0.tgz";
1404 url = "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz";
1405 sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
1406 };
1407 }
1408
1409 {
1410 name = "coffee_script___coffee_script_1.12.7.tgz";
1411 path = fetchurl {
1412 name = "coffee_script___coffee_script_1.12.7.tgz";
1413 url = "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.7.tgz";
1414 sha1 = "c05dae0cb79591d05b3070a8433a98c9a89ccc53";
1415 };
1416 }
1417
1418 {
1419 name = "coffee_script___coffee_script_1.10.0.tgz";
1420 path = fetchurl {
1421 name = "coffee_script___coffee_script_1.10.0.tgz";
1422 url = "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.10.0.tgz";
1423 sha1 = "12938bcf9be1948fa006f92e0c4c9e81705108c0";
1424 };
1425 }
1426
1427 {
1428 name = "coffeescript___coffeescript_1.12.7.tgz";
1429 path = fetchurl {
1430 name = "coffeescript___coffeescript_1.12.7.tgz";
1431 url = "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.12.7.tgz";
1432 sha1 = "e57ee4c4867cf7f606bfc4a0f2d550c0981ddd27";
1433 };
1434 }
1435
1436 {
1437 name = "collection_visit___collection_visit_1.0.0.tgz";
1438 path = fetchurl {
1439 name = "collection_visit___collection_visit_1.0.0.tgz";
1440 url = "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz";
1441 sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0";
1442 };
1443 }
1444
1445 {
1446 name = "color_convert___color_convert_2.0.1.tgz";
1447 path = fetchurl {
1448 name = "color_convert___color_convert_2.0.1.tgz";
1449 url = "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz";
1450 sha1 = "72d3a68d598c9bdb3af2ad1e84f21d896abd4de3";
1451 };
1452 }
1453
1454 {
1455 name = "color_name___color_name_1.1.4.tgz";
1456 path = fetchurl {
1457 name = "color_name___color_name_1.1.4.tgz";
1458 url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz";
1459 sha1 = "c2a09a87acbde69543de6f63fa3995c826c536a2";
1460 };
1461 }
1462
1463 {
1464 name = "color_support___color_support_1.1.3.tgz";
1465 path = fetchurl {
1466 name = "color_support___color_support_1.1.3.tgz";
1467 url = "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz";
1468 sha1 = "93834379a1cc9a0c61f82f52f0d04322251bd5a2";
1469 };
1470 }
1471
1472 {
1473 name = "colors___colors_1.4.0.tgz";
1474 path = fetchurl {
1475 name = "colors___colors_1.4.0.tgz";
1476 url = "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz";
1477 sha1 = "c50491479d4c1bdaed2c9ced32cf7c7dc2360f78";
1478 };
1479 }
1480
1481 {
1482 name = "combine_source_map___combine_source_map_0.3.0.tgz";
1483 path = fetchurl {
1484 name = "combine_source_map___combine_source_map_0.3.0.tgz";
1485 url = "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.3.0.tgz";
1486 sha1 = "d9e74f593d9cd43807312cb5d846d451efaa9eb7";
1487 };
1488 }
1489
1490 {
1491 name = "combined_stream___combined_stream_1.0.8.tgz";
1492 path = fetchurl {
1493 name = "combined_stream___combined_stream_1.0.8.tgz";
1494 url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz";
1495 sha1 = "c3d45a8b34fd730631a110a8a2520682b31d5a7f";
1496 };
1497 }
1498
1499 {
1500 name = "combined_stream___combined_stream_0.0.7.tgz";
1501 path = fetchurl {
1502 name = "combined_stream___combined_stream_0.0.7.tgz";
1503 url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-0.0.7.tgz";
1504 sha1 = "0137e657baa5a7541c57ac37ac5fc07d73b4dc1f";
1505 };
1506 }
1507
1508 {
1509 name = "commander___commander_2.2.0.tgz";
1510 path = fetchurl {
1511 name = "commander___commander_2.2.0.tgz";
1512 url = "https://registry.yarnpkg.com/commander/-/commander-2.2.0.tgz";
1513 sha1 = "175ad4b9317f3ff615f201c1e57224f55a3e91df";
1514 };
1515 }
1516
1517 {
1518 name = "commander___commander_2.20.3.tgz";
1519 path = fetchurl {
1520 name = "commander___commander_2.20.3.tgz";
1521 url = "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz";
1522 sha1 = "fd485e84c03eb4881c20722ba48035e8531aeb33";
1523 };
1524 }
1525
1526 {
1527 name = "commondir___commondir_0.0.1.tgz";
1528 path = fetchurl {
1529 name = "commondir___commondir_0.0.1.tgz";
1530 url = "https://registry.yarnpkg.com/commondir/-/commondir-0.0.1.tgz";
1531 sha1 = "89f00fdcd51b519c578733fec563e6a6da7f5be2";
1532 };
1533 }
1534
1535 {
1536 name = "component_bind___component_bind_1.0.0.tgz";
1537 path = fetchurl {
1538 name = "component_bind___component_bind_1.0.0.tgz";
1539 url = "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz";
1540 sha1 = "00c608ab7dcd93897c0009651b1d3a8e1e73bbd1";
1541 };
1542 }
1543
1544 {
1545 name = "component_emitter___component_emitter_1.1.2.tgz";
1546 path = fetchurl {
1547 name = "component_emitter___component_emitter_1.1.2.tgz";
1548 url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz";
1549 sha1 = "296594f2753daa63996d2af08d15a95116c9aec3";
1550 };
1551 }
1552
1553 {
1554 name = "component_emitter___component_emitter_1.2.1.tgz";
1555 path = fetchurl {
1556 name = "component_emitter___component_emitter_1.2.1.tgz";
1557 url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz";
1558 sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6";
1559 };
1560 }
1561
1562 {
1563 name = "component_emitter___component_emitter_1.3.0.tgz";
1564 path = fetchurl {
1565 name = "component_emitter___component_emitter_1.3.0.tgz";
1566 url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz";
1567 sha1 = "16e4070fba8ae29b679f2215853ee181ab2eabc0";
1568 };
1569 }
1570
1571 {
1572 name = "component_inherit___component_inherit_0.0.3.tgz";
1573 path = fetchurl {
1574 name = "component_inherit___component_inherit_0.0.3.tgz";
1575 url = "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz";
1576 sha1 = "645fc4adf58b72b649d5cae65135619db26ff143";
1577 };
1578 }
1579
1580 {
1581 name = "concat_map___concat_map_0.0.1.tgz";
1582 path = fetchurl {
1583 name = "concat_map___concat_map_0.0.1.tgz";
1584 url = "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz";
1585 sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
1586 };
1587 }
1588
1589 {
1590 name = "concat_stream___concat_stream_1.4.11.tgz";
1591 path = fetchurl {
1592 name = "concat_stream___concat_stream_1.4.11.tgz";
1593 url = "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.4.11.tgz";
1594 sha1 = "1dc9f666f2621da9c618b1e7f8f3b2ff70b5f76f";
1595 };
1596 }
1597
1598 {
1599 name = "concat_with_sourcemaps___concat_with_sourcemaps_1.1.0.tgz";
1600 path = fetchurl {
1601 name = "concat_with_sourcemaps___concat_with_sourcemaps_1.1.0.tgz";
1602 url = "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz";
1603 sha1 = "d4ea93f05ae25790951b99e7b3b09e3908a4082e";
1604 };
1605 }
1606
1607 {
1608 name = "configstore___configstore_0.3.2.tgz";
1609 path = fetchurl {
1610 name = "configstore___configstore_0.3.2.tgz";
1611 url = "https://registry.yarnpkg.com/configstore/-/configstore-0.3.2.tgz";
1612 sha1 = "25e4c16c3768abf75c5a65bc61761f495055b459";
1613 };
1614 }
1615
1616 {
1617 name = "configstore___configstore_0.2.3.tgz";
1618 path = fetchurl {
1619 name = "configstore___configstore_0.2.3.tgz";
1620 url = "https://registry.yarnpkg.com/configstore/-/configstore-0.2.3.tgz";
1621 sha1 = "b1bdc4ad823a25423dc15d220fcc1ae1d7efab02";
1622 };
1623 }
1624
1625 {
1626 name = "connect___connect_3.7.0.tgz";
1627 path = fetchurl {
1628 name = "connect___connect_3.7.0.tgz";
1629 url = "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz";
1630 sha1 = "5d49348910caa5e07a01800b030d0c35f20484f8";
1631 };
1632 }
1633
1634 {
1635 name = "console_browserify___console_browserify_1.0.3.tgz";
1636 path = fetchurl {
1637 name = "console_browserify___console_browserify_1.0.3.tgz";
1638 url = "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.0.3.tgz";
1639 sha1 = "d3898d2c3a93102f364197f8874b4f92b5286a8e";
1640 };
1641 }
1642
1643 {
1644 name = "console_control_strings___console_control_strings_1.1.0.tgz";
1645 path = fetchurl {
1646 name = "console_control_strings___console_control_strings_1.1.0.tgz";
1647 url = "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz";
1648 sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
1649 };
1650 }
1651
1652 {
1653 name = "constantinople___constantinople_3.1.2.tgz";
1654 path = fetchurl {
1655 name = "constantinople___constantinople_3.1.2.tgz";
1656 url = "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz";
1657 sha1 = "d45ed724f57d3d10500017a7d3a889c1381ae647";
1658 };
1659 }
1660
1661 {
1662 name = "constants_browserify___constants_browserify_0.0.1.tgz";
1663 path = fetchurl {
1664 name = "constants_browserify___constants_browserify_0.0.1.tgz";
1665 url = "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-0.0.1.tgz";
1666 sha1 = "92577db527ba6c4cf0a4568d84bc031f441e21f2";
1667 };
1668 }
1669
1670 {
1671 name = "content_type___content_type_1.0.4.tgz";
1672 path = fetchurl {
1673 name = "content_type___content_type_1.0.4.tgz";
1674 url = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
1675 sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
1676 };
1677 }
1678
1679 {
1680 name = "convert_source_map___convert_source_map_0.4.1.tgz";
1681 path = fetchurl {
1682 name = "convert_source_map___convert_source_map_0.4.1.tgz";
1683 url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.4.1.tgz";
1684 sha1 = "f919a0099fe31f80fc5a1d0eb303161b394070c7";
1685 };
1686 }
1687
1688 {
1689 name = "convert_source_map___convert_source_map_1.7.0.tgz";
1690 path = fetchurl {
1691 name = "convert_source_map___convert_source_map_1.7.0.tgz";
1692 url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz";
1693 sha1 = "17a2cb882d7f77d3490585e2ce6c524424a3a442";
1694 };
1695 }
1696
1697 {
1698 name = "convert_source_map___convert_source_map_0.3.5.tgz";
1699 path = fetchurl {
1700 name = "convert_source_map___convert_source_map_0.3.5.tgz";
1701 url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz";
1702 sha1 = "f1d802950af7dd2631a1febe0596550c86ab3190";
1703 };
1704 }
1705
1706 {
1707 name = "convert_source_map___convert_source_map_1.1.3.tgz";
1708 path = fetchurl {
1709 name = "convert_source_map___convert_source_map_1.1.3.tgz";
1710 url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz";
1711 sha1 = "4829c877e9fe49b3161f3bf3673888e204699860";
1712 };
1713 }
1714
1715 {
1716 name = "cookie_jar___cookie_jar_0.3.0.tgz";
1717 path = fetchurl {
1718 name = "cookie_jar___cookie_jar_0.3.0.tgz";
1719 url = "https://registry.yarnpkg.com/cookie-jar/-/cookie-jar-0.3.0.tgz";
1720 sha1 = "bc9a27d4e2b97e186cd57c9e2063cb99fa68cccc";
1721 };
1722 }
1723
1724 {
1725 name = "cookie___cookie_0.3.1.tgz";
1726 path = fetchurl {
1727 name = "cookie___cookie_0.3.1.tgz";
1728 url = "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz";
1729 sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
1730 };
1731 }
1732
1733 {
1734 name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
1735 path = fetchurl {
1736 name = "copy_descriptor___copy_descriptor_0.1.1.tgz";
1737 url = "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz";
1738 sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d";
1739 };
1740 }
1741
1742 {
1743 name = "core_js___core_js_2.6.11.tgz";
1744 path = fetchurl {
1745 name = "core_js___core_js_2.6.11.tgz";
1746 url = "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz";
1747 sha1 = "38831469f9922bded8ee21c9dc46985e0399308c";
1748 };
1749 }
1750
1751 {
1752 name = "core_util_is___core_util_is_1.0.2.tgz";
1753 path = fetchurl {
1754 name = "core_util_is___core_util_is_1.0.2.tgz";
1755 url = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz";
1756 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
1757 };
1758 }
1759
1760 {
1761 name = "cross_spawn___cross_spawn_3.0.1.tgz";
1762 path = fetchurl {
1763 name = "cross_spawn___cross_spawn_3.0.1.tgz";
1764 url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz";
1765 sha1 = "1256037ecb9f0c5f79e3d6ef135e30770184b982";
1766 };
1767 }
1768
1769 {
1770 name = "cryptiles___cryptiles_0.2.2.tgz";
1771 path = fetchurl {
1772 name = "cryptiles___cryptiles_0.2.2.tgz";
1773 url = "https://registry.yarnpkg.com/cryptiles/-/cryptiles-0.2.2.tgz";
1774 sha1 = "ed91ff1f17ad13d3748288594f8a48a0d26f325c";
1775 };
1776 }
1777
1778 {
1779 name = "crypto_browserify___crypto_browserify_1.0.9.tgz";
1780 path = fetchurl {
1781 name = "crypto_browserify___crypto_browserify_1.0.9.tgz";
1782 url = "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-1.0.9.tgz";
1783 sha1 = "cc5449685dfb85eb11c9828acc7cb87ab5bbfcc0";
1784 };
1785 }
1786
1787 {
1788 name = "ctype___ctype_0.5.3.tgz";
1789 path = fetchurl {
1790 name = "ctype___ctype_0.5.3.tgz";
1791 url = "https://registry.yarnpkg.com/ctype/-/ctype-0.5.3.tgz";
1792 sha1 = "82c18c2461f74114ef16c135224ad0b9144ca12f";
1793 };
1794 }
1795
1796 {
1797 name = "currently_unhandled___currently_unhandled_0.4.1.tgz";
1798 path = fetchurl {
1799 name = "currently_unhandled___currently_unhandled_0.4.1.tgz";
1800 url = "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz";
1801 sha1 = "988df33feab191ef799a61369dd76c17adf957ea";
1802 };
1803 }
1804
1805 {
1806 name = "custom_event___custom_event_1.0.1.tgz";
1807 path = fetchurl {
1808 name = "custom_event___custom_event_1.0.1.tgz";
1809 url = "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz";
1810 sha1 = "5d02a46850adf1b4a317946a3928fccb5bfd0425";
1811 };
1812 }
1813
1814 {
1815 name = "d___d_1.0.1.tgz";
1816 path = fetchurl {
1817 name = "d___d_1.0.1.tgz";
1818 url = "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz";
1819 sha1 = "8698095372d58dbee346ffd0c7093f99f8f9eb5a";
1820 };
1821 }
1822
1823 {
1824 name = "d___d_0.1.1.tgz";
1825 path = fetchurl {
1826 name = "d___d_0.1.1.tgz";
1827 url = "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz";
1828 sha1 = "da184c535d18d8ee7ba2aa229b914009fae11309";
1829 };
1830 }
1831
1832 {
1833 name = "dashdash___dashdash_1.14.1.tgz";
1834 path = fetchurl {
1835 name = "dashdash___dashdash_1.14.1.tgz";
1836 url = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz";
1837 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
1838 };
1839 }
1840
1841 {
1842 name = "dateformat___dateformat_1.0.12.tgz";
1843 path = fetchurl {
1844 name = "dateformat___dateformat_1.0.12.tgz";
1845 url = "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz";
1846 sha1 = "9f124b67594c937ff706932e4a642cca8dbbfee9";
1847 };
1848 }
1849
1850 {
1851 name = "dateformat___dateformat_2.2.0.tgz";
1852 path = fetchurl {
1853 name = "dateformat___dateformat_2.2.0.tgz";
1854 url = "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz";
1855 sha1 = "4065e2013cf9fb916ddfd82efb506ad4c6769062";
1856 };
1857 }
1858
1859 {
1860 name = "deap___deap_1.0.1.tgz";
1861 path = fetchurl {
1862 name = "deap___deap_1.0.1.tgz";
1863 url = "https://registry.yarnpkg.com/deap/-/deap-1.0.1.tgz";
1864 sha1 = "0646e9e1a095ffe8a9e404d68d1f76dcf57e66fb";
1865 };
1866 }
1867
1868 {
1869 name = "debug___debug_2.2.0.tgz";
1870 path = fetchurl {
1871 name = "debug___debug_2.2.0.tgz";
1872 url = "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz";
1873 sha1 = "f87057e995b1a1f6ae6a4960664137bc56f039da";
1874 };
1875 }
1876
1877 {
1878 name = "debug___debug_2.3.3.tgz";
1879 path = fetchurl {
1880 name = "debug___debug_2.3.3.tgz";
1881 url = "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz";
1882 sha1 = "40c453e67e6e13c901ddec317af8986cda9eff8c";
1883 };
1884 }
1885
1886 {
1887 name = "debug___debug_2.6.9.tgz";
1888 path = fetchurl {
1889 name = "debug___debug_2.6.9.tgz";
1890 url = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
1891 sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
1892 };
1893 }
1894
1895 {
1896 name = "debug___debug_3.2.6.tgz";
1897 path = fetchurl {
1898 name = "debug___debug_3.2.6.tgz";
1899 url = "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz";
1900 sha1 = "e83d17de16d8a7efb7717edbe5fb10135eee629b";
1901 };
1902 }
1903
1904 {
1905 name = "decamelize___decamelize_1.2.0.tgz";
1906 path = fetchurl {
1907 name = "decamelize___decamelize_1.2.0.tgz";
1908 url = "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz";
1909 sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
1910 };
1911 }
1912
1913 {
1914 name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
1915 path = fetchurl {
1916 name = "decode_uri_component___decode_uri_component_0.2.0.tgz";
1917 url = "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
1918 sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
1919 };
1920 }
1921
1922 {
1923 name = "decompress_zip___decompress_zip_0.0.8.tgz";
1924 path = fetchurl {
1925 name = "decompress_zip___decompress_zip_0.0.8.tgz";
1926 url = "https://registry.yarnpkg.com/decompress-zip/-/decompress-zip-0.0.8.tgz";
1927 sha1 = "4a265b22c7b209d7b24fa66f2b2dfbced59044f3";
1928 };
1929 }
1930
1931 {
1932 name = "deep_equal___deep_equal_0.1.2.tgz";
1933 path = fetchurl {
1934 name = "deep_equal___deep_equal_0.1.2.tgz";
1935 url = "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.1.2.tgz";
1936 sha1 = "b246c2b80a570a47c11be1d9bd1070ec878b87ce";
1937 };
1938 }
1939
1940 {
1941 name = "deep_extend___deep_extend_0.6.0.tgz";
1942 path = fetchurl {
1943 name = "deep_extend___deep_extend_0.6.0.tgz";
1944 url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz";
1945 sha1 = "c4fa7c95404a17a9c3e8ca7e1537312b736330ac";
1946 };
1947 }
1948
1949 {
1950 name = "deep_extend___deep_extend_0.2.11.tgz";
1951 path = fetchurl {
1952 name = "deep_extend___deep_extend_0.2.11.tgz";
1953 url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.2.11.tgz";
1954 sha1 = "7a16ba69729132340506170494bc83f7076fe08f";
1955 };
1956 }
1957
1958 {
1959 name = "deep_is___deep_is_0.1.3.tgz";
1960 path = fetchurl {
1961 name = "deep_is___deep_is_0.1.3.tgz";
1962 url = "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz";
1963 sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
1964 };
1965 }
1966
1967 {
1968 name = "defaults___defaults_1.0.3.tgz";
1969 path = fetchurl {
1970 name = "defaults___defaults_1.0.3.tgz";
1971 url = "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz";
1972 sha1 = "c656051e9817d9ff08ed881477f3fe4019f3ef7d";
1973 };
1974 }
1975
1976 {
1977 name = "define_property___define_property_0.2.5.tgz";
1978 path = fetchurl {
1979 name = "define_property___define_property_0.2.5.tgz";
1980 url = "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz";
1981 sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116";
1982 };
1983 }
1984
1985 {
1986 name = "define_property___define_property_1.0.0.tgz";
1987 path = fetchurl {
1988 name = "define_property___define_property_1.0.0.tgz";
1989 url = "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz";
1990 sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6";
1991 };
1992 }
1993
1994 {
1995 name = "define_property___define_property_2.0.2.tgz";
1996 path = fetchurl {
1997 name = "define_property___define_property_2.0.2.tgz";
1998 url = "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz";
1999 sha1 = "d459689e8d654ba77e02a817f8710d702cb16e9d";
2000 };
2001 }
2002
2003 {
2004 name = "defined___defined_0.0.0.tgz";
2005 path = fetchurl {
2006 name = "defined___defined_0.0.0.tgz";
2007 url = "https://registry.yarnpkg.com/defined/-/defined-0.0.0.tgz";
2008 sha1 = "f35eea7d705e933baf13b2f03b3f83d921403b3e";
2009 };
2010 }
2011
2012 {
2013 name = "delayed_stream___delayed_stream_0.0.5.tgz";
2014 path = fetchurl {
2015 name = "delayed_stream___delayed_stream_0.0.5.tgz";
2016 url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz";
2017 sha1 = "d4b1f43a93e8296dfe02694f4680bc37a313c73f";
2018 };
2019 }
2020
2021 {
2022 name = "delayed_stream___delayed_stream_1.0.0.tgz";
2023 path = fetchurl {
2024 name = "delayed_stream___delayed_stream_1.0.0.tgz";
2025 url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz";
2026 sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
2027 };
2028 }
2029
2030 {
2031 name = "delegates___delegates_1.0.0.tgz";
2032 path = fetchurl {
2033 name = "delegates___delegates_1.0.0.tgz";
2034 url = "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz";
2035 sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
2036 };
2037 }
2038
2039 {
2040 name = "depd___depd_1.1.2.tgz";
2041 path = fetchurl {
2042 name = "depd___depd_1.1.2.tgz";
2043 url = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz";
2044 sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
2045 };
2046 }
2047
2048 {
2049 name = "deprecated___deprecated_0.0.1.tgz";
2050 path = fetchurl {
2051 name = "deprecated___deprecated_0.0.1.tgz";
2052 url = "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz";
2053 sha1 = "f9c9af5464afa1e7a971458a8bdef2aa94d5bb19";
2054 };
2055 }
2056
2057 {
2058 name = "deps_sort___deps_sort_0.1.2.tgz";
2059 path = fetchurl {
2060 name = "deps_sort___deps_sort_0.1.2.tgz";
2061 url = "https://registry.yarnpkg.com/deps-sort/-/deps-sort-0.1.2.tgz";
2062 sha1 = "daa2fb614a17c9637d801e2f55339ae370f3611a";
2063 };
2064 }
2065
2066 {
2067 name = "derequire___derequire_0.8.0.tgz";
2068 path = fetchurl {
2069 name = "derequire___derequire_0.8.0.tgz";
2070 url = "https://registry.yarnpkg.com/derequire/-/derequire-0.8.0.tgz";
2071 sha1 = "c1f7f1da2cede44adede047378f03f444e9c4c0d";
2072 };
2073 }
2074
2075 {
2076 name = "destroy___destroy_1.0.4.tgz";
2077 path = fetchurl {
2078 name = "destroy___destroy_1.0.4.tgz";
2079 url = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz";
2080 sha1 = "978857442c44749e4206613e37946205826abd80";
2081 };
2082 }
2083
2084 {
2085 name = "detect_file___detect_file_1.0.0.tgz";
2086 path = fetchurl {
2087 name = "detect_file___detect_file_1.0.0.tgz";
2088 url = "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz";
2089 sha1 = "f0d66d03672a825cb1b73bdb3fe62310c8e552b7";
2090 };
2091 }
2092
2093 {
2094 name = "detect_libc___detect_libc_1.0.3.tgz";
2095 path = fetchurl {
2096 name = "detect_libc___detect_libc_1.0.3.tgz";
2097 url = "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz";
2098 sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
2099 };
2100 }
2101
2102 {
2103 name = "detective___detective_3.1.0.tgz";
2104 path = fetchurl {
2105 name = "detective___detective_3.1.0.tgz";
2106 url = "https://registry.yarnpkg.com/detective/-/detective-3.1.0.tgz";
2107 sha1 = "77782444ab752b88ca1be2e9d0a0395f1da25eed";
2108 };
2109 }
2110
2111 {
2112 name = "di___di_0.0.1.tgz";
2113 path = fetchurl {
2114 name = "di___di_0.0.1.tgz";
2115 url = "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz";
2116 sha1 = "806649326ceaa7caa3306d75d985ea2748ba913c";
2117 };
2118 }
2119
2120 {
2121 name = "doctypes___doctypes_1.1.0.tgz";
2122 path = fetchurl {
2123 name = "doctypes___doctypes_1.1.0.tgz";
2124 url = "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz";
2125 sha1 = "ea80b106a87538774e8a3a4a5afe293de489e0a9";
2126 };
2127 }
2128
2129 {
2130 name = "dom_serialize___dom_serialize_2.2.1.tgz";
2131 path = fetchurl {
2132 name = "dom_serialize___dom_serialize_2.2.1.tgz";
2133 url = "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz";
2134 sha1 = "562ae8999f44be5ea3076f5419dcd59eb43ac95b";
2135 };
2136 }
2137
2138 {
2139 name = "domain_browser___domain_browser_1.1.7.tgz";
2140 path = fetchurl {
2141 name = "domain_browser___domain_browser_1.1.7.tgz";
2142 url = "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz";
2143 sha1 = "867aa4b093faa05f1de08c06f4d7b21fdf8698bc";
2144 };
2145 }
2146
2147 {
2148 name = "duplexer2___duplexer2_0.0.2.tgz";
2149 path = fetchurl {
2150 name = "duplexer2___duplexer2_0.0.2.tgz";
2151 url = "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz";
2152 sha1 = "c614dcf67e2fb14995a91711e5a617e8a60a31db";
2153 };
2154 }
2155
2156 {
2157 name = "duplexer___duplexer_0.1.1.tgz";
2158 path = fetchurl {
2159 name = "duplexer___duplexer_0.1.1.tgz";
2160 url = "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz";
2161 sha1 = "ace6ff808c1ce66b57d1ebf97977acb02334cfc1";
2162 };
2163 }
2164
2165 {
2166 name = "duplexify___duplexify_3.7.1.tgz";
2167 path = fetchurl {
2168 name = "duplexify___duplexify_3.7.1.tgz";
2169 url = "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz";
2170 sha1 = "2a4df5317f6ccfd91f86d6fd25d8d8a103b88309";
2171 };
2172 }
2173
2174 {
2175 name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
2176 path = fetchurl {
2177 name = "ecc_jsbn___ecc_jsbn_0.1.2.tgz";
2178 url = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
2179 sha1 = "3a83a904e54353287874c564b7549386849a98c9";
2180 };
2181 }
2182
2183 {
2184 name = "ee_first___ee_first_1.1.1.tgz";
2185 path = fetchurl {
2186 name = "ee_first___ee_first_1.1.1.tgz";
2187 url = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz";
2188 sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
2189 };
2190 }
2191
2192 {
2193 name = "encodeurl___encodeurl_1.0.2.tgz";
2194 path = fetchurl {
2195 name = "encodeurl___encodeurl_1.0.2.tgz";
2196 url = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
2197 sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
2198 };
2199 }
2200
2201 {
2202 name = "end_of_stream___end_of_stream_1.4.4.tgz";
2203 path = fetchurl {
2204 name = "end_of_stream___end_of_stream_1.4.4.tgz";
2205 url = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz";
2206 sha1 = "5ae64a5f45057baf3626ec14da0ca5e4b2431eb0";
2207 };
2208 }
2209
2210 {
2211 name = "end_of_stream___end_of_stream_0.1.5.tgz";
2212 path = fetchurl {
2213 name = "end_of_stream___end_of_stream_0.1.5.tgz";
2214 url = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz";
2215 sha1 = "8e177206c3c80837d85632e8b9359dfe8b2f6eaf";
2216 };
2217 }
2218
2219 {
2220 name = "engine.io_client___engine.io_client_1.8.5.tgz";
2221 path = fetchurl {
2222 name = "engine.io_client___engine.io_client_1.8.5.tgz";
2223 url = "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.5.tgz";
2224 sha1 = "fe7fb60cb0dcf2fa2859489329cb5968dedeb11f";
2225 };
2226 }
2227
2228 {
2229 name = "engine.io_parser___engine.io_parser_1.3.2.tgz";
2230 path = fetchurl {
2231 name = "engine.io_parser___engine.io_parser_1.3.2.tgz";
2232 url = "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz";
2233 sha1 = "937b079f0007d0893ec56d46cb220b8cb435220a";
2234 };
2235 }
2236
2237 {
2238 name = "engine.io___engine.io_1.8.5.tgz";
2239 path = fetchurl {
2240 name = "engine.io___engine.io_1.8.5.tgz";
2241 url = "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.5.tgz";
2242 sha1 = "4ebe5e75c6dc123dee4afdce6e5fdced21eb93f6";
2243 };
2244 }
2245
2246 {
2247 name = "ent___ent_2.2.0.tgz";
2248 path = fetchurl {
2249 name = "ent___ent_2.2.0.tgz";
2250 url = "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz";
2251 sha1 = "e964219325a21d05f44466a2f686ed6ce5f5dd1d";
2252 };
2253 }
2254
2255 {
2256 name = "error_ex___error_ex_1.3.2.tgz";
2257 path = fetchurl {
2258 name = "error_ex___error_ex_1.3.2.tgz";
2259 url = "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz";
2260 sha1 = "b4ac40648107fdcdcfae242f428bea8a14d4f1bf";
2261 };
2262 }
2263
2264 {
2265 name = "es5_ext___es5_ext_0.10.53.tgz";
2266 path = fetchurl {
2267 name = "es5_ext___es5_ext_0.10.53.tgz";
2268 url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz";
2269 sha1 = "93c5a3acfdbef275220ad72644ad02ee18368de1";
2270 };
2271 }
2272
2273 {
2274 name = "es5_ext___es5_ext_0.9.2.tgz";
2275 path = fetchurl {
2276 name = "es5_ext___es5_ext_0.9.2.tgz";
2277 url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.9.2.tgz";
2278 sha1 = "d2e309d1f223b0718648835acf5b8823a8061f8a";
2279 };
2280 }
2281
2282 {
2283 name = "es6_iterator___es6_iterator_0.1.3.tgz";
2284 path = fetchurl {
2285 name = "es6_iterator___es6_iterator_0.1.3.tgz";
2286 url = "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-0.1.3.tgz";
2287 sha1 = "d6f58b8c4fc413c249b4baa19768f8e4d7c8944e";
2288 };
2289 }
2290
2291 {
2292 name = "es6_iterator___es6_iterator_2.0.3.tgz";
2293 path = fetchurl {
2294 name = "es6_iterator___es6_iterator_2.0.3.tgz";
2295 url = "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz";
2296 sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7";
2297 };
2298 }
2299
2300 {
2301 name = "es6_symbol___es6_symbol_3.1.3.tgz";
2302 path = fetchurl {
2303 name = "es6_symbol___es6_symbol_3.1.3.tgz";
2304 url = "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz";
2305 sha1 = "bad5d3c1bcdac28269f4cb331e431c78ac705d18";
2306 };
2307 }
2308
2309 {
2310 name = "es6_symbol___es6_symbol_2.0.1.tgz";
2311 path = fetchurl {
2312 name = "es6_symbol___es6_symbol_2.0.1.tgz";
2313 url = "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-2.0.1.tgz";
2314 sha1 = "761b5c67cfd4f1d18afb234f691d678682cb3bf3";
2315 };
2316 }
2317
2318 {
2319 name = "es6_weak_map___es6_weak_map_0.1.4.tgz";
2320 path = fetchurl {
2321 name = "es6_weak_map___es6_weak_map_0.1.4.tgz";
2322 url = "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-0.1.4.tgz";
2323 sha1 = "706cef9e99aa236ba7766c239c8b9e286ea7d228";
2324 };
2325 }
2326
2327 {
2328 name = "escape_html___escape_html_1.0.3.tgz";
2329 path = fetchurl {
2330 name = "escape_html___escape_html_1.0.3.tgz";
2331 url = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz";
2332 sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
2333 };
2334 }
2335
2336 {
2337 name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
2338 path = fetchurl {
2339 name = "escape_string_regexp___escape_string_regexp_1.0.5.tgz";
2340 url = "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
2341 sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
2342 };
2343 }
2344
2345 {
2346 name = "escodegen___escodegen_1.8.1.tgz";
2347 path = fetchurl {
2348 name = "escodegen___escodegen_1.8.1.tgz";
2349 url = "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz";
2350 sha1 = "5a5b53af4693110bebb0867aa3430dd3b70a1018";
2351 };
2352 }
2353
2354 {
2355 name = "escodegen___escodegen_1.1.0.tgz";
2356 path = fetchurl {
2357 name = "escodegen___escodegen_1.1.0.tgz";
2358 url = "https://registry.yarnpkg.com/escodegen/-/escodegen-1.1.0.tgz";
2359 sha1 = "c663923f6e20aad48d0c0fa49f31c6d4f49360cf";
2360 };
2361 }
2362
2363 {
2364 name = "escope___escope_0.0.16.tgz";
2365 path = fetchurl {
2366 name = "escope___escope_0.0.16.tgz";
2367 url = "https://registry.yarnpkg.com/escope/-/escope-0.0.16.tgz";
2368 sha1 = "418c7a0afca721dafe659193fd986283e746538f";
2369 };
2370 }
2371
2372 {
2373 name = "esprima_fb___esprima_fb_3001.0001.0000_dev_harmony_fb.tgz";
2374 path = fetchurl {
2375 name = "esprima_fb___esprima_fb_3001.0001.0000_dev_harmony_fb.tgz";
2376 url = "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz";
2377 sha1 = "b77d37abcd38ea0b77426bb8bc2922ce6b426411";
2378 };
2379 }
2380
2381 {
2382 name = "esprima___esprima_2.7.3.tgz";
2383 path = fetchurl {
2384 name = "esprima___esprima_2.7.3.tgz";
2385 url = "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz";
2386 sha1 = "96e3b70d5779f6ad49cd032673d1c312767ba581";
2387 };
2388 }
2389
2390 {
2391 name = "esprima___esprima_4.0.1.tgz";
2392 path = fetchurl {
2393 name = "esprima___esprima_4.0.1.tgz";
2394 url = "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz";
2395 sha1 = "13b04cdb3e6c5d19df91ab6987a8695619b0aa71";
2396 };
2397 }
2398
2399 {
2400 name = "esprima___esprima_1.0.4.tgz";
2401 path = fetchurl {
2402 name = "esprima___esprima_1.0.4.tgz";
2403 url = "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz";
2404 sha1 = "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad";
2405 };
2406 }
2407
2408 {
2409 name = "esrefactor___esrefactor_0.1.0.tgz";
2410 path = fetchurl {
2411 name = "esrefactor___esrefactor_0.1.0.tgz";
2412 url = "https://registry.yarnpkg.com/esrefactor/-/esrefactor-0.1.0.tgz";
2413 sha1 = "d142795a282339ab81e936b5b7a21b11bf197b13";
2414 };
2415 }
2416
2417 {
2418 name = "estraverse___estraverse_5.0.0.tgz";
2419 path = fetchurl {
2420 name = "estraverse___estraverse_5.0.0.tgz";
2421 url = "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz";
2422 sha1 = "ac81750b482c11cca26e4b07e83ed8f75fbcdc22";
2423 };
2424 }
2425
2426 {
2427 name = "estraverse___estraverse_1.9.3.tgz";
2428 path = fetchurl {
2429 name = "estraverse___estraverse_1.9.3.tgz";
2430 url = "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz";
2431 sha1 = "af67f2dc922582415950926091a4005d29c9bb44";
2432 };
2433 }
2434
2435 {
2436 name = "estraverse___estraverse_0.0.4.tgz";
2437 path = fetchurl {
2438 name = "estraverse___estraverse_0.0.4.tgz";
2439 url = "https://registry.yarnpkg.com/estraverse/-/estraverse-0.0.4.tgz";
2440 sha1 = "01a0932dfee574684a598af5a67c3bf9b6428db2";
2441 };
2442 }
2443
2444 {
2445 name = "estraverse___estraverse_1.5.1.tgz";
2446 path = fetchurl {
2447 name = "estraverse___estraverse_1.5.1.tgz";
2448 url = "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz";
2449 sha1 = "867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71";
2450 };
2451 }
2452
2453 {
2454 name = "esutils___esutils_2.0.3.tgz";
2455 path = fetchurl {
2456 name = "esutils___esutils_2.0.3.tgz";
2457 url = "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz";
2458 sha1 = "74d2eb4de0b8da1293711910d50775b9b710ef64";
2459 };
2460 }
2461
2462 {
2463 name = "esutils___esutils_1.0.0.tgz";
2464 path = fetchurl {
2465 name = "esutils___esutils_1.0.0.tgz";
2466 url = "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz";
2467 sha1 = "8151d358e20c8acc7fb745e7472c0025fe496570";
2468 };
2469 }
2470
2471 {
2472 name = "etag___etag_1.7.0.tgz";
2473 path = fetchurl {
2474 name = "etag___etag_1.7.0.tgz";
2475 url = "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz";
2476 sha1 = "03d30b5f67dd6e632d2945d30d6652731a34d5d8";
2477 };
2478 }
2479
2480 {
2481 name = "event_emitter___event_emitter_0.2.2.tgz";
2482 path = fetchurl {
2483 name = "event_emitter___event_emitter_0.2.2.tgz";
2484 url = "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.2.2.tgz";
2485 sha1 = "c81e3724eb55407c5a0d5ee3299411f700f54291";
2486 };
2487 }
2488
2489 {
2490 name = "event_emitter___event_emitter_0.3.5.tgz";
2491 path = fetchurl {
2492 name = "event_emitter___event_emitter_0.3.5.tgz";
2493 url = "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz";
2494 sha1 = "df8c69eef1647923c7157b9ce83840610b02cc39";
2495 };
2496 }
2497
2498 {
2499 name = "event_stream___event_stream_4.0.1.tgz";
2500 path = fetchurl {
2501 name = "event_stream___event_stream_4.0.1.tgz";
2502 url = "https://registry.yarnpkg.com/event-stream/-/event-stream-4.0.1.tgz";
2503 sha1 = "4092808ec995d0dd75ea4580c1df6a74db2cde65";
2504 };
2505 }
2506
2507 {
2508 name = "event_stream___event_stream_3.3.2.tgz";
2509 path = fetchurl {
2510 name = "event_stream___event_stream_3.3.2.tgz";
2511 url = "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.2.tgz";
2512 sha1 = "3cc310feb1f28d2f62b2a085d736a9ef566378b8";
2513 };
2514 }
2515
2516 {
2517 name = "event_stream___event_stream_3.3.5.tgz";
2518 path = fetchurl {
2519 name = "event_stream___event_stream_3.3.5.tgz";
2520 url = "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.5.tgz";
2521 sha1 = "e5dd8989543630d94c6cf4d657120341fa31636b";
2522 };
2523 }
2524
2525 {
2526 name = "eventemitter3___eventemitter3_4.0.0.tgz";
2527 path = fetchurl {
2528 name = "eventemitter3___eventemitter3_4.0.0.tgz";
2529 url = "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz";
2530 sha1 = "d65176163887ee59f386d64c82610b696a4a74eb";
2531 };
2532 }
2533
2534 {
2535 name = "events___events_1.0.2.tgz";
2536 path = fetchurl {
2537 name = "events___events_1.0.2.tgz";
2538 url = "https://registry.yarnpkg.com/events/-/events-1.0.2.tgz";
2539 sha1 = "75849dcfe93d10fb057c30055afdbd51d06a8e24";
2540 };
2541 }
2542
2543 {
2544 name = "expand_braces___expand_braces_0.1.2.tgz";
2545 path = fetchurl {
2546 name = "expand_braces___expand_braces_0.1.2.tgz";
2547 url = "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz";
2548 sha1 = "488b1d1d2451cb3d3a6b192cfc030f44c5855fea";
2549 };
2550 }
2551
2552 {
2553 name = "expand_brackets___expand_brackets_0.1.5.tgz";
2554 path = fetchurl {
2555 name = "expand_brackets___expand_brackets_0.1.5.tgz";
2556 url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz";
2557 sha1 = "df07284e342a807cd733ac5af72411e581d1177b";
2558 };
2559 }
2560
2561 {
2562 name = "expand_brackets___expand_brackets_2.1.4.tgz";
2563 path = fetchurl {
2564 name = "expand_brackets___expand_brackets_2.1.4.tgz";
2565 url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz";
2566 sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622";
2567 };
2568 }
2569
2570 {
2571 name = "expand_range___expand_range_0.1.1.tgz";
2572 path = fetchurl {
2573 name = "expand_range___expand_range_0.1.1.tgz";
2574 url = "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz";
2575 sha1 = "4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044";
2576 };
2577 }
2578
2579 {
2580 name = "expand_range___expand_range_1.8.2.tgz";
2581 path = fetchurl {
2582 name = "expand_range___expand_range_1.8.2.tgz";
2583 url = "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz";
2584 sha1 = "a299effd335fe2721ebae8e257ec79644fc85337";
2585 };
2586 }
2587
2588 {
2589 name = "expand_tilde___expand_tilde_2.0.2.tgz";
2590 path = fetchurl {
2591 name = "expand_tilde___expand_tilde_2.0.2.tgz";
2592 url = "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz";
2593 sha1 = "97e801aa052df02454de46b02bf621642cdc8502";
2594 };
2595 }
2596
2597 {
2598 name = "ext___ext_1.4.0.tgz";
2599 path = fetchurl {
2600 name = "ext___ext_1.4.0.tgz";
2601 url = "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz";
2602 sha1 = "89ae7a07158f79d35517882904324077e4379244";
2603 };
2604 }
2605
2606 {
2607 name = "extend_shallow___extend_shallow_2.0.1.tgz";
2608 path = fetchurl {
2609 name = "extend_shallow___extend_shallow_2.0.1.tgz";
2610 url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz";
2611 sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
2612 };
2613 }
2614
2615 {
2616 name = "extend_shallow___extend_shallow_3.0.2.tgz";
2617 path = fetchurl {
2618 name = "extend_shallow___extend_shallow_3.0.2.tgz";
2619 url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz";
2620 sha1 = "26a71aaf073b39fb2127172746131c2704028db8";
2621 };
2622 }
2623
2624 {
2625 name = "extend___extend_3.0.2.tgz";
2626 path = fetchurl {
2627 name = "extend___extend_3.0.2.tgz";
2628 url = "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz";
2629 sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
2630 };
2631 }
2632
2633 {
2634 name = "extglob___extglob_0.3.2.tgz";
2635 path = fetchurl {
2636 name = "extglob___extglob_0.3.2.tgz";
2637 url = "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz";
2638 sha1 = "2e18ff3d2f49ab2765cec9023f011daa8d8349a1";
2639 };
2640 }
2641
2642 {
2643 name = "extglob___extglob_2.0.4.tgz";
2644 path = fetchurl {
2645 name = "extglob___extglob_2.0.4.tgz";
2646 url = "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz";
2647 sha1 = "ad00fe4dc612a9232e8718711dc5cb5ab0285543";
2648 };
2649 }
2650
2651 {
2652 name = "extsprintf___extsprintf_1.3.0.tgz";
2653 path = fetchurl {
2654 name = "extsprintf___extsprintf_1.3.0.tgz";
2655 url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz";
2656 sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
2657 };
2658 }
2659
2660 {
2661 name = "extsprintf___extsprintf_1.4.0.tgz";
2662 path = fetchurl {
2663 name = "extsprintf___extsprintf_1.4.0.tgz";
2664 url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz";
2665 sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
2666 };
2667 }
2668
2669 {
2670 name = "fancy_log___fancy_log_1.3.3.tgz";
2671 path = fetchurl {
2672 name = "fancy_log___fancy_log_1.3.3.tgz";
2673 url = "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz";
2674 sha1 = "dbc19154f558690150a23953a0adbd035be45fc7";
2675 };
2676 }
2677
2678 {
2679 name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz";
2680 path = fetchurl {
2681 name = "fast_deep_equal___fast_deep_equal_3.1.1.tgz";
2682 url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
2683 sha1 = "545145077c501491e33b15ec408c294376e94ae4";
2684 };
2685 }
2686
2687 {
2688 name = "fast_json_stable_stringify___fast_json_stable_stringify_2.1.0.tgz";
2689 path = fetchurl {
2690 name = "fast_json_stable_stringify___fast_json_stable_stringify_2.1.0.tgz";
2691 url = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
2692 sha1 = "874bf69c6f404c2b5d99c481341399fd55892633";
2693 };
2694 }
2695
2696 {
2697 name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
2698 path = fetchurl {
2699 name = "fast_levenshtein___fast_levenshtein_2.0.6.tgz";
2700 url = "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
2701 sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
2702 };
2703 }
2704
2705 {
2706 name = "faye_websocket___faye_websocket_0.7.3.tgz";
2707 path = fetchurl {
2708 name = "faye_websocket___faye_websocket_0.7.3.tgz";
2709 url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.7.3.tgz";
2710 sha1 = "cc4074c7f4a4dfd03af54dd65c354b135132ce11";
2711 };
2712 }
2713
2714 {
2715 name = "file_uri_to_path___file_uri_to_path_1.0.0.tgz";
2716 path = fetchurl {
2717 name = "file_uri_to_path___file_uri_to_path_1.0.0.tgz";
2718 url = "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz";
2719 sha1 = "553a7b8446ff6f684359c445f1e37a05dacc33dd";
2720 };
2721 }
2722
2723 {
2724 name = "filename_regex___filename_regex_2.0.1.tgz";
2725 path = fetchurl {
2726 name = "filename_regex___filename_regex_2.0.1.tgz";
2727 url = "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz";
2728 sha1 = "c1c4b9bee3e09725ddb106b75c1e301fe2f18b26";
2729 };
2730 }
2731
2732 {
2733 name = "fill_range___fill_range_2.2.4.tgz";
2734 path = fetchurl {
2735 name = "fill_range___fill_range_2.2.4.tgz";
2736 url = "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz";
2737 sha1 = "eb1e773abb056dcd8df2bfdf6af59b8b3a936565";
2738 };
2739 }
2740
2741 {
2742 name = "fill_range___fill_range_4.0.0.tgz";
2743 path = fetchurl {
2744 name = "fill_range___fill_range_4.0.0.tgz";
2745 url = "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz";
2746 sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7";
2747 };
2748 }
2749
2750 {
2751 name = "finalhandler___finalhandler_1.1.2.tgz";
2752 path = fetchurl {
2753 name = "finalhandler___finalhandler_1.1.2.tgz";
2754 url = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz";
2755 sha1 = "b7e7d000ffd11938d0fdb053506f6ebabe9f587d";
2756 };
2757 }
2758
2759 {
2760 name = "find_index___find_index_0.1.1.tgz";
2761 path = fetchurl {
2762 name = "find_index___find_index_0.1.1.tgz";
2763 url = "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz";
2764 sha1 = "675d358b2ca3892d795a1ab47232f8b6e2e0dde4";
2765 };
2766 }
2767
2768 {
2769 name = "find_up___find_up_1.1.2.tgz";
2770 path = fetchurl {
2771 name = "find_up___find_up_1.1.2.tgz";
2772 url = "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz";
2773 sha1 = "6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f";
2774 };
2775 }
2776
2777 {
2778 name = "findup_sync___findup_sync_2.0.0.tgz";
2779 path = fetchurl {
2780 name = "findup_sync___findup_sync_2.0.0.tgz";
2781 url = "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz";
2782 sha1 = "9326b1488c22d1a6088650a86901b2d9a90a2cbc";
2783 };
2784 }
2785
2786 {
2787 name = "fined___fined_1.2.0.tgz";
2788 path = fetchurl {
2789 name = "fined___fined_1.2.0.tgz";
2790 url = "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz";
2791 sha1 = "d00beccf1aa2b475d16d423b0238b713a2c4a37b";
2792 };
2793 }
2794
2795 {
2796 name = "first_chunk_stream___first_chunk_stream_1.0.0.tgz";
2797 path = fetchurl {
2798 name = "first_chunk_stream___first_chunk_stream_1.0.0.tgz";
2799 url = "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz";
2800 sha1 = "59bfb50cd905f60d7c394cd3d9acaab4e6ad934e";
2801 };
2802 }
2803
2804 {
2805 name = "fixtures2js___fixtures2js_0.0.0.tgz";
2806 path = fetchurl {
2807 name = "fixtures2js___fixtures2js_0.0.0.tgz";
2808 url = "https://registry.yarnpkg.com/fixtures2js/-/fixtures2js-0.0.0.tgz";
2809 sha1 = "602f7964c5b2963fe73224c8e4a3607d75c1b34f";
2810 };
2811 }
2812
2813 {
2814 name = "flagged_respawn___flagged_respawn_1.0.1.tgz";
2815 path = fetchurl {
2816 name = "flagged_respawn___flagged_respawn_1.0.1.tgz";
2817 url = "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz";
2818 sha1 = "e7de6f1279ddd9ca9aac8a5971d618606b3aab41";
2819 };
2820 }
2821
2822 {
2823 name = "follow_redirects___follow_redirects_1.11.0.tgz";
2824 path = fetchurl {
2825 name = "follow_redirects___follow_redirects_1.11.0.tgz";
2826 url = "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.11.0.tgz";
2827 sha1 = "afa14f08ba12a52963140fe43212658897bc0ecb";
2828 };
2829 }
2830
2831 {
2832 name = "for_in___for_in_1.0.2.tgz";
2833 path = fetchurl {
2834 name = "for_in___for_in_1.0.2.tgz";
2835 url = "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz";
2836 sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
2837 };
2838 }
2839
2840 {
2841 name = "for_own___for_own_0.1.5.tgz";
2842 path = fetchurl {
2843 name = "for_own___for_own_0.1.5.tgz";
2844 url = "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz";
2845 sha1 = "5265c681a4f294dabbf17c9509b6763aa84510ce";
2846 };
2847 }
2848
2849 {
2850 name = "for_own___for_own_1.0.0.tgz";
2851 path = fetchurl {
2852 name = "for_own___for_own_1.0.0.tgz";
2853 url = "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz";
2854 sha1 = "c63332f415cedc4b04dbfe70cf836494c53cb44b";
2855 };
2856 }
2857
2858 {
2859 name = "forever_agent___forever_agent_0.5.2.tgz";
2860 path = fetchurl {
2861 name = "forever_agent___forever_agent_0.5.2.tgz";
2862 url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.5.2.tgz";
2863 sha1 = "6d0e09c4921f94a27f63d3b49c5feff1ea4c5130";
2864 };
2865 }
2866
2867 {
2868 name = "forever_agent___forever_agent_0.6.1.tgz";
2869 path = fetchurl {
2870 name = "forever_agent___forever_agent_0.6.1.tgz";
2871 url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz";
2872 sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
2873 };
2874 }
2875
2876 {
2877 name = "fork_stream___fork_stream_0.0.4.tgz";
2878 path = fetchurl {
2879 name = "fork_stream___fork_stream_0.0.4.tgz";
2880 url = "https://registry.yarnpkg.com/fork-stream/-/fork-stream-0.0.4.tgz";
2881 sha1 = "db849fce77f6708a5f8f386ae533a0907b54ae70";
2882 };
2883 }
2884
2885 {
2886 name = "form_data___form_data_0.1.4.tgz";
2887 path = fetchurl {
2888 name = "form_data___form_data_0.1.4.tgz";
2889 url = "https://registry.yarnpkg.com/form-data/-/form-data-0.1.4.tgz";
2890 sha1 = "91abd788aba9702b1aabfa8bc01031a2ac9e3b12";
2891 };
2892 }
2893
2894 {
2895 name = "form_data___form_data_0.2.0.tgz";
2896 path = fetchurl {
2897 name = "form_data___form_data_0.2.0.tgz";
2898 url = "https://registry.yarnpkg.com/form-data/-/form-data-0.2.0.tgz";
2899 sha1 = "26f8bc26da6440e299cbdcfb69035c4f77a6e466";
2900 };
2901 }
2902
2903 {
2904 name = "form_data___form_data_2.3.3.tgz";
2905 path = fetchurl {
2906 name = "form_data___form_data_2.3.3.tgz";
2907 url = "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz";
2908 sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6";
2909 };
2910 }
2911
2912 {
2913 name = "fragment_cache___fragment_cache_0.2.1.tgz";
2914 path = fetchurl {
2915 name = "fragment_cache___fragment_cache_0.2.1.tgz";
2916 url = "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz";
2917 sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19";
2918 };
2919 }
2920
2921 {
2922 name = "fresh___fresh_0.3.0.tgz";
2923 path = fetchurl {
2924 name = "fresh___fresh_0.3.0.tgz";
2925 url = "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz";
2926 sha1 = "651f838e22424e7566de161d8358caa199f83d4f";
2927 };
2928 }
2929
2930 {
2931 name = "from___from_0.1.7.tgz";
2932 path = fetchurl {
2933 name = "from___from_0.1.7.tgz";
2934 url = "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz";
2935 sha1 = "83c60afc58b9c56997007ed1a768b3ab303a44fe";
2936 };
2937 }
2938
2939 {
2940 name = "fs_access___fs_access_1.0.1.tgz";
2941 path = fetchurl {
2942 name = "fs_access___fs_access_1.0.1.tgz";
2943 url = "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz";
2944 sha1 = "d6a87f262271cefebec30c553407fb995da8777a";
2945 };
2946 }
2947
2948 {
2949 name = "fs_minipass___fs_minipass_1.2.7.tgz";
2950 path = fetchurl {
2951 name = "fs_minipass___fs_minipass_1.2.7.tgz";
2952 url = "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz";
2953 sha1 = "ccff8570841e7fe4265693da88936c55aed7f7c7";
2954 };
2955 }
2956
2957 {
2958 name = "fs.realpath___fs.realpath_1.0.0.tgz";
2959 path = fetchurl {
2960 name = "fs.realpath___fs.realpath_1.0.0.tgz";
2961 url = "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz";
2962 sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
2963 };
2964 }
2965
2966 {
2967 name = "fsevents___fsevents_1.2.12.tgz";
2968 path = fetchurl {
2969 name = "fsevents___fsevents_1.2.12.tgz";
2970 url = "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz";
2971 sha1 = "db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c";
2972 };
2973 }
2974
2975 {
2976 name = "fstream_ignore___fstream_ignore_0.0.10.tgz";
2977 path = fetchurl {
2978 name = "fstream_ignore___fstream_ignore_0.0.10.tgz";
2979 url = "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-0.0.10.tgz";
2980 sha1 = "b10f8f522cc55415f80b41f7d3a32e6cba254e8c";
2981 };
2982 }
2983
2984 {
2985 name = "fstream___fstream_1.0.12.tgz";
2986 path = fetchurl {
2987 name = "fstream___fstream_1.0.12.tgz";
2988 url = "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz";
2989 sha1 = "4e8ba8ee2d48be4f7d0de505455548eae5932045";
2990 };
2991 }
2992
2993 {
2994 name = "fstream___fstream_0.1.31.tgz";
2995 path = fetchurl {
2996 name = "fstream___fstream_0.1.31.tgz";
2997 url = "https://registry.yarnpkg.com/fstream/-/fstream-0.1.31.tgz";
2998 sha1 = "7337f058fbbbbefa8c9f561a28cab0849202c988";
2999 };
3000 }
3001
3002 {
3003 name = "function_bind___function_bind_1.1.1.tgz";
3004 path = fetchurl {
3005 name = "function_bind___function_bind_1.1.1.tgz";
3006 url = "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz";
3007 sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
3008 };
3009 }
3010
3011 {
3012 name = "gauge___gauge_2.7.4.tgz";
3013 path = fetchurl {
3014 name = "gauge___gauge_2.7.4.tgz";
3015 url = "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz";
3016 sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
3017 };
3018 }
3019
3020 {
3021 name = "gaze___gaze_0.5.2.tgz";
3022 path = fetchurl {
3023 name = "gaze___gaze_0.5.2.tgz";
3024 url = "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz";
3025 sha1 = "40b709537d24d1d45767db5a908689dfe69ac44f";
3026 };
3027 }
3028
3029 {
3030 name = "gaze___gaze_1.1.3.tgz";
3031 path = fetchurl {
3032 name = "gaze___gaze_1.1.3.tgz";
3033 url = "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz";
3034 sha1 = "c441733e13b927ac8c0ff0b4c3b033f28812924a";
3035 };
3036 }
3037
3038 {
3039 name = "get_caller_file___get_caller_file_1.0.3.tgz";
3040 path = fetchurl {
3041 name = "get_caller_file___get_caller_file_1.0.3.tgz";
3042 url = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz";
3043 sha1 = "f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a";
3044 };
3045 }
3046
3047 {
3048 name = "get_stdin___get_stdin_4.0.1.tgz";
3049 path = fetchurl {
3050 name = "get_stdin___get_stdin_4.0.1.tgz";
3051 url = "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz";
3052 sha1 = "b968c6b0a04384324902e8bf1a5df32579a450fe";
3053 };
3054 }
3055
3056 {
3057 name = "get_value___get_value_2.0.6.tgz";
3058 path = fetchurl {
3059 name = "get_value___get_value_2.0.6.tgz";
3060 url = "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz";
3061 sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
3062 };
3063 }
3064
3065 {
3066 name = "getpass___getpass_0.1.7.tgz";
3067 path = fetchurl {
3068 name = "getpass___getpass_0.1.7.tgz";
3069 url = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz";
3070 sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
3071 };
3072 }
3073
3074 {
3075 name = "glob_base___glob_base_0.3.0.tgz";
3076 path = fetchurl {
3077 name = "glob_base___glob_base_0.3.0.tgz";
3078 url = "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz";
3079 sha1 = "dbb164f6221b1c0b1ccf82aea328b497df0ea3c4";
3080 };
3081 }
3082
3083 {
3084 name = "glob_parent___glob_parent_2.0.0.tgz";
3085 path = fetchurl {
3086 name = "glob_parent___glob_parent_2.0.0.tgz";
3087 url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz";
3088 sha1 = "81383d72db054fcccf5336daa902f182f6edbb28";
3089 };
3090 }
3091
3092 {
3093 name = "glob_stream___glob_stream_3.1.18.tgz";
3094 path = fetchurl {
3095 name = "glob_stream___glob_stream_3.1.18.tgz";
3096 url = "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz";
3097 sha1 = "9170a5f12b790306fdfe598f313f8f7954fd143b";
3098 };
3099 }
3100
3101 {
3102 name = "glob_watcher___glob_watcher_0.0.6.tgz";
3103 path = fetchurl {
3104 name = "glob_watcher___glob_watcher_0.0.6.tgz";
3105 url = "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz";
3106 sha1 = "b95b4a8df74b39c83298b0c05c978b4d9a3b710b";
3107 };
3108 }
3109
3110 {
3111 name = "glob2base___glob2base_0.0.12.tgz";
3112 path = fetchurl {
3113 name = "glob2base___glob2base_0.0.12.tgz";
3114 url = "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz";
3115 sha1 = "9d419b3e28f12e83a362164a277055922c9c0d56";
3116 };
3117 }
3118
3119 {
3120 name = "glob___glob_4.5.3.tgz";
3121 path = fetchurl {
3122 name = "glob___glob_4.5.3.tgz";
3123 url = "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz";
3124 sha1 = "c6cb73d3226c1efef04de3c56d012f03377ee15f";
3125 };
3126 }
3127
3128 {
3129 name = "glob___glob_5.0.15.tgz";
3130 path = fetchurl {
3131 name = "glob___glob_5.0.15.tgz";
3132 url = "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz";
3133 sha1 = "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1";
3134 };
3135 }
3136
3137 {
3138 name = "glob___glob_6.0.4.tgz";
3139 path = fetchurl {
3140 name = "glob___glob_6.0.4.tgz";
3141 url = "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz";
3142 sha1 = "0f08860f6a155127b2fadd4f9ce24b1aab6e4d22";
3143 };
3144 }
3145
3146 {
3147 name = "glob___glob_7.1.6.tgz";
3148 path = fetchurl {
3149 name = "glob___glob_7.1.6.tgz";
3150 url = "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz";
3151 sha1 = "141f33b81a7c2492e125594307480c46679278a6";
3152 };
3153 }
3154
3155 {
3156 name = "glob___glob_3.1.21.tgz";
3157 path = fetchurl {
3158 name = "glob___glob_3.1.21.tgz";
3159 url = "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz";
3160 sha1 = "d29e0a055dea5138f4d07ed40e8982e83c2066cd";
3161 };
3162 }
3163
3164 {
3165 name = "glob___glob_3.2.11.tgz";
3166 path = fetchurl {
3167 name = "glob___glob_3.2.11.tgz";
3168 url = "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz";
3169 sha1 = "4a973f635b9190f715d10987d5c00fd2815ebe3d";
3170 };
3171 }
3172
3173 {
3174 name = "glob___glob_4.0.6.tgz";
3175 path = fetchurl {
3176 name = "glob___glob_4.0.6.tgz";
3177 url = "https://registry.yarnpkg.com/glob/-/glob-4.0.6.tgz";
3178 sha1 = "695c50bdd4e2fb5c5d370b091f388d3707e291a7";
3179 };
3180 }
3181
3182 {
3183 name = "global_modules___global_modules_1.0.0.tgz";
3184 path = fetchurl {
3185 name = "global_modules___global_modules_1.0.0.tgz";
3186 url = "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz";
3187 sha1 = "6d770f0eb523ac78164d72b5e71a8877265cc3ea";
3188 };
3189 }
3190
3191 {
3192 name = "global_prefix___global_prefix_1.0.2.tgz";
3193 path = fetchurl {
3194 name = "global_prefix___global_prefix_1.0.2.tgz";
3195 url = "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz";
3196 sha1 = "dbf743c6c14992593c655568cb66ed32c0122ebe";
3197 };
3198 }
3199
3200 {
3201 name = "globule___globule_1.3.1.tgz";
3202 path = fetchurl {
3203 name = "globule___globule_1.3.1.tgz";
3204 url = "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz";
3205 sha1 = "90a25338f22b7fbeb527cee63c629aea754d33b9";
3206 };
3207 }
3208
3209 {
3210 name = "globule___globule_0.1.0.tgz";
3211 path = fetchurl {
3212 name = "globule___globule_0.1.0.tgz";
3213 url = "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz";
3214 sha1 = "d9c8edde1da79d125a151b79533b978676346ae5";
3215 };
3216 }
3217
3218 {
3219 name = "glogg___glogg_1.0.2.tgz";
3220 path = fetchurl {
3221 name = "glogg___glogg_1.0.2.tgz";
3222 url = "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz";
3223 sha1 = "2d7dd702beda22eb3bffadf880696da6d846313f";
3224 };
3225 }
3226
3227 {
3228 name = "got___got_3.3.1.tgz";
3229 path = fetchurl {
3230 name = "got___got_3.3.1.tgz";
3231 url = "https://registry.yarnpkg.com/got/-/got-3.3.1.tgz";
3232 sha1 = "e5d0ed4af55fc3eef4d56007769d98192bcb2eca";
3233 };
3234 }
3235
3236 {
3237 name = "graceful_fs___graceful_fs_3.0.12.tgz";
3238 path = fetchurl {
3239 name = "graceful_fs___graceful_fs_3.0.12.tgz";
3240 url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.12.tgz";
3241 sha1 = "0034947ce9ed695ec8ab0b854bc919e82b1ffaef";
3242 };
3243 }
3244
3245 {
3246 name = "graceful_fs___graceful_fs_4.2.3.tgz";
3247 path = fetchurl {
3248 name = "graceful_fs___graceful_fs_4.2.3.tgz";
3249 url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz";
3250 sha1 = "4a12ff1b60376ef09862c2093edd908328be8423";
3251 };
3252 }
3253
3254 {
3255 name = "graceful_fs___graceful_fs_1.2.3.tgz";
3256 path = fetchurl {
3257 name = "graceful_fs___graceful_fs_1.2.3.tgz";
3258 url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz";
3259 sha1 = "15a4806a57547cb2d2dbf27f42e89a8c3451b364";
3260 };
3261 }
3262
3263 {
3264 name = "graceful_fs___graceful_fs_2.0.3.tgz";
3265 path = fetchurl {
3266 name = "graceful_fs___graceful_fs_2.0.3.tgz";
3267 url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-2.0.3.tgz";
3268 sha1 = "7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0";
3269 };
3270 }
3271
3272 {
3273 name = "guanlecoja___guanlecoja_0.9.2.tgz";
3274 path = fetchurl {
3275 name = "guanlecoja___guanlecoja_0.9.2.tgz";
3276 url = "https://registry.yarnpkg.com/guanlecoja/-/guanlecoja-0.9.2.tgz";
3277 sha1 = "03febe92d9e7575a633b4d5ad8d19f5ee1cdf326";
3278 };
3279 }
3280
3281 {
3282 name = "gulp_angular_templatecache___gulp_angular_templatecache_1.9.1.tgz";
3283 path = fetchurl {
3284 name = "gulp_angular_templatecache___gulp_angular_templatecache_1.9.1.tgz";
3285 url = "https://registry.yarnpkg.com/gulp-angular-templatecache/-/gulp-angular-templatecache-1.9.1.tgz";
3286 sha1 = "60f631e97aaaa765d942e37042e4bfbb1a5df244";
3287 };
3288 }
3289
3290 {
3291 name = "gulp_bower_deps___gulp_bower_deps_0.3.3.tgz";
3292 path = fetchurl {
3293 name = "gulp_bower_deps___gulp_bower_deps_0.3.3.tgz";
3294 url = "https://registry.yarnpkg.com/gulp-bower-deps/-/gulp-bower-deps-0.3.3.tgz";
3295 sha1 = "2109fe3fbee35069f67312bb977e591d890296cd";
3296 };
3297 }
3298
3299 {
3300 name = "gulp_browserify___gulp_browserify_0.5.1.tgz";
3301 path = fetchurl {
3302 name = "gulp_browserify___gulp_browserify_0.5.1.tgz";
3303 url = "https://registry.yarnpkg.com/gulp-browserify/-/gulp-browserify-0.5.1.tgz";
3304 sha1 = "820108ac2554a954adb8be17d23958b0c04be083";
3305 };
3306 }
3307
3308 {
3309 name = "gulp_cached___gulp_cached_1.1.1.tgz";
3310 path = fetchurl {
3311 name = "gulp_cached___gulp_cached_1.1.1.tgz";
3312 url = "https://registry.yarnpkg.com/gulp-cached/-/gulp-cached-1.1.1.tgz";
3313 sha1 = "fe7cd4f87f37601e6073cfedee5c2bdaf8b6acce";
3314 };
3315 }
3316
3317 {
3318 name = "gulp_clean_css___gulp_clean_css_2.4.0.tgz";
3319 path = fetchurl {
3320 name = "gulp_clean_css___gulp_clean_css_2.4.0.tgz";
3321 url = "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-2.4.0.tgz";
3322 sha1 = "2ae48109fe83ccc967ff5ad53c044949a4863b36";
3323 };
3324 }
3325
3326 {
3327 name = "gulp_coffee___gulp_coffee_2.3.5.tgz";
3328 path = fetchurl {
3329 name = "gulp_coffee___gulp_coffee_2.3.5.tgz";
3330 url = "https://registry.yarnpkg.com/gulp-coffee/-/gulp-coffee-2.3.5.tgz";
3331 sha1 = "8c64e9ac884e1bab4e20b66ac7c386a816859041";
3332 };
3333 }
3334
3335 {
3336 name = "gulp_concat___gulp_concat_2.6.0.tgz";
3337 path = fetchurl {
3338 name = "gulp_concat___gulp_concat_2.6.0.tgz";
3339 url = "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.0.tgz";
3340 sha1 = "585cfb115411f348773131140566b6a81c69cb91";
3341 };
3342 }
3343
3344 {
3345 name = "gulp_concat___gulp_concat_2.6.1.tgz";
3346 path = fetchurl {
3347 name = "gulp_concat___gulp_concat_2.6.1.tgz";
3348 url = "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz";
3349 sha1 = "633d16c95d88504628ad02665663cee5a4793353";
3350 };
3351 }
3352
3353 {
3354 name = "gulp_fixtures2js___gulp_fixtures2js_0.0.1.tgz";
3355 path = fetchurl {
3356 name = "gulp_fixtures2js___gulp_fixtures2js_0.0.1.tgz";
3357 url = "https://registry.yarnpkg.com/gulp-fixtures2js/-/gulp-fixtures2js-0.0.1.tgz";
3358 sha1 = "4a3cbb4404bdfab92f7d2b6e09de2bfd0ae78506";
3359 };
3360 }
3361
3362 {
3363 name = "gulp_footer___gulp_footer_1.0.5.tgz";
3364 path = fetchurl {
3365 name = "gulp_footer___gulp_footer_1.0.5.tgz";
3366 url = "https://registry.yarnpkg.com/gulp-footer/-/gulp-footer-1.0.5.tgz";
3367 sha1 = "e84ca777e266be7bbc2d45d2df0e7eba8dfa3e54";
3368 };
3369 }
3370
3371 {
3372 name = "gulp_footer___gulp_footer_1.1.2.tgz";
3373 path = fetchurl {
3374 name = "gulp_footer___gulp_footer_1.1.2.tgz";
3375 url = "https://registry.yarnpkg.com/gulp-footer/-/gulp-footer-1.1.2.tgz";
3376 sha1 = "7fe28324ec67e3d618d31e0f5ea2ee5b454f6877";
3377 };
3378 }
3379
3380 {
3381 name = "gulp_header___gulp_header_1.8.2.tgz";
3382 path = fetchurl {
3383 name = "gulp_header___gulp_header_1.8.2.tgz";
3384 url = "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.2.tgz";
3385 sha1 = "3ab222f53719d2d03d81d9134252fe7d52425aa4";
3386 };
3387 }
3388
3389 {
3390 name = "gulp_header___gulp_header_1.8.12.tgz";
3391 path = fetchurl {
3392 name = "gulp_header___gulp_header_1.8.12.tgz";
3393 url = "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz";
3394 sha1 = "ad306be0066599127281c4f8786660e705080a84";
3395 };
3396 }
3397
3398 {
3399 name = "gulp_help___gulp_help_1.6.1.tgz";
3400 path = fetchurl {
3401 name = "gulp_help___gulp_help_1.6.1.tgz";
3402 url = "https://registry.yarnpkg.com/gulp-help/-/gulp-help-1.6.1.tgz";
3403 sha1 = "261db186e18397fef3f6a2c22e9c315bfa88ae0c";
3404 };
3405 }
3406
3407 {
3408 name = "gulp_if___gulp_if_2.0.2.tgz";
3409 path = fetchurl {
3410 name = "gulp_if___gulp_if_2.0.2.tgz";
3411 url = "https://registry.yarnpkg.com/gulp-if/-/gulp-if-2.0.2.tgz";
3412 sha1 = "a497b7e7573005041caa2bc8b7dda3c80444d629";
3413 };
3414 }
3415
3416 {
3417 name = "gulp_less___gulp_less_1.3.9.tgz";
3418 path = fetchurl {
3419 name = "gulp_less___gulp_less_1.3.9.tgz";
3420 url = "https://registry.yarnpkg.com/gulp-less/-/gulp-less-1.3.9.tgz";
3421 sha1 = "e129750f236693ead5b522af311cc33eeff1910e";
3422 };
3423 }
3424
3425 {
3426 name = "gulp_livereload___gulp_livereload_3.8.1.tgz";
3427 path = fetchurl {
3428 name = "gulp_livereload___gulp_livereload_3.8.1.tgz";
3429 url = "https://registry.yarnpkg.com/gulp-livereload/-/gulp-livereload-3.8.1.tgz";
3430 sha1 = "00f744b2d749d3e9e3746589c8a44acac779b50f";
3431 };
3432 }
3433
3434 {
3435 name = "gulp_match___gulp_match_1.1.0.tgz";
3436 path = fetchurl {
3437 name = "gulp_match___gulp_match_1.1.0.tgz";
3438 url = "https://registry.yarnpkg.com/gulp-match/-/gulp-match-1.1.0.tgz";
3439 sha1 = "552b7080fc006ee752c90563f9fec9d61aafdf4f";
3440 };
3441 }
3442
3443 {
3444 name = "gulp_ng_annotate___gulp_ng_annotate_1.1.0.tgz";
3445 path = fetchurl {
3446 name = "gulp_ng_annotate___gulp_ng_annotate_1.1.0.tgz";
3447 url = "https://registry.yarnpkg.com/gulp-ng-annotate/-/gulp-ng-annotate-1.1.0.tgz";
3448 sha1 = "5e801be073d8f6d343c4ff65b71717b90fac13ce";
3449 };
3450 }
3451
3452 {
3453 name = "gulp_ng_classify___gulp_ng_classify_4.0.1.tgz";
3454 path = fetchurl {
3455 name = "gulp_ng_classify___gulp_ng_classify_4.0.1.tgz";
3456 url = "https://registry.yarnpkg.com/gulp-ng-classify/-/gulp-ng-classify-4.0.1.tgz";
3457 sha1 = "3019161127c35c317ea08dc2a65ea35b592dbfd7";
3458 };
3459 }
3460
3461 {
3462 name = "gulp_pug___gulp_pug_3.3.0.tgz";
3463 path = fetchurl {
3464 name = "gulp_pug___gulp_pug_3.3.0.tgz";
3465 url = "https://registry.yarnpkg.com/gulp-pug/-/gulp-pug-3.3.0.tgz";
3466 sha1 = "46982c1439c094c360542ed8ba5c882d3bb711cf";
3467 };
3468 }
3469
3470 {
3471 name = "gulp_remember___gulp_remember_0.3.1.tgz";
3472 path = fetchurl {
3473 name = "gulp_remember___gulp_remember_0.3.1.tgz";
3474 url = "https://registry.yarnpkg.com/gulp-remember/-/gulp-remember-0.3.1.tgz";
3475 sha1 = "5776b6f64c5a1c5c4d4555406723ec8e2b0407e7";
3476 };
3477 }
3478
3479 {
3480 name = "gulp_rename___gulp_rename_1.2.3.tgz";
3481 path = fetchurl {
3482 name = "gulp_rename___gulp_rename_1.2.3.tgz";
3483 url = "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.3.tgz";
3484 sha1 = "37b75298e9d3e6c0fe9ac4eac13ce3be5434646b";
3485 };
3486 }
3487
3488 {
3489 name = "gulp_replace___gulp_replace_0.5.4.tgz";
3490 path = fetchurl {
3491 name = "gulp_replace___gulp_replace_0.5.4.tgz";
3492 url = "https://registry.yarnpkg.com/gulp-replace/-/gulp-replace-0.5.4.tgz";
3493 sha1 = "69a67914bbd13c562bff14f504a403796aa0daa9";
3494 };
3495 }
3496
3497 {
3498 name = "gulp_sass___gulp_sass_3.2.1.tgz";
3499 path = fetchurl {
3500 name = "gulp_sass___gulp_sass_3.2.1.tgz";
3501 url = "https://registry.yarnpkg.com/gulp-sass/-/gulp-sass-3.2.1.tgz";
3502 sha1 = "2e3688a96fd8be1c0c01340750c191b2e79fab94";
3503 };
3504 }
3505
3506 {
3507 name = "gulp_sourcemaps___gulp_sourcemaps_1.6.0.tgz";
3508 path = fetchurl {
3509 name = "gulp_sourcemaps___gulp_sourcemaps_1.6.0.tgz";
3510 url = "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz";
3511 sha1 = "b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c";
3512 };
3513 }
3514
3515 {
3516 name = "gulp_uglify___gulp_uglify_1.4.2.tgz";
3517 path = fetchurl {
3518 name = "gulp_uglify___gulp_uglify_1.4.2.tgz";
3519 url = "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-1.4.2.tgz";
3520 sha1 = "2807ea1016e4962c37766c02feeb5501818857c3";
3521 };
3522 }
3523
3524 {
3525 name = "gulp_util___gulp_util_3.0.8.tgz";
3526 path = fetchurl {
3527 name = "gulp_util___gulp_util_3.0.8.tgz";
3528 url = "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz";
3529 sha1 = "0054e1e744502e27c04c187c3ecc505dd54bbb4f";
3530 };
3531 }
3532
3533 {
3534 name = "gulp_util___gulp_util_3.0.7.tgz";
3535 path = fetchurl {
3536 name = "gulp_util___gulp_util_3.0.7.tgz";
3537 url = "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz";
3538 sha1 = "78925c4b8f8b49005ac01a011c557e6218941cbb";
3539 };
3540 }
3541
3542 {
3543 name = "gulp_util___gulp_util_2.2.20.tgz";
3544 path = fetchurl {
3545 name = "gulp_util___gulp_util_2.2.20.tgz";
3546 url = "https://registry.yarnpkg.com/gulp-util/-/gulp-util-2.2.20.tgz";
3547 sha1 = "d7146e5728910bd8f047a6b0b1e549bc22dbd64c";
3548 };
3549 }
3550
3551 {
3552 name = "gulp_wrap___gulp_wrap_0.8.0.tgz";
3553 path = fetchurl {
3554 name = "gulp_wrap___gulp_wrap_0.8.0.tgz";
3555 url = "https://registry.yarnpkg.com/gulp-wrap/-/gulp-wrap-0.8.0.tgz";
3556 sha1 = "c41ce89a374947788b78c9e67f33bbe838c69b86";
3557 };
3558 }
3559
3560 {
3561 name = "gulp___gulp_3.9.1.tgz";
3562 path = fetchurl {
3563 name = "gulp___gulp_3.9.1.tgz";
3564 url = "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz";
3565 sha1 = "571ce45928dd40af6514fc4011866016c13845b4";
3566 };
3567 }
3568
3569 {
3570 name = "gulplog___gulplog_1.0.0.tgz";
3571 path = fetchurl {
3572 name = "gulplog___gulplog_1.0.0.tgz";
3573 url = "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz";
3574 sha1 = "e28c4d45d05ecbbed818363ce8f9c5926229ffe5";
3575 };
3576 }
3577
3578 {
3579 name = "handlebars___handlebars_4.7.3.tgz";
3580 path = fetchurl {
3581 name = "handlebars___handlebars_4.7.3.tgz";
3582 url = "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.3.tgz";
3583 sha1 = "8ece2797826886cf8082d1726ff21d2a022550ee";
3584 };
3585 }
3586
3587 {
3588 name = "handlebars___handlebars_1.3.0.tgz";
3589 path = fetchurl {
3590 name = "handlebars___handlebars_1.3.0.tgz";
3591 url = "https://registry.yarnpkg.com/handlebars/-/handlebars-1.3.0.tgz";
3592 sha1 = "9e9b130a93e389491322d975cf3ec1818c37ce34";
3593 };
3594 }
3595
3596 {
3597 name = "har_schema___har_schema_2.0.0.tgz";
3598 path = fetchurl {
3599 name = "har_schema___har_schema_2.0.0.tgz";
3600 url = "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz";
3601 sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
3602 };
3603 }
3604
3605 {
3606 name = "har_validator___har_validator_5.1.3.tgz";
3607 path = fetchurl {
3608 name = "har_validator___har_validator_5.1.3.tgz";
3609 url = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz";
3610 sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080";
3611 };
3612 }
3613
3614 {
3615 name = "has_ansi___has_ansi_0.1.0.tgz";
3616 path = fetchurl {
3617 name = "has_ansi___has_ansi_0.1.0.tgz";
3618 url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz";
3619 sha1 = "84f265aae8c0e6a88a12d7022894b7568894c62e";
3620 };
3621 }
3622
3623 {
3624 name = "has_ansi___has_ansi_2.0.0.tgz";
3625 path = fetchurl {
3626 name = "has_ansi___has_ansi_2.0.0.tgz";
3627 url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz";
3628 sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
3629 };
3630 }
3631
3632 {
3633 name = "has_binary___has_binary_0.1.7.tgz";
3634 path = fetchurl {
3635 name = "has_binary___has_binary_0.1.7.tgz";
3636 url = "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz";
3637 sha1 = "68e61eb16210c9545a0a5cce06a873912fe1e68c";
3638 };
3639 }
3640
3641 {
3642 name = "has_color___has_color_0.1.7.tgz";
3643 path = fetchurl {
3644 name = "has_color___has_color_0.1.7.tgz";
3645 url = "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz";
3646 sha1 = "67144a5260c34fc3cca677d041daf52fe7b78b2f";
3647 };
3648 }
3649
3650 {
3651 name = "has_cors___has_cors_1.1.0.tgz";
3652 path = fetchurl {
3653 name = "has_cors___has_cors_1.1.0.tgz";
3654 url = "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz";
3655 sha1 = "5e474793f7ea9843d1bb99c23eef49ff126fff39";
3656 };
3657 }
3658
3659 {
3660 name = "has_flag___has_flag_1.0.0.tgz";
3661 path = fetchurl {
3662 name = "has_flag___has_flag_1.0.0.tgz";
3663 url = "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz";
3664 sha1 = "9d9e793165ce017a00f00418c43f942a7b1d11fa";
3665 };
3666 }
3667
3668 {
3669 name = "has_flag___has_flag_4.0.0.tgz";
3670 path = fetchurl {
3671 name = "has_flag___has_flag_4.0.0.tgz";
3672 url = "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz";
3673 sha1 = "944771fd9c81c81265c4d6941860da06bb59479b";
3674 };
3675 }
3676
3677 {
3678 name = "has_gulplog___has_gulplog_0.1.0.tgz";
3679 path = fetchurl {
3680 name = "has_gulplog___has_gulplog_0.1.0.tgz";
3681 url = "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz";
3682 sha1 = "6414c82913697da51590397dafb12f22967811ce";
3683 };
3684 }
3685
3686 {
3687 name = "has_unicode___has_unicode_2.0.1.tgz";
3688 path = fetchurl {
3689 name = "has_unicode___has_unicode_2.0.1.tgz";
3690 url = "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz";
3691 sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
3692 };
3693 }
3694
3695 {
3696 name = "has_value___has_value_0.3.1.tgz";
3697 path = fetchurl {
3698 name = "has_value___has_value_0.3.1.tgz";
3699 url = "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz";
3700 sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f";
3701 };
3702 }
3703
3704 {
3705 name = "has_value___has_value_1.0.0.tgz";
3706 path = fetchurl {
3707 name = "has_value___has_value_1.0.0.tgz";
3708 url = "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz";
3709 sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177";
3710 };
3711 }
3712
3713 {
3714 name = "has_values___has_values_0.1.4.tgz";
3715 path = fetchurl {
3716 name = "has_values___has_values_0.1.4.tgz";
3717 url = "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz";
3718 sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
3719 };
3720 }
3721
3722 {
3723 name = "has_values___has_values_1.0.0.tgz";
3724 path = fetchurl {
3725 name = "has_values___has_values_1.0.0.tgz";
3726 url = "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz";
3727 sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f";
3728 };
3729 }
3730
3731 {
3732 name = "has___has_1.0.3.tgz";
3733 path = fetchurl {
3734 name = "has___has_1.0.3.tgz";
3735 url = "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz";
3736 sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796";
3737 };
3738 }
3739
3740 {
3741 name = "hawk___hawk_1.1.1.tgz";
3742 path = fetchurl {
3743 name = "hawk___hawk_1.1.1.tgz";
3744 url = "https://registry.yarnpkg.com/hawk/-/hawk-1.1.1.tgz";
3745 sha1 = "87cd491f9b46e4e2aeaca335416766885d2d1ed9";
3746 };
3747 }
3748
3749 {
3750 name = "hawk___hawk_1.0.0.tgz";
3751 path = fetchurl {
3752 name = "hawk___hawk_1.0.0.tgz";
3753 url = "https://registry.yarnpkg.com/hawk/-/hawk-1.0.0.tgz";
3754 sha1 = "b90bb169807285411da7ffcb8dd2598502d3b52d";
3755 };
3756 }
3757
3758 {
3759 name = "hoek___hoek_0.9.1.tgz";
3760 path = fetchurl {
3761 name = "hoek___hoek_0.9.1.tgz";
3762 url = "https://registry.yarnpkg.com/hoek/-/hoek-0.9.1.tgz";
3763 sha1 = "3d322462badf07716ea7eb85baf88079cddce505";
3764 };
3765 }
3766
3767 {
3768 name = "homedir_polyfill___homedir_polyfill_1.0.3.tgz";
3769 path = fetchurl {
3770 name = "homedir_polyfill___homedir_polyfill_1.0.3.tgz";
3771 url = "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz";
3772 sha1 = "743298cef4e5af3e194161fbadcc2151d3a058e8";
3773 };
3774 }
3775
3776 {
3777 name = "hosted_git_info___hosted_git_info_2.8.8.tgz";
3778 path = fetchurl {
3779 name = "hosted_git_info___hosted_git_info_2.8.8.tgz";
3780 url = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz";
3781 sha1 = "7539bd4bc1e0e0a895815a2e0262420b12858488";
3782 };
3783 }
3784
3785 {
3786 name = "http_browserify___http_browserify_1.3.2.tgz";
3787 path = fetchurl {
3788 name = "http_browserify___http_browserify_1.3.2.tgz";
3789 url = "https://registry.yarnpkg.com/http-browserify/-/http-browserify-1.3.2.tgz";
3790 sha1 = "b562c34479349a690d7a6597df495aefa8c604f5";
3791 };
3792 }
3793
3794 {
3795 name = "http_errors___http_errors_1.7.2.tgz";
3796 path = fetchurl {
3797 name = "http_errors___http_errors_1.7.2.tgz";
3798 url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz";
3799 sha1 = "4f5029cf13239f31036e5b2e55292bcfbcc85c8f";
3800 };
3801 }
3802
3803 {
3804 name = "http_errors___http_errors_1.3.1.tgz";
3805 path = fetchurl {
3806 name = "http_errors___http_errors_1.3.1.tgz";
3807 url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.3.1.tgz";
3808 sha1 = "197e22cdebd4198585e8694ef6786197b91ed942";
3809 };
3810 }
3811
3812 {
3813 name = "http_parser_js___http_parser_js_0.4.10.tgz";
3814 path = fetchurl {
3815 name = "http_parser_js___http_parser_js_0.4.10.tgz";
3816 url = "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz";
3817 sha1 = "92c9c1374c35085f75db359ec56cc257cbb93fa4";
3818 };
3819 }
3820
3821 {
3822 name = "http_proxy___http_proxy_1.18.0.tgz";
3823 path = fetchurl {
3824 name = "http_proxy___http_proxy_1.18.0.tgz";
3825 url = "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz";
3826 sha1 = "dbe55f63e75a347db7f3d99974f2692a314a6a3a";
3827 };
3828 }
3829
3830 {
3831 name = "http_signature___http_signature_0.10.1.tgz";
3832 path = fetchurl {
3833 name = "http_signature___http_signature_0.10.1.tgz";
3834 url = "https://registry.yarnpkg.com/http-signature/-/http-signature-0.10.1.tgz";
3835 sha1 = "4fbdac132559aa8323121e540779c0a012b27e66";
3836 };
3837 }
3838
3839 {
3840 name = "http_signature___http_signature_1.2.0.tgz";
3841 path = fetchurl {
3842 name = "http_signature___http_signature_1.2.0.tgz";
3843 url = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz";
3844 sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
3845 };
3846 }
3847
3848 {
3849 name = "https_browserify___https_browserify_0.0.1.tgz";
3850 path = fetchurl {
3851 name = "https_browserify___https_browserify_0.0.1.tgz";
3852 url = "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz";
3853 sha1 = "3f91365cabe60b77ed0ebba24b454e3e09d95a82";
3854 };
3855 }
3856
3857 {
3858 name = "iconv_lite___iconv_lite_0.4.13.tgz";
3859 path = fetchurl {
3860 name = "iconv_lite___iconv_lite_0.4.13.tgz";
3861 url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz";
3862 sha1 = "1f88aba4ab0b1508e8312acc39345f36e992e2f2";
3863 };
3864 }
3865
3866 {
3867 name = "iconv_lite___iconv_lite_0.4.24.tgz";
3868 path = fetchurl {
3869 name = "iconv_lite___iconv_lite_0.4.24.tgz";
3870 url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz";
3871 sha1 = "2022b4b25fbddc21d2f524974a474aafe733908b";
3872 };
3873 }
3874
3875 {
3876 name = "ieee754___ieee754_1.1.13.tgz";
3877 path = fetchurl {
3878 name = "ieee754___ieee754_1.1.13.tgz";
3879 url = "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz";
3880 sha1 = "ec168558e95aa181fd87d37f55c32bbcb6708b84";
3881 };
3882 }
3883
3884 {
3885 name = "ignore_walk___ignore_walk_3.0.3.tgz";
3886 path = fetchurl {
3887 name = "ignore_walk___ignore_walk_3.0.3.tgz";
3888 url = "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz";
3889 sha1 = "017e2447184bfeade7c238e4aefdd1e8f95b1e37";
3890 };
3891 }
3892
3893 {
3894 name = "in_publish___in_publish_2.0.1.tgz";
3895 path = fetchurl {
3896 name = "in_publish___in_publish_2.0.1.tgz";
3897 url = "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz";
3898 sha1 = "948b1a535c8030561cea522f73f78f4be357e00c";
3899 };
3900 }
3901
3902 {
3903 name = "indent_string___indent_string_2.1.0.tgz";
3904 path = fetchurl {
3905 name = "indent_string___indent_string_2.1.0.tgz";
3906 url = "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz";
3907 sha1 = "8e2d48348742121b4a8218b7a137e9a52049dc80";
3908 };
3909 }
3910
3911 {
3912 name = "indexof___indexof_0.0.1.tgz";
3913 path = fetchurl {
3914 name = "indexof___indexof_0.0.1.tgz";
3915 url = "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz";
3916 sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
3917 };
3918 }
3919
3920 {
3921 name = "infinity_agent___infinity_agent_2.0.3.tgz";
3922 path = fetchurl {
3923 name = "infinity_agent___infinity_agent_2.0.3.tgz";
3924 url = "https://registry.yarnpkg.com/infinity-agent/-/infinity-agent-2.0.3.tgz";
3925 sha1 = "45e0e2ff7a9eb030b27d62b74b3744b7a7ac4216";
3926 };
3927 }
3928
3929 {
3930 name = "inflight___inflight_1.0.6.tgz";
3931 path = fetchurl {
3932 name = "inflight___inflight_1.0.6.tgz";
3933 url = "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz";
3934 sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
3935 };
3936 }
3937
3938 {
3939 name = "inherits___inherits_1.0.2.tgz";
3940 path = fetchurl {
3941 name = "inherits___inherits_1.0.2.tgz";
3942 url = "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz";
3943 sha1 = "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b";
3944 };
3945 }
3946
3947 {
3948 name = "inherits___inherits_2.0.4.tgz";
3949 path = fetchurl {
3950 name = "inherits___inherits_2.0.4.tgz";
3951 url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz";
3952 sha1 = "0fa2c64f932917c3433a0ded55363aae37416b7c";
3953 };
3954 }
3955
3956 {
3957 name = "inherits___inherits_2.0.1.tgz";
3958 path = fetchurl {
3959 name = "inherits___inherits_2.0.1.tgz";
3960 url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz";
3961 sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
3962 };
3963 }
3964
3965 {
3966 name = "inherits___inherits_2.0.3.tgz";
3967 path = fetchurl {
3968 name = "inherits___inherits_2.0.3.tgz";
3969 url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz";
3970 sha1 = "633c2c83e3da42a502f52466022480f4208261de";
3971 };
3972 }
3973
3974 {
3975 name = "ini___ini_1.3.5.tgz";
3976 path = fetchurl {
3977 name = "ini___ini_1.3.5.tgz";
3978 url = "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz";
3979 sha1 = "eee25f56db1c9ec6085e0c22778083f596abf927";
3980 };
3981 }
3982
3983 {
3984 name = "inline_source_map___inline_source_map_0.3.1.tgz";
3985 path = fetchurl {
3986 name = "inline_source_map___inline_source_map_0.3.1.tgz";
3987 url = "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.3.1.tgz";
3988 sha1 = "a528b514e689fce90db3089e870d92f527acb5eb";
3989 };
3990 }
3991
3992 {
3993 name = "inquirer___inquirer_0.4.1.tgz";
3994 path = fetchurl {
3995 name = "inquirer___inquirer_0.4.1.tgz";
3996 url = "https://registry.yarnpkg.com/inquirer/-/inquirer-0.4.1.tgz";
3997 sha1 = "6cf74eb1a347f97a1a207bea8ad1c987d0ff4b81";
3998 };
3999 }
4000
4001 {
4002 name = "inquirer___inquirer_0.5.1.tgz";
4003 path = fetchurl {
4004 name = "inquirer___inquirer_0.5.1.tgz";
4005 url = "https://registry.yarnpkg.com/inquirer/-/inquirer-0.5.1.tgz";
4006 sha1 = "e9f2cd1ee172c7a32e054b78a03d4ddb0d7707f1";
4007 };
4008 }
4009
4010 {
4011 name = "insert_module_globals___insert_module_globals_6.0.0.tgz";
4012 path = fetchurl {
4013 name = "insert_module_globals___insert_module_globals_6.0.0.tgz";
4014 url = "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-6.0.0.tgz";
4015 sha1 = "ee8aeb9dee16819e33aa14588a558824af0c15dc";
4016 };
4017 }
4018
4019 {
4020 name = "insight___insight_0.3.1.tgz";
4021 path = fetchurl {
4022 name = "insight___insight_0.3.1.tgz";
4023 url = "https://registry.yarnpkg.com/insight/-/insight-0.3.1.tgz";
4024 sha1 = "1a14f32c06115c0850338c38a253d707b611d448";
4025 };
4026 }
4027
4028 {
4029 name = "interpret___interpret_1.2.0.tgz";
4030 path = fetchurl {
4031 name = "interpret___interpret_1.2.0.tgz";
4032 url = "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz";
4033 sha1 = "d5061a6224be58e8083985f5014d844359576296";
4034 };
4035 }
4036
4037 {
4038 name = "intersect___intersect_0.0.3.tgz";
4039 path = fetchurl {
4040 name = "intersect___intersect_0.0.3.tgz";
4041 url = "https://registry.yarnpkg.com/intersect/-/intersect-0.0.3.tgz";
4042 sha1 = "c1a4a5e5eac6ede4af7504cc07e0ada7bc9f4920";
4043 };
4044 }
4045
4046 {
4047 name = "invert_kv___invert_kv_1.0.0.tgz";
4048 path = fetchurl {
4049 name = "invert_kv___invert_kv_1.0.0.tgz";
4050 url = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz";
4051 sha1 = "104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6";
4052 };
4053 }
4054
4055 {
4056 name = "is_absolute___is_absolute_1.0.0.tgz";
4057 path = fetchurl {
4058 name = "is_absolute___is_absolute_1.0.0.tgz";
4059 url = "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz";
4060 sha1 = "395e1ae84b11f26ad1795e73c17378e48a301576";
4061 };
4062 }
4063
4064 {
4065 name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
4066 path = fetchurl {
4067 name = "is_accessor_descriptor___is_accessor_descriptor_0.1.6.tgz";
4068 url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz";
4069 sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6";
4070 };
4071 }
4072
4073 {
4074 name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
4075 path = fetchurl {
4076 name = "is_accessor_descriptor___is_accessor_descriptor_1.0.0.tgz";
4077 url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz";
4078 sha1 = "169c2f6d3df1f992618072365c9b0ea1f6878656";
4079 };
4080 }
4081
4082 {
4083 name = "is_arrayish___is_arrayish_0.2.1.tgz";
4084 path = fetchurl {
4085 name = "is_arrayish___is_arrayish_0.2.1.tgz";
4086 url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz";
4087 sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
4088 };
4089 }
4090
4091 {
4092 name = "is_binary_path___is_binary_path_1.0.1.tgz";
4093 path = fetchurl {
4094 name = "is_binary_path___is_binary_path_1.0.1.tgz";
4095 url = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz";
4096 sha1 = "75f16642b480f187a711c814161fd3a4a7655898";
4097 };
4098 }
4099
4100 {
4101 name = "is_buffer___is_buffer_1.1.6.tgz";
4102 path = fetchurl {
4103 name = "is_buffer___is_buffer_1.1.6.tgz";
4104 url = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz";
4105 sha1 = "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be";
4106 };
4107 }
4108
4109 {
4110 name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
4111 path = fetchurl {
4112 name = "is_data_descriptor___is_data_descriptor_0.1.4.tgz";
4113 url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz";
4114 sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56";
4115 };
4116 }
4117
4118 {
4119 name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
4120 path = fetchurl {
4121 name = "is_data_descriptor___is_data_descriptor_1.0.0.tgz";
4122 url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz";
4123 sha1 = "d84876321d0e7add03990406abbbbd36ba9268c7";
4124 };
4125 }
4126
4127 {
4128 name = "is_descriptor___is_descriptor_0.1.6.tgz";
4129 path = fetchurl {
4130 name = "is_descriptor___is_descriptor_0.1.6.tgz";
4131 url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz";
4132 sha1 = "366d8240dde487ca51823b1ab9f07a10a78251ca";
4133 };
4134 }
4135
4136 {
4137 name = "is_descriptor___is_descriptor_1.0.2.tgz";
4138 path = fetchurl {
4139 name = "is_descriptor___is_descriptor_1.0.2.tgz";
4140 url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz";
4141 sha1 = "3b159746a66604b04f8c81524ba365c5f14d86ec";
4142 };
4143 }
4144
4145 {
4146 name = "is_dotfile___is_dotfile_1.0.3.tgz";
4147 path = fetchurl {
4148 name = "is_dotfile___is_dotfile_1.0.3.tgz";
4149 url = "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz";
4150 sha1 = "a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1";
4151 };
4152 }
4153
4154 {
4155 name = "is_equal_shallow___is_equal_shallow_0.1.3.tgz";
4156 path = fetchurl {
4157 name = "is_equal_shallow___is_equal_shallow_0.1.3.tgz";
4158 url = "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz";
4159 sha1 = "2238098fc221de0bcfa5d9eac4c45d638aa1c534";
4160 };
4161 }
4162
4163 {
4164 name = "is_expression___is_expression_3.0.0.tgz";
4165 path = fetchurl {
4166 name = "is_expression___is_expression_3.0.0.tgz";
4167 url = "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz";
4168 sha1 = "39acaa6be7fd1f3471dc42c7416e61c24317ac9f";
4169 };
4170 }
4171
4172 {
4173 name = "is_extendable___is_extendable_0.1.1.tgz";
4174 path = fetchurl {
4175 name = "is_extendable___is_extendable_0.1.1.tgz";
4176 url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz";
4177 sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
4178 };
4179 }
4180
4181 {
4182 name = "is_extendable___is_extendable_1.0.1.tgz";
4183 path = fetchurl {
4184 name = "is_extendable___is_extendable_1.0.1.tgz";
4185 url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz";
4186 sha1 = "a7470f9e426733d81bd81e1155264e3a3507cab4";
4187 };
4188 }
4189
4190 {
4191 name = "is_extglob___is_extglob_1.0.0.tgz";
4192 path = fetchurl {
4193 name = "is_extglob___is_extglob_1.0.0.tgz";
4194 url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz";
4195 sha1 = "ac468177c4943405a092fc8f29760c6ffc6206c0";
4196 };
4197 }
4198
4199 {
4200 name = "is_extglob___is_extglob_2.1.1.tgz";
4201 path = fetchurl {
4202 name = "is_extglob___is_extglob_2.1.1.tgz";
4203 url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz";
4204 sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
4205 };
4206 }
4207
4208 {
4209 name = "is_finite___is_finite_1.1.0.tgz";
4210 path = fetchurl {
4211 name = "is_finite___is_finite_1.1.0.tgz";
4212 url = "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz";
4213 sha1 = "904135c77fb42c0641d6aa1bcdbc4daa8da082f3";
4214 };
4215 }
4216
4217 {
4218 name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
4219 path = fetchurl {
4220 name = "is_fullwidth_code_point___is_fullwidth_code_point_1.0.0.tgz";
4221 url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
4222 sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
4223 };
4224 }
4225
4226 {
4227 name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
4228 path = fetchurl {
4229 name = "is_fullwidth_code_point___is_fullwidth_code_point_2.0.0.tgz";
4230 url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
4231 sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
4232 };
4233 }
4234
4235 {
4236 name = "is_glob___is_glob_2.0.1.tgz";
4237 path = fetchurl {
4238 name = "is_glob___is_glob_2.0.1.tgz";
4239 url = "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz";
4240 sha1 = "d096f926a3ded5600f3fdfd91198cb0888c2d863";
4241 };
4242 }
4243
4244 {
4245 name = "is_glob___is_glob_3.1.0.tgz";
4246 path = fetchurl {
4247 name = "is_glob___is_glob_3.1.0.tgz";
4248 url = "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz";
4249 sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
4250 };
4251 }
4252
4253 {
4254 name = "is_npm___is_npm_1.0.0.tgz";
4255 path = fetchurl {
4256 name = "is_npm___is_npm_1.0.0.tgz";
4257 url = "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz";
4258 sha1 = "f2fb63a65e4905b406c86072765a1a4dc793b9f4";
4259 };
4260 }
4261
4262 {
4263 name = "is_number___is_number_0.1.1.tgz";
4264 path = fetchurl {
4265 name = "is_number___is_number_0.1.1.tgz";
4266 url = "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz";
4267 sha1 = "69a7af116963d47206ec9bd9b48a14216f1e3806";
4268 };
4269 }
4270
4271 {
4272 name = "is_number___is_number_2.1.0.tgz";
4273 path = fetchurl {
4274 name = "is_number___is_number_2.1.0.tgz";
4275 url = "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz";
4276 sha1 = "01fcbbb393463a548f2f466cce16dece49db908f";
4277 };
4278 }
4279
4280 {
4281 name = "is_number___is_number_3.0.0.tgz";
4282 path = fetchurl {
4283 name = "is_number___is_number_3.0.0.tgz";
4284 url = "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz";
4285 sha1 = "24fd6201a4782cf50561c810276afc7d12d71195";
4286 };
4287 }
4288
4289 {
4290 name = "is_number___is_number_4.0.0.tgz";
4291 path = fetchurl {
4292 name = "is_number___is_number_4.0.0.tgz";
4293 url = "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz";
4294 sha1 = "0026e37f5454d73e356dfe6564699867c6a7f0ff";
4295 };
4296 }
4297
4298 {
4299 name = "is_plain_object___is_plain_object_2.0.4.tgz";
4300 path = fetchurl {
4301 name = "is_plain_object___is_plain_object_2.0.4.tgz";
4302 url = "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz";
4303 sha1 = "2c163b3fafb1b606d9d17928f05c2a1c38e07677";
4304 };
4305 }
4306
4307 {
4308 name = "is_posix_bracket___is_posix_bracket_0.1.1.tgz";
4309 path = fetchurl {
4310 name = "is_posix_bracket___is_posix_bracket_0.1.1.tgz";
4311 url = "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz";
4312 sha1 = "3334dc79774368e92f016e6fbc0a88f5cd6e6bc4";
4313 };
4314 }
4315
4316 {
4317 name = "is_primitive___is_primitive_2.0.0.tgz";
4318 path = fetchurl {
4319 name = "is_primitive___is_primitive_2.0.0.tgz";
4320 url = "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz";
4321 sha1 = "207bab91638499c07b2adf240a41a87210034575";
4322 };
4323 }
4324
4325 {
4326 name = "is_promise___is_promise_2.1.0.tgz";
4327 path = fetchurl {
4328 name = "is_promise___is_promise_2.1.0.tgz";
4329 url = "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz";
4330 sha1 = "79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa";
4331 };
4332 }
4333
4334 {
4335 name = "is_redirect___is_redirect_1.0.0.tgz";
4336 path = fetchurl {
4337 name = "is_redirect___is_redirect_1.0.0.tgz";
4338 url = "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz";
4339 sha1 = "1d03dded53bd8db0f30c26e4f95d36fc7c87dc24";
4340 };
4341 }
4342
4343 {
4344 name = "is_regex___is_regex_1.0.5.tgz";
4345 path = fetchurl {
4346 name = "is_regex___is_regex_1.0.5.tgz";
4347 url = "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz";
4348 sha1 = "39d589a358bf18967f726967120b8fc1aed74eae";
4349 };
4350 }
4351
4352 {
4353 name = "is_relative___is_relative_1.0.0.tgz";
4354 path = fetchurl {
4355 name = "is_relative___is_relative_1.0.0.tgz";
4356 url = "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz";
4357 sha1 = "a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d";
4358 };
4359 }
4360
4361 {
4362 name = "is_root___is_root_0.1.0.tgz";
4363 path = fetchurl {
4364 name = "is_root___is_root_0.1.0.tgz";
4365 url = "https://registry.yarnpkg.com/is-root/-/is-root-0.1.0.tgz";
4366 sha1 = "825e394ab593df2d73c5d0092fce507270b53dcb";
4367 };
4368 }
4369
4370 {
4371 name = "is_stream___is_stream_1.1.0.tgz";
4372 path = fetchurl {
4373 name = "is_stream___is_stream_1.1.0.tgz";
4374 url = "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz";
4375 sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
4376 };
4377 }
4378
4379 {
4380 name = "is_typedarray___is_typedarray_1.0.0.tgz";
4381 path = fetchurl {
4382 name = "is_typedarray___is_typedarray_1.0.0.tgz";
4383 url = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz";
4384 sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
4385 };
4386 }
4387
4388 {
4389 name = "is_unc_path___is_unc_path_1.0.0.tgz";
4390 path = fetchurl {
4391 name = "is_unc_path___is_unc_path_1.0.0.tgz";
4392 url = "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz";
4393 sha1 = "d731e8898ed090a12c352ad2eaed5095ad322c9d";
4394 };
4395 }
4396
4397 {
4398 name = "is_utf8___is_utf8_0.2.1.tgz";
4399 path = fetchurl {
4400 name = "is_utf8___is_utf8_0.2.1.tgz";
4401 url = "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz";
4402 sha1 = "4b0da1442104d1b336340e80797e865cf39f7d72";
4403 };
4404 }
4405
4406 {
4407 name = "is_windows___is_windows_1.0.2.tgz";
4408 path = fetchurl {
4409 name = "is_windows___is_windows_1.0.2.tgz";
4410 url = "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz";
4411 sha1 = "d1850eb9791ecd18e6182ce12a30f396634bb19d";
4412 };
4413 }
4414
4415 {
4416 name = "is___is_3.3.0.tgz";
4417 path = fetchurl {
4418 name = "is___is_3.3.0.tgz";
4419 url = "https://registry.yarnpkg.com/is/-/is-3.3.0.tgz";
4420 sha1 = "61cff6dd3c4193db94a3d62582072b44e5645d79";
4421 };
4422 }
4423
4424 {
4425 name = "isarray___isarray_0.0.1.tgz";
4426 path = fetchurl {
4427 name = "isarray___isarray_0.0.1.tgz";
4428 url = "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz";
4429 sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
4430 };
4431 }
4432
4433 {
4434 name = "isarray___isarray_1.0.0.tgz";
4435 path = fetchurl {
4436 name = "isarray___isarray_1.0.0.tgz";
4437 url = "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz";
4438 sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
4439 };
4440 }
4441
4442 {
4443 name = "isbinaryfile___isbinaryfile_3.0.3.tgz";
4444 path = fetchurl {
4445 name = "isbinaryfile___isbinaryfile_3.0.3.tgz";
4446 url = "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz";
4447 sha1 = "5d6def3edebf6e8ca8cae9c30183a804b5f8be80";
4448 };
4449 }
4450
4451 {
4452 name = "isexe___isexe_2.0.0.tgz";
4453 path = fetchurl {
4454 name = "isexe___isexe_2.0.0.tgz";
4455 url = "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz";
4456 sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
4457 };
4458 }
4459
4460 {
4461 name = "isobject___isobject_2.1.0.tgz";
4462 path = fetchurl {
4463 name = "isobject___isobject_2.1.0.tgz";
4464 url = "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz";
4465 sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89";
4466 };
4467 }
4468
4469 {
4470 name = "isobject___isobject_3.0.1.tgz";
4471 path = fetchurl {
4472 name = "isobject___isobject_3.0.1.tgz";
4473 url = "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz";
4474 sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
4475 };
4476 }
4477
4478 {
4479 name = "isstream___isstream_0.1.2.tgz";
4480 path = fetchurl {
4481 name = "isstream___isstream_0.1.2.tgz";
4482 url = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz";
4483 sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
4484 };
4485 }
4486
4487 {
4488 name = "istanbul___istanbul_0.4.5.tgz";
4489 path = fetchurl {
4490 name = "istanbul___istanbul_0.4.5.tgz";
4491 url = "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz";
4492 sha1 = "65c7d73d4c4da84d4f3ac310b918fb0b8033733b";
4493 };
4494 }
4495
4496 {
4497 name = "istextorbinary___istextorbinary_1.0.2.tgz";
4498 path = fetchurl {
4499 name = "istextorbinary___istextorbinary_1.0.2.tgz";
4500 url = "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-1.0.2.tgz";
4501 sha1 = "ace19354d1a9a0173efeb1084ce0f87b0ad7decf";
4502 };
4503 }
4504
4505 {
4506 name = "jasmine_core___jasmine_core_2.99.1.tgz";
4507 path = fetchurl {
4508 name = "jasmine_core___jasmine_core_2.99.1.tgz";
4509 url = "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.99.1.tgz";
4510 sha1 = "e6400df1e6b56e130b61c4bcd093daa7f6e8ca15";
4511 };
4512 }
4513
4514 {
4515 name = "js_base64___js_base64_2.5.2.tgz";
4516 path = fetchurl {
4517 name = "js_base64___js_base64_2.5.2.tgz";
4518 url = "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz";
4519 sha1 = "313b6274dda718f714d00b3330bbae6e38e90209";
4520 };
4521 }
4522
4523 {
4524 name = "js_string_escape___js_string_escape_1.0.1.tgz";
4525 path = fetchurl {
4526 name = "js_string_escape___js_string_escape_1.0.1.tgz";
4527 url = "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz";
4528 sha1 = "e2625badbc0d67c7533e9edc1068c587ae4137ef";
4529 };
4530 }
4531
4532 {
4533 name = "js_stringify___js_stringify_1.0.2.tgz";
4534 path = fetchurl {
4535 name = "js_stringify___js_stringify_1.0.2.tgz";
4536 url = "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz";
4537 sha1 = "1736fddfd9724f28a3682adc6230ae7e4e9679db";
4538 };
4539 }
4540
4541 {
4542 name = "js_yaml___js_yaml_3.13.1.tgz";
4543 path = fetchurl {
4544 name = "js_yaml___js_yaml_3.13.1.tgz";
4545 url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz";
4546 sha1 = "aff151b30bfdfa8e49e05da22e7415e9dfa37847";
4547 };
4548 }
4549
4550 {
4551 name = "js_yaml___js_yaml_3.0.2.tgz";
4552 path = fetchurl {
4553 name = "js_yaml___js_yaml_3.0.2.tgz";
4554 url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.0.2.tgz";
4555 sha1 = "9937865f8e897a5e894e73c2c5cf2e89b32eb771";
4556 };
4557 }
4558
4559 {
4560 name = "jsbn___jsbn_0.1.1.tgz";
4561 path = fetchurl {
4562 name = "jsbn___jsbn_0.1.1.tgz";
4563 url = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz";
4564 sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
4565 };
4566 }
4567
4568 {
4569 name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
4570 path = fetchurl {
4571 name = "json_schema_traverse___json_schema_traverse_0.4.1.tgz";
4572 url = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
4573 sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
4574 };
4575 }
4576
4577 {
4578 name = "json_schema___json_schema_0.2.3.tgz";
4579 path = fetchurl {
4580 name = "json_schema___json_schema_0.2.3.tgz";
4581 url = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz";
4582 sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
4583 };
4584 }
4585
4586 {
4587 name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
4588 path = fetchurl {
4589 name = "json_stringify_safe___json_stringify_safe_5.0.1.tgz";
4590 url = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
4591 sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
4592 };
4593 }
4594
4595 {
4596 name = "json3___json3_3.3.2.tgz";
4597 path = fetchurl {
4598 name = "json3___json3_3.3.2.tgz";
4599 url = "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz";
4600 sha1 = "3c0434743df93e2f5c42aee7b19bcb483575f4e1";
4601 };
4602 }
4603
4604 {
4605 name = "jsonify___jsonify_0.0.0.tgz";
4606 path = fetchurl {
4607 name = "jsonify___jsonify_0.0.0.tgz";
4608 url = "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz";
4609 sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
4610 };
4611 }
4612
4613 {
4614 name = "jsonparse___jsonparse_0.0.5.tgz";
4615 path = fetchurl {
4616 name = "jsonparse___jsonparse_0.0.5.tgz";
4617 url = "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz";
4618 sha1 = "330542ad3f0a654665b778f3eb2d9a9fa507ac64";
4619 };
4620 }
4621
4622 {
4623 name = "jsprim___jsprim_1.4.1.tgz";
4624 path = fetchurl {
4625 name = "jsprim___jsprim_1.4.1.tgz";
4626 url = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz";
4627 sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
4628 };
4629 }
4630
4631 {
4632 name = "jstransformer___jstransformer_1.0.0.tgz";
4633 path = fetchurl {
4634 name = "jstransformer___jstransformer_1.0.0.tgz";
4635 url = "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz";
4636 sha1 = "ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3";
4637 };
4638 }
4639
4640 {
4641 name = "junk___junk_0.3.0.tgz";
4642 path = fetchurl {
4643 name = "junk___junk_0.3.0.tgz";
4644 url = "https://registry.yarnpkg.com/junk/-/junk-0.3.0.tgz";
4645 sha1 = "6c89c636f6e99898d8efbfc50430db40be71e10c";
4646 };
4647 }
4648
4649 {
4650 name = "karma_chrome_launcher___karma_chrome_launcher_2.1.1.tgz";
4651 path = fetchurl {
4652 name = "karma_chrome_launcher___karma_chrome_launcher_2.1.1.tgz";
4653 url = "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.1.1.tgz";
4654 sha1 = "216879c68ac04d8d5140e99619ba04b59afd46cf";
4655 };
4656 }
4657
4658 {
4659 name = "karma_coffee_preprocessor___karma_coffee_preprocessor_0.3.0.tgz";
4660 path = fetchurl {
4661 name = "karma_coffee_preprocessor___karma_coffee_preprocessor_0.3.0.tgz";
4662 url = "https://registry.yarnpkg.com/karma-coffee-preprocessor/-/karma-coffee-preprocessor-0.3.0.tgz";
4663 sha1 = "a4d8dc2b145bfef458a203d308b63bc03c9b4259";
4664 };
4665 }
4666
4667 {
4668 name = "karma_coverage___karma_coverage_0.5.5.tgz";
4669 path = fetchurl {
4670 name = "karma_coverage___karma_coverage_0.5.5.tgz";
4671 url = "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-0.5.5.tgz";
4672 sha1 = "b0d58b1025d59d5c6620263186f1d58f5d5348c5";
4673 };
4674 }
4675
4676 {
4677 name = "karma_jasmine___karma_jasmine_0.3.8.tgz";
4678 path = fetchurl {
4679 name = "karma_jasmine___karma_jasmine_0.3.8.tgz";
4680 url = "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-0.3.8.tgz";
4681 sha1 = "5b6457791ad9b89aa173f079e3ebe1b8c805236c";
4682 };
4683 }
4684
4685 {
4686 name = "karma_sourcemap_loader___karma_sourcemap_loader_0.3.7.tgz";
4687 path = fetchurl {
4688 name = "karma_sourcemap_loader___karma_sourcemap_loader_0.3.7.tgz";
4689 url = "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz";
4690 sha1 = "91322c77f8f13d46fed062b042e1009d4c4505d8";
4691 };
4692 }
4693
4694 {
4695 name = "karma___karma_0.13.22.tgz";
4696 path = fetchurl {
4697 name = "karma___karma_0.13.22.tgz";
4698 url = "https://registry.yarnpkg.com/karma/-/karma-0.13.22.tgz";
4699 sha1 = "07750b1bd063d7e7e7b91bcd2e6354d8f2aa8744";
4700 };
4701 }
4702
4703 {
4704 name = "kind_of___kind_of_3.2.2.tgz";
4705 path = fetchurl {
4706 name = "kind_of___kind_of_3.2.2.tgz";
4707 url = "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz";
4708 sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
4709 };
4710 }
4711
4712 {
4713 name = "kind_of___kind_of_4.0.0.tgz";
4714 path = fetchurl {
4715 name = "kind_of___kind_of_4.0.0.tgz";
4716 url = "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz";
4717 sha1 = "20813df3d712928b207378691a45066fae72dd57";
4718 };
4719 }
4720
4721 {
4722 name = "kind_of___kind_of_5.1.0.tgz";
4723 path = fetchurl {
4724 name = "kind_of___kind_of_5.1.0.tgz";
4725 url = "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz";
4726 sha1 = "729c91e2d857b7a419a1f9aa65685c4c33f5845d";
4727 };
4728 }
4729
4730 {
4731 name = "kind_of___kind_of_6.0.3.tgz";
4732 path = fetchurl {
4733 name = "kind_of___kind_of_6.0.3.tgz";
4734 url = "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz";
4735 sha1 = "07c05034a6c349fa06e24fa35aa76db4580ce4dd";
4736 };
4737 }
4738
4739 {
4740 name = "latest_version___latest_version_1.0.1.tgz";
4741 path = fetchurl {
4742 name = "latest_version___latest_version_1.0.1.tgz";
4743 url = "https://registry.yarnpkg.com/latest-version/-/latest-version-1.0.1.tgz";
4744 sha1 = "72cfc46e3e8d1be651e1ebb54ea9f6ea96f374bb";
4745 };
4746 }
4747
4748 {
4749 name = "lazy_cache___lazy_cache_1.0.4.tgz";
4750 path = fetchurl {
4751 name = "lazy_cache___lazy_cache_1.0.4.tgz";
4752 url = "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz";
4753 sha1 = "a1d78fc3a50474cb80845d3b3b6e1da49a446e8e";
4754 };
4755 }
4756
4757 {
4758 name = "lazypipe___lazypipe_1.0.2.tgz";
4759 path = fetchurl {
4760 name = "lazypipe___lazypipe_1.0.2.tgz";
4761 url = "https://registry.yarnpkg.com/lazypipe/-/lazypipe-1.0.2.tgz";
4762 sha1 = "b66f64ed7fd8b04869f1f1bcb795dbbaa80e418c";
4763 };
4764 }
4765
4766 {
4767 name = "lcid___lcid_1.0.0.tgz";
4768 path = fetchurl {
4769 name = "lcid___lcid_1.0.0.tgz";
4770 url = "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz";
4771 sha1 = "308accafa0bc483a3867b4b6f2b9506251d1b835";
4772 };
4773 }
4774
4775 {
4776 name = "less___less_1.7.5.tgz";
4777 path = fetchurl {
4778 name = "less___less_1.7.5.tgz";
4779 url = "https://registry.yarnpkg.com/less/-/less-1.7.5.tgz";
4780 sha1 = "4f220cf7288a27eaca739df6e4808a2d4c0d5756";
4781 };
4782 }
4783
4784 {
4785 name = "levn___levn_0.3.0.tgz";
4786 path = fetchurl {
4787 name = "levn___levn_0.3.0.tgz";
4788 url = "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz";
4789 sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
4790 };
4791 }
4792
4793 {
4794 name = "lexical_scope___lexical_scope_1.1.1.tgz";
4795 path = fetchurl {
4796 name = "lexical_scope___lexical_scope_1.1.1.tgz";
4797 url = "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.1.1.tgz";
4798 sha1 = "debac1067435f1359d90fcfd9e94bcb2ee47b2bf";
4799 };
4800 }
4801
4802 {
4803 name = "liftoff___liftoff_2.5.0.tgz";
4804 path = fetchurl {
4805 name = "liftoff___liftoff_2.5.0.tgz";
4806 url = "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz";
4807 sha1 = "2009291bb31cea861bbf10a7c15a28caf75c31ec";
4808 };
4809 }
4810
4811 {
4812 name = "livereload_js___livereload_js_2.4.0.tgz";
4813 path = fetchurl {
4814 name = "livereload_js___livereload_js_2.4.0.tgz";
4815 url = "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz";
4816 sha1 = "447c31cf1ea9ab52fc20db615c5ddf678f78009c";
4817 };
4818 }
4819
4820 {
4821 name = "load_json_file___load_json_file_1.1.0.tgz";
4822 path = fetchurl {
4823 name = "load_json_file___load_json_file_1.1.0.tgz";
4824 url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz";
4825 sha1 = "956905708d58b4bab4c2261b04f59f31c99374c0";
4826 };
4827 }
4828
4829 {
4830 name = "lockfile___lockfile_0.4.3.tgz";
4831 path = fetchurl {
4832 name = "lockfile___lockfile_0.4.3.tgz";
4833 url = "https://registry.yarnpkg.com/lockfile/-/lockfile-0.4.3.tgz";
4834 sha1 = "79b965ee9b32d9dd24b59cf81205e6dcb6d3b224";
4835 };
4836 }
4837
4838 {
4839 name = "lodash._baseassign___lodash._baseassign_3.2.0.tgz";
4840 path = fetchurl {
4841 name = "lodash._baseassign___lodash._baseassign_3.2.0.tgz";
4842 url = "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz";
4843 sha1 = "8c38a099500f215ad09e59f1722fd0c52bfe0a4e";
4844 };
4845 }
4846
4847 {
4848 name = "lodash._basecopy___lodash._basecopy_3.0.1.tgz";
4849 path = fetchurl {
4850 name = "lodash._basecopy___lodash._basecopy_3.0.1.tgz";
4851 url = "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz";
4852 sha1 = "8da0e6a876cf344c0ad8a54882111dd3c5c7ca36";
4853 };
4854 }
4855
4856 {
4857 name = "lodash._basetostring___lodash._basetostring_3.0.1.tgz";
4858 path = fetchurl {
4859 name = "lodash._basetostring___lodash._basetostring_3.0.1.tgz";
4860 url = "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz";
4861 sha1 = "d1861d877f824a52f669832dcaf3ee15566a07d5";
4862 };
4863 }
4864
4865 {
4866 name = "lodash._basevalues___lodash._basevalues_3.0.0.tgz";
4867 path = fetchurl {
4868 name = "lodash._basevalues___lodash._basevalues_3.0.0.tgz";
4869 url = "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz";
4870 sha1 = "5b775762802bde3d3297503e26300820fdf661b7";
4871 };
4872 }
4873
4874 {
4875 name = "lodash._bindcallback___lodash._bindcallback_3.0.1.tgz";
4876 path = fetchurl {
4877 name = "lodash._bindcallback___lodash._bindcallback_3.0.1.tgz";
4878 url = "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz";
4879 sha1 = "e531c27644cf8b57a99e17ed95b35c748789392e";
4880 };
4881 }
4882
4883 {
4884 name = "lodash._createassigner___lodash._createassigner_3.1.1.tgz";
4885 path = fetchurl {
4886 name = "lodash._createassigner___lodash._createassigner_3.1.1.tgz";
4887 url = "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz";
4888 sha1 = "838a5bae2fdaca63ac22dee8e19fa4e6d6970b11";
4889 };
4890 }
4891
4892 {
4893 name = "lodash._escapehtmlchar___lodash._escapehtmlchar_2.4.1.tgz";
4894 path = fetchurl {
4895 name = "lodash._escapehtmlchar___lodash._escapehtmlchar_2.4.1.tgz";
4896 url = "https://registry.yarnpkg.com/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz";
4897 sha1 = "df67c3bb6b7e8e1e831ab48bfa0795b92afe899d";
4898 };
4899 }
4900
4901 {
4902 name = "lodash._escapestringchar___lodash._escapestringchar_2.4.1.tgz";
4903 path = fetchurl {
4904 name = "lodash._escapestringchar___lodash._escapestringchar_2.4.1.tgz";
4905 url = "https://registry.yarnpkg.com/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz";
4906 sha1 = "ecfe22618a2ade50bfeea43937e51df66f0edb72";
4907 };
4908 }
4909
4910 {
4911 name = "lodash._getnative___lodash._getnative_3.9.1.tgz";
4912 path = fetchurl {
4913 name = "lodash._getnative___lodash._getnative_3.9.1.tgz";
4914 url = "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz";
4915 sha1 = "570bc7dede46d61cdcde687d65d3eecbaa3aaff5";
4916 };
4917 }
4918
4919 {
4920 name = "lodash._htmlescapes___lodash._htmlescapes_2.4.1.tgz";
4921 path = fetchurl {
4922 name = "lodash._htmlescapes___lodash._htmlescapes_2.4.1.tgz";
4923 url = "https://registry.yarnpkg.com/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz";
4924 sha1 = "32d14bf0844b6de6f8b62a051b4f67c228b624cb";
4925 };
4926 }
4927
4928 {
4929 name = "lodash._isiterateecall___lodash._isiterateecall_3.0.9.tgz";
4930 path = fetchurl {
4931 name = "lodash._isiterateecall___lodash._isiterateecall_3.0.9.tgz";
4932 url = "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz";
4933 sha1 = "5203ad7ba425fae842460e696db9cf3e6aac057c";
4934 };
4935 }
4936
4937 {
4938 name = "lodash._isnative___lodash._isnative_2.4.1.tgz";
4939 path = fetchurl {
4940 name = "lodash._isnative___lodash._isnative_2.4.1.tgz";
4941 url = "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz";
4942 sha1 = "3ea6404b784a7be836c7b57580e1cdf79b14832c";
4943 };
4944 }
4945
4946 {
4947 name = "lodash._objecttypes___lodash._objecttypes_2.4.1.tgz";
4948 path = fetchurl {
4949 name = "lodash._objecttypes___lodash._objecttypes_2.4.1.tgz";
4950 url = "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz";
4951 sha1 = "7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11";
4952 };
4953 }
4954
4955 {
4956 name = "lodash._reescape___lodash._reescape_3.0.0.tgz";
4957 path = fetchurl {
4958 name = "lodash._reescape___lodash._reescape_3.0.0.tgz";
4959 url = "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz";
4960 sha1 = "2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a";
4961 };
4962 }
4963
4964 {
4965 name = "lodash._reevaluate___lodash._reevaluate_3.0.0.tgz";
4966 path = fetchurl {
4967 name = "lodash._reevaluate___lodash._reevaluate_3.0.0.tgz";
4968 url = "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz";
4969 sha1 = "58bc74c40664953ae0b124d806996daca431e2ed";
4970 };
4971 }
4972
4973 {
4974 name = "lodash._reinterpolate___lodash._reinterpolate_2.4.1.tgz";
4975 path = fetchurl {
4976 name = "lodash._reinterpolate___lodash._reinterpolate_2.4.1.tgz";
4977 url = "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz";
4978 sha1 = "4f1227aa5a8711fc632f5b07a1f4607aab8b3222";
4979 };
4980 }
4981
4982 {
4983 name = "lodash._reinterpolate___lodash._reinterpolate_3.0.0.tgz";
4984 path = fetchurl {
4985 name = "lodash._reinterpolate___lodash._reinterpolate_3.0.0.tgz";
4986 url = "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz";
4987 sha1 = "0ccf2d89166af03b3663c796538b75ac6e114d9d";
4988 };
4989 }
4990
4991 {
4992 name = "lodash._reunescapedhtml___lodash._reunescapedhtml_2.4.1.tgz";
4993 path = fetchurl {
4994 name = "lodash._reunescapedhtml___lodash._reunescapedhtml_2.4.1.tgz";
4995 url = "https://registry.yarnpkg.com/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz";
4996 sha1 = "747c4fc40103eb3bb8a0976e571f7a2659e93ba7";
4997 };
4998 }
4999
5000 {
5001 name = "lodash._root___lodash._root_3.0.1.tgz";
5002 path = fetchurl {
5003 name = "lodash._root___lodash._root_3.0.1.tgz";
5004 url = "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz";
5005 sha1 = "fba1c4524c19ee9a5f8136b4609f017cf4ded692";
5006 };
5007 }
5008
5009 {
5010 name = "lodash._shimkeys___lodash._shimkeys_2.4.1.tgz";
5011 path = fetchurl {
5012 name = "lodash._shimkeys___lodash._shimkeys_2.4.1.tgz";
5013 url = "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz";
5014 sha1 = "6e9cc9666ff081f0b5a6c978b83e242e6949d203";
5015 };
5016 }
5017
5018 {
5019 name = "lodash.assign___lodash.assign_4.2.0.tgz";
5020 path = fetchurl {
5021 name = "lodash.assign___lodash.assign_4.2.0.tgz";
5022 url = "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz";
5023 sha1 = "0d99f3ccd7a6d261d19bdaeb9245005d285808e7";
5024 };
5025 }
5026
5027 {
5028 name = "lodash.assign___lodash.assign_3.2.0.tgz";
5029 path = fetchurl {
5030 name = "lodash.assign___lodash.assign_3.2.0.tgz";
5031 url = "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz";
5032 sha1 = "3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa";
5033 };
5034 }
5035
5036 {
5037 name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz";
5038 path = fetchurl {
5039 name = "lodash.clonedeep___lodash.clonedeep_4.5.0.tgz";
5040 url = "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz";
5041 sha1 = "e23f3f9c4f8fbdde872529c1071857a086e5ccef";
5042 };
5043 }
5044
5045 {
5046 name = "lodash.debounce___lodash.debounce_2.4.1.tgz";
5047 path = fetchurl {
5048 name = "lodash.debounce___lodash.debounce_2.4.1.tgz";
5049 url = "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-2.4.1.tgz";
5050 sha1 = "d8cead246ec4b926e8b85678fc396bfeba8cc6fc";
5051 };
5052 }
5053
5054 {
5055 name = "lodash.defaults___lodash.defaults_2.4.1.tgz";
5056 path = fetchurl {
5057 name = "lodash.defaults___lodash.defaults_2.4.1.tgz";
5058 url = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-2.4.1.tgz";
5059 sha1 = "a7e8885f05e68851144b6e12a8f3678026bc4c54";
5060 };
5061 }
5062
5063 {
5064 name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
5065 path = fetchurl {
5066 name = "lodash.defaults___lodash.defaults_4.2.0.tgz";
5067 url = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz";
5068 sha1 = "d09178716ffea4dde9e5fb7b37f6f0802274580c";
5069 };
5070 }
5071
5072 {
5073 name = "lodash.escape___lodash.escape_3.2.0.tgz";
5074 path = fetchurl {
5075 name = "lodash.escape___lodash.escape_3.2.0.tgz";
5076 url = "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz";
5077 sha1 = "995ee0dc18c1b48cc92effae71a10aab5b487698";
5078 };
5079 }
5080
5081 {
5082 name = "lodash.escape___lodash.escape_2.4.1.tgz";
5083 path = fetchurl {
5084 name = "lodash.escape___lodash.escape_2.4.1.tgz";
5085 url = "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-2.4.1.tgz";
5086 sha1 = "2ce12c5e084db0a57dda5e5d1eeeb9f5d175a3b4";
5087 };
5088 }
5089
5090 {
5091 name = "lodash.isarguments___lodash.isarguments_3.1.0.tgz";
5092 path = fetchurl {
5093 name = "lodash.isarguments___lodash.isarguments_3.1.0.tgz";
5094 url = "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz";
5095 sha1 = "2f573d85c6a24289ff00663b491c1d338ff3458a";
5096 };
5097 }
5098
5099 {
5100 name = "lodash.isarray___lodash.isarray_3.0.4.tgz";
5101 path = fetchurl {
5102 name = "lodash.isarray___lodash.isarray_3.0.4.tgz";
5103 url = "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz";
5104 sha1 = "79e4eb88c36a8122af86f844aa9bcd851b5fbb55";
5105 };
5106 }
5107
5108 {
5109 name = "lodash.isfunction___lodash.isfunction_2.4.1.tgz";
5110 path = fetchurl {
5111 name = "lodash.isfunction___lodash.isfunction_2.4.1.tgz";
5112 url = "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-2.4.1.tgz";
5113 sha1 = "2cfd575c73e498ab57e319b77fa02adef13a94d1";
5114 };
5115 }
5116
5117 {
5118 name = "lodash.isobject___lodash.isobject_2.4.1.tgz";
5119 path = fetchurl {
5120 name = "lodash.isobject___lodash.isobject_2.4.1.tgz";
5121 url = "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz";
5122 sha1 = "5a2e47fe69953f1ee631a7eba1fe64d2d06558f5";
5123 };
5124 }
5125
5126 {
5127 name = "lodash.keys___lodash.keys_3.1.2.tgz";
5128 path = fetchurl {
5129 name = "lodash.keys___lodash.keys_3.1.2.tgz";
5130 url = "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz";
5131 sha1 = "4dbc0472b156be50a0b286855d1bd0b0c656098a";
5132 };
5133 }
5134
5135 {
5136 name = "lodash.keys___lodash.keys_2.4.1.tgz";
5137 path = fetchurl {
5138 name = "lodash.keys___lodash.keys_2.4.1.tgz";
5139 url = "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz";
5140 sha1 = "48dea46df8ff7632b10d706b8acb26591e2b3727";
5141 };
5142 }
5143
5144 {
5145 name = "lodash.now___lodash.now_2.4.1.tgz";
5146 path = fetchurl {
5147 name = "lodash.now___lodash.now_2.4.1.tgz";
5148 url = "https://registry.yarnpkg.com/lodash.now/-/lodash.now-2.4.1.tgz";
5149 sha1 = "6872156500525185faf96785bb7fe7fe15b562c6";
5150 };
5151 }
5152
5153 {
5154 name = "lodash.restparam___lodash.restparam_3.6.1.tgz";
5155 path = fetchurl {
5156 name = "lodash.restparam___lodash.restparam_3.6.1.tgz";
5157 url = "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz";
5158 sha1 = "936a4e309ef330a7645ed4145986c85ae5b20805";
5159 };
5160 }
5161
5162 {
5163 name = "lodash.template___lodash.template_2.4.1.tgz";
5164 path = fetchurl {
5165 name = "lodash.template___lodash.template_2.4.1.tgz";
5166 url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-2.4.1.tgz";
5167 sha1 = "9e611007edf629129a974ab3c48b817b3e1cf20d";
5168 };
5169 }
5170
5171 {
5172 name = "lodash.template___lodash.template_3.6.2.tgz";
5173 path = fetchurl {
5174 name = "lodash.template___lodash.template_3.6.2.tgz";
5175 url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz";
5176 sha1 = "f8cdecc6169a255be9098ae8b0c53d378931d14f";
5177 };
5178 }
5179
5180 {
5181 name = "lodash.template___lodash.template_4.5.0.tgz";
5182 path = fetchurl {
5183 name = "lodash.template___lodash.template_4.5.0.tgz";
5184 url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz";
5185 sha1 = "f976195cf3f347d0d5f52483569fe8031ccce8ab";
5186 };
5187 }
5188
5189 {
5190 name = "lodash.templatesettings___lodash.templatesettings_3.1.1.tgz";
5191 path = fetchurl {
5192 name = "lodash.templatesettings___lodash.templatesettings_3.1.1.tgz";
5193 url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz";
5194 sha1 = "fb307844753b66b9f1afa54e262c745307dba8e5";
5195 };
5196 }
5197
5198 {
5199 name = "lodash.templatesettings___lodash.templatesettings_4.2.0.tgz";
5200 path = fetchurl {
5201 name = "lodash.templatesettings___lodash.templatesettings_4.2.0.tgz";
5202 url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz";
5203 sha1 = "e481310f049d3cf6d47e912ad09313b154f0fb33";
5204 };
5205 }
5206
5207 {
5208 name = "lodash.templatesettings___lodash.templatesettings_2.4.1.tgz";
5209 path = fetchurl {
5210 name = "lodash.templatesettings___lodash.templatesettings_2.4.1.tgz";
5211 url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz";
5212 sha1 = "ea76c75d11eb86d4dbe89a83893bb861929ac699";
5213 };
5214 }
5215
5216 {
5217 name = "lodash.values___lodash.values_2.4.1.tgz";
5218 path = fetchurl {
5219 name = "lodash.values___lodash.values_2.4.1.tgz";
5220 url = "https://registry.yarnpkg.com/lodash.values/-/lodash.values-2.4.1.tgz";
5221 sha1 = "abf514436b3cb705001627978cbcf30b1280eea4";
5222 };
5223 }
5224
5225 {
5226 name = "lodash___lodash_2.4.2.tgz";
5227 path = fetchurl {
5228 name = "lodash___lodash_2.4.2.tgz";
5229 url = "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz";
5230 sha1 = "fadd834b9683073da179b3eae6d9c0d15053f73e";
5231 };
5232 }
5233
5234 {
5235 name = "lodash___lodash_3.10.1.tgz";
5236 path = fetchurl {
5237 name = "lodash___lodash_3.10.1.tgz";
5238 url = "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz";
5239 sha1 = "5bf45e8e49ba4189e17d482789dfd15bd140b7b6";
5240 };
5241 }
5242
5243 {
5244 name = "lodash___lodash_4.17.15.tgz";
5245 path = fetchurl {
5246 name = "lodash___lodash_4.17.15.tgz";
5247 url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz";
5248 sha1 = "b447f6670a0455bbfeedd11392eff330ea097548";
5249 };
5250 }
5251
5252 {
5253 name = "lodash___lodash_1.0.2.tgz";
5254 path = fetchurl {
5255 name = "lodash___lodash_1.0.2.tgz";
5256 url = "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz";
5257 sha1 = "8f57560c83b59fc270bd3d561b690043430e2551";
5258 };
5259 }
5260
5261 {
5262 name = "log4js___log4js_0.6.38.tgz";
5263 path = fetchurl {
5264 name = "log4js___log4js_0.6.38.tgz";
5265 url = "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz";
5266 sha1 = "2c494116695d6fb25480943d3fc872e662a522fd";
5267 };
5268 }
5269
5270 {
5271 name = "longest___longest_1.0.1.tgz";
5272 path = fetchurl {
5273 name = "longest___longest_1.0.1.tgz";
5274 url = "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz";
5275 sha1 = "30a0b2da38f73770e8294a0d22e6625ed77d0097";
5276 };
5277 }
5278
5279 {
5280 name = "loophole___loophole_1.1.0.tgz";
5281 path = fetchurl {
5282 name = "loophole___loophole_1.1.0.tgz";
5283 url = "https://registry.yarnpkg.com/loophole/-/loophole-1.1.0.tgz";
5284 sha1 = "37949fea453b6256acc725c320ce0c5a7f70a2bd";
5285 };
5286 }
5287
5288 {
5289 name = "loud_rejection___loud_rejection_1.6.0.tgz";
5290 path = fetchurl {
5291 name = "loud_rejection___loud_rejection_1.6.0.tgz";
5292 url = "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz";
5293 sha1 = "5b46f80147edee578870f086d04821cf998e551f";
5294 };
5295 }
5296
5297 {
5298 name = "lowercase_keys___lowercase_keys_1.0.1.tgz";
5299 path = fetchurl {
5300 name = "lowercase_keys___lowercase_keys_1.0.1.tgz";
5301 url = "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz";
5302 sha1 = "6f9e30b47084d971a7c820ff15a6c5167b74c26f";
5303 };
5304 }
5305
5306 {
5307 name = "lru_cache___lru_cache_2.7.3.tgz";
5308 path = fetchurl {
5309 name = "lru_cache___lru_cache_2.7.3.tgz";
5310 url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz";
5311 sha1 = "6d4524e8b955f95d4f5b58851ce21dd72fb4e952";
5312 };
5313 }
5314
5315 {
5316 name = "lru_cache___lru_cache_4.1.5.tgz";
5317 path = fetchurl {
5318 name = "lru_cache___lru_cache_4.1.5.tgz";
5319 url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz";
5320 sha1 = "8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd";
5321 };
5322 }
5323
5324 {
5325 name = "lru_cache___lru_cache_2.3.1.tgz";
5326 path = fetchurl {
5327 name = "lru_cache___lru_cache_2.3.1.tgz";
5328 url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.3.1.tgz";
5329 sha1 = "b3adf6b3d856e954e2c390e6cef22081245a53d6";
5330 };
5331 }
5332
5333 {
5334 name = "lru_cache___lru_cache_2.5.2.tgz";
5335 path = fetchurl {
5336 name = "lru_cache___lru_cache_2.5.2.tgz";
5337 url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.5.2.tgz";
5338 sha1 = "1fddad938aae1263ce138680be1b3f591c0ab41c";
5339 };
5340 }
5341
5342 {
5343 name = "lru_queue___lru_queue_0.1.0.tgz";
5344 path = fetchurl {
5345 name = "lru_queue___lru_queue_0.1.0.tgz";
5346 url = "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz";
5347 sha1 = "2738bd9f0d3cf4f84490c5736c48699ac632cda3";
5348 };
5349 }
5350
5351 {
5352 name = "make_iterator___make_iterator_1.0.1.tgz";
5353 path = fetchurl {
5354 name = "make_iterator___make_iterator_1.0.1.tgz";
5355 url = "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz";
5356 sha1 = "29b33f312aa8f547c4a5e490f56afcec99133ad6";
5357 };
5358 }
5359
5360 {
5361 name = "map_cache___map_cache_0.2.2.tgz";
5362 path = fetchurl {
5363 name = "map_cache___map_cache_0.2.2.tgz";
5364 url = "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz";
5365 sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf";
5366 };
5367 }
5368
5369 {
5370 name = "map_obj___map_obj_1.0.1.tgz";
5371 path = fetchurl {
5372 name = "map_obj___map_obj_1.0.1.tgz";
5373 url = "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz";
5374 sha1 = "d933ceb9205d82bdcf4886f6742bdc2b4dea146d";
5375 };
5376 }
5377
5378 {
5379 name = "map_stream___map_stream_0.0.7.tgz";
5380 path = fetchurl {
5381 name = "map_stream___map_stream_0.0.7.tgz";
5382 url = "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz";
5383 sha1 = "8a1f07896d82b10926bd3744a2420009f88974a8";
5384 };
5385 }
5386
5387 {
5388 name = "map_stream___map_stream_0.1.0.tgz";
5389 path = fetchurl {
5390 name = "map_stream___map_stream_0.1.0.tgz";
5391 url = "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz";
5392 sha1 = "e56aa94c4c8055a16404a0674b78f215f7c8e194";
5393 };
5394 }
5395
5396 {
5397 name = "map_visit___map_visit_1.0.0.tgz";
5398 path = fetchurl {
5399 name = "map_visit___map_visit_1.0.0.tgz";
5400 url = "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz";
5401 sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
5402 };
5403 }
5404
5405 {
5406 name = "math_random___math_random_1.0.4.tgz";
5407 path = fetchurl {
5408 name = "math_random___math_random_1.0.4.tgz";
5409 url = "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz";
5410 sha1 = "5dd6943c938548267016d4e34f057583080c514c";
5411 };
5412 }
5413
5414 {
5415 name = "media_typer___media_typer_0.3.0.tgz";
5416 path = fetchurl {
5417 name = "media_typer___media_typer_0.3.0.tgz";
5418 url = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz";
5419 sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
5420 };
5421 }
5422
5423 {
5424 name = "memoizee___memoizee_0.2.6.tgz";
5425 path = fetchurl {
5426 name = "memoizee___memoizee_0.2.6.tgz";
5427 url = "https://registry.yarnpkg.com/memoizee/-/memoizee-0.2.6.tgz";
5428 sha1 = "bb45a7ad02530082f1612671dab35219cd2e0741";
5429 };
5430 }
5431
5432 {
5433 name = "memoizee___memoizee_0.3.10.tgz";
5434 path = fetchurl {
5435 name = "memoizee___memoizee_0.3.10.tgz";
5436 url = "https://registry.yarnpkg.com/memoizee/-/memoizee-0.3.10.tgz";
5437 sha1 = "4eca0d8aed39ec9d017f4c5c2f2f6432f42e5c8f";
5438 };
5439 }
5440
5441 {
5442 name = "meow___meow_3.7.0.tgz";
5443 path = fetchurl {
5444 name = "meow___meow_3.7.0.tgz";
5445 url = "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz";
5446 sha1 = "72cb668b425228290abbfa856892587308a801fb";
5447 };
5448 }
5449
5450 {
5451 name = "merge_stream___merge_stream_1.0.1.tgz";
5452 path = fetchurl {
5453 name = "merge_stream___merge_stream_1.0.1.tgz";
5454 url = "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz";
5455 sha1 = "4041202d508a342ba00174008df0c251b8c135e1";
5456 };
5457 }
5458
5459 {
5460 name = "merge___merge_1.2.1.tgz";
5461 path = fetchurl {
5462 name = "merge___merge_1.2.1.tgz";
5463 url = "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz";
5464 sha1 = "38bebf80c3220a8a487b6fcfb3941bb11720c145";
5465 };
5466 }
5467
5468 {
5469 name = "micromatch___micromatch_2.3.11.tgz";
5470 path = fetchurl {
5471 name = "micromatch___micromatch_2.3.11.tgz";
5472 url = "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz";
5473 sha1 = "86677c97d1720b363431d04d0d15293bd38c1565";
5474 };
5475 }
5476
5477 {
5478 name = "micromatch___micromatch_3.1.10.tgz";
5479 path = fetchurl {
5480 name = "micromatch___micromatch_3.1.10.tgz";
5481 url = "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz";
5482 sha1 = "70859bc95c9840952f359a068a3fc49f9ecfac23";
5483 };
5484 }
5485
5486 {
5487 name = "mime_db___mime_db_1.43.0.tgz";
5488 path = fetchurl {
5489 name = "mime_db___mime_db_1.43.0.tgz";
5490 url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz";
5491 sha1 = "0a12e0502650e473d735535050e7c8f4eb4fae58";
5492 };
5493 }
5494
5495 {
5496 name = "mime_db___mime_db_1.12.0.tgz";
5497 path = fetchurl {
5498 name = "mime_db___mime_db_1.12.0.tgz";
5499 url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.12.0.tgz";
5500 sha1 = "3d0c63180f458eb10d325aaa37d7c58ae312e9d7";
5501 };
5502 }
5503
5504 {
5505 name = "mime_types___mime_types_2.1.26.tgz";
5506 path = fetchurl {
5507 name = "mime_types___mime_types_2.1.26.tgz";
5508 url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz";
5509 sha1 = "9c921fc09b7e149a65dfdc0da4d20997200b0a06";
5510 };
5511 }
5512
5513 {
5514 name = "mime_types___mime_types_1.0.2.tgz";
5515 path = fetchurl {
5516 name = "mime_types___mime_types_1.0.2.tgz";
5517 url = "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz";
5518 sha1 = "995ae1392ab8affcbfcb2641dd054e943c0d5dce";
5519 };
5520 }
5521
5522 {
5523 name = "mime_types___mime_types_2.0.14.tgz";
5524 path = fetchurl {
5525 name = "mime_types___mime_types_2.0.14.tgz";
5526 url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.0.14.tgz";
5527 sha1 = "310e159db23e077f8bb22b748dabfa4957140aa6";
5528 };
5529 }
5530
5531 {
5532 name = "mime___mime_1.3.4.tgz";
5533 path = fetchurl {
5534 name = "mime___mime_1.3.4.tgz";
5535 url = "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz";
5536 sha1 = "115f9e3b6b3daf2959983cb38f149a2d40eb5d53";
5537 };
5538 }
5539
5540 {
5541 name = "mime___mime_1.6.0.tgz";
5542 path = fetchurl {
5543 name = "mime___mime_1.6.0.tgz";
5544 url = "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz";
5545 sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1";
5546 };
5547 }
5548
5549 {
5550 name = "mime___mime_1.2.11.tgz";
5551 path = fetchurl {
5552 name = "mime___mime_1.2.11.tgz";
5553 url = "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz";
5554 sha1 = "58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10";
5555 };
5556 }
5557
5558 {
5559 name = "mini_lr___mini_lr_0.1.9.tgz";
5560 path = fetchurl {
5561 name = "mini_lr___mini_lr_0.1.9.tgz";
5562 url = "https://registry.yarnpkg.com/mini-lr/-/mini-lr-0.1.9.tgz";
5563 sha1 = "02199d27347953d1fd1d6dbded4261f187b2d0f6";
5564 };
5565 }
5566
5567 {
5568 name = "minimatch___minimatch_0.3.0.tgz";
5569 path = fetchurl {
5570 name = "minimatch___minimatch_0.3.0.tgz";
5571 url = "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz";
5572 sha1 = "275d8edaac4f1bb3326472089e7949c8394699dd";
5573 };
5574 }
5575
5576 {
5577 name = "minimatch___minimatch_3.0.4.tgz";
5578 path = fetchurl {
5579 name = "minimatch___minimatch_3.0.4.tgz";
5580 url = "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz";
5581 sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
5582 };
5583 }
5584
5585 {
5586 name = "minimatch___minimatch_0.2.14.tgz";
5587 path = fetchurl {
5588 name = "minimatch___minimatch_0.2.14.tgz";
5589 url = "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz";
5590 sha1 = "c74e780574f63c6f9a090e90efbe6ef53a6a756a";
5591 };
5592 }
5593
5594 {
5595 name = "minimatch___minimatch_1.0.0.tgz";
5596 path = fetchurl {
5597 name = "minimatch___minimatch_1.0.0.tgz";
5598 url = "https://registry.yarnpkg.com/minimatch/-/minimatch-1.0.0.tgz";
5599 sha1 = "e0dd2120b49e1b724ce8d714c520822a9438576d";
5600 };
5601 }
5602
5603 {
5604 name = "minimatch___minimatch_2.0.10.tgz";
5605 path = fetchurl {
5606 name = "minimatch___minimatch_2.0.10.tgz";
5607 url = "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz";
5608 sha1 = "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7";
5609 };
5610 }
5611
5612 {
5613 name = "minimist___minimist_0.2.1.tgz";
5614 path = fetchurl {
5615 name = "minimist___minimist_0.2.1.tgz";
5616 url = "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz";
5617 sha1 = "827ba4e7593464e7c221e8c5bed930904ee2c455";
5618 };
5619 }
5620
5621 {
5622 name = "minimist___minimist_1.2.5.tgz";
5623 path = fetchurl {
5624 name = "minimist___minimist_1.2.5.tgz";
5625 url = "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz";
5626 sha1 = "67d66014b66a6a8aaa0c083c5fd58df4e4e97602";
5627 };
5628 }
5629
5630 {
5631 name = "minimist___minimist_0.0.10.tgz";
5632 path = fetchurl {
5633 name = "minimist___minimist_0.0.10.tgz";
5634 url = "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz";
5635 sha1 = "de3f98543dbf96082be48ad1a0c7cda836301dcf";
5636 };
5637 }
5638
5639 {
5640 name = "minipass___minipass_2.9.0.tgz";
5641 path = fetchurl {
5642 name = "minipass___minipass_2.9.0.tgz";
5643 url = "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz";
5644 sha1 = "e713762e7d3e32fed803115cf93e04bca9fcc9a6";
5645 };
5646 }
5647
5648 {
5649 name = "minizlib___minizlib_1.3.3.tgz";
5650 path = fetchurl {
5651 name = "minizlib___minizlib_1.3.3.tgz";
5652 url = "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz";
5653 sha1 = "2290de96818a34c29551c8a8d301216bd65a861d";
5654 };
5655 }
5656
5657 {
5658 name = "mixin_deep___mixin_deep_1.3.2.tgz";
5659 path = fetchurl {
5660 name = "mixin_deep___mixin_deep_1.3.2.tgz";
5661 url = "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz";
5662 sha1 = "1120b43dc359a785dce65b55b82e257ccf479566";
5663 };
5664 }
5665
5666 {
5667 name = "mkdirp___mkdirp_0.5.4.tgz";
5668 path = fetchurl {
5669 name = "mkdirp___mkdirp_0.5.4.tgz";
5670 url = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz";
5671 sha1 = "fd01504a6797ec5c9be81ff43d204961ed64a512";
5672 };
5673 }
5674
5675 {
5676 name = "mkdirp___mkdirp_0.3.5.tgz";
5677 path = fetchurl {
5678 name = "mkdirp___mkdirp_0.3.5.tgz";
5679 url = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz";
5680 sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7";
5681 };
5682 }
5683
5684 {
5685 name = "mkpath___mkpath_0.1.0.tgz";
5686 path = fetchurl {
5687 name = "mkpath___mkpath_0.1.0.tgz";
5688 url = "https://registry.yarnpkg.com/mkpath/-/mkpath-0.1.0.tgz";
5689 sha1 = "7554a6f8d871834cc97b5462b122c4c124d6de91";
5690 };
5691 }
5692
5693 {
5694 name = "module_deps___module_deps_2.0.6.tgz";
5695 path = fetchurl {
5696 name = "module_deps___module_deps_2.0.6.tgz";
5697 url = "https://registry.yarnpkg.com/module-deps/-/module-deps-2.0.6.tgz";
5698 sha1 = "b999321c73ac33580f00712c0f3075fdca42563f";
5699 };
5700 }
5701
5702 {
5703 name = "mout___mout_0.9.1.tgz";
5704 path = fetchurl {
5705 name = "mout___mout_0.9.1.tgz";
5706 url = "https://registry.yarnpkg.com/mout/-/mout-0.9.1.tgz";
5707 sha1 = "84f0f3fd6acc7317f63de2affdcc0cee009b0477";
5708 };
5709 }
5710
5711 {
5712 name = "ms___ms_0.7.1.tgz";
5713 path = fetchurl {
5714 name = "ms___ms_0.7.1.tgz";
5715 url = "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz";
5716 sha1 = "9cd13c03adbff25b65effde7ce864ee952017098";
5717 };
5718 }
5719
5720 {
5721 name = "ms___ms_0.7.2.tgz";
5722 path = fetchurl {
5723 name = "ms___ms_0.7.2.tgz";
5724 url = "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz";
5725 sha1 = "ae25cf2512b3885a1d95d7f037868d8431124765";
5726 };
5727 }
5728
5729 {
5730 name = "ms___ms_2.0.0.tgz";
5731 path = fetchurl {
5732 name = "ms___ms_2.0.0.tgz";
5733 url = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
5734 sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
5735 };
5736 }
5737
5738 {
5739 name = "ms___ms_2.1.2.tgz";
5740 path = fetchurl {
5741 name = "ms___ms_2.1.2.tgz";
5742 url = "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz";
5743 sha1 = "d09d1f357b443f493382a8eb3ccd183872ae6009";
5744 };
5745 }
5746
5747 {
5748 name = "multipipe___multipipe_0.1.2.tgz";
5749 path = fetchurl {
5750 name = "multipipe___multipipe_0.1.2.tgz";
5751 url = "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz";
5752 sha1 = "2a8f2ddf70eed564dff2d57f1e1a137d9f05078b";
5753 };
5754 }
5755
5756 {
5757 name = "mute_stream___mute_stream_0.0.4.tgz";
5758 path = fetchurl {
5759 name = "mute_stream___mute_stream_0.0.4.tgz";
5760 url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.4.tgz";
5761 sha1 = "a9219960a6d5d5d046597aee51252c6655f7177e";
5762 };
5763 }
5764
5765 {
5766 name = "mute_stream___mute_stream_0.0.8.tgz";
5767 path = fetchurl {
5768 name = "mute_stream___mute_stream_0.0.8.tgz";
5769 url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz";
5770 sha1 = "1630c42b2251ff81e2a283de96a5497ea92e5e0d";
5771 };
5772 }
5773
5774 {
5775 name = "nan___nan_2.14.0.tgz";
5776 path = fetchurl {
5777 name = "nan___nan_2.14.0.tgz";
5778 url = "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz";
5779 sha1 = "7818f722027b2459a86f0295d434d1fc2336c52c";
5780 };
5781 }
5782
5783 {
5784 name = "nanomatch___nanomatch_1.2.13.tgz";
5785 path = fetchurl {
5786 name = "nanomatch___nanomatch_1.2.13.tgz";
5787 url = "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz";
5788 sha1 = "b87a8aa4fc0de8fe6be88895b38983ff265bd119";
5789 };
5790 }
5791
5792 {
5793 name = "natives___natives_1.1.6.tgz";
5794 path = fetchurl {
5795 name = "natives___natives_1.1.6.tgz";
5796 url = "https://registry.yarnpkg.com/natives/-/natives-1.1.6.tgz";
5797 sha1 = "a603b4a498ab77173612b9ea1acdec4d980f00bb";
5798 };
5799 }
5800
5801 {
5802 name = "needle___needle_2.3.3.tgz";
5803 path = fetchurl {
5804 name = "needle___needle_2.3.3.tgz";
5805 url = "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz";
5806 sha1 = "a041ad1d04a871b0ebb666f40baaf1fb47867117";
5807 };
5808 }
5809
5810 {
5811 name = "negotiator___negotiator_0.6.1.tgz";
5812 path = fetchurl {
5813 name = "negotiator___negotiator_0.6.1.tgz";
5814 url = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz";
5815 sha1 = "2b327184e8992101177b28563fb5e7102acd0ca9";
5816 };
5817 }
5818
5819 {
5820 name = "neo_async___neo_async_2.6.1.tgz";
5821 path = fetchurl {
5822 name = "neo_async___neo_async_2.6.1.tgz";
5823 url = "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz";
5824 sha1 = "ac27ada66167fa8849a6addd837f6b189ad2081c";
5825 };
5826 }
5827
5828 {
5829 name = "nested_error_stacks___nested_error_stacks_1.0.2.tgz";
5830 path = fetchurl {
5831 name = "nested_error_stacks___nested_error_stacks_1.0.2.tgz";
5832 url = "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz";
5833 sha1 = "19f619591519f096769a5ba9a86e6eeec823c3cf";
5834 };
5835 }
5836
5837 {
5838 name = "next_tick___next_tick_0.1.0.tgz";
5839 path = fetchurl {
5840 name = "next_tick___next_tick_0.1.0.tgz";
5841 url = "https://registry.yarnpkg.com/next-tick/-/next-tick-0.1.0.tgz";
5842 sha1 = "1912cce8eb9b697d640fbba94f8f00dec3b94259";
5843 };
5844 }
5845
5846 {
5847 name = "next_tick___next_tick_1.1.0.tgz";
5848 path = fetchurl {
5849 name = "next_tick___next_tick_1.1.0.tgz";
5850 url = "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz";
5851 sha1 = "1836ee30ad56d67ef281b22bd199f709449b35eb";
5852 };
5853 }
5854
5855 {
5856 name = "next_tick___next_tick_0.2.2.tgz";
5857 path = fetchurl {
5858 name = "next_tick___next_tick_0.2.2.tgz";
5859 url = "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz";
5860 sha1 = "75da4a927ee5887e39065880065b7336413b310d";
5861 };
5862 }
5863
5864 {
5865 name = "next_tick___next_tick_1.0.0.tgz";
5866 path = fetchurl {
5867 name = "next_tick___next_tick_1.0.0.tgz";
5868 url = "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz";
5869 sha1 = "ca86d1fe8828169b0120208e3dc8424b9db8342c";
5870 };
5871 }
5872
5873 {
5874 name = "ng_annotate___ng_annotate_1.2.2.tgz";
5875 path = fetchurl {
5876 name = "ng_annotate___ng_annotate_1.2.2.tgz";
5877 url = "https://registry.yarnpkg.com/ng-annotate/-/ng-annotate-1.2.2.tgz";
5878 sha1 = "dc3fc51ba0b2f8b385dbe047f4da06f580a1fd61";
5879 };
5880 }
5881
5882 {
5883 name = "ng_classify___ng_classify_4.1.1.tgz";
5884 path = fetchurl {
5885 name = "ng_classify___ng_classify_4.1.1.tgz";
5886 url = "https://registry.yarnpkg.com/ng-classify/-/ng-classify-4.1.1.tgz";
5887 sha1 = "6688b924c3c9b5f94da5f8fbc0d55176f3dda122";
5888 };
5889 }
5890
5891 {
5892 name = "node_gyp___node_gyp_3.8.0.tgz";
5893 path = fetchurl {
5894 name = "node_gyp___node_gyp_3.8.0.tgz";
5895 url = "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz";
5896 sha1 = "540304261c330e80d0d5edce253a68cb3964218c";
5897 };
5898 }
5899
5900 {
5901 name = "node_pre_gyp___node_pre_gyp_0.14.0.tgz";
5902 path = fetchurl {
5903 name = "node_pre_gyp___node_pre_gyp_0.14.0.tgz";
5904 url = "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz";
5905 sha1 = "9a0596533b877289bcad4e143982ca3d904ddc83";
5906 };
5907 }
5908
5909 {
5910 name = "node_sass___node_sass_4.13.1.tgz";
5911 path = fetchurl {
5912 name = "node_sass___node_sass_4.13.1.tgz";
5913 url = "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz";
5914 sha1 = "9db5689696bb2eec2c32b98bfea4c7a2e992d0a3";
5915 };
5916 }
5917
5918 {
5919 name = "node_uuid___node_uuid_1.4.8.tgz";
5920 path = fetchurl {
5921 name = "node_uuid___node_uuid_1.4.8.tgz";
5922 url = "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz";
5923 sha1 = "b040eb0923968afabf8d32fb1f17f1167fdab907";
5924 };
5925 }
5926
5927 {
5928 name = "node.extend___node.extend_1.1.8.tgz";
5929 path = fetchurl {
5930 name = "node.extend___node.extend_1.1.8.tgz";
5931 url = "https://registry.yarnpkg.com/node.extend/-/node.extend-1.1.8.tgz";
5932 sha1 = "0aab3e63789f4e6d68b42bc00073ad1881243cf0";
5933 };
5934 }
5935
5936 {
5937 name = "nopt___nopt_3.0.6.tgz";
5938 path = fetchurl {
5939 name = "nopt___nopt_3.0.6.tgz";
5940 url = "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz";
5941 sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
5942 };
5943 }
5944
5945 {
5946 name = "nopt___nopt_4.0.3.tgz";
5947 path = fetchurl {
5948 name = "nopt___nopt_4.0.3.tgz";
5949 url = "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz";
5950 sha1 = "a375cad9d02fd921278d954c2254d5aa57e15e48";
5951 };
5952 }
5953
5954 {
5955 name = "nopt___nopt_1.0.10.tgz";
5956 path = fetchurl {
5957 name = "nopt___nopt_1.0.10.tgz";
5958 url = "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz";
5959 sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee";
5960 };
5961 }
5962
5963 {
5964 name = "nopt___nopt_2.2.1.tgz";
5965 path = fetchurl {
5966 name = "nopt___nopt_2.2.1.tgz";
5967 url = "https://registry.yarnpkg.com/nopt/-/nopt-2.2.1.tgz";
5968 sha1 = "2aa09b7d1768487b3b89a9c5aa52335bff0baea7";
5969 };
5970 }
5971
5972 {
5973 name = "normalize_package_data___normalize_package_data_2.5.0.tgz";
5974 path = fetchurl {
5975 name = "normalize_package_data___normalize_package_data_2.5.0.tgz";
5976 url = "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz";
5977 sha1 = "e66db1838b200c1dfc233225d12cb36520e234a8";
5978 };
5979 }
5980
5981 {
5982 name = "normalize_path___normalize_path_2.1.1.tgz";
5983 path = fetchurl {
5984 name = "normalize_path___normalize_path_2.1.1.tgz";
5985 url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz";
5986 sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
5987 };
5988 }
5989
5990 {
5991 name = "npm_bundled___npm_bundled_1.1.1.tgz";
5992 path = fetchurl {
5993 name = "npm_bundled___npm_bundled_1.1.1.tgz";
5994 url = "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz";
5995 sha1 = "1edd570865a94cdb1bc8220775e29466c9fb234b";
5996 };
5997 }
5998
5999 {
6000 name = "npm_normalize_package_bin___npm_normalize_package_bin_1.0.1.tgz";
6001 path = fetchurl {
6002 name = "npm_normalize_package_bin___npm_normalize_package_bin_1.0.1.tgz";
6003 url = "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz";
6004 sha1 = "6e79a41f23fd235c0623218228da7d9c23b8f6e2";
6005 };
6006 }
6007
6008 {
6009 name = "npm_packlist___npm_packlist_1.4.8.tgz";
6010 path = fetchurl {
6011 name = "npm_packlist___npm_packlist_1.4.8.tgz";
6012 url = "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz";
6013 sha1 = "56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e";
6014 };
6015 }
6016
6017 {
6018 name = "npmlog___npmlog_4.1.2.tgz";
6019 path = fetchurl {
6020 name = "npmlog___npmlog_4.1.2.tgz";
6021 url = "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz";
6022 sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b";
6023 };
6024 }
6025
6026 {
6027 name = "null_check___null_check_1.0.0.tgz";
6028 path = fetchurl {
6029 name = "null_check___null_check_1.0.0.tgz";
6030 url = "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz";
6031 sha1 = "977dffd7176012b9ec30d2a39db5cf72a0439edd";
6032 };
6033 }
6034
6035 {
6036 name = "number_is_nan___number_is_nan_1.0.1.tgz";
6037 path = fetchurl {
6038 name = "number_is_nan___number_is_nan_1.0.1.tgz";
6039 url = "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz";
6040 sha1 = "097b602b53422a522c1afb8790318336941a011d";
6041 };
6042 }
6043
6044 {
6045 name = "oauth_sign___oauth_sign_0.3.0.tgz";
6046 path = fetchurl {
6047 name = "oauth_sign___oauth_sign_0.3.0.tgz";
6048 url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.3.0.tgz";
6049 sha1 = "cb540f93bb2b22a7d5941691a288d60e8ea9386e";
6050 };
6051 }
6052
6053 {
6054 name = "oauth_sign___oauth_sign_0.5.0.tgz";
6055 path = fetchurl {
6056 name = "oauth_sign___oauth_sign_0.5.0.tgz";
6057 url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.5.0.tgz";
6058 sha1 = "d767f5169325620eab2e087ef0c472e773db6461";
6059 };
6060 }
6061
6062 {
6063 name = "oauth_sign___oauth_sign_0.9.0.tgz";
6064 path = fetchurl {
6065 name = "oauth_sign___oauth_sign_0.9.0.tgz";
6066 url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz";
6067 sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455";
6068 };
6069 }
6070
6071 {
6072 name = "object_assign___object_assign_4.1.1.tgz";
6073 path = fetchurl {
6074 name = "object_assign___object_assign_4.1.1.tgz";
6075 url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz";
6076 sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
6077 };
6078 }
6079
6080 {
6081 name = "object_assign___object_assign_4.1.0.tgz";
6082 path = fetchurl {
6083 name = "object_assign___object_assign_4.1.0.tgz";
6084 url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz";
6085 sha1 = "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0";
6086 };
6087 }
6088
6089 {
6090 name = "object_assign___object_assign_2.1.1.tgz";
6091 path = fetchurl {
6092 name = "object_assign___object_assign_2.1.1.tgz";
6093 url = "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz";
6094 sha1 = "43c36e5d569ff8e4816c4efa8be02d26967c18aa";
6095 };
6096 }
6097
6098 {
6099 name = "object_assign___object_assign_3.0.0.tgz";
6100 path = fetchurl {
6101 name = "object_assign___object_assign_3.0.0.tgz";
6102 url = "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz";
6103 sha1 = "9bedd5ca0897949bca47e7ff408062d549f587f2";
6104 };
6105 }
6106
6107 {
6108 name = "object_assign___object_assign_0.1.2.tgz";
6109 path = fetchurl {
6110 name = "object_assign___object_assign_0.1.2.tgz";
6111 url = "https://registry.yarnpkg.com/object-assign/-/object-assign-0.1.2.tgz";
6112 sha1 = "036992f073aff7b2db83d06b3fb3155a5ccac37f";
6113 };
6114 }
6115
6116 {
6117 name = "object_component___object_component_0.0.3.tgz";
6118 path = fetchurl {
6119 name = "object_component___object_component_0.0.3.tgz";
6120 url = "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz";
6121 sha1 = "f0c69aa50efc95b866c186f400a33769cb2f1291";
6122 };
6123 }
6124
6125 {
6126 name = "object_copy___object_copy_0.1.0.tgz";
6127 path = fetchurl {
6128 name = "object_copy___object_copy_0.1.0.tgz";
6129 url = "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz";
6130 sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
6131 };
6132 }
6133
6134 {
6135 name = "object_keys___object_keys_0.4.0.tgz";
6136 path = fetchurl {
6137 name = "object_keys___object_keys_0.4.0.tgz";
6138 url = "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz";
6139 sha1 = "28a6aae7428dd2c3a92f3d95f21335dd204e0336";
6140 };
6141 }
6142
6143 {
6144 name = "object_visit___object_visit_1.0.1.tgz";
6145 path = fetchurl {
6146 name = "object_visit___object_visit_1.0.1.tgz";
6147 url = "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz";
6148 sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb";
6149 };
6150 }
6151
6152 {
6153 name = "object.defaults___object.defaults_1.1.0.tgz";
6154 path = fetchurl {
6155 name = "object.defaults___object.defaults_1.1.0.tgz";
6156 url = "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz";
6157 sha1 = "3a7f868334b407dea06da16d88d5cd29e435fecf";
6158 };
6159 }
6160
6161 {
6162 name = "object.map___object.map_1.0.1.tgz";
6163 path = fetchurl {
6164 name = "object.map___object.map_1.0.1.tgz";
6165 url = "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz";
6166 sha1 = "cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37";
6167 };
6168 }
6169
6170 {
6171 name = "object.omit___object.omit_2.0.1.tgz";
6172 path = fetchurl {
6173 name = "object.omit___object.omit_2.0.1.tgz";
6174 url = "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz";
6175 sha1 = "1a9c744829f39dbb858c76ca3579ae2a54ebd1fa";
6176 };
6177 }
6178
6179 {
6180 name = "object.pick___object.pick_1.3.0.tgz";
6181 path = fetchurl {
6182 name = "object.pick___object.pick_1.3.0.tgz";
6183 url = "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz";
6184 sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
6185 };
6186 }
6187
6188 {
6189 name = "on_finished___on_finished_2.3.0.tgz";
6190 path = fetchurl {
6191 name = "on_finished___on_finished_2.3.0.tgz";
6192 url = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz";
6193 sha1 = "20f1336481b083cd75337992a16971aa2d906947";
6194 };
6195 }
6196
6197 {
6198 name = "once___once_1.4.0.tgz";
6199 path = fetchurl {
6200 name = "once___once_1.4.0.tgz";
6201 url = "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz";
6202 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
6203 };
6204 }
6205
6206 {
6207 name = "once___once_1.3.3.tgz";
6208 path = fetchurl {
6209 name = "once___once_1.3.3.tgz";
6210 url = "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz";
6211 sha1 = "b2e261557ce4c314ec8304f3fa82663e4297ca20";
6212 };
6213 }
6214
6215 {
6216 name = "opn___opn_0.1.2.tgz";
6217 path = fetchurl {
6218 name = "opn___opn_0.1.2.tgz";
6219 url = "https://registry.yarnpkg.com/opn/-/opn-0.1.2.tgz";
6220 sha1 = "c527832cfd964d52096b524d0035ecaece51db4f";
6221 };
6222 }
6223
6224 {
6225 name = "optimist___optimist_0.6.1.tgz";
6226 path = fetchurl {
6227 name = "optimist___optimist_0.6.1.tgz";
6228 url = "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz";
6229 sha1 = "da3ea74686fa21a19a111c326e90eb15a0196686";
6230 };
6231 }
6232
6233 {
6234 name = "optimist___optimist_0.3.7.tgz";
6235 path = fetchurl {
6236 name = "optimist___optimist_0.3.7.tgz";
6237 url = "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz";
6238 sha1 = "c90941ad59e4273328923074d2cf2e7cbc6ec0d9";
6239 };
6240 }
6241
6242 {
6243 name = "optionator___optionator_0.8.3.tgz";
6244 path = fetchurl {
6245 name = "optionator___optionator_0.8.3.tgz";
6246 url = "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz";
6247 sha1 = "84fa1d036fe9d3c7e21d99884b601167ec8fb495";
6248 };
6249 }
6250
6251 {
6252 name = "options___options_0.0.6.tgz";
6253 path = fetchurl {
6254 name = "options___options_0.0.6.tgz";
6255 url = "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz";
6256 sha1 = "ec22d312806bb53e731773e7cdaefcf1c643128f";
6257 };
6258 }
6259
6260 {
6261 name = "orchestrator___orchestrator_0.3.8.tgz";
6262 path = fetchurl {
6263 name = "orchestrator___orchestrator_0.3.8.tgz";
6264 url = "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz";
6265 sha1 = "14e7e9e2764f7315fbac184e506c7aa6df94ad7e";
6266 };
6267 }
6268
6269 {
6270 name = "ordered_ast_traverse___ordered_ast_traverse_1.1.1.tgz";
6271 path = fetchurl {
6272 name = "ordered_ast_traverse___ordered_ast_traverse_1.1.1.tgz";
6273 url = "https://registry.yarnpkg.com/ordered-ast-traverse/-/ordered-ast-traverse-1.1.1.tgz";
6274 sha1 = "6843a170bc0eee8b520cc8ddc1ddd3aa30fa057c";
6275 };
6276 }
6277
6278 {
6279 name = "ordered_esprima_props___ordered_esprima_props_1.1.0.tgz";
6280 path = fetchurl {
6281 name = "ordered_esprima_props___ordered_esprima_props_1.1.0.tgz";
6282 url = "https://registry.yarnpkg.com/ordered-esprima-props/-/ordered-esprima-props-1.1.0.tgz";
6283 sha1 = "a9827086df5f010aa60e9bd02b6e0335cea2ffcb";
6284 };
6285 }
6286
6287 {
6288 name = "ordered_read_streams___ordered_read_streams_0.1.0.tgz";
6289 path = fetchurl {
6290 name = "ordered_read_streams___ordered_read_streams_0.1.0.tgz";
6291 url = "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz";
6292 sha1 = "fd565a9af8eb4473ba69b6ed8a34352cb552f126";
6293 };
6294 }
6295
6296 {
6297 name = "os_browserify___os_browserify_0.1.2.tgz";
6298 path = fetchurl {
6299 name = "os_browserify___os_browserify_0.1.2.tgz";
6300 url = "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz";
6301 sha1 = "49ca0293e0b19590a5f5de10c7f265a617d8fe54";
6302 };
6303 }
6304
6305 {
6306 name = "os_homedir___os_homedir_1.0.2.tgz";
6307 path = fetchurl {
6308 name = "os_homedir___os_homedir_1.0.2.tgz";
6309 url = "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz";
6310 sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
6311 };
6312 }
6313
6314 {
6315 name = "os_locale___os_locale_1.4.0.tgz";
6316 path = fetchurl {
6317 name = "os_locale___os_locale_1.4.0.tgz";
6318 url = "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz";
6319 sha1 = "20f9f17ae29ed345e8bde583b13d2009803c14d9";
6320 };
6321 }
6322
6323 {
6324 name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
6325 path = fetchurl {
6326 name = "os_tmpdir___os_tmpdir_1.0.2.tgz";
6327 url = "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
6328 sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
6329 };
6330 }
6331
6332 {
6333 name = "osenv___osenv_0.1.5.tgz";
6334 path = fetchurl {
6335 name = "osenv___osenv_0.1.5.tgz";
6336 url = "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz";
6337 sha1 = "85cdfafaeb28e8677f416e287592b5f3f49ea410";
6338 };
6339 }
6340
6341 {
6342 name = "osenv___osenv_0.0.3.tgz";
6343 path = fetchurl {
6344 name = "osenv___osenv_0.0.3.tgz";
6345 url = "https://registry.yarnpkg.com/osenv/-/osenv-0.0.3.tgz";
6346 sha1 = "cd6ad8ddb290915ad9e22765576025d411f29cb6";
6347 };
6348 }
6349
6350 {
6351 name = "p_throttler___p_throttler_0.0.1.tgz";
6352 path = fetchurl {
6353 name = "p_throttler___p_throttler_0.0.1.tgz";
6354 url = "https://registry.yarnpkg.com/p-throttler/-/p-throttler-0.0.1.tgz";
6355 sha1 = "c341e3589ec843852a035e6f88e6c1e96150029b";
6356 };
6357 }
6358
6359 {
6360 name = "package_json___package_json_1.2.0.tgz";
6361 path = fetchurl {
6362 name = "package_json___package_json_1.2.0.tgz";
6363 url = "https://registry.yarnpkg.com/package-json/-/package-json-1.2.0.tgz";
6364 sha1 = "c8ecac094227cdf76a316874ed05e27cc939a0e0";
6365 };
6366 }
6367
6368 {
6369 name = "pako___pako_0.2.9.tgz";
6370 path = fetchurl {
6371 name = "pako___pako_0.2.9.tgz";
6372 url = "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz";
6373 sha1 = "f3f7522f4ef782348da8161bad9ecfd51bf83a75";
6374 };
6375 }
6376
6377 {
6378 name = "parents___parents_0.0.2.tgz";
6379 path = fetchurl {
6380 name = "parents___parents_0.0.2.tgz";
6381 url = "https://registry.yarnpkg.com/parents/-/parents-0.0.2.tgz";
6382 sha1 = "67147826e497d40759aaf5ba4c99659b6034d302";
6383 };
6384 }
6385
6386 {
6387 name = "parents___parents_0.0.3.tgz";
6388 path = fetchurl {
6389 name = "parents___parents_0.0.3.tgz";
6390 url = "https://registry.yarnpkg.com/parents/-/parents-0.0.3.tgz";
6391 sha1 = "fa212f024d9fa6318dbb6b4ce676c8be493b9c43";
6392 };
6393 }
6394
6395 {
6396 name = "parse_filepath___parse_filepath_1.0.2.tgz";
6397 path = fetchurl {
6398 name = "parse_filepath___parse_filepath_1.0.2.tgz";
6399 url = "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz";
6400 sha1 = "a632127f53aaf3d15876f5872f3ffac763d6c891";
6401 };
6402 }
6403
6404 {
6405 name = "parse_glob___parse_glob_3.0.4.tgz";
6406 path = fetchurl {
6407 name = "parse_glob___parse_glob_3.0.4.tgz";
6408 url = "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz";
6409 sha1 = "b2c376cfb11f35513badd173ef0bb6e3a388391c";
6410 };
6411 }
6412
6413 {
6414 name = "parse_json___parse_json_2.2.0.tgz";
6415 path = fetchurl {
6416 name = "parse_json___parse_json_2.2.0.tgz";
6417 url = "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz";
6418 sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
6419 };
6420 }
6421
6422 {
6423 name = "parse_node_version___parse_node_version_1.0.1.tgz";
6424 path = fetchurl {
6425 name = "parse_node_version___parse_node_version_1.0.1.tgz";
6426 url = "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz";
6427 sha1 = "e2b5dbede00e7fa9bc363607f53327e8b073189b";
6428 };
6429 }
6430
6431 {
6432 name = "parse_passwd___parse_passwd_1.0.0.tgz";
6433 path = fetchurl {
6434 name = "parse_passwd___parse_passwd_1.0.0.tgz";
6435 url = "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz";
6436 sha1 = "6d5b934a456993b23d37f40a382d6f1666a8e5c6";
6437 };
6438 }
6439
6440 {
6441 name = "parsejson___parsejson_0.0.3.tgz";
6442 path = fetchurl {
6443 name = "parsejson___parsejson_0.0.3.tgz";
6444 url = "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz";
6445 sha1 = "ab7e3759f209ece99437973f7d0f1f64ae0e64ab";
6446 };
6447 }
6448
6449 {
6450 name = "parseqs___parseqs_0.0.5.tgz";
6451 path = fetchurl {
6452 name = "parseqs___parseqs_0.0.5.tgz";
6453 url = "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz";
6454 sha1 = "d5208a3738e46766e291ba2ea173684921a8b89d";
6455 };
6456 }
6457
6458 {
6459 name = "parseuri___parseuri_0.0.5.tgz";
6460 path = fetchurl {
6461 name = "parseuri___parseuri_0.0.5.tgz";
6462 url = "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz";
6463 sha1 = "80204a50d4dbb779bfdc6ebe2778d90e4bce320a";
6464 };
6465 }
6466
6467 {
6468 name = "parseurl___parseurl_1.3.3.tgz";
6469 path = fetchurl {
6470 name = "parseurl___parseurl_1.3.3.tgz";
6471 url = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz";
6472 sha1 = "9da19e7bee8d12dff0513ed5b76957793bc2e8d4";
6473 };
6474 }
6475
6476 {
6477 name = "pascalcase___pascalcase_0.1.1.tgz";
6478 path = fetchurl {
6479 name = "pascalcase___pascalcase_0.1.1.tgz";
6480 url = "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz";
6481 sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14";
6482 };
6483 }
6484
6485 {
6486 name = "path_browserify___path_browserify_0.0.1.tgz";
6487 path = fetchurl {
6488 name = "path_browserify___path_browserify_0.0.1.tgz";
6489 url = "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz";
6490 sha1 = "e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a";
6491 };
6492 }
6493
6494 {
6495 name = "path_exists___path_exists_2.1.0.tgz";
6496 path = fetchurl {
6497 name = "path_exists___path_exists_2.1.0.tgz";
6498 url = "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz";
6499 sha1 = "0feb6c64f0fc518d9a754dd5efb62c7022761f4b";
6500 };
6501 }
6502
6503 {
6504 name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
6505 path = fetchurl {
6506 name = "path_is_absolute___path_is_absolute_1.0.1.tgz";
6507 url = "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
6508 sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
6509 };
6510 }
6511
6512 {
6513 name = "path_parse___path_parse_1.0.6.tgz";
6514 path = fetchurl {
6515 name = "path_parse___path_parse_1.0.6.tgz";
6516 url = "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz";
6517 sha1 = "d62dbb5679405d72c4737ec58600e9ddcf06d24c";
6518 };
6519 }
6520
6521 {
6522 name = "path_platform___path_platform_0.0.1.tgz";
6523 path = fetchurl {
6524 name = "path_platform___path_platform_0.0.1.tgz";
6525 url = "https://registry.yarnpkg.com/path-platform/-/path-platform-0.0.1.tgz";
6526 sha1 = "b5585d7c3c463d89aa0060d86611cf1afd617e2a";
6527 };
6528 }
6529
6530 {
6531 name = "path_root_regex___path_root_regex_0.1.2.tgz";
6532 path = fetchurl {
6533 name = "path_root_regex___path_root_regex_0.1.2.tgz";
6534 url = "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz";
6535 sha1 = "bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d";
6536 };
6537 }
6538
6539 {
6540 name = "path_root___path_root_0.1.1.tgz";
6541 path = fetchurl {
6542 name = "path_root___path_root_0.1.1.tgz";
6543 url = "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz";
6544 sha1 = "9a4a6814cac1c0cd73360a95f32083c8ea4745b7";
6545 };
6546 }
6547
6548 {
6549 name = "path_type___path_type_1.1.0.tgz";
6550 path = fetchurl {
6551 name = "path_type___path_type_1.1.0.tgz";
6552 url = "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz";
6553 sha1 = "59c44f7ee491da704da415da5a4070ba4f8fe441";
6554 };
6555 }
6556
6557 {
6558 name = "pause_stream___pause_stream_0.0.11.tgz";
6559 path = fetchurl {
6560 name = "pause_stream___pause_stream_0.0.11.tgz";
6561 url = "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz";
6562 sha1 = "fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445";
6563 };
6564 }
6565
6566 {
6567 name = "performance_now___performance_now_2.1.0.tgz";
6568 path = fetchurl {
6569 name = "performance_now___performance_now_2.1.0.tgz";
6570 url = "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz";
6571 sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
6572 };
6573 }
6574
6575 {
6576 name = "pify___pify_2.3.0.tgz";
6577 path = fetchurl {
6578 name = "pify___pify_2.3.0.tgz";
6579 url = "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz";
6580 sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
6581 };
6582 }
6583
6584 {
6585 name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
6586 path = fetchurl {
6587 name = "pinkie_promise___pinkie_promise_2.0.1.tgz";
6588 url = "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
6589 sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
6590 };
6591 }
6592
6593 {
6594 name = "pinkie___pinkie_2.0.4.tgz";
6595 path = fetchurl {
6596 name = "pinkie___pinkie_2.0.4.tgz";
6597 url = "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz";
6598 sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
6599 };
6600 }
6601
6602 {
6603 name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
6604 path = fetchurl {
6605 name = "posix_character_classes___posix_character_classes_0.1.1.tgz";
6606 url = "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz";
6607 sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab";
6608 };
6609 }
6610
6611 {
6612 name = "prelude_ls___prelude_ls_1.1.2.tgz";
6613 path = fetchurl {
6614 name = "prelude_ls___prelude_ls_1.1.2.tgz";
6615 url = "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz";
6616 sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
6617 };
6618 }
6619
6620 {
6621 name = "prepend_http___prepend_http_1.0.4.tgz";
6622 path = fetchurl {
6623 name = "prepend_http___prepend_http_1.0.4.tgz";
6624 url = "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz";
6625 sha1 = "d4f4562b0ce3696e41ac52d0e002e57a635dc6dc";
6626 };
6627 }
6628
6629 {
6630 name = "preserve___preserve_0.2.0.tgz";
6631 path = fetchurl {
6632 name = "preserve___preserve_0.2.0.tgz";
6633 url = "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz";
6634 sha1 = "815ed1f6ebc65926f865b310c0713bcb3315ce4b";
6635 };
6636 }
6637
6638 {
6639 name = "pretty_hrtime___pretty_hrtime_1.0.3.tgz";
6640 path = fetchurl {
6641 name = "pretty_hrtime___pretty_hrtime_1.0.3.tgz";
6642 url = "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz";
6643 sha1 = "b7e3ea42435a4c9b2759d99e0f201eb195802ee1";
6644 };
6645 }
6646
6647 {
6648 name = "process_nextick_args___process_nextick_args_2.0.1.tgz";
6649 path = fetchurl {
6650 name = "process_nextick_args___process_nextick_args_2.0.1.tgz";
6651 url = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
6652 sha1 = "7820d9b16120cc55ca9ae7792680ae7dba6d7fe2";
6653 };
6654 }
6655
6656 {
6657 name = "process___process_0.7.0.tgz";
6658 path = fetchurl {
6659 name = "process___process_0.7.0.tgz";
6660 url = "https://registry.yarnpkg.com/process/-/process-0.7.0.tgz";
6661 sha1 = "c52208161a34adf3812344ae85d3e6150469389d";
6662 };
6663 }
6664
6665 {
6666 name = "process___process_0.5.2.tgz";
6667 path = fetchurl {
6668 name = "process___process_0.5.2.tgz";
6669 url = "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz";
6670 sha1 = "1638d8a8e34c2f440a91db95ab9aeb677fc185cf";
6671 };
6672 }
6673
6674 {
6675 name = "process___process_0.6.0.tgz";
6676 path = fetchurl {
6677 name = "process___process_0.6.0.tgz";
6678 url = "https://registry.yarnpkg.com/process/-/process-0.6.0.tgz";
6679 sha1 = "7dd9be80ffaaedd4cb628f1827f1cbab6dc0918f";
6680 };
6681 }
6682
6683 {
6684 name = "promise___promise_7.3.1.tgz";
6685 path = fetchurl {
6686 name = "promise___promise_7.3.1.tgz";
6687 url = "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz";
6688 sha1 = "064b72602b18f90f29192b8b1bc418ffd1ebd3bf";
6689 };
6690 }
6691
6692 {
6693 name = "promptly___promptly_0.2.1.tgz";
6694 path = fetchurl {
6695 name = "promptly___promptly_0.2.1.tgz";
6696 url = "https://registry.yarnpkg.com/promptly/-/promptly-0.2.1.tgz";
6697 sha1 = "6444e7ca4dbd9899e7eeb5ec3922827ebdc22b3b";
6698 };
6699 }
6700
6701 {
6702 name = "pseudomap___pseudomap_1.0.2.tgz";
6703 path = fetchurl {
6704 name = "pseudomap___pseudomap_1.0.2.tgz";
6705 url = "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz";
6706 sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
6707 };
6708 }
6709
6710 {
6711 name = "psl___psl_1.8.0.tgz";
6712 path = fetchurl {
6713 name = "psl___psl_1.8.0.tgz";
6714 url = "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz";
6715 sha1 = "9326f8bcfb013adcc005fdff056acce020e51c24";
6716 };
6717 }
6718
6719 {
6720 name = "pug_attrs___pug_attrs_2.0.4.tgz";
6721 path = fetchurl {
6722 name = "pug_attrs___pug_attrs_2.0.4.tgz";
6723 url = "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.4.tgz";
6724 sha1 = "b2f44c439e4eb4ad5d4ef25cac20d18ad28cc336";
6725 };
6726 }
6727
6728 {
6729 name = "pug_code_gen___pug_code_gen_2.0.2.tgz";
6730 path = fetchurl {
6731 name = "pug_code_gen___pug_code_gen_2.0.2.tgz";
6732 url = "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.2.tgz";
6733 sha1 = "ad0967162aea077dcf787838d94ed14acb0217c2";
6734 };
6735 }
6736
6737 {
6738 name = "pug_error___pug_error_1.3.3.tgz";
6739 path = fetchurl {
6740 name = "pug_error___pug_error_1.3.3.tgz";
6741 url = "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.3.tgz";
6742 sha1 = "f342fb008752d58034c185de03602dd9ffe15fa6";
6743 };
6744 }
6745
6746 {
6747 name = "pug_filters___pug_filters_3.1.1.tgz";
6748 path = fetchurl {
6749 name = "pug_filters___pug_filters_3.1.1.tgz";
6750 url = "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.1.tgz";
6751 sha1 = "ab2cc82db9eeccf578bda89130e252a0db026aa7";
6752 };
6753 }
6754
6755 {
6756 name = "pug_lexer___pug_lexer_4.1.0.tgz";
6757 path = fetchurl {
6758 name = "pug_lexer___pug_lexer_4.1.0.tgz";
6759 url = "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.1.0.tgz";
6760 sha1 = "531cde48c7c0b1fcbbc2b85485c8665e31489cfd";
6761 };
6762 }
6763
6764 {
6765 name = "pug_linker___pug_linker_3.0.6.tgz";
6766 path = fetchurl {
6767 name = "pug_linker___pug_linker_3.0.6.tgz";
6768 url = "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.6.tgz";
6769 sha1 = "f5bf218b0efd65ce6670f7afc51658d0f82989fb";
6770 };
6771 }
6772
6773 {
6774 name = "pug_load___pug_load_2.0.12.tgz";
6775 path = fetchurl {
6776 name = "pug_load___pug_load_2.0.12.tgz";
6777 url = "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.12.tgz";
6778 sha1 = "d38c85eb85f6e2f704dea14dcca94144d35d3e7b";
6779 };
6780 }
6781
6782 {
6783 name = "pug_parser___pug_parser_5.0.1.tgz";
6784 path = fetchurl {
6785 name = "pug_parser___pug_parser_5.0.1.tgz";
6786 url = "https://registry.yarnpkg.com/pug-parser/-/pug-parser-5.0.1.tgz";
6787 sha1 = "03e7ada48b6840bd3822f867d7d90f842d0ffdc9";
6788 };
6789 }
6790
6791 {
6792 name = "pug_runtime___pug_runtime_2.0.5.tgz";
6793 path = fetchurl {
6794 name = "pug_runtime___pug_runtime_2.0.5.tgz";
6795 url = "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.5.tgz";
6796 sha1 = "6da7976c36bf22f68e733c359240d8ae7a32953a";
6797 };
6798 }
6799
6800 {
6801 name = "pug_strip_comments___pug_strip_comments_1.0.4.tgz";
6802 path = fetchurl {
6803 name = "pug_strip_comments___pug_strip_comments_1.0.4.tgz";
6804 url = "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz";
6805 sha1 = "cc1b6de1f6e8f5931cf02ec66cdffd3f50eaf8a8";
6806 };
6807 }
6808
6809 {
6810 name = "pug_walk___pug_walk_1.1.8.tgz";
6811 path = fetchurl {
6812 name = "pug_walk___pug_walk_1.1.8.tgz";
6813 url = "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.8.tgz";
6814 sha1 = "b408f67f27912f8c21da2f45b7230c4bd2a5ea7a";
6815 };
6816 }
6817
6818 {
6819 name = "pug___pug_2.0.4.tgz";
6820 path = fetchurl {
6821 name = "pug___pug_2.0.4.tgz";
6822 url = "https://registry.yarnpkg.com/pug/-/pug-2.0.4.tgz";
6823 sha1 = "ee7682ec0a60494b38d48a88f05f3b0ac931377d";
6824 };
6825 }
6826
6827 {
6828 name = "punycode___punycode_1.3.2.tgz";
6829 path = fetchurl {
6830 name = "punycode___punycode_1.3.2.tgz";
6831 url = "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz";
6832 sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d";
6833 };
6834 }
6835
6836 {
6837 name = "punycode___punycode_2.1.1.tgz";
6838 path = fetchurl {
6839 name = "punycode___punycode_2.1.1.tgz";
6840 url = "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz";
6841 sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
6842 };
6843 }
6844
6845 {
6846 name = "punycode___punycode_1.2.4.tgz";
6847 path = fetchurl {
6848 name = "punycode___punycode_1.2.4.tgz";
6849 url = "https://registry.yarnpkg.com/punycode/-/punycode-1.2.4.tgz";
6850 sha1 = "54008ac972aec74175def9cba6df7fa9d3918740";
6851 };
6852 }
6853
6854 {
6855 name = "q___q_1.5.1.tgz";
6856 path = fetchurl {
6857 name = "q___q_1.5.1.tgz";
6858 url = "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz";
6859 sha1 = "7e32f75b41381291d04611f1bf14109ac00651d7";
6860 };
6861 }
6862
6863 {
6864 name = "q___q_0.9.7.tgz";
6865 path = fetchurl {
6866 name = "q___q_0.9.7.tgz";
6867 url = "https://registry.yarnpkg.com/q/-/q-0.9.7.tgz";
6868 sha1 = "4de2e6cb3b29088c9e4cbc03bf9d42fb96ce2f75";
6869 };
6870 }
6871
6872 {
6873 name = "q___q_1.0.1.tgz";
6874 path = fetchurl {
6875 name = "q___q_1.0.1.tgz";
6876 url = "https://registry.yarnpkg.com/q/-/q-1.0.1.tgz";
6877 sha1 = "11872aeedee89268110b10a718448ffb10112a14";
6878 };
6879 }
6880
6881 {
6882 name = "qs___qs_5.2.0.tgz";
6883 path = fetchurl {
6884 name = "qs___qs_5.2.0.tgz";
6885 url = "https://registry.yarnpkg.com/qs/-/qs-5.2.0.tgz";
6886 sha1 = "a9f31142af468cb72b25b30136ba2456834916be";
6887 };
6888 }
6889
6890 {
6891 name = "qs___qs_6.7.0.tgz";
6892 path = fetchurl {
6893 name = "qs___qs_6.7.0.tgz";
6894 url = "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz";
6895 sha1 = "41dc1a015e3d581f1621776be31afb2876a9b1bc";
6896 };
6897 }
6898
6899 {
6900 name = "qs___qs_0.6.6.tgz";
6901 path = fetchurl {
6902 name = "qs___qs_0.6.6.tgz";
6903 url = "https://registry.yarnpkg.com/qs/-/qs-0.6.6.tgz";
6904 sha1 = "6e015098ff51968b8a3c819001d5f2c89bc4b107";
6905 };
6906 }
6907
6908 {
6909 name = "qs___qs_1.0.2.tgz";
6910 path = fetchurl {
6911 name = "qs___qs_1.0.2.tgz";
6912 url = "https://registry.yarnpkg.com/qs/-/qs-1.0.2.tgz";
6913 sha1 = "50a93e2b5af6691c31bcea5dae78ee6ea1903768";
6914 };
6915 }
6916
6917 {
6918 name = "qs___qs_2.2.5.tgz";
6919 path = fetchurl {
6920 name = "qs___qs_2.2.5.tgz";
6921 url = "https://registry.yarnpkg.com/qs/-/qs-2.2.5.tgz";
6922 sha1 = "1088abaf9dcc0ae5ae45b709e6c6b5888b23923c";
6923 };
6924 }
6925
6926 {
6927 name = "qs___qs_2.3.3.tgz";
6928 path = fetchurl {
6929 name = "qs___qs_2.3.3.tgz";
6930 url = "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz";
6931 sha1 = "e9e85adbe75da0bbe4c8e0476a086290f863b404";
6932 };
6933 }
6934
6935 {
6936 name = "qs___qs_6.5.2.tgz";
6937 path = fetchurl {
6938 name = "qs___qs_6.5.2.tgz";
6939 url = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
6940 sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
6941 };
6942 }
6943
6944 {
6945 name = "querystring_es3___querystring_es3_0.2.0.tgz";
6946 path = fetchurl {
6947 name = "querystring_es3___querystring_es3_0.2.0.tgz";
6948 url = "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.0.tgz";
6949 sha1 = "c365a08a69c443accfeb3a9deab35e3f0abaa476";
6950 };
6951 }
6952
6953 {
6954 name = "querystring___querystring_0.2.0.tgz";
6955 path = fetchurl {
6956 name = "querystring___querystring_0.2.0.tgz";
6957 url = "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz";
6958 sha1 = "b209849203bb25df820da756e747005878521620";
6959 };
6960 }
6961
6962 {
6963 name = "randomatic___randomatic_3.1.1.tgz";
6964 path = fetchurl {
6965 name = "randomatic___randomatic_3.1.1.tgz";
6966 url = "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz";
6967 sha1 = "b776efc59375984e36c537b2f51a1f0aff0da1ed";
6968 };
6969 }
6970
6971 {
6972 name = "range_parser___range_parser_1.0.3.tgz";
6973 path = fetchurl {
6974 name = "range_parser___range_parser_1.0.3.tgz";
6975 url = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz";
6976 sha1 = "6872823535c692e2c2a0103826afd82c2e0ff175";
6977 };
6978 }
6979
6980 {
6981 name = "raw_body___raw_body_2.4.0.tgz";
6982 path = fetchurl {
6983 name = "raw_body___raw_body_2.4.0.tgz";
6984 url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz";
6985 sha1 = "a1ce6fb9c9bc356ca52e89256ab59059e13d0332";
6986 };
6987 }
6988
6989 {
6990 name = "raw_body___raw_body_2.1.7.tgz";
6991 path = fetchurl {
6992 name = "raw_body___raw_body_2.1.7.tgz";
6993 url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz";
6994 sha1 = "adfeace2e4fb3098058014d08c072dcc59758774";
6995 };
6996 }
6997
6998 {
6999 name = "rc___rc_1.2.8.tgz";
7000 path = fetchurl {
7001 name = "rc___rc_1.2.8.tgz";
7002 url = "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz";
7003 sha1 = "cd924bf5200a075b83c188cd6b9e211b7fc0d3ed";
7004 };
7005 }
7006
7007 {
7008 name = "read_all_stream___read_all_stream_3.1.0.tgz";
7009 path = fetchurl {
7010 name = "read_all_stream___read_all_stream_3.1.0.tgz";
7011 url = "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz";
7012 sha1 = "35c3e177f2078ef789ee4bfafa4373074eaef4fa";
7013 };
7014 }
7015
7016 {
7017 name = "read_pkg_up___read_pkg_up_1.0.1.tgz";
7018 path = fetchurl {
7019 name = "read_pkg_up___read_pkg_up_1.0.1.tgz";
7020 url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz";
7021 sha1 = "9d63c13276c065918d57f002a57f40a1b643fb02";
7022 };
7023 }
7024
7025 {
7026 name = "read_pkg___read_pkg_1.1.0.tgz";
7027 path = fetchurl {
7028 name = "read_pkg___read_pkg_1.1.0.tgz";
7029 url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz";
7030 sha1 = "f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28";
7031 };
7032 }
7033
7034 {
7035 name = "read___read_1.0.7.tgz";
7036 path = fetchurl {
7037 name = "read___read_1.0.7.tgz";
7038 url = "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz";
7039 sha1 = "b3da19bd052431a97671d44a42634adf710b40c4";
7040 };
7041 }
7042
7043 {
7044 name = "readable_stream___readable_stream_1.0.34.tgz";
7045 path = fetchurl {
7046 name = "readable_stream___readable_stream_1.0.34.tgz";
7047 url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz";
7048 sha1 = "125820e34bc842d2f2aaafafe4c2916ee32c157c";
7049 };
7050 }
7051
7052 {
7053 name = "readable_stream___readable_stream_1.1.14.tgz";
7054 path = fetchurl {
7055 name = "readable_stream___readable_stream_1.1.14.tgz";
7056 url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz";
7057 sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9";
7058 };
7059 }
7060
7061 {
7062 name = "readable_stream___readable_stream_2.3.7.tgz";
7063 path = fetchurl {
7064 name = "readable_stream___readable_stream_2.3.7.tgz";
7065 url = "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz";
7066 sha1 = "1eca1cf711aef814c04f62252a36a62f6cb23b57";
7067 };
7068 }
7069
7070 {
7071 name = "readdirp___readdirp_2.2.1.tgz";
7072 path = fetchurl {
7073 name = "readdirp___readdirp_2.2.1.tgz";
7074 url = "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz";
7075 sha1 = "0e87622a3325aa33e892285caf8b4e846529a525";
7076 };
7077 }
7078
7079 {
7080 name = "readline2___readline2_0.1.1.tgz";
7081 path = fetchurl {
7082 name = "readline2___readline2_0.1.1.tgz";
7083 url = "https://registry.yarnpkg.com/readline2/-/readline2-0.1.1.tgz";
7084 sha1 = "99443ba6e83b830ef3051bfd7dc241a82728d568";
7085 };
7086 }
7087
7088 {
7089 name = "rechoir___rechoir_0.6.2.tgz";
7090 path = fetchurl {
7091 name = "rechoir___rechoir_0.6.2.tgz";
7092 url = "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz";
7093 sha1 = "85204b54dba82d5742e28c96756ef43af50e3384";
7094 };
7095 }
7096
7097 {
7098 name = "redent___redent_1.0.0.tgz";
7099 path = fetchurl {
7100 name = "redent___redent_1.0.0.tgz";
7101 url = "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz";
7102 sha1 = "cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde";
7103 };
7104 }
7105
7106 {
7107 name = "redeyed___redeyed_0.4.4.tgz";
7108 path = fetchurl {
7109 name = "redeyed___redeyed_0.4.4.tgz";
7110 url = "https://registry.yarnpkg.com/redeyed/-/redeyed-0.4.4.tgz";
7111 sha1 = "37e990a6f2b21b2a11c2e6a48fd4135698cba97f";
7112 };
7113 }
7114
7115 {
7116 name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
7117 path = fetchurl {
7118 name = "regenerator_runtime___regenerator_runtime_0.11.1.tgz";
7119 url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
7120 sha1 = "be05ad7f9bf7d22e056f9726cee5017fbf19e2e9";
7121 };
7122 }
7123
7124 {
7125 name = "regex_cache___regex_cache_0.4.4.tgz";
7126 path = fetchurl {
7127 name = "regex_cache___regex_cache_0.4.4.tgz";
7128 url = "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz";
7129 sha1 = "75bdc58a2a1496cec48a12835bc54c8d562336dd";
7130 };
7131 }
7132
7133 {
7134 name = "regex_not___regex_not_1.0.2.tgz";
7135 path = fetchurl {
7136 name = "regex_not___regex_not_1.0.2.tgz";
7137 url = "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz";
7138 sha1 = "1f4ece27e00b0b65e0247a6810e6a85d83a5752c";
7139 };
7140 }
7141
7142 {
7143 name = "registry_url___registry_url_3.1.0.tgz";
7144 path = fetchurl {
7145 name = "registry_url___registry_url_3.1.0.tgz";
7146 url = "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz";
7147 sha1 = "3d4ef870f73dde1d77f0cf9a381432444e174942";
7148 };
7149 }
7150
7151 {
7152 name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
7153 path = fetchurl {
7154 name = "remove_trailing_separator___remove_trailing_separator_1.1.0.tgz";
7155 url = "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz";
7156 sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
7157 };
7158 }
7159
7160 {
7161 name = "repeat_element___repeat_element_1.1.3.tgz";
7162 path = fetchurl {
7163 name = "repeat_element___repeat_element_1.1.3.tgz";
7164 url = "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz";
7165 sha1 = "782e0d825c0c5a3bb39731f84efee6b742e6b1ce";
7166 };
7167 }
7168
7169 {
7170 name = "repeat_string___repeat_string_0.2.2.tgz";
7171 path = fetchurl {
7172 name = "repeat_string___repeat_string_0.2.2.tgz";
7173 url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz";
7174 sha1 = "c7a8d3236068362059a7e4651fc6884e8b1fb4ae";
7175 };
7176 }
7177
7178 {
7179 name = "repeat_string___repeat_string_1.6.1.tgz";
7180 path = fetchurl {
7181 name = "repeat_string___repeat_string_1.6.1.tgz";
7182 url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz";
7183 sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
7184 };
7185 }
7186
7187 {
7188 name = "repeating___repeating_2.0.1.tgz";
7189 path = fetchurl {
7190 name = "repeating___repeating_2.0.1.tgz";
7191 url = "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz";
7192 sha1 = "5214c53a926d3552707527fbab415dbc08d06dda";
7193 };
7194 }
7195
7196 {
7197 name = "replace_ext___replace_ext_0.0.1.tgz";
7198 path = fetchurl {
7199 name = "replace_ext___replace_ext_0.0.1.tgz";
7200 url = "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz";
7201 sha1 = "29bbd92078a739f0bcce2b4ee41e837953522924";
7202 };
7203 }
7204
7205 {
7206 name = "replace_ext___replace_ext_1.0.0.tgz";
7207 path = fetchurl {
7208 name = "replace_ext___replace_ext_1.0.0.tgz";
7209 url = "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz";
7210 sha1 = "de63128373fcbf7c3ccfa4de5a480c45a67958eb";
7211 };
7212 }
7213
7214 {
7215 name = "replacestream___replacestream_4.0.3.tgz";
7216 path = fetchurl {
7217 name = "replacestream___replacestream_4.0.3.tgz";
7218 url = "https://registry.yarnpkg.com/replacestream/-/replacestream-4.0.3.tgz";
7219 sha1 = "3ee5798092be364b1cdb1484308492cb3dff2f36";
7220 };
7221 }
7222
7223 {
7224 name = "request_progress___request_progress_0.3.1.tgz";
7225 path = fetchurl {
7226 name = "request_progress___request_progress_0.3.1.tgz";
7227 url = "https://registry.yarnpkg.com/request-progress/-/request-progress-0.3.1.tgz";
7228 sha1 = "0721c105d8a96ac6b2ce8b2c89ae2d5ecfcf6b3a";
7229 };
7230 }
7231
7232 {
7233 name = "request_replay___request_replay_0.2.0.tgz";
7234 path = fetchurl {
7235 name = "request_replay___request_replay_0.2.0.tgz";
7236 url = "https://registry.yarnpkg.com/request-replay/-/request-replay-0.2.0.tgz";
7237 sha1 = "9b693a5d118b39f5c596ead5ed91a26444057f60";
7238 };
7239 }
7240
7241 {
7242 name = "request___request_2.88.2.tgz";
7243 path = fetchurl {
7244 name = "request___request_2.88.2.tgz";
7245 url = "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz";
7246 sha1 = "d73c918731cb5a87da047e207234146f664d12b3";
7247 };
7248 }
7249
7250 {
7251 name = "request___request_2.27.0.tgz";
7252 path = fetchurl {
7253 name = "request___request_2.27.0.tgz";
7254 url = "https://registry.yarnpkg.com/request/-/request-2.27.0.tgz";
7255 sha1 = "dfb1a224dd3a5a9bade4337012503d710e538668";
7256 };
7257 }
7258
7259 {
7260 name = "request___request_2.36.0.tgz";
7261 path = fetchurl {
7262 name = "request___request_2.36.0.tgz";
7263 url = "https://registry.yarnpkg.com/request/-/request-2.36.0.tgz";
7264 sha1 = "28c6c04262c7b9ffdd21b9255374517ee6d943f5";
7265 };
7266 }
7267
7268 {
7269 name = "request___request_2.40.0.tgz";
7270 path = fetchurl {
7271 name = "request___request_2.40.0.tgz";
7272 url = "https://registry.yarnpkg.com/request/-/request-2.40.0.tgz";
7273 sha1 = "4dd670f696f1e6e842e66b4b5e839301ab9beb67";
7274 };
7275 }
7276
7277 {
7278 name = "request___request_2.51.0.tgz";
7279 path = fetchurl {
7280 name = "request___request_2.51.0.tgz";
7281 url = "https://registry.yarnpkg.com/request/-/request-2.51.0.tgz";
7282 sha1 = "35d00bbecc012e55f907b1bd9e0dbd577bfef26e";
7283 };
7284 }
7285
7286 {
7287 name = "require_directory___require_directory_2.1.1.tgz";
7288 path = fetchurl {
7289 name = "require_directory___require_directory_2.1.1.tgz";
7290 url = "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz";
7291 sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
7292 };
7293 }
7294
7295 {
7296 name = "require_main_filename___require_main_filename_1.0.1.tgz";
7297 path = fetchurl {
7298 name = "require_main_filename___require_main_filename_1.0.1.tgz";
7299 url = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz";
7300 sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1";
7301 };
7302 }
7303
7304 {
7305 name = "requires_port___requires_port_1.0.0.tgz";
7306 path = fetchurl {
7307 name = "requires_port___requires_port_1.0.0.tgz";
7308 url = "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz";
7309 sha1 = "925d2601d39ac485e091cf0da5c6e694dc3dcaff";
7310 };
7311 }
7312
7313 {
7314 name = "resolve_dir___resolve_dir_1.0.1.tgz";
7315 path = fetchurl {
7316 name = "resolve_dir___resolve_dir_1.0.1.tgz";
7317 url = "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz";
7318 sha1 = "79a40644c362be82f26effe739c9bb5382046f43";
7319 };
7320 }
7321
7322 {
7323 name = "resolve_url___resolve_url_0.2.1.tgz";
7324 path = fetchurl {
7325 name = "resolve_url___resolve_url_0.2.1.tgz";
7326 url = "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz";
7327 sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a";
7328 };
7329 }
7330
7331 {
7332 name = "resolve___resolve_0.6.3.tgz";
7333 path = fetchurl {
7334 name = "resolve___resolve_0.6.3.tgz";
7335 url = "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz";
7336 sha1 = "dd957982e7e736debdf53b58a4dd91754575dd46";
7337 };
7338 }
7339
7340 {
7341 name = "resolve___resolve_1.1.7.tgz";
7342 path = fetchurl {
7343 name = "resolve___resolve_1.1.7.tgz";
7344 url = "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz";
7345 sha1 = "203114d82ad2c5ed9e8e0411b3932875e889e97b";
7346 };
7347 }
7348
7349 {
7350 name = "resolve___resolve_1.15.1.tgz";
7351 path = fetchurl {
7352 name = "resolve___resolve_1.15.1.tgz";
7353 url = "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz";
7354 sha1 = "27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8";
7355 };
7356 }
7357
7358 {
7359 name = "resolve___resolve_0.3.1.tgz";
7360 path = fetchurl {
7361 name = "resolve___resolve_0.3.1.tgz";
7362 url = "https://registry.yarnpkg.com/resolve/-/resolve-0.3.1.tgz";
7363 sha1 = "34c63447c664c70598d1c9b126fc43b2a24310a4";
7364 };
7365 }
7366
7367 {
7368 name = "ret___ret_0.1.15.tgz";
7369 path = fetchurl {
7370 name = "ret___ret_0.1.15.tgz";
7371 url = "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz";
7372 sha1 = "b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc";
7373 };
7374 }
7375
7376 {
7377 name = "retry___retry_0.6.1.tgz";
7378 path = fetchurl {
7379 name = "retry___retry_0.6.1.tgz";
7380 url = "https://registry.yarnpkg.com/retry/-/retry-0.6.1.tgz";
7381 sha1 = "fdc90eed943fde11b893554b8cc63d0e899ba918";
7382 };
7383 }
7384
7385 {
7386 name = "rfile___rfile_1.0.0.tgz";
7387 path = fetchurl {
7388 name = "rfile___rfile_1.0.0.tgz";
7389 url = "https://registry.yarnpkg.com/rfile/-/rfile-1.0.0.tgz";
7390 sha1 = "59708cf90ca1e74c54c3cfc5c36fdb9810435261";
7391 };
7392 }
7393
7394 {
7395 name = "right_align___right_align_0.1.3.tgz";
7396 path = fetchurl {
7397 name = "right_align___right_align_0.1.3.tgz";
7398 url = "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz";
7399 sha1 = "61339b722fe6a3515689210d24e14c96148613ef";
7400 };
7401 }
7402
7403 {
7404 name = "rimraf___rimraf_2.7.1.tgz";
7405 path = fetchurl {
7406 name = "rimraf___rimraf_2.7.1.tgz";
7407 url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz";
7408 sha1 = "35797f13a7fdadc566142c29d4f07ccad483e3ec";
7409 };
7410 }
7411
7412 {
7413 name = "rimraf___rimraf_2.2.8.tgz";
7414 path = fetchurl {
7415 name = "rimraf___rimraf_2.2.8.tgz";
7416 url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz";
7417 sha1 = "e439be2aaee327321952730f99a8929e4fc50582";
7418 };
7419 }
7420
7421 {
7422 name = "rimraf___rimraf_2.4.5.tgz";
7423 path = fetchurl {
7424 name = "rimraf___rimraf_2.4.5.tgz";
7425 url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz";
7426 sha1 = "ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da";
7427 };
7428 }
7429
7430 {
7431 name = "ruglify___ruglify_1.0.0.tgz";
7432 path = fetchurl {
7433 name = "ruglify___ruglify_1.0.0.tgz";
7434 url = "https://registry.yarnpkg.com/ruglify/-/ruglify-1.0.0.tgz";
7435 sha1 = "dc8930e2a9544a274301cc9972574c0d0986b675";
7436 };
7437 }
7438
7439 {
7440 name = "run_sequence___run_sequence_1.1.5.tgz";
7441 path = fetchurl {
7442 name = "run_sequence___run_sequence_1.1.5.tgz";
7443 url = "https://registry.yarnpkg.com/run-sequence/-/run-sequence-1.1.5.tgz";
7444 sha1 = "556bd47eb47877349e36c9c582748897db7be4f7";
7445 };
7446 }
7447
7448 {
7449 name = "safe_buffer___safe_buffer_5.2.0.tgz";
7450 path = fetchurl {
7451 name = "safe_buffer___safe_buffer_5.2.0.tgz";
7452 url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz";
7453 sha1 = "b74daec49b1148f88c64b68d49b1e815c1f2f519";
7454 };
7455 }
7456
7457 {
7458 name = "safe_buffer___safe_buffer_5.1.2.tgz";
7459 path = fetchurl {
7460 name = "safe_buffer___safe_buffer_5.1.2.tgz";
7461 url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
7462 sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
7463 };
7464 }
7465
7466 {
7467 name = "safe_regex___safe_regex_1.1.0.tgz";
7468 path = fetchurl {
7469 name = "safe_regex___safe_regex_1.1.0.tgz";
7470 url = "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz";
7471 sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e";
7472 };
7473 }
7474
7475 {
7476 name = "safer_buffer___safer_buffer_2.1.2.tgz";
7477 path = fetchurl {
7478 name = "safer_buffer___safer_buffer_2.1.2.tgz";
7479 url = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
7480 sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
7481 };
7482 }
7483
7484 {
7485 name = "sass_graph___sass_graph_2.2.4.tgz";
7486 path = fetchurl {
7487 name = "sass_graph___sass_graph_2.2.4.tgz";
7488 url = "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz";
7489 sha1 = "13fbd63cd1caf0908b9fd93476ad43a51d1e0b49";
7490 };
7491 }
7492
7493 {
7494 name = "sax___sax_1.2.4.tgz";
7495 path = fetchurl {
7496 name = "sax___sax_1.2.4.tgz";
7497 url = "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz";
7498 sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9";
7499 };
7500 }
7501
7502 {
7503 name = "scss_tokenizer___scss_tokenizer_0.2.3.tgz";
7504 path = fetchurl {
7505 name = "scss_tokenizer___scss_tokenizer_0.2.3.tgz";
7506 url = "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz";
7507 sha1 = "8eb06db9a9723333824d3f5530641149847ce5d1";
7508 };
7509 }
7510
7511 {
7512 name = "semver_diff___semver_diff_2.1.0.tgz";
7513 path = fetchurl {
7514 name = "semver_diff___semver_diff_2.1.0.tgz";
7515 url = "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz";
7516 sha1 = "4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36";
7517 };
7518 }
7519
7520 {
7521 name = "semver___semver_5.7.1.tgz";
7522 path = fetchurl {
7523 name = "semver___semver_5.7.1.tgz";
7524 url = "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz";
7525 sha1 = "a954f931aeba508d307bbf069eff0c01c96116f7";
7526 };
7527 }
7528
7529 {
7530 name = "semver___semver_4.3.6.tgz";
7531 path = fetchurl {
7532 name = "semver___semver_4.3.6.tgz";
7533 url = "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz";
7534 sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da";
7535 };
7536 }
7537
7538 {
7539 name = "semver___semver_2.3.2.tgz";
7540 path = fetchurl {
7541 name = "semver___semver_2.3.2.tgz";
7542 url = "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz";
7543 sha1 = "b9848f25d6cf36333073ec9ef8856d42f1233e52";
7544 };
7545 }
7546
7547 {
7548 name = "semver___semver_5.3.0.tgz";
7549 path = fetchurl {
7550 name = "semver___semver_5.3.0.tgz";
7551 url = "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz";
7552 sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f";
7553 };
7554 }
7555
7556 {
7557 name = "send___send_0.13.2.tgz";
7558 path = fetchurl {
7559 name = "send___send_0.13.2.tgz";
7560 url = "https://registry.yarnpkg.com/send/-/send-0.13.2.tgz";
7561 sha1 = "765e7607c8055452bba6f0b052595350986036de";
7562 };
7563 }
7564
7565 {
7566 name = "sequencify___sequencify_0.0.7.tgz";
7567 path = fetchurl {
7568 name = "sequencify___sequencify_0.0.7.tgz";
7569 url = "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz";
7570 sha1 = "90cff19d02e07027fd767f5ead3e7b95d1e7380c";
7571 };
7572 }
7573
7574 {
7575 name = "serve_static___serve_static_1.10.3.tgz";
7576 path = fetchurl {
7577 name = "serve_static___serve_static_1.10.3.tgz";
7578 url = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.10.3.tgz";
7579 sha1 = "ce5a6ecd3101fed5ec09827dac22a9c29bfb0535";
7580 };
7581 }
7582
7583 {
7584 name = "set_blocking___set_blocking_2.0.0.tgz";
7585 path = fetchurl {
7586 name = "set_blocking___set_blocking_2.0.0.tgz";
7587 url = "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz";
7588 sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
7589 };
7590 }
7591
7592 {
7593 name = "set_value___set_value_2.0.1.tgz";
7594 path = fetchurl {
7595 name = "set_value___set_value_2.0.1.tgz";
7596 url = "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz";
7597 sha1 = "a18d40530e6f07de4228c7defe4227af8cad005b";
7598 };
7599 }
7600
7601 {
7602 name = "setprototypeof___setprototypeof_1.1.1.tgz";
7603 path = fetchurl {
7604 name = "setprototypeof___setprototypeof_1.1.1.tgz";
7605 url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz";
7606 sha1 = "7e95acb24aa92f5885e0abef5ba131330d4ae683";
7607 };
7608 }
7609
7610 {
7611 name = "shallow_copy___shallow_copy_0.0.1.tgz";
7612 path = fetchurl {
7613 name = "shallow_copy___shallow_copy_0.0.1.tgz";
7614 url = "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz";
7615 sha1 = "415f42702d73d810330292cc5ee86eae1a11a170";
7616 };
7617 }
7618
7619 {
7620 name = "shell_quote___shell_quote_0.0.1.tgz";
7621 path = fetchurl {
7622 name = "shell_quote___shell_quote_0.0.1.tgz";
7623 url = "https://registry.yarnpkg.com/shell-quote/-/shell-quote-0.0.1.tgz";
7624 sha1 = "1a41196f3c0333c482323593d6886ecf153dd986";
7625 };
7626 }
7627
7628 {
7629 name = "shell_quote___shell_quote_1.4.3.tgz";
7630 path = fetchurl {
7631 name = "shell_quote___shell_quote_1.4.3.tgz";
7632 url = "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.4.3.tgz";
7633 sha1 = "952c44e0b1ed9013ef53958179cc643e8777466b";
7634 };
7635 }
7636
7637 {
7638 name = "sigmund___sigmund_1.0.1.tgz";
7639 path = fetchurl {
7640 name = "sigmund___sigmund_1.0.1.tgz";
7641 url = "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz";
7642 sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
7643 };
7644 }
7645
7646 {
7647 name = "signal_exit___signal_exit_3.0.3.tgz";
7648 path = fetchurl {
7649 name = "signal_exit___signal_exit_3.0.3.tgz";
7650 url = "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz";
7651 sha1 = "a1410c2edd8f077b08b4e253c8eacfcaf057461c";
7652 };
7653 }
7654
7655 {
7656 name = "simple_fmt___simple_fmt_0.1.0.tgz";
7657 path = fetchurl {
7658 name = "simple_fmt___simple_fmt_0.1.0.tgz";
7659 url = "https://registry.yarnpkg.com/simple-fmt/-/simple-fmt-0.1.0.tgz";
7660 sha1 = "191bf566a59e6530482cb25ab53b4a8dc85c3a6b";
7661 };
7662 }
7663
7664 {
7665 name = "simple_is___simple_is_0.2.0.tgz";
7666 path = fetchurl {
7667 name = "simple_is___simple_is_0.2.0.tgz";
7668 url = "https://registry.yarnpkg.com/simple-is/-/simple-is-0.2.0.tgz";
7669 sha1 = "2abb75aade39deb5cc815ce10e6191164850baf0";
7670 };
7671 }
7672
7673 {
7674 name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
7675 path = fetchurl {
7676 name = "snapdragon_node___snapdragon_node_2.1.1.tgz";
7677 url = "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz";
7678 sha1 = "6c175f86ff14bdb0724563e8f3c1b021a286853b";
7679 };
7680 }
7681
7682 {
7683 name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
7684 path = fetchurl {
7685 name = "snapdragon_util___snapdragon_util_3.0.1.tgz";
7686 url = "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz";
7687 sha1 = "f956479486f2acd79700693f6f7b805e45ab56e2";
7688 };
7689 }
7690
7691 {
7692 name = "snapdragon___snapdragon_0.8.2.tgz";
7693 path = fetchurl {
7694 name = "snapdragon___snapdragon_0.8.2.tgz";
7695 url = "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz";
7696 sha1 = "64922e7c565b0e14204ba1aa7d6964278d25182d";
7697 };
7698 }
7699
7700 {
7701 name = "sntp___sntp_0.2.4.tgz";
7702 path = fetchurl {
7703 name = "sntp___sntp_0.2.4.tgz";
7704 url = "https://registry.yarnpkg.com/sntp/-/sntp-0.2.4.tgz";
7705 sha1 = "fb885f18b0f3aad189f824862536bceeec750900";
7706 };
7707 }
7708
7709 {
7710 name = "socket.io_adapter___socket.io_adapter_0.5.0.tgz";
7711 path = fetchurl {
7712 name = "socket.io_adapter___socket.io_adapter_0.5.0.tgz";
7713 url = "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz";
7714 sha1 = "cb6d4bb8bec81e1078b99677f9ced0046066bb8b";
7715 };
7716 }
7717
7718 {
7719 name = "socket.io_client___socket.io_client_1.7.4.tgz";
7720 path = fetchurl {
7721 name = "socket.io_client___socket.io_client_1.7.4.tgz";
7722 url = "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.4.tgz";
7723 sha1 = "ec9f820356ed99ef6d357f0756d648717bdd4281";
7724 };
7725 }
7726
7727 {
7728 name = "socket.io_parser___socket.io_parser_2.3.1.tgz";
7729 path = fetchurl {
7730 name = "socket.io_parser___socket.io_parser_2.3.1.tgz";
7731 url = "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz";
7732 sha1 = "dd532025103ce429697326befd64005fcfe5b4a0";
7733 };
7734 }
7735
7736 {
7737 name = "socket.io___socket.io_1.7.4.tgz";
7738 path = fetchurl {
7739 name = "socket.io___socket.io_1.7.4.tgz";
7740 url = "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.4.tgz";
7741 sha1 = "2f7ecedc3391bf2d5c73e291fe233e6e34d4dd00";
7742 };
7743 }
7744
7745 {
7746 name = "source_map_resolve___source_map_resolve_0.5.3.tgz";
7747 path = fetchurl {
7748 name = "source_map_resolve___source_map_resolve_0.5.3.tgz";
7749 url = "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz";
7750 sha1 = "190866bece7553e1f8f267a2ee82c606b5509a1a";
7751 };
7752 }
7753
7754 {
7755 name = "source_map_url___source_map_url_0.4.0.tgz";
7756 path = fetchurl {
7757 name = "source_map_url___source_map_url_0.4.0.tgz";
7758 url = "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz";
7759 sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3";
7760 };
7761 }
7762
7763 {
7764 name = "source_map___source_map_0.1.34.tgz";
7765 path = fetchurl {
7766 name = "source_map___source_map_0.1.34.tgz";
7767 url = "https://registry.yarnpkg.com/source-map/-/source-map-0.1.34.tgz";
7768 sha1 = "a7cfe89aec7b1682c3b198d0acfb47d7d090566b";
7769 };
7770 }
7771
7772 {
7773 name = "source_map___source_map_0.1.43.tgz";
7774 path = fetchurl {
7775 name = "source_map___source_map_0.1.43.tgz";
7776 url = "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz";
7777 sha1 = "c24bc146ca517c1471f5dacbe2571b2b7f9e3346";
7778 };
7779 }
7780
7781 {
7782 name = "source_map___source_map_0.4.4.tgz";
7783 path = fetchurl {
7784 name = "source_map___source_map_0.4.4.tgz";
7785 url = "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz";
7786 sha1 = "eba4f5da9c0dc999de68032d8b4f76173652036b";
7787 };
7788 }
7789
7790 {
7791 name = "source_map___source_map_0.5.7.tgz";
7792 path = fetchurl {
7793 name = "source_map___source_map_0.5.7.tgz";
7794 url = "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz";
7795 sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
7796 };
7797 }
7798
7799 {
7800 name = "source_map___source_map_0.6.1.tgz";
7801 path = fetchurl {
7802 name = "source_map___source_map_0.6.1.tgz";
7803 url = "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz";
7804 sha1 = "74722af32e9614e9c287a8d0bbde48b5e2f1a263";
7805 };
7806 }
7807
7808 {
7809 name = "source_map___source_map_0.2.0.tgz";
7810 path = fetchurl {
7811 name = "source_map___source_map_0.2.0.tgz";
7812 url = "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz";
7813 sha1 = "dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d";
7814 };
7815 }
7816
7817 {
7818 name = "source_map___source_map_0.3.0.tgz";
7819 path = fetchurl {
7820 name = "source_map___source_map_0.3.0.tgz";
7821 url = "https://registry.yarnpkg.com/source-map/-/source-map-0.3.0.tgz";
7822 sha1 = "8586fb9a5a005e5b501e21cd18b6f21b457ad1f9";
7823 };
7824 }
7825
7826 {
7827 name = "sparkles___sparkles_1.0.1.tgz";
7828 path = fetchurl {
7829 name = "sparkles___sparkles_1.0.1.tgz";
7830 url = "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz";
7831 sha1 = "008db65edce6c50eec0c5e228e1945061dd0437c";
7832 };
7833 }
7834
7835 {
7836 name = "spdx_correct___spdx_correct_3.1.0.tgz";
7837 path = fetchurl {
7838 name = "spdx_correct___spdx_correct_3.1.0.tgz";
7839 url = "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz";
7840 sha1 = "fb83e504445268f154b074e218c87c003cd31df4";
7841 };
7842 }
7843
7844 {
7845 name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz";
7846 path = fetchurl {
7847 name = "spdx_exceptions___spdx_exceptions_2.2.0.tgz";
7848 url = "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz";
7849 sha1 = "2ea450aee74f2a89bfb94519c07fcd6f41322977";
7850 };
7851 }
7852
7853 {
7854 name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
7855 path = fetchurl {
7856 name = "spdx_expression_parse___spdx_expression_parse_3.0.0.tgz";
7857 url = "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz";
7858 sha1 = "99e119b7a5da00e05491c9fa338b7904823b41d0";
7859 };
7860 }
7861
7862 {
7863 name = "spdx_license_ids___spdx_license_ids_3.0.5.tgz";
7864 path = fetchurl {
7865 name = "spdx_license_ids___spdx_license_ids_3.0.5.tgz";
7866 url = "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz";
7867 sha1 = "3694b5804567a458d3c8045842a6358632f62654";
7868 };
7869 }
7870
7871 {
7872 name = "split_string___split_string_3.1.0.tgz";
7873 path = fetchurl {
7874 name = "split_string___split_string_3.1.0.tgz";
7875 url = "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz";
7876 sha1 = "7cb09dda3a86585705c64b39a6466038682e8fe2";
7877 };
7878 }
7879
7880 {
7881 name = "split___split_0.3.3.tgz";
7882 path = fetchurl {
7883 name = "split___split_0.3.3.tgz";
7884 url = "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz";
7885 sha1 = "cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f";
7886 };
7887 }
7888
7889 {
7890 name = "split___split_1.0.1.tgz";
7891 path = fetchurl {
7892 name = "split___split_1.0.1.tgz";
7893 url = "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz";
7894 sha1 = "605bd9be303aa59fb35f9229fbea0ddec9ea07d9";
7895 };
7896 }
7897
7898 {
7899 name = "sprintf_js___sprintf_js_1.0.3.tgz";
7900 path = fetchurl {
7901 name = "sprintf_js___sprintf_js_1.0.3.tgz";
7902 url = "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz";
7903 sha1 = "04e6926f662895354f3dd015203633b857297e2c";
7904 };
7905 }
7906
7907 {
7908 name = "sshpk___sshpk_1.16.1.tgz";
7909 path = fetchurl {
7910 name = "sshpk___sshpk_1.16.1.tgz";
7911 url = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz";
7912 sha1 = "fb661c0bef29b39db40769ee39fa70093d6f6877";
7913 };
7914 }
7915
7916 {
7917 name = "stable___stable_0.1.8.tgz";
7918 path = fetchurl {
7919 name = "stable___stable_0.1.8.tgz";
7920 url = "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz";
7921 sha1 = "836eb3c8382fe2936feaf544631017ce7d47a3cf";
7922 };
7923 }
7924
7925 {
7926 name = "static_extend___static_extend_0.1.2.tgz";
7927 path = fetchurl {
7928 name = "static_extend___static_extend_0.1.2.tgz";
7929 url = "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz";
7930 sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6";
7931 };
7932 }
7933
7934 {
7935 name = "statuses___statuses_1.5.0.tgz";
7936 path = fetchurl {
7937 name = "statuses___statuses_1.5.0.tgz";
7938 url = "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz";
7939 sha1 = "161c7dac177659fd9811f43771fa99381478628c";
7940 };
7941 }
7942
7943 {
7944 name = "statuses___statuses_1.2.1.tgz";
7945 path = fetchurl {
7946 name = "statuses___statuses_1.2.1.tgz";
7947 url = "https://registry.yarnpkg.com/statuses/-/statuses-1.2.1.tgz";
7948 sha1 = "dded45cc18256d51ed40aec142489d5c61026d28";
7949 };
7950 }
7951
7952 {
7953 name = "stdout_stream___stdout_stream_1.4.1.tgz";
7954 path = fetchurl {
7955 name = "stdout_stream___stdout_stream_1.4.1.tgz";
7956 url = "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz";
7957 sha1 = "5ac174cdd5cd726104aa0c0b2bd83815d8d535de";
7958 };
7959 }
7960
7961 {
7962 name = "stream_browserify___stream_browserify_0.1.3.tgz";
7963 path = fetchurl {
7964 name = "stream_browserify___stream_browserify_0.1.3.tgz";
7965 url = "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-0.1.3.tgz";
7966 sha1 = "95cf1b369772e27adaf46352265152689c6c4be9";
7967 };
7968 }
7969
7970 {
7971 name = "stream_combiner___stream_combiner_0.2.2.tgz";
7972 path = fetchurl {
7973 name = "stream_combiner___stream_combiner_0.2.2.tgz";
7974 url = "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz";
7975 sha1 = "aec8cbac177b56b6f4fa479ced8c1912cee52858";
7976 };
7977 }
7978
7979 {
7980 name = "stream_combiner___stream_combiner_0.0.4.tgz";
7981 path = fetchurl {
7982 name = "stream_combiner___stream_combiner_0.0.4.tgz";
7983 url = "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz";
7984 sha1 = "4d5e433c185261dde623ca3f44c586bcf5c4ad14";
7985 };
7986 }
7987
7988 {
7989 name = "stream_combiner___stream_combiner_0.1.0.tgz";
7990 path = fetchurl {
7991 name = "stream_combiner___stream_combiner_0.1.0.tgz";
7992 url = "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.1.0.tgz";
7993 sha1 = "0dc389a3c203f8f4d56368f95dde52eb9269b5be";
7994 };
7995 }
7996
7997 {
7998 name = "stream_consume___stream_consume_0.1.1.tgz";
7999 path = fetchurl {
8000 name = "stream_consume___stream_consume_0.1.1.tgz";
8001 url = "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.1.tgz";
8002 sha1 = "d3bdb598c2bd0ae82b8cac7ac50b1107a7996c48";
8003 };
8004 }
8005
8006 {
8007 name = "stream_shift___stream_shift_1.0.1.tgz";
8008 path = fetchurl {
8009 name = "stream_shift___stream_shift_1.0.1.tgz";
8010 url = "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz";
8011 sha1 = "d7088281559ab2778424279b0877da3c392d5a3d";
8012 };
8013 }
8014
8015 {
8016 name = "string_length___string_length_1.0.1.tgz";
8017 path = fetchurl {
8018 name = "string_length___string_length_1.0.1.tgz";
8019 url = "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz";
8020 sha1 = "56970fb1c38558e9e70b728bf3de269ac45adfac";
8021 };
8022 }
8023
8024 {
8025 name = "string_width___string_width_1.0.2.tgz";
8026 path = fetchurl {
8027 name = "string_width___string_width_1.0.2.tgz";
8028 url = "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz";
8029 sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
8030 };
8031 }
8032
8033 {
8034 name = "string_width___string_width_2.1.1.tgz";
8035 path = fetchurl {
8036 name = "string_width___string_width_2.1.1.tgz";
8037 url = "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz";
8038 sha1 = "ab93f27a8dc13d28cac815c462143a6d9012ae9e";
8039 };
8040 }
8041
8042 {
8043 name = "string_decoder___string_decoder_0.0.1.tgz";
8044 path = fetchurl {
8045 name = "string_decoder___string_decoder_0.0.1.tgz";
8046 url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.0.1.tgz";
8047 sha1 = "f5472d0a8d1650ec823752d24e6fd627b39bf141";
8048 };
8049 }
8050
8051 {
8052 name = "string_decoder___string_decoder_0.10.31.tgz";
8053 path = fetchurl {
8054 name = "string_decoder___string_decoder_0.10.31.tgz";
8055 url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz";
8056 sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
8057 };
8058 }
8059
8060 {
8061 name = "string_decoder___string_decoder_1.1.1.tgz";
8062 path = fetchurl {
8063 name = "string_decoder___string_decoder_1.1.1.tgz";
8064 url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz";
8065 sha1 = "9cf1611ba62685d7030ae9e4ba34149c3af03fc8";
8066 };
8067 }
8068
8069 {
8070 name = "stringify_object___stringify_object_0.2.1.tgz";
8071 path = fetchurl {
8072 name = "stringify_object___stringify_object_0.2.1.tgz";
8073 url = "https://registry.yarnpkg.com/stringify-object/-/stringify-object-0.2.1.tgz";
8074 sha1 = "b58be50b3ff5f371038c545d4332656bfded5620";
8075 };
8076 }
8077
8078 {
8079 name = "stringmap___stringmap_0.2.2.tgz";
8080 path = fetchurl {
8081 name = "stringmap___stringmap_0.2.2.tgz";
8082 url = "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz";
8083 sha1 = "556c137b258f942b8776f5b2ef582aa069d7d1b1";
8084 };
8085 }
8086
8087 {
8088 name = "stringset___stringset_0.2.1.tgz";
8089 path = fetchurl {
8090 name = "stringset___stringset_0.2.1.tgz";
8091 url = "https://registry.yarnpkg.com/stringset/-/stringset-0.2.1.tgz";
8092 sha1 = "ef259c4e349344377fcd1c913dd2e848c9c042b5";
8093 };
8094 }
8095
8096 {
8097 name = "stringstream___stringstream_0.0.6.tgz";
8098 path = fetchurl {
8099 name = "stringstream___stringstream_0.0.6.tgz";
8100 url = "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz";
8101 sha1 = "7880225b0d4ad10e30927d167a1d6f2fd3b33a72";
8102 };
8103 }
8104
8105 {
8106 name = "strip_ansi___strip_ansi_0.3.0.tgz";
8107 path = fetchurl {
8108 name = "strip_ansi___strip_ansi_0.3.0.tgz";
8109 url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz";
8110 sha1 = "25f48ea22ca79187f3174a4db8759347bb126220";
8111 };
8112 }
8113
8114 {
8115 name = "strip_ansi___strip_ansi_2.0.1.tgz";
8116 path = fetchurl {
8117 name = "strip_ansi___strip_ansi_2.0.1.tgz";
8118 url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-2.0.1.tgz";
8119 sha1 = "df62c1aa94ed2f114e1d0f21fd1d50482b79a60e";
8120 };
8121 }
8122
8123 {
8124 name = "strip_ansi___strip_ansi_3.0.1.tgz";
8125 path = fetchurl {
8126 name = "strip_ansi___strip_ansi_3.0.1.tgz";
8127 url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz";
8128 sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
8129 };
8130 }
8131
8132 {
8133 name = "strip_ansi___strip_ansi_4.0.0.tgz";
8134 path = fetchurl {
8135 name = "strip_ansi___strip_ansi_4.0.0.tgz";
8136 url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz";
8137 sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
8138 };
8139 }
8140
8141 {
8142 name = "strip_ansi___strip_ansi_0.1.1.tgz";
8143 path = fetchurl {
8144 name = "strip_ansi___strip_ansi_0.1.1.tgz";
8145 url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz";
8146 sha1 = "39e8a98d044d150660abe4a6808acf70bb7bc991";
8147 };
8148 }
8149
8150 {
8151 name = "strip_bom___strip_bom_1.0.0.tgz";
8152 path = fetchurl {
8153 name = "strip_bom___strip_bom_1.0.0.tgz";
8154 url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz";
8155 sha1 = "85b8862f3844b5a6d5ec8467a93598173a36f794";
8156 };
8157 }
8158
8159 {
8160 name = "strip_bom___strip_bom_2.0.0.tgz";
8161 path = fetchurl {
8162 name = "strip_bom___strip_bom_2.0.0.tgz";
8163 url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz";
8164 sha1 = "6219a85616520491f35788bdbf1447a99c7e6b0e";
8165 };
8166 }
8167
8168 {
8169 name = "strip_indent___strip_indent_1.0.1.tgz";
8170 path = fetchurl {
8171 name = "strip_indent___strip_indent_1.0.1.tgz";
8172 url = "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz";
8173 sha1 = "0c7962a6adefa7bbd4ac366460a638552ae1a0a2";
8174 };
8175 }
8176
8177 {
8178 name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
8179 path = fetchurl {
8180 name = "strip_json_comments___strip_json_comments_2.0.1.tgz";
8181 url = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
8182 sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
8183 };
8184 }
8185
8186 {
8187 name = "subarg___subarg_0.0.1.tgz";
8188 path = fetchurl {
8189 name = "subarg___subarg_0.0.1.tgz";
8190 url = "https://registry.yarnpkg.com/subarg/-/subarg-0.0.1.tgz";
8191 sha1 = "3d56b07dacfbc45bbb63f7672b43b63e46368e3a";
8192 };
8193 }
8194
8195 {
8196 name = "supports_color___supports_color_0.2.0.tgz";
8197 path = fetchurl {
8198 name = "supports_color___supports_color_0.2.0.tgz";
8199 url = "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz";
8200 sha1 = "d92de2694eb3f67323973d7ae3d8b55b4c22190a";
8201 };
8202 }
8203
8204 {
8205 name = "supports_color___supports_color_2.0.0.tgz";
8206 path = fetchurl {
8207 name = "supports_color___supports_color_2.0.0.tgz";
8208 url = "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz";
8209 sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
8210 };
8211 }
8212
8213 {
8214 name = "supports_color___supports_color_3.2.3.tgz";
8215 path = fetchurl {
8216 name = "supports_color___supports_color_3.2.3.tgz";
8217 url = "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz";
8218 sha1 = "65ac0504b3954171d8a64946b2ae3cbb8a5f54f6";
8219 };
8220 }
8221
8222 {
8223 name = "supports_color___supports_color_7.1.0.tgz";
8224 path = fetchurl {
8225 name = "supports_color___supports_color_7.1.0.tgz";
8226 url = "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz";
8227 sha1 = "68e32591df73e25ad1c4b49108a2ec507962bfd1";
8228 };
8229 }
8230
8231 {
8232 name = "syntax_error___syntax_error_1.1.6.tgz";
8233 path = fetchurl {
8234 name = "syntax_error___syntax_error_1.1.6.tgz";
8235 url = "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.1.6.tgz";
8236 sha1 = "b4549706d386cc1c1dc7c2423f18579b6cade710";
8237 };
8238 }
8239
8240 {
8241 name = "tar___tar_2.2.2.tgz";
8242 path = fetchurl {
8243 name = "tar___tar_2.2.2.tgz";
8244 url = "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz";
8245 sha1 = "0ca8848562c7299b8b446ff6a4d60cdbb23edc40";
8246 };
8247 }
8248
8249 {
8250 name = "tar___tar_4.4.13.tgz";
8251 path = fetchurl {
8252 name = "tar___tar_4.4.13.tgz";
8253 url = "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz";
8254 sha1 = "43b364bc52888d555298637b10d60790254ab525";
8255 };
8256 }
8257
8258 {
8259 name = "tar___tar_0.1.20.tgz";
8260 path = fetchurl {
8261 name = "tar___tar_0.1.20.tgz";
8262 url = "https://registry.yarnpkg.com/tar/-/tar-0.1.20.tgz";
8263 sha1 = "42940bae5b5f22c74483699126f9f3f27449cb13";
8264 };
8265 }
8266
8267 {
8268 name = "ternary_stream___ternary_stream_2.1.1.tgz";
8269 path = fetchurl {
8270 name = "ternary_stream___ternary_stream_2.1.1.tgz";
8271 url = "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-2.1.1.tgz";
8272 sha1 = "4ad64b98668d796a085af2c493885a435a8a8bfc";
8273 };
8274 }
8275
8276 {
8277 name = "textextensions___textextensions_1.0.2.tgz";
8278 path = fetchurl {
8279 name = "textextensions___textextensions_1.0.2.tgz";
8280 url = "https://registry.yarnpkg.com/textextensions/-/textextensions-1.0.2.tgz";
8281 sha1 = "65486393ee1f2bb039a60cbba05b0b68bd9501d2";
8282 };
8283 }
8284
8285 {
8286 name = "throttleit___throttleit_0.0.2.tgz";
8287 path = fetchurl {
8288 name = "throttleit___throttleit_0.0.2.tgz";
8289 url = "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz";
8290 sha1 = "cfedf88e60c00dd9697b61fdd2a8343a9b680eaf";
8291 };
8292 }
8293
8294 {
8295 name = "through2___through2_0.4.2.tgz";
8296 path = fetchurl {
8297 name = "through2___through2_0.4.2.tgz";
8298 url = "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz";
8299 sha1 = "dbf5866031151ec8352bb6c4db64a2292a840b9b";
8300 };
8301 }
8302
8303 {
8304 name = "through2___through2_0.5.1.tgz";
8305 path = fetchurl {
8306 name = "through2___through2_0.5.1.tgz";
8307 url = "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz";
8308 sha1 = "dfdd012eb9c700e2323fd334f38ac622ab372da7";
8309 };
8310 }
8311
8312 {
8313 name = "through2___through2_0.6.5.tgz";
8314 path = fetchurl {
8315 name = "through2___through2_0.6.5.tgz";
8316 url = "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz";
8317 sha1 = "41ab9c67b29d57209071410e1d7a7a968cd3ad48";
8318 };
8319 }
8320
8321 {
8322 name = "through2___through2_2.0.5.tgz";
8323 path = fetchurl {
8324 name = "through2___through2_2.0.5.tgz";
8325 url = "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz";
8326 sha1 = "01c1e39eb31d07cb7d03a96a70823260b23132cd";
8327 };
8328 }
8329
8330 {
8331 name = "through___through_2.3.8.tgz";
8332 path = fetchurl {
8333 name = "through___through_2.3.8.tgz";
8334 url = "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz";
8335 sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
8336 };
8337 }
8338
8339 {
8340 name = "through___through_2.2.7.tgz";
8341 path = fetchurl {
8342 name = "through___through_2.2.7.tgz";
8343 url = "https://registry.yarnpkg.com/through/-/through-2.2.7.tgz";
8344 sha1 = "6e8e21200191d4eb6a99f6f010df46aa1c6eb2bd";
8345 };
8346 }
8347
8348 {
8349 name = "tildify___tildify_1.2.0.tgz";
8350 path = fetchurl {
8351 name = "tildify___tildify_1.2.0.tgz";
8352 url = "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz";
8353 sha1 = "dcec03f55dca9b7aa3e5b04f21817eb56e63588a";
8354 };
8355 }
8356
8357 {
8358 name = "time_stamp___time_stamp_1.1.0.tgz";
8359 path = fetchurl {
8360 name = "time_stamp___time_stamp_1.1.0.tgz";
8361 url = "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz";
8362 sha1 = "764a5a11af50561921b133f3b44e618687e0f5c3";
8363 };
8364 }
8365
8366 {
8367 name = "timed_out___timed_out_2.0.0.tgz";
8368 path = fetchurl {
8369 name = "timed_out___timed_out_2.0.0.tgz";
8370 url = "https://registry.yarnpkg.com/timed-out/-/timed-out-2.0.0.tgz";
8371 sha1 = "f38b0ae81d3747d628001f41dafc652ace671c0a";
8372 };
8373 }
8374
8375 {
8376 name = "timers_browserify___timers_browserify_1.0.3.tgz";
8377 path = fetchurl {
8378 name = "timers_browserify___timers_browserify_1.0.3.tgz";
8379 url = "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.0.3.tgz";
8380 sha1 = "ffba70c9c12eed916fd67318e629ac6f32295551";
8381 };
8382 }
8383
8384 {
8385 name = "timers_ext___timers_ext_0.1.7.tgz";
8386 path = fetchurl {
8387 name = "timers_ext___timers_ext_0.1.7.tgz";
8388 url = "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz";
8389 sha1 = "6f57ad8578e07a3fb9f91d9387d65647555e25c6";
8390 };
8391 }
8392
8393 {
8394 name = "tmp___tmp_0.0.23.tgz";
8395 path = fetchurl {
8396 name = "tmp___tmp_0.0.23.tgz";
8397 url = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.23.tgz";
8398 sha1 = "de874aa5e974a85f0a32cdfdbd74663cb3bd9c74";
8399 };
8400 }
8401
8402 {
8403 name = "tmp___tmp_0.0.33.tgz";
8404 path = fetchurl {
8405 name = "tmp___tmp_0.0.33.tgz";
8406 url = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz";
8407 sha1 = "6d34335889768d21b2bcda0aa277ced3b1bfadf9";
8408 };
8409 }
8410
8411 {
8412 name = "to_array___to_array_0.1.4.tgz";
8413 path = fetchurl {
8414 name = "to_array___to_array_0.1.4.tgz";
8415 url = "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz";
8416 sha1 = "17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890";
8417 };
8418 }
8419
8420 {
8421 name = "to_fast_properties___to_fast_properties_1.0.3.tgz";
8422 path = fetchurl {
8423 name = "to_fast_properties___to_fast_properties_1.0.3.tgz";
8424 url = "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz";
8425 sha1 = "b83571fa4d8c25b82e231b06e3a3055de4ca1a47";
8426 };
8427 }
8428
8429 {
8430 name = "to_object_path___to_object_path_0.3.0.tgz";
8431 path = fetchurl {
8432 name = "to_object_path___to_object_path_0.3.0.tgz";
8433 url = "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz";
8434 sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af";
8435 };
8436 }
8437
8438 {
8439 name = "to_regex_range___to_regex_range_2.1.1.tgz";
8440 path = fetchurl {
8441 name = "to_regex_range___to_regex_range_2.1.1.tgz";
8442 url = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz";
8443 sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38";
8444 };
8445 }
8446
8447 {
8448 name = "to_regex___to_regex_3.0.2.tgz";
8449 path = fetchurl {
8450 name = "to_regex___to_regex_3.0.2.tgz";
8451 url = "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz";
8452 sha1 = "13cfdd9b336552f30b51f33a8ae1b42a7a7599ce";
8453 };
8454 }
8455
8456 {
8457 name = "toidentifier___toidentifier_1.0.0.tgz";
8458 path = fetchurl {
8459 name = "toidentifier___toidentifier_1.0.0.tgz";
8460 url = "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz";
8461 sha1 = "7e1be3470f1e77948bc43d94a3c8f4d7752ba553";
8462 };
8463 }
8464
8465 {
8466 name = "token_stream___token_stream_0.0.1.tgz";
8467 path = fetchurl {
8468 name = "token_stream___token_stream_0.0.1.tgz";
8469 url = "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz";
8470 sha1 = "ceeefc717a76c4316f126d0b9dbaa55d7e7df01a";
8471 };
8472 }
8473
8474 {
8475 name = "touch___touch_0.0.2.tgz";
8476 path = fetchurl {
8477 name = "touch___touch_0.0.2.tgz";
8478 url = "https://registry.yarnpkg.com/touch/-/touch-0.0.2.tgz";
8479 sha1 = "a65a777795e5cbbe1299499bdc42281ffb21b5f4";
8480 };
8481 }
8482
8483 {
8484 name = "tough_cookie___tough_cookie_4.0.0.tgz";
8485 path = fetchurl {
8486 name = "tough_cookie___tough_cookie_4.0.0.tgz";
8487 url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz";
8488 sha1 = "d822234eeca882f991f0f908824ad2622ddbece4";
8489 };
8490 }
8491
8492 {
8493 name = "tough_cookie___tough_cookie_2.5.0.tgz";
8494 path = fetchurl {
8495 name = "tough_cookie___tough_cookie_2.5.0.tgz";
8496 url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz";
8497 sha1 = "cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2";
8498 };
8499 }
8500
8501 {
8502 name = "traverse___traverse_0.3.9.tgz";
8503 path = fetchurl {
8504 name = "traverse___traverse_0.3.9.tgz";
8505 url = "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz";
8506 sha1 = "717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9";
8507 };
8508 }
8509
8510 {
8511 name = "trim_newlines___trim_newlines_1.0.0.tgz";
8512 path = fetchurl {
8513 name = "trim_newlines___trim_newlines_1.0.0.tgz";
8514 url = "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz";
8515 sha1 = "5887966bb582a4503a41eb524f7d35011815a613";
8516 };
8517 }
8518
8519 {
8520 name = "true_case_path___true_case_path_1.0.3.tgz";
8521 path = fetchurl {
8522 name = "true_case_path___true_case_path_1.0.3.tgz";
8523 url = "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz";
8524 sha1 = "f813b5a8c86b40da59606722b144e3225799f47d";
8525 };
8526 }
8527
8528 {
8529 name = "tryor___tryor_0.1.2.tgz";
8530 path = fetchurl {
8531 name = "tryor___tryor_0.1.2.tgz";
8532 url = "https://registry.yarnpkg.com/tryor/-/tryor-0.1.2.tgz";
8533 sha1 = "8145e4ca7caff40acde3ccf946e8b8bb75b4172b";
8534 };
8535 }
8536
8537 {
8538 name = "tty_browserify___tty_browserify_0.0.1.tgz";
8539 path = fetchurl {
8540 name = "tty_browserify___tty_browserify_0.0.1.tgz";
8541 url = "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz";
8542 sha1 = "3f05251ee17904dfd0677546670db9651682b811";
8543 };
8544 }
8545
8546 {
8547 name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
8548 path = fetchurl {
8549 name = "tunnel_agent___tunnel_agent_0.6.0.tgz";
8550 url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
8551 sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
8552 };
8553 }
8554
8555 {
8556 name = "tunnel_agent___tunnel_agent_0.3.0.tgz";
8557 path = fetchurl {
8558 name = "tunnel_agent___tunnel_agent_0.3.0.tgz";
8559 url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.3.0.tgz";
8560 sha1 = "ad681b68f5321ad2827c4cfb1b7d5df2cfe942ee";
8561 };
8562 }
8563
8564 {
8565 name = "tunnel_agent___tunnel_agent_0.4.3.tgz";
8566 path = fetchurl {
8567 name = "tunnel_agent___tunnel_agent_0.4.3.tgz";
8568 url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz";
8569 sha1 = "6373db76909fe570e08d73583365ed828a74eeeb";
8570 };
8571 }
8572
8573 {
8574 name = "tweetnacl___tweetnacl_0.14.5.tgz";
8575 path = fetchurl {
8576 name = "tweetnacl___tweetnacl_0.14.5.tgz";
8577 url = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz";
8578 sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
8579 };
8580 }
8581
8582 {
8583 name = "type_check___type_check_0.3.2.tgz";
8584 path = fetchurl {
8585 name = "type_check___type_check_0.3.2.tgz";
8586 url = "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz";
8587 sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
8588 };
8589 }
8590
8591 {
8592 name = "type_is___type_is_1.6.18.tgz";
8593 path = fetchurl {
8594 name = "type_is___type_is_1.6.18.tgz";
8595 url = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz";
8596 sha1 = "4e552cd05df09467dcbc4ef739de89f2cf37c131";
8597 };
8598 }
8599
8600 {
8601 name = "type___type_1.2.0.tgz";
8602 path = fetchurl {
8603 name = "type___type_1.2.0.tgz";
8604 url = "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz";
8605 sha1 = "848dd7698dafa3e54a6c479e759c4bc3f18847a0";
8606 };
8607 }
8608
8609 {
8610 name = "type___type_2.0.0.tgz";
8611 path = fetchurl {
8612 name = "type___type_2.0.0.tgz";
8613 url = "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz";
8614 sha1 = "5f16ff6ef2eb44f260494dae271033b29c09a9c3";
8615 };
8616 }
8617
8618 {
8619 name = "typedarray___typedarray_0.0.6.tgz";
8620 path = fetchurl {
8621 name = "typedarray___typedarray_0.0.6.tgz";
8622 url = "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz";
8623 sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
8624 };
8625 }
8626
8627 {
8628 name = "uglify_js___uglify_js_2.5.0.tgz";
8629 path = fetchurl {
8630 name = "uglify_js___uglify_js_2.5.0.tgz";
8631 url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.5.0.tgz";
8632 sha1 = "4ab5d65a4730ecb7a4fb62d3f499e2054d98fba1";
8633 };
8634 }
8635
8636 {
8637 name = "uglify_js___uglify_js_2.8.29.tgz";
8638 path = fetchurl {
8639 name = "uglify_js___uglify_js_2.8.29.tgz";
8640 url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz";
8641 sha1 = "29c5733148057bb4e1f75df35b7a9cb72e6a59dd";
8642 };
8643 }
8644
8645 {
8646 name = "uglify_js___uglify_js_3.8.1.tgz";
8647 path = fetchurl {
8648 name = "uglify_js___uglify_js_3.8.1.tgz";
8649 url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.8.1.tgz";
8650 sha1 = "43bb15ce6f545eaa0a64c49fd29375ea09fa0f93";
8651 };
8652 }
8653
8654 {
8655 name = "uglify_js___uglify_js_2.2.5.tgz";
8656 path = fetchurl {
8657 name = "uglify_js___uglify_js_2.2.5.tgz";
8658 url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.2.5.tgz";
8659 sha1 = "a6e02a70d839792b9780488b7b8b184c095c99c7";
8660 };
8661 }
8662
8663 {
8664 name = "uglify_js___uglify_js_2.3.6.tgz";
8665 path = fetchurl {
8666 name = "uglify_js___uglify_js_2.3.6.tgz";
8667 url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.3.6.tgz";
8668 sha1 = "fa0984770b428b7a9b2a8058f46355d14fef211a";
8669 };
8670 }
8671
8672 {
8673 name = "uglify_js___uglify_js_2.4.24.tgz";
8674 path = fetchurl {
8675 name = "uglify_js___uglify_js_2.4.24.tgz";
8676 url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.4.24.tgz";
8677 sha1 = "fad5755c1e1577658bb06ff9ab6e548c95bebd6e";
8678 };
8679 }
8680
8681 {
8682 name = "uglify_save_license___uglify_save_license_0.4.1.tgz";
8683 path = fetchurl {
8684 name = "uglify_save_license___uglify_save_license_0.4.1.tgz";
8685 url = "https://registry.yarnpkg.com/uglify-save-license/-/uglify-save-license-0.4.1.tgz";
8686 sha1 = "95726c17cc6fd171c3617e3bf4d8d82aa8c4cce1";
8687 };
8688 }
8689
8690 {
8691 name = "uglify_to_browserify___uglify_to_browserify_1.0.2.tgz";
8692 path = fetchurl {
8693 name = "uglify_to_browserify___uglify_to_browserify_1.0.2.tgz";
8694 url = "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz";
8695 sha1 = "6e0924d6bda6b5afe349e39a6d632850a0f882b7";
8696 };
8697 }
8698
8699 {
8700 name = "ultron___ultron_1.0.2.tgz";
8701 path = fetchurl {
8702 name = "ultron___ultron_1.0.2.tgz";
8703 url = "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz";
8704 sha1 = "ace116ab557cd197386a4e88f4685378c8b2e4fa";
8705 };
8706 }
8707
8708 {
8709 name = "umd___umd_2.0.0.tgz";
8710 path = fetchurl {
8711 name = "umd___umd_2.0.0.tgz";
8712 url = "https://registry.yarnpkg.com/umd/-/umd-2.0.0.tgz";
8713 sha1 = "749683b0d514728ae0e1b6195f5774afc0ad4f8f";
8714 };
8715 }
8716
8717 {
8718 name = "unc_path_regex___unc_path_regex_0.1.2.tgz";
8719 path = fetchurl {
8720 name = "unc_path_regex___unc_path_regex_0.1.2.tgz";
8721 url = "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz";
8722 sha1 = "e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa";
8723 };
8724 }
8725
8726 {
8727 name = "underscore.string___underscore.string_2.4.0.tgz";
8728 path = fetchurl {
8729 name = "underscore.string___underscore.string_2.4.0.tgz";
8730 url = "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz";
8731 sha1 = "8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b";
8732 };
8733 }
8734
8735 {
8736 name = "underscore___underscore_1.7.0.tgz";
8737 path = fetchurl {
8738 name = "underscore___underscore_1.7.0.tgz";
8739 url = "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz";
8740 sha1 = "6bbaf0877500d36be34ecaa584e0db9fef035209";
8741 };
8742 }
8743
8744 {
8745 name = "union_value___union_value_1.0.1.tgz";
8746 path = fetchurl {
8747 name = "union_value___union_value_1.0.1.tgz";
8748 url = "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz";
8749 sha1 = "0b6fe7b835aecda61c6ea4d4f02c14221e109847";
8750 };
8751 }
8752
8753 {
8754 name = "unique_stream___unique_stream_1.0.0.tgz";
8755 path = fetchurl {
8756 name = "unique_stream___unique_stream_1.0.0.tgz";
8757 url = "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz";
8758 sha1 = "d59a4a75427447d9aa6c91e70263f8d26a4b104b";
8759 };
8760 }
8761
8762 {
8763 name = "universalify___universalify_0.1.2.tgz";
8764 path = fetchurl {
8765 name = "universalify___universalify_0.1.2.tgz";
8766 url = "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz";
8767 sha1 = "b646f69be3942dabcecc9d6639c80dc105efaa66";
8768 };
8769 }
8770
8771 {
8772 name = "unpipe___unpipe_1.0.0.tgz";
8773 path = fetchurl {
8774 name = "unpipe___unpipe_1.0.0.tgz";
8775 url = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
8776 sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
8777 };
8778 }
8779
8780 {
8781 name = "unset_value___unset_value_1.0.0.tgz";
8782 path = fetchurl {
8783 name = "unset_value___unset_value_1.0.0.tgz";
8784 url = "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz";
8785 sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559";
8786 };
8787 }
8788
8789 {
8790 name = "update_notifier___update_notifier_0.2.2.tgz";
8791 path = fetchurl {
8792 name = "update_notifier___update_notifier_0.2.2.tgz";
8793 url = "https://registry.yarnpkg.com/update-notifier/-/update-notifier-0.2.2.tgz";
8794 sha1 = "e69b3a784b4e686a2acd98f5e66944591996e187";
8795 };
8796 }
8797
8798 {
8799 name = "uri_js___uri_js_4.2.2.tgz";
8800 path = fetchurl {
8801 name = "uri_js___uri_js_4.2.2.tgz";
8802 url = "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz";
8803 sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
8804 };
8805 }
8806
8807 {
8808 name = "urix___urix_0.1.0.tgz";
8809 path = fetchurl {
8810 name = "urix___urix_0.1.0.tgz";
8811 url = "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz";
8812 sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72";
8813 };
8814 }
8815
8816 {
8817 name = "url___url_0.10.3.tgz";
8818 path = fetchurl {
8819 name = "url___url_0.10.3.tgz";
8820 url = "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz";
8821 sha1 = "021e4d9c7705f21bbf37d03ceb58767402774c64";
8822 };
8823 }
8824
8825 {
8826 name = "use___use_3.1.1.tgz";
8827 path = fetchurl {
8828 name = "use___use_3.1.1.tgz";
8829 url = "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz";
8830 sha1 = "d50c8cac79a19fbc20f2911f56eb973f4e10070f";
8831 };
8832 }
8833
8834 {
8835 name = "user_home___user_home_1.1.1.tgz";
8836 path = fetchurl {
8837 name = "user_home___user_home_1.1.1.tgz";
8838 url = "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz";
8839 sha1 = "2b5be23a32b63a7c9deb8d0f28d485724a3df190";
8840 };
8841 }
8842
8843 {
8844 name = "useragent___useragent_2.3.0.tgz";
8845 path = fetchurl {
8846 name = "useragent___useragent_2.3.0.tgz";
8847 url = "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz";
8848 sha1 = "217f943ad540cb2128658ab23fc960f6a88c9972";
8849 };
8850 }
8851
8852 {
8853 name = "util_deprecate___util_deprecate_1.0.2.tgz";
8854 path = fetchurl {
8855 name = "util_deprecate___util_deprecate_1.0.2.tgz";
8856 url = "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz";
8857 sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
8858 };
8859 }
8860
8861 {
8862 name = "util___util_0.10.3.tgz";
8863 path = fetchurl {
8864 name = "util___util_0.10.3.tgz";
8865 url = "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz";
8866 sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
8867 };
8868 }
8869
8870 {
8871 name = "util___util_0.10.4.tgz";
8872 path = fetchurl {
8873 name = "util___util_0.10.4.tgz";
8874 url = "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz";
8875 sha1 = "3aa0125bfe668a4672de58857d3ace27ecb76901";
8876 };
8877 }
8878
8879 {
8880 name = "utils_merge___utils_merge_1.0.1.tgz";
8881 path = fetchurl {
8882 name = "utils_merge___utils_merge_1.0.1.tgz";
8883 url = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz";
8884 sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
8885 };
8886 }
8887
8888 {
8889 name = "uuid___uuid_2.0.3.tgz";
8890 path = fetchurl {
8891 name = "uuid___uuid_2.0.3.tgz";
8892 url = "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz";
8893 sha1 = "67e2e863797215530dff318e5bf9dcebfd47b21a";
8894 };
8895 }
8896
8897 {
8898 name = "uuid___uuid_3.4.0.tgz";
8899 path = fetchurl {
8900 name = "uuid___uuid_3.4.0.tgz";
8901 url = "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz";
8902 sha1 = "b23e4358afa8a202fe7a100af1f5f883f02007ee";
8903 };
8904 }
8905
8906 {
8907 name = "uuid___uuid_1.4.2.tgz";
8908 path = fetchurl {
8909 name = "uuid___uuid_1.4.2.tgz";
8910 url = "https://registry.yarnpkg.com/uuid/-/uuid-1.4.2.tgz";
8911 sha1 = "453019f686966a6df83cdc5244e7c990ecc332fc";
8912 };
8913 }
8914
8915 {
8916 name = "v8flags___v8flags_2.1.1.tgz";
8917 path = fetchurl {
8918 name = "v8flags___v8flags_2.1.1.tgz";
8919 url = "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz";
8920 sha1 = "aab1a1fa30d45f88dd321148875ac02c0b55e5b4";
8921 };
8922 }
8923
8924 {
8925 name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
8926 path = fetchurl {
8927 name = "validate_npm_package_license___validate_npm_package_license_3.0.4.tgz";
8928 url = "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz";
8929 sha1 = "fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a";
8930 };
8931 }
8932
8933 {
8934 name = "verror___verror_1.10.0.tgz";
8935 path = fetchurl {
8936 name = "verror___verror_1.10.0.tgz";
8937 url = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz";
8938 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
8939 };
8940 }
8941
8942 {
8943 name = "vinyl_fs___vinyl_fs_0.3.14.tgz";
8944 path = fetchurl {
8945 name = "vinyl_fs___vinyl_fs_0.3.14.tgz";
8946 url = "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz";
8947 sha1 = "9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6";
8948 };
8949 }
8950
8951 {
8952 name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.1.4.tgz";
8953 path = fetchurl {
8954 name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.1.4.tgz";
8955 url = "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.1.4.tgz";
8956 sha1 = "c5fcbd43e2f238423c2dc98bddd6f79b72bc345b";
8957 };
8958 }
8959
8960 {
8961 name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.2.1.tgz";
8962 path = fetchurl {
8963 name = "vinyl_sourcemaps_apply___vinyl_sourcemaps_apply_0.2.1.tgz";
8964 url = "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz";
8965 sha1 = "ab6549d61d172c2b1b87be5c508d239c8ef87705";
8966 };
8967 }
8968
8969 {
8970 name = "vinyl___vinyl_0.2.3.tgz";
8971 path = fetchurl {
8972 name = "vinyl___vinyl_0.2.3.tgz";
8973 url = "https://registry.yarnpkg.com/vinyl/-/vinyl-0.2.3.tgz";
8974 sha1 = "bca938209582ec5a49ad538a00fa1f125e513252";
8975 };
8976 }
8977
8978 {
8979 name = "vinyl___vinyl_0.4.6.tgz";
8980 path = fetchurl {
8981 name = "vinyl___vinyl_0.4.6.tgz";
8982 url = "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz";
8983 sha1 = "2f356c87a550a255461f36bbeb2a5ba8bf784847";
8984 };
8985 }
8986
8987 {
8988 name = "vinyl___vinyl_0.5.3.tgz";
8989 path = fetchurl {
8990 name = "vinyl___vinyl_0.5.3.tgz";
8991 url = "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz";
8992 sha1 = "b0455b38fc5e0cf30d4325132e461970c2091cde";
8993 };
8994 }
8995
8996 {
8997 name = "vinyl___vinyl_1.2.0.tgz";
8998 path = fetchurl {
8999 name = "vinyl___vinyl_1.2.0.tgz";
9000 url = "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz";
9001 sha1 = "5c88036cf565e5df05558bfc911f8656df218884";
9002 };
9003 }
9004
9005 {
9006 name = "vinyl___vinyl_2.2.0.tgz";
9007 path = fetchurl {
9008 name = "vinyl___vinyl_2.2.0.tgz";
9009 url = "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz";
9010 sha1 = "d85b07da96e458d25b2ffe19fece9f2caa13ed86";
9011 };
9012 }
9013
9014 {
9015 name = "vm_browserify___vm_browserify_0.0.4.tgz";
9016 path = fetchurl {
9017 name = "vm_browserify___vm_browserify_0.0.4.tgz";
9018 url = "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz";
9019 sha1 = "5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73";
9020 };
9021 }
9022
9023 {
9024 name = "void_elements___void_elements_2.0.1.tgz";
9025 path = fetchurl {
9026 name = "void_elements___void_elements_2.0.1.tgz";
9027 url = "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz";
9028 sha1 = "c066afb582bb1cb4128d60ea92392e94d5e9dbec";
9029 };
9030 }
9031
9032 {
9033 name = "websocket_driver___websocket_driver_0.7.3.tgz";
9034 path = fetchurl {
9035 name = "websocket_driver___websocket_driver_0.7.3.tgz";
9036 url = "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz";
9037 sha1 = "a2d4e0d4f4f116f1e6297eba58b05d430100e9f9";
9038 };
9039 }
9040
9041 {
9042 name = "websocket_extensions___websocket_extensions_0.1.3.tgz";
9043 path = fetchurl {
9044 name = "websocket_extensions___websocket_extensions_0.1.3.tgz";
9045 url = "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz";
9046 sha1 = "5d2ff22977003ec687a4b87073dfbbac146ccf29";
9047 };
9048 }
9049
9050 {
9051 name = "which_module___which_module_1.0.0.tgz";
9052 path = fetchurl {
9053 name = "which_module___which_module_1.0.0.tgz";
9054 url = "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz";
9055 sha1 = "bba63ca861948994ff307736089e3b96026c2a4f";
9056 };
9057 }
9058
9059 {
9060 name = "which___which_1.3.1.tgz";
9061 path = fetchurl {
9062 name = "which___which_1.3.1.tgz";
9063 url = "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz";
9064 sha1 = "a45043d54f5805316da8d62f9f50918d3da70b0a";
9065 };
9066 }
9067
9068 {
9069 name = "which___which_1.0.9.tgz";
9070 path = fetchurl {
9071 name = "which___which_1.0.9.tgz";
9072 url = "https://registry.yarnpkg.com/which/-/which-1.0.9.tgz";
9073 sha1 = "460c1da0f810103d0321a9b633af9e575e64486f";
9074 };
9075 }
9076
9077 {
9078 name = "wide_align___wide_align_1.1.3.tgz";
9079 path = fetchurl {
9080 name = "wide_align___wide_align_1.1.3.tgz";
9081 url = "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz";
9082 sha1 = "ae074e6bdc0c14a431e804e624549c633b000457";
9083 };
9084 }
9085
9086 {
9087 name = "window_size___window_size_0.1.0.tgz";
9088 path = fetchurl {
9089 name = "window_size___window_size_0.1.0.tgz";
9090 url = "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz";
9091 sha1 = "5438cd2ea93b202efa3a19fe8887aee7c94f9c9d";
9092 };
9093 }
9094
9095 {
9096 name = "with___with_5.1.1.tgz";
9097 path = fetchurl {
9098 name = "with___with_5.1.1.tgz";
9099 url = "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz";
9100 sha1 = "fa4daa92daf32c4ea94ed453c81f04686b575dfe";
9101 };
9102 }
9103
9104 {
9105 name = "word_wrap___word_wrap_1.2.3.tgz";
9106 path = fetchurl {
9107 name = "word_wrap___word_wrap_1.2.3.tgz";
9108 url = "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz";
9109 sha1 = "610636f6b1f703891bd34771ccb17fb93b47079c";
9110 };
9111 }
9112
9113 {
9114 name = "wordwrap___wordwrap_0.0.2.tgz";
9115 path = fetchurl {
9116 name = "wordwrap___wordwrap_0.0.2.tgz";
9117 url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz";
9118 sha1 = "b79669bb42ecb409f83d583cad52ca17eaa1643f";
9119 };
9120 }
9121
9122 {
9123 name = "wordwrap___wordwrap_1.0.0.tgz";
9124 path = fetchurl {
9125 name = "wordwrap___wordwrap_1.0.0.tgz";
9126 url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz";
9127 sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
9128 };
9129 }
9130
9131 {
9132 name = "wordwrap___wordwrap_0.0.3.tgz";
9133 path = fetchurl {
9134 name = "wordwrap___wordwrap_0.0.3.tgz";
9135 url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz";
9136 sha1 = "a3d5da6cd5c0bc0008d37234bbaf1bed63059107";
9137 };
9138 }
9139
9140 {
9141 name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
9142 path = fetchurl {
9143 name = "wrap_ansi___wrap_ansi_2.1.0.tgz";
9144 url = "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz";
9145 sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85";
9146 };
9147 }
9148
9149 {
9150 name = "wrappy___wrappy_1.0.2.tgz";
9151 path = fetchurl {
9152 name = "wrappy___wrappy_1.0.2.tgz";
9153 url = "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz";
9154 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
9155 };
9156 }
9157
9158 {
9159 name = "ws___ws_1.1.5.tgz";
9160 path = fetchurl {
9161 name = "ws___ws_1.1.5.tgz";
9162 url = "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz";
9163 sha1 = "cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51";
9164 };
9165 }
9166
9167 {
9168 name = "wtf_8___wtf_8_1.0.0.tgz";
9169 path = fetchurl {
9170 name = "wtf_8___wtf_8_1.0.0.tgz";
9171 url = "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz";
9172 sha1 = "392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a";
9173 };
9174 }
9175
9176 {
9177 name = "xdg_basedir___xdg_basedir_1.0.1.tgz";
9178 path = fetchurl {
9179 name = "xdg_basedir___xdg_basedir_1.0.1.tgz";
9180 url = "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-1.0.1.tgz";
9181 sha1 = "14ff8f63a4fdbcb05d5b6eea22b36f3033b9f04e";
9182 };
9183 }
9184
9185 {
9186 name = "xmlhttprequest_ssl___xmlhttprequest_ssl_1.5.3.tgz";
9187 path = fetchurl {
9188 name = "xmlhttprequest_ssl___xmlhttprequest_ssl_1.5.3.tgz";
9189 url = "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz";
9190 sha1 = "185a888c04eca46c3e4070d99f7b49de3528992d";
9191 };
9192 }
9193
9194 {
9195 name = "xtend___xtend_4.0.2.tgz";
9196 path = fetchurl {
9197 name = "xtend___xtend_4.0.2.tgz";
9198 url = "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz";
9199 sha1 = "bb72779f5fa465186b1f438f674fa347fdb5db54";
9200 };
9201 }
9202
9203 {
9204 name = "xtend___xtend_3.0.0.tgz";
9205 path = fetchurl {
9206 name = "xtend___xtend_3.0.0.tgz";
9207 url = "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz";
9208 sha1 = "5cce7407baf642cba7becda568111c493f59665a";
9209 };
9210 }
9211
9212 {
9213 name = "xtend___xtend_2.1.2.tgz";
9214 path = fetchurl {
9215 name = "xtend___xtend_2.1.2.tgz";
9216 url = "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz";
9217 sha1 = "6efecc2a4dad8e6962c4901b337ce7ba87b5d28b";
9218 };
9219 }
9220
9221 {
9222 name = "y18n___y18n_3.2.1.tgz";
9223 path = fetchurl {
9224 name = "y18n___y18n_3.2.1.tgz";
9225 url = "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz";
9226 sha1 = "6d15fba884c08679c0d77e88e7759e811e07fa41";
9227 };
9228 }
9229
9230 {
9231 name = "yallist___yallist_2.1.2.tgz";
9232 path = fetchurl {
9233 name = "yallist___yallist_2.1.2.tgz";
9234 url = "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz";
9235 sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
9236 };
9237 }
9238
9239 {
9240 name = "yallist___yallist_3.1.1.tgz";
9241 path = fetchurl {
9242 name = "yallist___yallist_3.1.1.tgz";
9243 url = "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz";
9244 sha1 = "dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd";
9245 };
9246 }
9247
9248 {
9249 name = "yargs_parser___yargs_parser_5.0.0.tgz";
9250 path = fetchurl {
9251 name = "yargs_parser___yargs_parser_5.0.0.tgz";
9252 url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz";
9253 sha1 = "275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a";
9254 };
9255 }
9256
9257 {
9258 name = "yargs___yargs_7.1.0.tgz";
9259 path = fetchurl {
9260 name = "yargs___yargs_7.1.0.tgz";
9261 url = "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz";
9262 sha1 = "6ba318eb16961727f5d284f8ea003e8d6154d0c8";
9263 };
9264 }
9265
9266 {
9267 name = "yargs___yargs_3.10.0.tgz";
9268 path = fetchurl {
9269 name = "yargs___yargs_3.10.0.tgz";
9270 url = "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz";
9271 sha1 = "f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1";
9272 };
9273 }
9274
9275 {
9276 name = "yargs___yargs_3.5.4.tgz";
9277 path = fetchurl {
9278 name = "yargs___yargs_3.5.4.tgz";
9279 url = "https://registry.yarnpkg.com/yargs/-/yargs-3.5.4.tgz";
9280 sha1 = "d8aff8f665e94c34bd259bdebd1bfaf0ddd35361";
9281 };
9282 }
9283
9284 {
9285 name = "yeast___yeast_0.1.2.tgz";
9286 path = fetchurl {
9287 name = "yeast___yeast_0.1.2.tgz";
9288 url = "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz";
9289 sha1 = "008e06d8094320c372dbc2f8ed76a0ca6c8ac419";
9290 };
9291 }
9292 ];
9293}
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 @@
1from buildbot.plugins import util, steps, schedulers
2from buildbot_buildslist import BuildsList
3from shutil import which
4
5__all__ = [
6 "force_scheduler", "deploy_scheduler", "git_hook_scheduler",
7 "clean_branch", "package_and_upload", "AppriseStatusPush",
8 "XMPPStatusPush", "NixShellCommand",
9 "all_builder_names", "compute_build_infos", "deploy_ssh_command",
10 "configure_apprise_push",
11 "configure_xmpp_push", "deploy_hook_scheduler",
12 ]
13
14# Small helpers"
15@util.renderer
16def clean_branch(props):
17 if props.hasProperty("branch") and len(props["branch"]) > 0:
18 return props["branch"].replace("/", "_")
19 else:
20 return "HEAD"
21
22def package_and_upload(package, package_dest, package_url):
23 return [
24 steps.ShellCommand(name="build package",
25 logEnviron=False, haltOnFailure=True,
26 command=["git", "archive", "HEAD", "-o", package]),
27
28 steps.FileUpload(name="upload package", workersrc=package,
29 masterdest=package_dest,
30 url=package_url, mode=0o644),
31
32 steps.ShellCommand(name="cleanup package", logEnviron=False,
33 haltOnFailure=True, alwaysRun=True,
34 command=["rm", "-f", package]),
35 ]
36
37# Steps
38class NixShellCommand(steps.ShellCommand):
39 def __init__(self, command=None, nixPackages=[], pure=True, nixFile=None, nixIncludes={}, nixArgs={}, **kwargs):
40 oldpath = kwargs.get("env", {}).get("PATH", None)
41 if which("nix-shell", path=oldpath) is None:
42 kwargs["env"] = kwargs.get("env", {})
43 if isinstance(oldpath, str):
44 kwargs["env"]["PATH"] = "/run/current-system/sw/bin:" + oldpath
45 elif isinstance(oldpath, list):
46 kwargs["env"]["PATH"] = ["/run/current-system/sw/bin"] + oldpath
47 nixcommand = ["nix-shell"]
48 for k, v in nixArgs.items():
49 nixcommand.append("--arg")
50 nixcommand.append(k)
51 nixcommand.append(v)
52 if pure:
53 nixcommand.append("--pure")
54 for k, v in nixIncludes.items():
55 nixcommand.append("-I")
56 nixcommand.append("{}={}".format(k, v))
57 nixcommand.append("--run")
58 nixcommand.append(command)
59 if len(nixPackages) > 0:
60 nixcommand.append("-p")
61 nixcommand += nixPackages
62 elif nixFile is not None:
63 nixcommand.append(nixFile)
64 super().__init__(command=nixcommand, **kwargs)
65
66# Schedulers
67def force_scheduler(name, builders, nobranch=False):
68 if nobranch:
69 branch = util.FixedParameter(name="branch", default="")
70 else:
71 branch=util.StringParameter(name="branch", label="Git reference (tag, branch)", required=True)
72
73 return schedulers.ForceScheduler(name=name,
74 label="Force build", buttonName="Force build",
75 reason=util.StringParameter(name="reason", label="Reason", default="Force build"),
76 codebases=[
77 util.CodebaseParameter("",
78 branch=branch,
79 revision=util.FixedParameter(name="revision", default=""),
80 repository=util.FixedParameter(name="repository", default=""),
81 project=util.FixedParameter(name="project", default=""),
82 ),
83 ],
84 username=util.FixedParameter(name="username", default="Web button"),
85 builderNames=builders)
86
87def deploy_scheduler(name, builders):
88 return schedulers.ForceScheduler(name=name,
89 builderNames=builders,
90 label="Deploy built package", buttonName="Deploy",
91 username=util.FixedParameter(name="username", default="Web button"),
92 codebases=[
93 util.CodebaseParameter(codebase="",
94 branch=util.FixedParameter(name="branch", default=""),
95 revision=util.FixedParameter(name="revision", default=""),
96 repository=util.FixedParameter(name="repository", default=""),
97 project=util.FixedParameter(name="project", default=""))],
98 reason=util.FixedParameter(name="reason", default="Deploy"),
99 properties=[
100 util.ChoiceStringParameter(label="Environment",
101 name="environment", default="integration",
102 choices=["integration", "production"]),
103 BuildsList(label="Build to deploy", name="build"),
104 ]
105 )
106
107def git_hook_scheduler(project, builders=[], timer=1):
108 if len(builders) == 0:
109 builders = ["{}_build".format(project)]
110 return schedulers.AnyBranchScheduler(
111 change_filter=util.ChangeFilter(category="gitolite-hooks", project=project),
112 name="{}_git_hook".format(project), treeStableTimer=timer, builderNames=builders)
113
114def deploy_hook_scheduler(project, builders, timer=1):
115 return schedulers.AnyBranchScheduler(
116 change_filter=util.ChangeFilter(category="deploy_webhook", project=project),
117 name="{}_deploy".format(project), treeStableTimer=timer, builderNames=builders)
118
119# Builders
120def all_builder_names(c):
121 return [builder.name for builder in c['builders']]
122
123# Apprise/XMPP status push
124from buildbot.reporters.http import HttpStatusPushBase
125from twisted.internet import defer
126from twisted.python import log
127from buildbot.reporters import utils
128from buildbot.process import results
129from twisted.words.protocols.jabber.jid import JID
130from wokkel import client, xmppim
131from functools import partial
132import apprise
133
134class AppriseStatusPush(HttpStatusPushBase):
135 name = "AppriseStatusPush"
136
137 @defer.inlineCallbacks
138 def reconfigService(self, appriseUrls, **kwargs):
139 self.appriseUrls = appriseUrls
140 yield HttpStatusPushBase.reconfigService(self, **kwargs)
141
142 @defer.inlineCallbacks
143 def send(self, build):
144 yield utils.getDetailsForBuild(self.master, build, wantProperties=True)
145 appobject = apprise.Apprise()
146 message = self.format(build)
147 for url in self.appriseUrls:
148 appobject.add(url.format(**message))
149 yield appobject.notify(title=message["title"], body=message["text"])
150
151 def format(self, build):
152 if "environment" in build["properties"]:
153 msg = "{} environment".format(build["properties"]["environment"][0])
154 if "build" in build["properties"]:
155 msg = "of archive {} in ".format(build["properties"]["build"][0]) + msg
156 elif len(build["buildset"]["sourcestamps"][0]["branch"] or []) > 0:
157 msg = "revision {}".format(build["buildset"]["sourcestamps"][0]["branch"])
158 else:
159 msg = "build"
160
161 if build["complete"]:
162 timedelta = int((build["complete_at"] - build["started_at"]).total_seconds())
163 hours, rest = divmod(timedelta, 3600)
164 minutes, seconds = divmod(rest, 60)
165 if hours > 0:
166 duration = "{}h {}min {}s".format(hours, minutes, seconds)
167 elif minutes > 0:
168 duration = "{}min {}s".format(minutes, seconds)
169 else:
170 duration = "{}s".format(seconds)
171
172 text = "Build {} ({}) of {}'s {} was {} in {}.".format(
173 build["number"], build["url"],
174 build["builder"]["name"],
175 msg,
176 results.Results[build["results"]],
177 duration,
178 )
179 else:
180 text = "Build {} ({}) of {}'s {} started.".format(
181 build["number"], build["url"],
182 build["builder"]["name"],
183 msg,
184 )
185 return {
186 "username": "Buildbot",
187 "image_url": "http://docs.buildbot.net/current/_static/icon.png",
188 "text": text,
189 "title": "",
190 }
191
192def configure_apprise_push(c, secrets_file, builders):
193 c['services'].append(AppriseStatusPush(
194 name="apprise_status", builders=builders,
195 appriseUrls=open(secrets_file + "/apprise_webhooks", "r").read().split("\n")))
196
197class XMPPStatusPush(HttpStatusPushBase):
198 name = "XMPPStatusPush"
199
200 @defer.inlineCallbacks
201 def reconfigService(self, password, recipients, **kwargs):
202 yield HttpStatusPushBase.reconfigService(self, **kwargs)
203 self.password = password
204 self.recipients = recipients
205
206 @defer.inlineCallbacks
207 def send(self, build):
208 yield utils.getDetailsForBuild(self.master, build, wantProperties=True)
209 body = self.format(build)
210 factory = client.DeferredClientFactory(JID("notify_bot@immae.fr/buildbot"), self.password)
211 d = client.clientCreator(factory)
212 def send_message(recipient, stream):
213 message = xmppim.Message(recipient=JID(recipient), body=body)
214 message.stanzaType = 'chat'
215 stream.send(message.toElement())
216 # To allow chaining
217 return stream
218 for recipient in self.recipients:
219 d.addCallback(partial(send_message, recipient))
220 d.addCallback(lambda _: factory.streamManager.xmlstream.sendFooter())
221 d.addErrback(log.err)
222
223 def format(self, build):
224 if "environment" in build["properties"]:
225 msg = "{} environment".format(build["properties"]["environment"][0])
226 if "build" in build["properties"]:
227 msg = "of archive {} in ".format(build["properties"]["build"][0]) + msg
228 elif len(build["buildset"]["sourcestamps"][0]["branch"] or []) > 0:
229 msg = "revision {}".format(build["buildset"]["sourcestamps"][0]["branch"])
230 else:
231 msg = "build"
232
233 if build["complete"]:
234 timedelta = int((build["complete_at"] - build["started_at"]).total_seconds())
235 hours, rest = divmod(timedelta, 3600)
236 minutes, seconds = divmod(rest, 60)
237 if hours > 0:
238 duration = "{}h {}min {}s".format(hours, minutes, seconds)
239 elif minutes > 0:
240 duration = "{}min {}s".format(minutes, seconds)
241 else:
242 duration = "{}s".format(seconds)
243
244 text = "Build {} ( {} ) of {}'s {} was {} in {}.".format(
245 build["number"], build["url"],
246 build["builder"]["name"],
247 msg,
248 results.Results[build["results"]],
249 duration,
250 )
251 else:
252 text = "Build {} ( {} ) of {}'s {} started.".format(
253 build["number"], build["url"],
254 build["builder"]["name"],
255 msg,
256 )
257
258 return text
259
260def configure_xmpp_push(c, secrets_file, builders, recipients):
261 c['services'].append(XMPPStatusPush(
262 name="xmpp_status", builders=builders, recipients=recipients,
263 password=open(secrets_file + "/notify_xmpp_password", "r").read().rstrip()))
264
265# LDAP edit
266from buildbot.process.buildstep import FAILURE
267from buildbot.process.buildstep import SUCCESS
268from buildbot.process.buildstep import BuildStep
269
270def compute_build_infos(prefix, release_path):
271 @util.renderer
272 def compute(props):
273 import re, hashlib
274 build_file = props.getProperty("build")
275 package_dest = "{}/{}".format(release_path, build_file)
276 version = re.match(r"{0}_(.*).tar.gz".format(prefix), build_file).group(1)
277 with open(package_dest, "rb") as f:
278 sha = hashlib.sha256(f.read()).hexdigest()
279 return {
280 "build_version": version,
281 "build_hash": sha,
282 }
283 return compute
284
285def deploy_ssh_command(ssh_key_path, deploy_hosts):
286 @util.renderer
287 def compute(props):
288 environment = props["environment"] if props.hasProperty("environment") else "integration"
289 ssh_command = [
290 "ssh", "-o", "UserKnownHostsFile=/dev/null", "-o", "StrictHostKeyChecking=no", "-o", "CheckHostIP=no",
291 "-i", ssh_key_path ]
292 return ssh_command + deploy_hosts.get(environment, ["host.invalid"])
293 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 @@
1# This file was part of Buildbot. Buildbot is free software: you can
2# redistribute it and/or modify it under the terms of the GNU General Public
3# License as published by the Free Software Foundation, version 2.
4#
5# This program is distributed in the hope that it will be useful, but WITHOUT
6# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
7# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
8# details.
9#
10# You should have received a copy of the GNU General Public License along with
11# this program; if not, write to the Free Software Foundation, Inc., 51
12# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
13#
14# Portions Copyright Buildbot Team Members
15# Portions Copyright 2010 Isotoma Limited
16
17
18import os
19
20from twisted.internet import defer
21from twisted.internet import threads
22from twisted.internet import utils
23from twisted.python import failure
24from twisted.python import log
25
26from buildbot import config
27from buildbot.util.eventual import eventually
28from buildbot.worker import AbstractLatentWorker
29
30try:
31 import libvirt
32except ImportError:
33 libvirt = None
34
35import random
36import string
37
38def random_string_generator():
39 chars = string.ascii_letters
40 return ''.join(random.choice(chars) for x in range(6))
41
42class WorkQueue:
43
44 """
45 I am a class that turns parallel access into serial access.
46
47 I exist because we want to run libvirt access in threads as we don't
48 trust calls not to block, but under load libvirt doesn't seem to like
49 this kind of threaded use.
50 """
51
52 def __init__(self):
53 self.queue = []
54
55 def _process(self):
56 log.msg("Looking to start a piece of work now...")
57
58 # Is there anything to do?
59 if not self.queue:
60 log.msg("_process called when there is no work")
61 return
62
63 # Peek at the top of the stack - get a function to call and
64 # a deferred to fire when its all over
65 d, next_operation, args, kwargs = self.queue[0]
66
67 # Start doing some work - expects a deferred
68 try:
69 d2 = next_operation(*args, **kwargs)
70 except Exception:
71 d2 = defer.fail()
72
73 # Whenever a piece of work is done, whether it worked or not
74 # call this to schedule the next piece of work
75 @d2.addBoth
76 def _work_done(res):
77 log.msg("Completed a piece of work")
78 self.queue.pop(0)
79 if self.queue:
80 log.msg("Preparing next piece of work")
81 eventually(self._process)
82 return res
83
84 # When the work is done, trigger d
85 d2.chainDeferred(d)
86
87 def execute(self, cb, *args, **kwargs):
88 kickstart_processing = not self.queue
89 d = defer.Deferred()
90 self.queue.append((d, cb, args, kwargs))
91 if kickstart_processing:
92 self._process()
93 return d
94
95 def executeInThread(self, cb, *args, **kwargs):
96 return self.execute(threads.deferToThread, cb, *args, **kwargs)
97
98
99# A module is effectively a singleton class, so this is OK
100queue = WorkQueue()
101
102
103class Domain:
104
105 """
106 I am a wrapper around a libvirt Domain object
107 """
108
109 def __init__(self, connection, domain):
110 self.connection = connection
111 self.domain = domain
112
113 def name(self):
114 return queue.executeInThread(self.domain.name)
115
116 def create(self):
117 return queue.executeInThread(self.domain.create)
118
119 def shutdown(self):
120 return queue.executeInThread(self.domain.shutdown)
121
122 def destroy(self):
123 return queue.executeInThread(self.domain.destroy)
124
125class Volume:
126 def __init__(self, connection, volume):
127 self.connection = connection
128 self.volume = volume
129
130 @defer.inlineCallbacks
131 def destroy(self):
132 yield queue.executeInThread(self.volume.wipe)
133 yield queue.executeInThread(self.volume.delete)
134
135class Pool:
136 VolumeClass = Volume
137 def __init__(self, connection, pool):
138 self.connection = connection
139 self.pool = pool
140
141 @defer.inlineCallbacks
142 def create_volume(self, xml):
143 res = yield queue.executeInThread(self.pool.createXML, xml)
144 return self.VolumeClass(self.connection, res)
145
146class Connection:
147
148 """
149 I am a wrapper around a libvirt Connection object.
150 """
151
152 DomainClass = Domain
153 PoolClass = Pool
154
155 def __init__(self, uri):
156 self.uri = uri
157 self._connection = None
158
159 @property
160 def connection(self):
161 if self._connection is not None:
162 try:
163 if not self._connection.isAlive():
164 self._connection = None
165 except:
166 self._connection = None
167 if self._connection is None:
168 self._connection = libvirt.open(self.uri)
169 return self._connection
170
171 @defer.inlineCallbacks
172 def create(self, xml):
173 """ I take libvirt XML and start a new VM """
174 res = yield queue.executeInThread(self.connection.createXML, xml, 0)
175 return self.DomainClass(self, res)
176
177 @defer.inlineCallbacks
178 def lookup_pool(self, name):
179 res = yield queue.executeInThread(self.connection.storagePoolLookupByName, name)
180 return self.PoolClass(self, res)
181
182class LibVirtWorker(AbstractLatentWorker):
183
184 def __init__(self, name, password, connection, master_url, base_image=None, **kwargs):
185 super().__init__(name, password, **kwargs)
186 if not libvirt:
187 config.error(
188 "The python module 'libvirt' is needed to use a LibVirtWorker")
189
190 self.master_url = master_url
191 self.random_name = random_string_generator()
192 self.connection = connection
193 self.base_image = base_image
194
195 self.domain = None
196 self.domain_name = "buildbot-" + self.workername + "-" + self.random_name
197 self.volume = None
198 self.volume_name = "buildbot-" + self.workername + "-" + self.random_name
199 self.pool_name = "buildbot-disks"
200
201 def reconfigService(self, *args, **kwargs):
202 if 'build_wait_timeout' not in kwargs:
203 kwargs['build_wait_timeout'] = 0
204 return super().reconfigService(*args, **kwargs)
205
206 def canStartBuild(self):
207 if self.domain and not self.isConnected():
208 log.msg(
209 "Not accepting builds as existing domain but worker not connected")
210 return False
211
212 return super().canStartBuild()
213
214 @defer.inlineCallbacks
215 def _prepare_image(self):
216 log.msg("Creating temporary image {}".format(self.volume_name))
217 pool = yield self.connection.lookup_pool(self.pool_name)
218 vol_xml = """
219 <volume type='file'>
220 <name>{vol_name}</name>
221 <capacity unit='G'>10</capacity>
222 <target>
223 <format type='qcow2'/>
224 <permissions>
225 <mode>0600</mode>
226 <owner>0</owner>
227 <group>0</group>
228 </permissions>
229 </target>
230 <backingStore>
231 <path>/etc/libvirtd/base-images/buildbot.qcow2</path>
232 <format type='qcow2'/>
233 </backingStore>
234 </volume>
235 """.format(vol_name = self.volume_name)
236 self.volume = yield pool.create_volume(vol_xml)
237
238 @defer.inlineCallbacks
239 def start_instance(self, build):
240 """
241 I start a new instance of a VM.
242
243 If a base_image is specified, I will make a clone of that otherwise i will
244 use image directly.
245
246 If i'm not given libvirt domain definition XML, I will look for my name
247 in the list of defined virtual machines and start that.
248 """
249 domain_xml = """
250 <domain type="kvm">
251 <name>{domain_name}</name>
252 <memory unit="GiB">2</memory>
253 <vcpu>1</vcpu>
254 <sysinfo type='smbios'>
255 <oemStrings>
256 <entry>buildbot_master_url={master_url}</entry>
257 <entry>buildbot_worker_name={worker_name}</entry>
258 </oemStrings>
259 </sysinfo>
260 <os>
261 <type arch="x86_64">hvm</type>
262 <smbios mode='sysinfo'/>
263 </os>
264 <devices>
265 <emulator>/run/current-system/sw/bin/qemu-system-x86_64</emulator>
266 <disk type="volume" device="disk">
267 <driver name='qemu' type='qcow2' />
268 <source type="volume" pool="{pool_name}" volume="{volume_name}" />
269 <backingStore type='volume'>
270 <format type='qcow2'/>
271 <source type="volume" pool="niximages" volume="buildbot.qcow2" />
272 </backingStore>
273 <target dev="vda" bus="virtio"/>
274 </disk>
275 <input type="keyboard" bus="usb"/>
276 <graphics type="vnc" port="-1" autoport="yes"/>
277 <interface type="network">
278 <source network="immae" />
279 </interface>
280 </devices>
281 </domain>
282 """.format(volume_name = self.volume_name, master_url = self.master_url, pool_name =
283 self.pool_name, domain_name = self.domain_name, worker_name = self.workername)
284
285 yield self._prepare_image()
286
287 try:
288 self.domain = yield self.connection.create(domain_xml)
289 except Exception:
290 log.err(failure.Failure(),
291 ("Cannot start a VM ({}), failing gracefully and triggering"
292 "a new build check").format(self.workername))
293 self.domain = None
294 return False
295
296 return [self.domain_name]
297
298 def stop_instance(self, fast=False):
299 """
300 I attempt to stop a running VM.
301 I make sure any connection to the worker is removed.
302 If the VM was using a cloned image, I remove the clone
303 When everything is tidied up, I ask that bbot looks for work to do
304 """
305
306 log.msg("Attempting to stop '{}'".format(self.workername))
307 if self.domain is None:
308 log.msg("I don't think that domain is even running, aborting")
309 return defer.succeed(None)
310
311 domain = self.domain
312 self.domain = None
313
314 d = domain.destroy()
315 if self.volume is not None:
316 self.volume.destroy()
317
318 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 @@
1# -*- python -*-
2# ex: set filetype=python:
3
4from buildbot.plugins import secrets, util, webhooks
5from buildbot.util import bytes2unicode
6import re
7import os
8from buildbot_config import E, configure
9import json
10
11class CustomBase(webhooks.base):
12 def getChanges(self, request):
13 try:
14 content = request.content.read()
15 args = json.loads(bytes2unicode(content))
16 except Exception as e:
17 raise ValueError("Error loading JSON: " + str(e))
18
19 args.setdefault("comments", "")
20 args.setdefault("repository", "")
21 args.setdefault("author", args.get("who"))
22
23 return ([args], None)
24
25class GitoliteHook(webhooks.base):
26 def getChanges(self, request):
27 try:
28 branch = request.args[b"branch"][0].decode("utf-8")
29 project = request.args[b"project"][0].decode("utf-8")
30 repository = request.args[b"repository"][0].decode("utf-8")
31 author = request.args[b"author"][0].decode("utf-8")
32 except Exception as e:
33 raise ValueError("Error missing key in request: " + str(e))
34
35 args = {
36 "author": "gitolite for " + author,
37 "category": "gitolite-hooks",
38 "comments": "gitolite post-receive hook",
39 "branch": branch,
40 "project": project,
41 "repository": repository,
42 }
43
44 return ([args], None)
45
46userInfoProvider = util.LdapUserInfo(
47 uri=E.LDAP_URL,
48 bindUser=E.LDAP_ADMIN_USER,
49 bindPw=open(E.SECRETS_FILE + "/ldap", "r").read().rstrip(),
50 accountBase=E.LDAP_BASE,
51 accountPattern=E.LDAP_PATTERN,
52 accountFullName='cn',
53 accountEmail='mail',
54 avatarData="jpegPhoto",
55 groupBase=E.LDAP_BASE,
56 groupName="cn",
57 groupMemberPattern=E.LDAP_GROUP_PATTERN,
58 )
59
60c = BuildmasterConfig = {
61 "title": E.TITLE,
62 "titleURL": E.TITLE_URL,
63 "db": {
64 "db_url": "sqlite:///state.sqlite"
65 },
66 "protocols": { "pb": { "port": E.PB_SOCKET } },
67 "workers": [],
68 "change_source": [],
69 "schedulers": [],
70 "builders": [],
71 "services": [],
72 "secretsProviders": [
73 secrets.SecretInAFile(E.SECRETS_FILE),
74 ],
75 "www": {
76 "change_hook_dialects": {
77 "base": { "custom_class": CustomBase },
78 "gitolite": { "custom_class": GitoliteHook },
79 },
80 "plugins": {
81 "waterfall_view": {},
82 "console_view": {},
83 "grid_view": {},
84 "buildslist": {},
85 },
86 "auth": util.RemoteUserAuth(
87 header=b"X-Remote-User",
88 userInfoProvider=userInfoProvider,
89 headerRegex=re.compile(br"(?P<username>[^ @]+)")),
90 }
91 }
92
93configure(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 @@
1{
2 "nodes": {
3 "buildslist": {
4 "flake": false,
5 "locked": {
6 "lastModified": 1585697026,
7 "narHash": "sha256-7CO89q6Bmg59eN5tFGYaqJR/rpJrLu7dpulXgJUv/0E=",
8 "ref": "master",
9 "rev": "fb8641f2badcec9f232cc5f727009911fc1c89b0",
10 "revCount": 4,
11 "type": "git",
12 "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
13 },
14 "original": {
15 "type": "git",
16 "url": "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist"
17 }
18 },
19 "flake-utils": {
20 "locked": {
21 "lastModified": 1648297722,
22 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
23 "owner": "numtide",
24 "repo": "flake-utils",
25 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
26 "type": "github"
27 },
28 "original": {
29 "owner": "numtide",
30 "repo": "flake-utils",
31 "type": "github"
32 }
33 },
34 "nixpkgs": {
35 "flake": false,
36 "locked": {
37 "lastModified": 1596265691,
38 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
39 "owner": "NixOS",
40 "repo": "nixpkgs",
41 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
42 "type": "github"
43 },
44 "original": {
45 "owner": "NixOS",
46 "repo": "nixpkgs",
47 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
48 "type": "github"
49 }
50 },
51 "root": {
52 "inputs": {
53 "buildslist": "buildslist",
54 "flake-utils": "flake-utils",
55 "nixpkgs": "nixpkgs"
56 }
57 }
58 },
59 "root": "root",
60 "version": 7
61}
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 @@
1{
2 description = "The continuous integration framework";
3 inputs.flake-utils.url = "github:numtide/flake-utils";
4 inputs.nixpkgs = {
5 url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
6 flake = false;
7 };
8 inputs.buildslist = {
9 url = "https://git.immae.eu/perso/Immae/Projets/Buildbot/buildslist";
10 type = "git";
11 flake = false;
12 };
13 outputs = { self, nixpkgs, flake-utils, buildslist }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
14 let
15 pkgs = import nixpkgs { inherit system; overlays = []; };
16 python = pkgs.python38;
17 wokkel = python.pkgs.buildPythonPackage rec {
18 pname = "wokkel";
19 version = "18.0.0";
20 src = python.pkgs.fetchPypi {
21 inherit pname version;
22 sha256 = "1spq44gg8gsviqx1dvlmjpgfc0wk0jpyx4ap01y2pad1ai9cw016";
23 };
24 propagatedBuildInputs = with python.pkgs; [ twisted.extras.tls twisted incremental dateutil ];
25 doCheck = false;
26 };
27 buildbot_common = python.pkgs.buildPythonPackage {
28 name = "buildbot_common";
29 src = ./common;
30 format = "other";
31 installPhase = ''
32 mkdir -p $out/${python.sitePackages}
33 cp -a $src $out/${python.sitePackages}/buildbot_common
34 '';
35 };
36 buildbot-full = python.pkgs.buildbot-full.withPlugins [ buildslist-plugin ] // {
37 inherit buildbot_common;
38 buildbot_config = project: python.pkgs.buildPythonPackage (rec {
39 name = "buildbot_config-${project.name}";
40 src = if project.name == "test" then ./test_project else project.src;
41 format = "other";
42 installPhase = ''
43 mkdir -p $out/${python.sitePackages}
44 cp -a $src $out/${python.sitePackages}/buildbot_config
45 '';
46 });
47 common_packages = pkgs: [
48 (pkgs.apprise.overridePythonAttrs(old: { propagatedBuildInputs = old.propagatedBuildInputs ++ [ pkgs.sleekxmpp ]; })) pkgs.libvirt pkgs.treq pkgs.ldap3
49 buildbot-full pkgs.buildbot-worker pkgs.pip buildbot_common
50 wokkel
51 ];
52 };
53 buildslist-plugin = pkgs.callPackage ./buildslist {
54 pythonPackages = python.pkgs;
55 buildslist_src = buildslist;
56 };
57 in rec {
58 packages = {
59 buildslist = buildslist-plugin;
60 buildbot-full = buildbot-full;
61 buildbot_common = buildbot_common;
62 };
63 defaultPackage = packages.buildbot-full;
64 legacyPackages = packages;
65 checks = packages;
66 }) // rec {
67 overlays = {
68 immae-buildbot = final: prev: {
69 immae-buildbot = self.defaultPackage."${final.system}";
70 };
71 };
72 overlay = overlays.immae-buildbot;
73 };
74}
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 @@
1from buildbot.plugins import *
2from buildbot_common.build_helpers import *
3import buildbot_common.libvirt as ilibvirt
4import os
5from buildbot.util import bytes2unicode
6import json
7
8__all__ = [ "configure", "E" ]
9
10class E():
11 PROJECT = "test"
12 BUILDBOT_URL = "https://git.immae.eu/buildbot/{}/".format(PROJECT)
13 SOCKET = "unix:/run/buildbot/{}.sock".format(PROJECT)
14 PB_SOCKET = os.environ["BUILDBOT_WORKER_PORT"]
15 WORKER_HOST = "{}:{}".format(os.environ["BUILDBOT_HOST"], PB_SOCKET)
16 RELEASE_PATH = "/var/lib/ftp/release.immae.eu/{}".format(PROJECT)
17 RELEASE_URL = "https://release.immae.eu/{}".format(PROJECT)
18 GIT_URL = "https://git.immae.eu/perso/Immae/TestProject.git"
19 SSH_KEY_PATH = "/var/lib/buildbot/buildbot_key"
20 LIBVIRT_URL = os.environ["BUILDBOT_VIRT_URL"] + "?keyfile=" + SSH_KEY_PATH
21 XMPP_RECIPIENTS = os.environ["BUILDBOT_XMPP_RECIPIENTS"].split(" ")
22
23 # master.cfg
24 SECRETS_FILE = os.getcwd() + "/secrets"
25 LDAP_URL = "ldaps://ldap.immae.eu:636"
26 LDAP_ADMIN_USER = "cn=buildbot,ou=services,dc=immae,dc=eu"
27 LDAP_BASE = "dc=immae,dc=eu"
28 LDAP_PATTERN = "(uid=%(username)s)"
29 LDAP_GROUP_PATTERN = "(&(memberOf=cn=groups,ou=test,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))"
30 TITLE_URL = "https://git.immae.eu/?p=perso/Immae/TestProject.git;a=summary"
31 TITLE = "Test project"
32
33class CustomBase(webhooks.base):
34 def getChanges(self, request):
35 try:
36 content = request.content.read()
37 args = json.loads(bytes2unicode(content))
38 except Exception as e:
39 raise ValueError("Error loading JSON: " + str(e))
40
41 args.setdefault("comments", "")
42 args.setdefault("repository", "")
43 args.setdefault("author", args.get("who", "unknown"))
44
45 if args["category"] == "deploy_webhook":
46 args = {
47 "category": "deploy_webhook",
48 "comments": "",
49 "repository": "",
50 "author": "unknown",
51 "project": "TestProject",
52 "properties": {
53 "environment": args.get("environment", "integration"),
54 "build": "test_{}.tar.gz".format(args.get("branch", "master"))
55 }
56 }
57
58 return ([args], None)
59
60def configure(c):
61 c["buildbotURL"] = E.BUILDBOT_URL
62 c["www"]["port"] = E.SOCKET
63
64 c["www"]["change_hook_dialects"]["base"] = { "custom_class": CustomBase }
65
66 configure_build(c)
67 configure_deploy(c)
68
69 configure_apprise_push(c, E.SECRETS_FILE, all_builder_names(c))
70 configure_xmpp_push(c, E.SECRETS_FILE, all_builder_names(c), E.XMPP_RECIPIENTS)
71
72def configure_build(c):
73 builder_name = "TestProject_build"
74 worker_name = "test-build"
75 c['schedulers'].append(force_scheduler("force_test", [builder_name]))
76 c['schedulers'].append(git_hook_scheduler("TestProject", [builder_name]))
77 c['workers'].append(libvirt_worker(worker_name))
78 c['builders'].append(util.BuilderConfig(name=builder_name, workernames=[worker_name], factory=build_factory()))
79
80def configure_deploy(c):
81 builder_name = "TestProject_deploy"
82 worker_name = "test-deploy"
83 c['workers'].append(libvirt_worker(worker_name))
84 c['schedulers'].append(deploy_hook_scheduler("TestProject", [builder_name]))
85 c['schedulers'].append(deploy_scheduler("deploy_test", [builder_name]))
86 c['builders'].append(util.BuilderConfig(name=builder_name, workernames=[worker_name], factory=deploy_factory()))
87
88def libvirt_worker(name):
89 return ilibvirt.LibVirtWorker(name,
90 open(E.SECRETS_FILE + "/worker_password", "r").read().rstrip(),
91 ilibvirt.Connection(E.LIBVIRT_URL),
92 E.WORKER_HOST)
93
94def build_factory():
95 package = util.Interpolate("test_%(kw:clean_branch)s.tar.gz", clean_branch=clean_branch)
96 package_dest = util.Interpolate("{}/test_%(kw:clean_branch)s.tar.gz".format(E.RELEASE_PATH), clean_branch=clean_branch)
97 package_url = util.Interpolate("{}/test_%(kw:clean_branch)s.tar.gz".format(E.RELEASE_URL), clean_branch=clean_branch)
98
99 factory = util.BuildFactory()
100 factory.addStep(steps.Git(logEnviron=False,
101 repourl=E.GIT_URL, mode="full", method="fresh"))
102 factory.addStep(steps.ShellCommand(name="env",
103 logEnviron=False, command=["env"]))
104 factory.addStep(steps.ShellCommand(name="pwd",
105 logEnviron=False, command=["pwd"]))
106 factory.addStep(steps.ShellCommand(name="true",
107 logEnviron=False, command=["true"]))
108 factory.addStep(steps.ShellCommand(name="echo",
109 logEnviron=False, command=["echo", package]))
110 factory.addSteps(package_and_upload(package, package_dest, package_url))
111
112 return factory
113
114def deploy_factory():
115 package_dest = util.Interpolate("{}/%(prop:build)s".format(E.RELEASE_PATH))
116
117 factory = util.BuildFactory()
118 factory.addStep(steps.MasterShellCommand(command=["test", "-f", package_dest]))
119 factory.addStep(steps.SetProperties(properties=compute_build_infos("test", E.RELEASE_PATH)))
120 factory.addStep(steps.MasterShellCommand(command=deploy_ssh_command(E.SSH_KEY_PATH, {})))
121 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 @@
1{
2 "nodes": {
3 "environment": {
4 "locked": {
5 "lastModified": 1,
6 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
7 "path": "../environment",
8 "type": "path"
9 },
10 "original": {
11 "path": "../environment",
12 "type": "path"
13 }
14 },
15 "root": {
16 "inputs": {
17 "environment": "environment"
18 }
19 }
20 },
21 "root": "root",
22 "version": 7
23}
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 @@
1{
2 inputs.environment.url = "path:../environment";
3 outputs = { self, environment }: {
4 nixosModule = self.nixosModules.chatons;
5 nixosModules.chatons = { config, lib, pkgs, nodes, ... }:
6 let
7 concatValue = value: if lib.isList value then builtins.concatStringsSep "," value else builtins.toString value;
8 toProperties = properties: builtins.concatStringsSep "\n" (
9 lib.collect
10 (p: !(lib.isAttrs p))
11 (lib.mapAttrsRecursive
12 (path: value: builtins.concatStringsSep "." (builtins.filter (f: f != "") path) + " = " + (concatValue value))
13 properties));
14 before = name: {
15 "${name}" = {
16 status.level = "OK";
17 status.description = "OK";
18 install.type = "PACKAGE";
19 registration.load = "OPEN";
20 };
21 host = {
22 name = "Hetzner";
23 server.type = "PHYSICAL";
24 provider.type = "HOSTEDSERVER";
25 server.distribution = "NixOS";
26 country.name = "Allemagne";
27 country.code = "DE";
28 };
29 };
30 after = name: {
31 file = {
32 class = name;
33 protocol = "ChatonsInfos-0.5";
34 generator = "Nix derivation";
35 };
36 "${name}" = {
37 legal.url = "https://www.immae.eu/mentions.html";
38 guide.technical = "https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/";
39 contact.url = "https://www.immae.eu/contacts_fr.html";
40 contact.email = config.myEnv.tools.contact;
41 startdate = "01/01/2019";
42 };
43 };
44 organization = {
45 file = {
46 class = "organization";
47 protocol = "ChatonsInfos-0.5";
48 datetime = "2021-01-11T22:23:00";
49 generator = "Nix derivation";
50 };
51 organization = {
52 country.name = "France";
53 country.code = "FR";
54 name = "ImmaeEu";
55 description = "ImmaeEu est un CHATONS des Alpes-Maritimes";
56 website = "https://www.immae.eu";
57 logo = "https://assets.immae.eu/logo.jpg";
58 socialnetworks = {
59 diaspora = "https://diaspora.immae.eu/people/1a185f29cc76cb35";
60 facebook = "https://www.facebook.com/ismael.bouya";
61 mastodon = "https://mastodon.immae.eu/@immae";
62 peertube = "https://peertube.immae.eu/accounts/immae/";
63 twitter = "https://twitter.com/_immae";
64 };
65 chatrooms = {
66 xmpp = "ismael@immae.fr";
67 irc = "immae@freenode";
68 matrix = "#support:immae.eu";
69 };
70 contact.url = "https://www.immae.eu/contacts_fr.html";
71 contact.email = config.myEnv.tools.contact;
72 legal.url = "https://www.immae.eu/mentions.html";
73 guide.technical = "https://git.immae.eu/cgit/perso/Immae/Config/Nix.git/";
74 guide.user = "https://www.immae.eu/docs";
75 status.level = "ACTIVE";
76 status.description = "En activité";
77 startdate = "01/01/2019";
78 type = "COMPANY";
79 owner = {
80 logo = "https://assets.immae.eu/logo.jpg";
81 name = "Ismaël Bouya";
82 website = "https://www.immae.eu";
83 };
84 memberof.chatons = {
85 startdate = "01/07/2019";
86 status.level = "ACTIVE";
87 status.description = "Participe au collectif";
88 };
89 };
90 };
91 subname = v: if v.published or true then "subs" else "subs-hidden";
92 toOrganizationProperties = name: pkgs.writeText name (toProperties organization + "\n" + (
93 builtins.concatStringsSep "\n" (lib.mapAttrsToList
94 (n: v: "${subname v}.${n} = https://www.immae.eu/.well-known/chatonsinfos/service-${n}.properties") mergedServices
95 )) + "\n" + (
96 builtins.concatStringsSep "\n" (lib.mapAttrsToList
97 (n: v: "subs.hosting-${n} = https://www.immae.eu/.well-known/chatonsinfos/hosting-${n}.properties") mergedHostings
98 )));
99 toHostingProperties = name: content: pkgs.writeText name (toProperties (lib.recursiveUpdate (before "hosting") (lib.recursiveUpdate content (after "hosting"))));
100 toServiceProperties = name: content: pkgs.writeText name (toProperties (lib.recursiveUpdate (before "service") (lib.recursiveUpdate content (after "service"))));
101
102 cfg = config.myServices.chatonsProperties;
103 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);
104 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);
105 in {
106 imports = [
107 environment.nixosModule
108 ];
109 options.myServices.chatonsProperties.organization = lib.mkOption {
110 type = lib.types.attrsOf lib.types.unspecified;
111 default = {};
112 description = ''
113 nested attrs of strings or arrays of strings
114 '';
115 };
116 options.myServices.chatonsProperties.services = lib.mkOption {
117 type = lib.types.attrsOf lib.types.unspecified;
118 default = {};
119 description = ''
120 nested attrs of strings or arrays of strings
121 '';
122 };
123 options.myServices.chatonsProperties.hostings = lib.mkOption {
124 type = lib.types.attrsOf lib.types.unspecified;
125 default = {};
126 description = ''
127 nested attrs of strings or arrays of strings
128 '';
129 };
130 options.myServices.chatonsProperties.propertiesPath = lib.mkOption {
131 type = lib.types.package;
132 readOnly = true;
133 default = pkgs.runCommand "chatons" {} ''
134 mkdir -p $out
135 cp ${toOrganizationProperties "immae-eu"} $out/immae-eu.properties
136 ${builtins.concatStringsSep "\n" (lib.mapAttrsToList (n: c: "cp ${toHostingProperties n c} $out/hosting-${n}.properties") mergedHostings)}
137 ${builtins.concatStringsSep "\n" (lib.mapAttrsToList (n: c: "cp ${toServiceProperties n c} $out/service-${n}.properties") mergedServices)}
138 '';
139 };
140 };
141 };
142}
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 @@
1{
2 description = ''
3 A dummy flake that contains a compatible structure to the one stored at
4 git+ssh://gitolite@git.immae.eu/perso/Immae/Config/Nix/Nixops/Secrets
5 It is used as default value in "public" configurations
6 '';
7 outputs = { self }: {
8 vars-file = ./vars.yml;
9 ldap-conf = ./ldap.conf;
10 environment-file = ./environment.nix;
11 nixosModule = self.nixosModules.my-environment;
12 nixosModules.my-environment = { ... }: {
13 config.myEnv = import self.environment-file;
14 };
15 nixosModules.users-config-eldiron = { ... }: {};
16 };
17}
18
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 @@
1# Indices to maintain
2index objectClass eq
3index uid pres,eq
4index mail pres,sub,eq
5index cn pres,sub,eq
6index sn pres,sub,eq
7index dc eq
8index krbPrincipalName eq
9index member eq
10index memberOf eq
11
12access to *
13 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 @@
1{
2 outputs = { self }: {
3 nixosModule = self.nixosModules.environment;
4 nixosModules.environment = { config, lib, name, ... }:
5 with lib;
6 with types;
7 with lists;
8 let
9 ldapOptions = {
10 base = mkOption { description = "Base of the LDAP tree"; type = str; };
11 host = mkOption { description = "Host to access LDAP"; type = str; };
12 root_dn = mkOption { description = "DN of the root user"; type = str; };
13 root_pw = mkOption { description = "Hashed password of the root user"; type = str; };
14 replication_dn = mkOption { description = "DN of the user allowed to replicate the LDAP directory"; type = str; };
15 replication_pw = mkOption { description = "Password of the user allowed to replicate the LDAP directory"; type = str; };
16 };
17 mkLdapOptions = name: more: mkOption {
18 description = "${name} LDAP configuration";
19 type = submodule {
20 options = ldapOptions // {
21 dn = mkOption { description = "DN of the ${name} user"; type = str; };
22 password = mkOption { description = "password of the ${name} user"; type = str; };
23 filter = mkOption { description = "Filter for ${name} users"; type = str; default = ""; };
24 } // more;
25 };
26 };
27 mysqlOptions = {
28 host = mkOption { description = "Host to access Mysql"; type = str; };
29 remoteHost = mkOption { description = "Host to access Mysql from outside"; type = str; };
30 port = mkOption { description = "Port to access Mysql"; type = int; };
31 socket = mkOption { description = "Socket to access Mysql"; type = path; };
32 systemUsers = mkOption {
33 description = "Attrs of user-passwords allowed to access mysql";
34 type = attrsOf str;
35 };
36 pam = mkOption {
37 description = "PAM configuration for mysql";
38 type = submodule {
39 options = {
40 dn = mkOption { description = "DN to connect as to check users"; type = str; };
41 password = mkOption { description = "DN password to connect as to check users"; type = str; };
42 filter = mkOption { description = "filter to match users"; type = str; };
43 };
44 };
45 };
46 };
47 mkMysqlOptions = name: more: mkOption {
48 description = "${name} mysql configuration";
49 type = submodule {
50 options = mysqlOptions // {
51 database = mkOption { description = "${name} database"; type = str; };
52 user = mkOption { description = "${name} user"; type = str; };
53 password = mkOption { description = "mysql password of the ${name} user"; type = str; };
54 } // more;
55 };
56 };
57 psqlOptions = {
58 host = mkOption { description = "Host to access Postgresql"; type = str; };
59 port = mkOption { description = "Port to access Postgresql"; type = str; };
60 socket = mkOption { description = "Socket to access Postgresql"; type = path; };
61 pam = mkOption {
62 description = "PAM configuration for psql";
63 type = submodule {
64 options = {
65 dn = mkOption { description = "DN to connect as to check users"; type = str; };
66 password = mkOption { description = "DN password to connect as to check users"; type = str; };
67 filter = mkOption { description = "filter to match users"; type = str; };
68 };
69 };
70 };
71 };
72 mkPsqlOptions = name: mkOption {
73 description = "${name} psql configuration";
74 type = submodule {
75 options = psqlOptions // {
76 database = mkOption { description = "${name} database"; type = str; };
77 schema = mkOption { description = "${name} schema"; type = nullOr str; default = null; };
78 user = mkOption { description = "${name} user"; type = str; };
79 password = mkOption { description = "psql password of the ${name} user"; type = str; };
80 };
81 };
82 };
83 redisOptions = {
84 host = mkOption { description = "Host to access Redis"; type = str; };
85 port = mkOption { description = "Port to access Redis"; type = str; };
86 socket = mkOption { description = "Socket to access Redis"; type = path; };
87 dbs = mkOption {
88 description = "Attrs of db number. Each number should be unique to avoid collision!";
89 type = attrsOf str;
90 };
91 spiped_key = mkOption {
92 type = str;
93 description = ''
94 Key to use with spiped to make a secure channel to replication
95 '';
96 };
97 predixy = mkOption {
98 description = "Predixy configuration. Unused yet";
99 type = submodule {
100 options = {
101 read = mkOption { type = str; description = "Read password"; };
102 };
103 };
104 };
105 };
106 mkRedisOptions = name: mkOption {
107 description = "${name} redis configuration";
108 type = submodule {
109 options = redisOptions // {
110 db = mkOption { description = "${name} database"; type = str; };
111 };
112 };
113 };
114 smtpOptions = {
115 host = mkOption { description = "Host to access SMTP"; type = str; };
116 port = mkOption { description = "Port to access SMTP"; type = str; };
117 };
118 mkSmtpOptions = name: mkOption {
119 description = "${name} smtp configuration";
120 type = submodule {
121 options = smtpOptions // {
122 email = mkOption { description = "${name} email"; type = str; };
123 password = mkOption { description = "SMTP password of the ${name} user"; type = str; };
124 };
125 };
126 };
127 hostEnv = submodule {
128 options = {
129 fqdn = mkOption {
130 description = "Host FQDN";
131 type = str;
132 };
133 hostKey = mkOption {
134 type = nullOr str;
135 default = null;
136 description = ''
137 ssh host key
138 '';
139 };
140 isVm = mkEnableOption "The host is a vm";
141 users = mkOption {
142 type = unspecified;
143 default = pkgs: [];
144 description = ''
145 Sublist of users from realUsers. Function that takes pkgs as
146 argument and gives an array as a result
147 '';
148 };
149 emails = mkOption {
150 default = [];
151 description = "List of e-mails that the server can be a sender of";
152 type = listOf str;
153 };
154 ldap = mkOption {
155 description = ''
156 LDAP credentials for the host
157 '';
158 type = submodule {
159 options = {
160 password = mkOption { type = str; description = "Password for the LDAP connection"; };
161 dn = mkOption { type = str; description = "DN for the LDAP connection"; };
162 };
163 };
164 };
165 mx = mkOption {
166 description = "subdomain and priority for MX server";
167 default = { enable = false; };
168 type = submodule {
169 options = {
170 enable = mkEnableOption "Enable MX";
171 subdomain = mkOption { type = nullOr str; description = "Subdomain name (mx-*)"; };
172 priority = mkOption { type = nullOr int; description = "Priority"; };
173 };
174 };
175 };
176 ips = mkOption {
177 description = ''
178 attrs of ip4/ip6 grouped by section
179 '';
180 type = attrsOf (submodule {
181 options = {
182 alias = mkOption {
183 type = nullOr str;
184 default = null;
185 description = ''
186 alias to use in DNS for that group
187 '';
188 };
189 ip4 = mkOption {
190 type = listOf str;
191 default = [];
192 description = ''
193 ip4 addresses of the host
194 '';
195 };
196 ip6 = mkOption {
197 type = listOf str;
198 default = [];
199 description = ''
200 ip6 addresses of the host
201 '';
202 };
203 };
204 });
205 };
206 };
207 };
208 in
209 {
210 # Necessary for situations where flake gets included multiple times
211 key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
212
213 options.myEnv = {
214 servers = mkOption {
215 description = ''
216 Attrs of servers information in the cluster (not necessarily handled by nixops)
217 '';
218 default = {};
219 type = attrsOf hostEnv;
220 };
221 hetznerCloud = mkOption {
222 description = ''
223 Hetzner Cloud credential information
224 '';
225 type = submodule {
226 options = {
227 authToken = mkOption {
228 type = str;
229 description = ''
230 The API auth token.
231 '';
232 };
233 };
234 };
235 };
236 hetzner = mkOption {
237 description = ''
238 Hetzner credential information
239 '';
240 type = submodule {
241 options = {
242 user = mkOption { type = str; description = "User"; };
243 pass = mkOption { type = str; description = "Password"; };
244 };
245 };
246 };
247 sshd = mkOption {
248 description = ''
249 sshd service credential information
250 '';
251 type = submodule {
252 options = {
253 rootKeys = mkOption { type = attrsOf str; description = "Keys of root users"; };
254 ldap = mkOption {
255 description = ''
256 LDAP credentials for cn=ssh,ou=services,dc=immae,dc=eu dn
257 '';
258 type = submodule {
259 options = {
260 password = mkOption { description = "Password"; type = str; };
261 };
262 };
263 };
264 psql = mkOption {
265 description = ''
266 PSQL credentials for immae_auth_read
267 '';
268 type = submodule {
269 options = {
270 password = mkOption { description = "Password"; type = str; };
271 };
272 };
273 };
274 };
275 };
276 };
277 ports = mkOption {
278 description = ''
279 non-standard reserved ports. Must be unique!
280 '';
281 type = attrsOf port;
282 default = {};
283 apply = let
284 noDupl = x: builtins.length (builtins.attrValues x) == builtins.length (unique (builtins.attrValues x));
285 in
286 x: if isAttrs x && noDupl x then x else throw "Non unique values for ports";
287 };
288 httpd = mkOption {
289 description = ''
290 httpd service credential information
291 '';
292 type = submodule {
293 options = {
294 ldap = mkOption {
295 description = ''
296 LDAP credentials for cn=httpd,ou=services,dc=immae,dc=eu dn
297 '';
298 type = submodule {
299 options = {
300 password = mkOption { description = "Password"; type = str; };
301 };
302 };
303 };
304 };
305 };
306 };
307 smtp = mkOption {
308 type = submodule { options = smtpOptions; };
309 description = "SMTP configuration";
310 };
311 ldap = mkOption {
312 description = ''
313 LDAP server configuration
314 '';
315 type = submodule {
316 options = ldapOptions;
317 };
318 };
319 databases = mkOption {
320 description = "Databases configuration";
321 type = submodule {
322 options = {
323 mysql = mkOption {
324 type = submodule { options = mysqlOptions; };
325 description = "Mysql configuration";
326 };
327 redis = mkOption {
328 type = submodule { options = redisOptions; };
329 description = "Redis configuration";
330 };
331 postgresql = mkOption {
332 type = submodule { options = psqlOptions; };
333 description = "Postgresql configuration";
334 };
335 };
336 };
337 };
338 jabber = mkOption {
339 description = "Jabber configuration";
340 type = submodule {
341 options = {
342 postfix_user_filter = mkOption { type = str; description = "Postfix filter to get xmpp users"; };
343 ldap = mkLdapOptions "Jabber" {};
344 postgresql = mkPsqlOptions "Jabber";
345 };
346 };
347 };
348 realUsers = mkOption {
349 description = ''
350 Attrset of function taking pkgs as argument.
351 Real users settings, should provide a subattr of users.users.<name>
352 with at least: name, (hashed)Password, shell
353 '';
354 type = attrsOf unspecified;
355 };
356 users = mkOption {
357 description = "System and regular users uid/gid";
358 type = attrsOf (submodule {
359 options = {
360 uid = mkOption {
361 description = "user uid";
362 type = int;
363 };
364 gid = mkOption {
365 description = "user gid";
366 type = int;
367 };
368 };
369 });
370 };
371 dns = mkOption {
372 description = "DNS configuration";
373 type = submodule {
374 options = {
375 ns = mkOption {
376 description = "Attrs of NS servers group";
377 example = {
378 foo = {
379 "ns1.foo.com" = [ "198.51.100.10" "2001:db8:abcd::1" ];
380 "ns2.foo.com" = [ "198.51.100.15" "2001:db8:1234::1" ];
381 };
382 };
383 type = attrsOf (attrsOf (listOf str));
384 };
385 };
386 };
387 };
388 backup = mkOption {
389 description = ''
390 Remote backup with duplicity
391 '';
392 type = submodule {
393 options = {
394 password = mkOption { type = str; description = "Password for encrypting files"; };
395 remotes = mkOption {
396 type = attrsOf (submodule {
397 options = {
398 remote = mkOption {
399 type = functionTo str;
400 example = literalExample ''
401 bucket: "s3://some_host/${bucket}";
402 '';
403 description = ''
404 Function.
405 Takes a bucket name as argument and returns a url
406 '';
407 };
408 accessKeyId = mkOption { type = str; description = "Remote access-key"; };
409 secretAccessKey = mkOption { type = str; description = "Remote access secret"; };
410 };
411 });
412 };
413 };
414 };
415 };
416 zrepl_backup = mkOption {
417 type = submodule {
418 options = {
419 ssh_key = mkOption {
420 description = "SSH key information";
421 type = submodule {
422 options = {
423 public = mkOption { type = str; description = "Public part of the key"; };
424 private = mkOption { type = lines; description = "Private part of the key"; };
425 };
426 };
427 };
428 mysql = mkMysqlOptions "Zrepl" {};
429 certs = mkOption {
430 description = "Certificates";
431 type = attrsOf (submodule {
432 options = {
433 key = mkOption { type = str; description = "Key"; };
434 certificate = mkOption { type = str; description = "Certificate"; };
435 };
436 });
437 };
438 };
439 };
440 };
441 rsync_backup = mkOption {
442 description =''
443 Rsync backup configuration from controlled host
444 '';
445 type = submodule {
446 options = {
447 ssh_key = mkOption {
448 description = "SSH key information";
449 type = submodule {
450 options = {
451 public = mkOption { type = str; description = "Public part of the key"; };
452 private = mkOption { type = lines; description = "Private part of the key"; };
453 };
454 };
455 };
456 profiles = mkOption {
457 description = "Attrs of profiles to backup";
458 default = {};
459 type = attrsOf (submodule {
460 options = {
461 keep = mkOption { type = int; description = "Number of backups to keep"; };
462 check_command = mkOption { type = str; description = "command to check if backup needs to be done"; default = "backup"; };
463 login = mkOption { type = str; description = "Login to connect to host"; };
464 port = mkOption { type = str; default = "22"; description = "Port to connect to host"; };
465 host = mkOption { type = str; description = "Host to connect to"; };
466 host_key = mkOption { type = str; description = "Host key"; };
467 host_key_type = mkOption { type = str; description = "Host key type"; };
468 parts = mkOption {
469 description = "Parts to backup for this host";
470 type = attrsOf (submodule {
471 options = {
472 remote_folder = mkOption { type = path; description = "Remote folder to backup";};
473 exclude_from = mkOption {
474 type = listOf path;
475 default = [];
476 description = "List of folders/files to exclude from the backup";
477 };
478 files_from = mkOption {
479 type = listOf path;
480 default = [];
481 description = "List of folders/files to backup in the base folder";
482 };
483 args = mkOption {
484 type = nullOr str;
485 default = null;
486 description = "Extra arguments to pass to rsync";
487 };
488 };
489 });
490 };
491 };
492 });
493 };
494 };
495 };
496 };
497 monitoring = mkOption {
498 description = "Monitoring configuration";
499 type = submodule {
500 options = {
501 status_url = mkOption { type = str; description = "URL to push status to"; };
502 status_token = mkOption { type = str; description = "Token for the status url"; };
503 http_user_password = mkOption { type = str; description = "HTTP credentials to check services behind wall"; };
504 email = mkOption { type = str; description = "Admin E-mail"; };
505 ssh_public_key = mkOption { type = str; description = "SSH public key"; };
506 ssh_secret_key = mkOption { type = str; description = "SSH secret key"; };
507 imap_login = mkOption { type = str; description = "IMAP login"; };
508 imap_password = mkOption { type = str; description = "IMAP password"; };
509 eriomem_keys = mkOption { type = listOf (listOf str); description = "Eriomem keys"; default = []; };
510 ovh_sms = mkOption {
511 description = "OVH credentials for sms script";
512 type = submodule {
513 options = {
514 endpoint = mkOption { type = str; default = "ovh-eu"; description = "OVH endpoint"; };
515 application_key = mkOption { type = str; description = "Application key"; };
516 application_secret = mkOption { type = str; description = "Application secret"; };
517 consumer_key = mkOption { type = str; description = "Consumer key"; };
518 account = mkOption { type = str; description = "Account"; };
519 };
520 };
521 };
522 nrdp_tokens = mkOption { type = listOf str; description = "Tokens allowed to push status update"; };
523 apprise_urls = mkOption { type = str; description = "Apprise space-separated urls to push status update"; };
524 netdata_aggregator = mkOption { type = str; description = "Url where netdata information should be sent"; };
525 netdata_keys = mkOption { type = attrsOf str; description = "netdata host keys"; };
526 immae_contact = mkOption { type = str; description = "Immae Contact e-mail"; };
527 email_check = mkOption {
528 description = "Emails services to check";
529 type = attrsOf (submodule {
530 options = {
531 local = mkOption { type = bool; default = false; description = "Use local configuration"; };
532 port = mkOption { type = nullOr str; default = null; description = "Port to connect to ssh"; };
533 login = mkOption { type = nullOr str; default = null; description = "Login to connect to ssh"; };
534 targets = mkOption { type = listOf str; description = "Hosts to send E-mails to"; };
535 mail_address = mkOption { type = nullOr str; default = null; description = "E-mail recipient part to send e-mail to"; };
536 mail_domain = mkOption { type = nullOr str; default = null; description = "E-mail domain part to send e-mail to"; };
537 };
538 });
539 };
540 };
541 };
542 };
543 mpd = mkOption {
544 description = "MPD configuration";
545 type = submodule {
546 options = {
547 folder = mkOption { type = str; description = "Folder to serve from the MPD instance"; };
548 password = mkOption { type = str; description = "Password to connect to the MPD instance"; };
549 host = mkOption { type = str; description = "Host to connect to the MPD instance"; };
550 port = mkOption { type = str; description = "Port to connect to the MPD instance"; };
551 };
552 };
553 };
554 ftp = mkOption {
555 description = "FTP configuration";
556 type = submodule {
557 options = {
558 ldap = mkLdapOptions "FTP" {
559 proftpd_filter = mkOption { type = str; description = "Filter for proftpd listing in LDAP"; };
560 pure-ftpd_filter = mkOption { type = str; description = "Filter for pure-ftpd listing in LDAP"; };
561 };
562 };
563 };
564 };
565 vpn = mkOption {
566 description = "VPN configuration";
567 type = attrsOf (submodule {
568 options = {
569 prefix = mkOption { type = str; description = "ipv6 prefix for the vpn subnet"; };
570 privateKey = mkOption { type = str; description = "Private key for the host"; };
571 publicKey = mkOption { type = str; description = "Public key for the host"; };
572 };
573 });
574 };
575 mail = mkOption {
576 description = "Mail configuration";
577 type = submodule {
578 options = {
579 dmarc = mkOption {
580 description = "DMARC configuration";
581 type = submodule {
582 options = {
583 ignore_hosts = mkOption {
584 type = lines;
585 description = ''
586 Hosts to ignore when checking for dmarc
587 '';
588 };
589 };
590 };
591 };
592 dkim = mkOption {
593 description = "DKIM configuration";
594 type = attrsOf (submodule {
595 options = {
596 public = mkOption {
597 type = attrsOf str;
598 example = literalExample ''
599 {
600 v = "DKIM1";
601 k = "rsa";
602 p = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3w1a2aMxWw9+hdcmbqX4UevcVqr204y0K73Wdc7MPZiOOlUJQYsMNSYR1Y/SC7jmPKeitpcJCpQgn/cveJZbuikjjPLsDReHyFEYmC278ZLRTELHx6f1IXM8WE08JIRT69CfZiMi1rVcOh9qRT4F93PyjCauU8Y5hJjtg9ThsWwIDAQAB";
603 }
604 '';
605 description = "Public entry to put in DNS TXT field";
606 };
607 private = mkOption { type = nullOr str; default = null; description = "Private key"; };
608 };
609 });
610 };
611 postfix = mkOption {
612 description = "Postfix configuration";
613 type = submodule {
614 options = {
615 mysql = mkMysqlOptions "Postfix" {
616 password_encrypt = mkOption { type = str; description = "Key to encrypt relay password in database"; };
617 };
618 admins = mkOption {
619 description = ''
620 List of admins meant to receive common aliases
621 '';
622 type = listOf str;
623 };
624 common_aliases = mkOption {
625 description = ''
626 List of aliases common to all hosts, to forward to admins
627 '';
628 type = listOf str;
629 };
630 other_aliases = mkOption {
631 description = ''
632 Other list of aliases, to forward to admins
633 '';
634 type = listOf str;
635 };
636 };
637 };
638 };
639 dovecot = mkOption {
640 description = "Dovecot configuration";
641 type = submodule {
642 options = {
643 ldap = mkLdapOptions "Dovecot" {
644 pass_attrs = mkOption { type = str; description = "Password attribute in LDAP"; };
645 user_attrs = mkOption { type = str; description = "User attribute mapping in LDAP"; };
646 iterate_attrs = mkOption { type = str; description = "User attribute mapping for listing in LDAP"; };
647 iterate_filter = mkOption { type = str; description = "User attribute filter for listing in LDAP"; };
648 postfix_mailbox_filter = mkOption { type = str; description = "Postfix filter to get mailboxes"; };
649 };
650 };
651 };
652 };
653 rspamd = mkOption {
654 description = "rspamd configuration";
655 type = submodule {
656 options = {
657 redis = mkRedisOptions "Redis";
658 read_password_hashed = mkOption { type = str; description = "Hashed read password for rspamd"; };
659 write_password_hashed = mkOption { type = str; description = "Hashed write password for rspamd"; };
660 read_password = mkOption {
661 type = str;
662 description = "Read password for rspamd. Unused";
663 apply = x: "";
664 };
665 write_password = mkOption {
666 type = str;
667 description = "Write password for rspamd. Unused";
668 apply = x: "";
669 };
670 };
671 };
672 };
673 sympa = mkOption {
674 description = "Sympa configuration";
675 type = submodule {
676 options = {
677 listmasters = mkOption {
678 type = listOf str;
679 description = "Listmasters";
680 };
681 postgresql = mkPsqlOptions "Sympa";
682 data_sources = mkOption {
683 type = attrsOf str;
684 default = {};
685 description = "Data sources to make available to sympa";
686 };
687 scenari = mkOption {
688 type = attrsOf str;
689 default = {};
690 description = "Scenari to make available to sympa";
691 };
692 };
693 };
694 };
695 };
696 };
697 };
698 coturn = mkOption {
699 description = "Coturn configuration";
700 type = submodule {
701 options = {
702 auth_access_key = mkOption { type = str; description = "key to access coturn"; };
703 };
704 };
705 };
706 buildbot = mkOption {
707 description = "Buildbot configuration";
708 type = submodule {
709 options = {
710 ssh_key = mkOption {
711 description = "SSH key information";
712 type = submodule {
713 options = {
714 public = mkOption { type = str; description = "Public part of the key"; };
715 private = mkOption { type = lines; description = "Private part of the key"; };
716 };
717 };
718 };
719 workerPassword = mkOption { description = "Buildbot worker password"; type = str; };
720 user = mkOption {
721 description = "Buildbot user";
722 type = submodule {
723 options = {
724 uid = mkOption {
725 description = "user uid";
726 type = int;
727 };
728 gid = mkOption {
729 description = "user gid";
730 type = int;
731 };
732 };
733 };
734 };
735 ldap = mkOption {
736 description = "Ldap configuration for buildbot";
737 type = submodule {
738 options = {
739 password = mkOption { type = str; description = "Buildbot password"; };
740 };
741 };
742 };
743 projects = mkOption {
744 description = "Projects to make a buildbot for";
745 type = attrsOf (submodule {
746 options = {
747 name = mkOption { type = str; description = "Project name"; };
748 src = mkOption { type = path; description = "source of the project configuration"; };
749 packages = mkOption {
750 type = listOf package;
751 example = literalExample ''
752 [ pkgs.bash pkgs.git pkgs.gzip pkgs.openssh ];
753 '';
754 description = ''
755 Builds packages list to make available to buildbot project.
756 '';
757 };
758 pythonPathHome = mkOption { type = bool; description = "Whether to add project’s python home to python path"; };
759 workerPort = mkOption { type = port; description = "Port for the worker"; };
760 secrets = mkOption {
761 type = attrsOf lines;
762 description = "Secrets for the project to dump as files";
763 };
764 secretsDeps = mkOption {
765 type = listOf package;
766 default = [];
767 description = "Dependencies of file that will land in secrets";
768 };
769 environment = mkOption {
770 type = attrsOf str;
771 description = ''
772 Environment variables for the project.
773 BUILDBOT_ is prefixed to the variable names
774 '';
775 };
776 activationScript = mkOption {
777 type = lines;
778 description = ''
779 Activation script to run during deployment
780 '';
781 };
782 webhookTokens = mkOption {
783 type = nullOr (listOf str);
784 default = null;
785 description = ''
786 List of tokens allowed to push to project’s change_hook/base endpoint
787 '';
788 };
789 };
790 });
791 };
792 };
793 };
794 };
795 tools = mkOption {
796 description = "Tools configurations";
797 type = submodule {
798 options = {
799 contact = mkOption { type = str; description = "Contact e-mail address"; };
800 assets = mkOption {
801 default = {};
802 type = attrsOf (submodule {
803 options = {
804 assetType = mkOption { type = enum ["tgz" "url" "googleFont"]; default = "url"; description = "Type of asset"; };
805 tgzRemoveComponents = mkOption { type = int; default = 0; description = "Remove components when extracting"; };
806 url = mkOption { type = str; description = "URL to fetch"; };
807 sha256 = mkOption { type = str; description = "Hash of the url"; };
808 };
809 });
810 description = "Assets to provide on assets.immae.eu";
811 };
812 davical = mkOption {
813 description = "Davical configuration";
814 type = submodule {
815 options = {
816 postgresql = mkPsqlOptions "Davical";
817 ldap = mkLdapOptions "Davical" {};
818 };
819 };
820 };
821 diaspora = mkOption {
822 description = "Diaspora configuration";
823 type = submodule {
824 options = {
825 postgresql = mkPsqlOptions "Diaspora";
826 redis = mkRedisOptions "Diaspora";
827 ldap = mkLdapOptions "Diaspora" {};
828 secret_token = mkOption { type = str; description = "Secret token"; };
829 };
830 };
831 };
832 dmarc_reports = mkOption {
833 description = "DMARC reports configuration";
834 type = submodule {
835 options = {
836 mysql = mkMysqlOptions "DMARC" {};
837 anonymous_key = mkOption { type = str; description = "Anonymous hashing key"; };
838 };
839 };
840 };
841 etherpad-lite = mkOption {
842 description = "Etherpad configuration";
843 type = submodule {
844 options = {
845 postgresql = mkPsqlOptions "Etherpad";
846 ldap = mkLdapOptions "Etherpad" {
847 group_filter = mkOption { type = str; description = "Filter for groups"; };
848 };
849 adminPassword = mkOption { type = str; description = "Admin password for mypads / admin"; };
850 session_key = mkOption { type = str; description = "Session key"; };
851 api_key = mkOption { type = str; description = "API key"; };
852 };
853 };
854 };
855 gitolite = mkOption {
856 description = "Gitolite configuration";
857 type = submodule {
858 options = {
859 ldap = mkLdapOptions "Gitolite" {};
860 ssh_key = mkOption {
861 description = "SSH key information";
862 type = submodule {
863 options = {
864 public = mkOption { type = str; description = "Public part of the key"; };
865 private = mkOption { type = lines; description = "Private part of the key"; };
866 };
867 };
868 };
869 };
870 };
871 };
872 landing = mkOption {
873 description = "Landing configuration";
874 type = submodule {
875 options = {
876 postgresql = mkPsqlOptions "Landing";
877 };
878 };
879 };
880 kanboard = mkOption {
881 description = "Kanboard configuration";
882 type = submodule {
883 options = {
884 postgresql = mkPsqlOptions "Kanboard";
885 ldap = mkLdapOptions "Kanboard" {
886 admin_dn = mkOption { type = str; description = "Admin DN"; };
887 };
888 };
889 };
890 };
891 mantisbt = mkOption {
892 description = "Mantisbt configuration";
893 type = submodule {
894 options = {
895 postgresql = mkPsqlOptions "Mantisbt";
896 ldap = mkLdapOptions "Mantisbt" {};
897 master_salt = mkOption { type = str; description = "Master salt for password hash"; };
898 };
899 };
900 };
901 mastodon = mkOption {
902 description = "Mastodon configuration";
903 type = submodule {
904 options = {
905 postgresql = mkPsqlOptions "Mastodon";
906 redis = mkRedisOptions "Mastodon";
907 ldap = mkLdapOptions "Mastodon" {};
908 paperclip_secret = mkOption { type = str; description = "Paperclip secret"; };
909 otp_secret = mkOption { type = str; description = "OTP secret"; };
910 secret_key_base = mkOption { type = str; description = "Secret key base"; };
911 vapid = mkOption {
912 description = "vapid key";
913 type = submodule {
914 options = {
915 private = mkOption { type = str; description = "Private key"; };
916 public = mkOption { type = str; description = "Public key"; };
917 };
918 };
919 };
920 };
921 };
922 };
923 mediagoblin = mkOption {
924 description = "Mediagoblin configuration";
925 type = submodule {
926 options = {
927 postgresql = mkPsqlOptions "Mediagoblin";
928 redis = mkRedisOptions "Mediagoblin";
929 ldap = mkLdapOptions "Mediagoblin" {};
930 };
931 };
932 };
933 nextcloud = mkOption {
934 description = "Nextcloud configuration";
935 type = submodule {
936 options = {
937 postgresql = mkPsqlOptions "Nextcloud";
938 redis = mkRedisOptions "Nextcloud";
939 password_salt = mkOption { type = str; description = "Password salt"; };
940 instance_id = mkOption { type = str; description = "Instance ID"; };
941 secret = mkOption { type = str; description = "App secret"; };
942 };
943 };
944 };
945 peertube = mkOption {
946 description = "Peertube configuration";
947 type = submodule {
948 options = {
949 listenPort = mkOption { type = port; description = "Port to listen to"; };
950 postgresql = mkPsqlOptions "Peertube";
951 redis = mkRedisOptions "Peertube";
952 ldap = mkLdapOptions "Peertube" {};
953 };
954 };
955 };
956 phpldapadmin = mkOption {
957 description = "phpLdapAdmin configuration";
958 type = submodule {
959 options = {
960 ldap = mkLdapOptions "phpldapadmin" {};
961 };
962 };
963 };
964 rompr = mkOption {
965 description = "Rompr configuration";
966 type = submodule {
967 options = {
968 mpd = mkOption {
969 description = "MPD configuration";
970 type = submodule {
971 options = {
972 host = mkOption { type = str; description = "Host for MPD"; };
973 port = mkOption { type = port; description = "Port to access MPD host"; };
974 };
975 };
976 };
977 };
978 };
979 };
980 roundcubemail = mkOption {
981 description = "Roundcubemail configuration";
982 type = submodule {
983 options = {
984 postgresql = mkPsqlOptions "TT-RSS";
985 secret = mkOption { type = str; description = "Secret"; };
986 };
987 };
988 };
989 shaarli = mkOption {
990 description = "Shaarli configuration";
991 type = submodule {
992 options = {
993 ldap = mkLdapOptions "Shaarli" {};
994 };
995 };
996 };
997 status_engine = mkOption {
998 description = "Status Engine configuration";
999 type = submodule {
1000 options = {
1001 mysql = mkMysqlOptions "StatusEngine" {};
1002 ldap = mkLdapOptions "StatusEngine" {};
1003 };
1004 };
1005 };
1006 task = mkOption {
1007 description = "Taskwarrior configuration";
1008 type = submodule {
1009 options = {
1010 ldap = mkLdapOptions "Taskwarrior" {};
1011 taskwarrior-web = mkOption {
1012 description = "taskwarrior-web profiles";
1013 default = {};
1014 type = attrsOf (submodule {
1015 options = {
1016 uid = mkOption {
1017 type = listOf str;
1018 description = "List of ldap uids having access to this profile";
1019 };
1020 org = mkOption { type = str; description = "Taskd organisation"; };
1021 key = mkOption { type = str; description = "Taskd key"; };
1022 date = mkOption { type = str; description = "Preferred date format"; };
1023 };
1024 });
1025 };
1026 };
1027 };
1028 };
1029 ttrss = mkOption {
1030 description = "TT-RSS configuration";
1031 type = submodule {
1032 options = {
1033 postgresql = mkPsqlOptions "TT-RSS";
1034 ldap = mkLdapOptions "TT-RSS" {};
1035 };
1036 };
1037 };
1038 wallabag = mkOption {
1039 description = "Wallabag configuration";
1040 type = submodule {
1041 options = {
1042 postgresql = mkPsqlOptions "Wallabag";
1043 ldap = mkLdapOptions "Wallabag" {
1044 admin_filter = mkOption { type = str; description = "Admin users filter"; };
1045 };
1046 redis = mkRedisOptions "Wallabag";
1047 secret = mkOption { type = str; description = "App secret"; };
1048 };
1049 };
1050 };
1051 webhooks = mkOption {
1052 type = attrsOf str;
1053 description = "Mapping 'name'.php => script for webhooks";
1054 };
1055 csp_reports = mkOption {
1056 description = "CSP report configuration";
1057 type = submodule {
1058 options = {
1059 report_uri = mkOption { type = str; description = "URI to report CSP violations to"; };
1060 policies = mkOption { type = attrsOf str; description = "CSP policies to apply"; };
1061 };
1062 };
1063 };
1064 commento = mkOption {
1065 description = "Commento configuration";
1066 type = submodule {
1067 options = {
1068 listenPort = mkOption { type = port; description = "Port to listen to"; };
1069 postgresql = mkPsqlOptions "Commento";
1070 smtp = mkSmtpOptions "Commento";
1071 };
1072 };
1073 };
1074 cryptpad = mkOption {
1075 description = "Cryptpad configuration";
1076 type = submodule {
1077 options = {
1078 email = mkOption { type = str; description = "Admin e-mail"; };
1079 admins = mkOption { type = listOf str; description = "Instance admin public keys"; };
1080 port = mkOption { type = port; description = "Port to listen to"; };
1081 };
1082 };
1083 };
1084 ympd = mkOption {
1085 description = "Ympd configuration";
1086 type = submodule {
1087 options = {
1088 listenPort = mkOption { type = port; description = "Port to listen to"; };
1089 mpd = mkOption {
1090 description = "MPD configuration";
1091 type = submodule {
1092 options = {
1093 password = mkOption { type = str; description = "Password to access MPD host"; };
1094 host = mkOption { type = str; description = "Host for MPD"; };
1095 port = mkOption { type = port; description = "Port to access MPD host"; };
1096 };
1097 };
1098 };
1099 };
1100 };
1101 };
1102 umami = mkOption {
1103 description = "Umami configuration";
1104 type = submodule {
1105 options = {
1106 listenPort = mkOption { type = port; description = "Port to listen to"; };
1107 postgresql = mkPsqlOptions "Umami";
1108 hashSalt = mkOption { type = str; description = "Hash salt"; };
1109 };
1110 };
1111 };
1112 yourls = mkOption {
1113 description = "Yourls configuration";
1114 type = submodule {
1115 options = {
1116 mysql = mkMysqlOptions "Yourls" {};
1117 ldap = mkLdapOptions "Yourls" {};
1118 cookieKey = mkOption { type = str; description = "Cookie key"; };
1119 };
1120 };
1121 };
1122 };
1123 };
1124 };
1125 serverSpecific = mkOption { type = attrsOf unspecified; description = "Server specific configuration"; };
1126 };
1127 options.hostEnv = mkOption {
1128 readOnly = true;
1129 type = hostEnv;
1130 default = config.myEnv.servers."${name}";
1131 description = "Host environment";
1132 };
1133 };
1134 };
1135}
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 @@
1#! /usr/bin/env python3
2import sys
3
4sys.stdin.reconfigure(encoding='utf-8')
5sys.stdout.reconfigure(encoding='utf-8')
6stdin = sys.stdin
7stdout = sys.stdout
8
9mailaddr = sys.argv[1]
10inheader = {}
11
12# Change to actual file for logging
13logfile = open("/dev/null", "a")
14
15def log(l, i):
16 logfile.write("{} {}\n".format(i, l))
17 logfile.flush()
18
19def send(l):
20 log(l, ">")
21 stdout.write("{}\n".format(l))
22 stdout.flush()
23
24def token_and_sid(version, sid, token):
25 if version < "0.5":
26 return "{}|{}".format(token, sid)
27 else:
28 return "{}|{}".format(sid, token)
29
30log("started", "l")
31while True:
32 line = stdin.readline().strip()
33 log(line, "<")
34 if not line:
35 log("finished", "l")
36 break
37 splitted = line.split("|")
38 if line == "config|ready":
39 log("in config ready", "l")
40 send("register|filter|smtp-in|mail-from")
41 send("register|filter|smtp-in|data-line")
42 send("register|ready")
43 if splitted[0] != "filter":
44 continue
45 if len(splitted) < 7:
46 send("invalid filter command: expected >6 fields!")
47 sys.exit(1)
48 version = splitted[1]
49 action = splitted[4]
50 sid = splitted[5]
51 token = splitted[6]
52 token_sid = token_and_sid(version, sid, token)
53 rest = "|".join(splitted[7:])
54 if action == "mail-from":
55 inheader[sid] = True
56 send("filter-result|{}|rewrite|<{}>".format(token_sid, mailaddr))
57 continue
58 if action == "data-line":
59 if rest == "" and inheader.get(sid, False):
60 inheader[sid] = False
61 if rest == "." and not inheader.get(sid):
62 del(inheader[sid])
63 if inheader.get(sid, False) and rest.upper().startswith("FROM:"):
64 send("filter-dataline|{}|From: {}".format(token_sid, mailaddr))
65 else:
66 send("filter-dataline|{}|{}".format(token_sid, rest))
67 continue
68 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 @@
1{
2 "nodes": {
3 "environment": {
4 "locked": {
5 "lastModified": 1,
6 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
7 "path": "../environment",
8 "type": "path"
9 },
10 "original": {
11 "path": "../environment",
12 "type": "path"
13 }
14 },
15 "root": {
16 "inputs": {
17 "environment": "environment",
18 "secrets": "secrets"
19 }
20 },
21 "secrets": {
22 "locked": {
23 "lastModified": 1,
24 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
25 "path": "../../secrets",
26 "type": "path"
27 },
28 "original": {
29 "path": "../../secrets",
30 "type": "path"
31 }
32 }
33 },
34 "root": "root",
35 "version": 7
36}
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 @@
1{
2 inputs.environment.url = "path:../environment";
3 inputs.secrets.url = "path:../../secrets";
4
5 outputs = { self, environment, secrets }: {
6 nixosModule = self.nixosModules.mail-relay;
7 nixosModules.mail-relay = { lib, pkgs, config, name, ... }:
8 {
9 imports = [
10 environment.nixosModule
11 secrets.nixosModule
12 ];
13 options.myServices.mailRelay.enable = lib.mkEnableOption "enable Mail relay services";
14 config = lib.mkIf config.myServices.mailRelay.enable {
15 secrets.keys."opensmtpd/creds" = {
16 user = "smtpd";
17 group = "smtpd";
18 permissions = "0400";
19 text = ''
20 eldiron ${name}:${config.hostEnv.ldap.password}
21 '';
22 };
23 users.users.smtpd.extraGroups = [ "keys" ];
24 services.opensmtpd = {
25 enable = true;
26 serverConfiguration = let
27 filter-rewrite-from = pkgs.runCommand "filter-rewrite-from.py" {
28 buildInputs = [ pkgs.python38 ];
29 } ''
30 cp ${./filter-rewrite-from.py} $out
31 patchShebangs $out
32 '';
33 in ''
34 table creds \
35 "${config.secrets.fullPaths."opensmtpd/creds"}"
36 # FIXME: filtering requires 6.6, uncomment following lines when
37 # upgrading
38 # filter "fixfrom" \
39 # proc-exec "${filter-rewrite-from} ${name}@immae.eu"
40 # listen on socket filter "fixfrom"
41 action "relay-rewrite-from" relay \
42 helo ${config.hostEnv.fqdn} \
43 host smtp+tls://eldiron@eldiron.immae.eu:587 \
44 auth <creds> \
45 mail-from ${name}@immae.eu
46 action "relay" relay \
47 helo ${config.hostEnv.fqdn} \
48 host smtp+tls://eldiron@eldiron.immae.eu:587 \
49 auth <creds>
50 match for any !mail-from "@immae.eu" action "relay-rewrite-from"
51 match for any mail-from "@immae.eu" action "relay"
52 '';
53 };
54 environment.systemPackages = [ config.services.opensmtpd.package ];
55 };
56 };
57 };
58}
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 @@
1{
2 "nodes": {
3 "environment": {
4 "locked": {
5 "lastModified": 1,
6 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
7 "path": "../environment",
8 "type": "path"
9 },
10 "original": {
11 "path": "../environment",
12 "type": "path"
13 }
14 },
15 "files-watcher": {
16 "locked": {
17 "lastModified": 1,
18 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
19 "path": "../../files-watcher",
20 "type": "path"
21 },
22 "original": {
23 "path": "../../files-watcher",
24 "type": "path"
25 }
26 },
27 "flake-utils": {
28 "locked": {
29 "lastModified": 1609246779,
30 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
31 "owner": "numtide",
32 "repo": "flake-utils",
33 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
34 "type": "github"
35 },
36 "original": {
37 "owner": "numtide",
38 "repo": "flake-utils",
39 "type": "github"
40 }
41 },
42 "flake-utils_2": {
43 "locked": {
44 "lastModified": 1609246779,
45 "narHash": "sha256-eq6ZXE/VWo3EMC65jmIT6H/rrUc9UWOWVujkzav025k=",
46 "owner": "numtide",
47 "repo": "flake-utils",
48 "rev": "08c7ad4a0844adc4a7f9f5bb3beae482e789afa4",
49 "type": "github"
50 },
51 "original": {
52 "owner": "numtide",
53 "repo": "flake-utils",
54 "type": "github"
55 }
56 },
57 "myuids": {
58 "locked": {
59 "lastModified": 1,
60 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
61 "path": "../myuids",
62 "type": "path"
63 },
64 "original": {
65 "path": "../myuids",
66 "type": "path"
67 }
68 },
69 "myuids_2": {
70 "locked": {
71 "lastModified": 1,
72 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
73 "path": "../myuids",
74 "type": "path"
75 },
76 "original": {
77 "path": "../myuids",
78 "type": "path"
79 }
80 },
81 "nixpkgs": {
82 "locked": {
83 "lastModified": 1597943282,
84 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
85 "owner": "NixOS",
86 "repo": "nixpkgs",
87 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
88 "type": "github"
89 },
90 "original": {
91 "owner": "NixOS",
92 "repo": "nixpkgs",
93 "type": "github"
94 }
95 },
96 "nixpkgs_2": {
97 "locked": {
98 "lastModified": 1597943282,
99 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
100 "owner": "NixOS",
101 "repo": "nixpkgs",
102 "rev": "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38",
103 "type": "github"
104 },
105 "original": {
106 "owner": "NixOS",
107 "repo": "nixpkgs",
108 "type": "github"
109 }
110 },
111 "openarc": {
112 "inputs": {
113 "flake-utils": "flake-utils",
114 "myuids": "myuids",
115 "nixpkgs": "nixpkgs",
116 "openarc": "openarc_2"
117 },
118 "locked": {
119 "lastModified": 1,
120 "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
121 "path": "../../openarc",
122 "type": "path"
123 },
124 "original": {
125 "path": "../../openarc",
126 "type": "path"
127 }
128 },
129 "openarc_2": {
130 "flake": false,
131 "locked": {
132 "lastModified": 1537545083,
133 "narHash": "sha256-xUSRARC7875vFjtZ66t8KBlKmkEdIZblWHc4zqGZAQQ=",
134 "owner": "trusteddomainproject",
135 "repo": "OpenARC",
136 "rev": "355ee2a1ca85acccce494478991983b54f794f4e",
137 "type": "github"
138 },
139 "original": {
140 "owner": "trusteddomainproject",
141 "repo": "OpenARC",
142 "type": "github"
143 }
144 },
145 "opendmarc": {
146 "inputs": {
147 "flake-utils": "flake-utils_2",
148 "myuids": "myuids_2",
149 "nixpkgs": "nixpkgs_2"
150 },
151 "locked": {
152 "lastModified": 1,
153 "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
154 "path": "../../opendmarc",
155 "type": "path"
156 },
157 "original": {
158 "path": "../../opendmarc",
159 "type": "path"
160 }
161 },
162 "root": {
163 "inputs": {
164 "environment": "environment",
165 "files-watcher": "files-watcher",
166 "openarc": "openarc",
167 "opendmarc": "opendmarc",
168 "secrets": "secrets"
169 }
170 },
171 "secrets": {
172 "locked": {
173 "lastModified": 1,
174 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
175 "path": "../../secrets",
176 "type": "path"
177 },
178 "original": {
179 "path": "../../secrets",
180 "type": "path"
181 }
182 }
183 },
184 "root": "root",
185 "version": 7
186}
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 @@
1{
2 inputs.secrets.url = "path:../../secrets";
3 inputs.environment.url = "path:../environment";
4 inputs.files-watcher.url = "path:../../files-watcher";
5 inputs.opendmarc.url = "path:../../opendmarc";
6 inputs.openarc.url = "path:../../openarc";
7 outputs = { self, secrets, environment, opendmarc, openarc, files-watcher }: {
8 nixosModule = self.nixosModules.milters;
9 nixosModules.milters = { lib, pkgs, config, nodes, ... }:
10 {
11 imports = [
12 secrets.nixosModule
13 environment.nixosModule
14 files-watcher.nixosModule
15 opendmarc.nixosModule
16 openarc.nixosModule
17 ];
18 options.myServices.mail.milters.enable = lib.mkEnableOption "enable Mail milters";
19 options.myServices.mail.milters.sockets = lib.mkOption {
20 type = lib.types.attrsOf lib.types.path;
21 default = {
22 opendkim = "/run/opendkim/opendkim.sock";
23 opendmarc = config.services.opendmarc.socket;
24 openarc = config.services.openarc.socket;
25 };
26 readOnly = true;
27 description = ''
28 milters sockets
29 '';
30 };
31 config = lib.mkIf config.myServices.mail.milters.enable {
32 secrets.keys = {
33 "opendkim" = {
34 isDir = true;
35 user = config.services.opendkim.user;
36 group = config.services.opendkim.group;
37 permissions = "0550";
38 };
39 "opendkim/eldiron.private" = {
40 user = config.services.opendkim.user;
41 group = config.services.opendkim.group;
42 permissions = "0400";
43 text = config.myEnv.mail.dkim.eldiron.private;
44 };
45 };
46 users.users."${config.services.opendkim.user}".extraGroups = [ "keys" ];
47 services.opendkim = {
48 enable = true;
49 socket = "local:${config.myServices.mail.milters.sockets.opendkim}";
50 domains =
51 let
52 getDomains = p: lib.mapAttrsToList (n: v: v.fqdn) p.emailPolicies;
53 bydomain = builtins.mapAttrs (n: getDomains) nodes.eldiron.config.myServices.dns.zones;
54 domains' = lib.flatten (builtins.attrValues bydomain);
55 in
56 builtins.concatStringsSep "," domains';
57 keyPath = config.secrets.fullPaths."opendkim";
58 selector = "eldiron";
59 configFile = pkgs.writeText "opendkim.conf" ''
60 SubDomains yes
61 UMask 002
62 AlwaysAddARHeader yes
63 '';
64 group = config.services.postfix.group;
65 };
66 systemd.services.opendkim.serviceConfig.Slice = "mail.slice";
67 systemd.services.opendkim.preStart = lib.mkBefore ''
68 # Skip the prestart script as keys are handled in secrets
69 exit 0
70 '';
71 services.filesWatcher.opendkim = {
72 restart = true;
73 paths = [
74 config.secrets.fullPaths."opendkim/eldiron.private"
75 ];
76 };
77
78 systemd.services.milter_verify_from = {
79 description = "Verify from milter";
80 after = [ "network.target" ];
81 wantedBy = [ "multi-user.target" ];
82
83 serviceConfig = {
84 Slice = "mail.slice";
85 User = "postfix";
86 Group = "postfix";
87 ExecStart = let
88 pymilter = with pkgs.python38Packages; buildPythonPackage rec {
89 pname = "pymilter";
90 version = "1.0.4";
91 src = fetchPypi {
92 inherit pname version;
93 sha256 = "1bpcvq7d72q0zi7c8h5knhasywwz9gxc23n9fxmw874n5k8hsn7k";
94 };
95 doCheck = false;
96 buildInputs = [ pkgs.libmilter ];
97 };
98 python = pkgs.python38.withPackages (p: [ pymilter ]);
99 in "${python}/bin/python ${./verify_from.py} -s /run/milter_verify_from/verify_from.sock";
100 RuntimeDirectory = "milter_verify_from";
101 };
102 };
103 };
104 };
105 };
106}
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 @@
1#!/usr/bin/env python3
2import Milter
3import argparse
4from email.header import decode_header
5from email.utils import parseaddr
6
7class CheckMilter(Milter.Base):
8 def __init__(self):
9 self.envelope_from = None
10 self.header_from = None
11
12 @Milter.noreply
13 def connect(self, IPname, family, hostaddr):
14 return Milter.CONTINUE
15
16 def hello(self, heloname):
17 return Milter.CONTINUE
18
19 def envfrom(self, mailfrom, *args):
20 self.envelope_from = parseaddr(mailfrom)[1]
21 return Milter.CONTINUE
22
23 @Milter.noreply
24 def envrcpt(self, to, *str):
25 return Milter.CONTINUE
26
27 @Milter.noreply
28 def header(self, name, hval):
29 if name.lower() == "from":
30 self.header_from = parseaddr(decode_header(hval)[-1][0])[1]
31 return Milter.CONTINUE
32
33 def eoh(self):
34 if self.header_from is not None and self.header_from != "" and self.header_from != self.envelope_from:
35 self.setreply("553", xcode="5.7.1", msg="<%s>: From header rejected: not matching envelope From %s"
36 % (self.header_from, self.envelope_from))
37 return Milter.REJECT
38
39 return Milter.CONTINUE
40
41 @Milter.noreply
42 def body(self, chunk):
43 return Milter.CONTINUE
44
45 def eom(self):
46 return Milter.ACCEPT
47
48 def close(self):
49 return Milter.CONTINUE
50
51 def abort(self):
52 return Milter.CONTINUE
53
54if __name__ == "__main__":
55 parser = argparse.ArgumentParser()
56 parser.add_argument("--socket", "-s", type=str, help="socket to listen to")
57 config = parser.parse_args()
58
59 Milter.factory = CheckMilter
60 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 @@
1{
2 "nodes": {
3 "environment": {
4 "locked": {
5 "lastModified": 1,
6 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
7 "path": "../environment",
8 "type": "path"
9 },
10 "original": {
11 "path": "../environment",
12 "type": "path"
13 }
14 },
15 "naemon": {
16 "locked": {
17 "lastModified": 1,
18 "narHash": "sha256-6le57WLKj1HXdhe4cgYO6N0Z9nJZC+plQY8HhOwzEIk=",
19 "path": "../../naemon",
20 "type": "path"
21 },
22 "original": {
23 "path": "../../naemon",
24 "type": "path"
25 }
26 },
27 "nixpkgs-lib": {
28 "locked": {
29 "dir": "lib",
30 "lastModified": 1691269286,
31 "narHash": "sha256-7cPTz1bPhwq8smt9rHDcFtJsd1tFDcBukzj5jOXqjfk=",
32 "owner": "NixOS",
33 "repo": "nixpkgs",
34 "rev": "85d4248a4f5aa6bc55dd2cea8131bb68b2d43804",
35 "type": "github"
36 },
37 "original": {
38 "dir": "lib",
39 "owner": "NixOS",
40 "repo": "nixpkgs",
41 "type": "github"
42 }
43 },
44 "root": {
45 "inputs": {
46 "environment": "environment",
47 "naemon": "naemon",
48 "nixpkgs-lib": "nixpkgs-lib",
49 "secrets": "secrets"
50 }
51 },
52 "secrets": {
53 "locked": {
54 "lastModified": 1,
55 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
56 "path": "../../secrets",
57 "type": "path"
58 },
59 "original": {
60 "path": "../../secrets",
61 "type": "path"
62 }
63 }
64 },
65 "root": "root",
66 "version": 7
67}
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 @@
1{
2 inputs = {
3 environment.url = "path:../environment";
4 secrets.url = "path:../../secrets";
5 naemon.url = "path:../../naemon";
6 nixpkgs-lib.url = "github:NixOS/nixpkgs?dir=lib";
7 };
8 outputs = { self, environment, nixpkgs-lib, secrets, naemon }: {
9 nagios-cli-config = ./nagios-cli.cfg;
10 lib = rec {
11 expandedObject = kind: object: objects:
12 if object ? "use"
13 then expandedObject kind objects.templates.${kind}.${object.use} objects // object
14 else object;
15
16 objectsCommon = import ./objects_common.nix;
17 toObjects = import ./to_objects.nix { inherit (nixpkgs-lib) lib; };
18
19 toMasterPassiveObject = svcTemplate: freshnessThresholdMultiplier: objects:
20 {
21 service = with nixpkgs-lib.lib; map (s:
22 {
23 host_name = (expandedObject "service" s objects).host_name;
24 use = svcTemplate;
25 retry_interval = "1";
26 freshness_threshold = let
27 fs = expandedObject "service" s objects;
28 in if builtins.isInt fs.check_interval
29 then builtins.ceil (freshnessThresholdMultiplier * 60 * fs.check_interval)
30 else fs.check_interval;
31 }
32 // filterAttrs (k: v: builtins.elem k ["service_description"] || builtins.substring 0 1 k == "_") s
33 // mapAttrs'
34 (n: nameValuePair (removePrefix "__passive_" n))
35 (filterAttrs (k: _: hasPrefix "__passive_" k) s)
36 ) objects.service;
37 host = objects.host;
38 };
39
40 emailCheck = allCfg: host: hostFQDN: let
41 cfg = allCfg."${host}";
42 reverseTargets = builtins.attrNames (nixpkgs-lib.lib.filterAttrs (k: v: builtins.elem host v.targets) allCfg);
43 to_email = cfg': host':
44 let sep = if nixpkgs-lib.lib.hasInfix "+" cfg'.mail_address then "_" else "+";
45 in "${cfg'.mail_address}${sep}${host'}@${cfg'.mail_domain}";
46 mails_to_send = builtins.concatStringsSep "," (map (n: to_email allCfg."${n}" host) cfg.targets);
47 mails_to_receive = builtins.concatStringsSep "," (map (n: "${to_email cfg n}:${n}") reverseTargets);
48 command = if cfg.local
49 then
50 [ "check_emails_local" "/var/lib/naemon/checks/email" mails_to_send mails_to_receive ]
51 else
52 [ "check_emails" cfg.login cfg.port mails_to_send mails_to_receive ];
53 in
54 {
55 service_description = "${hostFQDN} email service is active";
56 use = "mail-service";
57 host_name = hostFQDN;
58 servicegroups = "webstatus-email";
59 check_command = command;
60 };
61 };
62 nixosModule = self.nixosModules.monitoring;
63 nixosModules.monitoring = { config, pkgs, lib, ... }:
64 let
65 cfg = config.myServices.monitoring;
66 allPluginsConfig = import ./myplugins.nix {
67 inherit pkgs lib config;
68 sudo = "/run/wrappers/bin/sudo";
69 };
70 mypluginsConfig = lib.mapAttrs (n: v:
71 if builtins.isFunction v
72 then v (cfg.pluginsArgs."${n}" or {})
73 else v
74 ) (lib.getAttrs cfg.activatedPlugins allPluginsConfig);
75 myplugins = let
76 mypluginsChunk = builtins.concatStringsSep "\n" (lib.mapAttrsToList (k: v: v.chunk or "") mypluginsConfig);
77 in pkgs.runCommand "buildplugins" {
78 buildInputs = [ pkgs.makeWrapper pkgs.perl ];
79 } ''
80 mkdir $out
81 ${mypluginsChunk}
82 '';
83 objectsModule = with lib.types; submodule {
84 options = {
85 command = lib.mkOption {
86 type = attrsOf str;
87 default = {};
88 description = "Command definitions";
89 };
90
91 host = lib.mkOption {
92 type = attrsOf (attrsOf str);
93 default = {};
94 description = "Host definitions";
95 };
96 hostgroup = lib.mkOption {
97 type = attrsOf (attrsOf str);
98 default = {};
99 description = "Host group definitions";
100 };
101 hostdependency = lib.mkOption {
102 type = listOf (attrsOf str);
103 default = [];
104 description = "Host dependency definitions";
105 };
106
107 service = lib.mkOption {
108 type = listOf (attrsOf (oneOf [ str (listOf str) int ]));
109 # str -> string
110 # listOf str -> list to be concatenated with "!"
111 # int -> toString
112 default = [];
113 description = "Service definitions";
114 };
115 servicegroup = lib.mkOption {
116 type = attrsOf (attrsOf str);
117 default = {};
118 description = "Service group definitions";
119 };
120 servicedependency = lib.mkOption {
121 type = listOf (attrsOf str);
122 default = [];
123 description = "Service dependency definitions";
124 };
125
126 contact = lib.mkOption {
127 type = attrsOf (attrsOf str);
128 default = {};
129 description = "Contact definitions";
130 };
131 contactgroup = lib.mkOption {
132 type = attrsOf (attrsOf str);
133 default = {};
134 description = "Contact group definitions";
135 };
136
137 timeperiod = lib.mkOption {
138 type = attrsOf (attrsOf str);
139 default = {};
140 description = "Time period definitions";
141 };
142
143 templates = lib.mkOption {
144 description = "Template definitions";
145 default = {};
146 type = submodule {
147 options = {
148 service = lib.mkOption { type = attrsOf (attrsOf (either str int)); default = {}; };
149 contact = lib.mkOption { type = attrsOf (attrsOf str); default = {}; };
150 host = lib.mkOption { type = attrsOf (attrsOf str); default = {}; };
151 };
152 };
153 };
154 };
155 };
156 in
157 {
158 options = {
159 myServices.monitoring = {
160 enable = lib.mkOption {
161 type = lib.types.bool;
162 default = false;
163 description = ''
164 Whether to enable monitoring.
165 '';
166 };
167 master = lib.mkOption {
168 type = lib.types.bool;
169 default = false;
170 description = ''
171 This instance is the master instance
172 '';
173 };
174 pluginsArgs = lib.mkOption {
175 default = {};
176 description = "Arguments to pass to the naemon plugin configuration";
177 type = lib.types.attrsOf (lib.types.attrsOf lib.types.unspecified);
178 };
179 activatedPlugins = lib.mkOption {
180 default = [];
181 description = "List of naemon plugins to activate";
182 type = lib.types.listOf (lib.types.enum (builtins.attrNames allPluginsConfig));
183 };
184 fromMasterActivatedPlugins = lib.mkOption {
185 default = [];
186 description = "List of naemon plugins to activate from master";
187 type = lib.types.listOf (lib.types.str);
188 };
189 resources = lib.mkOption {
190 default = {};
191 description = "List of additionnal resources elements";
192 type = lib.types.attrsOf (lib.types.str);
193 };
194 objects = lib.mkOption {
195 default = {};
196 description = "Object definitions";
197 type = objectsModule;
198 };
199 fromMasterObjects = lib.mkOption {
200 default = {};
201 description = "Object definitions of checks that should be executed from master";
202 type = objectsModule;
203 };
204 };
205 };
206
207 imports = [
208 environment.nixosModule
209 secrets.nixosModule
210 naemon.nixosModule
211 ];
212 config = lib.mkIf cfg.enable {
213 myServices.monitoring.objects.command =
214 lib.foldr (v: o: o // (v.commands or {})) {} (builtins.attrValues mypluginsConfig);
215
216 security.sudo.extraRules = let
217 pluginsSudo = lib.lists.remove null (lib.mapAttrsToList (k: v:
218 if (v ? sudo)
219 then ({ users = [ "naemon" ]; } // (v.sudo myplugins))
220 else null) mypluginsConfig);
221 in pluginsSudo;
222
223 environment.etc.cnagios.source = "${pkgs.cnagios}/share/doc/cnagios";
224 environment.systemPackages = let
225 nagios-cli = pkgs.writeScriptBin "nagios-cli" ''
226 #!${pkgs.stdenv.shell}
227 sudo -u naemon ${pkgs.nagios-cli}/bin/nagios-cli -c ${self.nagios-cli-config}
228 '';
229 in [
230 pkgs.cnagios
231 nagios-cli
232 ];
233 secrets.keys = {
234 "naemon/id_rsa" = {
235 user = "naemon";
236 group = "naemon";
237 permissions = "0400";
238 text = config.myEnv.monitoring.ssh_secret_key;
239 };
240 "naemon/resources.cfg".keyDependencies = [ myplugins ];
241 };
242 services.naemon = {
243 enable = true;
244 extraConfig = ''
245 use_syslog=1
246 log_initial_states=1
247 date_format=iso8601
248 admin_email=${config.myEnv.monitoring.email}
249 '' + lib.optionalString (!cfg.master) ''
250 obsess_over_services=1
251 ocsp_command=notify-master
252 '';
253 extraResource = let
254 resources = [cfg.resources or {}] ++ (lib.mapAttrsToList (k: v: v.resources or {}) mypluginsConfig);
255 joined = lib.zipAttrsWith (n: v: if builtins.length (lib.unique v) == 1 then builtins.head v else abort "Non-unique resources names") resources;
256 joinedStr = builtins.concatStringsSep "\n" (lib.mapAttrsToList (k: v: "$" + "${k}$=${v}") joined);
257 in ''
258 $USER2$=${myplugins}
259 ${joinedStr}
260 '';
261 objectDefs =
262 self.lib.toObjects cfg.objects;
263 };
264 };
265 };
266 };
267}
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 @@
1{ sudo, pkgs, lib, config }:
2let
3 cfg = config.myServices.monitoring;
4in
5{
6 notify-secondary = {
7 resources = {
8 USER200 = config.myEnv.monitoring.status_url;
9 USER201 = config.myEnv.monitoring.status_token;
10 };
11 commands = {
12 notify-master = "$USER2$/send_nrdp.sh -u \"$USER200$\" -t \"$USER201$\" -H \"$HOSTADDRESS$\" -s \"$SERVICEDESC$\" -S \"$SERVICESTATEID$\" -o \"$SERVICEOUTPUT$ | $SERVICEPERFDATA$\"";
13 };
14 chunk = ''
15 cp ${./plugins}/send_nrdp.sh $out
16 patchShebangs $out/send_nrdp.sh
17 wrapProgram $out/send_nrdp.sh --prefix PATH : ${lib.makeBinPath [
18 pkgs.curl pkgs.jq
19 ]}
20 '';
21 };
22 notify-primary = {
23 resources = {
24 USER210 = config.myEnv.monitoring.apprise_urls;
25 };
26 commands = {
27 # $OVE is to force naemon to run via shell instead of execve which fails here
28 notify-host-by-email = "ADMINEMAIL=\"$ADMINEMAIL$\" SERVICENOTIFICATIONID=\"$SERVICENOTIFICATIONID$\" HOSTSTATE=\"$HOSTSTATE$\" HOSTOUTPUT=\"$HOSTOUTPUT$\" $USER2$/notify_by_email host \"$NOTIFICATIONTYPE$\" \"$HOSTALIAS$\" \"$LONGDATETIME$\" \"$CONTACTEMAIL$\" $OVE";
29 # $OVE is to force naemon to run via shell instead of execve which fails here
30 notify-service-by-email = "ADMINEMAIL=\"$ADMINEMAIL$\" SERVICENOTIFICATIONID=\"$SERVICENOTIFICATIONID$\" SERVICEDESC=\"$SERVICEDESC$\" SERVICESTATE=\"$SERVICESTATE$\" SERVICEOUTPUT=\"$SERVICEOUTPUT$\" $USER2$/notify_by_email service \"$NOTIFICATIONTYPE$\" \"$HOSTALIAS$\" \"$LONGDATETIME$\" \"$CONTACTEMAIL$\" $OVE";
31 notify-host-by-apprise = "HOST=\"$HOSTALIAS$\" NOTIFICATIONTYPE=\"$NOTIFICATIONTYPE$\" HOSTSTATE=\"$HOSTSTATE$\" HOSTOUTPUT=\"$HOSTOUTPUT$\" $USER2$/notify_by_apprise host \"$ARG1$\"";
32 notify-service-by-apprise = "HOST=\"$HOSTALIAS$\" NOTIFICATIONTYPE=\"$NOTIFICATIONTYPE$\" SERVICESTATE=\"$SERVICESTATE$\" SERVICEDESC=\"$SERVICEDESC$\" SERVICEOUTPUT=\"$SERVICEOUTPUT$\" $USER2$/notify_by_apprise service \"$ARG1$\"";
33 };
34 chunk = ''
35 cp ${./plugins}/{notify_by_email,notify_by_apprise} $out
36 patchShebangs $out/{notify_by_email,notify_by_apprise}
37 wrapProgram $out/notify_by_email --prefix PATH : ${lib.makeBinPath [
38 pkgs.mailutils
39 ]}
40 wrapProgram $out/notify_by_apprise --prefix PATH : ${lib.makeBinPath [
41 pkgs.apprise
42 ]}
43 '';
44 };
45 bandwidth = {
46 commands = {
47 check_local_bandwidth = "$USER2$/check_bandwidth -i=$ARG1$ -w $ARG2$ -c $ARG3$";
48 };
49 chunk = ''
50 cp ${./plugins}/check_bandwidth $out/
51 patchShebangs $out/check_bandwidth
52 wrapProgram $out/check_bandwidth --prefix PATH : ${lib.makeBinPath [
53 pkgs.iproute pkgs.bc
54 ]}
55 '';
56 };
57 command = {
58 commands = {
59 check_command_match = "$USER2$/check_command -c \"$ARG1$\" -C \"$ARG2$\" $ARG3$";
60 check_command_output = "$USER2$/check_command -c \"$ARG1$\" -s 0 -o \"$ARG2$\" $ARG3$";
61 check_command_status = "$USER2$/check_command -c \"$ARG1$\" -s \"$ARG2$\" $ARG3$";
62 };
63 chunk = ''
64 cp ${./plugins}/check_command $out/
65 patchShebangs $out/check_command
66 wrapProgram $out/check_command --prefix PATH : ${config.security.wrapperDir}
67 '';
68 };
69 dns = {
70 commands = {
71 check_dns = "$USER1$/check_dns -H $ARG1$ -s $HOSTADDRESS$ $ARG2$";
72 check_external_dns = "$USER1$/check_dns -H $ARG2$ -s $ARG1$ $ARG3$";
73 };
74 };
75 mdadm = {
76 commands = {
77 check_mdadm = "$USER2$/check_command -c \"${pkgs.mdadm}/bin/mdadm --monitor --scan -1\" -s 0 -o \"^$\" -r root";
78 };
79 sudo = _: {
80 commands = [
81 { command = "${pkgs.mdadm}/bin/mdadm --monitor --scan -1"; options = [ "NOPASSWD" ]; }
82 ];
83 runAs = "root";
84 };
85 };
86 postfix = {
87 commands = {
88 check_mailq = "$USER1$/check_mailq -s -w 1 -c 2";
89 };
90 sudo = _: {
91 commands = [
92 { command = "${pkgs.postfix}/bin/mailq"; options = [ "NOPASSWD" ]; }
93 ];
94 runAs = "root";
95 };
96 };
97 emails = {
98 resources = {
99 USER203 = config.secrets.fullPaths."naemon/id_rsa";
100 };
101 commands = {
102 check_emails = "$USER2$/check_emails -H $HOSTADDRESS$ -i $USER203$ -l $ARG1$ -p $ARG2$ -s $ARG3$ -f $ARG4$";
103 check_emails_local = "$USER2$/check_emails -H $HOSTADDRESS$ -n $ARG1$ -r $ADMINEMAIL$ -s $ARG2$ -f $ARG3$";
104 };
105 chunk = let
106 send_mails = pkgs.runCommand "send_mails" {
107 buildInputs = [ pkgs.makeWrapper ];
108 } ''
109 mkdir -p $out/bin
110 cp ${./send_mails} $out/bin/send_mails
111 patchShebangs $out
112 wrapProgram $out/bin/send_mails --prefix PATH : ${lib.makeBinPath [
113 pkgs.mailutils
114 ]}
115 '';
116 in ''
117 cp ${./plugins}/check_emails $out/
118 patchShebangs $out/check_emails
119 wrapProgram $out/check_emails --prefix PATH : ${lib.makeBinPath [
120 pkgs.openssh send_mails
121 ]} --prefix PERL5LIB : ${pkgs.perlPackages.makePerlPath [
122 pkgs.perlPackages.TimeDate
123 ]}
124 '';
125 };
126 eriomem = {
127 resources = {
128 USER208 = builtins.concatStringsSep "," (map (builtins.concatStringsSep ":") config.myEnv.monitoring.eriomem_keys);
129 };
130 commands = {
131 check_backup_eriomem = "$USER2$/check_eriomem $USER208$";
132 check_backup_eriomem_age = "$USER2$/check_backup_eriomem_age $ARG1$";
133 };
134 chunk = ''
135 cp ${./plugins}/check_eriomem $out/
136 patchShebangs $out/check_eriomem
137 wrapProgram $out/check_eriomem --prefix PATH : ${lib.makeBinPath [
138 pkgs.s3cmd pkgs.python38
139 ]}
140 cp ${./plugins}/check_backup_age $out/check_backup_eriomem_age
141 patchShebangs $out/check_backup_eriomem_age
142 wrapProgram $out/check_backup_eriomem_age --prefix PATH : ${lib.makeBinPath [
143 pkgs.duplicity
144 ]} --set SECRETS_PATH ${lib.optionalString cfg.master config.secrets.fullPaths."eriomem_access_key"}
145 '';
146 };
147 file_date = {
148 commands = {
149 check_last_file_date = "${sudo} -u \"$ARG3$\" $USER2$/check_last_file_date \"$ARG1$\" \"$ARG2$\"";
150 };
151 chunk = ''
152 cp ${./plugins}/check_last_file_date $out/
153 patchShebangs $out/check_last_file_date
154 '';
155 sudo = myplugins: {
156 commands = [
157 { command = "${myplugins}/check_last_file_date /backup2/*"; options = [ "NOPASSWD" ]; }
158 ];
159 runAs = "ALL";
160 };
161 };
162 ftp = {
163 commands = {
164 check_ftp_database = "$USER2$/check_ftp_database";
165 };
166 chunk = ''
167 cp ${./plugins}/check_ftp_database $out/
168 patchShebangs $out/check_ftp_database
169 wrapProgram $out/check_ftp_database --prefix PATH : ${lib.makeBinPath [
170 pkgs.lftp
171 ]}
172 '';
173 };
174 git = {
175 resources = {
176 USER203 = config.secrets.fullPaths."naemon/id_rsa";
177 };
178 commands = {
179 check_git = "$USER2$/check_git $USER203$";
180 };
181 chunk = ''
182 cp ${./plugins}/check_git $out/
183 patchShebangs $out/check_git
184 wrapProgram $out/check_git --prefix PATH : ${lib.makeBinPath [
185 pkgs.git pkgs.openssh
186 ]}
187 '';
188 };
189 http = {
190 resources = {
191 USER202 = config.myEnv.monitoring.http_user_password;
192 };
193 commands = {
194 check_http = "$USER1$/check_http --sni -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\"";
195 check_https = "$USER1$/check_http --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\"";
196 check_https_4 = "$USER1$/check_http -4 --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\"";
197 check_https_6 = "$USER1$/check_http -6 --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\"";
198 check_https_auth = "$USER1$/check_http --sni --ssl -a \"$USER202$\" -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -r \"$ARG3$\"";
199 check_https_certificate = "$USER1$/check_http --sni --ssl -H \"$ARG1$\" -C 21,15";
200 check_https_code = "$USER1$/check_http --sni --ssl -f stickyport -H \"$ARG1$\" -u \"$ARG2$\" -e \"$ARG3$\" -r \"$ARG4$\"";
201 };
202 };
203 imap = {
204 resources = {
205 USER204 = config.myEnv.monitoring.imap_login;
206 USER205 = config.myEnv.monitoring.imap_password;
207 };
208 commands = {
209 check_imap_connection = "$USER2$/check_imap_connection -u \"$USER204$\" -p \"$USER205$\" -H \"imap.immae.eu:143\"";
210 };
211 chunk = ''
212 cp ${./plugins}/check_imap_connection $out/
213 patchShebangs $out/check_imap_connection
214 wrapProgram $out/check_imap_connection --prefix PATH : ${lib.makeBinPath [
215 pkgs.openssl
216 ]}
217 '';
218 };
219 megaraid = let
220 megacli = pkgs.megacli.overrideAttrs(old: { meta = old.meta // { license = null; }; });
221 in {
222 commands = {
223 check_megaraid = "$USER2$/check_megaraid_sas --sudo";
224 };
225 chunk = let
226 megaCliPlugin = pkgs.runCommand "megaCliPlugin" {
227 plugin = pkgs.fetchurl {
228 name = "check_megaraid_sas";
229 url = "https://exchange.nagios.org/components/com_mtree/attachment.php?link_id=6381&cf_id=24";
230 sha256 = "0yf60p4c0hb4q3fng9fc14qc89bqm0f1sijayzygadaqcl44jx4p";
231 };
232 } ''
233 mkdir $out
234 cp $plugin $out/check_megaraid_sas
235 chmod +x $out/check_megaraid_sas
236 patchShebangs $out
237 substituteInPlace $out/check_megaraid_sas --replace /usr/sbin/MegaCli ${megacli}/bin/MegaCli64
238 substituteInPlace $out/check_megaraid_sas --replace 'sudo $megacli' '${sudo} $megacli'
239 sed -i -e "s/use utils qw(%ERRORS);/my %ERRORS = ('OK' => 0, 'WARNING' => 1, 'CRITICAL' => 2, 'UNKNOWN' => 3);/" $out/check_megaraid_sas
240 '';
241 in ''
242 cp ${megaCliPlugin}/check_megaraid_sas $out/
243 patchShebangs $out/check_megaraid_sas
244 '';
245 sudo = _: {
246 commands = [
247 { command = "${megacli}/bin/MegaCli64"; options = [ "NOPASSWD" ]; }
248 ];
249 runAs = "root";
250 };
251 };
252 memory = {
253 commands = {
254 check_memory = "$USER2$/check_mem.sh -w $ARG1$ -c $ARG2$";
255 };
256 chunk = ''
257 cp ${./plugins}/check_mem.sh $out/
258 patchShebangs $out/check_mem.sh
259 wrapProgram $out/check_mem.sh --prefix PATH : ${lib.makeBinPath [
260 pkgs.gnugrep pkgs.gawk pkgs.procps
261 ]}
262 '';
263 };
264 mysql = {
265 commands = {
266 check_mysql_replication = "${sudo} -u mysql $USER2$/check_mysql_replication \"$ARG1$\" \"$ARG2$\"";
267 };
268 chunk = ''
269 cp ${./plugins}/check_mysql_replication $out/
270 patchShebangs $out/check_mysql_replication
271 wrapProgram $out/check_mysql_replication --prefix PATH : ${lib.makeBinPath [
272 pkgs.gnugrep pkgs.gnused pkgs.coreutils pkgs.mariadb
273 ]}
274 '';
275 sudo = myplugins: {
276 commands = [
277 { command = "${myplugins}/check_mysql_replication *"; options = [ "NOPASSWD" ]; }
278 ];
279 runAs = "mysql";
280 };
281 };
282 openldap = {
283 commands = {
284 check_openldap_replication = "${sudo} -u openldap $USER2$/check_openldap_replication \"$ARG1$\" \"$ARG2$\" \"$ARG3$\" \"$ARG4$\" \"$ARG5$\"";
285 };
286 chunk = ''
287 cp ${./plugins}/check_openldap_replication $out/
288 patchShebangs $out/check_openldap_replication
289 wrapProgram $out/check_openldap_replication --prefix PATH : ${lib.makeBinPath [
290 pkgs.gnugrep pkgs.gnused pkgs.coreutils pkgs.openldap
291 ]}
292 '';
293 sudo = myplugins: {
294 commands = [
295 { command = "${myplugins}/check_openldap_replication *"; options = [ "NOPASSWD" ]; }
296 ];
297 runAs = "openldap";
298 };
299 };
300 ovh = {
301 resources = {
302 USER209 = builtins.concatStringsSep "," [
303 config.myEnv.monitoring.ovh_sms.endpoint
304 config.myEnv.monitoring.ovh_sms.application_key
305 config.myEnv.monitoring.ovh_sms.application_secret
306 config.myEnv.monitoring.ovh_sms.consumer_key
307 config.myEnv.monitoring.ovh_sms.account
308 ];
309 };
310 commands = {
311 check_backup_ovh_age = "$USER2$/check_backup_ovh_age $ARG1$";
312 check_ovh_sms = "$USER2$/check_ovh_sms \"$USER209$\"";
313 };
314 chunk = ''
315 cp ${./plugins}/check_backup_age $out/check_backup_ovh_age
316 patchShebangs $out/check_backup_ovh_age
317 wrapProgram $out/check_backup_ovh_age --prefix PATH : ${lib.makeBinPath [
318 pkgs.duplicity
319 ]} --set SECRETS_PATH ${lib.optionalString cfg.master config.secrets.fullPaths."ovh_access_key"}
320 cp ${./plugins}/check_ovh_sms $out/
321 patchShebangs $out/check_ovh_sms
322 wrapProgram $out/check_ovh_sms --prefix PATH : ${lib.makeBinPath [
323 (pkgs.python38.withPackages (ps: [ps.ovh]))
324 ]}
325 '';
326 };
327 postgresql = { package }: {
328 commands = {
329 check_postgresql_replication = "${sudo} -u postgres $USER2$/check_postgres_replication \"$ARG1$\" \"$ARG2$\" \"$ARG3$\"";
330 check_postgresql_database_count = "$USER2$/check_postgres_database_count \"$ARG1$\" \"$ARG2$\" \"$ARG3$\"";
331 };
332 chunk = ''
333 cp ${./plugins}/check_postgres_replication $out/
334 patchShebangs $out/check_postgres_replication
335 wrapProgram $out/check_postgres_replication --prefix PATH : ${lib.makeBinPath [
336 package
337 ]}
338 cp ${./plugins}/check_postgres_database_count $out/
339 patchShebangs $out/check_postgres_database_count
340 wrapProgram $out/check_postgres_database_count --prefix PATH : ${lib.makeBinPath [
341 package
342 ]}
343 '';
344
345 sudo = myplugins: {
346 commands = [
347 { command = "${myplugins}/check_postgres_replication *"; options = [ "NOPASSWD" ]; }
348 ];
349 runAs = "postgres";
350 };
351 };
352 redis = {
353 commands = {
354 check_redis_replication = "${sudo} -u redis $USER2$/check_redis_replication \"$ARG1$\"";
355 };
356 chunk = ''
357 cp ${./plugins}/check_redis_replication $out/
358 patchShebangs $out/check_redis_replication
359 wrapProgram $out/check_redis_replication --prefix PATH : ${lib.makeBinPath [
360 pkgs.gnugrep pkgs.coreutils pkgs.redis
361 ]}
362 '';
363 sudo = myplugins: {
364 commands = [
365 { command = "${myplugins}/check_redis_replication *"; options = [ "NOPASSWD" ]; }
366 ];
367 runAs = "redis";
368 };
369 };
370 tcp = {
371 commands = {
372 check_tcp = "$USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ -e \"$ARG2$\" -Mcrit";
373 check_tcp_ssl = "$USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ -S -D 21,15";
374 };
375 };
376 zfs = {
377 commands = {
378 check_zfs = "$USER2$/check_zpool.sh -p ALL -w 80 -c 90";
379 check_zfs_snapshot = "$USER2$/check_zfs_snapshot -d $ARG1$ -c 18000 -w 14400";
380 };
381 chunk = let
382 zfsPlugin = pkgs.fetchurl {
383 url = "https://www.claudiokuenzler.com/monitoring-plugins/check_zpools.sh";
384 sha256 = "0p9ms9340in80jkds4kfspw62xnzsv5s7ni9m28kxyd0bnzkbzhf";
385 };
386 in ''
387 cp ${zfsPlugin} $out/check_zpool.sh
388 chmod +x $out/check_zpool.sh
389 patchShebangs $out/check_zpool.sh
390 wrapProgram $out/check_zpool.sh --prefix PATH : ${lib.makeBinPath [
391 pkgs.which pkgs.zfs pkgs.gawk
392 ]}
393 cp ${./plugins}/check_zfs_snapshot $out
394 patchShebangs $out/check_zfs_snapshot
395 wrapProgram $out/check_zfs_snapshot --prefix PATH : ${lib.makeBinPath [
396 pkgs.zfs pkgs.coreutils pkgs.gawk pkgs.gnugrep
397 ]}
398 '';
399 };
400}
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 @@
1# -*- coding: utf-8; -*-
2
3[cli]
4history = /var/lib/naemon/nagios_cli_history
5
6[ui]
7color = 1
8prompt = naemon %s>
9prompt_separator = " → "
10
11[nagios]
12log = /var/log/naemon
13command_file = /run/naemon/naemon.cmd
14log_file = %(log)s/naemon.log
15object_cache_file = /var/lib/naemon/objects.cache
16status_file = /var/lib/naemon/status.dat
17
18[object]
19host.status =
20 host_name
21 current_state
22 plugin_output
23 is_flapping
24 last_check
25 last_time_down
26 last_state_change
27 check_period
28 notification_period
29 current_attempt
30 max_attempts
31service.status =
32 host_name
33 service_description
34 current_state
35 is_flapping
36 plugin_output
37 last_time_down
38 last_state_change
39 last_check
40 next_check
41 check_interval
42 check_latency
43 check_period
44 notification_period
45 current_attempt
46 max_attempts
47
48[string]
49level.ok = ↑ OK
50level.warning = ! WARNING
51level.critical = ↓ CRITICAL
52level.unknown = ↕ UNKNOWN
53
54[color]
55error = bold_red
56
57prompt = normal
58prompt.object = bold
59
60host.host_name = bold
61host.plugin_output = bold
62service.plugin_output = bold
63
64level.ok = bold_green
65level.warning = bold_yellow
66level.critical = bold_red
67level.unknown = bold_magenta
68
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 @@
1{ hostFQDN
2, hostName
3, interface ? "eth0"
4, processWarn ? "250"
5, processAlert ? "400"
6, loadWarn ? "0.9"
7, load5Warn ? loadWarn
8, load15Warn ? load5Warn
9, loadAlert ? "1.0"
10, load5Alert ? loadAlert
11, load15Alert ? load5Alert
12, master
13, ...
14}:
15{
16 host = {
17 "${hostFQDN}" = {
18 alias = hostFQDN;
19 address = hostFQDN;
20 use = "linux-server";
21 hostgroups = "webstatus-hosts";
22 _webstatus_name = hostName;
23 _webstatus_vhost = "status.immae.eu";
24 };
25 };
26 service = [
27 {
28 service_description = "Size on root partition";
29 use = "local-service";
30 check_command = ["check_local_disk" "20%" "10%" "/"];
31 __passive_servicegroups = "webstatus-resources";
32 }
33 {
34 service_description = "Total number of process";
35 use = "local-service";
36 check_command = [
37 "check_local_procs"
38 processWarn
39 processAlert
40 "RSZDT"
41 ];
42 __passive_servicegroups = "webstatus-resources";
43 }
44 {
45 service_description = "Network bandwidth";
46 use = "local-service";
47 check_interval = 2;
48 max_check_attempts = "20";
49 retry_interval = "2";
50 check_command = [
51 "check_local_bandwidth"
52 interface
53 "20480" # kb/s
54 "51200" # kb/s
55 ];
56 __passive_servicegroups = "webstatus-resources";
57 }
58 {
59 service_description = "Average load";
60 use = "local-service";
61 check_command = [
62 "check_local_load"
63 "${loadWarn},${load5Warn},${load15Warn}"
64 "${loadAlert},${load5Alert},${load15Alert}"
65 ];
66 __passive_servicegroups = "webstatus-resources";
67 }
68 {
69 service_description = "Swap usage";
70 use = "local-service";
71 check_command = ["check_local_swap" "20" "10"];
72 __passive_servicegroups = "webstatus-resources";
73 }
74 {
75 service_description = "Memory usage";
76 use = "local-service";
77 check_command = ["check_memory" "80" "90"];
78 __passive_servicegroups = "webstatus-resources";
79 }
80 {
81 service_description = "NTP is activated and working";
82 use = "local-service";
83 check_command = ["check_ntp"];
84 __passive_servicegroups = "webstatus-resources";
85 }
86 ];
87 command = {
88 check_local_disk = "$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$";
89 check_local_procs = "$USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$";
90 check_local_load = "$USER1$/check_load -r -w $ARG1$ -c $ARG2$";
91 check_local_swap = "$USER1$/check_swap -n ok -w $ARG1$ -c $ARG2$";
92 check_ntp = "$USER1$/check_ntp_time -t 30 -q -H 0.arch.pool.ntp.org";
93 check_smtp = "$USER1$/check_smtp -H $HOSTADDRESS$ -p 25 -S -D 21,15";
94
95 check_host_alive = "$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5";
96 check_ok = "$USER1$/check_dummy 0 \"Dummy OK\"";
97 check_critical = "$USER1$/check_dummy 2 \"Dummy CRITICAL\"";
98 };
99 timeperiod = {
100 "24x7" = {
101 alias = "24 Hours A Day, 7 Days A Week";
102 monday = "00:00-24:00";
103 tuesday = "00:00-24:00";
104 wednesday = "00:00-24:00";
105 thursday = "00:00-24:00";
106 friday = "00:00-24:00";
107 saturday = "00:00-24:00";
108 sunday = "00:00-24:00";
109 };
110 };
111 servicegroup = {
112 webstatus-webapps = { alias = "Web applications"; };
113 webstatus-websites = { alias = "Personal websites"; };
114 webstatus-ssl = { alias = "SSL certificates"; };
115 webstatus-dns = { alias = "DNS resolution"; };
116 webstatus-remote-services = { alias = "Other remote services"; };
117 webstatus-local-services = { alias = "Other local services"; };
118 webstatus-email = { alias = "E-mail services"; };
119 webstatus-resources = { alias = "Local resources"; };
120 webstatus-databases = { alias = "Databases resources"; };
121 webstatus-backup = { alias = "Backup resources"; };
122 };
123 hostgroup = {
124 webstatus-hosts = { alias = "Hosts"; };
125 };
126 contactgroup = {
127 admins = { alias = "Naemon Administrators"; };
128 };
129 templates = {
130 service = {
131 generic-service = {
132 active_checks_enabled = "1";
133 check_freshness = "0";
134 check_interval = 10;
135 check_period = "24x7";
136 contact_groups = "admins";
137 event_handler_enabled = "1";
138 flap_detection_enabled = "1";
139 is_volatile = "0";
140 max_check_attempts = "3";
141 notification_interval = "60";
142 notification_options = "w,u,c,r,f,s";
143 notification_period = "24x7";
144 notifications_enabled = if master then "1" else "0";
145 obsess_over_service = "1";
146 passive_checks_enabled = "1";
147 process_perf_data = "1";
148 retain_nonstatus_information = "1";
149 retain_status_information = "1";
150 retry_interval = "2";
151 _webstatus_namespace = "immae";
152 };
153 local-service = {
154 use = "generic-service";
155 host_name = hostFQDN;
156 check_interval = 5;
157 max_check_attempts = "4";
158 retry_interval = "1";
159 servicegroups = "webstatus-resources";
160 };
161 external-service = {
162 use = "generic-service";
163 check_interval = 5;
164 max_check_attempts = "4";
165 retry_interval = "1";
166 };
167 web-service = {
168 use = "generic-service";
169 check_interval = 20;
170 max_check_attempts = "2";
171 retry_interval = "1";
172 };
173 external-web-service = {
174 use = "generic-service";
175 check_interval = 20;
176 max_check_attempts = "2";
177 retry_interval = "1";
178 };
179 mail-service = {
180 use = "generic-service";
181 check_interval = 15;
182 max_check_attempts = "1";
183 retry_interval = "1";
184 };
185 dns-service = {
186 use = "generic-service";
187 check_interval = 120;
188 notification_interval = "120";
189 max_check_attempts = "5";
190 retry_interval = "5";
191 };
192 };
193 # No contact, we go through master
194 contact = {
195 generic-contact = {
196 host_notification_commands = "notify-host-by-email";
197 host_notification_options = "d,u,r,f,s";
198 host_notification_period = "24x7";
199 service_notification_commands = "notify-service-by-email";
200 service_notification_options = "w,u,c,r,f,s";
201 service_notification_period = "24x7";
202 };
203 };
204 host = {
205 generic-host = {
206 event_handler_enabled = "1";
207 flap_detection_enabled = "1";
208 notification_period = "24x7";
209 notifications_enabled = "1";
210 process_perf_data = "1";
211 retain_nonstatus_information = "1";
212 retain_status_information = "1";
213 };
214 linux-server = {
215 check_command = "check_host_alive";
216 check_interval = "5";
217 check_period = "24x7";
218 contact_groups = "admins";
219 max_check_attempts = "10";
220 notification_interval = "120";
221 notification_options = "d,u,r,f";
222 retry_interval = "1";
223 _webstatus_namespace = "immae";
224 };
225 };
226 };
227}
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 @@
1#!/usr/bin/env bash
2
3set -euo pipefail
4
5source $SECRETS_PATH
6export HOME=$(mktemp -d)
7
8trap "rm -rf $HOME" EXIT
9folder=$1
10
11parse_date() {
12 d=$1
13 echo $d | sed -e "s/^\(....\)\(..\)\(..\)T\(..\)\(..\)\(..\)/\1-\2-\3T\4:\5:\6/"
14}
15
16output=$(duplicity collection-status --log-fd 2 "$BASE_URL$folder" 2>&1 > /dev/null)
17
18output=$(echo "$output" | grep -v "^\.")
19
20last_full=$(parse_date "$(echo "$output" | grep "^ full " | cut -d' ' -f3 | sort | tail -n1)")
21last_bkp=$(parse_date "$(echo "$output" | grep -E "^ (full|inc) " | cut -d' ' -f3 | sort | tail -n1)")
22orphaned_sets=$(echo "$output" | grep "^orphaned-sets-num" | cut -d' ' -f2)
23incomplete_sets=$(echo "$output" | grep "^incomplete-sets-num" | cut -d' ' -f2)
24
25if [[ -z "$last_full" || -z "$last_bkp" || -z "$orphaned_sets" || -z "$incomplete_sets" ]]; then
26 echo "duply-backup $folder UNKNOWN - impossible to parse result"
27 exit 3
28fi
29
30last_full_age=$(( ($(date "+%s") - $(date -d "$last_full" "+%s")) / (60*60*24) ))
31last_bkp_age=$(( ($(date "+%s") - $(date -d "$last_bkp" "+%s")) / (60*60) ))
32
33PERFS="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;"
34
35
36WARNINGS=""
37ERRORS=""
38if [[ "$incomplete_sets" -gt 0 ]]; then
39 WARNINGS="$WARNINGS - Incomplete sets is $incomplete_sets"
40fi
41
42if [[ "$orphaned_sets" -gt 0 ]]; then
43 WARNINGS="$WARNINGS - Orphaned sets is $orphaned_sets"
44fi
45
46if [[ "$last_full_age" -gt 45 ]]; then
47 ERRORS="$ERRORS - Last full backup is too old $last_full"
48elif [[ "$last_full_age" -gt 35 ]]; then
49 WARNINGS="$WARNINGS - Last full backup is getting old $last_full"
50fi
51
52if [[ "$last_bkp_age" -gt 48 ]]; then
53 ERRORS="$ERRORS - Last backup is too old $last_bkp"
54elif [[ "$last_bkp_age" -gt 30 ]]; then
55 WARNINGS="$WARNINGS - Last backup is getting old $last_bkp"
56fi
57
58if [[ -n "$ERRORS" ]]; then
59 echo "duply-backup $folder CRITICAL$ERRORS$WARNINGS | $PERFS"
60 exit 2
61elif [[ -n "$WARNINGS" ]]; then
62 echo "duply-backup $folder WARNING$WARNINGS | $PERFS"
63 exit 1
64else
65 echo "duply-backup $folder OK | $PERFS"
66fi
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 @@
1#!/bin/bash
2
3# ============================== SUMMARY =====================================
4#Author : Ken Roulamellah
5#Date : 19/07/2018
6#Version : 1.0
7# Licence : GPL
8# ===================== INFORMATION ABOUT THIS PLUGIN ========================
9#
10# This plugin checks the average RX and TX bandwidth utilisation. It use
11# kbytes as measure unite.
12#
13# ========================== START OF PROGRAM CODE ===========================
14
15STATE_OK=0
16STATE_WARNING=1
17STATE_CRITICAL=2
18STATE_UNKNOWN=3
19
20interface=$( ip route | grep default | awk '{print $5}' | head -n1)
21function print_usage()
22{
23 echo "Usage :"
24 echo "$0 [ -i=INTERFACE] [ -ct=COUNT ] -w WARNING -c CRITICAL"
25 echo "This script calculate the average bandwith usage."
26 echo "Default values | interface: ${interface}, counter: 10"
27}
28
29counter=10
30warning=-1
31critical=-1
32
33sum_rx=0
34sum_tx=0
35avg_rx=
36avg_tx=
37i=
38
39
40if [[ $# -lt 4 ]];
41then
42 echo "Error: Arguments are missing"
43 print_usage
44 exit $STATE_UNKNOWN
45fi
46
47while [[ $# -gt 0 ]]; do
48 case "$1" in
49 -i=*)
50 interface="$(cut -d'=' -f2 <<<"$1")"
51 shift
52 ;;
53 -ct=*)
54 counter="$(cut -d'=' -f2 <<<"$1")"
55 shift
56 ;;
57 -w)
58 warning=$2
59 shift 2
60 ;;
61 -c)
62 critical=$2
63 shift 2
64 ;;
65 *)
66 printf "\nError: Invalid option '$1'"
67 print_usage
68 exit $STATE_UNKNOWN
69 ;;
70 esac
71done
72
73if [ $warning -lt 0 ] || [ $critical -lt 0 ];
74then
75 echo "Error: You need to specify a warning and critical treshold"
76 print_usage
77 exit $STATE_UNKNOWN
78fi
79
80grep -q "up" /sys/class/net/$interface/operstate || exec echo "$interface: no such device or down"
81
82read rx <"/sys/class/net/$interface/statistics/rx_bytes"
83read tx <"/sys/class/net/$interface/statistics/tx_bytes"
84
85i=$counter
86while [ $i -gt 0 ]; do
87 sleep 1
88 read newrx <"/sys/class/net/$interface/statistics/rx_bytes"
89 read newtx <"/sys/class/net/$interface/statistics/tx_bytes"
90
91 #echo "old rx :$rx"
92 #echo "new rx :$newrx"
93 rx_cal=$(bc <<< "scale=2; ($newrx-$rx) / 1000")
94 tx_cal=$(bc <<< "scale=2; ($newtx-$tx) / 1000")
95
96 sum_rx=$(bc <<< "scale=2;$sum_rx+$rx_cal")
97 sum_tx=$(bc <<< "scale=2;$sum_tx+$tx_cal")
98
99 #echo "$interface {rx: $rx_cal ko/s, tx: $tx_cal ko/s}"
100 rx=$newrx
101 tx=$newtx
102 ((i --))
103done
104
105avg_rx=$(bc <<< "scale=2;$sum_rx/$counter")
106avg_tx=$(bc <<< "scale=2;$sum_tx/$counter")
107
108#echo "$avg_rx"
109#echo "$avg_tx"
110
111
112if [ $(bc <<< "$avg_rx > $critical || $avg_tx > $critical") -eq 1 ]; then
113 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;"
114 exit $STATE_CRITICAL
115elif [ $(bc <<< "$avg_rx > $warning || $avg_tx > $warning") -eq 1 ]; then
116 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;"
117 exit $STATE_WARNING
118else
119 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;"
120 exit $STATE_OK
121fi
122exit 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 @@
1#!/usr/bin/env perl
2
3use strict;
4use Getopt::Std;
5$| = 1;
6
7my %opts;
8getopts('hr:C:c:s:o:', \%opts);
9
10my $STATE_OK = 0;
11my $STATE_WARNING = 1;
12my $STATE_CRITICAL = 2;
13my $STATE_UNKNOWN = 3;
14
15if ($opts{'h'} || scalar(%opts) == 0) {
16 &print_help();
17 exit($STATE_OK);
18}
19
20my $command = $opts{'c'};
21if ($command eq '') {
22 print "You must provide a command to check.\n";
23 exit($STATE_UNKNOWN);
24}
25
26my $expected_output = $opts{'o'};
27my $expected_status = $opts{'s'};
28my $other_command = $opts{'C'};
29
30if ($other_command eq '' and $expected_status eq '' and $expected_output eq '') {
31 $expected_status = 0;
32}
33
34my $cmd = $command . ' 2>&1';
35my $other_cmd;
36if ($other_command ne '') {
37 $other_cmd = $other_command . ' 2>&1';
38}
39
40my $run_as;
41if ($opts{'r'}) {
42 $run_as = $opts{'r'};
43 $cmd = "sudo -u $run_as -n $cmd";
44
45 if ($other_command ne '') {
46 $other_cmd = "sudo -u $run_as -n $other_cmd";
47 }
48
49}
50
51my $cmd_result = `$cmd`;
52my $other_cmd_result;
53if ($other_command ne '') {
54 $other_cmd_result = `$other_cmd`;
55 chomp($other_cmd_result);
56}
57
58chomp($cmd_result);
59if ($cmd_result =~ /sudo/i) {
60 print "$command CRITICAL - No sudo right to run the command | result=1;;;;\n";
61 exit($STATE_UNKNOWN);
62} elsif ($expected_status ne '') {
63 if ($? != $expected_status) {
64 print "$command CRITICAL - Response status $? | result=1;;;;\n";
65 exit($STATE_CRITICAL);
66 } else {
67 print "$command OK - Response status $? | result=0;;;;\n";
68 exit($STATE_OK);
69 }
70} elsif ($other_command ne '') {
71 if ($cmd_result ne $other_cmd_result) {
72 print "$command CRITICAL - Expected output not matching other command output | result=1;;;;\n";
73 exit($STATE_CRITICAL);
74 } else {
75 print "$command OK - Expected output matching other command output | result=0;;;;\n";
76 exit($STATE_OK);
77 }
78} else {
79 if ($cmd_result !~ /$expected_output/) {
80 print "$command CRITICAL - Expected output not matching | result=1;;;;\n";
81 exit($STATE_CRITICAL);
82 } else {
83 print "$command OK - Expected output matching | result=0;;;;\n";
84 exit($STATE_OK);
85 }
86}
87
88sub print_help() {
89 print << "EOF";
90Check whether the given command responds as expected. One of -o -C or -s must be selected.
91
92Options:
93-h
94 Print detailed help screen
95
96-c
97 command to run (required)
98
99-C
100 other command to compare output
101
102-r user
103 Run as user via sudo.
104
105-s
106 status code to check
107
108-o
109 output to check
110
111EOF
112}
113
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 @@
1#!/usr/bin/env perl
2
3use strict;
4use Getopt::Std;
5use File::Basename;
6use Date::Parse;
7use POSIX qw(strftime);
8
9$| = 1;
10
11my %opts;
12getopts('hH:l:s:p:f:i:n:r:', \%opts);
13
14my $STATE_OK = 0;
15my $STATE_WARNING = 1;
16my $STATE_CRITICAL = 2;
17my $STATE_UNKNOWN = 3;
18
19if ($opts{'h'} || scalar(%opts) == 0) {
20 &print_help();
21 exit($STATE_OK);
22}
23
24my $port = $opts{'p'};
25my $host = $opts{'H'};
26my $login = $opts{'l'};
27if ($login ne '') {
28 $login = "$login@";
29}
30
31my $identity = $opts{'i'};
32my $local_directory = $opts{'n'};
33my $return_path = $opts{'r'};
34
35my @emails_to_send = split(/,/, $opts{'s'});
36my @emails_to_expect = split(/,/, $opts{'f'});
37
38my $cmd_result;
39if ($local_directory ne '') {
40 if (@emails_to_expect and ! -d $local_directory) {
41 print "Emails $host UNKNOWN - Could not find local directory";
42 exit($STATE_UNKNOWN);
43 }
44 $cmd_result = `send_mails $local_directory $return_path @emails_to_send 2>&1`;
45} else {
46 $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`;
47
48 if ($cmd_result =~ /Host key verification failed./) {
49 print "Emails $host UNKNOWN - Could not connect to host with ssh key\n";
50 exit($STATE_UNKNOWN);
51 }
52}
53
54my @lines = split(/\n/, $cmd_result);
55
56my %found_emails;
57
58foreach my $line (@lines) {
59 my @split_line = split(/;/, $line, 2);
60 $found_emails{$split_line[0]} = $split_line[1];
61}
62
63my $output = "";
64my $old = 0;
65foreach my $email_from (@emails_to_expect) {
66 my @email_split = split(/:/, $email_from);
67 my $email = $email_split[0];
68 my $from = $email_split[1];
69
70 if ( exists $found_emails{$email} ) {
71 my $email_date = str2time($found_emails{$email});
72 my $current_date = strftime "%s", localtime;
73
74 if ($current_date - $email_date > 60*30) {
75 $output = "$output$email ($found_emails{$email} from $from) ";
76 }
77 $old = ($current_date - $email_date) > $old ? ($current_date - $email_date) : $old;
78 } else {
79 $output = "$output$email (missing) "
80 }
81}
82
83if ($output ne '') {
84 print "Emails $host CRITICAL - expecting emails: $output | timestamp=${old}s;;;;\n";
85 exit($STATE_CRITICAL);
86} else {
87 print "Emails $host OK | timestamp=${old}s;;;;\n";
88 exit($STATE_OK);
89}
90
91sub print_help() {
92 print << "EOF";
93Check sent emails
94
95Options:
96-h
97 Print detailed help screen
98
99-H
100 Host to check
101
102-l
103 Login
104
105-i
106 Identity file
107
108-n
109 Don’t use ssh, pass that directory to script
110
111-r
112 Return path for local e-mails
113
114-s
115 Comma separated list of emails to send from the host.
116
117-f
118 Comma separated list of emails to expect on the host.
119EOF
120}
121
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 @@
1#!/usr/bin/env python
2import os
3import sys
4import getopt
5import signal
6from subprocess import Popen, PIPE
7
8STATE_OK = 0
9STATE_WARNING = 1
10STATE_CRITICAL = 2
11STATE_UNKNOWN = 3
12
13keys = sys.argv[1].split(",")
14
15def to_args(k):
16 access, secret = k.split(":", 1)
17 return [
18 "s3cmd",
19 '-c=/dev/null',
20 '--no-check-certificate',
21 '--access_key={}'.format(access),
22 '--secret_key={}'.format(secret),
23 '--host=e.eriomem.net',
24 '--host-bucket=%(bucket)s.e.eriomem.net',
25 'du'
26 ]
27
28max_size = 1024*1024*1024*1024
29warning_percent = 99.75
30critical_percent = 99.95
31
32def output(code, msg):
33 print(msg)
34 sys.exit(code)
35
36def main():
37 def handler(signum, frame):
38 raise IOError
39 signal.signal(signal.SIGALRM, handler)
40 signal.alarm(60)
41
42 try:
43 ps = [Popen(to_args(a), stdout=PIPE, stderr=PIPE) for a in keys]
44 outs = [p.communicate() for p in ps]
45 rets = [p.wait() for p in ps]
46 except IOError:
47 for p in ps:
48 os.kill(p.pid, signal.SIGTERM)
49 output(STATE_UNKNOWN,
50 "Eriomem UNKNOWN - Command timeout after 60 seconds!")
51
52 signal.alarm(0)
53
54 if sum(rets) == 0:
55 usages = [int(out[0].decode().split("\n")[-2].split()[0]) for out in outs]
56 usage = sum(usages)
57 use_percent = 100 * usage / max_size
58 if use_percent > critical_percent:
59 output(STATE_CRITICAL,
60 "Eriomem CRITICAL - bucket usage: %s (%s%%);| size=%s;;;;" %
61 (sizeof_fmt(usage), use_percent, sizeof_fmt(usage)))
62 elif use_percent > warning_percent:
63 output(STATE_WARNING,
64 "Eriomem WARNING - bucket usage: %s (%s%%);| size=%s;;;;" %
65 (sizeof_fmt(usage), use_percent, sizeof_fmt(usage)))
66 else:
67 output(STATE_OK,
68 "Eriomem OK - bucket usage: %s (%d%%);| size=%s;;;;" %
69 (sizeof_fmt(usage), use_percent, sizeof_fmt(usage)))
70 else:
71 messages = "\n".join([out[0].decode() + out[1].decode() for out in outs])
72 output(STATE_UNKNOWN,
73 "Eriomem UNKNOWN - Error in command")
74
75def sizeof_fmt(num):
76 for unit in ['','ko','Mo','Go','To','Po','Eo','Zo']:
77 if abs(num) < 1024.0:
78 return "%3.1f%s" % (num, unit)
79 num /= 1024.0
80 return "%.1f%s%s" % (num, 'Yo')
81
82if __name__ == '__main__':
83 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 @@
1#!/usr/bin/env bash
2
3OUT=$(echo "ls" | lftp -u test_ftp,test_ftp eldiron.immae.eu | grep it_works | wc -l)
4
5if [ "$OUT" -eq 1 ]; then
6 echo "ftp connection OK - access to ftp is working | ftp=1;;;;"
7 exit 0
8else
9 echo "ftp connection CRITICAL - no access to ftp | ftp=0;;;;"
10 exit 2
11fi
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 @@
1#!/usr/bin/env bash
2
3SSH_KEY="$1"
4
5TMPDIR=$(mktemp -d)
6
7if [ ! -d "$TMPDIR" ]; then
8 echo "gitolite UNKNOWN - impossible to create temp dir"
9 exit 3
10fi
11
12trap "rm -rf $TMPDIR" EXIT
13
14ERRORS=""
15OUTPUT=""
16PERFS=""
17
18cd "$TMPDIR"
19OUT=$(git clone -q git://git.immae.eu/perso/Immae/Projets/Ruby/Monitor.git 2>&1)
20ERR=$?
21if [ -n "$OUT" ]; then
22OUTPUT="$OUTPUT
23$OUT"
24fi
25if [ "$ERR" != 0 ]; then
26 PERFS="$PERFS git=0;;;;"
27 ERRORS="$ERRORS git://"
28else
29 PERFS="$PERFS git=1;;;;"
30fi
31rm -rf Monitor
32
33OUT=$(git clone -q http://git.immae.eu/perso/Immae/Projets/Ruby/Monitor.git 2>&1)
34ERR=$?
35if [ -n "$OUT" ]; then
36OUTPUT="$OUTPUT
37$OUT"
38fi
39if [ "$ERR" != 0 ]; then
40 ERRORS="$ERRORS http://"
41 PERFS="$PERFS http=0;;;;"
42else
43 PERFS="$PERFS http=1;;;;"
44fi
45rm -rf Monitor
46
47OUT=$(git clone -q https://git.immae.eu/perso/Immae/Projets/Ruby/Monitor.git 2>&1)
48ERR=$?
49if [ -n "$OUT" ]; then
50OUTPUT="$OUTPUT
51$OUT"
52fi
53if [ "$ERR" != 0 ]; then
54 ERRORS="$ERRORS https://"
55 PERFS="$PERFS https=0;;;;"
56else
57 PERFS="$PERFS https=1;;;;"
58fi
59rm -rf Monitor
60
61OUT=$(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)
62ERR=$?
63if [ -n "$OUT" ]; then
64OUTPUT="$OUTPUT
65$OUT"
66fi
67if [ "$ERR" != 0 ]; then
68 ERRORS="$ERRORS ssh"
69 PERFS="$PERFS ssh=0;;;;"
70else
71 PERFS="$PERFS ssh=1;;;;"
72fi
73rm -rf Monitor
74
75if [ -n "$ERRORS" ]; then
76 echo "gitolite CRITICAL - impossible to clone via$ERRORS | $PERFS"
77 exit 2
78else
79 echo "gitolite OK - ssh, git, http and https work | $PERFS"
80 exit 0
81fi
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 @@
1#!/usr/bin/env perl
2
3use strict;
4use Getopt::Std;
5$| = 1;
6
7my %opts;
8getopts('h:u:p:H:', \%opts);
9
10my $STATE_OK = 0;
11my $STATE_WARNING = 1;
12my $STATE_CRITICAL = 2;
13my $STATE_UNKNOWN = 3;
14
15if ($opts{'h'} || !$opts{'u'} || !$opts{'p'} || !$opts{'H'}) {
16 &print_help();
17 exit($STATE_UNKNOWN);
18}
19
20my $user = $opts{'u'};
21my $password = $opts{'p'};
22my $host = $opts{'H'};
23
24my $cmd_result = `(echo "a login $user $password"; echo "b logout") | openssl s_client -quiet -ign_eof -connect $host -starttls imap 2>&1`;
25my $expected_result = "a OK Logged in";
26
27chomp($cmd_result);
28if ($cmd_result !~ /$expected_result/) {
29 print "IMAP CRITICAL - Unable to connect via imaps | imap=0;;;;\n";
30 exit($STATE_CRITICAL);
31} else {
32 print "IMAP OK - imaps connected successfully | imap=1;;;;\n";
33 exit($STATE_OK);
34}
35
36sub print_help() {
37 print << "EOF";
38Check whether imap works via ssl and is able to connect its database.
39
40Options:
41-h
42 Print detailed help screen
43-u
44 User to log in as
45-p
46 Password to log in
47-H
48 Host to log in to
49
50EOF
51}
52
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 @@
1#!/bin/bash
2
3STATE_OK=0
4STATE_WARNING=1
5STATE_CRITICAL=2
6STATE_UNKNOWN=3
7
8base_path=$1
9hours=$2
10
11last_date=$(find $base_path -mindepth 1 -maxdepth 1 -printf "%T@\n" 2>/dev/null | sort | tail -n 1)
12
13if [ -z "$last_date" ]; then
14 echo "UNKNOWN: Could not read folder"
15 exit $STATE_UNKNOWN
16else
17 LC_ALL=C last_date=$(printf "%.*f" 0 $last_date)
18 LC_ALL=C age=$(( $(date "+%s") - $last_date))
19 max_age=$(( $hours * 60 * 60 ))
20 min_date=$(date -d "$hours hours ago" "+%s")
21 if [ "$min_date" -lt "$last_date" ]; then
22 echo "OK: Last file $(date -d @$last_date) | age=${age}s;;$max_age;;"
23 exit $STATE_OK
24 else
25 echo "CRITICAL: Last file $(date -d @$last_date) | age=${age}s;;$max_age;;"
26 exit $STATE_CRITICAL
27 fi
28fi
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 @@
1#!/usr/bin/env bash
2
3if [ "$1" = "-w" ] && [ "$2" -gt "0" ] && [ "$3" = "-c" ] && [ "$4" -gt "0" ]; then
4 FreeM=`free -m -w`
5 memTotal_m=`echo "$FreeM" |grep Mem |awk '{print $2}'`
6 memUsed_m=`echo "$FreeM" |grep Mem |awk '{print $3}'`
7 memFree_m=`echo "$FreeM" |grep Mem |awk '{print $4}'`
8 memShared_m=`echo "$FreeM" |grep Mem |awk '{print $5}'`
9 memBuffer_m=`echo "$FreeM" |grep Mem |awk '{print $6}'`
10 memCache_m=`echo "$FreeM" |grep Mem |awk '{print $7}'`
11 memAvailable_m=`echo "$FreeM" |grep Mem |awk '{print $8}'`
12 memUsedPrc=`echo $((($memUsed_m-$memBuffer_m-$memCache_m)*100/$memTotal_m))||cut -d. -f1`
13 if [ "$memUsedPrc" -ge "$4" ]; then
14 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;;;;"
15 exit 2
16 elif [ "$memUsedPrc" -ge "$2" ]; then
17 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;;;;"
18 exit 1
19 else
20 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;;;;"
21 exit 0
22 fi
23else # If inputs are not as expected, print help.
24 sName="`echo $0|awk -F '/' '{print $NF}'`"
25 echo -e "\n\n\t\t### $sName Version 2.0###\n"
26 echo -e "# Usage:\t$sName -w <warnlevel> -c <critlevel>"
27 echo -e "\t\t= warnlevel and critlevel is percentage value without %\n"
28 echo "# EXAMPLE:\t/usr/lib64/nagios/plugins/$sName -w 80 -c 90"
29 echo -e "\nCopyright (C) 2012 Lukasz Gogolin (lukasz.gogolin@gmail.com), improved by Nestor 2015\n\n"
30 exit
31fi
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 @@
1#!/bin/bash
2
3STATE_OK=0
4STATE_WARNING=1
5STATE_CRITICAL=2
6STATE_UNKNOWN=3
7
8socket=$1
9config_file=$2
10info=$(mysql --defaults-file=${config_file} -S $socket -e "show slave status" --vertical)
11exit_code=$?
12
13lag=$(echo "$info" | grep "\bSeconds_Behind_Master\b" | cut -d':' -f2 | sed -e "s/\s//g")
14
15IO_running=$(echo "$info" | grep "\bSlave_IO_Running\b" | cut -d':' -f2 | sed -e "s/\s//g")
16SQL_running=$(echo "$info" | grep "\bSlave_SQL_Running\b" | cut -d':' -f2 | sed -e "s/\s//g")
17
18if [[ $exit_code -ne 0 ]]; then
19 echo "UNKNOWN - Impossible to run mysql command"
20 exit $STATE_UNKNOWN
21elif [[ -z "$lag" ]]; then
22 echo "UNKNOWN - No replication found for mysql"
23 exit $STATE_UNKNOWN
24elif [[ "$IO_running" != "Yes" || "$SQL_running" != "Yes" ]]; then
25 echo "UNKNOWN - Replication is not running"
26 exit $STATE_UNKNOWN
27else
28 output="Replication lag for mysql is ${lag}s"
29 LC_ALL=C lag=$(printf "%.*f" 0 $lag)
30
31 if [[ $lag -lt 5 ]]; then
32 echo "OK - $output | time=${lag}s;5;10;;"
33 exit $STATE_OK
34 elif [[ $lag -lt 10 ]]; then
35 echo "WARNING - $output | time=${lag}s;5;10;;"
36 exit $STATE_WARNING
37 else
38 echo "CRITICAL - $output | time=${lag}s;5;10;;"
39 exit $STATE_CRITICAL
40 fi
41fi
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 @@
1#!/bin/bash
2
3STATE_OK=0
4STATE_WARNING=1
5STATE_CRITICAL=2
6STATE_UNKNOWN=3
7
8distant_host="$1"
9replication_dn="$2"
10replication_pw="$3"
11base="$4"
12config="$5"
13
14to_date() {
15 i="$1"
16 i=$(echo "$i" | grep contextCSN | cut -d":" -f2 | sed -e "s/\s//g")
17 i=$(echo "$i" | cut -d"#" -f1)
18 i=$(echo "$i" | cut -d"." -f1)
19 echo "$i"
20}
21
22# ldap
23remote_ldap=$(ldapsearch -H $distant_host -D "$replication_dn" -y "$replication_pw" -b "$base" -s base -LLL contextCSN )
24exit_code_remote=$?
25remote_ldap=$(to_date "$remote_ldap")
26
27# slapcat
28local_ldap=$(slapcat -b "$base" -f "$config" -a "(entryDN=$base)")
29exit_code_local=$?
30local_ldap=$(to_date "$local_ldap")
31
32offset=$(($remote_ldap - $local_ldap))
33
34if [[ $exit_code_remote -ne 0 || $exit_code_local -ne 0 ]]; then
35 echo "UNKNOWN - Impossible to run ldap command"
36 exit $STATE_UNKNOWN
37elif [[ -z "$offset" ]]; then
38 echo "UNKNOWN - No replication found"
39 exit $STATE_UNKNOWN
40else
41 output="Replication lag for openldap is ${offset}s"
42 LC_ALL=C lag=$(printf "%.*f" 0 $lag)
43
44 if [[ $offset -lt 5 ]]; then
45 echo "OK - $output | time=${offset}s;5;10;;"
46 exit $STATE_OK
47 elif [[ $offset -lt 10 ]]; then
48 echo "WARNING - $output | time=${offset}s;5;10;;"
49 exit $STATE_WARNING
50 else
51 echo "CRITICAL - $output | time=${offset}s;5;10;;"
52 exit $STATE_CRITICAL
53 fi
54fi
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 @@
1#!/usr/bin/env python
2
3import sys
4try:
5 import ovh
6
7 [endpoint, application_key, application_secret, consumer_key, account] = sys.argv[1].split(",")
8 client = ovh.Client(
9 endpoint=endpoint,
10 application_key=application_key,
11 application_secret=application_secret,
12 consumer_key=consumer_key,
13 )
14
15 result = client.get('/sms/{}'.format(account))["creditsLeft"]
16
17 if result < 20:
18 print("SMS OVH Critical - Not enough sms left ({})|SMS={};;;;".format(result, result))
19 sys.exit(2)
20 else:
21 print("SMS OVH Ok - Enough sms left ({})|SMS={};;;;".format(result, result))
22 sys.exit(0)
23except Exception:
24 print("SMS OVH UNKNOWN - Error during script")
25 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 @@
1#!/bin/bash
2
3STATE_OK=0
4STATE_WARNING=1
5STATE_CRITICAL=2
6STATE_UNKNOWN=3
7
8host=$1
9port=$2
10min=$3
11
12count=$(psql -h $host -p $port -A -q -c '\t' -c 'select count(datname) from pg_catalog.pg_database' postgres 2>&1)
13exit_code=$?
14
15if [[ $exit_code -ne 0 ]]; then
16 echo "UNKNOWN - Impossible to run psql command: $count"
17 exit $STATE_UNKNOWN
18elif [[ -z "$count" ]]; then
19 echo "UNKNOWN - No database found"
20 exit $STATE_UNKNOWN
21else
22 output="Database count is $count"
23 LC_ALL=C count=$(printf "%.*f" 0 $count)
24
25 if [[ $count -gt $min ]]; then
26 echo "OK - $output | count=${count};$min;$min;0;"
27 exit $STATE_OK
28 else
29 echo "CRITICAL - $output | count=${count};$min;$min;0;"
30 exit $STATE_CRITICAL
31 fi
32fi
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 @@
1#!/bin/bash
2
3STATE_OK=0
4STATE_WARNING=1
5STATE_CRITICAL=2
6STATE_UNKNOWN=3
7
8user=$1
9host=$2
10port=$3
11
12lag=$(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)
13exit_code=$?
14
15if [[ $exit_code -ne 0 ]]; then
16 echo "UNKNOWN - Impossible to run psql command"
17 exit $STATE_UNKNOWN
18elif [[ -z "$lag" ]]; then
19 echo "UNKNOWN - No replication found for $user"
20 exit $STATE_UNKNOWN
21else
22 output="Replication lag for $user is ${lag}s"
23 LC_ALL=C lag=$(printf "%.*f" 0 $lag)
24
25 if [[ $lag -lt 5 ]]; then
26 echo "OK - $output | time=${lag}s;5;10;0;"
27 exit $STATE_OK
28 elif [[ $lag -lt 10 ]]; then
29 echo "WARNING - $output | time=${lag}s;5;10;0;"
30 exit $STATE_WARNING
31 else
32 echo "CRITICAL - $output | time=${lag}s;5;10;0;"
33 exit $STATE_CRITICAL
34 fi
35fi
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 @@
1#!/bin/bash
2
3STATE_OK=0
4STATE_WARNING=1
5STATE_CRITICAL=2
6STATE_UNKNOWN=3
7
8socket=$1
9
10info=$(redis-cli -s $socket info replication)
11lag=$(echo "$info" | grep master_last_io_seconds_ago | cut -d":" -f2 | sed -e "s/\s//g")
12slave_offset=$(echo "$info" | grep slave_repl_offset | cut -d":" -f2 | sed -e "s/\s//g")
13master_offset=$(echo "$info" | grep master_repl_offset | cut -d":" -f2 | sed -e "s/\s//g")
14offset=$(($master_offset - $slave_offset))
15
16exit_code=$?
17
18if [[ $exit_code -ne 0 ]]; then
19 echo "UNKNOWN - Impossible to run redis command"
20 exit $STATE_UNKNOWN
21elif [[ -z "$lag" ]]; then
22 echo "UNKNOWN - No replication found"
23 exit $STATE_UNKNOWN
24else
25 output="Replication lag for redis is ${lag}s and offset is ${offset}"
26 LC_ALL=C lag=$(printf "%.*f" 0 $lag)
27
28 if [[ $lag -lt 5 && $offset -lt 5 ]]; then
29 echo "OK - $output | time=${lag}s;5;10;0; offset=${offset};5;10;0;"
30 exit $STATE_OK
31 elif [[ $lag -lt 10 && $offset -lt 10 ]]; then
32 echo "WARNING - $output | time=${lag}s;5;10;0; offset=${offset};5;10;0;"
33 exit $STATE_WARNING
34 else
35 echo "CRITICAL - $output | time=${lag}s;5;10;0; offset=${offset};5;10;0;"
36 exit $STATE_CRITICAL
37 fi
38fi
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 @@
1#! /bin/sh
2
3OS=$(uname)
4
5# MIT License
6#
7# Copyright (c) 2016 Josef Friedrich <josef@friedrich.rocks>
8#
9# Permission is hereby granted, free of charge, to any person obtaining
10# a copy of this software and associated documentation files (the
11# "Software"), to deal in the Software without restriction, including
12# without limitation the rights to use, copy, modify, merge, publish,
13# distribute, sublicense, and/or sell copies of the Software, and to
14# permit persons to whom the Software is furnished to do so, subject to
15# the following conditions:
16#
17# The above copyright notice and this permission notice shall be
18# included in all copies or substantial portions of the Software.
19#
20# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
28########################################################################
29# Date functions
30########################################################################
31
32# This date function must be placed on the top of this file because
33# they are used in some global variables.
34
35# to_year ###
36
37##
38# Get the four digit year integer from now.
39#
40# Return:
41# The current 4 digit year.
42##
43_now_to_year() {
44 date +%Y
45}
46
47##
48# Convert a date in the format YYYY-MM-DD to a four digit year integer.
49#
50# Parameters:
51# a date in the format YYYY-MM-DD
52#
53# Return:
54# four digit year integer
55##
56_date_to_year() {
57 local OPTIONS
58 if [ "$OS" = 'Linux' ]; then
59 OPTIONS="--date $1"
60 # FreeBSD, Darwin
61 else
62 OPTIONS="-j -f %Y-%m-%d $1"
63 fi
64 date $OPTIONS +%Y
65}
66
67# to_datetime ###
68
69##
70# Convert a UNIX timestamp to a datetime string.
71#
72# Parameters:
73# UNIX timestamp
74#
75# Return:
76# %Y-%m-%d.%H:%M:%S
77##
78_timestamp_to_datetime() {
79 local OPTIONS
80 if [ "$OS" = 'Linux' ]; then
81 OPTIONS="--date @$1"
82 # FreeBSD, Darwin
83 else
84 OPTIONS="-j -f %s $1"
85 fi
86 date $OPTIONS +%Y-%m-%d.%H:%M:%S
87}
88
89# to_timestamp ###
90
91##
92# Get the current UNIX timestamp.
93#
94# Return:
95# %current UNIX timestamp
96##
97_now_to_timestamp() {
98 date +%s
99}
100
101PROJECT_PAGES='https://github.com/Josef-Friedrich/check_zfs_snapshot
102https://exchange.icinga.com/joseffriedrich/check_zfs_snapshot
103https://exchange.nagios.org/directory/Plugins/System-Metrics/File-System/check_zfs_snapshot/details'
104
105VERSION=1.2
106FIRST_RELEASE=2016-09-08
107SHORT_DESCRIPTION="Monitoring plugin to check how long ago the last \
108snapshot of a ZFS dataset was created."
109USAGE="check_zfs_snapshot v$VERSION
110Copyright (c) $(_date_to_year $FIRST_RELEASE)-$(_now_to_year) \
111Josef Friedrich <josef@friedrich.rocks>
112
113$SHORT_DESCRIPTION
114
115
116Usage: check_zfs_snapshot <options>
117
118Options:
119 -c, --critical=OPT_CRITICAL
120 Interval in seconds for critical state.
121 -d, --dataset=OPT_DATASET
122 The ZFS dataset to check.
123 -h, --help
124 Show this help.
125 -s, --short-description
126 Show a short description of the command.
127 -v, --version
128 Show the version number.
129 -w, --warning=OPT_WARNING
130 Interval in seconds for warning state. Must be lower than -c
131
132Performance data:
133 - last_ago
134 Time interval in seconds for last snapshot.
135 - warning
136 Interval in seconds.
137 - critical
138 Interval in seconds.
139 - snapshot_count
140 How many snapshot exists in the given dataset and all child
141 datasets exists.
142"
143
144# Exit codes
145STATE_OK=0
146STATE_WARNING=1
147STATE_CRITICAL=2
148STATE_UNKNOWN=3
149
150_get_last_snapshot() {
151 zfs get creation -Hpr -t snapshot "$1" | \
152 awk 'BEGIN {max = 0} {if ($3>max) max=$3} END {print max}'
153}
154
155_getopts() {
156 while getopts ':c:d:hsvw:-:' OPT ; do
157 case $OPT in
158
159 c)
160 OPT_CRITICAL=$OPTARG
161 ;;
162
163 d)
164 OPT_DATASET="$OPTARG"
165 ;;
166
167 h)
168 echo "$USAGE"
169 exit 0
170 ;;
171
172 s)
173 echo "$SHORT_DESCRIPTION"
174 exit 0
175 ;;
176
177 v)
178 echo "$VERSION"
179 exit 0
180 ;;
181
182 w)
183 OPT_WARNING=$OPTARG
184 ;;
185
186 \?)
187 echo "Invalid option “-$OPTARG”!" >&2
188 exit 2
189 ;;
190
191 :)
192 echo "Option “-$OPTARG” requires an argument!" >&2
193 exit 3
194 ;;
195
196 -)
197 LONG_OPTARG="${OPTARG#*=}"
198
199 case $OPTARG in
200
201 critical=?*)
202 OPT_CRITICAL=$LONG_OPTARG
203 ;;
204
205 dataset=?*)
206 OPT_DATASET="$LONG_OPTARG"
207 ;;
208
209 help)
210 echo "$USAGE"
211 exit 0
212 ;;
213
214 short-description)
215 echo "$SHORT_DESCRIPTION"
216 exit 0
217 ;;
218
219 version)
220 echo "$VERSION"
221 exit 0
222 ;;
223
224 warning=?*)
225 OPT_WARNING=$LONG_OPTARG
226 ;;
227
228 critical*|dataset*|warning*)
229 echo "Option “--$OPTARG” requires an argument!" >&2
230 exit 3
231 ;;
232
233 help*|short-description*|version*)
234 echo "No argument allowed for the option “--$OPTARG”!" >&2
235 exit 4
236 ;;
237
238 '') # "--" terminates argument processing
239 break
240 ;;
241
242 *)
243 echo "Invalid option “--$OPTARG”!" >&2
244 exit 2
245 ;;
246
247 esac
248 ;;
249
250 esac
251 done
252}
253
254_snapshot_count() {
255 # FreeBSD wc adds some whitespaces before the number!
256 # cat $HOME/debug | wc -l
257 # 7
258 local COUNT
259 COUNT="$(zfs list -t snapshot | grep "$1" | wc -l)"
260 echo $COUNT
261}
262
263_performance_data() {
264 echo "| \
265last_ago=${DIFF}s;$OPT_WARNING;$OPT_CRITICAL;0 \
266count=$(_snapshot_count "$OPT_DATASET");;;0\
267"
268}
269
270## This SEPARATOR is required for test purposes. Please don’t remove! ##
271
272_getopts $@
273
274if [ -z "$OPT_WARNING" ]; then
275 # 1 day
276 OPT_WARNING=86400
277fi
278
279if [ -z "$OPT_CRITICAL" ]; then
280 # 3 day
281 OPT_CRITICAL=259200
282fi
283
284if [ -z "$OPT_DATASET" ]; then
285 echo "Dataset has to be set! Use option -d <dataset>" >&2
286 echo "$USAGE" >&2
287 exit $STATE_UNKNOWN
288fi
289
290if ! zfs list "$OPT_DATASET" > /dev/null 2>&1; then
291 echo "'$OPT_DATASET' is no ZFS dataset!" >&2
292 echo "$USAGE" >&2
293 exit $STATE_UNKNOWN
294fi
295
296NOW=$(_now_to_timestamp)
297
298CREATION_DATE=$(_get_last_snapshot "$OPT_DATASET")
299
300DIFF=$((NOW - CREATION_DATE))
301
302if [ "$OPT_WARNING" -gt "$OPT_CRITICAL" ]; then
303 echo '-w OPT_WARNING must be smaller than -c OPT_CRITICAL'
304 _usage >&2
305 exit $STATE_UNKNOWN
306fi
307
308RETURN=STATE_UNKNOWN
309
310if [ "$DIFF" -gt "$OPT_CRITICAL" ]; then
311 RETURN=$STATE_CRITICAL
312 MESSAGE="CRITICAL:"
313elif [ "$DIFF" -gt "$OPT_WARNING" ]; then
314 RETURN=$STATE_WARNING
315 MESSAGE="WARNING:"
316else
317 RETURN=$STATE_OK
318 MESSAGE="OK:"
319fi
320
321DATE="$(_timestamp_to_datetime "$CREATION_DATE")"
322
323echo "$MESSAGE Last snapshot for dataset '$OPT_DATASET' was created on $DATE $(_performance_data)"
324
325exit $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 @@
1#!/usr/bin/env bash
2
3APPRISE_USERNAME="Naemon"
4APPRISE_USERICON="https://assets.immae.eu/monitoring.png"
5APPRISE_URLS=$(echo "$2" | sed -e "s/{username}/$APPRISE_USERNAME/g" -e "s@{image_url}@$APPRISE_USERICON@g")
6
7if [ "$SERVICESTATE" = "CRITICAL" ]; then
8 ICON="❗"
9elif [ "$SERVICESTATE" = "WARNING" ]; then
10 ICON="⚠️:"
11elif [ "$SERVICESTATE" = "OK" ]; then
12 ICON="✅"
13elif [ "$SERVICESTATE" = "UNKNOWN" ]; then
14 ICON="❓"
15elif [ "$HOSTSTATE" = "UP" ]; then
16 ICON="✅"
17elif [ "$HOSTSTATE" = "DOWN" ]; then
18 ICON="❗"
19elif [ "$HOSTSTATE" = "UNKNOWN" ]; then
20 ICON="❓"
21elif [ "$HOSTSTATE" = "UNREACHABLE" ]; then
22 ICON="❓"
23else
24 ICON="◻"
25fi
26
27if [ "$1" = "host" ]; then
28 apprise --title "${ICON} ${NOTIFICATIONTYPE} ${HOST} is ${HOSTSTATE}" --body "$HOSTOUTPUT" $APPRISE_URLS
29else
30 apprise --title "${ICON} ${NOTIFICATIONTYPE} ${SERVICEDESC} on ${HOST} is ${SERVICESTATE}" --body "$SERVICEOUTPUT" $APPRISE_URLS
31fi
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 @@
1#!/usr/bin/env bash
2
3# $1 = service/host
4
5# $2 = type (PROBLEM RECOVERY ACKNOWLEDGEMENT FLAPPINGSTART FLAPPINGSTOP FLAPPINGDISABLED DOWNTIMESTART DOWNTIMESTOP DOWNTIMECANCELLED)
6# http://www.naemon.org/documentation/usersguide/macrolist.html#notificationtype
7
8# $3 = host alias
9
10# $4 = date (YYYY-MM-DDTHH:MM:SS)
11
12# $5 = E-mail
13
14NOTIFICATION_TYPE="$2"
15HOST_ALIAS="$3"
16DATE="$4"
17CONTACT="$5"
18
19message=""
20
21if [ "$1" = "host" ]; then
22 message=$(printf "%b" "***** Naemon *****\n\nNotification Type: $NOTIFICATION_TYPE\n\nHost: $HOST_ALIAS\nState: $HOSTSTATE\nInfo: $HOSTOUTPUT\n\nDate/Time: $DATE\n")
23 subject="** $NOTIFICATION_TYPE Host Alert: $HOST_ALIAS is $HOSTSTATE **"
24else
25 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")
26 subject="** $NOTIFICATION_TYPE Service Alert: $HOST_ALIAS/$SERVICEDESC is $SERVICESTATE **"
27fi
28
29echo "$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 @@
1#!/usr/bin/env bash
2
3SLACK_CHANNEL="$1"
4SLACK_USERNAME="Naemon"
5SLACK_URL="$2"
6SLACK_USERICON="https://assets.immae.eu/monitoring.png"
7
8if [ "$SERVICESTATE" = "CRITICAL" ]; then
9 ICON=":exclamation:"
10 COLOR="#DA0505"
11elif [ "$SERVICESTATE" = "WARNING" ]; then
12 ICON=":warning:"
13 COLOR="#F1E903"
14elif [ "$SERVICESTATE" = "OK" ]; then
15 ICON=":white_check_mark:"
16 COLOR="#36a64f"
17elif [ "$SERVICESTATE" = "UNKNOWN" ]; then
18 ICON=":question:"
19 COLOR="#000000"
20else
21 ICON=":white_medium_square:"
22 COLOR="#ffffff"
23fi
24
25payload=$(echo "{}" | jq -r \
26 --arg "icon_url" "$SLACK_USERICON" \
27 --arg "channel" "$SLACK_CHANNEL" \
28 --arg "username" "$SLACK_USERNAME" \
29 --arg "text" "${ICON} ${SERVICEDESC} on ${HOST} is ${SERVICESTATE}" \
30 --arg "color" "$COLOR" \
31 --arg "host" "$HOST" \
32 --arg "desc" "$SERVICEDESC" \
33 --arg "state" "$SERVICESTATE" \
34 --arg "output" "$SERVICEOUTPUT" \
35 '.icon_url = $icon_url |
36 .channel = $channel |
37 .username = $username |
38 .text = $text |
39 .attachments = [{fallback:"", color:$color,fields: [{},{},{},{}]}] |
40 .attachments[0].fields[0] = {title:"Host",value:$host,short:true} |
41 .attachments[0].fields[1] = {title:"Service description",value:$desc,short:true} |
42 .attachments[0].fields[2] = {title:"Status",value:$state,short:true} |
43 .attachments[0].fields[3] = {title:"Message",value:$output,short:false}
44 ')
45
46curl -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 @@
1#!/bin/bash
2
3TEMPLATE='{
4 "cmd": "submitcheck",
5 "token": $token,
6 "checkresult": [{
7 "hostname": $hostname,
8 "state": $state,
9 "output": $output,
10 "type": $type,
11 "servicename": $servicename
12 }]
13}'
14
15while getopts "u:t:H:s:S:o:" option
16do
17 case $option in
18 u) url=$OPTARG ;;
19 t) token=$OPTARG ;;
20 H) hostname=$OPTARG ;;
21 s) servicename=$OPTARG ;;
22 S) state=$OPTARG ;;
23 o) output=$OPTARG ;;
24 esac
25done
26
27if [ -n "$servicename" ]; then
28 checktype="service"
29else
30 checktype="host"
31fi
32
33payload=$(jq -n \
34 --arg type "$checktype" \
35 --arg hostname "$hostname" \
36 --arg servicename "$servicename" \
37 --arg output "$output" \
38 --arg token "$token" \
39 --arg state "$state" \
40 "$TEMPLATE")
41
42rslt=$(curl -f --silent --insecure -d "$payload" -H "Content-Type: application/json" "$url")
43ret=$?
44
45if [ $ret != 0 ];then
46 echo "ERROR: could not connect to NRDP server at $url"
47 exit 1
48fi
49
50status=$(echo "$rslt" | jq -r .status)
51message=$(echo "$rslt" | jq -r .message)
52
53if [ "$status" != "ok" ];then
54 echo "ERROR: The NRDP Server said $message"
55 exit 2
56fi
57echo "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 @@
1#!/usr/bin/env bash
2
3CHECK_DIR=$1
4shift
5RETURN_PATH=$1
6shift
7
8for mail in "$@"; do
9 echo "Test Mail" | MAILRC=/dev/null mail -n -r "$RETURN_PATH" -s "TestMailImmae " "$mail"
10done
11
12if [ -d "$CHECK_DIR" ]; then
13 cd $CHECK_DIR
14 stat -c '%n;%y' *
15fi
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 @@
1{ lib }:
2 with lib.attrsets;
3 with lib.strings;
4 with lib.lists;
5 with lib.trivial;
6let
7 pad = width: str: let
8 padWidth = width - stringLength str;
9 padding = concatStrings (genList (const " ") padWidth);
10 in str + optionalString (padWidth > 0) padding;
11 toStr = k: v:
12 if k == "check_command" && builtins.isList v
13 then builtins.concatStringsSep "!" v
14 else builtins.toString v;
15
16 toService = service: ''
17 define service {
18 ${builtins.concatStringsSep "\n" (mapAttrsToList (k: v:
19 " ${pad 30 k} ${toStr k v}"
20 ) (filterAttrs (k: v: ! hasPrefix "__passive_" k) service))}
21 }
22 '';
23 toServices = services: builtins.concatStringsSep "\n" (map toService services);
24
25 toCommand = k: v: ''
26 define command {
27 ${pad 30 "command_name"} ${k}
28 ${pad 30 "command_line"} ${v}
29 }
30 '';
31 toCommands = a: builtins.concatStringsSep "\n" (mapAttrsToList toCommand a);
32
33 toOther = keyname: k: v: ''
34 define ${keyname} {
35 ${pad 30 "${keyname}_name"} ${k}
36 ${builtins.concatStringsSep "\n" (mapAttrsToList (kk: vv:
37 " ${pad 30 kk} ${vv}"
38 ) v)}
39 }
40 '';
41 toOtherNoName = keyname: v: ''
42 define ${keyname} {
43 ${builtins.concatStringsSep "\n" (mapAttrsToList (kk: vv:
44 " ${pad 30 kk} ${vv}"
45 ) v)}
46 }
47 '';
48 toOthers = keyname: a: builtins.concatStringsSep "\n" (mapAttrsToList (toOther keyname) a);
49 toOthersArray = keyname: a: builtins.concatStringsSep "\n" (map (toOtherNoName keyname) a);
50
51 toTemplate = keyname: k: v: ''
52 define ${keyname} {
53 ${pad 30 "name"} ${k}
54 ${pad 30 "register"} 0
55 ${builtins.concatStringsSep "\n" (mapAttrsToList (kk: vv:
56 " ${pad 30 kk} ${builtins.toString vv}"
57 ) v)}
58 }
59 '';
60 toTemplates' = keyname: a: builtins.concatStringsSep "\n" (mapAttrsToList (toTemplate keyname) a);
61 toTemplates = v: builtins.concatStringsSep "\n" (mapAttrsToList toTemplates' v);
62
63 toObjects' = keyname: v:
64 if keyname == "service"
65 then toServices v
66 else if keyname == "command"
67 then toCommands v
68 else if keyname == "templates"
69 then toTemplates v
70 else if builtins.elem keyname ["hostgroup" "host" "contactgroup" "contact" "timeperiod" "servicegroup"]
71 then toOthers keyname v
72 else if builtins.elem keyname ["servicedependency" "hostdependency"]
73 then toOthersArray keyname v
74 else builtins.trace ("Warning: unknown object type " + keyname) "";
75 toObjects = v: builtins.concatStringsSep "\n" (mapAttrsToList toObjects' v);
76in
77 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 @@
2 "nodes": { 2 "nodes": {
3 "files-watcher": { 3 "files-watcher": {
4 "locked": { 4 "locked": {
5 "narHash": "sha256-6urOJuzXsu4HJHyVmrZHd40SMzzTeHiOiDOM40q53Y0=", 5 "lastModified": 1,
6 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
6 "path": "../../files-watcher", 7 "path": "../../files-watcher",
7 "type": "path" 8 "type": "path"
8 }, 9 },
@@ -26,69 +27,20 @@
26 "type": "github" 27 "type": "github"
27 } 28 }
28 }, 29 },
29 "my-lib": { 30 "myuids": {
30 "inputs": {
31 "nixpkgs": "nixpkgs"
32 },
33 "locked": { 31 "locked": {
34 "narHash": "sha256-HGNP1eH7b42BxViYx/F3ZPO9CM1X+5qfA9JoP2ArN+s=", 32 "lastModified": 1,
35 "path": "../../lib", 33 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
34 "path": "../myuids",
36 "type": "path" 35 "type": "path"
37 }, 36 },
38 "original": { 37 "original": {
39 "path": "../../lib", 38 "path": "../myuids",
40 "type": "path" 39 "type": "path"
41 } 40 }
42 }, 41 },
43 "myuids": {
44 "locked": {
45 "dir": "flakes/myuids",
46 "lastModified": 1628207001,
47 "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=",
48 "ref": "master",
49 "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
50 "revCount": 865,
51 "type": "git",
52 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
53 },
54 "original": {
55 "dir": "flakes/myuids",
56 "type": "git",
57 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
58 }
59 },
60 "nix-lib": {
61 "locked": {
62 "lastModified": 1633008342,
63 "narHash": "sha256-wZV5YidnsqV/iufDIhaZip3LzwUGeIt8wtdiGS5+cXc=",
64 "owner": "NixOS",
65 "repo": "nixpkgs",
66 "rev": "6eae8a116011f4db0aa5146f364820024411d6bb",
67 "type": "github"
68 },
69 "original": {
70 "owner": "NixOS",
71 "repo": "nixpkgs",
72 "type": "github"
73 }
74 },
75 "nixpkgs": { 42 "nixpkgs": {
76 "locked": { 43 "locked": {
77 "lastModified": 1631570365,
78 "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
79 "owner": "NixOS",
80 "repo": "nixpkgs",
81 "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
82 "type": "github"
83 },
84 "original": {
85 "owner": "NixOS",
86 "repo": "nixpkgs",
87 "type": "github"
88 }
89 },
90 "nixpkgs_2": {
91 "locked": {
92 "lastModified": 1597943282, 44 "lastModified": 1597943282,
93 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=", 45 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
94 "owner": "NixOS", 46 "owner": "NixOS",
@@ -106,11 +58,12 @@
106 "inputs": { 58 "inputs": {
107 "flake-utils": "flake-utils", 59 "flake-utils": "flake-utils",
108 "myuids": "myuids", 60 "myuids": "myuids",
109 "nixpkgs": "nixpkgs_2", 61 "nixpkgs": "nixpkgs",
110 "openarc": "openarc_2" 62 "openarc": "openarc_2"
111 }, 63 },
112 "locked": { 64 "locked": {
113 "narHash": "sha256-ilrfNs6jpi1OceDE3y1atkovECx6PKNWubwLc0Sjx+s=", 65 "lastModified": 1,
66 "narHash": "sha256-+X3x0t7DSYBvgFAUGNnMV4F/vQOUWE+9Q4Az6V8/iTw=",
114 "path": "../../openarc", 67 "path": "../../openarc",
115 "type": "path" 68 "type": "path"
116 }, 69 },
@@ -138,15 +91,14 @@
138 "root": { 91 "root": {
139 "inputs": { 92 "inputs": {
140 "files-watcher": "files-watcher", 93 "files-watcher": "files-watcher",
141 "my-lib": "my-lib",
142 "nix-lib": "nix-lib",
143 "openarc": "openarc", 94 "openarc": "openarc",
144 "secrets": "secrets" 95 "secrets": "secrets"
145 } 96 }
146 }, 97 },
147 "secrets": { 98 "secrets": {
148 "locked": { 99 "locked": {
149 "narHash": "sha256-w3u1bMEJHCg9SqErJ5Qi0sTX2xx7mk+HrHZXzpjQd1w=", 100 "lastModified": 1,
101 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
150 "path": "../../secrets", 102 "path": "../../secrets",
151 "type": "path" 103 "type": "path"
152 }, 104 },
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 @@
1{ 1{
2 inputs.openarc = { 2 inputs.openarc.url = "path:../../openarc";
3 path = "../../openarc"; 3 inputs.secrets.url = "path:../../secrets";
4 type = "path"; 4 inputs.files-watcher.url = "path:../../files-watcher";
5 };
6 inputs.secrets = {
7 path = "../../secrets";
8 type = "path";
9 };
10 inputs.files-watcher = {
11 path = "../../files-watcher";
12 type = "path";
13 };
14 inputs.my-lib = {
15 path = "../../lib";
16 type = "path";
17 };
18 inputs.nix-lib.url = "github:NixOS/nixpkgs";
19 5
20 description = "Private configuration for openarc"; 6 description = "Private configuration for openarc";
21 outputs = { self, nix-lib, my-lib, files-watcher, openarc, secrets }: 7 outputs = { self, files-watcher, openarc, secrets }: {
22 let 8 nixosModule = self.nixosModules.openarc;
23 cfg = name': { config, lib, pkgs, name, ... }: { 9 nixosModules.openarc = { config, pkgs, ... }: {
24 imports = [ 10 imports = [
25 (my-lib.lib.withNarKey files-watcher "nixosModule") 11 files-watcher.nixosModule
26 (my-lib.lib.withNarKey openarc "nixosModule") 12 openarc.nixosModule
27 (my-lib.lib.withNarKey secrets "nixosModule") 13 secrets.nixosModule
28 ]; 14 ];
29 config = lib.mkIf (name == name') { 15 config = {
30 services.openarc = { 16 services.openarc = {
31 enable = true; 17 enable = true;
32 user = "opendkim"; 18 user = "opendkim";
33 socket = "/run/openarc/openarc.sock"; 19 socket = "/run/openarc/openarc.sock";
34 group = config.services.postfix.group; 20 group = config.services.postfix.group;
35 configFile = pkgs.writeText "openarc.conf" '' 21 configFile = pkgs.writeText "openarc.conf" ''
36 AuthservID mail.immae.eu 22 AuthservID mail.immae.eu
37 Domain mail.immae.eu 23 Domain mail.immae.eu
38 KeyFile ${config.secrets.fullPaths."opendkim/eldiron.private"} 24 KeyFile ${config.secrets.fullPaths."opendkim/eldiron.private"}
39 Mode sv 25 Mode sv
40 Selector eldiron 26 Selector eldiron
41 SoftwareHeader yes 27 SoftwareHeader yes
42 Syslog Yes 28 Syslog Yes
43 '';
44 };
45 systemd.services.openarc.serviceConfig.Slice = "mail.slice";
46 systemd.services.openarc.postStart = ''
47 while [ ! -S ${config.services.openarc.socket} ]; do
48 sleep 0.5
49 done
50 chmod g+w ${config.services.openarc.socket}
51 ''; 29 '';
52 services.filesWatcher.openarc = { 30 };
53 restart = true; 31 systemd.services.openarc.serviceConfig.Slice = "mail.slice";
54 paths = [ 32 systemd.services.openarc.postStart = ''
55 config.secrets.fullPaths."opendkim/eldiron.private" 33 while [ ! -S ${config.services.openarc.socket} ]; do
56 ]; 34 sleep 0.5
57 }; 35 done
36 chmod g+w ${config.services.openarc.socket}
37 '';
38 services.filesWatcher.openarc = {
39 restart = true;
40 paths = [
41 config.secrets.fullPaths."opendkim/eldiron.private"
42 ];
58 }; 43 };
59 }; 44 };
60 in 45 };
61 openarc.outputs // 46 };
62 { nixosModules = openarc.nixosModules or {} // nix-lib.lib.genAttrs ["eldiron" "backup-2"] cfg; };
63} 47}
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 @@
1{ 1{
2 "nodes": { 2 "nodes": {
3 "environment": {
4 "locked": {
5 "lastModified": 1,
6 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
7 "path": "../environment",
8 "type": "path"
9 },
10 "original": {
11 "path": "../environment",
12 "type": "path"
13 }
14 },
3 "files-watcher": { 15 "files-watcher": {
4 "locked": { 16 "locked": {
5 "narHash": "sha256-6urOJuzXsu4HJHyVmrZHd40SMzzTeHiOiDOM40q53Y0=", 17 "lastModified": 1,
18 "narHash": "sha256-ZsdumUVoSPkV/DB6gO6dNDttjzalye0ToVBF9bl5W0k=",
6 "path": "../../files-watcher", 19 "path": "../../files-watcher",
7 "type": "path" 20 "type": "path"
8 }, 21 },
@@ -26,69 +39,20 @@
26 "type": "github" 39 "type": "github"
27 } 40 }
28 }, 41 },
29 "my-lib": { 42 "myuids": {
30 "inputs": {
31 "nixpkgs": "nixpkgs"
32 },
33 "locked": { 43 "locked": {
34 "narHash": "sha256-HGNP1eH7b42BxViYx/F3ZPO9CM1X+5qfA9JoP2ArN+s=", 44 "lastModified": 1,
35 "path": "../../lib", 45 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
46 "path": "../myuids",
36 "type": "path" 47 "type": "path"
37 }, 48 },
38 "original": { 49 "original": {
39 "path": "../../lib", 50 "path": "../myuids",
40 "type": "path" 51 "type": "path"
41 } 52 }
42 }, 53 },
43 "myuids": {
44 "locked": {
45 "dir": "flakes/myuids",
46 "lastModified": 1628207001,
47 "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=",
48 "ref": "master",
49 "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
50 "revCount": 865,
51 "type": "git",
52 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
53 },
54 "original": {
55 "dir": "flakes/myuids",
56 "type": "git",
57 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
58 }
59 },
60 "nix-lib": {
61 "locked": {
62 "lastModified": 1633008342,
63 "narHash": "sha256-wZV5YidnsqV/iufDIhaZip3LzwUGeIt8wtdiGS5+cXc=",
64 "owner": "NixOS",
65 "repo": "nixpkgs",
66 "rev": "6eae8a116011f4db0aa5146f364820024411d6bb",
67 "type": "github"
68 },
69 "original": {
70 "owner": "NixOS",
71 "repo": "nixpkgs",
72 "type": "github"
73 }
74 },
75 "nixpkgs": { 54 "nixpkgs": {
76 "locked": { 55 "locked": {
77 "lastModified": 1631570365,
78 "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
79 "owner": "NixOS",
80 "repo": "nixpkgs",
81 "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
82 "type": "github"
83 },
84 "original": {
85 "owner": "NixOS",
86 "repo": "nixpkgs",
87 "type": "github"
88 }
89 },
90 "nixpkgs_2": {
91 "locked": {
92 "lastModified": 1597943282, 56 "lastModified": 1597943282,
93 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=", 57 "narHash": "sha256-G/VQBlqO7YeFOSvn29RqdvABZxmQBtiRYVA6kjqWZ6o=",
94 "owner": "NixOS", 58 "owner": "NixOS",
@@ -106,10 +70,11 @@
106 "inputs": { 70 "inputs": {
107 "flake-utils": "flake-utils", 71 "flake-utils": "flake-utils",
108 "myuids": "myuids", 72 "myuids": "myuids",
109 "nixpkgs": "nixpkgs_2" 73 "nixpkgs": "nixpkgs"
110 }, 74 },
111 "locked": { 75 "locked": {
112 "narHash": "sha256-7jup/d3+WXXWsNMB7Sp5Py4rJQV30Z5+PJITBISbQ9o=", 76 "lastModified": 1,
77 "narHash": "sha256-dDS9a1XujZU6KVCgz2RKbx2T3yT1k7z0EknUh1OyMdQ=",
113 "path": "../../opendmarc", 78 "path": "../../opendmarc",
114 "type": "path" 79 "type": "path"
115 }, 80 },
@@ -120,16 +85,16 @@
120 }, 85 },
121 "root": { 86 "root": {
122 "inputs": { 87 "inputs": {
88 "environment": "environment",
123 "files-watcher": "files-watcher", 89 "files-watcher": "files-watcher",
124 "my-lib": "my-lib",
125 "nix-lib": "nix-lib",
126 "opendmarc": "opendmarc", 90 "opendmarc": "opendmarc",
127 "secrets": "secrets" 91 "secrets": "secrets"
128 } 92 }
129 }, 93 },
130 "secrets": { 94 "secrets": {
131 "locked": { 95 "locked": {
132 "narHash": "sha256-w3u1bMEJHCg9SqErJ5Qi0sTX2xx7mk+HrHZXzpjQd1w=", 96 "lastModified": 1,
97 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
133 "path": "../../secrets", 98 "path": "../../secrets",
134 "type": "path" 99 "type": "path"
135 }, 100 },
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 @@
1{ 1{
2 inputs.opendmarc = { 2 inputs.opendmarc.url = "path:../../opendmarc";
3 path = "../../opendmarc"; 3 inputs.environment.url = "path:../environment";
4 type = "path"; 4 inputs.secrets.url = "path:../../secrets";
5 }; 5 inputs.files-watcher.url = "path:../../files-watcher";
6 inputs.secrets = {
7 path = "../../secrets";
8 type = "path";
9 };
10 inputs.files-watcher = {
11 path = "../../files-watcher";
12 type = "path";
13 };
14 inputs.my-lib = {
15 path = "../../lib";
16 type = "path";
17 };
18 inputs.nix-lib.url = "github:NixOS/nixpkgs";
19 6
20 description = "Private configuration for opendmarc"; 7 description = "Private configuration for opendmarc";
21 outputs = { self, nix-lib, opendmarc, my-lib, files-watcher, secrets }: 8 outputs = { self, environment, opendmarc, files-watcher, secrets }: {
22 let 9 nixosModule = self.nixosModules.opendmarc;
23 cfg = name': { config, lib, pkgs, name, ... }: { 10 nixosModules.opendmarc = { config, lib, pkgs, ... }: {
24 imports = [ 11 imports = [
25 (my-lib.lib.withNarKey files-watcher "nixosModule") 12 environment.nixosModule
26 (my-lib.lib.withNarKey opendmarc "nixosModule") 13 files-watcher.nixosModule
27 (my-lib.lib.withNarKey secrets "nixosModule") 14 opendmarc.nixosModule
28 ]; 15 secrets.nixosModule
29 config = lib.mkIf (name == name') { 16 ];
30 users.users."${config.services.opendmarc.user}".extraGroups = [ "keys" ]; 17 config = {
31 systemd.services.opendmarc.serviceConfig.Slice = "mail.slice"; 18 users.users."${config.services.opendmarc.user}".extraGroups = [ "keys" ];
32 services.opendmarc = { 19 systemd.services.opendmarc.serviceConfig.Slice = "mail.slice";
33 enable = true; 20 services.opendmarc = {
34 socket = "/run/opendmarc/opendmarc.sock"; 21 enable = true;
35 configFile = pkgs.writeText "opendmarc.conf" '' 22 socket = "/run/opendmarc/opendmarc.sock";
36 AuthservID HOSTNAME 23 configFile = pkgs.writeText "opendmarc.conf" ''
37 FailureReports false 24 AuthservID HOSTNAME
38 FailureReportsBcc postmaster@immae.eu 25 FailureReports false
39 FailureReportsOnNone true 26 FailureReportsBcc postmaster@immae.eu
40 FailureReportsSentBy postmaster@immae.eu 27 FailureReportsOnNone true
41 IgnoreAuthenticatedClients true 28 FailureReportsSentBy postmaster@immae.eu
42 IgnoreHosts ${config.secrets.fullPaths."opendmarc/ignore.hosts"} 29 IgnoreAuthenticatedClients true
43 SoftwareHeader true 30 IgnoreHosts ${config.secrets.fullPaths."opendmarc/ignore.hosts"}
44 SPFIgnoreResults true 31 SoftwareHeader true
45 SPFSelfValidate true 32 SPFIgnoreResults true
46 UMask 002 33 SPFSelfValidate true
47 ''; 34 UMask 002
48 group = config.services.postfix.group; 35 '';
49 }; 36 group = config.services.postfix.group;
50 services.filesWatcher.opendmarc = { 37 };
51 restart = true; 38 services.filesWatcher.opendmarc = {
52 paths = [ 39 restart = true;
53 config.secrets.fullPaths."opendmarc/ignore.hosts" 40 paths = [
54 ]; 41 config.secrets.fullPaths."opendmarc/ignore.hosts"
55 }; 42 ];
56 secrets.keys = { 43 };
57 "opendmarc/ignore.hosts" = { 44 secrets.keys = {
58 user = config.services.opendmarc.user; 45 "opendmarc/ignore.hosts" = {
59 group = config.services.opendmarc.group; 46 user = config.services.opendmarc.user;
60 permissions = "0400"; 47 group = config.services.opendmarc.group;
61 text = let 48 permissions = "0400";
62 mxes = lib.attrsets.filterAttrs 49 text = let
63 (n: v: v.mx.enable) 50 mxes = lib.attrsets.filterAttrs
64 config.myEnv.servers; 51 (n: v: v.mx.enable)
65 in 52 config.myEnv.servers;
66 builtins.concatStringsSep "\n" ([ 53 in
67 config.myEnv.mail.dmarc.ignore_hosts 54 builtins.concatStringsSep "\n" ([
68 ] ++ lib.mapAttrsToList (n: v: v.fqdn) mxes); 55 config.myEnv.mail.dmarc.ignore_hosts
69 }; 56 ] ++ lib.mapAttrsToList (n: v: v.fqdn) mxes);
70 }; 57 };
71 }; 58 };
72 }; 59 };
73 in 60 };
74 opendmarc.outputs // 61 };
75 { nixosModules = opendmarc.nixosModules or {} // nix-lib.lib.genAttrs ["eldiron" "backup-2"] cfg; };
76} 62}
77
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 @@
1{
2 outputs = { self }: {
3 immae-schema = ./immae.schema;
4 immae-ldif = ./immae.ldif;
5 };
6}
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 @@
1# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
2# CRC32 22130f5f
3dn: cn=immae,cn=schema,cn=config
4objectClass: olcSchemaConfig
5cn: immae
6olcObjectIdentifier: {0}Immaeroot 1.3.6.1.4.1.50071
7olcObjectIdentifier: {1}Immae Immaeroot:2
8olcObjectIdentifier: {2}ImmaeattributeType Immae:3
9olcObjectIdentifier: {3}ImmaeobjectClass Immae:4
10olcAttributeTypes: {0}( ImmaeattributeType:1 NAME 'immaeTtrssLogin' DESC 'lo
11 gin for TTRSS' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SY
12 NTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
13olcAttributeTypes: {1}( ImmaeattributeType:2 NAME 'immaeFtpDirectory' DESC '
14 home directory for ftp' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.
15 115.121.1.26 )
16olcAttributeTypes: {2}( ImmaeattributeType:3 NAME 'immaeFtpUid' DESC 'user i
17 d for ftp' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
18olcAttributeTypes: {3}( ImmaeattributeType:4 NAME 'immaeFtpGid' DESC 'group
19 id for ftp' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
20olcAttributeTypes: {4}( ImmaeattributeType:5 NAME 'immaeSshKey' DESC 'OpenSS
21 H Public key' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.4
22 0 )
23olcAttributeTypes: {5}( ImmaeattributeType:6 NAME 'immaeAccessDn' EQUALITY d
24 istinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
25olcAttributeTypes: {6}( ImmaeattributeType:17 NAME 'immaeAccessWriteDn' EQUA
26 LITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
27olcAttributeTypes: {7}( ImmaeattributeType:18 NAME 'immaeAccessReadSubtree'
28 EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
29olcAttributeTypes: {8}( ImmaeattributeType:7 NAME 'immaeXmppUid' DESC 'user
30 part for Xmpp' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SY
31 NTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
32olcAttributeTypes: {9}( ImmaeattributeType:8 NAME 'immaePostfixAddress' DESC
33 'the dovecot address to match as username' EQUALITY caseIgnoreIA5Match SUB
34 STR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
35 )
36olcAttributeTypes: {10}( ImmaeattributeType:9 NAME 'immaePostfixHome' DESC '
37 the postfix home directory' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1
38 466.115.121.1.26 SINGLE-VALUE )
39olcAttributeTypes: {11}( ImmaeattributeType:10 NAME 'immaePostfixMail' DESC
40 'the dovecot mail location' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1
41 466.115.121.1.26 SINGLE-VALUE )
42olcAttributeTypes: {12}( ImmaeattributeType:11 NAME 'immaePostfixUid' DESC '
43 the dovecot uid' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121
44 .1.26 SINGLE-VALUE )
45olcAttributeTypes: {13}( ImmaeattributeType:12 NAME 'immaePostfixGid' DESC '
46 the dovecot gid' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121
47 .1.26 SINGLE-VALUE )
48olcAttributeTypes: {14}( ImmaeattributeType:16 NAME 'immaePuppetJson' DESC '
49 Puppet hiera json' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.12
50 1.1.40 )
51olcAttributeTypes: {15}( ImmaeattributeType:19 NAME 'immaeTaskId' DESC 'Task
52 warrior server Org:Name:Key' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubs
53 tringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
54olcAttributeTypes: {16}( ImmaeattributeType:20 NAME 'immaePeertubeId' DESC '
55 login for Peertube' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMat
56 ch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
57olcObjectClasses: {0}( ImmaeobjectClass:1 NAME 'immaeTtrssClass' DESC 'Expan
58 sion of the existing object classes for ttrss' SUP top AUXILIARY MUST immae
59 TtrssLogin )
60olcObjectClasses: {1}( ImmaeobjectClass:2 NAME 'immaeFtpClass' DESC 'Expansi
61 on of the existing object classes for ftp' SUP top AUXILIARY MUST ( immaeFt
62 pDirectory $ immaeFtpGid $ immaeFtpUid ) )
63olcObjectClasses: {2}( ImmaeobjectClass:3 NAME 'immaeSshClass' DESC 'OpenSSH
64 class' SUP top AUXILIARY MAY immaeSSHKey )
65olcObjectClasses: {3}( ImmaeobjectClass:4 NAME 'immaeAccessClass' DESC 'Acce
66 ss class' SUP top AUXILIARY MAY ( immaeAccessDn $ immaeAccessWriteDn $ imma
67 eAccessReadSubtree ) )
68olcObjectClasses: {4}( ImmaeobjectClass:5 NAME 'immaeXmppClass' DESC 'Expans
69 ion of the existing object classes for XMPP' SUP top AUXILIARY MUST immaeXm
70 ppUid )
71olcObjectClasses: {5}( ImmaeobjectClass:6 NAME 'immaePostfixClass' DESC 'Exp
72 ansion of the existing object classes for Postfix' SUP top AUXILIARY MAY (
73 immaePostfixHome $ immaePostfixMail $ immaePostfixUid $ immaePostfixGid ) M
74 UST ( immaePostfixAddress ) )
75olcObjectClasses: {6}( ImmaeobjectClass:8 NAME 'immaePuppetClass' DESC 'Expa
76 nsion of the existing object classes for Puppet' SUP top AUXILIARY MUST imm
77 aePuppetJson )
78olcObjectClasses: {7}( ImmaeobjectClass:9 NAME 'immaeTaskClass' DESC 'Expans
79 ion of the existing object classes for Task' SUP top AUXILIARY MUST immaeTa
80 skId )
81olcObjectClasses: {8}( ImmaeobjectClass:10 NAME 'immaePeertubeClass' DESC 'E
82 xpansion of the existing object classes for peertube' SUP top AUXILIARY MUS
83 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 @@
1# vim: set filetype=slapd:
2objectIdentifier Immaeroot 1.3.6.1.4.1.50071
3
4objectIdentifier Immae Immaeroot:2
5objectIdentifier ImmaeattributeType Immae:3
6objectIdentifier ImmaeobjectClass Immae:4
7
8# TT-RSS
9attributetype ( ImmaeattributeType:1 NAME 'immaeTtrssLogin'
10 DESC 'login for TTRSS'
11 EQUALITY caseIgnoreMatch
12 SUBSTR caseIgnoreSubstringsMatch
13 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
14
15objectclass ( ImmaeobjectClass:1 NAME 'immaeTtrssClass'
16 DESC 'Expansion of the existing object classes for ttrss'
17 SUP top AUXILIARY
18 MUST ( immaeTtrssLogin ) )
19
20# FTP
21attributetype ( ImmaeattributeType:2 NAME 'immaeFtpDirectory'
22 DESC 'home directory for ftp'
23 EQUALITY caseExactIA5Match
24 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
25
26attributetype ( ImmaeattributeType:3 NAME 'immaeFtpUid'
27 DESC 'user id for ftp'
28 EQUALITY integerMatch
29 SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
30
31attributetype ( ImmaeattributeType:4 NAME 'immaeFtpGid'
32 DESC 'group id for ftp'
33 EQUALITY integerMatch
34 SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
35
36objectclass ( ImmaeobjectClass:2 NAME 'immaeFtpClass'
37 DESC 'Expansion of the existing object classes for ftp'
38 SUP top AUXILIARY
39 MUST ( immaeFtpDirectory $ immaeFtpGid $ immaeFtpUid ) )
40
41
42# SSH keys
43attributetype ( ImmaeattributeType:5 NAME 'immaeSshKey'
44 DESC 'OpenSSH Public key'
45 EQUALITY octetStringMatch
46 SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
47
48objectClass ( ImmaeobjectClass:3 NAME 'immaeSshClass'
49 DESC 'OpenSSH class'
50 SUP top AUXILIARY
51 MAy ( immaeSSHKey ) )
52
53# Specific access
54attributetype (ImmaeattributeType:6 NAME 'immaeAccessDn'
55 EQUALITY distinguishedNameMatch
56 SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
57
58attributetype (ImmaeattributeType:17 NAME 'immaeAccessWriteDn'
59 EQUALITY distinguishedNameMatch
60 SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
61
62attributetype (ImmaeattributeType:18 NAME 'immaeAccessReadSubtree'
63 EQUALITY distinguishedNameMatch
64 SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
65
66objectClass ( ImmaeobjectClass:4 NAME 'immaeAccessClass'
67 DESC 'Access class'
68 SUP top AUXILIARY
69 MAY ( immaeAccessDn $ immaeAccessWriteDn $ immaeAccessReadSubtree ) )
70
71# Xmpp uid
72attributetype ( ImmaeattributeType:7 NAME 'immaeXmppUid'
73 DESC 'user part for Xmpp'
74 EQUALITY caseIgnoreMatch
75 SUBSTR caseIgnoreSubstringsMatch
76 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
77
78objectclass ( ImmaeobjectClass:5 NAME 'immaeXmppClass'
79 DESC 'Expansion of the existing object classes for XMPP'
80 SUP top AUXILIARY
81 MUST ( immaeXmppUid ) )
82
83# Postfix accounts
84attributetype ( ImmaeattributeType:8 NAME 'immaePostfixAddress'
85 DESC 'the dovecot address to match as username'
86 EQUALITY caseIgnoreIA5Match
87 SUBSTR caseIgnoreIA5SubstringsMatch
88 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
89
90attributetype ( ImmaeattributeType:9 NAME 'immaePostfixHome'
91 DESC 'the postfix home directory'
92 EQUALITY caseExactIA5Match
93 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
94
95attributetype ( ImmaeattributeType:10 NAME 'immaePostfixMail'
96 DESC 'the dovecot mail location'
97 EQUALITY caseExactIA5Match
98 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
99
100attributetype ( ImmaeattributeType:11 NAME 'immaePostfixUid'
101 DESC 'the dovecot uid'
102 EQUALITY caseExactIA5Match
103 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
104
105attributetype ( ImmaeattributeType:12 NAME 'immaePostfixGid'
106 DESC 'the dovecot gid'
107 EQUALITY caseExactIA5Match
108 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
109
110objectclass ( ImmaeobjectClass:6 NAME 'immaePostfixClass'
111 DESC 'Expansion of the existing object classes for Postfix'
112 SUP top AUXILIARY
113 MAY ( immaePostfixHome $ immaePostfixMail $ immaePostfixUid $ immaePostfixGid )
114 MUST ( immaePostfixAddress )
115 )
116
117# Tinc informations
118# Domaine = une classe a part ou une partie du dn ?
119# attributetype ( ImmaeattributeType:13 NAME 'immaeTincIpSegment'
120# DESC 'the internal ip segment in tinc'
121# EQUALITY caseIgnoreIA5Match
122# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
123#
124# attributetype ( ImmaeattributeType:14 NAME 'immaeTincSubdomain'
125# DESC 'the host subdomain'
126# EQUALITY caseIgnoreIA5Match
127# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
128#
129# attributetype ( ImmaeattributeType:15 NAME 'immaeTincHostname'
130# DESC 'the host name'
131# EQUALITY caseIgnoreIA5Match
132# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
133#
134# objectclass ( ImmaeobjectClass:7 NAME 'immaeTincHostClass'
135# DESC 'Expansion of the existing object classes for Tinc'
136# SUP top AUXILIARY
137# MUST ( immaeTincInternalIp $ immaeTincSubdomain $
138# immaeTincHostname )
139# )
140
141attributetype (ImmaeattributeType:16 NAME 'immaePuppetJson'
142 DESC 'Puppet hiera json'
143 EQUALITY octetStringMatch
144 SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
145
146objectclass ( ImmaeobjectClass:8 NAME 'immaePuppetClass'
147 DESC 'Expansion of the existing object classes for Puppet'
148 SUP top AUXILIARY
149 MUST ( immaePuppetJson )
150 )
151
152attributetype (ImmaeattributeType:19 NAME 'immaeTaskId'
153 DESC 'Taskwarrior server Org:Name:Key'
154 EQUALITY caseIgnoreMatch
155 SUBSTR caseIgnoreSubstringsMatch
156 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
157
158objectclass ( ImmaeobjectClass:9 NAME 'immaeTaskClass'
159 DESC 'Expansion of the existing object classes for Task'
160 SUP top AUXILIARY
161 MUST ( immaeTaskId )
162 )
163
164# Peertube uid
165attributetype ( ImmaeattributeType:20 NAME 'immaePeertubeId'
166 DESC 'login for Peertube'
167 EQUALITY caseIgnoreMatch
168 SUBSTR caseIgnoreSubstringsMatch
169 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
170
171objectclass ( ImmaeobjectClass:10 NAME 'immaePeertubeClass'
172 DESC 'Expansion of the existing object classes for peertube'
173 SUP top AUXILIARY
174 MUST ( immaePeertubeId ) )
175
176
177# Last:
178# attributetype ( ImmaeattributeType:20 NAME 'immaePeertubeId'
179# 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 @@
15 "type": "github" 15 "type": "github"
16 } 16 }
17 }, 17 },
18 "my-lib": {
19 "inputs": {
20 "nixpkgs": "nixpkgs"
21 },
22 "locked": {
23 "narHash": "sha256-HGNP1eH7b42BxViYx/F3ZPO9CM1X+5qfA9JoP2ArN+s=",
24 "path": "../../lib",
25 "type": "path"
26 },
27 "original": {
28 "path": "../../lib",
29 "type": "path"
30 }
31 },
32 "nix-lib": {
33 "locked": {
34 "lastModified": 1632955135,
35 "narHash": "sha256-MyOBftnLv5UcPCL4AzvlyNEDwGD2cGGM9HMEOno/MZw=",
36 "owner": "NixOS",
37 "repo": "nixpkgs",
38 "rev": "a4d96cd808f13d924988938ecf9a46b2a2787fa3",
39 "type": "github"
40 },
41 "original": {
42 "owner": "NixOS",
43 "repo": "nixpkgs",
44 "type": "github"
45 }
46 },
47 "nixpkgs": { 18 "nixpkgs": {
48 "locked": { 19 "locked": {
49 "lastModified": 1631570365, 20 "lastModified": 1631570365,
@@ -59,28 +30,14 @@
59 "type": "github" 30 "type": "github"
60 } 31 }
61 }, 32 },
62 "nixpkgs_2": {
63 "locked": {
64 "lastModified": 1631570365,
65 "narHash": "sha256-vc6bfo0hijpicdUDiui2DvZXmpIP2iqOFZRcpMOuYPo=",
66 "owner": "NixOS",
67 "repo": "nixpkgs",
68 "rev": "df7113c0727881519248d4c7d080324e0ee3327b",
69 "type": "github"
70 },
71 "original": {
72 "owner": "NixOS",
73 "repo": "nixpkgs",
74 "type": "github"
75 }
76 },
77 "paste": { 33 "paste": {
78 "inputs": { 34 "inputs": {
79 "flake-utils": "flake-utils", 35 "flake-utils": "flake-utils",
80 "nixpkgs": "nixpkgs_2" 36 "nixpkgs": "nixpkgs"
81 }, 37 },
82 "locked": { 38 "locked": {
83 "narHash": "sha256-2ylI42ZHfzW6oCsxfFyHf5zVnDsPMwvJCACtcdErtPg=", 39 "lastModified": 1,
40 "narHash": "sha256-a6rqBy5/ePeKhqag8K7FtOHpYLur3Z6Yzk7uCqH522A=",
84 "path": "../../paste", 41 "path": "../../paste",
85 "type": "path" 42 "type": "path"
86 }, 43 },
@@ -91,8 +48,6 @@
91 }, 48 },
92 "root": { 49 "root": {
93 "inputs": { 50 "inputs": {
94 "my-lib": "my-lib",
95 "nix-lib": "nix-lib",
96 "paste": "paste" 51 "paste": "paste"
97 } 52 }
98 } 53 }
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 @@
1{ 1{
2 inputs.paste = { 2 inputs.paste.url = "path:../../paste";
3 path = "../../paste";
4 type = "path";
5 };
6 inputs.my-lib = {
7 path = "../../lib";
8 type = "path";
9 };
10 inputs.nix-lib.url = "github:NixOS/nixpkgs";
11 3
12 description = "Private configuration for paste"; 4 description = "Private configuration for paste";
13 outputs = { self, my-lib, nix-lib, paste }: 5 outputs = { self, paste }: {
14 let 6 nixosModule = self.nixosModules.paste;
15 cfg = name': { config, lib, pkgs, name, ... }: { 7 nixosModules.paste = { ... }: {
16 imports = [ 8 imports = [
17 (my-lib.lib.withNarKey paste "nixosModule") 9 paste.nixosModule
18 ]; 10 ];
19 config = lib.mkIf (name == name') { 11 config = {
20 services.paste = { 12 services.paste = {
21 enable = true; 13 enable = true;
22 webDirectory = "/paste"; 14 webDirectory = "/paste";
23 };
24 }; 15 };
25 }; 16 };
26 in 17 };
27 paste.outputs // 18 };
28 { nixosModules = paste.nixosModules or {} // nix-lib.lib.genAttrs ["eldiron"] cfg; };
29} 19}
30 20
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 @@
32 }, 32 },
33 "myuids": { 33 "myuids": {
34 "locked": { 34 "locked": {
35 "dir": "flakes/myuids", 35 "lastModified": 1,
36 "lastModified": 1628207001, 36 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
37 "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=", 37 "path": "../myuids",
38 "ref": "master", 38 "type": "path"
39 "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
40 "revCount": 865,
41 "type": "git",
42 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
43 }, 39 },
44 "original": { 40 "original": {
45 "dir": "flakes/myuids", 41 "path": "../myuids",
46 "type": "git", 42 "type": "path"
47 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
48 } 43 }
49 }, 44 },
50 "myuids_2": { 45 "myuids_2": {
51 "locked": { 46 "locked": {
52 "dir": "flakes/myuids", 47 "lastModified": 1,
53 "lastModified": 1628207001, 48 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
54 "narHash": "sha256-7e12OfDv9zMOfqcAlsk1sZj2l3ZB03kcBdWUqhwVaWo=", 49 "path": "../myuids",
55 "ref": "master", 50 "type": "path"
56 "rev": "dfe02d8fd52e33c7d4e1a209cf486696100b88f3",
57 "revCount": 865,
58 "type": "git",
59 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
60 }, 51 },
61 "original": { 52 "original": {
62 "dir": "flakes/myuids", 53 "path": "../myuids",
63 "type": "git", 54 "type": "path"
64 "url": "https://git.immae.eu/perso/Immae/Config/Nix.git"
65 } 55 }
66 }, 56 },
67 "nixpkgs": { 57 "nixpkgs": {
@@ -97,12 +87,13 @@
97 "peertube": { 87 "peertube": {
98 "flake": false, 88 "flake": false,
99 "locked": { 89 "locked": {
100 "lastModified": 1610436329, 90 "lastModified": 1611184594,
101 "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=", 91 "narHash": "sha256-1N59Dmo9zny+bZWRPiR7fXConECAw9OFcVIWMp2wois=",
102 "owner": "Chocobozzz", 92 "ref": "gitolite_local/open_instance",
103 "repo": "PeerTube", 93 "rev": "f49b8d9b697f098490e81ce0afd889ba37dcb2f3",
104 "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86", 94 "revCount": 6316,
105 "type": "github" 95 "type": "git",
96 "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git"
106 }, 97 },
107 "original": { 98 "original": {
108 "owner": "Chocobozzz", 99 "owner": "Chocobozzz",
@@ -114,21 +105,21 @@
114 "peertube_2": { 105 "peertube_2": {
115 "flake": false, 106 "flake": false,
116 "locked": { 107 "locked": {
117 "lastModified": 1611184594, 108 "lastModified": 1610436329,
118 "narHash": "sha256-1N59Dmo9zny+bZWRPiR7fXConECAw9OFcVIWMp2wois=", 109 "narHash": "sha256-bIXt5bQiBBlNDFXYzcdQA8qp4nse5epUx/XQOguDOX8=",
119 "ref": "gitolite_local/syden", 110 "owner": "Chocobozzz",
120 "rev": "f49b8d9b697f098490e81ce0afd889ba37dcb2f3", 111 "repo": "PeerTube",
121 "revCount": 6316, 112 "rev": "69e0e678beb7f1a3b6753eeff585a14f9a61ea86",
122 "type": "git", 113 "type": "github"
123 "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git"
124 }, 114 },
125 "original": { 115 "original": {
126 "ref": "gitolite_local/syden", 116 "owner": "Chocobozzz",
127 "type": "git", 117 "ref": "v3.0.1",
128 "url": "https://git.immae.eu/github/Chocobozzz/PeerTube.git" 118 "repo": "PeerTube",
119 "type": "github"
129 } 120 }
130 }, 121 },
131 "peertube_origin": { 122 "peertube_open_instance": {
132 "inputs": { 123 "inputs": {
133 "flake-utils": "flake-utils", 124 "flake-utils": "flake-utils",
134 "myuids": "myuids", 125 "myuids": "myuids",
@@ -136,16 +127,17 @@
136 "peertube": "peertube" 127 "peertube": "peertube"
137 }, 128 },
138 "locked": { 129 "locked": {
139 "narHash": "sha256-ESrcCrx7QmNk8MHgws9KrPEZqIxKNQ6bcshbUPj9u88=", 130 "lastModified": 1,
140 "path": "../../peertube", 131 "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
132 "path": "./../../peertube",
141 "type": "path" 133 "type": "path"
142 }, 134 },
143 "original": { 135 "original": {
144 "path": "../../peertube", 136 "path": "./../../peertube",
145 "type": "path" 137 "type": "path"
146 } 138 }
147 }, 139 },
148 "peertube_syden": { 140 "peertube_origin": {
149 "inputs": { 141 "inputs": {
150 "flake-utils": "flake-utils_2", 142 "flake-utils": "flake-utils_2",
151 "myuids": "myuids_2", 143 "myuids": "myuids_2",
@@ -153,19 +145,20 @@
153 "peertube": "peertube_2" 145 "peertube": "peertube_2"
154 }, 146 },
155 "locked": { 147 "locked": {
156 "narHash": "sha256-ESrcCrx7QmNk8MHgws9KrPEZqIxKNQ6bcshbUPj9u88=", 148 "lastModified": 1,
157 "path": "../../peertube", 149 "narHash": "sha256-l+XpuMrH6I51hk37REAPVSLlbvCdad3kcDGioodzPR4=",
150 "path": "./../../peertube",
158 "type": "path" 151 "type": "path"
159 }, 152 },
160 "original": { 153 "original": {
161 "path": "../../peertube", 154 "path": "./../../peertube",
162 "type": "path" 155 "type": "path"
163 } 156 }
164 }, 157 },
165 "root": { 158 "root": {
166 "inputs": { 159 "inputs": {
167 "peertube_origin": "peertube_origin", 160 "peertube_open_instance": "peertube_open_instance",
168 "peertube_syden": "peertube_syden" 161 "peertube_origin": "peertube_origin"
169 } 162 }
170 } 163 }
171 }, 164 },
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 @@
1{ 1{
2 description = "Patched peertube"; 2 description = "Patched peertube";
3 inputs.peertube_origin = { 3 inputs.peertube_origin = {
4 path = "../../peertube"; 4 url = "path:./../../peertube";
5 type = "path";
6 }; 5 };
7 inputs.peertube_syden = { 6 inputs.peertube_open_instance = {
8 path = "../../peertube"; 7 url = "path:./../../peertube";
9 type = "path";
10 inputs.peertube = { 8 inputs.peertube = {
11 url = "https://git.immae.eu/github/Chocobozzz/PeerTube.git"; 9 url = "https://git.immae.eu/github/Chocobozzz/PeerTube.git";
12 ref = "gitolite_local/syden"; 10 ref = "gitolite_local/open_instance";
13 flake = false; 11 flake = false;
14 type = "git"; 12 type = "git";
15 }; 13 };
16 }; 14 };
17 15
18 outputs = { self, peertube_origin, peertube_syden }: { 16 outputs = { self, peertube_origin, peertube_open_instance }: {
19 overlays = { 17 overlays = {
20 peertube_syden = final: prev: { peertube_syden = peertube_syden.defaultPackage."${final.system}"; }; 18 peertube_open_instance = final: prev: { peertube_open_instance = peertube_open_instance.defaultPackage."${final.system}"; };
21 peertube_origin = final: prev: { peertube_origin = peertube_origin.defaultPackage."${final.system}"; }; 19 peertube_origin = final: prev: { peertube_origin = peertube_origin.defaultPackage."${final.system}"; };
22 }; 20 };
23 packages.x86_64-linux.peertube = peertube_origin.packages.x86_64-linux.peertube; 21 packages.x86_64-linux.peertube = peertube_origin.packages.x86_64-linux.peertube;
24 packages.x86_64-linux.peertube_syden = peertube_syden.packages.x86_64-linux.peertube; 22 packages.x86_64-linux.peertube_open_instance = peertube_open_instance.packages.x86_64-linux.peertube;
25 defaultPackage.x86_64-linux = peertube_origin.defaultPackage.x86_64-linux; 23 defaultPackage.x86_64-linux = peertube_origin.defaultPackage.x86_64-linux;
26 nixosModule = peertube_origin.nixosModule; 24 nixosModule = peertube_origin.nixosModule;
27 }; 25 };
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 @@
1{
2 "nodes": {
3 "flake-utils": {
4 "locked": {
5 "lastModified": 1648297722,
6 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
7 "owner": "numtide",
8 "repo": "flake-utils",
9 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
10 "type": "github"
11 },
12 "original": {
13 "owner": "numtide",
14 "repo": "flake-utils",
15 "type": "github"
16 }
17 },
18 "nixpkgs": {
19 "flake": false,
20 "locked": {
21 "lastModified": 1596265691,
22 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
23 "owner": "NixOS",
24 "repo": "nixpkgs",
25 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
26 "type": "github"
27 },
28 "original": {
29 "owner": "NixOS",
30 "repo": "nixpkgs",
31 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
32 "type": "github"
33 }
34 },
35 "nixpkgs-4": {
36 "flake": false,
37 "locked": {
38 "lastModified": 1646497237,
39 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
40 "owner": "NixOS",
41 "repo": "nixpkgs",
42 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
43 "type": "github"
44 },
45 "original": {
46 "owner": "NixOS",
47 "repo": "nixpkgs",
48 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
49 "type": "github"
50 }
51 },
52 "root": {
53 "inputs": {
54 "flake-utils": "flake-utils",
55 "nixpkgs": "nixpkgs",
56 "nixpkgs-4": "nixpkgs-4"
57 }
58 }
59 },
60 "root": "root",
61 "version": 7
62}
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 @@
1{
2 description = "Php old versions";
3 inputs.flake-utils.url = "github:numtide/flake-utils";
4 inputs.nixpkgs = {
5 url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
6 flake = false;
7 };
8 inputs.nixpkgs-4 = {
9 url = "github:NixOS/nixpkgs/062a0c5437b68f950b081bbfc8a699d57a4ee026";
10 flake = false;
11 };
12 outputs = { self, nixpkgs, nixpkgs-4, flake-utils }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
13 let
14 pkgs = import nixpkgs { inherit system; overlays = []; };
15 in rec {
16 packages = {
17 php72 = pkgs.php72;
18 php73 = pkgs.php73;
19 php74 = (import nixpkgs-4 { inherit system; overlays = []; }).php74;
20 cryptpad = (import nixpkgs-4 { inherit system; overlays = []; }).cryptpad;
21 python37 = (import nixpkgs-4 { inherit system; overlays = []; }).python37;
22 python37Packages = (import nixpkgs-4 { inherit system; overlays = []; }).python37Packages;
23 telegram-purple = (import nixpkgs-4 { inherit system; overlays = []; }).telegram-purple;
24 };
25 defaultPackage = packages.php73;
26 legacyPackages = packages;
27 }) // rec {
28 overlays = {
29 php = final: prev: {
30 php72 = self.packages."${final.system}".php72;
31 php73 = self.packages."${final.system}".php73;
32 php74 = self.packages."${final.system}".php74;
33 cryptpad = self.packages."${final.system}".cryptpad;
34 python37 = self.packages."${final.system}".python37;
35 telegram-purple = self.packages."${final.system}".telegram-purple;
36 };
37 };
38 overlay = overlays.php;
39 };
40}
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 @@
1{
2 "nodes": {
3 "environment": {
4 "locked": {
5 "lastModified": 1,
6 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
7 "path": "../environment",
8 "type": "path"
9 },
10 "original": {
11 "path": "../environment",
12 "type": "path"
13 }
14 },
15 "root": {
16 "inputs": {
17 "environment": "environment",
18 "secrets": "secrets"
19 }
20 },
21 "secrets": {
22 "locked": {
23 "lastModified": 1,
24 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
25 "path": "../../secrets",
26 "type": "path"
27 },
28 "original": {
29 "path": "../../secrets",
30 "type": "path"
31 }
32 }
33 },
34 "root": "root",
35 "version": 7
36}
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 @@
1{
2 inputs.environment.url = "path:../environment";
3 inputs.secrets.url = "path:../../secrets";
4 outputs = { self, environment, secrets }: {
5 nixosModule = self.nixosModules.ssh;
6 nixosModules.ssh = { lib, pkgs, config, ... }:
7 let
8 cfg = config.myServices.ssh;
9 in
10 {
11 imports = [
12 environment.nixosModule
13 secrets.nixosModule
14 ];
15 options.myServices.ssh = let
16 module = lib.types.submodule {
17 options = {
18 vars = lib.mkOption {
19 type = lib.types.attrsOf lib.types.lines;
20 default = {};
21 description = ''
22 variables to interpolate in the script. A `name_` prefix will be prepended
23 '';
24 };
25 snippet = lib.mkOption {
26 type = lib.types.lines;
27 description = ''
28 Snippet to use
29 '';
30 };
31 dependencies = lib.mkOption {
32 type = lib.types.listOf lib.types.package;
33 default = [];
34 description = ''
35 Dependencies of the package
36 '';
37 };
38 };
39 };
40 in {
41 modules = lib.mkOption {
42 type = lib.types.attrsOf module;
43 default = {};
44 description = ''
45 List of modules to enable
46 '';
47 };
48 };
49 config = lib.mkIf (builtins.length (builtins.attrValues cfg.modules) > 0) {
50
51 services.openssh.extraConfig = ''
52 AuthorizedKeysCommand /etc/ssh/ldap_authorized_keys
53 AuthorizedKeysCommandUser nobody
54 '';
55
56 secrets.keys."ssh-ldap" = {
57 user = "nobody";
58 group = "nogroup";
59 permissions = "0400";
60 text = config.myEnv.sshd.ldap.password;
61 };
62 secrets.keys."ssh-psql" = {
63 user = "nobody";
64 group = "nogroup";
65 permissions = "0400";
66 text = config.myEnv.sshd.psql.password;
67 };
68 system.activationScripts.sshd = {
69 deps = [ "secrets" ];
70 text = ''
71 install -Dm400 -o nobody -g nogroup -T ${config.secrets.fullPaths."ssh-ldap"} /etc/ssh/ldap_password
72 install -Dm400 -o nobody -g nogroup -T ${config.secrets.fullPaths."ssh-psql"} /etc/ssh/psql_password
73 '';
74 };
75 # ssh is strict about parent directory having correct rights, don't
76 # move it in the nix store.
77 environment.etc."ssh/ldap_authorized_keys" = let
78 deps = lib.lists.unique (
79 [ pkgs.which pkgs.openldap pkgs.stdenv.shellPackage pkgs.gnugrep pkgs.gnused pkgs.coreutils pkgs.postgresql ]
80 ++ lib.flatten (map (v: v.dependencies) (builtins.attrValues cfg.modules))
81 );
82 vars = lib.concatMapAttrs (n: v: (
83 lib.mapAttrs' (n': lib.nameValuePair "${n}_${n'}") v.vars
84 )) cfg.modules;
85 fullScript = pkgs.runCommand "ldap_authorized_keys" (vars // {
86 snippets = builtins.concatStringsSep "\n" (map (v: v.snippet) (builtins.attrValues cfg.modules));
87 }) ''
88 substituteAll ${./ldap_authorized_keys.sh} $out
89 # Second call for the included snippets
90 substituteAllInPlace $out
91 chmod a+x $out
92 '';
93 ldap_authorized_keys = pkgs.runCommand "ldap_authorized_keys" {
94 buildInputs = [ pkgs.makeWrapper ];
95 } ''
96 makeWrapper "${fullScript}" "$out" --prefix PATH : ${lib.makeBinPath deps}
97 '';
98 in {
99 enable = true;
100 mode = "0755";
101 user = "root";
102 source = ldap_authorized_keys;
103 };
104 };
105 };
106 };
107}
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 @@
1#!/usr/bin/env bash
2
3LDAPSEARCH=ldapsearch
4KEY="immaeSshKey"
5LDAP_BIND="cn=ssh,ou=services,dc=immae,dc=eu"
6LDAP_PASS=$(cat /etc/ssh/ldap_password)
7LDAP_HOST="ldap://ldap.immae.eu"
8LDAP_BASE="dc=immae,dc=eu"
9USER_LDAP_BASE="ou=users,dc=immae,dc=eu"
10
11PSQL_BASE="immae"
12PSQL_HOST="localhost"
13PSQL_USER="immae_auth_read"
14PSQL_PASS=$(cat /etc/ssh/psql_password)
15
16suitable_for() {
17 type_for="$1"
18 key="$2"
19
20 if [[ $key != *$'\n'* ]] && [[ $key == ssh-* ]]; then
21 echo "$key"
22 else
23 key_type=$(cut -d " " -f 1 <<< "$key")
24
25 if grep -q "\b-$type_for\b" <<< "$key_type"; then
26 echo ""
27 elif grep -q "\b$type_for\b" <<< "$key_type"; then
28 echo $(sed -e "s/^[^ ]* //g" <<< "$key")
29 else
30 echo ""
31 fi
32 fi
33}
34
35clean_key_line() {
36 type_for="$1"
37 line="$2"
38
39 if [[ "$line" == $KEY::* ]]; then
40 # base64 keys should't happen, unless wrong copy-pasting
41 key=""
42 else
43 key=$(sed -e "s/^$KEY: *//" -e "s/ *$//" <<< "$line")
44 fi
45
46 suitable_for "$type_for" "$key"
47}
48
49ldap_search() {
50 $LDAPSEARCH -H $LDAP_HOST -ZZ -b $LDAP_BASE -D $LDAP_BIND -w "$LDAP_PASS" -x -o ldif-wrap=no -LLL "$@"
51}
52
53psql_search() {
54 PGPASSWORD="$PSQL_PASS" psql -U "$PSQL_USER" -h "$PSQL_HOST" -X -A -t -d "$PSQL_BASE" -c "$@"
55}
56
57ldap_keys() {
58 user=$1;
59 @snippets@
60}
61
62ldap_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 @@
1{
2 "nodes": {
3 "backports": {
4 "inputs": {
5 "flake-utils": "flake-utils",
6 "nixpkgs": "nixpkgs"
7 },
8 "locked": {
9 "lastModified": 1,
10 "narHash": "sha256-VewHWeZvwLvWVm2bMQk5UQ0G/HyO8X87BssvmbLWbrY=",
11 "path": "../../backports",
12 "type": "path"
13 },
14 "original": {
15 "path": "../../backports",
16 "type": "path"
17 }
18 },
19 "environment": {
20 "locked": {
21 "lastModified": 1,
22 "narHash": "sha256-rMKbM7fHqWQbI7y59BsPG8KwoDj2jyrvN2niPWB24uE=",
23 "path": "../environment",
24 "type": "path"
25 },
26 "original": {
27 "path": "../environment",
28 "type": "path"
29 }
30 },
31 "flake-parts": {
32 "inputs": {
33 "nixpkgs-lib": "nixpkgs-lib"
34 },
35 "locked": {
36 "lastModified": 1675295133,
37 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
38 "owner": "hercules-ci",
39 "repo": "flake-parts",
40 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
41 "type": "github"
42 },
43 "original": {
44 "owner": "hercules-ci",
45 "repo": "flake-parts",
46 "type": "github"
47 }
48 },
49 "flake-utils": {
50 "locked": {
51 "lastModified": 1667395993,
52 "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
53 "owner": "numtide",
54 "repo": "flake-utils",
55 "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
56 "type": "github"
57 },
58 "original": {
59 "owner": "numtide",
60 "repo": "flake-utils",
61 "type": "github"
62 }
63 },
64 "mypackages": {
65 "inputs": {
66 "flake-parts": "flake-parts",
67 "nixpkgs": "nixpkgs_2",
68 "webapps-ttrss": "webapps-ttrss"
69 },
70 "locked": {
71 "lastModified": 1,
72 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
73 "path": "../../mypackages",
74 "type": "path"
75 },
76 "original": {
77 "path": "../../mypackages",
78 "type": "path"
79 }
80 },
81 "myuids": {
82 "locked": {
83 "lastModified": 1,
84 "narHash": "sha256-HkW9YCLQCNBX3Em7J7MjraVEZO3I3PizkVV2QrUdULQ=",
85 "path": "../../myuids",
86 "type": "path"
87 },
88 "original": {
89 "path": "../../myuids",
90 "type": "path"
91 }
92 },
93 "nixpkgs": {
94 "locked": {
95 "lastModified": 1687502512,
96 "narHash": "sha256-dBL/01TayOSZYxtY4cMXuNCBk8UMLoqRZA+94xiFpJA=",
97 "owner": "NixOS",
98 "repo": "nixpkgs",
99 "rev": "3ae20aa58a6c0d1ca95c9b11f59a2d12eebc511f",
100 "type": "github"
101 },
102 "original": {
103 "owner": "NixOS",
104 "ref": "nixos-unstable",
105 "repo": "nixpkgs",
106 "type": "github"
107 }
108 },
109 "nixpkgs-lib": {
110 "locked": {
111 "dir": "lib",
112 "lastModified": 1675183161,
113 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
114 "owner": "NixOS",
115 "repo": "nixpkgs",
116 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
117 "type": "github"
118 },
119 "original": {
120 "dir": "lib",
121 "owner": "NixOS",
122 "ref": "nixos-unstable",
123 "repo": "nixpkgs",
124 "type": "github"
125 }
126 },
127 "nixpkgs_2": {
128 "locked": {
129 "lastModified": 1646497237,
130 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
131 "owner": "nixos",
132 "repo": "nixpkgs",
133 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
134 "type": "github"
135 },
136 "original": {
137 "owner": "nixos",
138 "repo": "nixpkgs",
139 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
140 "type": "github"
141 }
142 },
143 "root": {
144 "inputs": {
145 "backports": "backports",
146 "environment": "environment",
147 "mypackages": "mypackages",
148 "myuids": "myuids",
149 "secrets-public": "secrets-public"
150 }
151 },
152 "secrets-public": {
153 "locked": {
154 "lastModified": 1,
155 "narHash": "sha256-5AakznhrJFmwCD7lr4JEh55MtdAJL6WA/YuBks6ISSE=",
156 "path": "../../secrets",
157 "type": "path"
158 },
159 "original": {
160 "path": "../../secrets",
161 "type": "path"
162 }
163 },
164 "webapps-ttrss": {
165 "flake": false,
166 "locked": {
167 "lastModified": 1546759381,
168 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
169 "ref": "master",
170 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
171 "revCount": 9256,
172 "type": "git",
173 "url": "https://git.tt-rss.org/fox/tt-rss.git"
174 },
175 "original": {
176 "ref": "master",
177 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
178 "type": "git",
179 "url": "https://git.tt-rss.org/fox/tt-rss.git"
180 }
181 }
182 },
183 "root": "root",
184 "version": 7
185}
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 @@
1{
2 inputs.environment.url = "path:../environment";
3 inputs.secrets-public.url = "path:../../secrets";
4 inputs.mypackages.url = "path:../../mypackages";
5 inputs.myuids.url = "path:../../myuids";
6 inputs.backports.url = "path:../../backports";
7 outputs = { self, secrets-public, mypackages, backports, environment, myuids }: {
8 nixosModule = self.nixosModules.system;
9 nixosModules.system = { pkgs, lib, config, name, nodes, secrets, options, ... }:
10 {
11 imports = [
12 secrets.nixosModules.users-config-common
13 environment.nixosModule
14 secrets-public.nixosModule
15 ];
16 config = {
17 myEnv = import secrets.environment-file;
18 networking.hostName = name;
19 deployment.keys."vars.yml" = {
20 keyCommand = [ pkgs.stdenv.shell "-c" "cat ${secrets.vars-file}" ];
21 user = "root";
22 group = "root";
23 permissions = "0400";
24 };
25
26 networking.extraHosts = builtins.concatStringsSep "\n"
27 (lib.mapAttrsToList (n: v: "${lib.head v.config.hostEnv.ips.main.ip4} ${n}") nodes);
28
29 users.extraUsers.root.openssh.authorizedKeys.keys = [ config.myEnv.sshd.rootKeys.nix_repository ];
30 secrets.deleteSecretsVars = true;
31 secrets.gpgKeys = [
32 ./public_keys/Immae.pub
33 ];
34 secrets.secretsVars = "/run/keys/vars.yml";
35
36 services.openssh.enable = true;
37
38 nixpkgs.overlays =
39 builtins.attrValues mypackages.overlays ++
40 builtins.attrValues backports.overlays ++
41 [
42 (self: super: {
43 postgresql = self.postgresql_pam;
44 mariadb = self.mariadb_106.overrideAttrs(old: {
45 passthru = old.passthru // { mysqlVersion = "5.7"; };
46 });
47 }) # don’t put them as generic overlay because of home-manager
48 ];
49
50 services.journald.extraConfig = ''
51 #Should be "warning" but disabled for now, it prevents anything from being stored
52 MaxLevelStore=info
53 MaxRetentionSec=1year
54 '';
55
56 users.groups.acme.gid = myuids.lib.gids.acme;
57 users.users =
58 builtins.listToAttrs (map (x: lib.attrsets.nameValuePair x.name ({
59 isNormalUser = true;
60 home = "/home/${x.name}";
61 createHome = true;
62 linger = true;
63 # Enable in latest unstable homeMode = "755";
64 } // x)) (config.hostEnv.users pkgs))
65 // {
66 acme.uid = myuids.lib.uids.acme;
67 };
68 environment.systemPackages = [
69 pkgs.inetutils
70 pkgs.htop
71 pkgs.iftop
72 pkgs.bind.dnsutils
73 pkgs.httpie
74 pkgs.iotop
75 pkgs.whois
76 pkgs.ngrep
77 pkgs.tcpdump
78 pkgs.wireshark-cli
79 pkgs.tcpflow
80 pkgs.mitmproxy
81 pkgs.nmap
82 pkgs.p0f
83 pkgs.socat
84 pkgs.lsof
85 pkgs.psmisc
86 pkgs.openssl
87 pkgs.wget
88
89 pkgs.pv
90 pkgs.smartmontools
91
92 pkgs.git
93 pkgs.vim
94 pkgs.rsync
95 pkgs.strace
96 pkgs.sqlite
97
98 pkgs.jq
99 pkgs.yq
100 ];
101
102 users.mutableUsers = lib.mkDefault false;
103
104 systemd.services."vars.yml-key".enable = lib.mkForce false;
105 systemd.targets.maintenance = {
106 description = "Maintenance target with only sshd";
107 after = [ "network-online.target" "sshd.service" ];
108 requires = [ "network-online.target" "sshd.service" ];
109 unitConfig.AllowIsolate = "yes";
110 };
111
112 security.acme.acceptTerms = true;
113 security.acme.preliminarySelfsigned = true;
114
115 security.acme.certs = {
116 "${name}" = {
117 domain = config.hostEnv.fqdn;
118 };
119 };
120 security.acme.defaults = {
121 email = "ismael@bouya.org";
122 webroot = "/var/lib/acme/acme-challenges";
123 postRun = builtins.concatStringsSep "\n" [
124 (lib.optionalString config.services.nginx.enable "systemctl reload nginx.service")
125 ];
126 extraLegoRenewFlags = [ "--reuse-key" ];
127 keyType = lib.mkDefault "ec256"; # https://github.com/NixOS/nixpkgs/pull/83121
128 #extraLegoRunFlags = [ "--reuse-key" "--preferred-chain" "ISRG Root X1"];
129 #extraLegoRenewFlags = ["--preferred-chain" "ISRG Root X1"];
130 };
131
132 services.nginx = {
133 recommendedTlsSettings = true;
134 virtualHosts = {
135 "${config.hostEnv.fqdn}" = {
136 acmeRoot = config.security.acme.defaults.webroot;
137 useACMEHost = name;
138 forceSSL = true;
139 };
140 };
141 };
142
143 services.fail2ban.jails.DEFAULT = {
144 settings.bantime = "12h";
145 settings.findtime = "12h";
146 };
147 services.fail2ban = {
148 enable = true;
149 #findtime = "12h";
150 #bantime = "12h";
151 bantime-increment = {
152 enable = true; # Enable increment of bantime after each violation
153 formula = "ban.Time * math.exp(float(ban.Count+1)*banFactor)/math.exp(1*banFactor)";
154 #multipliers = "1 2 4 8 16 32 64";
155 maxtime = "168h"; # Do not ban for more than 1 week
156 overalljails = true; # Calculate the bantime based on all the violations
157 };
158 maxretry = 10;
159 ignoreIP = let
160 ip4s = lib.flatten (lib.mapAttrsToList (n: v: (lib.mapAttrsToList (n: v: v.ip4 or []) v.ips)) (config.myEnv.servers));
161 ip6s = lib.flatten (lib.mapAttrsToList (n: v: (lib.mapAttrsToList (n: v: v.ip6 or []) v.ips)) (config.myEnv.servers));
162 in
163 ip4s ++ ip6s;
164 };
165 };
166 };
167 };
168}
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 @@
1-----BEGIN PGP PUBLIC KEY BLOCK-----
2
3mQINBFvwA+gBEADlchQGPyI2M9RNRUsk8wsL9XLc8qAFWTYlVp5p7177ucxTQf6S
4rny9yRCF69UqtE0ugwt+432sAAsDPi7BRA/JE95bIRBiewOiY1jYiivccP5dR6Jr
558HJ3QOHYPekqZIQhxzCWjdD2nRhhCbbxeWFJsJyaG8idGBiLkgNKxEEmqE5LIat
6tzMpQFwOpL2FoYZ7+e4ZTMc+x+yqpOnGcQD1qwouqx68okSCjrVBWo5S2tK5AzzU
7X8esBLNpgkhpUEZVltiNc4bmj7GZPdy4+mvS33/HQTed8YpatCFVWzcK+/uK0SYE
8P8Hj1mguT9idBhAf+kv7qbTycrFkTBliP3oDNUoARWDmfQdV4nlxqW03QxUY18mL
9KPByduK3hEXAZnD+/8QfVzbNVVP+70/jdSB+ckF88Li2g4bv/9uqjaObKVJB9ocG
10EWslm1h7tvdCLBRgIl8b2+Zl0fComRAMuwUr+LYlWLnfygAi8Uy9hl7UcRWAAj99
11PG4ba0+y8eD8k1J2IE8HpeIzMzRwYTLtvLyJBvrKiQHJb1PGM5cS8iry81wjUPZm
12dO5p5rbC8z99w7UNMaiz6iqAFAaDyLLsBZ5gWD+1ps9XxCA0zf28Z/Tc/Gj4QKAf
13kpMd7lQ+gprsFyRtzcRD4WhsOL2ogKYFHYi4LE0GYduspGdQPlK/YfrKQwARAQAB
14tB9Jc21hZWwgQm91eWEgPGlzbWFlbEBib3V5YS5vcmc+iQJRBBMBCAA7AhsDBQsJ
15CAcCBhUKCQgLAgQWAgMBAh4BAheAFiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvw
16BU4CGQEACgkQyfztbKa3lFR/kA//cHVrb/RRTLQZy514vMkOBKgAk+dj+j0lrgvJ
17yR0JK1KjodduSoccPq7qRFAU+KVa3FsXMn8yY/lWaCXYJoF0DT5iEHsEuzJRc7Cn
18N4aq2h42DD7z8dJCXZvtvJs+vZ7G/rlLl322TjLb2OyIybBEoPOmJl0dVG0wKBFC
19r7EJmOKl3ytUWUpEbuxs1U/pP4GKrPT2CK3QcLF8JHKIPkEO347RorseeHcHhMxs
20Bz5JXojts1NyLJh7lErT42atgEdTGzSmkkGm8OifZVIH2rgmnRsPHnCqrXYsa7dE
21yPsC01Ns3DPYk4C5FtbpfiNvATbnkOicEwb2U55OpYUZLsFCKo7Bl+duJVY0nPRN
22WiLCALPcdJL+a6hbh1hSuqHt5eNGxyrDtRPowXRTS1D4nTCgAh6+wpH47xXWEwXZ
23mEnkXqHLIjsW4CSIz2gc+Bza40+wkWz6NQDEb3ncytDZu9vKK1CYwl7RGW4RFkAO
24j3FWZvZp8ETPLNRVy64BhZzHY3uOxbYreE+T6JfiIZux8X+Bh4cPJHizfhSMLLS5
25kwABzalaTD33XnjKn5wQ/DfGJ+fGbF54fMlGFjne5VTNwY1ju2ieXTgVrUyzfKPF
2696zcvnxo/MWwqcQ8+dXFCZjldP76puo1eVATEBeOCQs8Vj7eL9eN/eo+BfzhS3S8
27CfFFYWeIXQQQEQIAHRYhBNw4R0hwnSYZ/yhnIW0Mr/3bHP6QBQJb8AgDAAoJEG0M
28r/3bHP6Q/TsAnA6vTjmrX4nY3QnevNrKefWaQvf3AJ0TALTqXhTcVYVLxfzRt/Qd
29u5W2/rQvSXNtYWVsIEJvdXlhIChXb3JrKSA8aXNtYWVsLmJvdXlhQGZyZXRsaW5r
30LmNvbT6JAk4EEwEIADgWIQT4KAb9ob9bmhswFOfJ/O1spreUVAUCW/AFCwIbAwUL
31CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ/O1spreUVKlBD/sE/eDbJtL8UKc6
32CN7zmA038RSjxlcJrMRoBoThCFKOFtBsYLPebnIkzCDiUwQJaIMYe2RNBHKKz0p+
332Kvzf7q+xq8W1e72aK1DRhsBTL8/LA1kQkvh3GwMS8z3SOcbXLWqKQuQ7ztYReQG
34wsT2/S8reVM96eV67K9vMHKMDF3NyYZewahX0I44YIbQJfLVG5elCkBrfHjGSeIt
35tSAv56BhN8J8ky+9nGx5jwWmxc/4Oquyfe9Lf0NMTCjw1xess7UoHlzSMp57yF3T
36AaqDcqD2Jdgr2meN9Yo4/Yb9dEvHFy34ppXYanX1nrHGev7YaaQWLoKLVZc3f6gR
37+D7sEJUJm3IxO041CR7DBwQ1CQkx3sa66mcHxe+wchOoXBZdsqyl5Ds+zqh6eMyO
38UiixDcXDxZuimEY0/+7XjlFjtzhGVNKsjV/Azh+Hx3GZnGHMVpTw73qQFHkWeDrX
39FPUbinjtEVTxw0fS9PkDZB5ysgAWlXs2cqoNDMcbdyJn2xszbV5+vjlmcofsQZTr
40PiX+hB6P5RQP5ogtnotvbkPDSfPfqdUk5HjGFrGX08FoP4rCromHvSL6Un2lP4I2
41mJbbQzBU/bQUGzfz6U6VEbUHtOL+7woGuXuzTYsRZ/O7/fKohyi/+qsmOozQpLFN
42k5xocbF1PgpFphrKYpHaSkf6DS2/F4hdBBARAgAdFiEE3DhHSHCdJhn/KGchbQyv
43/dsc/pAFAlvwCAQACgkQbQyv/dsc/pDXWACeKMbL/Dtifpd466TqQP8isfWedtIA
44n2xbEmlpxG8yk0w4HQ4djwgY4RbutCpJc21hZWwgQm91eWEgPGlzbWFlbC5ib3V5
45YUBub3JtYWxlc3VwLm9yZz6JAk4EEwEIADgWIQT4KAb9ob9bmhswFOfJ/O1spreU
46VAUCW/AEawIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ/O1spreUVMGJ
47EAC5hKt5NCanRxEl13nQUu4+n05tdRl9C3sTczR8EUZ30zhpBV4chKgeJSD0r1VA
48zBSQHMNzroGawaQn38qxFtbcSmkGRDd+0y798x1HFHp+UFiYOdQDQJVsyDuwjq4k
49RF7zV+FBj0ffjn5JBy6R3wLmWCFxz1mPmkImdyyS8GEeifwTftC+SSotqfg1lh0K
50C+DSQGYtPk0jLvxVPRllnjltDOSPUt9xRE785I6E9oyYrCa5Om51e0eEMzwpkl4e
51QschAYILb6SNrVyEMRD5E3lJHD2r6dPvIPFNcLxIQuK/Kdco2jNq7dCL6ukdGI40
52j/oZi7XRrlFCQW321BuipJZ/7t9JWOXOrrEndQv+hOb6PeWkwF1rigjbQq+IipdJ
53DUXGBfiIzlpJM5tLhs7BGfLxYNn09rOpkotXrdBzRO62lYyRdQepKpD33v96bQV2
540w64U44+CxuicjGDw/6no54LY4J7bM1lLGwqvHSeqgYoc+Zs9WH95TNNSmaAHGSf
55An4LpzW5nOXbq2rsWVbZpvsVHz3VmC9qmpsYl5tT/ninkLta3tN6TrYUFHXcDWz9
56K+HW+/oARzEmN8eg3iMmWtOnV59YEr/x2vvOHndguUL0tUpRjwuTunH9KOGZE0Kb
57uI3ovgLLO2kCSGk4SdXlntu/eLq9FPYqlOpjM9CtLf9JdIhdBBARAgAdFiEE3DhH
58SHCdJhn/KGchbQyv/dsc/pAFAlvwCAQACgkQbQyv/dsc/pCHCQCfdPdGx0FmknAs
59rPvjuUmuCj9Q8xUAn32dsgQYTlgfTdwLSxWGj4mTD2h6tClJc21hZWwgQm91eWEg
60PGJvdXlhQHBoYXJlLm5vcm1hbGVzdXAub3JnPokCTgQTAQgAOBYhBPgoBv2hv1ua
61GzAU58n87Wymt5RUBQJb8ASdAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ
62EMn87Wymt5RU58QQALMGlOJzcQj/arHezum5H/PiYIpZ1yY+QMCzpSgPdwupwawW
63VN88aQRfU6k9xwmsU+Ghjreja09AuqYi/D2+61TM/Tmqi/9HdU6NRYw0hvaZnwFc
64vudFBII2XrxmU5k9PnSR6Sq4uLUGkXmvhJddV0q+cjtif+vDi5pl9mqbWBQY8d9S
655Q6ZFZPeEeASUK7Xt/tSq9iXpb1tQsmEJ94Czl5G+gNFJcqj7nlHQ1/c9XeNsvJT
66GZVLGM/cAZNzB6AC8Kz+iWUypFuXifC2PYGpJDJ8klqTmDQikGQtM1HMHda6rnwU
67L7JIfbuwGbMk65CtG2YE8QqB+/GIfkzWySenmIrldn9Vp5EKB0DD529TyOwQWgzz
68+HuVP/4QfkNRxNquWxlAPXmcNfV1SV+/Xn1KwSspb7QlAjiXXOL13J2dwYFpV+21
69vsSW5XqJXfWUU8d4YVOdq1kUTwLjWnWyxwtt8j68KSuTOT4JTA8oNXg87r0B4Fzr
706AoxCM8ePywm5IW55gNAwViTKWBAcNrcwRTP647oNOM5+8D7NZIBpnKffNc/S2S5
71iI1tmaM0yXavmCm0Hb7lkFIsxM2Y2lxwHexPck2ftPXIrjhPYLcFVBdLVx2V2yXe
72cFW2vMGZiasVobFqqp1g8htmAlTkN0cTDY7l96wDuirC6OeCbVomEgxQEd0MiF0E
73EBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/92xz+kHsv
74AJ4+zdfjTdO1FUWb42bWdPQfiFe9nACeMIRp1Iu3tNVJkfS9CGGqhrChpfu0LUlz
75bWFlbCBCb3V5YSA8aXNtYWVsLmJvdXlhLjA2QG5vcm1hbGVzdXAub3JnPokCTgQT
76AQgAOBYhBPgoBv2hv1uaGzAU58n87Wymt5RUBQJb8ASsAhsDBQsJCAcCBhUKCQgL
77AgQWAgMBAh4BAheAAAoJEMn87Wymt5RUxa8P/i7zdQ9i5BfWITbdyCgXNoQYIcE3
78J6lIa15eLUcfDcL707zOrUSbhSkthLjeqZoNRCalqjeDOdgCQC1PNoISdkMGd9PO
79VOwS3G7Pjt4FSjPVHyw9+Su57pwTcLXBhEyBAkv+tx/QrB/UBCFzPUnsl71QH51y
80T8+bNdOiBxssdgn/9IrObn7tu8xDf+d/yGsA493x+mxalai+fhd/t0yzQcdcTrvD
81EKRxAaU8wXe8oSwcW5cRmXIi+N4aEnLRO/so9YDGf4z2FQVSL0ktoZYMqZ1ZvIb0
82MNCNl2NgNXThhrAPk9Rhs+S5nRzazJ+tS+D2S728EPpRHpUE43+vewtCdu5c5NWd
83Lz88o/jxLwcNwQa2iJoFMyqr15lHt+vM7OyD9X650IJwQw24n4tF6TijzH5GhWcN
84SnB7RpLSkftQldpK/zK+tmFH4vVpv+bI3JKAfzRga+5Fu42kB5uHVzXF3qMwYgEO
85sRNL5d4xV4SATce1mb8vFpsQmGOWnZAcCaQYhLKfMl7zR5ukytTjf3hRMRH0GAjh
8606QAoBMJZhWosYehPi1odjTngIf6hFOqA5prz8Cu/AFe/8aftp9UorJOekAj2io0
87CENRv21qrN8R4bNo04aTMD6WrY+mBL8MteR0ooD3ENQEAZ6UUyZwTzUJk2UUl+5M
88ch/HgJ+rQozmRGYeiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AI
89BAAKCRBtDK/92xz+kPsmAJ4wGQ0Hly2eTVzsU8Ht4609Q5kf2wCdHGuu863a0GHv
90uUdEokzQEsumYPG0OElzbWFlbCBCb3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVy
91ZSkgPGlfYm91eWFAeWFob28uZnI+iQJOBBMBCAA4FiEE+CgG/aG/W5obMBTnyfzt
92bKa3lFQFAlvwBMkCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQyfztbKa3
93lFQTlxAAjbuDy3prdEBNMYfi/870MO5eeDOCMtiDJDae4fQjj2NANjeuDGNP659B
94/k9uS7o5nrWB7E6rdG4a1J+Qzj5I775xTP/zVbrNSchcLwSoHMMXBm2IdbIanCX0
95JX+dRg2YX6yX+6ZmL8UaWRVICQ84ZxGtYHZ8o8hMCFOuxFklNjYFEPciO9M9m+rv
96fUEihQgcBF7+x9KVntlxad61Aa9AzUJLULgY3snaZK687tHUq3yYwXpF9s1CuJ81
97SfZxH32dKqy+2cpJqwQ38BZrTUwjBxxIMR5TRC7h/O9aRIBKQZKlpLcmxWPv18i7
98DwWlrJVb2Sd2WUh+TwPNa7VQc3NjlGtu74SfZqmirE0FyuB86fnsQaF8zhJnRsqE
99lagnLoW24PCvc8A9TK95tj+0JO8DIeM49Gg+Br/NBtRB8q5q/ICJOREber6Ke+/I
100p90q5VkZafIgeuO+EkyQ6Dq+58NRqC2qEs209xnKOd6exxT+2tEzx6Hy0PKwaay3
101h8WzUamJOTqRv1WG4GmlCeRUQGx8BtdIAEMdww26cN8rmxh5Foh5CH+V75bcybkv
102yH+FBDoKFYSpEPg0axHM/e13/nujgLNnSTHuMf7ILvpwoNkkIcQwSpH17B5hZdgl
103y0xD7aIS5XU9OoP9mKs1unzUKerWQWY6CxgYOqpssyDTUG+fohuIXQQQEQIAHRYh
104BNw4R0hwnSYZ/yhnIW0Mr/3bHP6QBQJb8AgEAAoJEG0Mr/3bHP6QFPAAn3DbFqHo
105hjznqQvg15QjlGFaPJaaAJ4ps0+VWG9BN7UBQPG+fcCRwqLaVLQ0SXNtYWVsIEJv
106dXlhIChEb24ndCBjb250YWN0IG1lIHRoZXJlKSA8Ym91eWFAa3RoLnNlPokCTgQT
107AQgAOBYhBPgoBv2hv1uaGzAU58n87Wymt5RUBQJb8ATfAhsDBQsJCAcCBhUKCQgL
108AgQWAgMBAh4BAheAAAoJEMn87Wymt5RU2vAP/12b6S0yJdZ1rgNLj+ZohY36PhCm
10930/amkGPQp7HCBylYIRv+y5m4IdiqynzJoap547cFMWNsCyfyU2VKbcy1Uy44FCI
110PCUcBME95jD1JWviINDKqLhglciKlJnWUhupiolqFcr2ro+rJVc/fBMWJoBjM5fJ
1119eq1ge2LxuYKbu9cpSEtopk7ZBeo69khhrFACdZEqfJtW4qp0hEC0pAKLjN8LhpQ
112EEVcq4zejksB+1e1qkuJ6be3/Q2Sj+1ijaJBElJIVJ8qyYs9XSlTlUA1USfy3Yqu
113jOkFrIaycxYgKooFgwYfYXCniuqXWZ2geCm2IE90lanQC2w7ZDN/JGwwVuAFVi4H
114Mrx6x/yEreqy2AUMesB1eGxqQQG9cgssMLoMAN2IDDJ6FS+e0imWTTMZ6r3ou9W8
115+pFzSIT8LMnBNwp+RxrW3QzBs8sXDw5mS6WroiZMRlfJdA1sUPsrW0GV4/AFuEaK
116PhCUvIvoh6zxYR0lA/gYqtszCHGzHeNLoczOhytUZM+KQpOtO3TSING/+o59HHuM
117niD6k3mWcyk6MkSgIXquJRGUVGVFeLGlXXf7aWEkIOrXeqjBZpBchZUIxZfkg100
118xxmEgNVGG4vxB/UIGeVqV2S4JscJmCyDGs130nRp7Qp5YGfkaTLKyOdutssrqatP
119m5Zcjl2VGr4Xt4uXiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AI
120BAAKCRBtDK/92xz+kEViAJ9zBTPNNTYIxPxt8BEvb3pUDeZkiQCffsDGKi7kdlTj
121oZ26K7yxdjexaYS0OUlzbWFlbCBCb3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVy
122ZSkgPGJvdXlhQG1lY2gua3RoLnNlPokCTgQTAQgAOBYhBPgoBv2hv1uaGzAU58n8
1237Wymt5RUBQJb8ATwAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEMn87Wym
124t5RUIzgP/0/7+y7UOgj4Yja6Lwa+Lm7ESRZnbVmR1ERSAa9RKKr8BbPT4KhgwN2R
125x8c3CedFupS02sG1G57u+4qQbEeZylaMu6rusf/XyQ+esh06cRXfR7Vb2d14yFQg
126xun9PgPR7jL0RiU2fsgvF6O+u9KwnGRmABZXILDBxzGZBXKBIkmqBM8+rBkXFVWc
127gezZqD106KcuGewciuWM7bfyLj+2yV9GhvX8iRyptgkx9/CNEdOqQzKYEbXVTSkh
128tUW4QUmNnIiTnD/pZ4kr3UsQV6y0GC1kf9G5EeQHbD+kVROFM0/sX6qGn99IeC+j
12996MflMnKuXJeXjlxNFZIYPoolBAC7CvpRfdky5q0KB2xWh+x2jQbn3fPpa6lVZdQ
130De14guXdcEsj1QVUMRL3wFCDwHIsi3gqOpCHdy5GmunFRNqUWmoGU+uHt3Kk031w
131DJdQY4YP+8tFWLPG3vKoPSf5EcG2Mf0hZiWiiIAX8sVw13W+oDlAQ0HKah/uxV77
132gM2ScBiiiOr92JIf3ftq2AjMuzrGhpKME/wG2DdcOqmq7U+tcVbambSc7SVa5nTM
133JXm8ZPOSH0Fax1PULPd3pyLLhfF0rnPiDLcVa6UzG1MaSJiGBurIf3D3OCHRjQQ6
134kVpF9VtXhWeziV8wkyt66HNcuqUs6HDBNkpxPTNacKcZmW8J/FlaiF0EEBECAB0W
135IQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/92xz+kKOiAJ4shO9b
136nZ2Nx9XzBBg4C0nUl05LyQCbBpk7t2NIPMKaNtjsPb+RV5HbiQa0O0lzbWFlbCBC
137b3V5YSAoRG9uJ3QgY29udGFjdCBtZSB0aGVyZSkgPGlzbWFlbC5ib3V5YUBlbnMu
138ZnI+iQJOBBMBCAA4FiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvwBZYCGwMFCwkI
139BwIGFQoJCAsCBBYCAwECHgECF4AACgkQyfztbKa3lFRK1w//cqsweiuXGPepyn0t
140AL/S/scM6r9IwcjD3HrZqmUNSDAqU6PJ0FFialOPuSQIyEvrpY1GL+TiVtnYyAit
141sbotxNxNQFwiBvqchg6xd1ftpjJihuo7RysNdSNAnlOxFlEz9X+EGkRqq8rCTpoS
142GA9+4uFyFKzfv9CDg7YUVX5GVsE3bsPWymfCW1boW0TQyL7xNrDPfzKpVRHFu7hi
1435OghiTbHbifmIolj5Mo0hGuXxz26gFzrufCjgxK9ycW7LnHEnnK0zX8Qfueir8RV
144EisuAXtKILgS5mmOj0ywsrva4Qtf5JW5SKymhgsKCWskfz0lq6S6ceIKaYBr4Syk
1450MLI82M0zDfGlLuRP6yQ3DTiTC4lWfXHdjyd0w4SwcuAQPCWz34gtUEGfMTyrd6O
146le6pYreL1NPzd/NakYsR1H1fsXVJkgpESktoDIkzooLmBV6Pjr+PEt4DvPZYqgKl
147AyD+aZeZ5HlTZCLbN9O38nDttWdAvsGjq82qvNI8A/d2Vvz4L1ND6NT71+wtC2QT
148a95epSBD64l/JtK99SW/HjLjyvV9O+Nu2p8ESTOEaQhyIudnWYU+er+Vwy7YtLvY
149y8L9/Xu9KvlBMjHBXAAV047KwkIQNrNyoTla5yQFSpv57hFYbx5CKTprpsl9Ic4v
150uPjC/GMgkAJ3yTwIgxa47hgUAtKIXQQQEQIAHRYhBNw4R0hwnSYZ/yhnIW0Mr/3b
151HP6QBQJb8AgEAAoJEG0Mr/3bHP6QyCcAnRuTQIMOpwxbyzjj+t0C9GdNJYmGAJ9v
1525c5kvNCFiJAFCbUD4OxJBNA28rQ9SXNtYWVsIEJvdXlhIChEb24ndCBjb250YWN0
153IG1lIHRoZXJlKSA8Ym91eWFAbWF0aC5qdXNzaWV1LmZyPokCTgQTAQgAOBYhBPgo
154Bv2hv1uaGzAU58n87Wymt5RUBQJb8AW0AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4B
155AheAAAoJEMn87Wymt5RUaT8P/2OvKAfgqu0zQX0JhKu/wd9AATVmLa8C48JPQMUn
1565Z9dQyDcFyKKfKbGCz9B5jTOrzHNX0VJfpDujOTiPIk6ci0KqAJ3Fz0gdpxIcEoW
157B2zg0nwDtGHsGMX8togpcbVgKqblp0XSsMAFV2FN5PsAnxkqdXPDmZ5iZSgs9roi
1589nxHPavbcr1cSAjsiRoFxFudzo7Q0Z/KLRlTuTSAX6B+vRAeyRB4NcXThKYZlAi6
159cr+xXTvPFddiQZgVBT+ICZRQY0gwgHpQcj70fNx1w6tTHfThlxInojKGlreOZov9
160A4TVeex/QagVTsjRAQuZ9yLMkx7JxakAxBPZ/OHuv7/K1Qdx90AJ8zQZ6uOXpUNl
161c2MDEBoTI/nbsgMeHI/Mj4ndxCBUMperZ1oCITl+AhaqEZ+LxTKyne41YJedlqjc
1625xnUVigz4ajmZPYmbO6eRDxisx4fMG7hI2HnNWak2xBDVOp1z2aqZY0xsG7o697d
163I9BeR9JxbIusx0Szq6GabwI5beEI1xLlT333Fe3XDtT0NIQQvW9byuYuyfp7H6Xm
164hFj2ut7jVI9xG932sJ8ioRJGCK1UcGYEL0ei4YZRv+mVysEJFjki2nlxspnG4C/V
165Q20jXnLAXOpKLiStkNJ15WsnzeoL4eq0AUOYMMmYKAquXXgpVs+xUDv6XathWA2v
166oZkAiF0EEBECAB0WIQTcOEdIcJ0mGf8oZyFtDK/92xz+kAUCW/AIBAAKCRBtDK/9
1672xz+kEBpAJ4x7hASmdnDcyFGTyuRHj6NwsDtNwCfRVfqoiRcGmvDRA8U25cPk5XT
168ZYTRzlXOUwEQAAEBAAAAAAAAAAAAAAAA/9j/4AAQSkZJRgABAQEASABIAAD/2wBD
169AAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcp
170LDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIy
171MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACMAG4D
172AREAAhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAABgcEBQACAwEI/8QAQhAAAQIE
173BAIGBgYIBwEAAAAAAQIDAAQFEQYSITFBURMUImFxsQcjMoGRwUJDUmJjchUlNTaC
174odHwFiYzc4OS4bL/xAAZAQADAQEBAAAAAAAAAAAAAAAAAQIDBAX/xAAgEQEBAAID
175AQEBAQEBAAAAAAAAAQIRAyExQRJREyIy/9oADAMBAAIRAxEAPwB2JHaECEjiPGA4
1766GA3kMMgDy8AZAGQAp8XD/Nc5+VP/wAiJT9GeBv3e/5VQ4cEu8M3sAZAGQBFT7Qh
177JSOUBt4DZYww8O0AeQB5cc4AgzNXk5dfRh1Dj1r9Ghab/wAzpE3KQFdiSotTGIph
1784trQFpAFyDwtwjO8mqqYbHeByDQNCD61R0jTGyzcTrQmigyAMsYAyxgCtTNt5hqI
179SUnrKOYgN06yjnCVtnWUc4BtyenmWGVuurSlttJUpR2AGpMGyKbEHpZm3ulapLSW
180GTcIdWm6yOZ1sIj92q0Cf8UVp2Y6b9IOIVtZkkD366xOzkjujFc83mROKZcCjc9M
181kE/1hbV+Yq1VhC3TkUEKvcWNxE6UY3o4xKpueVIuKGRaSoWO5GsXhdXSM59Nhucb
182cbStJFlAEeEa7Q26yj7UPdJ71pv7Qhboedab+0Iexsu2p2ZuD0sJltZom5gkEuaQ
183jldxMPkZuk0gW2E05cetgIvfSJihZY/RcvODKpXr0NntKA4HkCeHdEWrkLBc67fK
184EoF+Khc/CEuMYZn5tYyMFwX0KQRbwtCtkXMbUk4eqBKgpC9eYN4n9xf+Vczh+fYv
185maUoDUHlD/cF47EmlTz0hPtFalsrQsdoGxtx1hs7DpolaTO5JZl7sdHmZPNKbAjx
186Fx7jFY34ys+rcl4/XGL0jbVQmODpgsG2JD/F1UVIVqmRKgcT8YbNcy8qOrqO/ZiL
1876uRLTKAU8WGloF/A3WpgUqjTc8gjOy0Si+2bYQr1C9pAzM469NOuKdUpxxRN766x
188LUXYWw6mYbEw+m9zpeMc8/kdPHh/THp9LaYQAlCR4CMvXRNLASSCbqSOUGha0ekW
189ym2QW8INBRVbCkjUJJ1BbCHCLpcA1SeBiscrEZ4ygLD1XmaFXUNzCypcutSSgnTX
190Q2jbf2OTLH5TvkHGpuVbfTey0hWpvvHRjdxzWdrJiXSraHRi1cZQlVjDhUFGqNgX
191zDaCxAtpjgepRcHFMQvHxaNIzUoG30YF/Cl9JM0sYVW2nNZb6EqI5an5ROXgw9LX
192DEiieniVpBCNLGMuTLUdPHNmzTpdEu2lKUgJHARzW9uqToQy1iBDhpRtaKJ4bFO0
193A+oTygLxKiXxS2WMSqWNFGyzaN8L/wAuXlnY9whWn2qX0SyS2k3bJ5co14/45uXX
194pjYYnOvpcUdcpt/KNazxaVWotys8W1HWwMBX0s0yM8sWyDbTtCK2z0ZNBys0INPO
195thwIsRmEQ0x8XLEzLimhBfazBNvaEJfwtMeU0PYXnCVIOSzicqrm4MK+Fj6XeBmg
1963LuuH2s9o5+V2cRgsz7DashKlHiEi8YadMqwYr9NS4lourSs8FIMVoerxDzTiLg7
197xW4WkWZqkhK9mYm2m1HYKO8IIipyXmFXYeQsDkYiztW+iwxmwheJAyDYrQlV78yY
19834/HNy+jOkUZCqQyEzLbRCbZSNY6OOfXHyW0Y4TXK0lp1ExNt3Uq4+EXU49K3Eja
199ahVS/LTSMmQJhwspuhRc20nUz7dvGIDZmYbWq6ZtKtDteAK1AeW0XElwoG6glRA9
2008JfTkp7MhSOnGoI3MTlLpWNm44YdkhKiYlr3UHLE8zaObO7jswx1dLadROyqkplz
201kSsi6xwiJZb231Z4i081l0zJnnAgIUOg49IL8deWusVlMNdFj/pvsZ0guO0txbg9
202Yi4FuNoz1dKvoPrM1WOtN9Tlm3hm7YNiUjgf75ReEx13U5/rf/MWtPdmzNOMvNhS
203Uq7DgTa45wrZL0NWzsP4ukutYokg3bpFNpzC17gE8PCNuPxy8vq1ammGWg31lQt9
204wxvjLI5rd1IYdMySJdb7pG/RsqV8orsumrs0GHC286+2sbpUyoHygLcQQhpSkHKk
205gnlFMqaOHZdkUI2Zb9k/RETV4+L2ntNijpSEJtk2AhxfwAzbTIdc9UjQn6IgjOg8
206ASlaW1fTQ352J1jhynseljd2X+ixltuYbGZIULcYjTqk6Y9KtMsKUEITpuBBelad
2076SvNT1FI02EOeM/XPqMu+c/RpUR3awo0+OqZZtkWQkCFpNnSfhuiSk3PzFYdZSp6
208XXkaWe5JGngSfjHXwzp53PQfOPFM1Mg7dKoD4x0uQZejxZWzM34OfKFVYIGMr/pw
209AH6seZhxOXoClnCpSQf71gSbmHf2D/CYmrx8XdO/Y6b75YIv4AZ0WcdP3j5xTOl7
210UOtMYkPS3U0U5m1HdQO49x090cvLjJt18Wdup/BfSpglsDhHNvT0ML0ytTWVlCm5
211hKXG1ZshTmze6FO7s8spEalVqeZQ+2uUzIOqFIQRvwsdovxHqdKz6lqz5wHL9pGX
212KbRF3LtpLPE1+ZyIzngLxU7RnlqC7CssZfDDeY3W6OkV4nWO3jx1HmZ5fqlhU05a
213g+k8XFecbRz0aejtIS3M2+2PKFkrBExgi9bB/DHmYIWfpdygs4k+ECThw5rQP4TC
214q8fF1TtaQm/2YS/gAqH+o9+Y+cUyoWxNklaVIzJSi/WVoJ2Psgxjyzrpvw3vtrSZ
2154XzZzkWNDyMcWUehhk7Lpk7Jzhf6wtTLlipIAKx/FBLNaaY49rlpMsWdVzpNtgtO
216/wAItprP+xBNPmUTInFzDnQJUAlpdlFPffv5RGV+M8vfXs9N5gWxYlZypHO8XxY7
217sjDlz1jaaVDFsPsDk2PKO5wTwqKwgmpPH8Q+cWxo09HySG5m/wBseULJeCNjAE1Z
218On0PmYIMi8ZFn0i0NmbeGz+oB+U+cTWmPi6p6gqlAjbLCXPC2xDPJpsnOTa05g1m
219OUfSN9BDt0zk3dF+1XprF9BmGX5Zlhlp3MwpBJUVW1uT7o5+XPVjq4uP1UyFWXIu
220dXfAQ6g+0rYjmIzuP67jWZfnqmXR6tIz8olsrvbTX+sYXCyujDOWLhFNkmLv5la8
221OkNoeulb0HazX2ULLSVZGxcbjwiphazyzkQKMtycfdnHgRlA6FJ5Hj746+HCTtwc
222/JbdHNQ1ZqAyfwx5RpU4+FnUtZ5/T6xXnF7ZaGGBT6t8Wt2h5Qsl4oWK1XrOX8MH
223+ZggsLmUN3UlXdDZG5hz9hC3IxFaY+Leln9Tp/LAv4RnpEqahUxIJPqkErcAO5US
224Nfd5wqWE+oWFZNtmTYlEG6bE35m+scXLv9Xbv4pNPK9hhbt1JbVobpUOELDPR54b
225DDTlTo7pBbK0g7jjGu8cmWssVpMY3qEzLpl0srFhYgA3I+EKYRV5MrHeh0KerlVQ
226/UG1NSvtKSrQqHL3w8spjOk443K9iOj1aVqU3PBgpSQuyUfdT2QR3aCOnj6mnLyz
227vZyUD93mf9sRVGPhbz6gZ18X+tV5xWmWxfgdeZDwtqFfKFkvFVYxWUV5JHFr5wQZ
228eoLHo+m21AmbR/1/9hbT+aNqVTHKdTjLqWFGxFwIVVjNRS1fGdOwpTTJqUJufCbB
229hs6A/ePDw3hKkIGqzj9QemZ15RW46orUfE/KBUTqDVxITjZevkvfSMuTj/U6bcef
2305vZryjrM3LocQpK0LFwRqDHJZ/XXL9jSYpjDuvRI8csJSKaWhBu20gHnYQi1GPI6
231tJulBAWoGyu+KhXwmqa9N0esKbKih9lw5rbf2fIx3Y3fccOWPyvqHB861UsKyr7S
232hZaMqkj6KhoR/fdFbZya6QH8DtPPrdM04CtRVaw4xX6R+FrQ6EmilwJeU4Fm/agt
2332cx0gV3DT1WqImEzCUAIy2y34wbFxBLWO6iUlSsgA3JhaR+rVZW/SJVJ1gyss6WE
234EWWtGi1DlfgPCE0k/oEecU4sklVz3wKQ7WcUyq2VYJT8x84DaS4DjRaX7aNP/YAJ
235sK4lVRpoSk8SZN09le/Rq5+HMRjycf67nrbj5Pz1fDWllNzDCXEKStChdKkm4UOY
236jm18rp3/AB4tnXQQtK2qag2S6G+65gKlJWQhzFs84kdkry+8C0dfF/5cvJ6JMO4w
237qeHWnGpZ31CiFKbUnMkm1r24HbaNWFgrlPSS/NKQkvNt3PaJJ0hzSLL8HWHKoupv
238qzPBxNgRlMOyQsbbe0bEdZnqbUQ1LrbyFN+2qx3hyDLLVJWamweyDoNkxC5jpXrW
239V7QG4lRO1r84DR5hpbqUqSrK4ghST3/0gPTmhwOuIeQLH2VjlASUUh1JSRfXUQGn
240UrGUzhR9ptbinZZau00o3FufcfD+cRlhMl48lxNuk12RrcqJiTdC08Qd0+Mc2WNl
2411XVjlMpuK/EU+mlyz02QCVdlNzbW0TMbbpWVkm6S70+/1t0hpokqvmNySd47ccZJ
242pw223bnKTU4mdbadc6Rp0ELSRsddRDSnq6RhwkXAuFAwGJsLYvn8NzqX2CHWFH1j
243K9ljuPA98BWbG9dqTGJ52Vnqcq7a2LqSrQoObVJ74ueMMuqVSlG+u8Q6HNSiIA8J
244SdYA8NucAQVlUrNlxKFKbXbOEi5B52hBKXMC3qknMRuRDCKqX6W/SDPffNxgDrTl
245zNImumkHXGuYQsix7v6QrJfTls8XFYxBO10s9YASptOWw0BPFXjE44TGqz5LlNVT
246mXGc+MWh6ZZKilRSCU8YA7FG45jSAMaJSgDkbQBd0SsPUxbuUZkKHsnnzh70jLHa
247qHHxiVtV6JvDDjt8YA3ygI4wBrlGf3QBsEjLtAbLDlAG6QIQcrdpR5GGTpYWvAGx
248FlECAPLa35QBooBPSW4C8ASZXVRvyhlX/9mJAk4EEwEIADgWIQT4KAb9ob9bmhsw
249FOfJ/O1spreUVAUCW/AHrgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDJ
250/O1spreUVJ4nD/9tGS8cg2eUSwd0ExCl0dWsJRdM0mUYh17mXyVNLcvbglIkSdma
251v/Ty3ke533izRN/SkkU8vNthjKAohZmmXlaXrruEyHq2vfXcDg4+C7FJQ+O3PT2B
252S5ft3Ht2GmRpD2lWpeUlJ9BXF2EF5pSnHPOrlTHRUfjBCDU4uuSeKgioSyoc2iWb
253BBaSXyeQAUR+ppM1AYKUlCDxpLbe3nVCOUc+JgJzv+47EqwMyVODwzk7oFO4GMRm
254KTKlctb1ym75oV1tiZi2fL/KA2uAab/RMO0rfxa9HVWnJGvUEDMPlTfs7222zuLB
25555Fzllfx5rQlou+MLBQIV978HRZrDxZesQOOJ4/BwTPgQ42GREf+uf5/SG4Fn3Qh
256NZsvoaePMLN/QQEjM7eqOUzRJRVcdJfRH+LinIFrAqcmbbcp1bvq8LV5lbmlFJLF
257gimvW/shf/6Zu1YsfBhvLWInUCyoOPFa1tASF6qqi1hEOd8tQgNE/H/FSIehmTHT
25874kYPNRm+DzlvrW2JPVl24Nf/SWbOG/IzGBY/pDActTwYqnpXKR7eUt/YcPpmrPi
259kyIKX32U2vTBCE3yvCm0KRzrcSbTJGfVgmlxxqIuOtbeaBtf96m+o5z/xw9ro7Ek
260VZbsx6fPuWuLY/MqeLXl1EuiU6X1sr+skDY8lJeeiRt+Uq5mCZuEgWdM1IhdBBAR
261AgAdFiEE3DhHSHCdJhn/KGchbQyv/dsc/pAFAlvwCAQACgkQbQyv/dsc/pABQACf
262YaUOqzlafrzeGdwHwDleootu0UcAn2adbaKJ79QBtDVPkR77zV801JlXuQINBFvw
263A+gBEACt8AiUTMcyNXwN6kiOLPd+85IPlLwEVyofz8p2QBAxJsqKozlXXpnK7ahC
264RSiHt02EK39WiyZpeY1/2dGmdvyI1vc7ld3814Dveh4nf1GRSpDZ427cxayaclh+
265wRQ8nDWFOQUsMB3He/Z+aO6l/ZNvdVdzRUHda1XvN41nwXUL9FQUn/TLYgHbxa7P
266Yy18ZnNzH/xGSwDgRrqPEAZ8KOpbHEbNyYuYuv6IM8Xmbp8Q6bl2RyBNnrlphksJ
267kLvO6RLHUvvw5uX5bt+u3umoZ+yHUkP13NtQHTyZ8VTCQimkB6OisisOTnV8OjLG
268xtLEF/TjeGFAAoEnc8bQAPvrtONQL19rPkMB0gXYXPBbGw7eWYr3QpuOujUXcz9U
2690JSSEov7cUepdTY8LEYFw8U5WimKY6f/uJUVx/ukNPtuAljJji0cjIGEOX2XGlBV
270Ix/U3vywLBfUFW5hT+75z7UB3yG3Zexo0WSaQxxZ5PHxyPYBK1PvVkH0LvkbxJcr
271rouJJQ66chjRglUbv4lf85/cG1ZLu3Ds0UbuD0gE9sAEwXtfdgDmp/HB7mxwJr1O
272BRbTRv0Okx/lovWXkxt+hX+DXZ1u1qdZUW3zjmge8W7xag3epD21jIjFDODgUfDT
273fgJi2FQq+szpagfPN5j5aIQKHCZf0DLbBD+ZWYQdld5JZs2V5QARAQABiQI2BBgB
274CAAgFiEE+CgG/aG/W5obMBTnyfztbKa3lFQFAlvwA+gCGwwACgkQyfztbKa3lFTa
275yxAAxQo/9dvOO74J+9XznCYb5iO1B1ksnVegSGVuId45JKXkCkuWvDOkcU8+ma38
276wo3MBoPLpSMCXc/mKQ0p0ntO1tD/Wf4nBBCvseWcsR6RR5Su5jYorm0qZ89IOEPN
277K2W2Z41X6DHyteB1dAyIyexOYoLKD7iWcQzga4/EoUPEwcr8BWWgGLBfRhXsYySz
278F3fQPS7KaemDLGbJfTDZCSqmsZPnlksSvGxEBwUwfCjfY+QHxzWPRFPkuQJJR6YW
279tiZ3z7jBRdRk/R5v2CJZJuGHcPPYQy6j2TYGONojm+ifaq1hz+A0aoy4P9qRW5Nl
280mm6yiqEoJe07DrMLxn3H3ucuOo7DiNWmkkjW8DfhFSd+3pFMSvKGujOJWN27UDEp
281ERWFX50gE15Sq4aPbMPNRejFQ1n75B4jfFQXg6WuwF3kwgHK3Y5T5vTEkbPgce9c
282SyyFWU7EA4DJGnt7/FoaPDTKOWI9WSkmjOSABTBNSaUiMSFA3Wg/T0aS5pETpkv2
283S/GVVX022orAGK8zEY1vr2a24itOAKpQwFRuMjqDCBVgKAsMtlPu8jv3Zm/AMcYM
284sRRnDWJh2TO8bqXXUG/o783fcTE3d1Ff7s4BfmBqpGHigZeehNvu+FshRDYaDrDN
285IS0fTqbsX/JjaCXwU/o2E6G4aE79Ut/IMsCYzItTDh2UmcS5Ag0EW/G8wgEQALBi
2862/A7Ev/92mYi4Gm//IJEKjm2Vc3NcX5LdSyPwdSLlHSRwvzZz7M0VeflcTYqssto
287VPVf4maDtLGbQJn43CLqjvIW/C6jzjfvoZf0gbHpNfKY1ENs5xgE0wd3ZdsqpQC6
288W9Pu+kN31QS9+RUKwiG2bNBIREChL/omqiLhNu3hDbZnB+uSByOk901XVrNmKa8G
289NzXSfJSCt0gP7XU6VpMqjxppA8Y2Vo7jnylbrgVJriTt6jtjDylBBQqmHSOXMT+q
2909kIWDSocKhSFHBMO6LYnAwbMef2kqio5zaKzZAuwis0zjOqKHwW54xL2T7djFav9
291VlgcAYN105iMLUiIl39HLeZnS5pUESOXRUv/qLwiQRvBlWBPIep3+ycM2eK8r5a1
2925EwCgN2nSl3KYjzTOisCmK1nQs+gQ1RMraeBGYEG0uIUvDxfoONTuYkM3dhWq2Xx
293V/OO6yUkfyOlBGUREe1PXAOsP0LtAFJha7kbh7Eg6GGU7gRYh2dG2Ln6Vmx1ldbS
294F3woFYPGNMsQmgEKxwyjKaq0Qhd/sKHrTpPz8PXfGP4dHegExKegS7Yof1VrKBB+
295L8Q8o1Oi8JPCjRp47iga5OYS1Vn3h5a07ajzSAxPsmF0lmF4tYk2MFxSs403ShiE
296BTjN4t6rjmnoQV/b+CuhpmvzxaYr736/jkY7s0I5ABEBAAGJBGwEGAEIACAWIQT4
297KAb9ob9bmhswFOfJ/O1spreUVAUCW/G8wgIbAgJACRDJ/O1spreUVMF0IAQZAQgA
298HRYhBB2wOl45wX3kd77c+/0dTvV/qVkCBQJb8bzCAAoJEP0dTvV/qVkC3tUP/2rR
299VDaSPj9+UYJtHGDfQmYCEqxROm5wGCJbNrUQspLeL8+XrsaUDh1ldNAQtoDqGjRp
300kwjJAS0OZfvCv7pI052NK/KVGaK5Tj2+0lxTAcGbAKoH8E2HWPlERpU9CRLvzvDE
3014GGxw2nw7aobNGbf9d98c9RpZuAul92BOClnpGEU4VzjKUk9IsSjZQVJnggQujxL
302qWWiwfGwVsj2PdgPao/P48cYNl5CACBgY19AAh7WzgJVz/6je/5NLdAAV+E31qSE
303EaZsvTBqrMOtH6iTn1GpJ73FsJ0BYVt9X99bRT0Vi0iWulBuhYfZG4PdCY6fv6uC
304d+6pAC+Y/M9npaLbBHscSlJheTyvfuB7bzYBY+Q87VHSOMuNni7U08FuiILFoF+e
305/ESU/v0Hde44ghiXKSaFO8djxc874KM9UlGWvw9UbmI8Z2uM0kDcrPZ/8tcjXOhp
306PEBib54ab4tKCUCtOmsF9ZiT0hOqYdP9bXW+6OGfCignJ7ABhPpANfx2Sn/28L9l
307PbF1nA5CkHdyo/ku1Z/lNq44yvrB8r0Ljq6s3KS69dUZqqrADeogOdi0/TrghtKU
308DERWGmQagYSzMIvsXoAI56MxXFLriSObmpFLTWq7cr/+Ju3AcaSkrpDSYi3U6vLL
3098NuXPhul1S/+yPwvX6Mk1Zkip9/Wg4SQeiT2R7xj8zMP/RJ8uKbnKpOftY89Kv0Y
310FZ4hE3FeBR3UJvkuPdQYNLQRluzh63Bzc4ClSxB9Ma7fmAEiuFtgEi4HLTMBDOHO
311uVMuWYcgubu9VBlAGLJ++gnKxCAJXEntuB49il8MjMsy+uv/cFCjPG9z/1pmWYrE
312XBNA+vcaOrNTS2IykAbqybcPYbBcN47bm+A4i5yqiahk0q++j4LOW/nf88xXO7xI
313V/4vQgemh7RHgHJOkKfzOPw/Kx3UjV1jA9gEUrusHE4R3Upxh0ZeQW19hUnVlao1
314TxxKEUryrRzckuRfc5ziMWNyJaZsPMkeBEhyY/CizDFPrsSXIAijfu8KFnxCsnaM
315ylFBWOu5FwsKMDXxu0QdwqpL2CM8p+q12z1VruNjpIc8bAc0/YMndjYnxzsqQEMV
316GQIDKWqh/m6v7sqbn65ZQcVAzSAriGcQxCOIoT/TA/J+/4BSk5c8TKlqT8NBT77B
317Z70vMr41mZus1A/ciI8AxgbYwlhuvTehdm74k/c7NSzTxeG3OumTlBR1I18C4AIi
318y4iM3O4H4jvEssWBUzpm3VJG0NvcN/M4YVZHX5yxWQuIFcghzb7sLYddmRvR9B0M
319Xowot//r/sgn43xv54sIvwe9MkCCU6j7ePYUlOUnn+vQ5i7rFN/UPub3V3toI2gg
320DRuKdymWEii1jA9KlmheLTFr
321=r9L+
322-----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 @@
183 if [ "$skip" != "$DEST" ]; then 183 if [ "$skip" != "$DEST" ]; then
184 ''; 184 '';
185 backup_profile_tail = name: profile: '' 185 backup_profile_tail = name: profile: ''
186 ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -i ${ssh_key} -p $PORT $DEST sh -c "date > .cache/last_backup" 186 ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -i ${ssh_key} -p $PORT $DEST sh -c "date > .cache/last_backup" || true
187 fi # [ "$skip" != "$DEST" ] 187 fi # [ "$skip" != "$DEST" ]
188 ##### End ${name} ##### 188 ##### End ${name} #####
189 ''; 189 '';
@@ -228,7 +228,7 @@
228 ]; 228 ];
229 229
230 programs.ssh.knownHosts = lib.attrsets.mapAttrs' (name: profile: lib.attrsets.nameValuePair name { 230 programs.ssh.knownHosts = lib.attrsets.mapAttrs' (name: profile: lib.attrsets.nameValuePair name {
231 hostNames = [ profile.host ]; 231 extraHostNames = [ profile.host ];
232 publicKey = "${profile.host_key_type} ${profile.host_key}"; 232 publicKey = "${profile.host_key_type} ${profile.host_key}";
233 }) cfg.profiles; 233 }) cfg.profiles;
234 234
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 @@
3 3
4 outputs = { self }: { 4 outputs = { self }: {
5 nixosModule = { config, lib, pkgs, ... }: { 5 nixosModule = { config, lib, pkgs, ... }: {
6 # Necessary for situations where flake gets included multiple times
7 key = builtins.hashString "sha256" (builtins.path { path = self.sourceInfo.outPath; name = "source"; });
6 options.secrets = with lib; { 8 options.secrets = with lib; {
7 keys = mkOption { 9 keys = mkOption {
8 type = types.attrsOf (types.submodule { 10 type = types.attrsOf (types.submodule {
@@ -36,11 +38,38 @@
36 type = types.str; 38 type = types.str;
37 description = "Content of the entry"; 39 description = "Content of the entry";
38 }; 40 };
41 keyDependencies = mkOption {
42 default = [];
43 type = types.listOf (types.either types.path types.package);
44 description = ''
45 (public) system dependencies that needs to be
46 uploaded with the key.
47
48 keyDependencies + ignoredKeyDependencies should
49 contain the exhaustive list of the text context.
50
51 A warning will be thrown if there are remaning
52 dependencies from the text.
53 '';
54 };
55 ignoredKeyDependencies = mkOption {
56 default = [];
57 type = types.listOf (types.either types.path types.package);
58 description = ''
59 dependencies that must not be sent along with the key.
60
61 keyDependencies + ignoredKeyDependencies should
62 contain the exhaustive list of the text context.
63
64 A warning will be thrown if there are remaning
65 dependencies from the text.
66 '';
67 };
39 }; 68 };
40 }); 69 });
41 default = {}; 70 default = {};
42 description = "Keys attrs to upload to the server"; 71 description = "Keys attrs to upload to the server";
43 apply = lib.mapAttrsToList (dest: v: v // { inherit dest; }); 72 apply = builtins.mapAttrs (dest: v: v // { inherit dest; });
44 }; 73 };
45 gpgKeys = mkOption { 74 gpgKeys = mkOption {
46 type = types.listOf types.path; 75 type = types.listOf types.path;
@@ -74,8 +103,8 @@
74 # Read-only variables 103 # Read-only variables
75 fullPaths = mkOption { 104 fullPaths = mkOption {
76 type = types.attrsOf types.path; 105 type = types.attrsOf types.path;
77 default = builtins.listToAttrs 106 default = builtins.mapAttrs
78 (map (v: { name = v.dest; value = "${config.secrets.location}/${v.dest}"; }) config.secrets.keys); 107 (n: v: "${config.secrets.location}/${n}") config.secrets.keys;
79 readOnly = true; 108 readOnly = true;
80 description = "set of full paths to secrets"; 109 description = "set of full paths to secrets";
81 }; 110 };
@@ -83,7 +112,7 @@
83 112
84 config = let 113 config = let
85 location = config.secrets.location; 114 location = config.secrets.location;
86 keys = config.secrets.keys; 115 keys = builtins.attrValues config.secrets.keys;
87 empty = pkgs.runCommand "empty" { preferLocalBuild = true; } "mkdir -p $out && touch $out/done"; 116 empty = pkgs.runCommand "empty" { preferLocalBuild = true; } "mkdir -p $out && touch $out/done";
88 fpath = v: "secrets/${v.dest}${lib.optionalString v.isTemplated ".gucci.tpl"}"; 117 fpath = v: "secrets/${v.dest}${lib.optionalString v.isTemplated ".gucci.tpl"}";
89 dumpKey = v: 118 dumpKey = v:
@@ -125,7 +154,24 @@
125 exclPath = builtins.concatStringsSep " -o " (map (d: " -path $TMP/${d.dest}") dirs); 154 exclPath = builtins.concatStringsSep " -o " (map (d: " -path $TMP/${d.dest}") dirs);
126 in 155 in
127 lib.optionalString (builtins.length dirs > 0) " -not \\( ${exclPath} \\) "; 156 lib.optionalString (builtins.length dirs > 0) " -not \\( ${exclPath} \\) ";
157
158 checkKeyDependencies = key:
159 let
160 allDeps = builtins.map (n: if builtins.isPath n then "${n}" else n.drvPath) (key.keyDependencies ++ key.ignoredKeyDependencies);
161 context = builtins.attrNames (builtins.getContext key.text);
162 missing = builtins.foldl' (o: n: lib.remove n o) context allDeps;
163 in
164 lib.optional (!key.isDir && builtins.length missing > 0)
165 ''
166 Key ${key.dest} has non declared dependencies in its context: ${builtins.concatStringsSep " " missing}
167 Add them to ignoredKeyDependencies to ignore
168 '';
128 in lib.mkIf (builtins.length keys > 0) { 169 in lib.mkIf (builtins.length keys > 0) {
170 warnings = lib.concatMap checkKeyDependencies keys;
171 # FIXME: Use lib.concatMap (k: k.keyDependencies) keys in latest nixpkgs
172 system.extraDependencies = lib.concatMap (k: builtins.map (dep:
173 if builtins.isPath dep then pkgs.writeText "extra-dep" "${dep}" else dep
174 ) k.keyDependencies) keys;
129 system.activationScripts.secrets = { 175 system.activationScripts.secrets = {
130 deps = [ "users" "wrappers" ]; 176 deps = [ "users" "wrappers" ];
131 text = '' 177 text = ''
@@ -133,13 +179,11 @@
133 TMP=$(${pkgs.coreutils}/bin/mktemp -d) 179 TMP=$(${pkgs.coreutils}/bin/mktemp -d)
134 TMPWORK=$(${pkgs.coreutils}/bin/mktemp -d) 180 TMPWORK=$(${pkgs.coreutils}/bin/mktemp -d)
135 chmod go-rwx $TMPWORK 181 chmod go-rwx $TMPWORK
136 if [ -n "$TMP" -a -n "$TMPWORK" ]; then 182 if [ -n "$TMP" -a -n "$TMPWORK" -a -f ${config.secrets.secretsVars} ]; then
137 install -m0750 -o root -g keys -d $TMP 183 install -m0750 -o root -g keys -d $TMP
138 ${pkgs.ssh-to-age}/bin/ssh-to-age -private-key -i ${config.secrets.decryptKey} -o $TMPWORK/keys.txt 184 ${pkgs.ssh-to-age}/bin/ssh-to-age -private-key -i ${config.secrets.decryptKey} -o $TMPWORK/keys.txt
139 SOPS_AGE_KEY_FILE=$TMPWORK/keys.txt ${pkgs.sops}/bin/sops -d ${secrets} | ${pkgs.gnutar}/bin/tar --strip-components 1 -C $TMP -x 185 SOPS_AGE_KEY_FILE=$TMPWORK/keys.txt ${pkgs.sops}/bin/sops -d ${secrets} | ${pkgs.gnutar}/bin/tar --strip-components 1 -C $TMP -x
140 if [ -f ${config.secrets.secretsVars} ]; then 186 SOPS_AGE_KEY_FILE=$TMPWORK/keys.txt ${pkgs.sops}/bin/sops -d ${config.secrets.secretsVars} > $TMPWORK/vars.yml
141 SOPS_AGE_KEY_FILE=$TMPWORK/keys.txt ${pkgs.sops}/bin/sops -d ${config.secrets.secretsVars} > $TMPWORK/vars.yml
142 fi
143 if [ -f $TMPWORK/vars.yml ]; then 187 if [ -f $TMPWORK/vars.yml ]; then
144 find $TMP -name "*.gucci.tpl" -exec \ 188 find $TMP -name "*.gucci.tpl" -exec \
145 /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}' \; 189 /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 @@
1{ callPackage, nodeEnv, src }:
2# built using node2nix -l package-lock.json
3# and changing "./." to "src"
4(callPackage ./node-packages.nix {
5 inherit src;
6 nodeEnv = callPackage nodeEnv {};
7}).package.overrideAttrs(old: {
8 postInstall = ''
9 mkdir -p $out/bin
10 ln -s ../cloudron-surfer/server.js $out/lib/node_modules/.bin/surfer-server
11 '';
12})
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 @@
1{
2 "nodes": {
3 "flake-parts": {
4 "inputs": {
5 "nixpkgs-lib": "nixpkgs-lib"
6 },
7 "locked": {
8 "lastModified": 1675295133,
9 "narHash": "sha256-dU8fuLL98WFXG0VnRgM00bqKX6CEPBLybhiIDIgO45o=",
10 "owner": "hercules-ci",
11 "repo": "flake-parts",
12 "rev": "bf53492df08f3178ce85e0c9df8ed8d03c030c9f",
13 "type": "github"
14 },
15 "original": {
16 "owner": "hercules-ci",
17 "repo": "flake-parts",
18 "type": "github"
19 }
20 },
21 "flake-utils": {
22 "locked": {
23 "lastModified": 1648297722,
24 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
25 "owner": "numtide",
26 "repo": "flake-utils",
27 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
28 "type": "github"
29 },
30 "original": {
31 "owner": "numtide",
32 "repo": "flake-utils",
33 "type": "github"
34 }
35 },
36 "mypackages": {
37 "inputs": {
38 "flake-parts": "flake-parts",
39 "nixpkgs": "nixpkgs",
40 "webapps-ttrss": "webapps-ttrss"
41 },
42 "locked": {
43 "lastModified": 1,
44 "narHash": "sha256-C0plEL+g6kv5fo/VmTjMJK45RfFcGufqPKJVnviMyGY=",
45 "path": "../mypackages",
46 "type": "path"
47 },
48 "original": {
49 "path": "../mypackages",
50 "type": "path"
51 }
52 },
53 "nixpkgs": {
54 "locked": {
55 "lastModified": 1646497237,
56 "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=",
57 "owner": "nixos",
58 "repo": "nixpkgs",
59 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
60 "type": "github"
61 },
62 "original": {
63 "owner": "nixos",
64 "repo": "nixpkgs",
65 "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026",
66 "type": "github"
67 }
68 },
69 "nixpkgs-lib": {
70 "locked": {
71 "dir": "lib",
72 "lastModified": 1675183161,
73 "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
74 "owner": "NixOS",
75 "repo": "nixpkgs",
76 "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
77 "type": "github"
78 },
79 "original": {
80 "dir": "lib",
81 "owner": "NixOS",
82 "ref": "nixos-unstable",
83 "repo": "nixpkgs",
84 "type": "github"
85 }
86 },
87 "nixpkgs_2": {
88 "flake": false,
89 "locked": {
90 "lastModified": 1596265691,
91 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
92 "owner": "NixOS",
93 "repo": "nixpkgs",
94 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
95 "type": "github"
96 },
97 "original": {
98 "owner": "NixOS",
99 "repo": "nixpkgs",
100 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
101 "type": "github"
102 }
103 },
104 "root": {
105 "inputs": {
106 "flake-utils": "flake-utils",
107 "mypackages": "mypackages",
108 "nixpkgs": "nixpkgs_2",
109 "surfer": "surfer"
110 }
111 },
112 "surfer": {
113 "flake": false,
114 "locked": {
115 "lastModified": 1588637864,
116 "narHash": "sha256-B1Sbu1YSHj+ONSoT5v6bVlAHJWtceUV4O5huGhc8b0U=",
117 "rev": "476177380452c9c7c5b1624805feedc824c5995e",
118 "revCount": 318,
119 "type": "git",
120 "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
121 },
122 "original": {
123 "rev": "476177380452c9c7c5b1624805feedc824c5995e",
124 "type": "git",
125 "url": "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git"
126 }
127 },
128 "webapps-ttrss": {
129 "flake": false,
130 "locked": {
131 "lastModified": 1546759381,
132 "narHash": "sha256-urjf4EoLWS7G0s0hRtaErrs2B8DUatNK/eoneuB0anY=",
133 "ref": "master",
134 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
135 "revCount": 9256,
136 "type": "git",
137 "url": "https://git.tt-rss.org/fox/tt-rss.git"
138 },
139 "original": {
140 "ref": "master",
141 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
142 "type": "git",
143 "url": "https://git.tt-rss.org/fox/tt-rss.git"
144 }
145 }
146 },
147 "root": "root",
148 "version": 7
149}
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 @@
1{
2 description = "Surfer is a Simple static file server";
3 inputs.flake-utils.url = "github:numtide/flake-utils";
4 inputs.nixpkgs = {
5 url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
6 flake = false;
7 };
8 inputs.surfer = {
9 url = "https://git.immae.eu/perso/Immae/Projets/Nodejs/Surfer.git";
10 type = "git";
11 rev = "476177380452c9c7c5b1624805feedc824c5995e";
12 flake = false;
13 };
14 inputs.mypackages.url = "path:../mypackages";
15 outputs = { self, nixpkgs, surfer, flake-utils, mypackages }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
16 let
17 pkgs = import nixpkgs { inherit system; overlays = []; };
18 nodeEnv = mypackages.mylibs.nodeEnv;
19 inherit (pkgs) callPackage;
20 in rec {
21 packages.surfer = callPackage ./. { inherit nodeEnv; src = surfer; };
22 defaultPackage = packages.surfer;
23 legacyPackages.surfer = packages.surfer;
24 checks = {
25 build = defaultPackage;
26 };
27 }
28 ) // rec {
29 overlays = {
30 surfer = final: prev: {
31 surfer = self.defaultPackage."${final.system}";
32 };
33 };
34 overlay = overlays.surfer;
35 };
36}
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 @@
1# This file has been generated by node2nix 1.8.0. Do not edit!
2
3{nodeEnv, src, fetchurl, fetchgit, globalBuildInputs ? []}:
4
5let
6 sources = {
7 "accepts-1.3.4" = {
8 name = "accepts";
9 packageName = "accepts";
10 version = "1.3.4";
11 src = fetchurl {
12 url = "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz";
13 sha1 = "86246758c7dd6d21a6474ff084a4740ec05eb21f";
14 };
15 };
16 "ajv-5.5.2" = {
17 name = "ajv";
18 packageName = "ajv";
19 version = "5.5.2";
20 src = fetchurl {
21 url = "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz";
22 sha1 = "73b5eeca3fab653e3d3f9422b341ad42205dc965";
23 };
24 };
25 "archiver-4.0.1" = {
26 name = "archiver";
27 packageName = "archiver";
28 version = "4.0.1";
29 src = fetchurl {
30 url = "https://registry.npmjs.org/archiver/-/archiver-4.0.1.tgz";
31 sha512 = "/YV1pU4Nhpf/rJArM23W6GTUjT0l++VbjykrCRua1TSXrn+yM8Qs7XvtwSiRse0iCe49EPNf7ktXnPsWuSb91Q==";
32 };
33 };
34 "archiver-utils-2.1.0" = {
35 name = "archiver-utils";
36 packageName = "archiver-utils";
37 version = "2.1.0";
38 src = fetchurl {
39 url = "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz";
40 sha512 = "bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==";
41 };
42 };
43 "array-flatten-1.1.1" = {
44 name = "array-flatten";
45 packageName = "array-flatten";
46 version = "1.1.1";
47 src = fetchurl {
48 url = "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz";
49 sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
50 };
51 };
52 "array-union-1.0.2" = {
53 name = "array-union";
54 packageName = "array-union";
55 version = "1.0.2";
56 src = fetchurl {
57 url = "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz";
58 sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39";
59 };
60 };
61 "array-uniq-1.0.3" = {
62 name = "array-uniq";
63 packageName = "array-uniq";
64 version = "1.0.3";
65 src = fetchurl {
66 url = "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz";
67 sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
68 };
69 };
70 "arrify-1.0.1" = {
71 name = "arrify";
72 packageName = "arrify";
73 version = "1.0.1";
74 src = fetchurl {
75 url = "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz";
76 sha1 = "898508da2226f380df904728456849c1501a4b0d";
77 };
78 };
79 "asn1-0.2.3" = {
80 name = "asn1";
81 packageName = "asn1";
82 version = "0.2.3";
83 src = fetchurl {
84 url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz";
85 sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
86 };
87 };
88 "assert-plus-0.1.5" = {
89 name = "assert-plus";
90 packageName = "assert-plus";
91 version = "0.1.5";
92 src = fetchurl {
93 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz";
94 sha1 = "ee74009413002d84cec7219c6ac811812e723160";
95 };
96 };
97 "assert-plus-1.0.0" = {
98 name = "assert-plus";
99 packageName = "assert-plus";
100 version = "1.0.0";
101 src = fetchurl {
102 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
103 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
104 };
105 };
106 "async-1.5.2" = {
107 name = "async";
108 packageName = "async";
109 version = "1.5.2";
110 src = fetchurl {
111 url = "https://registry.npmjs.org/async/-/async-1.5.2.tgz";
112 sha1 = "ec6a61ae56480c0c3cb241c95618e20892f9672a";
113 };
114 };
115 "async-2.6.3" = {
116 name = "async";
117 packageName = "async";
118 version = "2.6.3";
119 src = fetchurl {
120 url = "https://registry.npmjs.org/async/-/async-2.6.3.tgz";
121 sha512 = "zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==";
122 };
123 };
124 "asynckit-0.4.0" = {
125 name = "asynckit";
126 packageName = "asynckit";
127 version = "0.4.0";
128 src = fetchurl {
129 url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
130 sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
131 };
132 };
133 "aws-sign2-0.7.0" = {
134 name = "aws-sign2";
135 packageName = "aws-sign2";
136 version = "0.7.0";
137 src = fetchurl {
138 url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
139 sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
140 };
141 };
142 "aws4-1.6.0" = {
143 name = "aws4";
144 packageName = "aws4";
145 version = "1.6.0";
146 src = fetchurl {
147 url = "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz";
148 sha1 = "83ef5ca860b2b32e4a0deedee8c771b9db57471e";
149 };
150 };
151 "backoff-2.5.0" = {
152 name = "backoff";
153 packageName = "backoff";
154 version = "2.5.0";
155 src = fetchurl {
156 url = "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz";
157 sha1 = "f616eda9d3e4b66b8ca7fca79f695722c5f8e26f";
158 };
159 };
160 "balanced-match-1.0.0" = {
161 name = "balanced-match";
162 packageName = "balanced-match";
163 version = "1.0.0";
164 src = fetchurl {
165 url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
166 sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
167 };
168 };
169 "base64-js-1.3.1" = {
170 name = "base64-js";
171 packageName = "base64-js";
172 version = "1.3.1";
173 src = fetchurl {
174 url = "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz";
175 sha512 = "mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==";
176 };
177 };
178 "basic-auth-2.0.1" = {
179 name = "basic-auth";
180 packageName = "basic-auth";
181 version = "2.0.1";
182 src = fetchurl {
183 url = "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz";
184 sha512 = "NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==";
185 };
186 };
187 "batch-0.6.1" = {
188 name = "batch";
189 packageName = "batch";
190 version = "0.6.1";
191 src = fetchurl {
192 url = "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz";
193 sha1 = "dc34314f4e679318093fc760272525f94bf25c16";
194 };
195 };
196 "bcrypt-pbkdf-1.0.1" = {
197 name = "bcrypt-pbkdf";
198 packageName = "bcrypt-pbkdf";
199 version = "1.0.1";
200 src = fetchurl {
201 url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz";
202 sha1 = "63bc5dcb61331b92bc05fd528953c33462a06f8d";
203 };
204 };
205 "bcryptjs-2.4.3" = {
206 name = "bcryptjs";
207 packageName = "bcryptjs";
208 version = "2.4.3";
209 src = fetchurl {
210 url = "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz";
211 sha1 = "9ab5627b93e60621ff7cdac5da9733027df1d0cb";
212 };
213 };
214 "bl-4.0.2" = {
215 name = "bl";
216 packageName = "bl";
217 version = "4.0.2";
218 src = fetchurl {
219 url = "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz";
220 sha512 = "j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==";
221 };
222 };
223 "body-parser-1.18.2" = {
224 name = "body-parser";
225 packageName = "body-parser";
226 version = "1.18.2";
227 src = fetchurl {
228 url = "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz";
229 sha1 = "87678a19d84b47d859b83199bd59bce222b10454";
230 };
231 };
232 "boom-4.3.1" = {
233 name = "boom";
234 packageName = "boom";
235 version = "4.3.1";
236 src = fetchurl {
237 url = "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz";
238 sha1 = "4f8a3005cb4a7e3889f749030fd25b96e01d2e31";
239 };
240 };
241 "boom-5.2.0" = {
242 name = "boom";
243 packageName = "boom";
244 version = "5.2.0";
245 src = fetchurl {
246 url = "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz";
247 sha512 = "Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==";
248 };
249 };
250 "brace-expansion-1.1.8" = {
251 name = "brace-expansion";
252 packageName = "brace-expansion";
253 version = "1.1.8";
254 src = fetchurl {
255 url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz";
256 sha1 = "c07b211c7c952ec1f8efd51a77ef0d1d3990a292";
257 };
258 };
259 "buffer-5.6.0" = {
260 name = "buffer";
261 packageName = "buffer";
262 version = "5.6.0";
263 src = fetchurl {
264 url = "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz";
265 sha512 = "/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==";
266 };
267 };
268 "buffer-crc32-0.2.13" = {
269 name = "buffer-crc32";
270 packageName = "buffer-crc32";
271 version = "0.2.13";
272 src = fetchurl {
273 url = "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz";
274 sha1 = "0d333e3f00eac50aa1454abd30ef8c2a5d9a7242";
275 };
276 };
277 "bunyan-1.8.12" = {
278 name = "bunyan";
279 packageName = "bunyan";
280 version = "1.8.12";
281 src = fetchurl {
282 url = "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz";
283 sha1 = "f150f0f6748abdd72aeae84f04403be2ef113797";
284 };
285 };
286 "bytes-3.0.0" = {
287 name = "bytes";
288 packageName = "bytes";
289 version = "3.0.0";
290 src = fetchurl {
291 url = "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz";
292 sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
293 };
294 };
295 "caseless-0.12.0" = {
296 name = "caseless";
297 packageName = "caseless";
298 version = "0.12.0";
299 src = fetchurl {
300 url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
301 sha1 = "1b681c21ff84033c826543090689420d187151dc";
302 };
303 };
304 "co-4.6.0" = {
305 name = "co";
306 packageName = "co";
307 version = "4.6.0";
308 src = fetchurl {
309 url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz";
310 sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
311 };
312 };
313 "colors-1.1.2" = {
314 name = "colors";
315 packageName = "colors";
316 version = "1.1.2";
317 src = fetchurl {
318 url = "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz";
319 sha1 = "168a4701756b6a7f51a12ce0c97bfa28c084ed63";
320 };
321 };
322 "combined-stream-1.0.5" = {
323 name = "combined-stream";
324 packageName = "combined-stream";
325 version = "1.0.5";
326 src = fetchurl {
327 url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz";
328 sha1 = "938370a57b4a51dea2c77c15d5c5fdf895164009";
329 };
330 };
331 "combined-stream-1.0.6" = {
332 name = "combined-stream";
333 packageName = "combined-stream";
334 version = "1.0.6";
335 src = fetchurl {
336 url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz";
337 sha1 = "723e7df6e801ac5613113a7e445a9b69cb632818";
338 };
339 };
340 "combined-stream-1.0.8" = {
341 name = "combined-stream";
342 packageName = "combined-stream";
343 version = "1.0.8";
344 src = fetchurl {
345 url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
346 sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
347 };
348 };
349 "commander-2.14.1" = {
350 name = "commander";
351 packageName = "commander";
352 version = "2.14.1";
353 src = fetchurl {
354 url = "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz";
355 sha512 = "+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==";
356 };
357 };
358 "component-emitter-1.3.0" = {
359 name = "component-emitter";
360 packageName = "component-emitter";
361 version = "1.3.0";
362 src = fetchurl {
363 url = "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz";
364 sha512 = "Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==";
365 };
366 };
367 "compress-commons-3.0.0" = {
368 name = "compress-commons";
369 packageName = "compress-commons";
370 version = "3.0.0";
371 src = fetchurl {
372 url = "https://registry.npmjs.org/compress-commons/-/compress-commons-3.0.0.tgz";
373 sha512 = "FyDqr8TKX5/X0qo+aVfaZ+PVmNJHJeckFBlq8jZGSJOgnynhfifoyl24qaqdUdDIBe0EVTHByN6NAkqYvE/2Xg==";
374 };
375 };
376 "compressible-2.0.13" = {
377 name = "compressible";
378 packageName = "compressible";
379 version = "2.0.13";
380 src = fetchurl {
381 url = "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz";
382 sha1 = "0d1020ab924b2fdb4d6279875c7d6daba6baa7a9";
383 };
384 };
385 "compression-1.7.2" = {
386 name = "compression";
387 packageName = "compression";
388 version = "1.7.2";
389 src = fetchurl {
390 url = "https://registry.npmjs.org/compression/-/compression-1.7.2.tgz";
391 sha1 = "aaffbcd6aaf854b44ebb280353d5ad1651f59a69";
392 };
393 };
394 "concat-map-0.0.1" = {
395 name = "concat-map";
396 packageName = "concat-map";
397 version = "0.0.1";
398 src = fetchurl {
399 url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
400 sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
401 };
402 };
403 "connect-lastmile-1.2.2" = {
404 name = "connect-lastmile";
405 packageName = "connect-lastmile";
406 version = "1.2.2";
407 src = fetchurl {
408 url = "https://registry.npmjs.org/connect-lastmile/-/connect-lastmile-1.2.2.tgz";
409 sha512 = "laKBrYAoYNuUYAsJQVUdmCqzi825A0GJ7YuiT8zWP0wU6s0Cv9h1eSdHvXh0DgxaVe0dQaYFufcL1htzPCJIpQ==";
410 };
411 };
412 "connect-timeout-1.9.0" = {
413 name = "connect-timeout";
414 packageName = "connect-timeout";
415 version = "1.9.0";
416 src = fetchurl {
417 url = "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.9.0.tgz";
418 sha1 = "bc27326b122103714bebfa0d958bab33f6522e3a";
419 };
420 };
421 "content-disposition-0.5.2" = {
422 name = "content-disposition";
423 packageName = "content-disposition";
424 version = "0.5.2";
425 src = fetchurl {
426 url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz";
427 sha1 = "0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4";
428 };
429 };
430 "content-type-1.0.4" = {
431 name = "content-type";
432 packageName = "content-type";
433 version = "1.0.4";
434 src = fetchurl {
435 url = "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz";
436 sha512 = "hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==";
437 };
438 };
439 "cookie-0.3.1" = {
440 name = "cookie";
441 packageName = "cookie";
442 version = "0.3.1";
443 src = fetchurl {
444 url = "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz";
445 sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
446 };
447 };
448 "cookie-parser-1.4.3" = {
449 name = "cookie-parser";
450 packageName = "cookie-parser";
451 version = "1.4.3";
452 src = fetchurl {
453 url = "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz";
454 sha1 = "0fe31fa19d000b95f4aadf1f53fdc2b8a203baa5";
455 };
456 };
457 "cookie-signature-1.0.6" = {
458 name = "cookie-signature";
459 packageName = "cookie-signature";
460 version = "1.0.6";
461 src = fetchurl {
462 url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";
463 sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
464 };
465 };
466 "cookiejar-2.1.2" = {
467 name = "cookiejar";
468 packageName = "cookiejar";
469 version = "2.1.2";
470 src = fetchurl {
471 url = "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz";
472 sha512 = "Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==";
473 };
474 };
475 "core-util-is-1.0.2" = {
476 name = "core-util-is";
477 packageName = "core-util-is";
478 version = "1.0.2";
479 src = fetchurl {
480 url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
481 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
482 };
483 };
484 "crc-3.4.4" = {
485 name = "crc";
486 packageName = "crc";
487 version = "3.4.4";
488 src = fetchurl {
489 url = "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz";
490 sha1 = "9da1e980e3bd44fc5c93bf5ab3da3378d85e466b";
491 };
492 };
493 "crc32-stream-3.0.1" = {
494 name = "crc32-stream";
495 packageName = "crc32-stream";
496 version = "3.0.1";
497 src = fetchurl {
498 url = "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz";
499 sha512 = "mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==";
500 };
501 };
502 "cryptiles-3.1.2" = {
503 name = "cryptiles";
504 packageName = "cryptiles";
505 version = "3.1.2";
506 src = fetchurl {
507 url = "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz";
508 sha1 = "a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe";
509 };
510 };
511 "dashdash-1.14.1" = {
512 name = "dashdash";
513 packageName = "dashdash";
514 version = "1.14.1";
515 src = fetchurl {
516 url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
517 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
518 };
519 };
520 "debug-2.6.9" = {
521 name = "debug";
522 packageName = "debug";
523 version = "2.6.9";
524 src = fetchurl {
525 url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
526 sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
527 };
528 };
529 "debug-4.1.1" = {
530 name = "debug";
531 packageName = "debug";
532 version = "4.1.1";
533 src = fetchurl {
534 url = "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz";
535 sha512 = "pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==";
536 };
537 };
538 "del-2.2.2" = {
539 name = "del";
540 packageName = "del";
541 version = "2.2.2";
542 src = fetchurl {
543 url = "https://registry.npmjs.org/del/-/del-2.2.2.tgz";
544 sha1 = "c12c981d067846c84bcaf862cff930d907ffd1a8";
545 };
546 };
547 "delayed-stream-1.0.0" = {
548 name = "delayed-stream";
549 packageName = "delayed-stream";
550 version = "1.0.0";
551 src = fetchurl {
552 url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
553 sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
554 };
555 };
556 "depd-1.1.0" = {
557 name = "depd";
558 packageName = "depd";
559 version = "1.1.0";
560 src = fetchurl {
561 url = "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz";
562 sha1 = "e1bd82c6aab6ced965b97b88b17ed3e528ca18c3";
563 };
564 };
565 "depd-1.1.1" = {
566 name = "depd";
567 packageName = "depd";
568 version = "1.1.1";
569 src = fetchurl {
570 url = "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz";
571 sha1 = "5783b4e1c459f06fa5ca27f991f3d06e7a310359";
572 };
573 };
574 "depd-1.1.2" = {
575 name = "depd";
576 packageName = "depd";
577 version = "1.1.2";
578 src = fetchurl {
579 url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz";
580 sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
581 };
582 };
583 "destroy-1.0.4" = {
584 name = "destroy";
585 packageName = "destroy";
586 version = "1.0.4";
587 src = fetchurl {
588 url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz";
589 sha1 = "978857442c44749e4206613e37946205826abd80";
590 };
591 };
592 "dtrace-provider-0.8.7" = {
593 name = "dtrace-provider";
594 packageName = "dtrace-provider";
595 version = "0.8.7";
596 src = fetchurl {
597 url = "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.7.tgz";
598 sha1 = "dc939b4d3e0620cfe0c1cd803d0d2d7ed04ffd04";
599 };
600 };
601 "ecc-jsbn-0.1.1" = {
602 name = "ecc-jsbn";
603 packageName = "ecc-jsbn";
604 version = "0.1.1";
605 src = fetchurl {
606 url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz";
607 sha1 = "0fc73a9ed5f0d53c38193398523ef7e543777505";
608 };
609 };
610 "ee-first-1.1.1" = {
611 name = "ee-first";
612 packageName = "ee-first";
613 version = "1.1.1";
614 src = fetchurl {
615 url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
616 sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
617 };
618 };
619 "encodeurl-1.0.2" = {
620 name = "encodeurl";
621 packageName = "encodeurl";
622 version = "1.0.2";
623 src = fetchurl {
624 url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz";
625 sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
626 };
627 };
628 "end-of-stream-1.4.4" = {
629 name = "end-of-stream";
630 packageName = "end-of-stream";
631 version = "1.4.4";
632 src = fetchurl {
633 url = "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz";
634 sha512 = "+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==";
635 };
636 };
637 "escape-html-1.0.3" = {
638 name = "escape-html";
639 packageName = "escape-html";
640 version = "1.0.3";
641 src = fetchurl {
642 url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
643 sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
644 };
645 };
646 "etag-1.8.1" = {
647 name = "etag";
648 packageName = "etag";
649 version = "1.8.1";
650 src = fetchurl {
651 url = "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz";
652 sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
653 };
654 };
655 "express-4.16.2" = {
656 name = "express";
657 packageName = "express";
658 version = "4.16.2";
659 src = fetchurl {
660 url = "https://registry.npmjs.org/express/-/express-4.16.2.tgz";
661 sha1 = "e35c6dfe2d64b7dca0a5cd4f21781be3299e076c";
662 };
663 };
664 "express-session-1.15.6" = {
665 name = "express-session";
666 packageName = "express-session";
667 version = "1.15.6";
668 src = fetchurl {
669 url = "https://registry.npmjs.org/express-session/-/express-session-1.15.6.tgz";
670 sha512 = "r0nrHTCYtAMrFwZ0kBzZEXa1vtPVrw0dKvGSrKP4dahwBQ1BJpF2/y1Pp4sCD/0kvxV4zZeclyvfmw0B4RMJQA==";
671 };
672 };
673 "extend-3.0.2" = {
674 name = "extend";
675 packageName = "extend";
676 version = "3.0.2";
677 src = fetchurl {
678 url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
679 sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
680 };
681 };
682 "extsprintf-1.2.0" = {
683 name = "extsprintf";
684 packageName = "extsprintf";
685 version = "1.2.0";
686 src = fetchurl {
687 url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz";
688 sha1 = "5ad946c22f5b32ba7f8cd7426711c6e8a3fc2529";
689 };
690 };
691 "extsprintf-1.3.0" = {
692 name = "extsprintf";
693 packageName = "extsprintf";
694 version = "1.3.0";
695 src = fetchurl {
696 url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
697 sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
698 };
699 };
700 "fast-deep-equal-1.0.0" = {
701 name = "fast-deep-equal";
702 packageName = "fast-deep-equal";
703 version = "1.0.0";
704 src = fetchurl {
705 url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz";
706 sha1 = "96256a3bc975595eb36d82e9929d060d893439ff";
707 };
708 };
709 "fast-json-stable-stringify-2.0.0" = {
710 name = "fast-json-stable-stringify";
711 packageName = "fast-json-stable-stringify";
712 version = "2.0.0";
713 src = fetchurl {
714 url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";
715 sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
716 };
717 };
718 "fast-safe-stringify-2.0.7" = {
719 name = "fast-safe-stringify";
720 packageName = "fast-safe-stringify";
721 version = "2.0.7";
722 src = fetchurl {
723 url = "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz";
724 sha512 = "Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==";
725 };
726 };
727 "fd-slicer-1.0.1" = {
728 name = "fd-slicer";
729 packageName = "fd-slicer";
730 version = "1.0.1";
731 src = fetchurl {
732 url = "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz";
733 sha1 = "8b5bcbd9ec327c5041bf9ab023fd6750f1177e65";
734 };
735 };
736 "finalhandler-1.1.0" = {
737 name = "finalhandler";
738 packageName = "finalhandler";
739 version = "1.1.0";
740 src = fetchurl {
741 url = "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz";
742 sha1 = "ce0b6855b45853e791b2fcc680046d88253dd7f5";
743 };
744 };
745 "forever-agent-0.6.1" = {
746 name = "forever-agent";
747 packageName = "forever-agent";
748 version = "0.6.1";
749 src = fetchurl {
750 url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
751 sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
752 };
753 };
754 "form-data-2.3.2" = {
755 name = "form-data";
756 packageName = "form-data";
757 version = "2.3.2";
758 src = fetchurl {
759 url = "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz";
760 sha1 = "4970498be604c20c005d4f5c23aecd21d6b49099";
761 };
762 };
763 "form-data-3.0.0" = {
764 name = "form-data";
765 packageName = "form-data";
766 version = "3.0.0";
767 src = fetchurl {
768 url = "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz";
769 sha512 = "CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==";
770 };
771 };
772 "formidable-1.2.1" = {
773 name = "formidable";
774 packageName = "formidable";
775 version = "1.2.1";
776 src = fetchurl {
777 url = "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz";
778 sha512 = "Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==";
779 };
780 };
781 "forwarded-0.1.2" = {
782 name = "forwarded";
783 packageName = "forwarded";
784 version = "0.1.2";
785 src = fetchurl {
786 url = "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz";
787 sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
788 };
789 };
790 "fresh-0.5.2" = {
791 name = "fresh";
792 packageName = "fresh";
793 version = "0.5.2";
794 src = fetchurl {
795 url = "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz";
796 sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
797 };
798 };
799 "fs-constants-1.0.0" = {
800 name = "fs-constants";
801 packageName = "fs-constants";
802 version = "1.0.0";
803 src = fetchurl {
804 url = "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz";
805 sha512 = "y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==";
806 };
807 };
808 "fs.realpath-1.0.0" = {
809 name = "fs.realpath";
810 packageName = "fs.realpath";
811 version = "1.0.0";
812 src = fetchurl {
813 url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
814 sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
815 };
816 };
817 "getpass-0.1.7" = {
818 name = "getpass";
819 packageName = "getpass";
820 version = "0.1.7";
821 src = fetchurl {
822 url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
823 sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
824 };
825 };
826 "glob-6.0.4" = {
827 name = "glob";
828 packageName = "glob";
829 version = "6.0.4";
830 src = fetchurl {
831 url = "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz";
832 sha1 = "0f08860f6a155127b2fadd4f9ce24b1aab6e4d22";
833 };
834 };
835 "glob-7.1.2" = {
836 name = "glob";
837 packageName = "glob";
838 version = "7.1.2";
839 src = fetchurl {
840 url = "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz";
841 sha1 = "c19c9df9a028702d678612384a6552404c636d15";
842 };
843 };
844 "glob-7.1.6" = {
845 name = "glob";
846 packageName = "glob";
847 version = "7.1.6";
848 src = fetchurl {
849 url = "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz";
850 sha512 = "LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==";
851 };
852 };
853 "globby-5.0.0" = {
854 name = "globby";
855 packageName = "globby";
856 version = "5.0.0";
857 src = fetchurl {
858 url = "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz";
859 sha1 = "ebd84667ca0dbb330b99bcfc68eac2bc54370e0d";
860 };
861 };
862 "graceful-fs-4.2.4" = {
863 name = "graceful-fs";
864 packageName = "graceful-fs";
865 version = "4.2.4";
866 src = fetchurl {
867 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz";
868 sha512 = "WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==";
869 };
870 };
871 "har-schema-2.0.0" = {
872 name = "har-schema";
873 packageName = "har-schema";
874 version = "2.0.0";
875 src = fetchurl {
876 url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
877 sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
878 };
879 };
880 "har-validator-5.0.3" = {
881 name = "har-validator";
882 packageName = "har-validator";
883 version = "5.0.3";
884 src = fetchurl {
885 url = "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz";
886 sha1 = "ba402c266194f15956ef15e0fcf242993f6a7dfd";
887 };
888 };
889 "hawk-6.0.2" = {
890 name = "hawk";
891 packageName = "hawk";
892 version = "6.0.2";
893 src = fetchurl {
894 url = "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz";
895 sha512 = "miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==";
896 };
897 };
898 "hoek-4.2.1" = {
899 name = "hoek";
900 packageName = "hoek";
901 version = "4.2.1";
902 src = fetchurl {
903 url = "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz";
904 sha512 = "QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==";
905 };
906 };
907 "http-errors-1.6.1" = {
908 name = "http-errors";
909 packageName = "http-errors";
910 version = "1.6.1";
911 src = fetchurl {
912 url = "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz";
913 sha1 = "5f8b8ed98aca545656bf572997387f904a722257";
914 };
915 };
916 "http-errors-1.6.2" = {
917 name = "http-errors";
918 packageName = "http-errors";
919 version = "1.6.2";
920 src = fetchurl {
921 url = "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz";
922 sha1 = "0a002cc85707192a7e7946ceedc11155f60ec736";
923 };
924 };
925 "http-errors-1.6.3" = {
926 name = "http-errors";
927 packageName = "http-errors";
928 version = "1.6.3";
929 src = fetchurl {
930 url = "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz";
931 sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
932 };
933 };
934 "http-signature-1.2.0" = {
935 name = "http-signature";
936 packageName = "http-signature";
937 version = "1.2.0";
938 src = fetchurl {
939 url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
940 sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
941 };
942 };
943 "iconv-lite-0.4.19" = {
944 name = "iconv-lite";
945 packageName = "iconv-lite";
946 version = "0.4.19";
947 src = fetchurl {
948 url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz";
949 sha512 = "oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==";
950 };
951 };
952 "ieee754-1.1.13" = {
953 name = "ieee754";
954 packageName = "ieee754";
955 version = "1.1.13";
956 src = fetchurl {
957 url = "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz";
958 sha512 = "4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==";
959 };
960 };
961 "inflight-1.0.6" = {
962 name = "inflight";
963 packageName = "inflight";
964 version = "1.0.6";
965 src = fetchurl {
966 url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
967 sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
968 };
969 };
970 "inherits-2.0.3" = {
971 name = "inherits";
972 packageName = "inherits";
973 version = "2.0.3";
974 src = fetchurl {
975 url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
976 sha1 = "633c2c83e3da42a502f52466022480f4208261de";
977 };
978 };
979 "inherits-2.0.4" = {
980 name = "inherits";
981 packageName = "inherits";
982 version = "2.0.4";
983 src = fetchurl {
984 url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
985 sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
986 };
987 };
988 "ipaddr.js-1.5.2" = {
989 name = "ipaddr.js";
990 packageName = "ipaddr.js";
991 version = "1.5.2";
992 src = fetchurl {
993 url = "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz";
994 sha1 = "d4b505bde9946987ccf0fc58d9010ff9607e3fa0";
995 };
996 };
997 "is-path-cwd-1.0.0" = {
998 name = "is-path-cwd";
999 packageName = "is-path-cwd";
1000 version = "1.0.0";
1001 src = fetchurl {
1002 url = "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz";
1003 sha1 = "d225ec23132e89edd38fda767472e62e65f1106d";
1004 };
1005 };
1006 "is-path-in-cwd-1.0.0" = {
1007 name = "is-path-in-cwd";
1008 packageName = "is-path-in-cwd";
1009 version = "1.0.0";
1010 src = fetchurl {
1011 url = "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz";
1012 sha1 = "6477582b8214d602346094567003be8a9eac04dc";
1013 };
1014 };
1015 "is-path-inside-1.0.0" = {
1016 name = "is-path-inside";
1017 packageName = "is-path-inside";
1018 version = "1.0.0";
1019 src = fetchurl {
1020 url = "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz";
1021 sha1 = "fc06e5a1683fbda13de667aff717bbc10a48f37f";
1022 };
1023 };
1024 "is-typedarray-1.0.0" = {
1025 name = "is-typedarray";
1026 packageName = "is-typedarray";
1027 version = "1.0.0";
1028 src = fetchurl {
1029 url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
1030 sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
1031 };
1032 };
1033 "isarray-1.0.0" = {
1034 name = "isarray";
1035 packageName = "isarray";
1036 version = "1.0.0";
1037 src = fetchurl {
1038 url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
1039 sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
1040 };
1041 };
1042 "isstream-0.1.2" = {
1043 name = "isstream";
1044 packageName = "isstream";
1045 version = "0.1.2";
1046 src = fetchurl {
1047 url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
1048 sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
1049 };
1050 };
1051 "jsbn-0.1.1" = {
1052 name = "jsbn";
1053 packageName = "jsbn";
1054 version = "0.1.1";
1055 src = fetchurl {
1056 url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
1057 sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
1058 };
1059 };
1060 "json-schema-0.2.3" = {
1061 name = "json-schema";
1062 packageName = "json-schema";
1063 version = "0.2.3";
1064 src = fetchurl {
1065 url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
1066 sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
1067 };
1068 };
1069 "json-schema-traverse-0.3.1" = {
1070 name = "json-schema-traverse";
1071 packageName = "json-schema-traverse";
1072 version = "0.3.1";
1073 src = fetchurl {
1074 url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz";
1075 sha1 = "349a6d44c53a51de89b40805c5d5e59b417d3340";
1076 };
1077 };
1078 "json-stringify-safe-5.0.1" = {
1079 name = "json-stringify-safe";
1080 packageName = "json-stringify-safe";
1081 version = "5.0.1";
1082 src = fetchurl {
1083 url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
1084 sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
1085 };
1086 };
1087 "jsprim-1.4.1" = {
1088 name = "jsprim";
1089 packageName = "jsprim";
1090 version = "1.4.1";
1091 src = fetchurl {
1092 url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
1093 sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
1094 };
1095 };
1096 "lazystream-1.0.0" = {
1097 name = "lazystream";
1098 packageName = "lazystream";
1099 version = "1.0.0";
1100 src = fetchurl {
1101 url = "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz";
1102 sha1 = "f6995fe0f820392f61396be89462407bb77168e4";
1103 };
1104 };
1105 "ldap-filter-0.2.2" = {
1106 name = "ldap-filter";
1107 packageName = "ldap-filter";
1108 version = "0.2.2";
1109 src = fetchurl {
1110 url = "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz";
1111 sha1 = "f2b842be0b86da3352798505b31ebcae590d77d0";
1112 };
1113 };
1114 "ldapjs-1.0.2" = {
1115 name = "ldapjs";
1116 packageName = "ldapjs";
1117 version = "1.0.2";
1118 src = fetchurl {
1119 url = "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.2.tgz";
1120 sha1 = "544ff7032b7b83c68f0701328d9297aa694340f9";
1121 };
1122 };
1123 "lodash-4.17.15" = {
1124 name = "lodash";
1125 packageName = "lodash";
1126 version = "4.17.15";
1127 src = fetchurl {
1128 url = "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz";
1129 sha512 = "8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==";
1130 };
1131 };
1132 "lodash.defaults-4.2.0" = {
1133 name = "lodash.defaults";
1134 packageName = "lodash.defaults";
1135 version = "4.2.0";
1136 src = fetchurl {
1137 url = "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz";
1138 sha1 = "d09178716ffea4dde9e5fb7b37f6f0802274580c";
1139 };
1140 };
1141 "lodash.difference-4.5.0" = {
1142 name = "lodash.difference";
1143 packageName = "lodash.difference";
1144 version = "4.5.0";
1145 src = fetchurl {
1146 url = "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz";
1147 sha1 = "9ccb4e505d486b91651345772885a2df27fd017c";
1148 };
1149 };
1150 "lodash.flatten-4.4.0" = {
1151 name = "lodash.flatten";
1152 packageName = "lodash.flatten";
1153 version = "4.4.0";
1154 src = fetchurl {
1155 url = "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz";
1156 sha1 = "f31c22225a9632d2bbf8e4addbef240aa765a61f";
1157 };
1158 };
1159 "lodash.isplainobject-4.0.6" = {
1160 name = "lodash.isplainobject";
1161 packageName = "lodash.isplainobject";
1162 version = "4.0.6";
1163 src = fetchurl {
1164 url = "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz";
1165 sha1 = "7c526a52d89b45c45cc690b88163be0497f550cb";
1166 };
1167 };
1168 "lodash.union-4.6.0" = {
1169 name = "lodash.union";
1170 packageName = "lodash.union";
1171 version = "4.6.0";
1172 src = fetchurl {
1173 url = "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz";
1174 sha1 = "48bb5088409f16f1821666641c44dd1aaae3cd88";
1175 };
1176 };
1177 "media-typer-0.3.0" = {
1178 name = "media-typer";
1179 packageName = "media-typer";
1180 version = "0.3.0";
1181 src = fetchurl {
1182 url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz";
1183 sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
1184 };
1185 };
1186 "merge-descriptors-1.0.1" = {
1187 name = "merge-descriptors";
1188 packageName = "merge-descriptors";
1189 version = "1.0.1";
1190 src = fetchurl {
1191 url = "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
1192 sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
1193 };
1194 };
1195 "methods-1.1.2" = {
1196 name = "methods";
1197 packageName = "methods";
1198 version = "1.1.2";
1199 src = fetchurl {
1200 url = "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz";
1201 sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
1202 };
1203 };
1204 "mime-1.4.1" = {
1205 name = "mime";
1206 packageName = "mime";
1207 version = "1.4.1";
1208 src = fetchurl {
1209 url = "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz";
1210 sha512 = "KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==";
1211 };
1212 };
1213 "mime-2.4.4" = {
1214 name = "mime";
1215 packageName = "mime";
1216 version = "2.4.4";
1217 src = fetchurl {
1218 url = "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz";
1219 sha512 = "LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==";
1220 };
1221 };
1222 "mime-db-1.27.0" = {
1223 name = "mime-db";
1224 packageName = "mime-db";
1225 version = "1.27.0";
1226 src = fetchurl {
1227 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz";
1228 sha1 = "820f572296bbd20ec25ed55e5b5de869e5436eb1";
1229 };
1230 };
1231 "mime-db-1.33.0" = {
1232 name = "mime-db";
1233 packageName = "mime-db";
1234 version = "1.33.0";
1235 src = fetchurl {
1236 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz";
1237 sha512 = "BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==";
1238 };
1239 };
1240 "mime-db-1.38.0" = {
1241 name = "mime-db";
1242 packageName = "mime-db";
1243 version = "1.38.0";
1244 src = fetchurl {
1245 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz";
1246 sha512 = "bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==";
1247 };
1248 };
1249 "mime-db-1.44.0" = {
1250 name = "mime-db";
1251 packageName = "mime-db";
1252 version = "1.44.0";
1253 src = fetchurl {
1254 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz";
1255 sha512 = "/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==";
1256 };
1257 };
1258 "mime-types-2.1.15" = {
1259 name = "mime-types";
1260 packageName = "mime-types";
1261 version = "2.1.15";
1262 src = fetchurl {
1263 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz";
1264 sha1 = "a4ebf5064094569237b8cf70046776d09fc92aed";
1265 };
1266 };
1267 "mime-types-2.1.18" = {
1268 name = "mime-types";
1269 packageName = "mime-types";
1270 version = "2.1.18";
1271 src = fetchurl {
1272 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz";
1273 sha512 = "lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==";
1274 };
1275 };
1276 "mime-types-2.1.22" = {
1277 name = "mime-types";
1278 packageName = "mime-types";
1279 version = "2.1.22";
1280 src = fetchurl {
1281 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz";
1282 sha512 = "aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==";
1283 };
1284 };
1285 "mime-types-2.1.27" = {
1286 name = "mime-types";
1287 packageName = "mime-types";
1288 version = "2.1.27";
1289 src = fetchurl {
1290 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz";
1291 sha512 = "JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==";
1292 };
1293 };
1294 "minimatch-3.0.4" = {
1295 name = "minimatch";
1296 packageName = "minimatch";
1297 version = "3.0.4";
1298 src = fetchurl {
1299 url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
1300 sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
1301 };
1302 };
1303 "minimist-0.0.8" = {
1304 name = "minimist";
1305 packageName = "minimist";
1306 version = "0.0.8";
1307 src = fetchurl {
1308 url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
1309 sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
1310 };
1311 };
1312 "mkdirp-0.5.1" = {
1313 name = "mkdirp";
1314 packageName = "mkdirp";
1315 version = "0.5.1";
1316 src = fetchurl {
1317 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
1318 sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
1319 };
1320 };
1321 "moment-2.24.0" = {
1322 name = "moment";
1323 packageName = "moment";
1324 version = "2.24.0";
1325 src = fetchurl {
1326 url = "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz";
1327 sha512 = "bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==";
1328 };
1329 };
1330 "morgan-1.9.1" = {
1331 name = "morgan";
1332 packageName = "morgan";
1333 version = "1.9.1";
1334 src = fetchurl {
1335 url = "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz";
1336 sha512 = "HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==";
1337 };
1338 };
1339 "ms-2.0.0" = {
1340 name = "ms";
1341 packageName = "ms";
1342 version = "2.0.0";
1343 src = fetchurl {
1344 url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
1345 sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
1346 };
1347 };
1348 "ms-2.1.2" = {
1349 name = "ms";
1350 packageName = "ms";
1351 version = "2.1.2";
1352 src = fetchurl {
1353 url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
1354 sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
1355 };
1356 };
1357 "multiparty-4.1.3" = {
1358 name = "multiparty";
1359 packageName = "multiparty";
1360 version = "4.1.3";
1361 src = fetchurl {
1362 url = "https://registry.npmjs.org/multiparty/-/multiparty-4.1.3.tgz";
1363 sha1 = "3c43c7fcb1896e17460436a9dd0b6ef1668e4f94";
1364 };
1365 };
1366 "mv-2.1.1" = {
1367 name = "mv";
1368 packageName = "mv";
1369 version = "2.1.1";
1370 src = fetchurl {
1371 url = "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz";
1372 sha1 = "ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2";
1373 };
1374 };
1375 "nan-2.12.1" = {
1376 name = "nan";
1377 packageName = "nan";
1378 version = "2.12.1";
1379 src = fetchurl {
1380 url = "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz";
1381 sha512 = "JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==";
1382 };
1383 };
1384 "ncp-2.0.0" = {
1385 name = "ncp";
1386 packageName = "ncp";
1387 version = "2.0.0";
1388 src = fetchurl {
1389 url = "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz";
1390 sha1 = "195a21d6c46e361d2fb1281ba38b91e9df7bdbb3";
1391 };
1392 };
1393 "negotiator-0.6.1" = {
1394 name = "negotiator";
1395 packageName = "negotiator";
1396 version = "0.6.1";
1397 src = fetchurl {
1398 url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz";
1399 sha1 = "2b327184e8992101177b28563fb5e7102acd0ca9";
1400 };
1401 };
1402 "normalize-path-3.0.0" = {
1403 name = "normalize-path";
1404 packageName = "normalize-path";
1405 version = "3.0.0";
1406 src = fetchurl {
1407 url = "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz";
1408 sha512 = "6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==";
1409 };
1410 };
1411 "oauth-sign-0.8.2" = {
1412 name = "oauth-sign";
1413 packageName = "oauth-sign";
1414 version = "0.8.2";
1415 src = fetchurl {
1416 url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz";
1417 sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43";
1418 };
1419 };
1420 "object-assign-4.1.1" = {
1421 name = "object-assign";
1422 packageName = "object-assign";
1423 version = "4.1.1";
1424 src = fetchurl {
1425 url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
1426 sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
1427 };
1428 };
1429 "on-finished-2.3.0" = {
1430 name = "on-finished";
1431 packageName = "on-finished";
1432 version = "2.3.0";
1433 src = fetchurl {
1434 url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
1435 sha1 = "20f1336481b083cd75337992a16971aa2d906947";
1436 };
1437 };
1438 "on-headers-1.0.1" = {
1439 name = "on-headers";
1440 packageName = "on-headers";
1441 version = "1.0.1";
1442 src = fetchurl {
1443 url = "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz";
1444 sha1 = "928f5d0f470d49342651ea6794b0857c100693f7";
1445 };
1446 };
1447 "once-1.4.0" = {
1448 name = "once";
1449 packageName = "once";
1450 version = "1.4.0";
1451 src = fetchurl {
1452 url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
1453 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
1454 };
1455 };
1456 "parseurl-1.3.2" = {
1457 name = "parseurl";
1458 packageName = "parseurl";
1459 version = "1.3.2";
1460 src = fetchurl {
1461 url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz";
1462 sha1 = "fc289d4ed8993119460c156253262cdc8de65bf3";
1463 };
1464 };
1465 "path-is-absolute-1.0.1" = {
1466 name = "path-is-absolute";
1467 packageName = "path-is-absolute";
1468 version = "1.0.1";
1469 src = fetchurl {
1470 url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
1471 sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
1472 };
1473 };
1474 "path-is-inside-1.0.2" = {
1475 name = "path-is-inside";
1476 packageName = "path-is-inside";
1477 version = "1.0.2";
1478 src = fetchurl {
1479 url = "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz";
1480 sha1 = "365417dede44430d1c11af61027facf074bdfc53";
1481 };
1482 };
1483 "path-to-regexp-0.1.7" = {
1484 name = "path-to-regexp";
1485 packageName = "path-to-regexp";
1486 version = "0.1.7";
1487 src = fetchurl {
1488 url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
1489 sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
1490 };
1491 };
1492 "pend-1.2.0" = {
1493 name = "pend";
1494 packageName = "pend";
1495 version = "1.2.0";
1496 src = fetchurl {
1497 url = "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz";
1498 sha1 = "7a57eb550a6783f9115331fcf4663d5c8e007a50";
1499 };
1500 };
1501 "performance-now-2.1.0" = {
1502 name = "performance-now";
1503 packageName = "performance-now";
1504 version = "2.1.0";
1505 src = fetchurl {
1506 url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
1507 sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
1508 };
1509 };
1510 "pify-2.3.0" = {
1511 name = "pify";
1512 packageName = "pify";
1513 version = "2.3.0";
1514 src = fetchurl {
1515 url = "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz";
1516 sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
1517 };
1518 };
1519 "pinkie-2.0.4" = {
1520 name = "pinkie";
1521 packageName = "pinkie";
1522 version = "2.0.4";
1523 src = fetchurl {
1524 url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz";
1525 sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
1526 };
1527 };
1528 "pinkie-promise-2.0.1" = {
1529 name = "pinkie-promise";
1530 packageName = "pinkie-promise";
1531 version = "2.0.1";
1532 src = fetchurl {
1533 url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
1534 sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
1535 };
1536 };
1537 "precond-0.2.3" = {
1538 name = "precond";
1539 packageName = "precond";
1540 version = "0.2.3";
1541 src = fetchurl {
1542 url = "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz";
1543 sha1 = "aa9591bcaa24923f1e0f4849d240f47efc1075ac";
1544 };
1545 };
1546 "process-nextick-args-2.0.1" = {
1547 name = "process-nextick-args";
1548 packageName = "process-nextick-args";
1549 version = "2.0.1";
1550 src = fetchurl {
1551 url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz";
1552 sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==";
1553 };
1554 };
1555 "proxy-addr-2.0.2" = {
1556 name = "proxy-addr";
1557 packageName = "proxy-addr";
1558 version = "2.0.2";
1559 src = fetchurl {
1560 url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz";
1561 sha1 = "6571504f47bb988ec8180253f85dd7e14952bdec";
1562 };
1563 };
1564 "punycode-1.4.1" = {
1565 name = "punycode";
1566 packageName = "punycode";
1567 version = "1.4.1";
1568 src = fetchurl {
1569 url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
1570 sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
1571 };
1572 };
1573 "qs-6.5.1" = {
1574 name = "qs";
1575 packageName = "qs";
1576 version = "6.5.1";
1577 src = fetchurl {
1578 url = "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz";
1579 sha512 = "eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==";
1580 };
1581 };
1582 "qs-6.9.1" = {
1583 name = "qs";
1584 packageName = "qs";
1585 version = "6.9.1";
1586 src = fetchurl {
1587 url = "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz";
1588 sha512 = "Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==";
1589 };
1590 };
1591 "random-bytes-1.0.0" = {
1592 name = "random-bytes";
1593 packageName = "random-bytes";
1594 version = "1.0.0";
1595 src = fetchurl {
1596 url = "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz";
1597 sha1 = "4f68a1dc0ae58bd3fb95848c30324db75d64360b";
1598 };
1599 };
1600 "range-parser-1.2.0" = {
1601 name = "range-parser";
1602 packageName = "range-parser";
1603 version = "1.2.0";
1604 src = fetchurl {
1605 url = "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz";
1606 sha1 = "f49be6b487894ddc40dcc94a322f611092e00d5e";
1607 };
1608 };
1609 "raw-body-2.3.2" = {
1610 name = "raw-body";
1611 packageName = "raw-body";
1612 version = "2.3.2";
1613 src = fetchurl {
1614 url = "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz";
1615 sha1 = "bcd60c77d3eb93cde0050295c3f379389bc88f89";
1616 };
1617 };
1618 "readable-stream-2.3.7" = {
1619 name = "readable-stream";
1620 packageName = "readable-stream";
1621 version = "2.3.7";
1622 src = fetchurl {
1623 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz";
1624 sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
1625 };
1626 };
1627 "readable-stream-3.4.0" = {
1628 name = "readable-stream";
1629 packageName = "readable-stream";
1630 version = "3.4.0";
1631 src = fetchurl {
1632 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz";
1633 sha512 = "jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==";
1634 };
1635 };
1636 "readable-stream-3.6.0" = {
1637 name = "readable-stream";
1638 packageName = "readable-stream";
1639 version = "3.6.0";
1640 src = fetchurl {
1641 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz";
1642 sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==";
1643 };
1644 };
1645 "readline-sync-1.4.9" = {
1646 name = "readline-sync";
1647 packageName = "readline-sync";
1648 version = "1.4.9";
1649 src = fetchurl {
1650 url = "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.9.tgz";
1651 sha1 = "3eda8e65f23cd2a17e61301b1f0003396af5ecda";
1652 };
1653 };
1654 "request-2.83.0" = {
1655 name = "request";
1656 packageName = "request";
1657 version = "2.83.0";
1658 src = fetchurl {
1659 url = "https://registry.npmjs.org/request/-/request-2.83.0.tgz";
1660 sha512 = "lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==";
1661 };
1662 };
1663 "rimraf-2.4.5" = {
1664 name = "rimraf";
1665 packageName = "rimraf";
1666 version = "2.4.5";
1667 src = fetchurl {
1668 url = "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz";
1669 sha1 = "ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da";
1670 };
1671 };
1672 "rimraf-2.6.1" = {
1673 name = "rimraf";
1674 packageName = "rimraf";
1675 version = "2.6.1";
1676 src = fetchurl {
1677 url = "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz";
1678 sha1 = "c2338ec643df7a1b7fe5c54fa86f57428a55f33d";
1679 };
1680 };
1681 "safe-buffer-5.1.1" = {
1682 name = "safe-buffer";
1683 packageName = "safe-buffer";
1684 version = "5.1.1";
1685 src = fetchurl {
1686 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz";
1687 sha512 = "kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==";
1688 };
1689 };
1690 "safe-buffer-5.1.2" = {
1691 name = "safe-buffer";
1692 packageName = "safe-buffer";
1693 version = "5.1.2";
1694 src = fetchurl {
1695 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
1696 sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
1697 };
1698 };
1699 "safe-buffer-5.2.0" = {
1700 name = "safe-buffer";
1701 packageName = "safe-buffer";
1702 version = "5.2.0";
1703 src = fetchurl {
1704 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz";
1705 sha512 = "fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==";
1706 };
1707 };
1708 "safe-json-stringify-1.2.0" = {
1709 name = "safe-json-stringify";
1710 packageName = "safe-json-stringify";
1711 version = "1.2.0";
1712 src = fetchurl {
1713 url = "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz";
1714 sha512 = "gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==";
1715 };
1716 };
1717 "safer-buffer-2.1.2" = {
1718 name = "safer-buffer";
1719 packageName = "safer-buffer";
1720 version = "2.1.2";
1721 src = fetchurl {
1722 url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
1723 sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
1724 };
1725 };
1726 "safetydance-0.1.1" = {
1727 name = "safetydance";
1728 packageName = "safetydance";
1729 version = "0.1.1";
1730 src = fetchurl {
1731 url = "https://registry.npmjs.org/safetydance/-/safetydance-0.1.1.tgz";
1732 sha1 = "1588c69133a7c69cddfd6a2d1d334381d0b7b2f7";
1733 };
1734 };
1735 "sax-1.2.4" = {
1736 name = "sax";
1737 packageName = "sax";
1738 version = "1.2.4";
1739 src = fetchurl {
1740 url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz";
1741 sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==";
1742 };
1743 };
1744 "semver-6.3.0" = {
1745 name = "semver";
1746 packageName = "semver";
1747 version = "6.3.0";
1748 src = fetchurl {
1749 url = "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz";
1750 sha512 = "b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==";
1751 };
1752 };
1753 "send-0.16.1" = {
1754 name = "send";
1755 packageName = "send";
1756 version = "0.16.1";
1757 src = fetchurl {
1758 url = "https://registry.npmjs.org/send/-/send-0.16.1.tgz";
1759 sha512 = "ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==";
1760 };
1761 };
1762 "serve-index-1.9.1" = {
1763 name = "serve-index";
1764 packageName = "serve-index";
1765 version = "1.9.1";
1766 src = fetchurl {
1767 url = "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz";
1768 sha1 = "d3768d69b1e7d82e5ce050fff5b453bea12a9239";
1769 };
1770 };
1771 "serve-static-1.13.1" = {
1772 name = "serve-static";
1773 packageName = "serve-static";
1774 version = "1.13.1";
1775 src = fetchurl {
1776 url = "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz";
1777 sha512 = "hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==";
1778 };
1779 };
1780 "setprototypeof-1.0.3" = {
1781 name = "setprototypeof";
1782 packageName = "setprototypeof";
1783 version = "1.0.3";
1784 src = fetchurl {
1785 url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz";
1786 sha1 = "66567e37043eeb4f04d91bd658c0cbefb55b8e04";
1787 };
1788 };
1789 "setprototypeof-1.1.0" = {
1790 name = "setprototypeof";
1791 packageName = "setprototypeof";
1792 version = "1.1.0";
1793 src = fetchurl {
1794 url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz";
1795 sha512 = "BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==";
1796 };
1797 };
1798 "sntp-2.1.0" = {
1799 name = "sntp";
1800 packageName = "sntp";
1801 version = "2.1.0";
1802 src = fetchurl {
1803 url = "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz";
1804 sha512 = "FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==";
1805 };
1806 };
1807 "sshpk-1.16.1" = {
1808 name = "sshpk";
1809 packageName = "sshpk";
1810 version = "1.16.1";
1811 src = fetchurl {
1812 url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
1813 sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
1814 };
1815 };
1816 "statuses-1.3.1" = {
1817 name = "statuses";
1818 packageName = "statuses";
1819 version = "1.3.1";
1820 src = fetchurl {
1821 url = "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz";
1822 sha1 = "faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e";
1823 };
1824 };
1825 "statuses-1.5.0" = {
1826 name = "statuses";
1827 packageName = "statuses";
1828 version = "1.5.0";
1829 src = fetchurl {
1830 url = "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz";
1831 sha1 = "161c7dac177659fd9811f43771fa99381478628c";
1832 };
1833 };
1834 "string_decoder-1.1.1" = {
1835 name = "string_decoder";
1836 packageName = "string_decoder";
1837 version = "1.1.1";
1838 src = fetchurl {
1839 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
1840 sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
1841 };
1842 };
1843 "string_decoder-1.3.0" = {
1844 name = "string_decoder";
1845 packageName = "string_decoder";
1846 version = "1.3.0";
1847 src = fetchurl {
1848 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz";
1849 sha512 = "hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==";
1850 };
1851 };
1852 "stringstream-0.0.6" = {
1853 name = "stringstream";
1854 packageName = "stringstream";
1855 version = "0.0.6";
1856 src = fetchurl {
1857 url = "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz";
1858 sha512 = "87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==";
1859 };
1860 };
1861 "superagent-5.1.3" = {
1862 name = "superagent";
1863 packageName = "superagent";
1864 version = "5.1.3";
1865 src = fetchurl {
1866 url = "https://registry.npmjs.org/superagent/-/superagent-5.1.3.tgz";
1867 sha512 = "2bno1Nb4uvZPECTJ7NDYlae6Q8LLQoZZZ9Vumd346jU1UGVkNC/lQI42jHwtrqVoepyt0QxNKFty01IRKgD4CA==";
1868 };
1869 };
1870 "tar-stream-2.1.2" = {
1871 name = "tar-stream";
1872 packageName = "tar-stream";
1873 version = "2.1.2";
1874 src = fetchurl {
1875 url = "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz";
1876 sha512 = "UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==";
1877 };
1878 };
1879 "tough-cookie-2.3.3" = {
1880 name = "tough-cookie";
1881 packageName = "tough-cookie";
1882 version = "2.3.3";
1883 src = fetchurl {
1884 url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz";
1885 sha1 = "0b618a5565b6dea90bf3425d04d55edc475a7561";
1886 };
1887 };
1888 "tunnel-agent-0.6.0" = {
1889 name = "tunnel-agent";
1890 packageName = "tunnel-agent";
1891 version = "0.6.0";
1892 src = fetchurl {
1893 url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
1894 sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
1895 };
1896 };
1897 "tweetnacl-0.14.5" = {
1898 name = "tweetnacl";
1899 packageName = "tweetnacl";
1900 version = "0.14.5";
1901 src = fetchurl {
1902 url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
1903 sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
1904 };
1905 };
1906 "type-is-1.6.16" = {
1907 name = "type-is";
1908 packageName = "type-is";
1909 version = "1.6.16";
1910 src = fetchurl {
1911 url = "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz";
1912 sha512 = "HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==";
1913 };
1914 };
1915 "uid-safe-2.1.5" = {
1916 name = "uid-safe";
1917 packageName = "uid-safe";
1918 version = "2.1.5";
1919 src = fetchurl {
1920 url = "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz";
1921 sha512 = "KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==";
1922 };
1923 };
1924 "underscore-1.8.3" = {
1925 name = "underscore";
1926 packageName = "underscore";
1927 version = "1.8.3";
1928 src = fetchurl {
1929 url = "http://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz";
1930 sha1 = "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022";
1931 };
1932 };
1933 "underscore-1.9.1" = {
1934 name = "underscore";
1935 packageName = "underscore";
1936 version = "1.9.1";
1937 src = fetchurl {
1938 url = "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz";
1939 sha512 = "5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==";
1940 };
1941 };
1942 "unpipe-1.0.0" = {
1943 name = "unpipe";
1944 packageName = "unpipe";
1945 version = "1.0.0";
1946 src = fetchurl {
1947 url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz";
1948 sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
1949 };
1950 };
1951 "util-deprecate-1.0.2" = {
1952 name = "util-deprecate";
1953 packageName = "util-deprecate";
1954 version = "1.0.2";
1955 src = fetchurl {
1956 url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
1957 sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
1958 };
1959 };
1960 "utils-merge-1.0.1" = {
1961 name = "utils-merge";
1962 packageName = "utils-merge";
1963 version = "1.0.1";
1964 src = fetchurl {
1965 url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz";
1966 sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
1967 };
1968 };
1969 "uuid-3.2.1" = {
1970 name = "uuid";
1971 packageName = "uuid";
1972 version = "3.2.1";
1973 src = fetchurl {
1974 url = "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz";
1975 sha512 = "jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==";
1976 };
1977 };
1978 "vary-1.1.2" = {
1979 name = "vary";
1980 packageName = "vary";
1981 version = "1.1.2";
1982 src = fetchurl {
1983 url = "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz";
1984 sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
1985 };
1986 };
1987 "vasync-1.6.4" = {
1988 name = "vasync";
1989 packageName = "vasync";
1990 version = "1.6.4";
1991 src = fetchurl {
1992 url = "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz";
1993 sha1 = "dfe93616ad0e7ae801b332a9d88bfc5cdc8e1d1f";
1994 };
1995 };
1996 "verror-1.10.0" = {
1997 name = "verror";
1998 packageName = "verror";
1999 version = "1.10.0";
2000 src = fetchurl {
2001 url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
2002 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
2003 };
2004 };
2005 "verror-1.6.0" = {
2006 name = "verror";
2007 packageName = "verror";
2008 version = "1.6.0";
2009 src = fetchurl {
2010 url = "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz";
2011 sha1 = "7d13b27b1facc2e2da90405eb5ea6e5bdd252ea5";
2012 };
2013 };
2014 "webdav-server-2.4.6" = {
2015 name = "webdav-server";
2016 packageName = "webdav-server";
2017 version = "2.4.6";
2018 src = fetchurl {
2019 url = "https://registry.npmjs.org/webdav-server/-/webdav-server-2.4.6.tgz";
2020 sha512 = "YhqjqlQdD4H55UEnRgk99a9epTuulKMW05m6KBTtG6fBXcc4/2H87F2DRJHH7a33PibNn3jWv8u9AgcMHLGUrw==";
2021 };
2022 };
2023 "wrappy-1.0.2" = {
2024 name = "wrappy";
2025 packageName = "wrappy";
2026 version = "1.0.2";
2027 src = fetchurl {
2028 url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
2029 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
2030 };
2031 };
2032 "xml-js-1.6.11" = {
2033 name = "xml-js";
2034 packageName = "xml-js";
2035 version = "1.6.11";
2036 src = fetchurl {
2037 url = "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz";
2038 sha512 = "7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==";
2039 };
2040 };
2041 "xml-js-builder-1.0.3" = {
2042 name = "xml-js-builder";
2043 packageName = "xml-js-builder";
2044 version = "1.0.3";
2045 src = fetchurl {
2046 url = "https://registry.npmjs.org/xml-js-builder/-/xml-js-builder-1.0.3.tgz";
2047 sha512 = "BoLgG/glT45M0jK5PGh9h+iGrQxa8jJk9ofR63GroRifl2tbGB3/yYiVY3wQWHrZgWWfl9+7fhEB/VoD9mWnSg==";
2048 };
2049 };
2050 "zip-stream-3.0.1" = {
2051 name = "zip-stream";
2052 packageName = "zip-stream";
2053 version = "3.0.1";
2054 src = fetchurl {
2055 url = "https://registry.npmjs.org/zip-stream/-/zip-stream-3.0.1.tgz";
2056 sha512 = "r+JdDipt93ttDjsOVPU5zaq5bAyY+3H19bDrThkvuVxC0xMQzU1PJcS6D+KrP3u96gH9XLomcHPb+2skoDjulQ==";
2057 };
2058 };
2059 };
2060 args = {
2061 name = "cloudron-surfer";
2062 packageName = "cloudron-surfer";
2063 version = "5.10.0";
2064 inherit src;
2065 dependencies = [
2066 (sources."accepts-1.3.4" // {
2067 dependencies = [
2068 sources."mime-db-1.33.0"
2069 sources."mime-types-2.1.18"
2070 ];
2071 })
2072 sources."ajv-5.5.2"
2073 (sources."archiver-4.0.1" // {
2074 dependencies = [
2075 sources."async-2.6.3"
2076 sources."glob-7.1.6"
2077 sources."readable-stream-3.6.0"
2078 ];
2079 })
2080 (sources."archiver-utils-2.1.0" // {
2081 dependencies = [
2082 sources."glob-7.1.6"
2083 sources."readable-stream-2.3.7"
2084 sources."string_decoder-1.1.1"
2085 ];
2086 })
2087 sources."array-flatten-1.1.1"
2088 sources."array-union-1.0.2"
2089 sources."array-uniq-1.0.3"
2090 sources."arrify-1.0.1"
2091 sources."asn1-0.2.3"
2092 sources."assert-plus-1.0.0"
2093 sources."async-1.5.2"
2094 sources."asynckit-0.4.0"
2095 sources."aws-sign2-0.7.0"
2096 sources."aws4-1.6.0"
2097 sources."backoff-2.5.0"
2098 sources."balanced-match-1.0.0"
2099 sources."base64-js-1.3.1"
2100 (sources."basic-auth-2.0.1" // {
2101 dependencies = [
2102 sources."safe-buffer-5.1.2"
2103 ];
2104 })
2105 sources."batch-0.6.1"
2106 sources."bcrypt-pbkdf-1.0.1"
2107 sources."bcryptjs-2.4.3"
2108 (sources."bl-4.0.2" // {
2109 dependencies = [
2110 sources."inherits-2.0.4"
2111 ];
2112 })
2113 (sources."body-parser-1.18.2" // {
2114 dependencies = [
2115 sources."depd-1.1.2"
2116 (sources."http-errors-1.6.2" // {
2117 dependencies = [
2118 sources."depd-1.1.1"
2119 ];
2120 })
2121 ];
2122 })
2123 sources."boom-4.3.1"
2124 sources."brace-expansion-1.1.8"
2125 sources."buffer-5.6.0"
2126 sources."buffer-crc32-0.2.13"
2127 sources."bunyan-1.8.12"
2128 sources."bytes-3.0.0"
2129 sources."caseless-0.12.0"
2130 sources."co-4.6.0"
2131 sources."colors-1.1.2"
2132 sources."combined-stream-1.0.5"
2133 sources."commander-2.14.1"
2134 sources."component-emitter-1.3.0"
2135 (sources."compress-commons-3.0.0" // {
2136 dependencies = [
2137 sources."readable-stream-2.3.7"
2138 sources."string_decoder-1.1.1"
2139 ];
2140 })
2141 (sources."compressible-2.0.13" // {
2142 dependencies = [
2143 sources."mime-db-1.33.0"
2144 ];
2145 })
2146 sources."compression-1.7.2"
2147 sources."concat-map-0.0.1"
2148 (sources."connect-lastmile-1.2.2" // {
2149 dependencies = [
2150 sources."debug-4.1.1"
2151 sources."ms-2.1.2"
2152 sources."underscore-1.9.1"
2153 ];
2154 })
2155 sources."connect-timeout-1.9.0"
2156 sources."content-disposition-0.5.2"
2157 sources."content-type-1.0.4"
2158 sources."cookie-0.3.1"
2159 sources."cookie-parser-1.4.3"
2160 sources."cookie-signature-1.0.6"
2161 sources."cookiejar-2.1.2"
2162 sources."core-util-is-1.0.2"
2163 sources."crc-3.4.4"
2164 sources."crc32-stream-3.0.1"
2165 (sources."cryptiles-3.1.2" // {
2166 dependencies = [
2167 sources."boom-5.2.0"
2168 ];
2169 })
2170 (sources."dashdash-1.14.1" // {
2171 dependencies = [
2172 sources."assert-plus-1.0.0"
2173 ];
2174 })
2175 sources."debug-2.6.9"
2176 sources."del-2.2.2"
2177 sources."delayed-stream-1.0.0"
2178 sources."depd-1.1.0"
2179 sources."destroy-1.0.4"
2180 sources."dtrace-provider-0.8.7"
2181 sources."ecc-jsbn-0.1.1"
2182 sources."ee-first-1.1.1"
2183 sources."encodeurl-1.0.2"
2184 sources."end-of-stream-1.4.4"
2185 sources."escape-html-1.0.3"
2186 sources."etag-1.8.1"
2187 (sources."express-4.16.2" // {
2188 dependencies = [
2189 sources."depd-1.1.2"
2190 sources."setprototypeof-1.1.0"
2191 ];
2192 })
2193 (sources."express-session-1.15.6" // {
2194 dependencies = [
2195 sources."depd-1.1.2"
2196 ];
2197 })
2198 sources."extend-3.0.2"
2199 sources."extsprintf-1.2.0"
2200 sources."fast-deep-equal-1.0.0"
2201 sources."fast-json-stable-stringify-2.0.0"
2202 sources."fast-safe-stringify-2.0.7"
2203 sources."fd-slicer-1.0.1"
2204 sources."finalhandler-1.1.0"
2205 sources."forever-agent-0.6.1"
2206 (sources."form-data-2.3.2" // {
2207 dependencies = [
2208 sources."combined-stream-1.0.6"
2209 ];
2210 })
2211 sources."formidable-1.2.1"
2212 sources."forwarded-0.1.2"
2213 sources."fresh-0.5.2"
2214 sources."fs-constants-1.0.0"
2215 sources."fs.realpath-1.0.0"
2216 (sources."getpass-0.1.7" // {
2217 dependencies = [
2218 sources."assert-plus-1.0.0"
2219 ];
2220 })
2221 sources."glob-7.1.2"
2222 sources."globby-5.0.0"
2223 sources."graceful-fs-4.2.4"
2224 sources."har-schema-2.0.0"
2225 sources."har-validator-5.0.3"
2226 sources."hawk-6.0.2"
2227 sources."hoek-4.2.1"
2228 sources."http-errors-1.6.1"
2229 (sources."http-signature-1.2.0" // {
2230 dependencies = [
2231 sources."assert-plus-1.0.0"
2232 sources."extsprintf-1.3.0"
2233 sources."json-schema-0.2.3"
2234 sources."jsprim-1.4.1"
2235 sources."verror-1.10.0"
2236 ];
2237 })
2238 sources."iconv-lite-0.4.19"
2239 sources."ieee754-1.1.13"
2240 sources."inflight-1.0.6"
2241 sources."inherits-2.0.3"
2242 sources."ipaddr.js-1.5.2"
2243 sources."is-path-cwd-1.0.0"
2244 sources."is-path-in-cwd-1.0.0"
2245 sources."is-path-inside-1.0.0"
2246 sources."is-typedarray-1.0.0"
2247 sources."isarray-1.0.0"
2248 sources."isstream-0.1.2"
2249 sources."jsbn-0.1.1"
2250 sources."json-schema-traverse-0.3.1"
2251 sources."json-stringify-safe-5.0.1"
2252 (sources."lazystream-1.0.0" // {
2253 dependencies = [
2254 sources."readable-stream-2.3.7"
2255 sources."string_decoder-1.1.1"
2256 ];
2257 })
2258 (sources."ldap-filter-0.2.2" // {
2259 dependencies = [
2260 sources."assert-plus-0.1.5"
2261 ];
2262 })
2263 sources."ldapjs-1.0.2"
2264 sources."lodash-4.17.15"
2265 sources."lodash.defaults-4.2.0"
2266 sources."lodash.difference-4.5.0"
2267 sources."lodash.flatten-4.4.0"
2268 sources."lodash.isplainobject-4.0.6"
2269 sources."lodash.union-4.6.0"
2270 sources."media-typer-0.3.0"
2271 sources."merge-descriptors-1.0.1"
2272 sources."methods-1.1.2"
2273 sources."mime-2.4.4"
2274 sources."mime-db-1.27.0"
2275 sources."mime-types-2.1.15"
2276 sources."minimatch-3.0.4"
2277 sources."minimist-0.0.8"
2278 sources."mkdirp-0.5.1"
2279 sources."moment-2.24.0"
2280 (sources."morgan-1.9.1" // {
2281 dependencies = [
2282 sources."depd-1.1.2"
2283 ];
2284 })
2285 sources."ms-2.0.0"
2286 sources."multiparty-4.1.3"
2287 (sources."mv-2.1.1" // {
2288 dependencies = [
2289 sources."glob-6.0.4"
2290 sources."rimraf-2.4.5"
2291 ];
2292 })
2293 sources."nan-2.12.1"
2294 sources."ncp-2.0.0"
2295 sources."negotiator-0.6.1"
2296 sources."normalize-path-3.0.0"
2297 sources."oauth-sign-0.8.2"
2298 sources."object-assign-4.1.1"
2299 sources."on-finished-2.3.0"
2300 sources."on-headers-1.0.1"
2301 sources."once-1.4.0"
2302 sources."parseurl-1.3.2"
2303 sources."path-is-absolute-1.0.1"
2304 sources."path-is-inside-1.0.2"
2305 sources."path-to-regexp-0.1.7"
2306 sources."pend-1.2.0"
2307 sources."performance-now-2.1.0"
2308 sources."pify-2.3.0"
2309 sources."pinkie-2.0.4"
2310 sources."pinkie-promise-2.0.1"
2311 sources."precond-0.2.3"
2312 sources."process-nextick-args-2.0.1"
2313 sources."proxy-addr-2.0.2"
2314 sources."punycode-1.4.1"
2315 sources."qs-6.5.1"
2316 sources."random-bytes-1.0.0"
2317 sources."range-parser-1.2.0"
2318 (sources."raw-body-2.3.2" // {
2319 dependencies = [
2320 sources."depd-1.1.1"
2321 sources."http-errors-1.6.2"
2322 ];
2323 })
2324 sources."readable-stream-3.4.0"
2325 sources."readline-sync-1.4.9"
2326 (sources."request-2.83.0" // {
2327 dependencies = [
2328 sources."mime-db-1.33.0"
2329 sources."mime-types-2.1.18"
2330 ];
2331 })
2332 sources."rimraf-2.6.1"
2333 sources."safe-buffer-5.1.1"
2334 sources."safe-json-stringify-1.2.0"
2335 sources."safer-buffer-2.1.2"
2336 sources."safetydance-0.1.1"
2337 (sources."send-0.16.1" // {
2338 dependencies = [
2339 sources."depd-1.1.2"
2340 (sources."http-errors-1.6.2" // {
2341 dependencies = [
2342 sources."depd-1.1.1"
2343 ];
2344 })
2345 sources."mime-1.4.1"
2346 ];
2347 })
2348 (sources."serve-index-1.9.1" // {
2349 dependencies = [
2350 sources."depd-1.1.2"
2351 sources."http-errors-1.6.3"
2352 sources."mime-db-1.44.0"
2353 sources."mime-types-2.1.27"
2354 sources."setprototypeof-1.1.0"
2355 sources."statuses-1.5.0"
2356 ];
2357 })
2358 sources."serve-static-1.13.1"
2359 sources."setprototypeof-1.0.3"
2360 sources."sntp-2.1.0"
2361 sources."sshpk-1.16.1"
2362 sources."statuses-1.3.1"
2363 (sources."string_decoder-1.3.0" // {
2364 dependencies = [
2365 sources."safe-buffer-5.2.0"
2366 ];
2367 })
2368 sources."stringstream-0.0.6"
2369 (sources."superagent-5.1.3" // {
2370 dependencies = [
2371 sources."combined-stream-1.0.8"
2372 sources."debug-4.1.1"
2373 sources."form-data-3.0.0"
2374 sources."ms-2.1.2"
2375 sources."qs-6.9.1"
2376 sources."semver-6.3.0"
2377 ];
2378 })
2379 sources."tar-stream-2.1.2"
2380 sources."tough-cookie-2.3.3"
2381 sources."tunnel-agent-0.6.0"
2382 sources."tweetnacl-0.14.5"
2383 (sources."type-is-1.6.16" // {
2384 dependencies = [
2385 sources."mime-db-1.33.0"
2386 sources."mime-types-2.1.18"
2387 ];
2388 })
2389 sources."uid-safe-2.1.5"
2390 sources."underscore-1.8.3"
2391 sources."unpipe-1.0.0"
2392 sources."util-deprecate-1.0.2"
2393 sources."utils-merge-1.0.1"
2394 sources."uuid-3.2.1"
2395 sources."vary-1.1.2"
2396 (sources."vasync-1.6.4" // {
2397 dependencies = [
2398 sources."verror-1.6.0"
2399 ];
2400 })
2401 sources."verror-1.10.0"
2402 (sources."webdav-server-2.4.6" // {
2403 dependencies = [
2404 sources."mime-db-1.38.0"
2405 sources."mime-types-2.1.22"
2406 ];
2407 })
2408 sources."wrappy-1.0.2"
2409 (sources."xml-js-1.6.11" // {
2410 dependencies = [
2411 sources."sax-1.2.4"
2412 ];
2413 })
2414 sources."xml-js-builder-1.0.3"
2415 (sources."zip-stream-3.0.1" // {
2416 dependencies = [
2417 sources."readable-stream-3.6.0"
2418 ];
2419 })
2420 ];
2421 buildInputs = globalBuildInputs;
2422 meta = {
2423 description = "Simple file server";
2424 license = "MIT";
2425 };
2426 production = true;
2427 bypassCache = true;
2428 reconstructLock = false;
2429 };
2430in
2431{
2432 args = args;
2433 sources = sources;
2434 tarball = nodeEnv.buildNodeSourceDist args;
2435 package = nodeEnv.buildNodePackage args;
2436 shell = nodeEnv.buildNodeShell args;
2437}
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 @@
1PATH
2 remote: .
3 specs:
4 taskwarrior-web (1.1.12)
5 activesupport (~> 3)
6 json (~> 1.8)
7 parseconfig
8 rack-flash3
9 rinku
10 sinatra
11 sinatra-simple-navigation
12 vegas
13 versionomy
14
15GEM
16 remote: http://rubygems.org/
17 specs:
18 activesupport (3.2.22.5)
19 i18n (~> 0.6, >= 0.6.4)
20 multi_json (~> 1.0)
21 blockenspiel (0.5.0)
22 coderay (1.1.2)
23 concurrent-ruby (1.1.4)
24 daemons (1.3.1)
25 diff-lcs (1.3)
26 docile (1.3.1)
27 eventmachine (1.2.7)
28 ffi (1.10.0)
29 formatador (0.2.5)
30 growl (1.0.3)
31 guard (2.15.0)
32 formatador (>= 0.2.4)
33 listen (>= 2.7, < 4.0)
34 lumberjack (>= 1.0.12, < 2.0)
35 nenv (~> 0.1)
36 notiffany (~> 0.0)
37 pry (>= 0.9.12)
38 shellany (~> 0.0)
39 thor (>= 0.18.1)
40 guard-bundler (2.2.1)
41 bundler (>= 1.3.0, < 3)
42 guard (~> 2.2)
43 guard-compat (~> 1.1)
44 guard-compat (1.2.1)
45 guard-rspec (4.7.3)
46 guard (~> 2.1)
47 guard-compat (~> 1.1)
48 rspec (>= 2.99.0, < 4.0)
49 i18n (0.9.5)
50 concurrent-ruby (~> 1.0)
51 json (1.8.6)
52 listen (3.1.5)
53 rb-fsevent (~> 0.9, >= 0.9.4)
54 rb-inotify (~> 0.9, >= 0.9.7)
55 ruby_dep (~> 1.2)
56 lumberjack (1.0.13)
57 method_source (0.9.2)
58 mini_portile2 (2.4.0)
59 multi_json (1.13.1)
60 mustermann (1.0.3)
61 nenv (0.3.0)
62 nokogiri (1.10.1)
63 mini_portile2 (~> 2.4.0)
64 notiffany (0.1.1)
65 nenv (~> 0.1)
66 shellany (~> 0.0)
67 parseconfig (1.0.8)
68 pry (0.12.2)
69 coderay (~> 1.1.0)
70 method_source (~> 0.9.0)
71 rack (2.0.6)
72 rack-flash3 (1.0.5)
73 rack
74 rack-protection (2.0.5)
75 rack
76 rack-test (1.1.0)
77 rack (>= 1.0, < 3)
78 rake (10.5.0)
79 rb-fsevent (0.10.3)
80 rb-inotify (0.10.0)
81 ffi (~> 1.0)
82 rinku (2.0.5)
83 rspec (2.99.0)
84 rspec-core (~> 2.99.0)
85 rspec-expectations (~> 2.99.0)
86 rspec-mocks (~> 2.99.0)
87 rspec-core (2.99.2)
88 rspec-expectations (2.99.2)
89 diff-lcs (>= 1.1.3, < 2.0)
90 rspec-html-matchers (0.5.0)
91 nokogiri (~> 1)
92 rspec (~> 2, >= 2.11.0)
93 rspec-mocks (2.99.4)
94 ruby_dep (1.5.0)
95 shellany (0.0.1)
96 simple-navigation (4.0.5)
97 activesupport (>= 2.3.2)
98 simplecov (0.16.1)
99 docile (~> 1.1)
100 json (>= 1.8, < 3)
101 simplecov-html (~> 0.10.0)
102 simplecov-html (0.10.2)
103 sinatra (2.0.5)
104 mustermann (~> 1.0)
105 rack (~> 2.0)
106 rack-protection (= 2.0.5)
107 tilt (~> 2.0)
108 sinatra-simple-navigation (4.1.0)
109 simple-navigation (~> 4.0)
110 sinatra (>= 1.0, < 3.0)
111 thin (1.7.2)
112 daemons (~> 1.0, >= 1.0.9)
113 eventmachine (~> 1.0, >= 1.0.4)
114 rack (>= 1, < 3)
115 thor (0.20.3)
116 tilt (2.0.9)
117 vegas (0.1.11)
118 rack (>= 1.0.0)
119 versionomy (0.5.0)
120 blockenspiel (~> 0.5)
121
122PLATFORMS
123 ruby
124
125DEPENDENCIES
126 growl
127 guard-bundler
128 guard-rspec
129 rack-test
130 rake (< 11)
131 rb-fsevent
132 rspec (~> 2)
133 rspec-html-matchers
134 simplecov
135 taskwarrior-web!
136 thin
137
138BUNDLED WITH
139 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 @@
1{ ruby_2_6, bundlerEnv, src, stdenv }:
2let
3 gems = bundlerEnv {
4 name = "taskwarrior-web-env";
5 ruby = ruby_2_6;
6 pname = "taskwarrior-web";
7 gemset = ./gemset.nix;
8 gemdir = package.out;
9 groups = [ "default" "local" "development" ];
10 };
11 package = stdenv.mkDerivation {
12 pname = "taskwarrior-web";
13 version = src.shortRev;
14 inherit src;
15 phases = [ "unpackPhase" "patchPhase" "installPhase" ];
16 patches = [ ./fixes.patch ./thin.patch ];
17 installPhase = ''
18 cp -a . $out
19 cp ${./Gemfile.lock} $out/Gemfile.lock
20 '';
21 passthru = {
22 inherit gems;
23 };
24 };
25in 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 @@
1diff --git a/lib/taskwarrior-web/helpers.rb b/lib/taskwarrior-web/helpers.rb
2index 212aed7..94c57df 100644
3--- a/lib/taskwarrior-web/helpers.rb
4+++ b/lib/taskwarrior-web/helpers.rb
5@@ -1,6 +1,8 @@
6 require 'active_support/core_ext/date/calculations'
7
8 module TaskwarriorWeb::App::Helpers
9+ include ERB::Util
10+
11 def format_date(timestamp)
12 format = TaskwarriorWeb::Config.dateformat || '%-m/%-d/%Y'
13 Time.parse(timestamp).localtime.strftime(format)
14diff --git a/lib/taskwarrior-web/model/task.rb b/lib/taskwarrior-web/model/task.rb
15index 212aed7..94c57df 100644
16--- a/lib/taskwarrior-web/model/task.rb
17+++ b/lib/taskwarrior-web/model/task.rb
18@@ -15,8 +15,14 @@
19
20 def initialize(attributes = {})
21 attributes.each do |attr, value|
22+ if attr == "uuid"
23+ next
24+ end
25 send("#{attr}=", value) if respond_to?(attr.to_sym)
26 end
27+ if attributes.has_key? "uuid"
28+ send("uuid=", attributes["uuid"])
29+ end
30
31 @_errors = []
32 @tags = [] if @tags.nil?
33diff --git a/lib/taskwarrior-web/services/builder/base.rb b/lib/taskwarrior-web/services/builder/base.rb
34index 58d246e..8f716ac 100644
35--- a/lib/taskwarrior-web/services/builder/base.rb
36+++ b/lib/taskwarrior-web/services/builder/base.rb
37@@ -10,7 +10,7 @@ module TaskwarriorWeb::CommandBuilder::Base
38 :complete => ':id done',
39 :annotate => ':id annotate',
40 :denotate => ':id denotate',
41- :projects => '_projects',
42+ :projects => '_unique project',
43 :tags => '_tags',
44 :sync => 'sync'
45 }
46@@ -21,7 +21,7 @@
47 substitute_parts if @command_string =~ /:id/
48 end
49 parse_params
50- @built = "#{@command_string}#{@params}"
51+ @built = "#{@params}#{@command_string}"
52 end
53
54 def task_command
55@@ -43,23 +43,23 @@
56
57 def parse_params
58 string = ''
59- string << %( #{@params.delete(:description).shellescape}) if @params.has_key?(:description)
60+ string << %(#{@params.delete(:description).shellescape} ) if @params.has_key?(:description)
61
62 if tags = @params.delete(:tags)
63 tag_indicator = TaskwarriorWeb::Config.property('tag.indicator') || '+'
64- tags.each { |tag| string << %( #{tag_indicator}#{tag.to_s.shellescape}) }
65+ tags.each { |tag| string << %(#{tag_indicator}#{tag.to_s.shellescape} ) }
66 end
67
68 if tags = @params.delete(:remove_tags)
69- tags.each { |tag| string << %( -#{tag.to_s.shellescape}) }
70+ tags.each { |tag| string << %(-#{tag.to_s.shellescape} ) }
71 end
72
73 @params.each do |attr, value|
74 if @command != :update or attr != :uuid
75 if value.respond_to? :each
76- value.each { |val| string << %( #{attr.to_s}:\\"#{val.to_s.shellescape}\\") }
77+ value.each { |val| string << %(#{attr.to_s}:\\"#{val.to_s.shellescape}\\" ) }
78 else
79- string << %( #{attr.to_s}:\\"#{value.to_s.shellescape}\\")
80+ string << %(#{attr.to_s}:\\"#{value.to_s.shellescape}\\" )
81 end
82 end
83 end
84diff --git a/lib/taskwarrior-web/views/tasks/_form.erb b/lib/taskwarrior-web/views/tasks/_form.erb
85index 789e7a1..fa08698 100644
86--- a/lib/taskwarrior-web/views/tasks/_form.erb
87+++ b/lib/taskwarrior-web/views/tasks/_form.erb
88@@ -1,14 +1,14 @@
89 <div class="control-group">
90 <label for="task-description" class="control-label">Description</label>
91 <div class="controls">
92- <input type="text" required="required" id="task-description" name="task[description]" value="<%= @task.description unless @task.nil? %>" />
93+ <input type="text" required="required" id="task-description" name="task[description]" value="<%=h @task.description unless @task.nil? %>" />
94 </div>
95 </div>
96
97 <div class="control-group">
98 <label for="task-project" class="control-label">Project</label>
99 <div class="controls">
100- <input type="text" id="task-project" name="task[project]" value="<%= @task.project unless @task.nil? %>" autocomplete="off" />
101+ <input type="text" id="task-project" name="task[project]" value="<%=h @task.project unless @task.nil? %>" autocomplete="off" />
102 </div>
103 </div>
104
105@@ -45,7 +45,7 @@
106 <div class="control-group">
107 <label for="task-tags" class="control-label">Tags</label>
108 <div class="controls">
109- <input type="text" id="task-tags" name="task[tags]" value="<%= @task.tags.join(', ') unless @task.nil? %>" autocomplete="off" />
110+ <input type="text" id="task-tags" name="task[tags]" value="<%=h @task.tags.join(', ') unless @task.nil? %>" autocomplete="off" />
111 <span class="help-block">Enter tags separated by commas or spaces (e.g. <em>each, word will,be a tag</em>)</span>
112 </div>
113 </div>
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 @@
1{
2 "nodes": {
3 "flake-utils": {
4 "locked": {
5 "lastModified": 1648297722,
6 "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
7 "owner": "numtide",
8 "repo": "flake-utils",
9 "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
10 "type": "github"
11 },
12 "original": {
13 "owner": "numtide",
14 "repo": "flake-utils",
15 "type": "github"
16 }
17 },
18 "nixpkgs": {
19 "flake": false,
20 "locked": {
21 "lastModified": 1596265691,
22 "narHash": "sha256-9ofCzFqttTsGrvTaS4RrDSTNQO9PFOz5uyn8V+2eA5M=",
23 "owner": "NixOS",
24 "repo": "nixpkgs",
25 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
26 "type": "github"
27 },
28 "original": {
29 "owner": "NixOS",
30 "repo": "nixpkgs",
31 "rev": "840c782d507d60aaa49aa9e3f6d0b0e780912742",
32 "type": "github"
33 }
34 },
35 "root": {
36 "inputs": {
37 "flake-utils": "flake-utils",
38 "nixpkgs": "nixpkgs",
39 "taskwarrior-web": "taskwarrior-web"
40 }
41 },
42 "taskwarrior-web": {
43 "flake": false,
44 "locked": {
45 "lastModified": 1546434241,
46 "narHash": "sha256-BLPBglkV1HCJECSIdyMEergChiV+rwNOClYJnzlZGQk=",
47 "owner": "theunraveler",
48 "repo": "taskwarrior-web",
49 "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
50 "type": "github"
51 },
52 "original": {
53 "owner": "theunraveler",
54 "repo": "taskwarrior-web",
55 "rev": "a79cfe2b42791b62364118e58b21b892fff6ded8",
56 "type": "github"
57 }
58 }
59 },
60 "root": "root",
61 "version": 7
62}
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 @@
1{
2 description = "A web interface for the Taskwarrior todo application. Because being a neckbeard is only fun sometimes.";
3 inputs.flake-utils.url = "github:numtide/flake-utils";
4 inputs.nixpkgs = {
5 url = "github:NixOS/nixpkgs/840c782d507d60aaa49aa9e3f6d0b0e780912742";
6 flake = false;
7 };
8 inputs.taskwarrior-web = {
9 url = "github:theunraveler/taskwarrior-web/a79cfe2b42791b62364118e58b21b892fff6ded8";
10 flake = false;
11 };
12
13 outputs = { self, nixpkgs, taskwarrior-web, flake-utils }: flake-utils.lib.eachSystem ["x86_64-linux"] (system:
14 let
15 pkgs = import nixpkgs { inherit system; overlays = []; };
16 inherit (pkgs) callPackage;
17 in rec {
18 packages.taskwarrior-web = callPackage ./. { src = taskwarrior-web; };
19 defaultPackage = packages.taskwarrior-web;
20 legacyPackages.taskwarrior-web = packages.taskwarrior-web;
21 checks = {
22 build = defaultPackage;
23 };
24 }
25 ) // rec {
26 overlays = {
27 taskwarrior-web = final: prev: {
28 taskwarrior-web = self.defaultPackage."${final.system}";
29 };
30 };
31 overlay = overlays.taskwarrior-web;
32 };
33}
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 @@
1{
2 activesupport = {
3 dependencies = ["i18n" "multi_json"];
4 groups = ["default"];
5 platforms = [];
6 source = {
7 remotes = ["http://rubygems.org"];
8 sha256 = "0fyxqkkws4px4lzkbcqzp0bwai7nn7jk4p0bgfy0dny9cwm0qc9r";
9 type = "gem";
10 };
11 version = "3.2.22.5";
12 };
13 blockenspiel = {
14 groups = ["default"];
15 platforms = [];
16 source = {
17 remotes = ["http://rubygems.org"];
18 sha256 = "1h701s45n5qprvcpc7fnr45n88p56x07pznkxqnhz1dbdbhb7xx8";
19 type = "gem";
20 };
21 version = "0.5.0";
22 };
23 coderay = {
24 groups = ["default" "local"];
25 platforms = [];
26 source = {
27 remotes = ["http://rubygems.org"];
28 sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
29 type = "gem";
30 };
31 version = "1.1.2";
32 };
33 concurrent-ruby = {
34 groups = ["default"];
35 platforms = [];
36 source = {
37 remotes = ["http://rubygems.org"];
38 sha256 = "1ixcx9pfissxrga53jbdpza85qd5f6b5nq1sfqa9rnfq82qnlbp1";
39 type = "gem";
40 };
41 version = "1.1.4";
42 };
43 daemons = {
44 groups = ["default"];
45 platforms = [];
46 source = {
47 remotes = ["http://rubygems.org"];
48 sha256 = "0l5gai3vd4g7aqff0k1mp41j9zcsvm2rbwmqn115a325k9r7pf4w";
49 type = "gem";
50 };
51 version = "1.3.1";
52 };
53 diff-lcs = {
54 groups = ["default" "development" "local"];
55 platforms = [];
56 source = {
57 remotes = ["http://rubygems.org"];
58 sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
59 type = "gem";
60 };
61 version = "1.3";
62 };
63 docile = {
64 groups = ["default" "local"];
65 platforms = [];
66 source = {
67 remotes = ["http://rubygems.org"];
68 sha256 = "04d2izkna3ahfn6fwq4xrcafa715d3bbqczxm16fq40fqy87xn17";
69 type = "gem";
70 };
71 version = "1.3.1";
72 };
73 eventmachine = {
74 groups = ["default"];
75 platforms = [];
76 source = {
77 remotes = ["http://rubygems.org"];
78 sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r";
79 type = "gem";
80 };
81 version = "1.2.7";
82 };
83 ffi = {
84 groups = ["default" "local"];
85 platforms = [];
86 source = {
87 remotes = ["http://rubygems.org"];
88 sha256 = "0j8pzj8raxbir5w5k6s7a042sb5k02pg0f8s4na1r5lan901j00p";
89 type = "gem";
90 };
91 version = "1.10.0";
92 };
93 formatador = {
94 groups = ["default" "local"];
95 platforms = [];
96 source = {
97 remotes = ["http://rubygems.org"];
98 sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
99 type = "gem";
100 };
101 version = "0.2.5";
102 };
103 growl = {
104 groups = ["local"];
105 platforms = [];
106 source = {
107 remotes = ["http://rubygems.org"];
108 sha256 = "0s0y7maljnalpbv2q1j5j5hvb4wcc31y9af0n7x1q2l0fzxgc9n9";
109 type = "gem";
110 };
111 version = "1.0.3";
112 };
113 guard = {
114 dependencies = ["formatador" "listen" "lumberjack" "nenv" "notiffany" "pry" "shellany" "thor"];
115 groups = ["default" "local"];
116 platforms = [];
117 source = {
118 remotes = ["http://rubygems.org"];
119 sha256 = "0h84ja6qvii3hx86w9l4vjpbgl4m8ma8fbawwp7s8l791cgkdcmk";
120 type = "gem";
121 };
122 version = "2.15.0";
123 };
124 guard-bundler = {
125 dependencies = ["guard" "guard-compat"];
126 groups = ["local"];
127 platforms = [];
128 source = {
129 remotes = ["http://rubygems.org"];
130 sha256 = "0lji8f8w7y4prmpr2lqmlljvkqgkgnlsiwqgwvq7b1y3sxlsvy62";
131 type = "gem";
132 };
133 version = "2.2.1";
134 };
135 guard-compat = {
136 groups = ["default" "local"];
137 platforms = [];
138 source = {
139 remotes = ["http://rubygems.org"];
140 sha256 = "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis";
141 type = "gem";
142 };
143 version = "1.2.1";
144 };
145 guard-rspec = {
146 dependencies = ["guard" "guard-compat" "rspec"];
147 groups = ["local"];
148 platforms = [];
149 source = {
150 remotes = ["http://rubygems.org"];
151 sha256 = "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4";
152 type = "gem";
153 };
154 version = "4.7.3";
155 };
156 i18n = {
157 dependencies = ["concurrent-ruby"];
158 groups = ["default"];
159 platforms = [];
160 source = {
161 remotes = ["http://rubygems.org"];
162 sha256 = "038qvz7kd3cfxk8bvagqhakx68pfbnmghpdkx7573wbf0maqp9a3";
163 type = "gem";
164 };
165 version = "0.9.5";
166 };
167 json = {
168 groups = ["default" "local"];
169 platforms = [];
170 source = {
171 remotes = ["http://rubygems.org"];
172 sha256 = "0qmj7fypgb9vag723w1a49qihxrcf5shzars106ynw2zk352gbv5";
173 type = "gem";
174 };
175 version = "1.8.6";
176 };
177 listen = {
178 dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
179 groups = ["default" "local"];
180 platforms = [];
181 source = {
182 remotes = ["http://rubygems.org"];
183 sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
184 type = "gem";
185 };
186 version = "3.1.5";
187 };
188 lumberjack = {
189 groups = ["default" "local"];
190 platforms = [];
191 source = {
192 remotes = ["http://rubygems.org"];
193 sha256 = "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n";
194 type = "gem";
195 };
196 version = "1.0.13";
197 };
198 method_source = {
199 groups = ["default" "local"];
200 platforms = [];
201 source = {
202 remotes = ["http://rubygems.org"];
203 sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
204 type = "gem";
205 };
206 version = "0.9.2";
207 };
208 mini_portile2 = {
209 groups = ["default" "development"];
210 platforms = [];
211 source = {
212 remotes = ["http://rubygems.org"];
213 sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy";
214 type = "gem";
215 };
216 version = "2.4.0";
217 };
218 multi_json = {
219 groups = ["default"];
220 platforms = [];
221 source = {
222 remotes = ["http://rubygems.org"];
223 sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
224 type = "gem";
225 };
226 version = "1.13.1";
227 };
228 mustermann = {
229 groups = ["default"];
230 platforms = [];
231 source = {
232 remotes = ["http://rubygems.org"];
233 sha256 = "0lycgkmnyy0bf29nnd2zql5a6pcf8sp69g9v4xw0gcfcxgpwp7i1";
234 type = "gem";
235 };
236 version = "1.0.3";
237 };
238 nenv = {
239 groups = ["default" "local"];
240 platforms = [];
241 source = {
242 remotes = ["http://rubygems.org"];
243 sha256 = "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr";
244 type = "gem";
245 };
246 version = "0.3.0";
247 };
248 nokogiri = {
249 dependencies = ["mini_portile2"];
250 groups = ["default" "development"];
251 platforms = [];
252 source = {
253 remotes = ["http://rubygems.org"];
254 sha256 = "09zll7c6j7xr6wyvh5mm5ncj6pkryp70ybcsxdbw1nyphx5dh184";
255 type = "gem";
256 };
257 version = "1.10.1";
258 };
259 notiffany = {
260 dependencies = ["nenv" "shellany"];
261 groups = ["default" "local"];
262 platforms = [];
263 source = {
264 remotes = ["http://rubygems.org"];
265 sha256 = "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx";
266 type = "gem";
267 };
268 version = "0.1.1";
269 };
270 parseconfig = {
271 groups = ["default"];
272 platforms = [];
273 source = {
274 remotes = ["http://rubygems.org"];
275 sha256 = "0br2g9k6zc4ygah52aa8cwvpnnkszia29bnvnr8bhpk3rdzi2vmq";
276 type = "gem";
277 };
278 version = "1.0.8";
279 };
280 pry = {
281 dependencies = ["coderay" "method_source"];
282 groups = ["default" "local"];
283 platforms = [];
284 source = {
285 remotes = ["http://rubygems.org"];
286 sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
287 type = "gem";
288 };
289 version = "0.12.2";
290 };
291 rack = {
292 groups = ["default" "development"];
293 platforms = [];
294 source = {
295 remotes = ["http://rubygems.org"];
296 sha256 = "1pcgv8dv4vkaczzlix8q3j68capwhk420cddzijwqgi2qb4lm1zm";
297 type = "gem";
298 };
299 version = "2.0.6";
300 };
301 rack-flash3 = {
302 dependencies = ["rack"];
303 groups = ["default"];
304 platforms = [];
305 source = {
306 remotes = ["http://rubygems.org"];
307 sha256 = "0rim9afrns6s8zc4apiymncysyvijpdg18k57kdpz66p55jf4mqz";
308 type = "gem";
309 };
310 version = "1.0.5";
311 };
312 rack-protection = {
313 dependencies = ["rack"];
314 groups = ["default"];
315 platforms = [];
316 source = {
317 remotes = ["http://rubygems.org"];
318 sha256 = "15167q25rmxipqwi6hjqj3i1byi9iwl3xq9b7mdar7qiz39pmjsk";
319 type = "gem";
320 };
321 version = "2.0.5";
322 };
323 rack-test = {
324 dependencies = ["rack"];
325 groups = ["development"];
326 platforms = [];
327 source = {
328 remotes = ["http://rubygems.org"];
329 sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
330 type = "gem";
331 };
332 version = "1.1.0";
333 };
334 rake = {
335 groups = ["development"];
336 platforms = [];
337 source = {
338 remotes = ["http://rubygems.org"];
339 sha256 = "0jcabbgnjc788chx31sihc5pgbqnlc1c75wakmqlbjdm8jns2m9b";
340 type = "gem";
341 };
342 version = "10.5.0";
343 };
344 rb-fsevent = {
345 groups = ["local"];
346 platforms = [];
347 source = {
348 remotes = ["http://rubygems.org"];
349 sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
350 type = "gem";
351 };
352 version = "0.10.3";
353 };
354 rb-inotify = {
355 dependencies = ["ffi"];
356 groups = ["default" "local"];
357 platforms = [];
358 source = {
359 remotes = ["http://rubygems.org"];
360 sha256 = "1fs7hxm9g6ywv2yih83b879klhc4fs8i0p9166z795qmd77dk0a4";
361 type = "gem";
362 };
363 version = "0.10.0";
364 };
365 rinku = {
366 groups = ["default"];
367 platforms = [];
368 source = {
369 remotes = ["http://rubygems.org"];
370 sha256 = "1smkk299v18brk98gqbdnqrfwm3143kikl30scidqb5j3pzlbz91";
371 type = "gem";
372 };
373 version = "2.0.5";
374 };
375 rspec = {
376 dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
377 groups = ["development" "local"];
378 platforms = [];
379 source = {
380 remotes = ["http://rubygems.org"];
381 sha256 = "14q3hxvngk4ks8h41yw50d5fqbf2dhzwi9rz5ccxvh5a53ak2as3";
382 type = "gem";
383 };
384 version = "2.99.0";
385 };
386 rspec-core = {
387 groups = ["default" "development" "local"];
388 platforms = [];
389 source = {
390 remotes = ["http://rubygems.org"];
391 sha256 = "1wwz21lcz2lwd2jcp2pvq7n1677v23acf7wxsyszp8msb47mw38i";
392 type = "gem";
393 };
394 version = "2.99.2";
395 };
396 rspec-expectations = {
397 dependencies = ["diff-lcs"];
398 groups = ["default" "development" "local"];
399 platforms = [];
400 source = {
401 remotes = ["http://rubygems.org"];
402 sha256 = "11a5pph3anp4xr591dnlcy8xfkdf54qi2lvg4ykpqhxk37si1py3";
403 type = "gem";
404 };
405 version = "2.99.2";
406 };
407 rspec-html-matchers = {
408 dependencies = ["nokogiri" "rspec"];
409 groups = ["development"];
410 platforms = [];
411 source = {
412 remotes = ["http://rubygems.org"];
413 sha256 = "148grzvk0cvh24avhl0shjzz7ldhj138svf48pc5h1fdsb0pnqcv";
414 type = "gem";
415 };
416 version = "0.5.0";
417 };
418 rspec-mocks = {
419 groups = ["default" "development" "local"];
420 platforms = [];
421 source = {
422 remotes = ["http://rubygems.org"];
423 sha256 = "0bzhqahbiswq41nqi6y2dka1k42n0hl14jb6bldb206zp4hikz8r";
424 type = "gem";
425 };
426 version = "2.99.4";
427 };
428 ruby_dep = {
429 groups = ["default" "local"];
430 platforms = [];
431 source = {
432 remotes = ["http://rubygems.org"];
433 sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
434 type = "gem";
435 };
436 version = "1.5.0";
437 };
438 shellany = {
439 groups = ["default" "local"];
440 platforms = [];
441 source = {
442 remotes = ["http://rubygems.org"];
443 sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf";
444 type = "gem";
445 };
446 version = "0.0.1";
447 };
448 simple-navigation = {
449 dependencies = ["activesupport"];
450 groups = ["default"];
451 platforms = [];
452 source = {
453 remotes = ["http://rubygems.org"];
454 sha256 = "08a2s18an3br3xj5j86r33q0hrkai0y157xg67h1khdskb08yylk";
455 type = "gem";
456 };
457 version = "4.0.5";
458 };
459 simplecov = {
460 dependencies = ["docile" "json" "simplecov-html"];
461 groups = ["local"];
462 platforms = [];
463 source = {
464 remotes = ["http://rubygems.org"];
465 sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
466 type = "gem";
467 };
468 version = "0.16.1";
469 };
470 simplecov-html = {
471 groups = ["default" "local"];
472 platforms = [];
473 source = {
474 remotes = ["http://rubygems.org"];
475 sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
476 type = "gem";
477 };
478 version = "0.10.2";
479 };
480 sinatra = {
481 dependencies = ["mustermann" "rack" "rack-protection" "tilt"];
482 groups = ["default"];
483 platforms = [];
484 source = {
485 remotes = ["http://rubygems.org"];
486 sha256 = "1gasgn5f15myv08k10i16p326pchxjsy37pgqfw0xm66kcc5d7ry";
487 type = "gem";
488 };
489 version = "2.0.5";
490 };
491 sinatra-simple-navigation = {
492 dependencies = ["simple-navigation" "sinatra"];
493 groups = ["default"];
494 platforms = [];
495 source = {
496 remotes = ["http://rubygems.org"];
497 sha256 = "1gishxd23qw6bwsk7fkagkfc7ihqyvvvb98j9bmwc6wwpsfs4prs";
498 type = "gem";
499 };
500 version = "4.1.0";
501 };
502 taskwarrior-web = {
503 dependencies = ["activesupport" "json" "parseconfig" "rack-flash3" "rinku" "sinatra" "sinatra-simple-navigation" "vegas" "versionomy"];
504 groups = ["default"];
505 platforms = [];
506 bundledByPath = true;
507 path = ./.;
508 source = {
509 path = ./.;
510 type = "path";
511 };
512 version = "1.1.12";
513 };
514 thin = {
515 dependencies = ["daemons" "eventmachine" "rack"];
516 groups = ["default"];
517 platforms = [];
518 source = {
519 remotes = ["http://rubygems.org"];
520 sha256 = "0nagbf9pwy1vg09k6j4xqhbjjzrg5dwzvkn4ffvlj76fsn6vv61f";
521 type = "gem";
522 };
523 version = "1.7.2";
524 };
525 thor = {
526 groups = ["default" "local"];
527 platforms = [];
528 source = {
529 remotes = ["http://rubygems.org"];
530 sha256 = "1yhrnp9x8qcy5vc7g438amd5j9sw83ih7c30dr6g6slgw9zj3g29";
531 type = "gem";
532 };
533 version = "0.20.3";
534 };
535 tilt = {
536 groups = ["default"];
537 platforms = [];
538 source = {
539 remotes = ["http://rubygems.org"];
540 sha256 = "0ca4k0clwf0rkvy7726x4nxpjxkpv67w043i39saxgldxd97zmwz";
541 type = "gem";
542 };
543 version = "2.0.9";
544 };
545 vegas = {
546 dependencies = ["rack"];
547 groups = ["default"];
548 platforms = [];
549 source = {
550 remotes = ["http://rubygems.org"];
551 sha256 = "0kzv0v1zb8vvm188q4pqwahb6468bmiamn6wpsbiq6r5i69s1bs5";
552 type = "gem";
553 };
554 version = "0.1.11";
555 };
556 versionomy = {
557 dependencies = ["blockenspiel"];
558 groups = ["default"];
559 platforms = [];
560 source = {
561 remotes = ["http://rubygems.org"];
562 sha256 = "0i0l4pzrl1vyp4lpg2cxhgkk56spki3lld943d6h7168fj8qyv33";
563 type = "gem";
564 };
565 version = "0.5.0";
566 };
567}
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 @@
1diff --git a/Gemfile b/Gemfile
2index 8544e15..9c4279c 100644
3--- a/Gemfile
4+++ b/Gemfile
5@@ -3,6 +3,8 @@ source "http://rubygems.org"
6 # Specify your gem's dependencies in taskwarrior-web.gemspec
7 gemspec
8
9+gem 'thin'
10+
11 group :local do
12 gem 'rb-fsevent', :require => false
13 gem 'growl', :require => false
14diff --git a/config.ru b/config.ru
15index c3050c6..52387d8 100644
16--- a/config.ru
17+++ b/config.ru
18@@ -1,5 +1,4 @@
19 require File.join(File.dirname(__FILE__), 'lib', 'taskwarrior-web')
20
21-disable :run
22 TaskwarriorWeb::App.set({ :environment => :production })
23 run TaskwarriorWeb::App