From 27d13902e059d38a82aa7710948c963e84fc4b09 Mon Sep 17 00:00:00 2001 From: "Jill \"oatmealine\" Monoids" Date: Tue, 15 Nov 2022 06:19:25 +0100 Subject: [PATCH] add glitch-soc module & package & misc not me forgetting to commit --- hosts/dark-firepit/default.nix | 33 +- modules/services/glitch-soc.nix | 42 + packages/glitch-soc/default.nix | 132 ++ packages/glitch-soc/gemset.nix | 3113 ++++++++++++++++++++++++++ packages/glitch-soc/source.nix | 11 + packages/glitch-soc/update-remote.sh | 98 + packages/glitch-soc/update.sh | 4 + packages/glitch-soc/version.nix | 1 + 8 files changed, 3426 insertions(+), 8 deletions(-) create mode 100644 modules/services/glitch-soc.nix create mode 100644 packages/glitch-soc/default.nix create mode 100644 packages/glitch-soc/gemset.nix create mode 100644 packages/glitch-soc/source.nix create mode 100644 packages/glitch-soc/update-remote.sh create mode 100644 packages/glitch-soc/update.sh create mode 100644 packages/glitch-soc/version.nix diff --git a/hosts/dark-firepit/default.nix b/hosts/dark-firepit/default.nix index 68728f4..206c3f2 100644 --- a/hosts/dark-firepit/default.nix +++ b/hosts/dark-firepit/default.nix @@ -30,12 +30,13 @@ in { # aether??? is that... reference.../.??? aether https://www.curseforge.com/minecraft/mc-mods/aether mod Curseforge minecraft Forge Patreon Chat twitter code license Assets license All rights reserved categories Last Updated apr 17 2021 Game Version 1.12.2 aether aether = { conf = { - packages = with pkgs; [ bat duf broot nftables tmux ]; + packages = with pkgs; [ bat duf broot nftables tmux bottom ]; shell = pkgs.unstable.fish; extraGroups = [ "wheel" "nix-users" "dotfiles" ]; initialHashedPassword = "!"; openssh.authorizedKeys.keys = fetchSSHKeys [ "aether@subsurface" + "aether@phone" ]; }; @@ -50,7 +51,7 @@ in { # oatmealine ?? is that a reference to jill oatmealine monoids from the beloved videogame franchise "oateamelin jill monoids???" .oat. zone??? from va11hall-a??? video game???? woman????? minecraft??????? oatmealine = { conf = { - packages = with pkgs; [ bat tmux micro direnv nix-direnv ripgrep ]; + packages = with pkgs; [ bat tmux micro direnv nix-direnv ripgrep _.glitch-soc ]; shell = pkgs.unstable.fish; extraGroups = [ "wheel" "nix-users" "dotfiles" "yugoslavia" ]; initialHashedPassword = "!"; @@ -120,8 +121,8 @@ in { postgres.enable = true; nextcloud = { - enable = false; - domain = "cloud.dark-firepit.dev"; + enable = true; + domain = "nextcloud.dark-firepit.cloud"; }; gitea = { @@ -132,7 +133,7 @@ in { matrix.conduit = { enable = false; - domain = "matrix.aether.gay"; + domain = "matrix.dark-firepit.cloud"; }; srb2k = with lib; with builtins; let @@ -196,7 +197,7 @@ in { kmp_battleaccel on maxsend max fr_enabled off - khaosenable off + khaos enable off wait 1 @@ -248,8 +249,8 @@ in { enable = true; servers = { "dark-firepit" = { - enable = true; - autoStart = true; + enable = false; + #autoStart = false; openFirewall = true; serverProperties = { server-port = 25565; @@ -315,6 +316,11 @@ in { }; }; + glitch-soc = { + enable = true; + domain = "feditest.oat.zone"; + }; + wireguard = { enable = true; server = true; @@ -363,6 +369,9 @@ in { "tac.yugoslavia.best".php = true; "tac.yugoslavia.best".phpHandlePathing = true; "pjsk.oat.zone".dataDir = "/var/www/pjsk.oat.zone"; + "mayf.pink".dataDir = "/var/www/mayf.pink/public"; + "mayf.pink".php = true; + "mayf.pink".phpHandlePathing = true; }; nitter = { @@ -423,6 +432,14 @@ in { ''; }; + services.nginx.virtualHosts."nitter.oat.zone" = { + locations."/".extraConfig = '' + if ($http_user_agent = 'Mozilla/5.0 (compatible; Discordbot/2.0; +https://discordapp.com)') { + return 302 $scheme://fxtwitter.com$request_uri; + } + ''; + }; + security.doas = { extraRules = [ { users = [ "aether" ]; noPass = false; persist = true; keepEnv = true; } diff --git a/modules/services/glitch-soc.nix b/modules/services/glitch-soc.nix new file mode 100644 index 0000000..1159758 --- /dev/null +++ b/modules/services/glitch-soc.nix @@ -0,0 +1,42 @@ +{ config, lib, pkgs, options, ... }: + +with lib; +let + cfg = config.modules.services.glitch-soc; +in { + options.modules.services.glitch-soc = { + enable = mkOption { + type = types.bool; + default = false; + }; + domain = mkOption { + type = types.str; + default = "feditest.oat.zone"; + }; + }; + + config = mkIf cfg.enable { + services = { + mastodon = { + enable = true; + configureNginx = true; + localDomain = cfg.domain; + package = pkgs._.glitch-soc; + + smtp = { + fromAddress = "mastodon@${cfg.domain}"; + user = "mastodon"; + }; + + extraConfig = { + AUTHORIZED_FETCH = "false"; + LIMITED_FEDERATION_MODE = "true"; + + MAX_TOOT_CHARS = "69420"; + MAX_DISPLAY_NAME_CHARS = "32"; + MAX_BIO_CHARS = "69420"; + }; + }; + }; + }; +} diff --git a/packages/glitch-soc/default.nix b/packages/glitch-soc/default.nix new file mode 100644 index 0000000..27a5fbe --- /dev/null +++ b/packages/glitch-soc/default.nix @@ -0,0 +1,132 @@ +{ lib, stdenv, nodejs-slim, mkYarnPackage, fetchFromGitHub, bundlerEnv, nixosTests, pkgs +, yarn, callPackage, imagemagick, ffmpeg, file, ruby_3_0, writeShellScript +, fetchYarnDeps, fixup_yarn_lock + + # Allow building a fork or custom version of Mastodon: +, pname ? "glitch-soc" +, version ? import ./version.nix +, srcOverride ? #pkgs.fetchFromGitHub { + #owner = "glitch-soc"; + #repo = "mastodon"; + #rev = "3f15326a05a926e9f001800a48ac2addbd3aa833"; + #sha256 = "1m1agij9i2byiml02yq0h9w6f64jvy2y2ayjm880pg5xm638nqmk"; + #} + /home/oatmealine/mastodon +, dependenciesDir ? ./. # Should contain gemset.nix, yarn.nix and package.json. +}: + +stdenv.mkDerivation rec { + inherit pname version; + + # Using overrideAttrs on src does not build the gems and modules with the overridden src. + # Putting the callPackage up in the arguments list also does not work. + src = if srcOverride != null then srcOverride else callPackage ./source.nix {}; + + mastodon-gems = bundlerEnv { + name = "${pname}-gems-${version}"; + inherit version; + ruby = ruby_3_0; + gemdir = src; + gemset = dependenciesDir + "/gemset.nix"; + # This fix (copied from https://github.com/NixOS/nixpkgs/pull/76765) replaces the gem + # symlinks with directories, resolving this error when running rake: + # /nix/store/451rhxkggw53h7253izpbq55nrhs7iv0-mastodon-gems-3.0.1/lib/ruby/gems/2.6.0/gems/bundler-1.17.3/lib/bundler/settings.rb:6:in `': uninitialized constant Bundler::Settings (NameError) + postBuild = '' + for gem in "$out"/lib/ruby/gems/*/gems/*; do + cp -a "$gem/" "$gem.new" + rm "$gem" + # needed on macOS, otherwise the mv yields permission denied + chmod +w "$gem.new" + mv "$gem.new" "$gem" + done + ''; + }; + + mastodon-modules = stdenv.mkDerivation { + pname = "${pname}-modules"; + inherit src version; + + yarnOfflineCache = fetchYarnDeps { + yarnLock = "${src}/yarn.lock"; + sha256 = "sha256-RQwtybEMwwAoW2DBqX42Q1gmvr12sFWzT2M32TGkOWY="; + }; + + nativeBuildInputs = [ fixup_yarn_lock nodejs-slim yarn mastodon-gems mastodon-gems.wrappedRuby ]; + + RAILS_ENV = "production"; + NODE_ENV = "production"; + + buildPhase = '' + export HOME=$PWD + # This option is needed for openssl-3 compatibility + # Otherwise we encounter this upstream issue: https://github.com/mastodon/mastodon/issues/17924 + #export NODE_OPTIONS=--openssl-legacy-provider + fixup_yarn_lock ~/yarn.lock + yarn config --offline set yarn-offline-mirror $yarnOfflineCache + yarn install --offline --frozen-lockfile --ignore-engines --ignore-scripts --no-progress + + patchShebangs ~/bin + patchShebangs ~/node_modules + + # skip running yarn install + rm -rf ~/bin/yarn + + OTP_SECRET=precompile_placeholder SECRET_KEY_BASE=precompile_placeholder \ + rails assets:precompile + yarn cache clean --offline + rm -rf ~/node_modules/.cache + ''; + + installPhase = '' + mkdir -p $out/public + cp -r node_modules $out/node_modules + cp -r public/assets $out/public + cp -r public/packs $out/public + ''; + }; + + propagatedBuildInputs = [ imagemagick ffmpeg file mastodon-gems.wrappedRuby ]; + buildInputs = [ mastodon-gems nodejs-slim ]; + + buildPhase = '' + ln -s ${mastodon-modules}/node_modules node_modules + ln -s ${mastodon-modules}/public/assets public/assets + ln -s ${mastodon-modules}/public/packs public/packs + + patchShebangs bin/ + for b in $(ls ${mastodon-gems}/bin/) + do + if [ ! -f bin/$b ]; then + ln -s ${mastodon-gems}/bin/$b bin/$b + fi + done + + rm -rf log + ln -s /var/log/mastodon log + ln -s /tmp tmp + ''; + + installPhase = let + run-streaming = writeShellScript "run-streaming.sh" '' + # NixOS helper script to consistently use the same NodeJS version the package was built with. + ${nodejs-slim}/bin/node ./streaming + ''; + in '' + mkdir -p $out + cp -r * $out/ + ln -s ${run-streaming} $out/run-streaming.sh + ''; + + passthru = { + tests.mastodon = nixosTests.mastodon; + updateScript = callPackage ./update.nix {}; + }; + + meta = with lib; { + description = "Self-hosted, globally interconnected microblogging software based on ActivityPub"; + homepage = "https://joinmastodon.org"; + license = licenses.agpl3Plus; + platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" ]; + maintainers = with maintainers; [ happy-river erictapen izorkin ]; + }; +} diff --git a/packages/glitch-soc/gemset.nix b/packages/glitch-soc/gemset.nix new file mode 100644 index 0000000..7f0a8f8 --- /dev/null +++ b/packages/glitch-soc/gemset.nix @@ -0,0 +1,3113 @@ +{ + actioncable = { + dependencies = ["actionpack" "activesupport" "nio4r" "websocket-driver"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0r7ybdykxnn2544vcjmi51mxfpfqx3b4c7fjz15c57hamkhlalzf"; + type = "gem"; + }; + version = "6.1.7"; + }; + actionmailbox = { + dependencies = ["actionpack" "activejob" "activerecord" "activestorage" "activesupport" "mail"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "024a1c2ak1znkvys7pjkkan23wc0vhzyprl16gp9xcr4wy0l6dn4"; + type = "gem"; + }; + version = "6.1.7"; + }; + actionmailer = { + dependencies = ["actionpack" "actionview" "activejob" "activesupport" "mail" "rails-dom-testing"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "193gj013bx5axd4nwvlf6mq19rcvymkf72q9f7ml6v9yl6cc4qam"; + type = "gem"; + }; + version = "6.1.7"; + }; + actionpack = { + dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"]; + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0dygq5fxbrgynd2g7r51asyrap1d6cxravwh509kfmqpfbiq119s"; + type = "gem"; + }; + version = "6.1.7"; + }; + actiontext = { + dependencies = ["actionpack" "activerecord" "activestorage" "activesupport" "nokogiri"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13kr77v91wa7sfsq7h04g8zy1qxcbwhhf4k6zz8276b1d10szly5"; + type = "gem"; + }; + version = "6.1.7"; + }; + actionview = { + dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"]; + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1m68my4dnj7q7986jwlb7gir0f7hahdsqbiaxfvgngwksa8fhrn1"; + type = "gem"; + }; + version = "6.1.7"; + }; + active_model_serializers = { + dependencies = ["actionpack" "activemodel" "case_transform" "jsonapi-renderer"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xdp7cpj3yj3wl4vj0nqq44kzjavlxi1wq3cf9zp0whkir0ym0gy"; + type = "gem"; + }; + version = "0.10.13"; + }; + active_record_query_trace = { + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19888wjdpqvr2kaci6v6jyjw9pjf682zb1iyx2lz12mpdmy3500n"; + type = "gem"; + }; + version = "1.8"; + }; + activejob = { + dependencies = ["activesupport" "globalid"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05f497khf51wrsah927pnmpl0yrcx82gajjk8brcrrbbbd9arlp5"; + type = "gem"; + }; + version = "6.1.7"; + }; + activemodel = { + dependencies = ["activesupport"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "183d7laxvwrw1d02qgm8rg9ljjihfiyh4vzi58xm42z3fr3bbhky"; + type = "gem"; + }; + version = "6.1.7"; + }; + activerecord = { + dependencies = ["activemodel" "activesupport"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1dsxi813wyhx2d0bbyc0nla4ck6nmmi3z3765gdqf6xl3dha5r2j"; + type = "gem"; + }; + version = "6.1.7"; + }; + activestorage = { + dependencies = ["actionpack" "activejob" "activerecord" "activesupport" "marcel" "mini_mime"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1yvmvfka2s7am8m3zdllblxiyyy4yr3ca6q6q5r23fd2qs7rmbz0"; + type = "gem"; + }; + version = "6.1.7"; + }; + activesupport = { + dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo" "zeitwerk"]; + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0k5pq2swzgddmwwr6x1phbspk1vw8cl88ci8jbi18mrirjjfippr"; + type = "gem"; + }; + version = "6.1.7"; + }; + addressable = { + dependencies = ["public_suffix"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ypdmpdn20hxp5vwxz3zc04r5xcwqc25qszdlg41h8ghdqbllwmw"; + type = "gem"; + }; + version = "2.8.1"; + }; + aes_key_wrap = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19bn0y70qm6mfj4y1m0j3s8ggh6dvxwrwrj5vfamhdrpddsz8ddr"; + type = "gem"; + }; + version = "1.1.0"; + }; + airbrussh = { + dependencies = ["sshkit"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0x55y3ynkda76pwnsvrrjlvxfcc7yn1irad8radll9c9cif41jqv"; + type = "gem"; + }; + version = "1.4.1"; + }; + android_key_attestation = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "02spc1sh7zsljl02v9d5rdb717b628vw2k7jkkplifyjk4db0zj6"; + type = "gem"; + }; + version = "0.3.0"; + }; + annotate = { + dependencies = ["activerecord" "rake"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1lw0fxb5mirsdp3bp20gjyvs7clvi19jbxnrm2ihm20kzfhvlqcs"; + type = "gem"; + }; + version = "3.2.0"; + }; + ast = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04nc8x27hlzlrr5c2gn7mar4vdr0apw5xg22wp6m8dx3wqr04a0y"; + type = "gem"; + }; + version = "2.4.2"; + }; + attr_encrypted = { + dependencies = ["encryptor"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ncv2az1zlj33bsllr6q1qdvbw42gv91lxq0ryclbv8l8xh841jg"; + type = "gem"; + }; + version = "3.1.0"; + }; + attr_required = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1g22axmi2rhhy7w8c3x6gppsawxqavbrnxpnmphh22fk7cwi0kh2"; + type = "gem"; + }; + version = "1.0.1"; + }; + awrence = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0gj8f8c54r9cabkm41s59sa1ca5wpbipw7gq3sfl87x9296227fx"; + type = "gem"; + }; + version = "1.2.1"; + }; + aws-eventstream = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1pyis1nvnbjxk12a43xvgj2gv0mvp4cnkc1gzw0v1018r61399gz"; + type = "gem"; + }; + version = "1.2.0"; + }; + aws-partitions = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0vqb2bfq5db7x66f4n4z30c953y5q8pwwl2067nxhz6j0c486pzm"; + type = "gem"; + }; + version = "1.587.0"; + }; + aws-sdk-core = { + dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0hajbavfngn99hcz6n20162jygvwdflldvnlrza7z32hizawaaan"; + type = "gem"; + }; + version = "3.130.2"; + }; + aws-sdk-kms = { + dependencies = ["aws-sdk-core" "aws-sigv4"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "14dcfqqdx1dy7qwrdyqdvqjs53kswm4njvg34f61jpl9xi3h2yf3"; + type = "gem"; + }; + version = "1.56.0"; + }; + aws-sdk-s3 = { + dependencies = ["aws-sdk-core" "aws-sdk-kms" "aws-sigv4"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1r6dxz3llgxbbm66jq5mkzk0i6qsxwv0d9s0ipwb23vv3bgp23yf"; + type = "gem"; + }; + version = "1.114.0"; + }; + aws-sigv4 = { + dependencies = ["aws-eventstream"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xp7diwq7nv4vvxrl9x3lis2l4x6bissrfzbfyy6rv5bmj5w109z"; + type = "gem"; + }; + version = "1.5.0"; + }; + bcrypt = { + groups = ["default" "pam_authentication"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1rakdhrnlclrpy7sihi9ipwdh7fjkkvzga171464lq6rzp07cf65"; + type = "gem"; + }; + version = "3.1.17"; + }; + better_errors = { + dependencies = ["coderay" "erubi" "rack"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "11220lfzhsyf5fcril3qd689kgg46qlpiiaj00hc9mh4mcbc3vrr"; + type = "gem"; + }; + version = "2.9.1"; + }; + better_html = { + dependencies = ["actionview" "activesupport" "ast" "erubi" "parser" "smart_properties"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1y090dmgjxr3yzxi3pg5jgirkmyfdrmjhabmzmhg5i8ssiqr2gdz"; + type = "gem"; + }; + version = "2.0.1"; + }; + bindata = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06lqi4svq5qls9f7nnvd2zmjdqmi2sf82sq78ci5d78fq0z5x2vr"; + type = "gem"; + }; + version = "2.4.10"; + }; + binding_of_caller = { + dependencies = ["debug_inspector"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "078n2dkpgsivcf0pr50981w95nfc2bsrp3wpf9wnxz1qsp8jbb9s"; + type = "gem"; + }; + version = "1.0.0"; + }; + blurhash = { + dependencies = ["ffi"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1rs61mwdiyriq8mb8na2sfrqzz8igls04md63ajyhk4yj8d2j0sz"; + type = "gem"; + }; + version = "0.1.6"; + }; + bootsnap = { + dependencies = ["msgpack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0y1ycmvyd7swp6gy85m7znwilvb61zzcx6najgq0d1glq0p2hwy6"; + type = "gem"; + }; + version = "1.13.0"; + }; + brakeman = { + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0zr2p0w4ckv65cv3vdwnk9f3yydmjdmw75x7dskx1gqr9j9q3306"; + type = "gem"; + }; + version = "5.3.1"; + }; + browser = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0q1yzvbqp0mykswipq3w00ljw9fgkhjfrij3hkwi7cx85r14n6gw"; + type = "gem"; + }; + version = "4.2.0"; + }; + brpoplpush-redis_script = { + dependencies = ["concurrent-ruby" "redis"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rjm184dhlw35ymi8ifpl5155vwl6wfzdc5qjvzv634gc365yz9j"; + type = "gem"; + }; + version = "0.1.2"; + }; + builder = { + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr"; + type = "gem"; + }; + version = "3.2.4"; + }; + bullet = { + dependencies = ["activesupport" "uniform_notifier"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06rmq3s8q6xndxxl7qid9nf3hiaahs71jyiyyk3bx31hns1vkcci"; + type = "gem"; + }; + version = "7.0.3"; + }; + bundler-audit = { + dependencies = ["thor"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0gdx0019vj04n1512shhdx7hwphzqmdpw4vva2k551nd47y1dixx"; + type = "gem"; + }; + version = "0.9.1"; + }; + byebug = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0nx3yjf4xzdgb8jkmk2344081gqr22pgjqnmjg2q64mj5d6r9194"; + type = "gem"; + }; + version = "11.1.3"; + }; + capistrano = { + dependencies = ["airbrussh" "i18n" "rake" "sshkit"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1673k8yzy4gl96f1xjj6zf1r2pgm2h042vdsiw03wqx4ygbq2las"; + type = "gem"; + }; + version = "3.17.1"; + }; + capistrano-bundler = { + dependencies = ["capistrano"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "168kyi0gv2s84jm533m8rg0dii50flr06n6s2ci6kzsib3n9n8dr"; + type = "gem"; + }; + version = "2.0.1"; + }; + capistrano-rails = { + dependencies = ["capistrano" "capistrano-bundler"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1iyhs77bff09g18dlz0li5f44khjwpqc09gk5hzcnf5v9yvijpg9"; + type = "gem"; + }; + version = "1.6.2"; + }; + capistrano-rbenv = { + dependencies = ["capistrano" "sshkit"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1x9m1i5zd0wx122zw3m40zprlmxk9d47bd6w61k81wr4qsvkk3rw"; + type = "gem"; + }; + version = "2.2.0"; + }; + capistrano-yarn = { + dependencies = ["capistrano"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zdg2s061vl5b8114n909mrjb2hc1qx0i4wqx9nacsrcjgyp07l9"; + type = "gem"; + }; + version = "2.0.2"; + }; + capybara = { + dependencies = ["addressable" "matrix" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05df76mfhfab6d7ir0qy5xf1ad6kqdh2p6vfqv7nhlx45k1y4ysg"; + type = "gem"; + }; + version = "3.37.1"; + }; + case_transform = { + dependencies = ["activesupport"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0fzyws6spn5arqf6q604dh9mrj84a36k5hsc8z7jgcpfvhc49bg2"; + type = "gem"; + }; + version = "0.2"; + }; + cbor = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0511idr8xps9625nh3kxr68sdy6l3xy2kcz7r57g47fxb1v18jj3"; + type = "gem"; + }; + version = "0.5.9.6"; + }; + charlock_holmes = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0hybw8jw9ryvz5zrki3gc9r88jqy373m6v46ynxsdzv1ysiyr40p"; + type = "gem"; + }; + version = "0.7.7"; + }; + chewy = { + dependencies = ["activesupport" "elasticsearch" "elasticsearch-dsl"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jfdz0z27p839m09xmw5anrw5jp3jd5hd5gnx4vlk6kk520cy6sf"; + type = "gem"; + }; + version = "7.2.4"; + }; + chunky_png = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1znw5x86hmm9vfhidwdsijz8m38pqgmv98l9ryilvky0aldv7mc9"; + type = "gem"; + }; + version = "1.4.0"; + }; + climate_control = { + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0q11v0iabvr6rif0d025xh078ili5frrihlj0m04zfg7lgvagxji"; + type = "gem"; + }; + version = "0.2.0"; + }; + cocoon = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "038z97pkhvsqbh6cmyyzj58ya968p24k7r0f0rx7sa2kjvk193yh"; + type = "gem"; + }; + version = "1.2.15"; + }; + coderay = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jvxqxzply1lwp7ysn94zjhh57vc14mcshw1ygw14ib8lhc00lyw"; + type = "gem"; + }; + version = "1.1.3"; + }; + color_diff = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "01dpvqlzybpb3pkcwd9ik5sbjw283618ywvdphxslhiy8ps3kp4r"; + type = "gem"; + }; + version = "0.1"; + }; + concurrent-ruby = { + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0s4fpn3mqiizpmpy2a24k4v365pv75y50292r8ajrv4i1p5b2k14"; + type = "gem"; + }; + version = "1.1.10"; + }; + connection_pool = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1nj4r58m5cpfdsijj6gjfs3yzcnxq2halagjk07wjcrgj6z8ayb7"; + type = "gem"; + }; + version = "2.3.0"; + }; + cose = { + dependencies = ["cbor" "openssl-signature_algorithm"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0cf29s40xf6a9k0idswfbabkswr0k5iqfrg61v40bzfrv0fdg440"; + type = "gem"; + }; + version = "1.2.1"; + }; + crack = { + dependencies = ["rexml"]; + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r"; + type = "gem"; + }; + version = "0.4.5"; + }; + crass = { + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw"; + type = "gem"; + }; + version = "1.0.6"; + }; + css_parser = { + dependencies = ["addressable"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw"; + type = "gem"; + }; + version = "1.7.1"; + }; + debug_inspector = { + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1lswmjwxf1clzaimikhiwd9s1n07qkyz7a9xwng64j4fxsajykqp"; + type = "gem"; + }; + version = "1.0.0"; + }; + devise = { + dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"]; + groups = ["default" "pam_authentication"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0gl0b4jqf7ysv3rg99sgxa5y9va2k13p0si3a88pr7m8g6z8pm7x"; + type = "gem"; + }; + version = "4.8.1"; + }; + devise-two-factor = { + dependencies = ["activesupport" "attr_encrypted" "devise" "railties" "rotp"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04f5rb8fg4cvzm32v413z3h53wc0fgxg927q8rqd546hdrlx4j35"; + type = "gem"; + }; + version = "4.0.2"; + }; + devise_pam_authenticatable2 = { + dependencies = ["devise" "rpam2"]; + groups = ["pam_authentication"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13ipl52pkhc6vxp8ca31viwv01237bi2bfk3b1fixq1x46nf87p2"; + type = "gem"; + }; + version = "9.2.0"; + }; + diff-lcs = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rwvjahnp7cpmracd8x732rjgnilqv2sx7d1gfrysslc3h039fa9"; + type = "gem"; + }; + version = "1.5.0"; + }; + discard = { + dependencies = ["activerecord"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1xavjhccyyzn9z6fz3034vgvzprc983mbrq6n9sc0drfw7m3vrip"; + type = "gem"; + }; + version = "1.2.1"; + }; + docile = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wi81lynfdvbwhrc4ws746g3j8761vian4m9gxamdj9rjwj9jhls"; + type = "gem"; + }; + version = "1.3.4"; + }; + domain_name = { + dependencies = ["unf"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0"; + type = "gem"; + }; + version = "0.5.20190701"; + }; + doorkeeper = { + dependencies = ["railties"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1znfhqxvfdvxh0z8qnh1n7iahk9hs8d243j5dvig2v933j4z3ykw"; + type = "gem"; + }; + version = "5.6.0"; + }; + dotenv = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1n0pi8x8ql5h1mijvm8lgn6bhq4xjb5a500p5r1krq4s6j9lg565"; + type = "gem"; + }; + version = "2.8.1"; + }; + dotenv-rails = { + dependencies = ["dotenv" "railties"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0v0gcbxzypcvy6fqq4gp80jb310xvdwj5n8qw9ci67g5yjvq2nxh"; + type = "gem"; + }; + version = "2.8.1"; + }; + ed25519 = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0zb2dr2ihb1qiknn5iaj1ha1w9p7lj9yq5waasndlfadz225ajji"; + type = "gem"; + }; + version = "1.3.0"; + }; + elasticsearch = { + dependencies = ["elasticsearch-api" "elasticsearch-transport"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0havyxmvl157a653prspnbhgdchlx44xqxl170v1im5ggxwavcaq"; + type = "gem"; + }; + version = "7.13.3"; + }; + elasticsearch-api = { + dependencies = ["multi_json"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bmssarkk7lqkjdn8c9j7jvxcnn4hg1zcmhsky8bfvc99k33b3w8"; + type = "gem"; + }; + version = "7.13.3"; + }; + elasticsearch-dsl = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "174m3fwm3mawbkjg2xbmqvljq7ava4s95m8vpg5khcvfj506wxfk"; + type = "gem"; + }; + version = "0.1.10"; + }; + elasticsearch-transport = { + dependencies = ["faraday" "multi_json"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0blfii8qvj0m6bg9sbfynxc40in7zfmw2wpi4clv7d9gclk053db"; + type = "gem"; + }; + version = "7.13.3"; + }; + encryptor = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0s8rvfl0vn8w7k1sgkc234060jh468s3zd45xa64p1jdmfa3zwmb"; + type = "gem"; + }; + version = "3.0.0"; + }; + erubi = { + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "11bz1v1cxabm8672gabrw542zyg51dizlcvdck6vvwzagxbjv9zx"; + type = "gem"; + }; + version = "1.11.0"; + }; + et-orbi = { + dependencies = ["tzinfo"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1d2z4ky2v15dpcz672i2p7lb2nc793dasq3yq3660h2az53kss9v"; + type = "gem"; + }; + version = "1.2.7"; + }; + excon = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05is0kb650j8wrdi4rgkdls662chnhdg2p64pgq3zkd3d7l2a9zw"; + type = "gem"; + }; + version = "0.76.0"; + }; + fabrication = { + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bxssmjp49whzq2zv7w751gr4nkdaiwcxd1vda0byigwyrnj6f5q"; + type = "gem"; + }; + version = "2.30.0"; + }; + faker = { + dependencies = ["i18n"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1wslw5gh335zcahxmdd497xaa7h0d8l60c0jfv942mn47fxy8m47"; + type = "gem"; + }; + version = "2.23.0"; + }; + faraday = { + dependencies = ["faraday-em_http" "faraday-em_synchrony" "faraday-excon" "faraday-httpclient" "faraday-multipart" "faraday-net_http" "faraday-net_http_persistent" "faraday-patron" "faraday-rack" "faraday-retry" "ruby2_keywords"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0y32gj994ll3zlcqjmwp78r7s03iiwayij6fz2pjpkfywgvp71s6"; + type = "gem"; + }; + version = "1.9.3"; + }; + faraday-em_http = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "12cnqpbak4vhikrh2cdn94assh3yxza8rq2p9w2j34bqg5q4qgbs"; + type = "gem"; + }; + version = "1.0.0"; + }; + faraday-em_synchrony = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vgrbhkp83sngv6k4mii9f2s9v5lmp693hylfxp2ssfc60fas3a6"; + type = "gem"; + }; + version = "1.0.0"; + }; + faraday-excon = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0h09wkb0k0bhm6dqsd47ac601qiaah8qdzjh8gvxfd376x1chmdh"; + type = "gem"; + }; + version = "1.1.0"; + }; + faraday-httpclient = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0fyk0jd3ks7fdn8nv3spnwjpzx2lmxmg2gh4inz3by1zjzqg33sc"; + type = "gem"; + }; + version = "1.0.1"; + }; + faraday-multipart = { + dependencies = ["multipart-post"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "03qfi9020ynf7hkdiaq01sd2mllvw7fg4qiin3pk028b4wv23j3j"; + type = "gem"; + }; + version = "1.0.3"; + }; + faraday-net_http = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fi8sda5hc54v1w3mqfl5yz09nhx35kglyx72w7b8xxvdr0cwi9j"; + type = "gem"; + }; + version = "1.0.1"; + }; + faraday-net_http_persistent = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0dc36ih95qw3rlccffcb0vgxjhmipsvxhn6cw71l7ffs0f7vq30b"; + type = "gem"; + }; + version = "1.2.0"; + }; + faraday-patron = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19wgsgfq0xkski1g7m96snv39la3zxz6x7nbdgiwhg5v82rxfb6w"; + type = "gem"; + }; + version = "1.0.0"; + }; + faraday-rack = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1h184g4vqql5jv9s9im6igy00jp6mrah2h14py6mpf9bkabfqq7g"; + type = "gem"; + }; + version = "1.0.0"; + }; + faraday-retry = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "153i967yrwnswqgvnnajgwp981k9p50ys1h80yz3q94rygs59ldd"; + type = "gem"; + }; + version = "1.0.3"; + }; + fast_blank = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1shpmamyzyhyxmv95r96ja5rylzaw60r19647d0fdm7y2h2c77r6"; + type = "gem"; + }; + version = "1.0.1"; + }; + fastimage = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0nnggg20za5vamdpkgrxxa32z33d8hf0g2bciswkhqnc6amb3yjr"; + type = "gem"; + }; + version = "2.2.6"; + }; + ffi = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1862ydmclzy1a0cjbvm8dz7847d9rch495ib0zb64y84d3xd4bkg"; + type = "gem"; + }; + version = "1.15.5"; + }; + ffi-compiler = { + dependencies = ["ffi" "rake"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0c2caqm9wqnbidcb8dj4wd3s902z15qmgxplwyfyqbwa0ydki7q1"; + type = "gem"; + }; + version = "1.0.1"; + }; + fog-core = { + dependencies = ["builder" "excon" "formatador" "mime-types"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1agd6xgzk0rxrsjdpn94v4hy89s0nm2cs4zg2p880w2dan9xgrak"; + type = "gem"; + }; + version = "2.1.0"; + }; + fog-json = { + dependencies = ["fog-core" "multi_json"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx"; + type = "gem"; + }; + version = "1.2.0"; + }; + fog-openstack = { + dependencies = ["fog-core" "fog-json" "ipaddress"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "11j18h61d3p0pcp9k5346lbj1lahab1dqybkrx9338932lmjn7ap"; + type = "gem"; + }; + version = "0.3.10"; + }; + formatador = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0"; + type = "gem"; + }; + version = "0.2.5"; + }; + fugit = { + dependencies = ["et-orbi" "raabro"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0g7m38n4f5cjqa4gf4fycw6fqvf6m5hhsx4jawryv3bi4hls07d1"; + type = "gem"; + }; + version = "1.7.1"; + }; + fuubar = { + dependencies = ["rspec-core" "ruby-progressbar"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1028vn7j3kc5qqwswrf3has3qm4j9xva70xmzb3n29i89f0afwmj"; + type = "gem"; + }; + version = "2.5.1"; + }; + gitlab-omniauth-openid-connect = { + dependencies = ["addressable" "omniauth" "openid_connect"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lqizfap12ica5c6q74ldarzmbpmhgl156bap9xhamrlm4za4i7a"; + type = "gem"; + }; + version = "0.10.0"; + }; + globalid = { + dependencies = ["activesupport"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1n5yc058i8xhi1fwcp1w7mfi6xaxfmrifdb4r4hjfff33ldn8lqj"; + type = "gem"; + }; + version = "1.0.0"; + }; + hamlit = { + dependencies = ["temple" "thor" "tilt"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06imnwpzvpagwn0b9a8kwv7hncii32flmafz20z95hd77hhr6ab7"; + type = "gem"; + }; + version = "2.13.0"; + }; + hamlit-rails = { + dependencies = ["actionpack" "activesupport" "hamlit" "railties"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0v75yd6x0nwky83smd9hw5ym9h0pi32jrzbnvq55pzj0rc95gg2p"; + type = "gem"; + }; + version = "0.2.3"; + }; + hashdiff = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c"; + type = "gem"; + }; + version = "1.0.1"; + }; + hashie = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1nh3arcrbz1rc1cr59qm53sdhqm137b258y8rcb4cvd3y98lwv4x"; + type = "gem"; + }; + version = "5.0.0"; + }; + hcaptcha = { + dependencies = ["json"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0fh6391zlv2ikvzqj2gymb70k1avk1j9da8bzgw0scsz2wqq98m2"; + type = "gem"; + }; + version = "7.1.0"; + }; + highline = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0yclf57n2j3cw8144ania99h1zinf8q3f5zrhqa754j6gl95rp9d"; + type = "gem"; + }; + version = "2.0.3"; + }; + hiredis = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04jj8k7lxqxw24sp0jiravigdkgsyrpprxpxm71ba93x1wr2w1bz"; + type = "gem"; + }; + version = "0.6.3"; + }; + hkdf = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04fixg0a51n4vy0j6c1hvisa2yl33m3jrrpxpb5sq6j511vjriil"; + type = "gem"; + }; + version = "0.3.0"; + }; + htmlentities = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"; + type = "gem"; + }; + version = "4.3.4"; + }; + http = { + dependencies = ["addressable" "http-cookie" "http-form_data" "llhttp-ffi"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jn1y6sfxpfaq0hcblv8hhyxzam8n39kvypi07q2vxaimh6ly7mj"; + type = "gem"; + }; + version = "5.1.0"; + }; + http-cookie = { + dependencies = ["domain_name"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13rilvlv8kwbzqfb644qp6hrbsj82cbqmnzcvqip1p6vqx36sxbk"; + type = "gem"; + }; + version = "1.0.5"; + }; + http-form_data = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1wx591jdhy84901pklh1n9sgh74gnvq1qyqxwchni1yrc49ynknc"; + type = "gem"; + }; + version = "2.3.0"; + }; + http_accept_language = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0"; + type = "gem"; + }; + version = "2.1.1"; + }; + httpclient = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"; + type = "gem"; + }; + version = "2.8.3"; + }; + httplog = { + dependencies = ["rack" "rainbow"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0mi38zgpwvasjq0cqz674crwal5rsaw8f89bww9zsw2vk77bhaq9"; + type = "gem"; + }; + version = "1.6.0"; + }; + i18n = { + dependencies = ["concurrent-ruby"]; + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vdcchz7jli1p0gnc669a7bj3q1fv09y9ppf0y3k0vb1jwdwrqwi"; + type = "gem"; + }; + version = "1.12.0"; + }; + i18n-tasks = { + dependencies = ["activesupport" "ast" "better_html" "erubi" "highline" "i18n" "parser" "rails-i18n" "rainbow" "terminal-table"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19zkcsqwzc3i6vizj26mxxww6m5grv9zmp6yxyswbqq9kyzb081z"; + type = "gem"; + }; + version = "1.0.12"; + }; + idn-ruby = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1xjr8nxpq6vsa4kd7pvd14xxiba9y4dais1yyz4dj567hsqdrhcm"; + type = "gem"; + }; + version = "0.1.4"; + }; + ipaddress = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45"; + type = "gem"; + }; + version = "0.8.3"; + }; + jmespath = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1mnvb80cdg7fzdcs3xscv21p28w4igk5sj5m7m81xp8v2ks87jj0"; + type = "gem"; + }; + version = "1.6.1"; + }; + json = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0yk5d10yvspkc5jyvx9gc1a9pn1z8v4k2hvjk1l88zixwf3wf3cl"; + type = "gem"; + }; + version = "2.6.2"; + }; + json-canonicalization = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "179h6jfdsp9dmzyma7s7ykv1ia43r6z8x96j335q99p6mc5sk5qv"; + type = "gem"; + }; + version = "0.3.0"; + }; + json-jwt = { + dependencies = ["activesupport" "aes_key_wrap" "bindata"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0nzbk1mrbf9mnvjpn3bxy8a85rjf94qmfdnvk78mjzk8pa0fvgdr"; + type = "gem"; + }; + version = "1.13.0"; + }; + json-ld = { + dependencies = ["htmlentities" "json-canonicalization" "link_header" "multi_json" "rack" "rdf"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1aq71is278w69brhg4yp0f4ldxmy2nyj45c1rfbf73qi945mrbln"; + type = "gem"; + }; + version = "3.2.3"; + }; + json-ld-preloaded = { + dependencies = ["json-ld" "rdf"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0h0pfxyrsbifzhwfxj1ppaxbk7v2z8mw53a0mi49i986wyspxlgv"; + type = "gem"; + }; + version = "3.2.0"; + }; + jsonapi-renderer = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ys4drd0k9rw5ixf8n8fx8v0pjh792w4myh0cpdspd317l1lpi5m"; + type = "gem"; + }; + version = "0.2.2"; + }; + jwt = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1lsk71qh5d7bm1qqrjvcwhp4h71ckkdbzxnw4xkd9cin8gjfvvr6"; + type = "gem"; + }; + version = "2.4.1"; + }; + kaminari = { + dependencies = ["activesupport" "kaminari-actionview" "kaminari-activerecord" "kaminari-core"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0gia8irryvfhcr6bsr64kpisbgdbqjsqfgrk12a11incmpwny1y4"; + type = "gem"; + }; + version = "1.2.2"; + }; + kaminari-actionview = { + dependencies = ["actionview" "kaminari-core"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "02f9ghl3a9b5q7l079d3yzmqjwkr4jigi7sldbps992rigygcc0k"; + type = "gem"; + }; + version = "1.2.2"; + }; + kaminari-activerecord = { + dependencies = ["activerecord" "kaminari-core"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0c148z97s1cqivzbwrak149z7kl1rdmj7dxk6rpkasimmdxsdlqd"; + type = "gem"; + }; + version = "1.2.2"; + }; + kaminari-core = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zw3pg6kj39y7jxakbx7if59pl28lhk98fx71ks5lr3hfgn6zliv"; + type = "gem"; + }; + version = "1.2.2"; + }; + kt-paperclip = { + dependencies = ["activemodel" "activesupport" "marcel" "mime-types" "terrapin"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "08ngapld22knlkyn0dhhddkfm4vfj0lgmwj4y6x4mhi2hzfwxcxr"; + type = "gem"; + }; + version = "7.1.1"; + }; + launchy = { + dependencies = ["addressable"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1xdyvr5j0gjj7b10kgvh8ylxnwk3wx19my42wqn9h82r4p246hlm"; + type = "gem"; + }; + version = "2.5.0"; + }; + letter_opener = { + dependencies = ["launchy"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1y5d4ip4l12v58bgazadl45iv3a5j7jp2gwg96b6jy378zn42a1d"; + type = "gem"; + }; + version = "1.8.1"; + }; + letter_opener_web = { + dependencies = ["actionmailer" "letter_opener" "railties" "rexml"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0vvvaz2ngaxv0s6sj25gdvp73vd8pfl8q3jharadg18p3va0m1ik"; + type = "gem"; + }; + version = "2.0.0"; + }; + link_header = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1yamrdq4rywmnpdhbygnkkl9fdy249fg5r851nrkkxr97gj5rihm"; + type = "gem"; + }; + version = "0.0.8"; + }; + llhttp-ffi = { + dependencies = ["ffi-compiler" "rake"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00dh6zmqdj59rhcya0l4b9aaxq6n8xizfbil93k0g06gndyk5xz5"; + type = "gem"; + }; + version = "0.4.0"; + }; + lograge = { + dependencies = ["actionpack" "activesupport" "railties" "request_store"]; + groups = ["production"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15pjm9pa5m3mbv9xvfgfr16q4jyaznsg8y63jz9x4jqr8npw0vx3"; + type = "gem"; + }; + version = "0.12.0"; + }; + loofah = { + dependencies = ["crass" "nokogiri"]; + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fpyk1965py77al7iadkn5dibwgvybknkr7r8bii2dj73wvr29rh"; + type = "gem"; + }; + version = "2.19.0"; + }; + mail = { + dependencies = ["mini_mime"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc"; + type = "gem"; + }; + version = "2.7.1"; + }; + makara = { + dependencies = ["activerecord"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0a6x6w1ij484s1z0wp667d6v0zb8bylhhr3av10yz60a2nz4r1l7"; + type = "gem"; + }; + version = "0.5.1"; + }; + marcel = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0kky3yiwagsk8gfbzn3mvl2fxlh3b39v6nawzm4wpjs6xxvvc4x0"; + type = "gem"; + }; + version = "1.0.2"; + }; + mario-redis-lock = { + dependencies = ["redis"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1v9wdjcjqzpns2migxp4a5b4w82mipi0fwihbqz3q2qj2qm7wc17"; + type = "gem"; + }; + version = "1.2.1"; + }; + matrix = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1h2cgkpzkh3dd0flnnwfq6f3nl2b1zff9lvqz8xs853ssv5kq23i"; + type = "gem"; + }; + version = "0.4.2"; + }; + memory_profiler = { + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0s8qaf19yr4lhvdxk3cy3ifc47cgxdz2jybg6hzxsy9gh88c1f7v"; + type = "gem"; + }; + version = "1.0.0"; + }; + method_source = { + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"; + type = "gem"; + }; + version = "1.0.0"; + }; + microformats = { + dependencies = ["json" "nokogiri"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "094m75yw2cvadpvj4rawy6s4ykx9nvv8dhikxrp8zng2ywlaqmic"; + type = "gem"; + }; + version = "4.4.1"; + }; + mime-types = { + dependencies = ["mime-types-data"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ipw892jbksbxxcrlx9g5ljq60qx47pm24ywgfbyjskbcl78pkvb"; + type = "gem"; + }; + version = "3.4.1"; + }; + mime-types-data = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "003gd7mcay800k2q4pb2zn8lwwgci4bhi42v2jvlidm8ksx03i6q"; + type = "gem"; + }; + version = "3.2022.0105"; + }; + mini_mime = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lbim375gw2dk6383qirz13hgdmxlan0vc5da2l072j3qw6fqjm5"; + type = "gem"; + }; + version = "1.1.2"; + }; + mini_portile2 = { + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rapl1sfmfi3bfr68da4ca16yhc0pp93vjwkj7y3rdqrzy3b41hy"; + type = "gem"; + }; + version = "2.8.0"; + }; + minitest = { + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0516ypqlx0mlcfn5xh7qppxqc3xndn1fnadxawa8wld5dkcimy30"; + type = "gem"; + }; + version = "5.16.3"; + }; + msgpack = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "02af38s49111wglqzcjcpa7bwg6psjgysrjvgk05h3x4zchb6gd5"; + type = "gem"; + }; + version = "1.5.4"; + }; + multi_json = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0pb1g1y3dsiahavspyzkdy39j4q377009f6ix0bh1ag4nqw43l0z"; + type = "gem"; + }; + version = "1.15.0"; + }; + multipart-post = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zgw9zlwh2a6i1yvhhc4a84ry1hv824d6g2iw2chs3k5aylpmpfj"; + type = "gem"; + }; + version = "2.1.1"; + }; + net-ldap = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ycw0qsw3hap8svakl0i30jkj0ffd4lpyrn17a1j0w8mz5ainmsj"; + type = "gem"; + }; + version = "0.17.1"; + }; + net-scp = { + dependencies = ["net-ssh"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1q4kxfvx1v4awv8kgincishi7h16dj9sn74gz8x92i81668j1wgm"; + type = "gem"; + }; + version = "4.0.0.rc1"; + }; + net-ssh = { + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qp3i8bi7ji1np0530bp2p9zrrn6galvmbsivxwpkjdpjdyn19sr"; + type = "gem"; + }; + version = "7.0.1"; + }; + nio4r = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xk64wghkscs6bv2n22853k2nh39d131c6rfpnlw12mbjnnv9v1v"; + type = "gem"; + }; + version = "2.5.8"; + }; + nokogiri = { + dependencies = ["mini_portile2" "racc"]; + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0g7axlq2y6gzmixzzzhw3fn6nhrhg469jj8gfr7gs8igiclpkhkr"; + type = "gem"; + }; + version = "1.13.8"; + }; + nsa = { + dependencies = ["activesupport" "concurrent-ruby" "sidekiq" "statsd-ruby"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jzs1n71pi6najhs9h8jx156gzgk3h9bwjr60vazizwdz3mm69ia"; + type = "gem"; + }; + version = "0.2.8"; + }; + oj = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ihfnl0maszdq821h6mivr8xickjab6ccyncnm5rn2vgrj6imwxf"; + type = "gem"; + }; + version = "3.13.21"; + }; + omniauth = { + dependencies = ["hashie" "rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jn9j54l5h7xcba2vjq74l1dk0xrwvsjxam4qhylpi52nw0h5502"; + type = "gem"; + }; + version = "1.9.2"; + }; + omniauth-cas = { + dependencies = ["addressable" "nokogiri" "omniauth"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0kzlh1nac4yz70917cdcsk0r23gy5h7i0x5kbmkvkpbgk6gvrb0z"; + type = "gem"; + }; + version = "2.0.0"; + }; + omniauth-rails_csrf_protection = { + dependencies = ["actionpack" "omniauth"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xgkxwg17w39q3yjqcj0fm6hdkw37qm1l82dvm9zxn6q2pbzm2zv"; + type = "gem"; + }; + version = "0.1.2"; + }; + omniauth-saml = { + dependencies = ["omniauth" "ruby-saml"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0gxl14lbksnjkl8dfn23lsjkk63md77icm5racrh6fsp5n4ni9d4"; + type = "gem"; + }; + version = "1.10.3"; + }; + openid_connect = { + dependencies = ["activemodel" "attr_required" "json-jwt" "rack-oauth2" "swd" "tzinfo" "validate_email" "validate_url" "webfinger"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0w474bz3s1hqhilvrddr33l2nkyikypaczp3808w0345jr88b5m7"; + type = "gem"; + }; + version = "1.3.0"; + }; + openssl = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1azzx975qr078isvg8i0hmsr2l98kgnlfrnbb2jdm9b5kwifx1h4"; + type = "gem"; + }; + version = "3.0.0"; + }; + openssl-signature_algorithm = { + dependencies = ["openssl"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rwjga70kbg0rmwgksb2if34ndh9cy0fgrimkx3hjz9c68ssvpxg"; + type = "gem"; + }; + version = "1.2.1"; + }; + orm_adapter = { + groups = ["default" "pam_authentication"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda"; + type = "gem"; + }; + version = "0.5.0"; + }; + ox = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "054xq22rwj26jag43s5fb4vb4x2252dz6rvgjn42id8ycs51my2w"; + type = "gem"; + }; + version = "2.14.11"; + }; + parallel = { + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "07vnk6bb54k4yc06xnwck7php50l09vvlw1ga8wdz0pia461zpzb"; + type = "gem"; + }; + version = "1.22.1"; + }; + parser = { + dependencies = ["ast"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1q31n7yj59wka8xl8s5wkf66hm4pgvblx95czyxffprdnlhrir2p"; + type = "gem"; + }; + version = "3.1.2.1"; + }; + parslet = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "01pnw6ymz6nynklqvqxs4bcai25kcvnd5x4id9z3vd1rbmlk0lfl"; + type = "gem"; + }; + version = "2.0.0"; + }; + pastel = { + dependencies = ["tty-color"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xash2gj08dfjvq4hy6l1z22s5v30fhizwgs10d6nviggpxsj7a8"; + type = "gem"; + }; + version = "0.8.0"; + }; + pg = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ypj64nhq3grs9zh40vmyfyhmxlhljjsbg5q0jxhlxg5v76ij0mb"; + type = "gem"; + }; + version = "1.4.3"; + }; + pghero = { + dependencies = ["activerecord"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1v0cszy9lgjqn3ax8pbj5fg01pg83wyl41wzid3g35h4xdxz1d4a"; + type = "gem"; + }; + version = "2.8.3"; + }; + pkg-config = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0v9vmkmpha34lwdhig08kb7z4wk3xmw49dvkl99nz9llxhzqr5hl"; + type = "gem"; + }; + version = "1.4.9"; + }; + posix-spawn = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0cmb0svalqcxfzlzc5fvrci12b79x7bakasr8gkl3q5rz6di1q52"; + type = "gem"; + }; + version = "0.3.15"; + }; + premailer = { + dependencies = ["addressable" "css_parser" "htmlentities"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1f0zz3vwv1kyr43chvrpvhb8wm9qgcaz8ckc1lj2jxfp6xsss971"; + type = "gem"; + }; + version = "1.14.2"; + }; + premailer-rails = { + dependencies = ["actionmailer" "premailer"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0q23clzqgzxcg1jld7hn5jy2yqxvana3iw66vmjgzz7y4ylf97b6"; + type = "gem"; + }; + version = "1.11.1"; + }; + private_address_check = { + groups = ["production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05phz0vscfh9chv90yc9091pifw3cpwkh76flnhrmvja1q3na4cy"; + type = "gem"; + }; + version = "0.5.0"; + }; + pry = { + dependencies = ["coderay" "method_source"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0m445x8fwcjdyv2bc0glzss2nbm1ll51bq45knixapc7cl3dzdlr"; + type = "gem"; + }; + version = "0.14.1"; + }; + pry-byebug = { + dependencies = ["byebug" "pry"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1y41al94ks07166qbp2200yzyr5y60hm7xaiw4lxpgsm4b1pbyf8"; + type = "gem"; + }; + version = "3.10.1"; + }; + pry-rails = { + dependencies = ["pry"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1cf4ii53w2hdh7fn8vhqpzkymmchjbwij4l3m7s6fsxvb9bn51j6"; + type = "gem"; + }; + version = "0.3.9"; + }; + public_suffix = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0sqw1zls6227bgq38sxb2hs8nkdz4hn1zivs27mjbniswfy4zvi6"; + type = "gem"; + }; + version = "5.0.0"; + }; + puma = { + dependencies = ["nio4r"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qzq0c791kacv68hgk9zqsd1p7zx1y1rr9j10rn9yphibb8jj436"; + type = "gem"; + }; + version = "5.6.5"; + }; + pundit = { + dependencies = ["activesupport"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17z2f7w3syh3c04c8m1v9pvb9pfpymk8b5plszr5l24hx374xvsd"; + type = "gem"; + }; + version = "2.2.0"; + }; + raabro = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10m8bln9d00dwzjil1k42i5r7l82x25ysbi45fwyv4932zsrzynl"; + type = "gem"; + }; + version = "1.4.0"; + }; + racc = { + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0la56m0z26j3mfn1a9lf2l03qx1xifanndf9p3vx1azf6sqy7v9d"; + type = "gem"; + }; + version = "1.6.0"; + }; + rack = { + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0axc6w0rs4yj0pksfll1hjgw1k6a5q0xi2lckh91knfb72v348pa"; + type = "gem"; + }; + version = "2.2.4"; + }; + rack-attack = { + dependencies = ["rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "049s3y3dpl6dn478g912y6f9nzclnnkl30psrbc2w5kaihj5szhq"; + type = "gem"; + }; + version = "6.6.1"; + }; + rack-cors = { + dependencies = ["rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jvs0mq8jrsz86jva91mgql16daprpa3qaipzzfvngnnqr5680j7"; + type = "gem"; + }; + version = "1.1.1"; + }; + rack-oauth2 = { + dependencies = ["activesupport" "attr_required" "httpclient" "json-jwt" "rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0gxxr209r8h3nxhc9h731khv6yswiv9hc6q2pg672v530xmknznw"; + type = "gem"; + }; + version = "1.19.0"; + }; + rack-proxy = { + dependencies = ["rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jdr2r5phr3q7d6k9cnxjwlkaps0my0n43wq9mzw3xdqhg9wa3d6"; + type = "gem"; + }; + version = "0.7.0"; + }; + rack-test = { + dependencies = ["rack"]; + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rjl709krgf499dhjdapg580l2qaj9d91pwzk8ck8fpnazlx1bdd"; + type = "gem"; + }; + version = "2.0.2"; + }; + rails = { + dependencies = ["actioncable" "actionmailbox" "actionmailer" "actionpack" "actiontext" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties" "sprockets-rails"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "01l06196jkidj07g8jdc43nr060r46hsjz8bk4bdk0lzzck94fvf"; + type = "gem"; + }; + version = "6.1.7"; + }; + rails-controller-testing = { + dependencies = ["actionpack" "actionview" "activesupport"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "151f303jcvs8s149mhx2g5mn67487x0blrf9dzl76q1nb7dlh53l"; + type = "gem"; + }; + version = "1.0.5"; + }; + rails-dom-testing = { + dependencies = ["activesupport" "nokogiri"]; + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i"; + type = "gem"; + }; + version = "2.0.3"; + }; + rails-html-sanitizer = { + dependencies = ["loofah"]; + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1mj0b7ay10a2fgwj70kjw7mlyrp7a5la8lx8zmwhy40bkansdfrf"; + type = "gem"; + }; + version = "1.4.3"; + }; + rails-i18n = { + dependencies = ["i18n" "railties"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05mcgv748vppnm3fnml37wjy3dw61wj8vfw14ldaj1yx1bmkhb07"; + type = "gem"; + }; + version = "6.0.0"; + }; + rails-settings-cached = { + dependencies = ["rails"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wyhyls0aqb1iw7mnaldg39w3mnbi3anmpbvb52rjwkpj2mchhnc"; + type = "gem"; + }; + version = "0.6.6"; + }; + railties = { + dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"]; + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1iwziqrzk7f7r3w5pkfnbh1mqsfsywy7lvz2blqds3nval79dw2x"; + type = "gem"; + }; + version = "6.1.7"; + }; + rainbow = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503"; + type = "gem"; + }; + version = "3.1.1"; + }; + rake = { + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15whn7p9nrkxangbs9hh75q585yfn66lv0v2mhj6q6dl6x8bzr2w"; + type = "gem"; + }; + version = "13.0.6"; + }; + rdf = { + dependencies = ["link_header"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0799a5hqh7rjkqnbfb5cq62m2dx4zlnnag3xy1l4jyjywsk7v5kv"; + type = "gem"; + }; + version = "3.2.9"; + }; + rdf-normalize = { + dependencies = ["rdf"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ysa8v2xw0ln4kdwhkg6mh71v5wbancsz5cf945kbk47m1ybn271"; + type = "gem"; + }; + version = "0.5.0"; + }; + redcarpet = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bvk8yyns5s1ls437z719y5sdv9fr8kfs8dmr6g8s761dv5n8zvi"; + type = "gem"; + }; + version = "3.5.1"; + }; + redis = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "03r9739q3vq38g456snf3rk9hadf955bs5im6qs6m69h19mrz2yw"; + type = "gem"; + }; + version = "4.5.1"; + }; + redis-namespace = { + dependencies = ["redis"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04l61lpb3s2xkwj36l7b543lhciv19z514kxnmnbh5fg70grc8q9"; + type = "gem"; + }; + version = "1.9.0"; + }; + regexp_parser = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1rfd3q17p7q7pa67844q8b16ipy6ksh8mkzynpm1zldqbb9x4xm0"; + type = "gem"; + }; + version = "2.5.0"; + }; + request_store = { + dependencies = ["rack"]; + groups = ["default" "production"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13ppgmsbrqah08j06bybd3cddv6dml79yzyjn7r8j1src78h98h7"; + type = "gem"; + }; + version = "1.5.1"; + }; + responders = { + dependencies = ["actionpack" "railties"]; + groups = ["default" "pam_authentication"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "14kjykc6rpdh24sshg9savqdajya2dislc1jmbzg91w9967f4gv1"; + type = "gem"; + }; + version = "3.0.1"; + }; + rexml = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53"; + type = "gem"; + }; + version = "3.2.5"; + }; + rotp = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "11q7rkjx40yi6lpylgl2jkpy162mjw7mswrcgcax86vgpbpjx6i3"; + type = "gem"; + }; + version = "6.2.0"; + }; + rpam2 = { + groups = ["default" "pam_authentication"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zvli3s4z1hf2l7gyfickm5i3afjrnycc3ihbiax6ji6arpbyf33"; + type = "gem"; + }; + version = "4.0.2"; + }; + rqrcode = { + dependencies = ["chunky_png" "rqrcode_core"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0s97q1rqmw7rzsdr500hr4f2k6s24n8qk1klciz5q94zvdrygx3p"; + type = "gem"; + }; + version = "2.1.2"; + }; + rqrcode_core = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "06ld6386hbdhy5h0k09axmgn424kavpc8f27k1vjhknjhbf8jjfg"; + type = "gem"; + }; + version = "1.2.0"; + }; + rspec-core = { + dependencies = ["rspec-support"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "118hkfw9b11hvvalr7qlylwal5h8dihagm9xg7k4gskg7587hca6"; + type = "gem"; + }; + version = "3.11.0"; + }; + rspec-expectations = { + dependencies = ["diff-lcs" "rspec-support"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "001ihayil7jpfxdlxlhakvz02kx0nk5m1w0bz6z8izdx0nc8bh53"; + type = "gem"; + }; + version = "3.11.0"; + }; + rspec-mocks = { + dependencies = ["diff-lcs" "rspec-support"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "07vagjxdm5a6s103y8zkcnja6avpl8r196hrpiffmg7sk83dqdsm"; + type = "gem"; + }; + version = "3.11.1"; + }; + rspec-rails = { + dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"]; + groups = ["development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1cqw7bhj4a4rhh1x9i5gjm9r91ckhjyngw0zcr7jw2jnfis10d7l"; + type = "gem"; + }; + version = "5.1.2"; + }; + rspec-sidekiq = { + dependencies = ["rspec-core" "sidekiq"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1spzw3sc2p0n9qfb89y1v8igd60y7c5z9w2hjqqbbgbyjvy0agp8"; + type = "gem"; + }; + version = "3.1.0"; + }; + rspec-support = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1c01iicvrjk6vv744jgh0y4kk9d0kg2rd2ihdyzvg5p06xm2fpzq"; + type = "gem"; + }; + version = "3.11.1"; + }; + rspec_junit_formatter = { + dependencies = ["rspec-core"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "059bnq1gcwl9g93cqf13zpz38zk7jxaa43anzz06qkmfwrsfdpa0"; + type = "gem"; + }; + version = "0.6.0"; + }; + rubocop = { + dependencies = ["parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "088xzzq6vjsgi2cj9rnz2jlj5mghmgq1j250pn5zy8yqd39vxz71"; + type = "gem"; + }; + version = "1.30.1"; + }; + rubocop-ast = { + dependencies = ["parser"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1b3p4wy68jkyq8vhm5y568wlhsihy3ilnp2c6ig18xcw1slnkypl"; + type = "gem"; + }; + version = "1.18.0"; + }; + rubocop-rails = { + dependencies = ["activesupport" "rack" "rubocop"]; + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19x0d6jmryky5sx50qgsan1g0gxb7lcgrmfrwjsa5w6shcyvbp8c"; + type = "gem"; + }; + version = "2.15.0"; + }; + ruby-progressbar = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "02nmaw7yx9kl7rbaan5pl8x5nn0y4j5954mzrkzi9i3dhsrps4nc"; + type = "gem"; + }; + version = "1.11.0"; + }; + ruby-saml = { + dependencies = ["nokogiri" "rexml"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1706dyk5jdma75bnl9rhmx8vgzjw12ixnj3y32inmpcgzgsvs76k"; + type = "gem"; + }; + version = "1.13.0"; + }; + ruby2_keywords = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz"; + type = "gem"; + }; + version = "0.0.5"; + }; + rufus-scheduler = { + dependencies = ["fugit"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1as4yrb8y5lq49div8p3vqgwrrhdgwnvx4m73y3712nmnlpx6cws"; + type = "gem"; + }; + version = "3.8.2"; + }; + safety_net_attestation = { + dependencies = ["jwt"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1khq0y5w7lf2b9a220298hphf3pakd216jc9a4x4a9pdwxs2vgln"; + type = "gem"; + }; + version = "0.4.0"; + }; + sanitize = { + dependencies = ["crass" "nokogiri"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zq8pxmsd1abw18zz6mazsm2jfpwmbgdxbpawb7bmwvkb2c5yyc1"; + type = "gem"; + }; + version = "6.0.0"; + }; + scenic = { + dependencies = ["activerecord" "railties"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0cl14f5lfidbvcx52q49xnxc4dccyrzyv38qjkda8dh07zsksw85"; + type = "gem"; + }; + version = "1.6.0"; + }; + semantic_range = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1dlp97vg95plrsaaqj7x8l7z9vsjbhnqk4rw1l30gy26lmxpfrih"; + type = "gem"; + }; + version = "3.0.0"; + }; + sidekiq = { + dependencies = ["connection_pool" "rack" "redis"]; + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0p2mj2jj5b9wqmpvkngx87lfr2qgwhqvwx38bmhl5aa29pc6z5kx"; + type = "gem"; + }; + version = "6.5.7"; + }; + sidekiq-bulk = { + dependencies = ["sidekiq"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "08nyxzmgf742irafy3l4fj09d4s5pyvsh0dzlh8y4hl51rgkh4xv"; + type = "gem"; + }; + version = "0.2.0"; + }; + sidekiq-scheduler = { + dependencies = ["redis" "rufus-scheduler" "sidekiq" "tilt"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ij0m4m4zi3ffn1csdrj4g96l4vpqlsw3rrgjxda9yqsq4ylf624"; + type = "gem"; + }; + version = "4.0.3"; + }; + sidekiq-unique-jobs = { + dependencies = ["brpoplpush-redis_script" "concurrent-ruby" "sidekiq" "thor"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13s723wy8sh8x7ff1b1r0vxk6y6ygcjvpirjp0inl5824ds15s12"; + type = "gem"; + }; + version = "7.1.27"; + }; + simple-navigation = { + dependencies = ["activesupport"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1wc1rapwhqymcjfxmlgam4cvbyhnzfxada2damq88ij2p77pjz4q"; + type = "gem"; + }; + version = "4.4.0"; + }; + simple_form = { + dependencies = ["actionpack" "activemodel"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "09raw1gw0db9hfddgvzjwpk4hj1ng4dfq3igak80jkvhg4jdg7jp"; + type = "gem"; + }; + version = "5.1.0"; + }; + simplecov = { + dependencies = ["docile" "simplecov-html" "simplecov_json_formatter"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1hrv046jll6ad1s964gsmcq4hvkr3zzr6jc7z1mns22mvfpbc3cr"; + type = "gem"; + }; + version = "0.21.2"; + }; + simplecov-html = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb"; + type = "gem"; + }; + version = "0.12.3"; + }; + simplecov_json_formatter = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0cl3j7p3b5q7sxsx1va63c8imc5x6g99xablz08qrmqhpi0d6g6j"; + type = "gem"; + }; + version = "0.1.2"; + }; + smart_properties = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jrqssk9qhwrpq41arm712226vpcr458xv6xaqbk8cp94a0kycpr"; + type = "gem"; + }; + version = "1.17.0"; + }; + sprockets = { + dependencies = ["concurrent-ruby" "rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"; + type = "gem"; + }; + version = "3.7.2"; + }; + sprockets-rails = { + dependencies = ["actionpack" "activesupport" "sprockets"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1b9i14qb27zs56hlcc2hf139l0ghbqnjpmfi0054dxycaxvk5min"; + type = "gem"; + }; + version = "3.4.2"; + }; + sshkit = { + dependencies = ["net-scp" "net-ssh"]; + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1szshiw7bzizi380z1hkdbwhjdaixb5bgbx7c3wf7970mjdashkd"; + type = "gem"; + }; + version = "1.21.2"; + }; + stackprof = { + groups = ["development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0v7nk5i3fa63h6clfr5vbr0y91v3kxkaxh6gbdx583pn982avdlc"; + type = "gem"; + }; + version = "0.2.22"; + }; + statsd-ruby = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "028136c463nbravckxb1qi5c5nnv9r6vh2cyhiry423lac4xz79n"; + type = "gem"; + }; + version = "1.5.0"; + }; + stoplight = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1628qf2ynldqz20h5lkaivk166qknk15gxg130n9pvz568k1sdp8"; + type = "gem"; + }; + version = "3.0.0"; + }; + strong_migrations = { + dependencies = ["activerecord"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0yk45ri2rnp00x4mdsvwdzdd9yziqxj5v9sjk74nzw0y927y3m1w"; + type = "gem"; + }; + version = "0.7.9"; + }; + swd = { + dependencies = ["activesupport" "attr_required" "httpclient"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "12b3q2sw42nnilfb51nlqdv07f31vdv2j595kd99asnkw4cjlf5w"; + type = "gem"; + }; + version = "1.3.0"; + }; + temple = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861"; + type = "gem"; + }; + version = "0.8.2"; + }; + terminal-table = { + dependencies = ["unicode-display_width"]; + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "14dfmfjppmng5hwj7c5ka6qdapawm3h6k9lhn8zj001ybypvclgr"; + type = "gem"; + }; + version = "3.0.2"; + }; + terrapin = { + dependencies = ["climate_control"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0p18f05r0c5s70571gqig3z2ym74wx79s6rd45sprp207bqskzn9"; + type = "gem"; + }; + version = "0.6.0"; + }; + thor = { + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0inl77jh4ia03jw3iqm5ipr76ghal3hyjrd6r8zqsswwvi9j2xdi"; + type = "gem"; + }; + version = "1.2.1"; + }; + tilt = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "186nfbcsk0l4l86gvng1fw6jq6p6s7rc0caxr23b3pnbfb20y63v"; + type = "gem"; + }; + version = "2.0.11"; + }; + tpm-key_attestation = { + dependencies = ["bindata" "openssl" "openssl-signature_algorithm"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0kyq8z36953snxksv2xmc71znw7zykzis5r23hx3k06dij71vxsy"; + type = "gem"; + }; + version = "0.11.0"; + }; + tty-color = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0aik4kmhwwrmkysha7qibi2nyzb4c8kp42bd5vxnf8sf7b53g73g"; + type = "gem"; + }; + version = "0.6.0"; + }; + tty-cursor = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0j5zw041jgkmn605ya1zc151bxgxl6v192v2i26qhxx7ws2l2lvr"; + type = "gem"; + }; + version = "0.7.1"; + }; + tty-prompt = { + dependencies = ["pastel" "tty-reader"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1j4y8ik82azjxshgd4i1v4wwhsv3g9cngpygxqkkz69qaa8cxnzw"; + type = "gem"; + }; + version = "0.23.1"; + }; + tty-reader = { + dependencies = ["tty-cursor" "tty-screen" "wisper"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1cf2k7w7d84hshg4kzrjvk9pkyc2g1m3nx2n1rpmdcf0hp4p4af6"; + type = "gem"; + }; + version = "0.9.0"; + }; + tty-screen = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "18jr6s1cg8yb26wzkqa6874q0z93rq0y5aw092kdqazk71y6a235"; + type = "gem"; + }; + version = "0.8.1"; + }; + twitter-text = { + dependencies = ["idn-ruby" "unf"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1dnmp0bj3l01nbb52zby2c7hrazcdwfg846knkrjdfl0yfmv793z"; + type = "gem"; + }; + version = "3.1.0"; + }; + tzinfo = { + dependencies = ["concurrent-ruby"]; + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0rx114mpqnw2k4h98vc0rs0x0bmf0img84yh8mkkjkal07cjydf5"; + type = "gem"; + }; + version = "2.0.5"; + }; + tzinfo-data = { + dependencies = ["tzinfo"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1lslg5vvhx6w0mkbf6gpqvr9h8pj84wc639vk7ix7bqk61wgfch9"; + type = "gem"; + }; + version = "1.2022.4"; + }; + unf = { + dependencies = ["unf_ext"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9"; + type = "gem"; + }; + version = "0.1.4"; + }; + unf_ext = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1yj2nz2l101vr1x9w2k83a0fag1xgnmjwp8w8rw4ik2rwcz65fch"; + type = "gem"; + }; + version = "0.0.8.2"; + }; + unicode-display_width = { + groups = ["default" "development" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ra70s8prfacpqwj5v2mqn1rbfz6xds3n9nsr9cwzs3z2c0wm5j7"; + type = "gem"; + }; + version = "2.3.0"; + }; + uniform_notifier = { + groups = ["default" "development"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1dfvqixshwvm82b9qwdidvnkavdj7s0fbdbmyd4knkl6l3j9xcwr"; + type = "gem"; + }; + version = "1.16.0"; + }; + validate_email = { + dependencies = ["activemodel" "mail"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1r1fz29l699arka177c9xw7409d1a3ff95bf7a6pmc97slb91zlx"; + type = "gem"; + }; + version = "0.1.6"; + }; + validate_url = { + dependencies = ["activemodel" "public_suffix"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lblym140w5n88ijyfgcvkxvpfj8m6z00rxxf2ckmmhk0x61dzkj"; + type = "gem"; + }; + version = "1.0.15"; + }; + warden = { + dependencies = ["rack"]; + groups = ["default" "pam_authentication"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1l7gl7vms023w4clg02pm4ky9j12la2vzsixi2xrv9imbn44ys26"; + type = "gem"; + }; + version = "1.2.9"; + }; + webauthn = { + dependencies = ["android_key_attestation" "awrence" "bindata" "cbor" "cose" "openssl" "safety_net_attestation" "tpm-key_attestation"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1gs21q8krknb3db4s87l7xhzihp46ldsf6ql6689g2j0489l6da1"; + type = "gem"; + }; + version = "2.5.2"; + }; + webfinger = { + dependencies = ["activesupport" "httpclient"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "18jj50b44a471ig7hw1ax90wxaaz40acmrf6cm7m2iyshlffy53q"; + type = "gem"; + }; + version = "1.2.0"; + }; + webmock = { + dependencies = ["addressable" "crack" "hashdiff"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1myj44wvbbqvv18ragv3ihl0h61acgnfwrnj3lccdgp49bgmbjal"; + type = "gem"; + }; + version = "3.18.1"; + }; + webpacker = { + dependencies = ["activesupport" "rack-proxy" "railties" "semantic_range"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1cq6m5qwm3bmi7hkjfmbg2cs4qjq4wswlrwcfk8l1svfqbi135v3"; + type = "gem"; + }; + version = "5.4.3"; + }; + webpush = { + dependencies = ["hkdf" "jwt"]; + groups = ["default"]; + platforms = []; + source = { + fetchSubmodules = false; + rev = "f14a4d52e201128b1b00245d11b6de80d6cfdcd9"; + sha256 = "1gz34809xwyaqprxmjdyvzsxc63rdnmxn8w44iqkhpi3dzmkacmp"; + type = "git"; + url = "https://github.com/ClearlyClaire/webpush.git"; + }; + version = "0.3.8"; + }; + websocket-driver = { + dependencies = ["websocket-extensions"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0a3bwxd9v3ghrxzjc4vxmf4xa18c6m4xqy5wb0yk5c6b9psc7052"; + type = "gem"; + }; + version = "0.7.5"; + }; + websocket-extensions = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0hc2g9qps8lmhibl5baa91b4qx8wqw872rgwagml78ydj8qacsqw"; + type = "gem"; + }; + version = "0.1.5"; + }; + wisper = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1rpsi0ziy78cj82sbyyywby4d0aw0a5q84v65qd28vqn79fbq5yf"; + type = "gem"; + }; + version = "2.0.1"; + }; + xorcist = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1dbbiy8xlcfvn9ais37xfb5rci4liwakkmxzbkp72wmvlgcrf339"; + type = "gem"; + }; + version = "1.1.3"; + }; + xpath = { + dependencies = ["nokogiri"]; + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd"; + type = "gem"; + }; + version = "3.2.0"; + }; + zeitwerk = { + groups = ["default" "development" "pam_authentication" "production" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xjdr2szxvn3zb1sb5l8nfd6k9jr3b4qqbbg1mj9grf68m3fxckc"; + type = "gem"; + }; + version = "2.6.0"; + }; +} diff --git a/packages/glitch-soc/source.nix b/packages/glitch-soc/source.nix new file mode 100644 index 0000000..44799c2 --- /dev/null +++ b/packages/glitch-soc/source.nix @@ -0,0 +1,11 @@ +# This file was generated by pkgs.mastodon.updateScript. +{ fetchgit, applyPatches }: let + src = fetchgit { + url = "https://github.com/glitch-soc/mastodon.git"; + rev = "3f15326a05a926e9f001800a48ac2addbd3aa833"; + sha256 = "1m1agij9i2byiml02yq0h9w6f64jvy2y2ayjm880pg5xm638nqmk"; + }; +in applyPatches { + inherit src; + patches = []; +} diff --git a/packages/glitch-soc/update-remote.sh b/packages/glitch-soc/update-remote.sh new file mode 100644 index 0000000..3a0686a --- /dev/null +++ b/packages/glitch-soc/update-remote.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +set -e + +URL=https://github.com/mastodon/mastodon.git + +POSITIONAL=() +while [[ $# -gt 0 ]]; do + key="$1" + + case $key in + --url) + URL="$2" + shift # past argument + shift # past value + ;; + --ver) + VERSION="$2" + shift # past argument + shift # past value + ;; + --rev) + REVISION="$2" + shift # past argument + shift # past value + ;; + --patches) + PATCHES="$2" + shift # past argument + shift # past value + ;; + *) # unknown option + POSITIONAL+=("$1") + shift # past argument + ;; + esac +done + +if [[ -z "$VERSION" || -n "$POSITIONAL" ]]; then + echo "Usage: update.sh [--url URL] --ver VERSION [--rev REVISION] [--patches PATCHES]" + echo "URL may be any path acceptable to 'git clone' and VERSION the" + echo "semantic version number. If VERSION is not a revision acceptable to" + echo "'git checkout', you must provide one in REVISION. If URL is not" + echo "provided, it defaults to https://github.com/mastodon/mastodon.git." + echo "PATCHES, if provided, should be one or more Nix expressions" + echo "separated by spaces." + exit 1 +fi + +if [[ -z "$REVISION" ]]; then + REVISION="$VERSION" +fi + +rm -f gemset.nix version.nix source.nix +TARGET_DIR="$PWD" + + +WORK_DIR=$(mktemp -d) + +# Check that working directory was created. +if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then + echo "Could not create temporary directory" + exit 1 +fi + +# Delete the working directory on exit. +function cleanup { + # Report errors, if any, from nix-prefetch-git + grep "fatal" $WORK_DIR/nix-prefetch-git.out >/dev/stderr || true + rm -rf "$WORK_DIR" +} +trap cleanup EXIT + +echo "Fetching source code $REVISION from $URL" +JSON=$(nix-prefetch-git --url "$URL" --rev "$REVISION" 2> $WORK_DIR/nix-prefetch-git.out) +SHA=$(echo $JSON | jq -r .sha256) +FETCHED_SOURCE_DIR=$(grep '^path is' $WORK_DIR/nix-prefetch-git.out | sed 's/^path is //') + +echo "Creating version.nix" +echo \"$VERSION\" | sed 's/^"v/"/' > version.nix + +cat > source.nix << EOF +# This file was generated by pkgs.mastodon.updateScript. +{ fetchgit, applyPatches }: let + src = fetchgit { + url = "$URL"; + rev = "$REVISION"; + sha256 = "$SHA"; + }; +in applyPatches { + inherit src; + patches = [$PATCHES]; +} +EOF +SOURCE_DIR="$(nix-build --no-out-link -E '(import {}).callPackage ./source.nix {}')" + +echo "Creating gemset.nix" +bundix --lockfile="$SOURCE_DIR/Gemfile.lock" --gemfile="$SOURCE_DIR/Gemfile" +echo "" >> $TARGET_DIR/gemset.nix # Create trailing newline to please EditorConfig checks diff --git a/packages/glitch-soc/update.sh b/packages/glitch-soc/update.sh new file mode 100644 index 0000000..c2971fb --- /dev/null +++ b/packages/glitch-soc/update.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env nix-shell +#! nix-shell -p jq -p bundix -p nix-prefetch-git -i bash +./update-remote.sh --url https://github.com/glitch-soc/mastodon.git --rev 5db3a14388cf780364b213c63aaf97b6f444ca17 --ver v3.5.1 + diff --git a/packages/glitch-soc/version.nix b/packages/glitch-soc/version.nix new file mode 100644 index 0000000..ec7d97e --- /dev/null +++ b/packages/glitch-soc/version.nix @@ -0,0 +1 @@ +"3f15326a05a926e9f001800a48ac2addbd3aa833"