update mastodon

This commit is contained in:
Vivian 2023-12-06 19:58:23 +01:00
parent ca572f9fe6
commit 5ff4d9b161
6 changed files with 1483 additions and 1442 deletions

View file

@ -1,39 +1,27 @@
{ lib { lib, stdenv, nodejs-slim, bundlerEnv, nixosTests
, stdenv , yarn, callPackage, imagemagick, ffmpeg, file, ruby, writeShellScript
, nodejs-slim , fetchYarnDeps, prefetch-yarn-deps
, bundlerEnv , brotli
, nixosTests
, yarn
, callPackage
, imagemagick
, ffmpeg
, file
, ruby_3_0
, writeShellScript
, fetchYarnDeps
, fixup_yarn_lock
# Allow building a fork or custom version of Mastodon: # Allow building a fork or custom version of Mastodon:
, pname ? "mastodon" , pname ? "mastodon"
, version ? import ./version.nix , version ? srcOverride.version
, srcOverride ? null , patches ? []
, dependenciesDir ? ./. # Should contain gemset.nix, yarn.nix and package.json. # src is a package
, srcOverride ? callPackage ./source.nix { inherit patches; }
, gemset ? ./. + "/gemset.nix"
, yarnHash ? srcOverride.yarnHash
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
inherit pname version; inherit pname version;
# Using overrideAttrs on src does not build the gems and modules with the overridden src. src = srcOverride;
# 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 { mastodonGems = bundlerEnv {
name = "${pname}-gems-${version}"; name = "${pname}-gems-${version}";
inherit version; inherit version gemset ruby;
ruby = ruby_3_0;
gemdir = src; gemdir = src;
gemset = dependenciesDir + "/gemset.nix";
# This fix (copied from https://github.com/NixOS/nixpkgs/pull/76765) replaces the gem # This fix (copied from https://github.com/NixOS/nixpkgs/pull/76765) replaces the gem
# symlinks with directories, resolving this error when running rake: # 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 `<module:Bundler>': uninitialized constant Bundler::Settings (NameError) # /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 `<module:Bundler>': uninitialized constant Bundler::Settings (NameError)
@ -48,33 +36,28 @@ stdenv.mkDerivation rec {
''; '';
}; };
mastodon-modules = stdenv.mkDerivation { mastodonModules = stdenv.mkDerivation {
pname = "${pname}-modules"; pname = "${pname}-modules";
inherit src version; inherit src version;
yarnOfflineCache = fetchYarnDeps { yarnOfflineCache = fetchYarnDeps {
yarnLock = "${src}/yarn.lock"; yarnLock = "${src}/yarn.lock";
sha256 = "sha256-iSqMe4B9ZEFPAw7uXgnbTWBnXg89WM/3gnDbQAUJv2E="; hash = yarnHash;
# sha256 = lib.fakeSha256;
}; };
nativeBuildInputs = [ nativeBuildInputs = [ prefetch-yarn-deps nodejs-slim yarn mastodonGems mastodonGems.wrappedRuby brotli ];
fixup_yarn_lock
nodejs-slim
yarn
mastodon-gems
mastodon-gems.wrappedRuby
];
RAILS_ENV = "production"; RAILS_ENV = "production";
NODE_ENV = "production"; NODE_ENV = "production";
buildPhase = '' buildPhase = ''
runHook preBuild
export HOME=$PWD export HOME=$PWD
# This option is needed for openssl-3 compatibility # This option is needed for openssl-3 compatibility
# Otherwise we encounter this upstream issue: https://github.com/mastodon/mastodon/issues/17924 # Otherwise we encounter this upstream issue: https://github.com/mastodon/mastodon/issues/17924
export NODE_OPTIONS=--openssl-legacy-provider export NODE_OPTIONS=--openssl-legacy-provider
fixup_yarn_lock ~/yarn.lock fixup-yarn-lock ~/yarn.lock
yarn config --offline set yarn-offline-mirror $yarnOfflineCache yarn config --offline set yarn-offline-mirror $yarnOfflineCache
yarn install --offline --frozen-lockfile --ignore-engines --ignore-scripts --no-progress yarn install --offline --frozen-lockfile --ignore-engines --ignore-scripts --no-progress
@ -88,61 +71,99 @@ stdenv.mkDerivation rec {
rails assets:precompile rails assets:precompile
yarn cache clean --offline yarn cache clean --offline
rm -rf ~/node_modules/.cache rm -rf ~/node_modules/.cache
# Create missing static gzip and brotli files
gzip --best --keep ~/public/assets/500.html
gzip --best --keep ~/public/packs/report.html
find ~/public/assets -maxdepth 1 -type f -name '.*.json' \
-exec gzip --best --keep --force {} ';'
brotli --best --keep ~/public/packs/report.html
find ~/public/assets -type f -regextype posix-extended -iregex '.*\.(css|js|json|html)' \
-exec brotli --best --keep {} ';'
runHook postBuild
''; '';
installPhase = '' installPhase = ''
runHook preInstall
mkdir -p $out/public mkdir -p $out/public
cp -r node_modules $out/node_modules cp -r node_modules $out/node_modules
cp -r public/assets $out/public cp -r public/assets $out/public
cp -r public/packs $out/public cp -r public/packs $out/public
runHook postInstall
''; '';
}; };
propagatedBuildInputs = [ imagemagick ffmpeg file mastodon-gems.wrappedRuby ]; propagatedBuildInputs = [ imagemagick ffmpeg file mastodonGems.wrappedRuby ];
buildInputs = [ mastodon-gems nodejs-slim ]; buildInputs = [ mastodonGems nodejs-slim ];
buildPhase = '' buildPhase = ''
ln -s ${mastodon-modules}/node_modules node_modules runHook preBuild
ln -s ${mastodon-modules}/public/assets public/assets
ln -s ${mastodon-modules}/public/packs public/packs ln -s $mastodonModules/node_modules node_modules
ln -s $mastodonModules/public/assets public/assets
ln -s $mastodonModules/public/packs public/packs
patchShebangs bin/ patchShebangs bin/
for b in $(ls ${mastodon-gems}/bin/) for b in $(ls $mastodonGems/bin/)
do do
if [ ! -f bin/$b ]; then if [ ! -f bin/$b ]; then
ln -s ${mastodon-gems}/bin/$b bin/$b ln -s $mastodonGems/bin/$b bin/$b
fi fi
done done
# Remove execute permissions
chmod 0444 public/emoji/*.svg
# Create missing static gzip and brotli files
find public -maxdepth 1 -type f -regextype posix-extended -iregex '.*\.(css|js|svg|txt|xml)' \
-exec gzip --best --keep --force {} ';' \
-exec brotli --best --keep {} ';'
find public/emoji -type f -name '.*.svg' \
-exec gzip --best --keep --force {} ';' \
-exec brotli --best --keep {} ';'
ln -s assets/500.html.gz public/500.html.gz
ln -s assets/500.html.br public/500.html.br
ln -s packs/sw.js.gz public/sw.js.gz
ln -s packs/sw.js.br public/sw.js.br
ln -s packs/sw.js.map.gz public/sw.js.map.gz
ln -s packs/sw.js.map.br public/sw.js.map.br
rm -rf log rm -rf log
ln -s /var/log/mastodon log ln -s /var/log/mastodon log
ln -s /tmp tmp ln -s /tmp tmp
runHook postBuild
''; '';
installPhase = installPhase = let
let
run-streaming = writeShellScript "run-streaming.sh" '' run-streaming = writeShellScript "run-streaming.sh" ''
# NixOS helper script to consistently use the same NodeJS version the package was built with. # NixOS helper script to consistently use the same NodeJS version the package was built with.
${nodejs-slim}/bin/node ./streaming ${nodejs-slim}/bin/node ./streaming
''; '';
in in ''
'' runHook preInstall
mkdir -p $out mkdir -p $out
cp -r * $out/ cp -r * $out/
ln -s ${run-streaming} $out/run-streaming.sh ln -s ${run-streaming} $out/run-streaming.sh
runHook postInstall
''; '';
passthru = { passthru = {
tests.mastodon = nixosTests.mastodon; tests.mastodon = nixosTests.mastodon;
updateScript = callPackage ./update.nix { }; # run with: nix-shell ./maintainers/scripts/update.nix --argstr package mastodon
updateScript = ./update.sh;
}; };
meta = with lib; { meta = with lib; {
description = description = "Self-hosted, globally interconnected microblogging software based on ActivityPub";
"Self-hosted, globally interconnected microblogging software based on ActivityPub";
homepage = "https://joinmastodon.org"; homepage = "https://joinmastodon.org";
license = licenses.agpl3Plus; license = licenses.agpl3Plus;
platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" ]; platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" ];
maintainers = with maintainers; [ happy-river erictapen izorkin ]; maintainers = with maintainers; [ happy-river erictapen izorkin ghuntley ];
}; };
} }

View file

@ -1,14 +1,14 @@
{ {
actioncable = { actioncable = {
dependencies = [ "actionpack" "activesupport" "nio4r" "websocket-driver" ]; dependencies = ["actionpack" "activesupport" "nio4r" "websocket-driver" "zeitwerk"];
groups = ["default"]; groups = ["default"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1i98vjh8l1xrf0ihdpvgq7mz7cfj4aww77swjlwljcgfb45868d9"; sha256 = "0zd3zjpmrx06jiiyrxmsj94mfcxraxr0h3qlk61860slakmn4sg9";
type = "gem"; type = "gem";
}; };
version = "7.0.7.2"; version = "7.1.1";
}; };
actionmailbox = { actionmailbox = {
dependencies = ["actionpack" "activejob" "activerecord" "activestorage" "activesupport" "mail" "net-imap" "net-pop" "net-smtp"]; dependencies = ["actionpack" "activejob" "activerecord" "activestorage" "activesupport" "mail" "net-imap" "net-pop" "net-smtp"];
@ -16,10 +16,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "093snb186qdvj1isss0k74ym7kkaq7zwfa5dwmrc0xn8kwhaxbik"; sha256 = "13n7178paqy2p2svsh21yfvzmpf4anwgmnxx6anyslr90zcyksg1";
type = "gem"; type = "gem";
}; };
version = "7.0.7.2"; version = "7.1.1";
}; };
actionmailer = { actionmailer = {
dependencies = ["actionpack" "actionview" "activejob" "activesupport" "mail" "net-imap" "net-pop" "net-smtp" "rails-dom-testing"]; dependencies = ["actionpack" "actionview" "activejob" "activesupport" "mail" "net-imap" "net-pop" "net-smtp" "rails-dom-testing"];
@ -27,21 +27,21 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "180ik1gkwy8lqwg0427k0hlivmz206xa453p5c221hpqk8an340f"; sha256 = "1nr7njlr6pccglqp36imc8mhff73agcdky57a9alrkyrbzdnll42";
type = "gem"; type = "gem";
}; };
version = "7.0.7.2"; version = "7.1.1";
}; };
actionpack = { actionpack = {
dependencies = [ "actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer" ]; dependencies = ["actionview" "activesupport" "nokogiri" "rack" "rack-session" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
groups = ["default" "development" "pam_authentication" "production" "test"]; groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0qamc5ly521wk9i1658h9jv7avmyyp92kffa1da2fn5zk0wgyhf4"; sha256 = "0b2r4h30fybd064xicfjr38j3hpyqx622fb4fjl3rk5ya36b9r1d";
type = "gem"; type = "gem";
}; };
version = "7.0.7.2"; version = "7.1.1";
}; };
actiontext = { actiontext = {
dependencies = ["actionpack" "activerecord" "activestorage" "activesupport" "globalid" "nokogiri"]; dependencies = ["actionpack" "activerecord" "activestorage" "activesupport" "globalid" "nokogiri"];
@ -49,10 +49,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0cx0zg6y0w5njl721vqx7bn0kqj5c9zbvingvl5ll20gpyzsp7nj"; sha256 = "04wjw7iy43vh8dsavi2mka11nkv85nxs7bx8aw85w2mrc3y69jfz";
type = "gem"; type = "gem";
}; };
version = "7.0.7.2"; version = "7.1.1";
}; };
actionview = { actionview = {
dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"]; dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
@ -60,10 +60,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "151zxb61bb6q7g0sn34qz79k8bg02vmb8mmnsn0fr15lxw92dfhm"; sha256 = "02c51f3a2kan3s45m21sx08jjz9xm4l2kvk475ir06vgmgr3girn";
type = "gem"; type = "gem";
}; };
version = "7.0.7.2"; version = "7.1.1";
}; };
active_model_serializers = { active_model_serializers = {
dependencies = ["actionpack" "activemodel" "case_transform" "jsonapi-renderer"]; dependencies = ["actionpack" "activemodel" "case_transform" "jsonapi-renderer"];
@ -71,10 +71,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0xdp7cpj3yj3wl4vj0nqq44kzjavlxi1wq3cf9zp0whkir0ym0gy"; sha256 = "13n1ipn0dg3k852xhfzdvkr1ljq76xvfnm79qzdix2ishiy1gphl";
type = "gem"; type = "gem";
}; };
version = "0.10.13"; version = "0.10.14";
}; };
activejob = { activejob = {
dependencies = ["activesupport" "globalid"]; dependencies = ["activesupport" "globalid"];
@ -82,10 +82,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "191320166dxiq9a4lwbi1nmlq7phsfi0yr1hg2smprlwsa0vv3kd"; sha256 = "1qhpzjlh8sm8gqi11yng1sxayfn13pw9j2pgjw57bcmifpav6rd5";
type = "gem"; type = "gem";
}; };
version = "7.0.7.2"; version = "7.1.1";
}; };
activemodel = { activemodel = {
dependencies = ["activesupport"]; dependencies = ["activesupport"];
@ -93,43 +93,43 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1crjq1dznlbsrwd5yijxraz1591xmg4vdcwwnmrw4nh6hrwq5fj5"; sha256 = "16m6szgwhs7xnrkbib7di872k40r2iffx06g4gjiy4bb2g1d6bqz";
type = "gem"; type = "gem";
}; };
version = "7.0.7.2"; version = "7.1.1";
}; };
activerecord = { activerecord = {
dependencies = [ "activemodel" "activesupport" ]; dependencies = ["activemodel" "activesupport" "timeout"];
groups = ["default" "development" "test"]; groups = ["default" "development" "test"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "03vrssdqaqm41w27s21r37skdfxa41midvjy37i2zh3rnbnq8ps2"; sha256 = "09b3x4g4b3ihx9mvahz6ysm8dv41l8vkdfhxg0bdcqm4yg007pgq";
type = "gem"; type = "gem";
}; };
version = "7.0.7.2"; version = "7.1.1";
}; };
activestorage = { activestorage = {
dependencies = [ "actionpack" "activejob" "activerecord" "activesupport" "marcel" "mini_mime" ]; dependencies = ["actionpack" "activejob" "activerecord" "activesupport" "marcel"];
groups = ["default"]; groups = ["default"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1w7l2i0n84axr4da7y381k8y0wa1y3rr3k3zrkhp938ldwk7j7cg"; sha256 = "1400b9fa4zv39qs6ma0lirf840zdn7qp3v86l9vhgwjzzvhmkhhc";
type = "gem"; type = "gem";
}; };
version = "7.0.7.2"; version = "7.1.1";
}; };
activesupport = { activesupport = {
dependencies = [ "concurrent-ruby" "i18n" "minitest" "tzinfo" ]; dependencies = ["base64" "bigdecimal" "concurrent-ruby" "connection_pool" "drb" "i18n" "minitest" "mutex_m" "tzinfo"];
groups = ["default" "development" "pam_authentication" "production" "test"]; groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1vlzcnyqlbchaq85phmdv73ydlc18xpvxy1cbsk191cwd29i7q32"; sha256 = "18jqxsjz9vs89v9jwz4f5vw9yj91cc2l2jwlzfgnxg8wmyjbqw47";
type = "gem"; type = "gem";
}; };
version = "7.0.7.2"; version = "7.1.1";
}; };
addressable = { addressable = {
dependencies = ["public_suffix"]; dependencies = ["public_suffix"];
@ -152,17 +152,6 @@
}; };
version = "1.1.0"; 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 = { android_key_attestation = {
groups = ["default"]; groups = ["default"];
platforms = []; platforms = [];
@ -312,7 +301,7 @@
version = "2.0.4"; version = "2.0.4";
}; };
base64 = { base64 = {
groups = [ "default" "development" ]; groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
@ -321,15 +310,25 @@
}; };
version = "0.1.1"; version = "0.1.1";
}; };
bcp47_spec = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "043qld01c163yc7fxlar3046dac2833rlcg44jbbs9n1jvgjxmiz";
type = "gem";
};
version = "0.2.1";
};
bcrypt = { bcrypt = {
groups = ["default" "pam_authentication"]; groups = ["default" "pam_authentication"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "048z3fvcknqx7ikkhrcrykxlqmf9bzc7l0y5h1cnvrc9n2qf0k8m"; sha256 = "14crcsmcsyiskr9xzgzcfz2dr74zg1jvavrrxpf5vnn9q75fakz9";
type = "gem"; type = "gem";
}; };
version = "3.1.18"; version = "3.1.19";
}; };
better_errors = { better_errors = {
dependencies = ["erubi" "rack" "rouge"]; dependencies = ["erubi" "rack" "rouge"];
@ -348,10 +347,20 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1y090dmgjxr3yzxi3pg5jgirkmyfdrmjhabmzmhg5i8ssiqr2gdz"; sha256 = "1sk5s5lpwbd53s4a1xzm02nys3kfqdw5mh9i2qfn04hjsk8wk3gc";
type = "gem"; type = "gem";
}; };
version = "2.0.1"; version = "2.0.2";
};
bigdecimal = {
groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "07y615s8yldk3k13lmkhpk1k190lcqvmxmnjwgh4bzjan9xrc36y";
type = "gem";
};
version = "3.1.4";
}; };
bindata = { bindata = {
groups = ["default"]; groups = ["default"];
@ -447,61 +456,6 @@
}; };
version = "0.9.1"; version = "0.9.1";
}; };
capistrano = {
dependencies = [ "airbrussh" "i18n" "rake" "sshkit" ];
groups = [ "development" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "14pflh85rrs2l8k0m286j4vaab5vad2sfqq9dncqb31z05vy29mn";
type = "gem";
};
version = "3.17.3";
};
capistrano-bundler = {
dependencies = [ "capistrano" ];
groups = [ "default" "development" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "09rndb1fa9r7mhb2sc6p3k0pcarhg8mv0kfmvd1zdb0ciwwp7514";
type = "gem";
};
version = "2.1.0";
};
capistrano-rails = {
dependencies = [ "capistrano" "capistrano-bundler" ];
groups = [ "development" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "05lk7y4qyzadzzshjyhgfgx00ggqliq7n561wkx8m331wljv7kx7";
type = "gem";
};
version = "1.6.3";
};
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 = { capybara = {
dependencies = ["addressable" "matrix" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"]; dependencies = ["addressable" "matrix" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
groups = ["test"]; groups = ["test"];
@ -606,7 +560,7 @@
version = "1.2.2"; version = "1.2.2";
}; };
connection_pool = { connection_pool = {
groups = [ "default" "test" ]; groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
@ -705,10 +659,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0vpd7d61d4pfmyb2plnnv82wmczzlhw4k4gjhd2fv4r6vq8ilqqi"; sha256 = "121ljaaapil79dcsl5mkh5k613hv58z4z3g2lrnzb5qvqpb3h1j8";
type = "gem"; type = "gem";
}; };
version = "4.9.2"; version = "4.9.3";
}; };
devise-two-factor = { devise-two-factor = {
dependencies = ["activesupport" "attr_encrypted" "devise" "railties" "rotp"]; dependencies = ["activesupport" "attr_encrypted" "devise" "railties" "rotp"];
@ -716,10 +670,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1nk43p339zyp4y5vab3w3s0zbjd4xfs8qn0ymxdnz6d961dbbdm8"; sha256 = "15cbgb0hyq78myc6aaszzdrd9qll9n3qdhykmrx22qiyac3mnpy9";
type = "gem"; type = "gem";
}; };
version = "4.1.0"; version = "4.1.1";
}; };
devise_pam_authenticatable2 = { devise_pam_authenticatable2 = {
dependencies = ["devise" "rpam2"]; dependencies = ["devise" "rpam2"];
@ -806,6 +760,17 @@
}; };
version = "2.8.1"; version = "2.8.1";
}; };
drb = {
dependencies = ["ruby2_keywords"];
groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0h9c2qiam82y3caapa2x157j1lkk9954hrjg3p22hxcsk8fli3vb";
type = "gem";
};
version = "2.1.1";
};
ed25519 = { ed25519 = {
groups = ["default"]; groups = ["default"];
platforms = []; platforms = [];
@ -1156,10 +1121,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0kqm5ndzaybpnpxqiqkc41k4ksyxl41ln8qqr6kb130cdxsf2dxk"; sha256 = "1sbw6b66r7cwdx3jhs46s4lr991969hvigkjpbdl7y3i31qpdgvh";
type = "gem"; type = "gem";
}; };
version = "1.1.0"; version = "1.2.1";
}; };
haml = { haml = {
dependencies = ["temple" "thor" "tilt"]; dependencies = ["temple" "thor" "tilt"];
@ -1167,10 +1132,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "154svzqlkdq7gslv3p8mfih28gbw4gsj4pd8wr1wpwz6nyzmhh8m"; sha256 = "096yaxlbh89fzdhndrvqg6j3l9gsvys2sp0qvjxqikk7715fbxvi";
type = "gem"; type = "gem";
}; };
version = "6.1.2"; version = "6.2.0";
}; };
haml-rails = { haml-rails = {
dependencies = ["actionpack" "activesupport" "haml" "railties"]; dependencies = ["actionpack" "activesupport" "haml" "railties"];
@ -1189,10 +1154,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1qics7sll6yw7fm499q4b1frfr5f3gav94ach0fwy49zprl9yk33"; sha256 = "1rx8c71qf45v7r8188vj4hn86vq7qazp2f84y3fhdn6wg6wp6pkc";
type = "gem"; type = "gem";
}; };
version = "0.50.0"; version = "0.51.0";
}; };
hashdiff = { hashdiff = {
groups = ["default" "test"]; groups = ["default" "test"];
@ -1345,10 +1310,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "19zkcsqwzc3i6vizj26mxxww6m5grv9zmp6yxyswbqq9kyzb081z"; sha256 = "1s4kgpv7hmlg99cnpyvajba73vib67pdp1pa3g5rwkl838xgvnji";
type = "gem"; type = "gem";
}; };
version = "1.0.12"; version = "1.0.13";
}; };
idn-ruby = { idn-ruby = {
groups = ["default"]; groups = ["default"];
@ -1360,6 +1325,16 @@
}; };
version = "0.1.5"; version = "0.1.5";
}; };
io-console = {
groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0dikardh14c72gd9ypwh8dim41wvqmzfzf35mincaj5yals9m7ff";
type = "gem";
};
version = "0.6.0";
};
ipaddress = { ipaddress = {
groups = ["default"]; groups = ["default"];
platforms = []; platforms = [];
@ -1370,6 +1345,17 @@
}; };
version = "0.8.3"; version = "0.8.3";
}; };
irb = {
dependencies = ["rdoc" "reline"];
groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "17p6arsklbzh2hvwwr8i4cfrpa7vhk8q88fhickhwmn7m80lxdw7";
type = "gem";
};
version = "1.8.1";
};
jmespath = { jmespath = {
groups = ["default"]; groups = ["default"];
platforms = []; platforms = [];
@ -1395,10 +1381,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1rvsalsrs8njk2gqxgq0ydg5cd02jqdawskbq2ccz663qxz8wwq5"; sha256 = "0illsmkly0hhi24lm1l6jjjdr6jykvydkwi1cxf4ad3mra68m16l";
type = "gem"; type = "gem";
}; };
version = "0.3.2"; version = "1.0.0";
}; };
json-jwt = { json-jwt = {
dependencies = ["activesupport" "aes_key_wrap" "bindata" "httpclient"]; dependencies = ["activesupport" "aes_key_wrap" "bindata" "httpclient"];
@ -1417,10 +1403,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1z3kqacjmqs02vwwqm9di7sw7f7nchxx99v84myrrzmh64c6zfcq"; sha256 = "1carfj87p6cpd0xnysg5sj653rqmmwnnacsmjk42xdy40j15gp88";
type = "gem"; type = "gem";
}; };
version = "3.2.5"; version = "3.3.1";
}; };
json-ld-preloaded = { json-ld-preloaded = {
dependencies = ["json-ld" "rdf"]; dependencies = ["json-ld" "rdf"];
@ -1513,10 +1499,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0qrv9xyxxhxr482p25f3m7nfghw66i8jl02hy9b6pwam8m1knngp"; sha256 = "14gnkcp924v8sbay7q6vz4kn37jylbnvrhi4y5c5jcffd51fbwid";
type = "gem"; type = "gem";
}; };
version = "7.2.0"; version = "7.2.1";
}; };
language_server-protocol = { language_server-protocol = {
groups = ["default" "development"]; groups = ["default" "development"];
@ -1588,10 +1574,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "01kdw5dbzimb89rq4zf44zf8990czb5qxvib0hzja1l4hrha8cki"; sha256 = "1qcsvh9k4c0cp6agqm9a8m4x2gg7vifryqr7yxkg2x9ph9silds2";
type = "gem"; type = "gem";
}; };
version = "0.13.0"; version = "0.14.0";
}; };
loofah = { loofah = {
dependencies = ["crass" "nokogiri"]; dependencies = ["crass" "nokogiri"];
@ -1599,10 +1585,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1p744kjpb5zk2ihklbykzii77alycjc04vpnm2ch2f3cp65imlj3"; sha256 = "0d5p9vg2qkqfy60i93mpd3b25kw4bdxfai034y5a94pxp5fws61c";
type = "gem"; type = "gem";
}; };
version = "2.21.3"; version = "2.21.4";
}; };
mail = { mail = {
dependencies = ["mini_mime" "net-imap" "net-pop" "net-smtp"]; dependencies = ["mini_mime" "net-imap" "net-pop" "net-smtp"];
@ -1667,16 +1653,6 @@
}; };
version = "1.0.1"; version = "1.0.1";
}; };
method_source = {
groups = [ "default" "development" "pam_authentication" "production" "test" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp";
type = "gem";
};
version = "1.0.0";
};
mime-types = { mime-types = {
dependencies = ["mime-types-data"]; dependencies = ["mime-types-data"];
groups = ["default"]; groups = ["default"];
@ -1723,10 +1699,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0jnpsbb2dbcs95p4is4431l2pw1l5pn7dfg3vkgb4ga464j0c5l6"; sha256 = "0bkmfi9mb49m0fkdhl2g38i3xxa02d411gg0m8x0gvbwfmmg5ym3";
type = "gem"; type = "gem";
}; };
version = "5.19.0"; version = "5.20.0";
}; };
msgpack = { msgpack = {
groups = ["default"]; groups = ["default"];
@ -1758,6 +1734,16 @@
}; };
version = "2.3.0"; version = "2.3.0";
}; };
mutex_m = {
groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1pkxnp7p44kvs460bbbgjarr7xy1j8kjjmhwkg1kypj9wgmwb6qa";
type = "gem";
};
version = "0.1.2";
};
net-http = { net-http = {
dependencies = ["uri"]; dependencies = ["uri"];
groups = ["default"]; groups = ["default"];
@ -1786,10 +1772,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0lf7wqg7czhaj51qsnmn28j7jmcxhkh3m28rl1cjrqsgjxhwj7r3"; sha256 = "0d0r31b79appz95dd63wmasly1qjz3hn58ffxw6ix4mqk49jcbq2";
type = "gem"; type = "gem";
}; };
version = "0.3.7"; version = "0.4.1";
}; };
net-ldap = { net-ldap = {
groups = ["default"]; groups = ["default"];
@ -1823,37 +1809,16 @@
}; };
version = "0.2.1"; version = "0.2.1";
}; };
net-scp = {
dependencies = [ "net-ssh" ];
groups = [ "default" "development" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "1si2nq9l6jy5n2zw1q59a5gaji7v9vhy8qx08h4fg368906ysbdk";
type = "gem";
};
version = "4.0.0";
};
net-smtp = { net-smtp = {
dependencies = ["net-protocol"]; dependencies = ["net-protocol"];
groups = ["default" "development"]; groups = ["default" "development"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1c6md06hm5bf6rv53sk54dl2vg038pg8kglwv3rayx0vk2mdql9x"; sha256 = "1rx3758w0bmbr21s2nsc6llflsrnp50fwdnly3ixra4v53gbhzid";
type = "gem"; type = "gem";
}; };
version = "0.3.3"; version = "0.4.0";
};
net-ssh = {
groups = [ "default" "development" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "0yx0pb5fmziz92bw8qzbh8vf20lr56nd3s6q8h0gsgr307lki687";
type = "gem";
};
version = "7.1.0";
}; };
nio4r = { nio4r = {
groups = ["default"]; groups = ["default"];
@ -2024,10 +1989,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1swigds85jddb5gshll1g8lkmbcgbcp9bi1d4nigwvxki8smys0h"; sha256 = "0r69dbh6h6j4d54isany2ir4ni4gf2ysvk3k44awi6amz18nggpd";
type = "gem"; type = "gem";
}; };
version = "3.2.2.3"; version = "3.2.2.4";
}; };
parslet = { parslet = {
groups = ["default"]; groups = ["default"];
@ -2066,10 +2031,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "002v32dzyyr29xd9cdsqp55g5gx19skvq9b4a4hr9lrs4i1xsavm"; sha256 = "0gzbgq392b0z7ma1jrdnzzfppdlgjdl9akc4iajq4g46raqd4899";
type = "gem"; type = "gem";
}; };
version = "3.3.3"; version = "3.3.4";
}; };
posix-spawn = { posix-spawn = {
groups = ["default"]; groups = ["default"];
@ -2113,6 +2078,17 @@
}; };
version = "0.5.0"; version = "0.5.0";
}; };
psych = {
dependencies = ["stringio"];
groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0qvzx3ddswgdx3ck48ak1wa18jai4s6ddv1a0cl59hm0dqrb737i";
type = "gem";
};
version = "5.1.1";
};
public_suffix = { public_suffix = {
groups = ["default" "development" "test"]; groups = ["default" "development" "test"];
platforms = []; platforms = [];
@ -2129,10 +2105,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1x4dwx2shx0p7lsms97r85r7ji7zv57bjy3i1kmcpxc8bxvrr67c"; sha256 = "1y8jcw80zcxvdq0id329lzmp5pzx7hpac227d7sgjkblc89s3pfm";
type = "gem"; type = "gem";
}; };
version = "6.3.1"; version = "6.4.0";
}; };
pundit = { pundit = {
dependencies = ["activesupport"]; dependencies = ["activesupport"];
@ -2230,6 +2206,17 @@
}; };
version = "0.7.6"; version = "0.7.6";
}; };
rack-session = {
dependencies = ["rack"];
groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "11w6yd60n8ng1ncs1ajlv42dg08yks09drlsgriydgpcjwz21d40";
type = "gem";
};
version = "1.0.1";
};
rack-test = { rack-test = {
dependencies = ["rack"]; dependencies = ["rack"];
groups = ["default" "development" "pam_authentication" "production" "test"]; groups = ["default" "development" "pam_authentication" "production" "test"];
@ -2241,16 +2228,27 @@
}; };
version = "2.1.0"; version = "2.1.0";
}; };
rackup = {
dependencies = ["rack" "webrick"];
groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1wbr03334ba9ilcq25wh9913xciwj0j117zs60vsqm0zgwdkwpp9";
type = "gem";
};
version = "1.0.0";
};
rails = { rails = {
dependencies = ["actioncable" "actionmailbox" "actionmailer" "actionpack" "actiontext" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties"]; dependencies = ["actioncable" "actionmailbox" "actionmailer" "actionpack" "actiontext" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties"];
groups = ["default"]; groups = ["default"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0pxi3psfl4kpgjf6bhch1albjy9knn9c2s6sammy9lyckhh7akhq"; sha256 = "05yw7n1fpnw2fslbyrsl081fwnki4ih8pz4qnnhmrfniq6n3drv6";
type = "gem"; type = "gem";
}; };
version = "7.0.7.2"; version = "7.1.1";
}; };
rails-controller-testing = { rails-controller-testing = {
dependencies = ["actionpack" "actionview" "activesupport"]; dependencies = ["actionpack" "actionview" "activesupport"];
@ -2269,10 +2267,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "17g05y7q7934z0ib4aph8h71c2qwjmlakkm7nb2ab45q0aqkfgjd"; sha256 = "0fx9dx1ag0s1lr6lfr34lbx5i1bvn3bhyf3w3mx6h7yz90p725g5";
type = "gem"; type = "gem";
}; };
version = "2.1.1"; version = "2.2.0";
}; };
rails-html-sanitizer = { rails-html-sanitizer = {
dependencies = ["loofah" "nokogiri"]; dependencies = ["loofah" "nokogiri"];
@ -2291,10 +2289,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1bbh5gsw46djmrgddwaq3wsjmj9rsh5dk13wkclwxf1rg9jpkn3g"; sha256 = "1k8jvm3l4gafw7hyvpky7yzjjnkr3iy7l59lyam8ah3kqhmzk7zf";
type = "gem"; type = "gem";
}; };
version = "7.0.7"; version = "7.0.8";
}; };
rails-settings-cached = { rails-settings-cached = {
dependencies = ["rails"]; dependencies = ["rails"];
@ -2310,15 +2308,15 @@
version = "0.6.6"; version = "0.6.6";
}; };
railties = { railties = {
dependencies = [ "actionpack" "activesupport" "method_source" "rake" "thor" "zeitwerk" ]; dependencies = ["actionpack" "activesupport" "irb" "rackup" "rake" "thor" "zeitwerk"];
groups = ["default" "development" "pam_authentication" "production" "test"]; groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "01pdn9sn7kawwrvrbr3vz44j287xbka8mm7nrv9cl510y8gzxi2x"; sha256 = "19zsl9svr67126r1lm35y7y40i16gpnz1ppapj2h5879cnrliwrw";
type = "gem"; type = "gem";
}; };
version = "7.0.7.2"; version = "7.1.1";
}; };
rainbow = { rainbow = {
groups = ["default" "development"]; groups = ["default" "development"];
@ -2341,15 +2339,15 @@
version = "13.0.6"; version = "13.0.6";
}; };
rdf = { rdf = {
dependencies = [ "link_header" ]; dependencies = ["bcp47_spec" "link_header"];
groups = ["default"]; groups = ["default"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1jx4xyip4inrhr099zac8ah5232g70rv39mm19p85sgpwg80a6ip"; sha256 = "0l515w395kbyz4n7lx102x1nv9yl6l72gvk67p35z4cqa74s59nx";
type = "gem"; type = "gem";
}; };
version = "3.2.11"; version = "3.3.1";
}; };
rdf-normalize = { rdf-normalize = {
dependencies = ["rdf"]; dependencies = ["rdf"];
@ -2362,6 +2360,17 @@
}; };
version = "0.6.1"; version = "0.6.1";
}; };
rdoc = {
dependencies = ["psych"];
groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "05r2cxscapr9saqjw8dlp89as7jvc2mlz1h5kssrmkbz105qmfcm";
type = "gem";
};
version = "6.5.0";
};
redcarpet = { redcarpet = {
groups = ["default"]; groups = ["default"];
platforms = []; platforms = [];
@ -2409,10 +2418,21 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "136br91alxdwh1s85z912dwz23qlhm212vy6i3wkinz3z8mkxxl3"; sha256 = "1d9a5s3qrjdy50ll2s32gg3qmf10ryp3v2nr5k718kvfadp50ray";
type = "gem"; type = "gem";
}; };
version = "2.8.1"; version = "2.8.2";
};
reline = {
dependencies = ["io-console"];
groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0187pj9k7d8kdvzjk6r6mf7z7wy18saxxhn7x7pqc840w6h4s0ja";
type = "gem";
};
version = "0.3.9";
}; };
request_store = { request_store = {
dependencies = ["rack"]; dependencies = ["rack"];
@ -2431,10 +2451,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0m9s0mkkprrz02gxhq0ijlwjy0nx1j5yrjf8ssjnhyagnx03lyrx"; sha256 = "06ilkbbwvc8d0vppf8ywn1f79ypyymlb9krrhqv4g0q215zaiwlj";
type = "gem"; type = "gem";
}; };
version = "3.1.0"; version = "3.1.1";
}; };
rexml = { rexml = {
groups = ["default" "development" "test"]; groups = ["default" "development" "test"];
@ -2451,10 +2471,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "10mmzc85y7andsich586ndykw678qn1ns2wpjxrg0sc0gr4w3pig"; sha256 = "0m48hv6wpmmm6cjr6q92q78h1i610riml19k5h1dil2yws3h1m3m";
type = "gem"; type = "gem";
}; };
version = "6.2.2"; version = "6.3.0";
}; };
rouge = { rouge = {
groups = ["default" "development"]; groups = ["default" "development"];
@ -2519,6 +2539,17 @@
}; };
version = "3.12.3"; version = "3.12.3";
}; };
rspec-github = {
dependencies = ["rspec-core"];
groups = ["test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0kqjmd85v2fpb06d0rx43dc51f0igc1gmm8y3nz0wvmy7zg02njm";
type = "gem";
};
version = "2.4.0";
};
rspec-mocks = { rspec-mocks = {
dependencies = ["diff-lcs" "rspec-support"]; dependencies = ["diff-lcs" "rspec-support"];
groups = ["default" "development" "test"]; groups = ["default" "development" "test"];
@ -2578,10 +2609,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1hr8g9pqw3w87a83kqcxpayrx4jmsziharrg4vqw0gr9kksx2dfv"; sha256 = "1izxvc9g6vfpx081rn68z900bql30bif4lnd038cz2lgj70ljm41";
type = "gem"; type = "gem";
}; };
version = "1.56.2"; version = "1.57.1";
}; };
rubocop-ast = { rubocop-ast = {
dependencies = ["parser"]; dependencies = ["parser"];
@ -2600,10 +2631,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "01fn05a87g009ch1sh00abdmgjab87i995msap26vxq1a5smdck6"; sha256 = "1jwwi5a05947q9zsk6i599zxn657hdphbmmbbpx17qsv307rwcps";
type = "gem"; type = "gem";
}; };
version = "2.18.0"; version = "2.19.0";
}; };
rubocop-factory_bot = { rubocop-factory_bot = {
dependencies = ["rubocop"]; dependencies = ["rubocop"];
@ -2622,10 +2653,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1v3a2g3wk3aqa0k0zzla10qkxlc625zkj3yf4zcsybs86r5bm4xn"; sha256 = "1pzsrnjmrachdjxzl9jpw47cydicn3408vgdg3a4bss4v5r42rjj";
type = "gem"; type = "gem";
}; };
version = "1.19.0"; version = "1.19.1";
}; };
rubocop-rails = { rubocop-rails = {
dependencies = ["activesupport" "rack" "rubocop"]; dependencies = ["activesupport" "rack" "rubocop"];
@ -2681,7 +2712,7 @@
version = "1.15.0"; version = "1.15.0";
}; };
ruby2_keywords = { ruby2_keywords = {
groups = [ "default" ]; groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
@ -2750,10 +2781,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0ws0mh230l1pvyxcrlcr48w01alfhprjs1jbd8yrn463drsr2yac"; sha256 = "037v9w6rwkdi9msydiyj31pxdlh4vcr8h8w3g1mzanbsas2m1b1a";
type = "gem"; type = "gem";
}; };
version = "4.11.0"; version = "4.13.1";
}; };
semantic_range = { semantic_range = {
groups = ["default"]; groups = ["default"];
@ -2771,10 +2802,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0iv7vgqyrpymiwvc3ca24sl4lda8m627p657p0v4xzdpzincrnbr"; sha256 = "0zqr9is8y7mg5dfs1q8w5jl9spwvqkhbi9r6np8208n40hi3pydl";
type = "gem"; type = "gem";
}; };
version = "6.5.9"; version = "6.5.12";
}; };
sidekiq-bulk = { sidekiq-bulk = {
dependencies = ["sidekiq"]; dependencies = ["sidekiq"];
@ -2894,17 +2925,6 @@
}; };
version = "3.4.2"; version = "3.4.2";
}; };
sshkit = {
dependencies = [ "net-scp" "net-ssh" ];
groups = [ "default" "development" ];
platforms = [ ];
source = {
remotes = [ "https://rubygems.org" ];
sha256 = "14a717mr2cmpgld5fcdd124cvlc5b634f96rhwlnmmc4m8bbkcp9";
type = "gem";
};
version = "1.21.5";
};
stackprof = { stackprof = {
groups = ["development" "test"]; groups = ["development" "test"];
platforms = []; platforms = [];
@ -2936,6 +2956,16 @@
}; };
version = "3.0.2"; version = "3.0.2";
}; };
stringio = {
groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0ix96dxbjqlpymdigb4diwrifr0bq7qhsrng95fkkp18av326nqk";
type = "gem";
};
version = "3.0.8";
};
strong_migrations = { strong_migrations = {
dependencies = ["activerecord"]; dependencies = ["activerecord"];
groups = ["default"]; groups = ["default"];
@ -3005,10 +3035,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "08j5456rdpgxvv8bs44x81jrxzpxb79wxfxdq4fqwxyircxzi2jj"; sha256 = "1mhzw33lv7h8d7pyh65lis5svnmm8m6fnszbsfg3j3xk9hcl0an5";
type = "gem"; type = "gem";
}; };
version = "1.2.2"; version = "1.2.3";
}; };
thor = { thor = {
groups = ["default" "development" "pam_authentication" "production" "test"]; groups = ["default" "development" "pam_authentication" "production" "test"];
@ -3025,13 +3055,13 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0bmjgbv8158klwp2r3klxjwaj93nh1sbl4xvj9wsha0ic478avz7"; sha256 = "0p3l7v619hwfi781l3r7ypyv1l8hivp09r18kmkn6g11c4yr1pc2";
type = "gem"; type = "gem";
}; };
version = "2.2.0"; version = "2.3.0";
}; };
timeout = { timeout = {
groups = [ "default" "development" ]; groups = ["default" "development" "test"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
@ -3162,10 +3192,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1gi82k102q7bkmfi7ggn9ciypn897ylln1jk9q67kjhr39fj043a"; sha256 = "1d0azx233nags5jx3fqyr23qa2rhgzbhv8pxp46dgbg1mpf82xky";
type = "gem"; type = "gem";
}; };
version = "2.4.2"; version = "2.5.0";
}; };
uri = { uri = {
groups = ["default"]; groups = ["default"];
@ -3267,15 +3297,25 @@
}; };
version = "0.3.8"; version = "0.3.8";
}; };
webrick = {
groups = ["default" "development" "pam_authentication" "production" "test"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "13qm7s0gr2pmfcl7dxrmq38asaza4w0i2n9my4yzs499j731wh8r";
type = "gem";
};
version = "1.8.1";
};
websocket = { websocket = {
groups = ["default" "test"]; groups = ["default" "test"];
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0dib6p55sl606qb4vpwrvj5wh881kk4aqn2zpfapf8ckx7g14jw8"; sha256 = "1a4zc8d0d91c3xqwapda3j3zgpfwdbj76hkb69xn6qvfkfks9h9c";
type = "gem"; type = "gem";
}; };
version = "1.2.9"; version = "1.2.10";
}; };
websocket-driver = { websocket-driver = {
dependencies = ["websocket-extensions"]; dependencies = ["websocket-extensions"];
@ -3334,10 +3374,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1mwdd445w63khz13hpv17m2br5xngyjl3jdj08xizjbm78i2zrxd"; sha256 = "1gir0if4nryl1jhwi28669gjwhxb7gzrm1fcc8xzsch3bnbi47jn";
type = "gem"; type = "gem";
}; };
version = "2.6.11"; version = "2.6.12";
}; };
} }

View file

@ -1,13 +1,18 @@
# This file was generated by pkgs.mastodon.updateScript. # This file was generated by pkgs.mastodon.updateScript.
{ fetchgit, applyPatches }: { fetchFromGitHub, applyPatches, patches ? [] }:
let let
src = fetchgit { version = "0e562916cce3241d98bd10f04a6aa7419700605";
url = "https://github.com/glitch-soc/mastodon.git";
rev = "a1df9fdb06854bd55f018918236132ccfa7d9d84";
sha256 = "0amqiigq3qgag6qm119aaysmd2k93vwgr1aynxjxmbpn35ykcay3";
};
in in
(
applyPatches { applyPatches {
inherit src; src = fetchFromGitHub {
patches = [ ]; owner = "glitch-soc";
repo = "mastodon";
rev = "v${version}";
hash = "sha256-fZH3zPEU5jnYFhLx8OKDNrvsSVT46Peu92L84Fg5YpQ=";
};
patches = patches ++ [];
}) // {
inherit version;
yarnHash = "sha256-P7KswzsCusyiS4MxUFnC1HYMTQ6fLpIwd97AglCukIk=";
} }

View file

@ -1,38 +0,0 @@
{ runCommand
, lib
, makeWrapper
, yarn2nix
, bundix
, coreutils
, diffutils
, nix-prefetch-git
, gnused
, jq
}:
let
binPath = lib.makeBinPath [
yarn2nix
bundix
coreutils
diffutils
nix-prefetch-git
gnused
jq
];
in
runCommand "mastodon-update-script"
{
nativeBuildInputs = [ makeWrapper ];
meta = {
maintainers = with lib.maintainers; [ happy-river ];
description =
"Utility to generate Nix expressions for Mastodon's dependencies";
platforms = lib.platforms.unix;
};
} ''
mkdir -p $out/bin
cp ${./update.sh} $out/bin/update.sh
patchShebangs $out/bin/update.sh
wrapProgram $out/bin/update.sh --prefix PATH : ${binPath}
''

View file

@ -1,15 +1,22 @@
#!/usr/bin/env bash #!/usr/bin/env nix-shell
#! nix-shell -i bash -p bundix coreutils diffutils nix-prefetch-github gnused jq prefetch-yarn-deps
set -e set -e
URL=https://github.com/mastodon/mastodon.git OWNER=mastodon
REPO=mastodon
POSITIONAL=() POSITIONAL=()
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
key="$1" key="$1"
case $key in case $key in
--url) --owner)
URL="$2" OWNER="$2"
shift # past argument
shift # past value
;;
--repo)
REPO="$2"
shift # past argument shift # past argument
shift # past value shift # past value
;; ;;
@ -35,29 +42,28 @@ while [[ $# -gt 0 ]]; do
esac esac
done done
if [[ -z "$VERSION" || -n "$POSITIONAL" ]]; then if [[ -n "$POSITIONAL" ]]; then
echo "Usage: update.sh [--url URL] --ver VERSION [--rev REVISION] [--patches PATCHES]" echo "Usage: update.sh [--owner OWNER] [--repo REPO] [--ver VERSION] [--rev REVISION] [--patches PATCHES]"
echo "URL may be any path acceptable to 'git clone' and VERSION the" echo "OWNER and REPO must be paths on github."
echo "semantic version number. If VERSION is not a revision acceptable to" echo "If REVISION is not provided, the latest tag from github.com/mastodon/mastodon is fetched and VERSION is calculated from it."
echo "'git checkout', you must provide one in REVISION. If URL is not" echo "If OWNER and REPO are not provided, it defaults they default to mastodon and mastodon."
echo "provided, it defaults to https://github.com/mastodon/mastodon.git." echo "PATCHES, if provided, should be one or more Nix expressions separated by spaces."
echo "PATCHES, if provided, should be one or more Nix expressions"
echo "separated by spaces."
exit 1 exit 1
fi fi
if [[ -z "$REVISION" ]]; then if [[ -z "$REVISION" ]]; then
REVISION="$VERSION" REVISION="$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s "https://api.github.com/repos/$OWNER/$REPO/releases" | jq -r 'map(select(.prerelease == false)) | .[0].tag_name')"
fi fi
rm -f gemset.nix version.nix source.nix VERSION="$(echo "$REVISION" | cut -c2-)"
TARGET_DIR="$PWD"
rm -f gemset.nix source.nix
cd "$(dirname "${BASH_SOURCE[0]}")" || exit 1
WORK_DIR=$(mktemp -d) WORK_DIR=$(mktemp -d)
# Check that working directory was created. # Check that working directory was created.
if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then if [[ -z "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then
echo "Could not create temporary directory" echo "Could not create temporary directory"
exit 1 exit 1
fi fi
@ -70,29 +76,37 @@ function cleanup {
} }
trap cleanup EXIT trap cleanup EXIT
echo "Fetching source code $REVISION from $URL" echo "Fetching source code $REVISION"
JSON=$(nix-prefetch-git --url "$URL" --rev "$REVISION" 2> $WORK_DIR/nix-prefetch-git.out) JSON=$(nix-prefetch-github "$OWNER" "$REPO" --rev "$REVISION" 2> $WORK_DIR/nix-prefetch-git.out)
SHA=$(echo $JSON | jq -r .sha256) HASH=$(echo "$JSON" | jq -r .hash)
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 cat > source.nix << EOF
# This file was generated by pkgs.mastodon.updateScript. # This file was generated by pkgs.mastodon.updateScript.
{ fetchgit, applyPatches }: let { fetchFromGitHub, applyPatches, patches ? [] }:
src = fetchgit { let
url = "$URL"; version = "$VERSION";
rev = "$REVISION"; in
sha256 = "$SHA"; (
applyPatches {
src = fetchFromGitHub {
owner = "$OWNER";
repo = "$REPO";
rev = "v\${version}";
hash = "$HASH";
}; };
in applyPatches { patches = patches ++ [$PATCHES];
inherit src; }) // {
patches = [$PATCHES]; inherit version;
yarnHash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
} }
EOF EOF
SOURCE_DIR="$(nix-build --no-out-link -E '(import <nixpkgs> {}).callPackage ./source.nix {}')" SOURCE_DIR="$(nix-build --no-out-link -E '(import <nixpkgs> {}).callPackage ./source.nix {}')"
echo "Creating gemset.nix" echo "Creating gemset.nix"
bundix --lockfile="$SOURCE_DIR/Gemfile.lock" --gemfile="$SOURCE_DIR/Gemfile" bundix --lockfile="$SOURCE_DIR/Gemfile.lock" --gemfile="$SOURCE_DIR/Gemfile"
echo "" >> $TARGET_DIR/gemset.nix # Create trailing newline to please EditorConfig checks echo "" >> gemset.nix # Create trailing newline to please EditorConfig checks
echo "Creating yarn-hash.nix"
YARN_HASH="$(prefetch-yarn-deps "$SOURCE_DIR/yarn.lock")"
YARN_HASH="$(nix hash to-sri --type sha256 "$YARN_HASH")"
sed -i "s/sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=/$YARN_HASH/g" source.nix

View file

@ -1 +0,0 @@
"4.1.7"