Unverified Commit c2b4a5dc authored by midchildan's avatar midchildan
Browse files

mikutter: remove

This package was broken and had no maintainers.
parent 226c2a73
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -548,6 +548,8 @@
- `security.pam.u2f` now follows RFC42.
  All module options are now settable through the freeform `.settings`.

- Mikutter was removed because the package was broken and had no maintainers.

- Gollum was upgraded to major version 6. Read their [migration notes](https://github.com/gollum/gollum/wiki/6.0-Release-Notes).

- The hooks `yarnConfigHook` and `yarnBuildHook` were added. These should replace `yarn2nix.mkYarnPackage` and other `yarn2nix` related tools. The motivation to get rid of `yarn2nix` tools is the fact that they are too complex and hard to maintain, and they rely upon too much Nix evaluation which is problematic if import-from-derivation is not allowed (see more details at [#296856](https://github.com/NixOS/nixpkgs/issues/296856). The transition from `mkYarnPackage` to `yarn{Config,Build}Hook` is tracked at [#324246](https://github.com/NixOS/nixpkgs/issues/324246).
+0 −159
Original line number Diff line number Diff line
{ lib
, stdenv
, fetchurl
, bundlerEnv
, alsa-utils
, atk
, copyDesktopItems
, gobject-introspection
, gtk2
, ruby
, libicns
, libnotify
, makeDesktopItem
, which
, wrapGAppsHook3
, writeText
}:

let
  # NOTE: $out may have different values depending on context
  mikutterPaths = rec {
    optPrefixDir = "$out/opt/mikutter";
    appPrefixDir = "$out/Applications/mikutter.app/Contents";
    appBinDir = "${appPrefixDir}/MacOS";
    appResourceDir = "${appPrefixDir}/Resources";
    iconPath = "${optPrefixDir}/core/skin/data/icon.png";
  };

  gems = bundlerEnv {
    name = "mikutter-gems"; # leave the version out to enable package reuse
    gemdir = ./deps;
    groups = [ "default" "plugin" ];
    inherit ruby;

    # Avoid the following error:
    # > `<module:Moneta>': uninitialized constant Moneta::Builder (NameError)
    #
    # Related:
    # https://github.com/NixOS/nixpkgs/pull/76510
    # https://github.com/NixOS/nixpkgs/pull/76765
    # https://github.com/NixOS/nixpkgs/issues/83442
    # https://github.com/NixOS/nixpkgs/issues/106545
    copyGemFiles = true;
  };

  mkDesktopItem = { description }:
    makeDesktopItem {
      name = "mikutter";
      desktopName = "mikutter";
      exec = "mikutter";
      icon = "mikutter";
      categories = [ "Network" ];
      comment = description;
      keywords = [ "Mastodon" ];
    };

  mkInfoPlist = { version }:
    writeText "Info.plist" (lib.generators.toPlist { } {
      CFBundleName = "mikutter";
      CFBundleDisplayName = "mikutter";
      CFBundleExecutable = "mikutter";
      CFBundleIconFile = "mikutter";
      CFBundleIdentifier = "net.hachune.mikutter";
      CFBundleInfoDictionaryVersion = "6.0";
      CFBundlePackageType = "APPL";
      CFBundleVersion = version;
      CFBundleShortVersionString = version;
    });

  inherit (gems) wrappedRuby;
in
with mikutterPaths; stdenv.mkDerivation rec {
  pname = "mikutter";
  version = "4.1.4";

  src = fetchurl {
    url = "https://mikutter.hachune.net/bin/mikutter-${version}.tar.gz";
    sha256 = "05253nz4i1lmnq6czj48qdab2ny4vx2mznj6nsn2l1m2z6zqkwk3";
  };

  nativeBuildInputs = [ copyDesktopItems wrapGAppsHook3 gobject-introspection ]
    ++ lib.optionals stdenv.hostPlatform.isDarwin [ libicns ];
  buildInputs = [
    atk
    gtk2
    libnotify
    which # some plugins use it at runtime
    wrappedRuby
  ] ++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-utils ];

  scriptPath = lib.makeBinPath (
    [ wrappedRuby libnotify which ]
    ++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-utils ]
  );

  postUnpack = ''
    rm -rf vendor
  '';

  installPhase = ''
    runHook preInstall

    mkdir -p $out/bin ${optPrefixDir}

    install -Dm644 README $out/share/doc/mikutter/README
    install -Dm644 LICENSE $out/share/doc/mikutter/LICENSE
    rm -r README LICENSE deployment

    cp -r . ${optPrefixDir}

    gappsWrapperArgsHook # FIXME: currently runs at preFixup
    wrapGApp ${optPrefixDir}/mikutter.rb \
      --prefix PATH : "${scriptPath}" \
      --set DISABLE_BUNDLER_SETUP 1
    mv ${optPrefixDir}/mikutter.rb $out/bin/mikutter

    install -Dm644 ${iconPath} $out/share/icons/hicolor/256x256/apps/mikutter.png

    runHook postInstall
  '';

  postInstall =
    let
      infoPlist = mkInfoPlist { inherit version; };
    in
    lib.optionalString stdenv.hostPlatform.isDarwin ''
      mkdir -p ${appBinDir} ${appResourceDir}
      install -Dm644 ${infoPlist} ${appPrefixDir}/Info.plist
      ln -s $out/bin/mikutter ${appBinDir}/mikutter
      png2icns ${appResourceDir}/mikutter.icns ${iconPath}
    '';

  installCheckPhase = ''
    runHook preInstallCheck

    testDir="$(mktemp -d)"
    install -Dm644 ${./test_plugin.rb} "$testDir/plugin/test_plugin/test_plugin.rb"

    $out/bin/mikutter --confroot="$testDir" --plugin=test_plugin --debug

    runHook postInstallCheck
  '';

  desktopItems = [
    (mkDesktopItem { inherit (meta) description; })
  ];

  doInstallCheck = true;
  dontWrapGApps = true; # the target is placed outside of bin/

  passthru.updateScript = [ ./update.sh version (toString ./.) ];

  meta = with lib; {
    description = "An extensible Mastodon client";
    homepage = "https://mikutter.hachune.net";
    platforms = ruby.meta.platforms;
    license = licenses.mit;
  };
}
+0 −39
Original line number Diff line number Diff line
alias __source_distinct__ source
def source(url)
  @loaded ||= {}
  unless @loaded[url]
    @loaded[url] = true
    __source_distinct__(url) end end

source 'https://rubygems.org'

ruby '>= 2.5.0'

group :default do
  gem 'addressable','>= 2.7.0', '< 2.8'
  gem 'delayer','>= 1.1.2', '< 2.0'
  gem 'delayer-deferred','>= 2.2.0', '< 3.0'
  gem 'diva','>= 1.0.2', '< 2.0'
  gem 'memoist','>= 0.16.2', '< 0.17'
  gem 'oauth','>= 0.5.4'
  gem 'pluggaloid','>= 1.5.0', '< 2.0'
  gem 'typed-array','>= 0.1.2', '< 0.2'
end

group :test do
  gem 'test-unit','>= 3.3.4', '< 4.0'
  gem 'rake','>= 13.0.1'
  gem 'mocha','>= 1.11.1'
  gem 'webmock','>= 3.7.6'
  gem 'ruby-prof','>= 1.1.0'
end


group :plugin do
  Dir.glob(File.expand_path(File.join(__dir__, 'plugin/*/Gemfile'))){ |path|
    eval File.open(path).read
  }
  Dir.glob(File.join(File.expand_path(ENV['MIKUTTER_CONFROOT'] || '~/.mikutter'), 'plugin/*/Gemfile')){ |path|
    eval File.open(path).read
  }
end
+0 −101
Original line number Diff line number Diff line
GEM
  remote: https://rubygems.org/
  specs:
    addressable (2.7.0)
      public_suffix (>= 2.0.2, < 5.0)
    atk (3.4.1)
      glib2 (= 3.4.1)
    cairo (1.17.5)
      native-package-installer (>= 1.0.3)
      pkg-config (>= 1.2.2)
      red-colors
    cairo-gobject (3.4.1)
      cairo (>= 1.16.2)
      glib2 (= 3.4.1)
    crack (0.4.5)
      rexml
    delayer (1.2.0)
    delayer-deferred (2.2.0)
      delayer (>= 1.1.2, < 2.0)
    diva (1.0.2)
      addressable (>= 2.5.2, < 2.8)
    gdk_pixbuf2 (3.4.1)
      gio2 (= 3.4.1)
    gettext (3.3.7)
      locale (>= 2.0.5)
      text (>= 1.3.0)
    gio2 (3.4.1)
      gobject-introspection (= 3.4.1)
    glib2 (3.4.1)
      native-package-installer (>= 1.0.3)
      pkg-config (>= 1.3.5)
    gobject-introspection (3.4.1)
      glib2 (= 3.4.1)
    gtk2 (3.4.1)
      atk (= 3.4.1)
      gdk_pixbuf2 (= 3.4.1)
      pango (= 3.4.1)
    hashdiff (1.0.1)
    httpclient (2.8.3)
    instance_storage (1.0.0)
    locale (2.1.3)
    memoist (0.16.2)
    mini_portile2 (2.5.0)
    mocha (1.12.0)
    moneta (1.4.1)
    native-package-installer (1.1.1)
    nokogiri (1.11.3)
      mini_portile2 (~> 2.5.0)
      racc (~> 1.4)
    oauth (0.5.6)
    pango (3.4.1)
      cairo-gobject (= 3.4.1)
      gobject-introspection (= 3.4.1)
    pkg-config (1.4.6)
    pluggaloid (1.5.0)
      delayer (>= 1.1.0, < 2.0)
      instance_storage (>= 1.0.0, < 2.0.0)
    power_assert (2.0.0)
    public_suffix (4.0.6)
    racc (1.5.2)
    rake (13.0.3)
    red-colors (0.1.1)
    rexml (3.2.5)
    ruby-prof (1.4.3)
    test-unit (3.4.0)
      power_assert
    text (1.3.1)
    typed-array (0.1.2)
    webmock (3.12.2)
      addressable (>= 2.3.6)
      crack (>= 0.3.2)
      hashdiff (>= 0.4.0, < 2.0.0)

PLATFORMS
  ruby

DEPENDENCIES
  addressable (>= 2.7.0, < 2.8)
  delayer (>= 1.1.2, < 2.0)
  delayer-deferred (>= 2.2.0, < 3.0)
  diva (>= 1.0.2, < 2.0)
  gettext (>= 3.3.5, < 3.4)
  gtk2 (= 3.4.1)
  httpclient
  memoist (>= 0.16.2, < 0.17)
  mocha (>= 1.11.1)
  moneta
  nokogiri
  oauth (>= 0.5.4)
  pluggaloid (>= 1.5.0, < 2.0)
  rake (>= 13.0.1)
  ruby-prof (>= 1.1.0)
  test-unit (>= 3.3.4, < 4.0)
  typed-array (>= 0.1.2, < 0.2)
  webmock (>= 3.7.6)

RUBY VERSION
   ruby 2.6.6p146

BUNDLED WITH
   2.1.4
+0 −410
Original line number Diff line number Diff line
{
  addressable = {
    dependencies = ["public_suffix"];
    groups = ["default" "test"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1fvchp2rhp2rmigx7qglf69xvjqvzq7x0g49naliw29r2bz656sy";
      type = "gem";
    };
    version = "2.7.0";
  };
  atk = {
    dependencies = ["glib2"];
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "0a8q9a1f6x4gy55p8cf52a22bnpjgn18ad9n959x0f4gybbhs948";
      type = "gem";
    };
    version = "3.4.1";
  };
  cairo = {
    dependencies = ["native-package-installer" "pkg-config" "red-colors"];
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "0vbj9szp2xbnxqan8hppip8vm9fxpcmpx745y5fvg2scdh9f0p7s";
      type = "gem";
    };
    version = "1.17.5";
  };
  cairo-gobject = {
    dependencies = ["cairo" "glib2"];
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "0gkxdfslcvrwrs48giilji3bgxd5bwijwq33p9h00r10jzfg2028";
      type = "gem";
    };
    version = "3.4.1";
  };
  crack = {
    dependencies = ["rexml"];
    groups = ["default" "test"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r";
      type = "gem";
    };
    version = "0.4.5";
  };
  delayer = {
    groups = ["default"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "0iqf4i18i8rk3x7qgvkhbiqskf0xzdf733fjimrq6xkag2mq60bl";
      type = "gem";
    };
    version = "1.2.0";
  };
  delayer-deferred = {
    dependencies = ["delayer"];
    groups = ["default"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "0i2das3ncssacpqdgaf4as77vrxm7jfiizaja884fqv4rzv6s2sv";
      type = "gem";
    };
    version = "2.2.0";
  };
  diva = {
    dependencies = ["addressable"];
    groups = ["default"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "05wl4wg57vvng4nrp4lzjq148v908xzq092kq93phwvyxs7jnw2g";
      type = "gem";
    };
    version = "1.0.2";
  };
  gdk_pixbuf2 = {
    dependencies = ["gio2"];
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "0194gzn0kialfh0j7crllvp808r64sg6dh297x69b0av21ar5pam";
      type = "gem";
    };
    version = "3.4.1";
  };
  gettext = {
    dependencies = ["locale" "text"];
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1fqlwq7i8ck1fjyhn19q3skvgrbz44q7gq51mlr0qym5rkj5f6rn";
      type = "gem";
    };
    version = "3.3.7";
  };
  gio2 = {
    dependencies = ["gobject-introspection"];
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1l3jpgbdvb55xhcmpkcqgwx5068dfyi8kijfvzhbqh96ng0p1m7g";
      type = "gem";
    };
    version = "3.4.1";
  };
  glib2 = {
    dependencies = ["native-package-installer" "pkg-config"];
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "18clyn0fp0h5alnkf9i2bqd6wvl78h468pdbzs1csqnba8vw4q1c";
      type = "gem";
    };
    version = "3.4.1";
  };
  gobject-introspection = {
    dependencies = ["glib2"];
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1a3x8qiisbax3x0izj8l5w66r53ba5ma53ax2jhdbhbvaxx3d02n";
      type = "gem";
    };
    version = "3.4.1";
  };
  gtk2 = {
    dependencies = ["atk" "gdk_pixbuf2" "pango"];
    groups = ["plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "17az8g0n1yzz90kdbjg2hpabi04qccda7v6lin76bs637ivfg2md";
      type = "gem";
    };
    version = "3.4.1";
  };
  hashdiff = {
    groups = ["default" "test"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c";
      type = "gem";
    };
    version = "1.0.1";
  };
  httpclient = {
    groups = ["plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
      type = "gem";
    };
    version = "2.8.3";
  };
  instance_storage = {
    groups = ["default"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "08nf5fhq9dckq9lmaklxydq0hrlfi7phk66gr3bggxg45zd687pl";
      type = "gem";
    };
    version = "1.0.0";
  };
  locale = {
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "0997465kxvpxm92fiwc2b16l49mngk7b68g5k35ify0m3q0yxpdn";
      type = "gem";
    };
    version = "2.1.3";
  };
  memoist = {
    groups = ["default"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "0i9wpzix3sjhf6d9zw60dm4371iq8kyz7ckh2qapan2vyaim6b55";
      type = "gem";
    };
    version = "0.16.2";
  };
  mini_portile2 = {
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1hdbpmamx8js53yk3h8cqy12kgv6ca06k0c9n3pxh6b6cjfs19x7";
      type = "gem";
    };
    version = "2.5.0";
  };
  mocha = {
    groups = ["test"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "05yw6rwgjppq116jgqfg4pv4bql3ci4r2fmmg0m2c3sqib1bq41a";
      type = "gem";
    };
    version = "1.12.0";
  };
  moneta = {
    groups = ["plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "0z25b4yysvnf2hi9jxnsiv3fvnicnzr2m70ci231av5093jfknc6";
      type = "gem";
    };
    version = "1.4.1";
  };
  native-package-installer = {
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1ww1mq41q7rda975byjmq5dk8k13v8dawvm33370pbkrymd8syp8";
      type = "gem";
    };
    version = "1.1.1";
  };
  nokogiri = {
    dependencies = ["mini_portile2" "racc"];
    groups = ["plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "19d78mdg2lbz9jb4ph6nk783c9jbsdm8rnllwhga6pd53xffp6x0";
      type = "gem";
    };
    version = "1.11.3";
  };
  oauth = {
    groups = ["default"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1zwd6v39yqfdrpg1p3d9jvzs9ljg55ana2p06m0l7qn5w0lgx1a0";
      type = "gem";
    };
    version = "0.5.6";
  };
  pango = {
    dependencies = ["cairo-gobject" "gobject-introspection"];
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1d0cn50qgpifrcv8qx72wi6l9xalw3ryngbfmm9xpg9vx5rl1qbp";
      type = "gem";
    };
    version = "3.4.1";
  };
  pkg-config = {
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1mjjy1grxr64znkffxsvprcckbrrnm40b6gbllnbm7jxslbr3gjl";
      type = "gem";
    };
    version = "1.4.6";
  };
  pluggaloid = {
    dependencies = ["delayer" "instance_storage"];
    groups = ["default"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "0m3f940lf1bg01jin22by7hg9hs43y995isgcyqb6vbvlv51zj11";
      type = "gem";
    };
    version = "1.5.0";
  };
  power_assert = {
    groups = ["default" "test"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "172qfmzwxdf82bmwgcb13hnz9i3p6i2s2nijxnx6r63kn3drjppr";
      type = "gem";
    };
    version = "2.0.0";
  };
  public_suffix = {
    groups = ["default" "test"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1xqcgkl7bwws1qrlnmxgh8g4g9m10vg60bhlw40fplninb3ng6d9";
      type = "gem";
    };
    version = "4.0.6";
  };
  racc = {
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "178k7r0xn689spviqzhvazzvxfq6fyjldxb3ywjbgipbfi4s8j1g";
      type = "gem";
    };
    version = "1.5.2";
  };
  rake = {
    groups = ["test"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1iik52mf9ky4cgs38fp2m8r6skdkq1yz23vh18lk95fhbcxb6a67";
      type = "gem";
    };
    version = "13.0.3";
  };
  red-colors = {
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "0ar2k7zvhr1215jx5di29hkg5h1798f1gypmq6v0sy9v35w6ijca";
      type = "gem";
    };
    version = "0.1.1";
  };
  rexml = {
    groups = ["default" "test"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53";
      type = "gem";
    };
    version = "3.2.5";
  };
  ruby-prof = {
    groups = ["test"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1r3xalp91l07m0cwllcxjzg6nkviiqnxkcbgg5qnzsdji6rgy65m";
      type = "gem";
    };
    version = "1.4.3";
  };
  test-unit = {
    dependencies = ["power_assert"];
    groups = ["test"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1h0c323zfn4hdida4g58h8wnlh4kax438gyxlw20dd78kcp01i8m";
      type = "gem";
    };
    version = "3.4.0";
  };
  text = {
    groups = ["default" "plugin"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg";
      type = "gem";
    };
    version = "1.3.1";
  };
  typed-array = {
    groups = ["default"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "0qlv2rnkin9rwkgjx3k5qvc17m0m7jf5cdirw3wxbjnw5kga27w9";
      type = "gem";
    };
    version = "0.1.2";
  };
  webmock = {
    dependencies = ["addressable" "crack" "hashdiff"];
    groups = ["test"];
    platforms = [];
    source = {
      remotes = ["https://rubygems.org"];
      sha256 = "038igpmkpmn0nw0k7s4db8x88af1nwcy7wzh9m9c9q4p74h7rii0";
      type = "gem";
    };
    version = "3.12.2";
  };
}
Loading