about summary refs log tree commit diff
path: root/pkgs/applications/networking/instant-messengers/mikutter
diff options
context:
space:
mode:
authormidchildan <midchildan+git@gmail.com>2017-05-18 09:47:45 +0900
committerJörg Thalheim <joerg@thalheim.io>2017-05-21 12:13:34 +0100
commit2c393164c82bab1f3bc009b1cff7524d60f3eb30 (patch)
tree5c4f25457cb4e2348632b8309500347f0cf208bb /pkgs/applications/networking/instant-messengers/mikutter
parentbce69a0b1a7140b573b9673f589476ce5ba140d9 (diff)
mikutter: init at 3.5.7
fixes #25852
Diffstat (limited to 'pkgs/applications/networking/instant-messengers/mikutter')
-rw-r--r--pkgs/applications/networking/instant-messengers/mikutter/Gemfile37
-rw-r--r--pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock104
-rw-r--r--pkgs/applications/networking/instant-messengers/mikutter/core/plugin/gtk/Gemfile3
-rw-r--r--pkgs/applications/networking/instant-messengers/mikutter/core/plugin/image_file_cache/Gemfile1
-rw-r--r--pkgs/applications/networking/instant-messengers/mikutter/core/plugin/photo_support/Gemfile5
-rw-r--r--pkgs/applications/networking/instant-messengers/mikutter/core/plugin/uitranslator/Gemfile5
-rw-r--r--pkgs/applications/networking/instant-messengers/mikutter/default.nix63
-rw-r--r--pkgs/applications/networking/instant-messengers/mikutter/gemset.nix365
-rw-r--r--pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop9
-rw-r--r--pkgs/applications/networking/instant-messengers/mikutter/shell.nix17
10 files changed, 609 insertions, 0 deletions
diff --git a/pkgs/applications/networking/instant-messengers/mikutter/Gemfile b/pkgs/applications/networking/instant-messengers/mikutter/Gemfile
new file mode 100644
index 0000000000000..66b17ff876079
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/mikutter/Gemfile
@@ -0,0 +1,37 @@
+alias __source_distinct__ source
+def source(url)
+  @loaded ||= {}
+  unless @loaded[url]
+    @loaded[url] = true
+    __source_distinct__(url) end end
+
+source 'https://rubygems.org'
+
+group :default do
+  gem 'oauth', '>= 0.5.1'
+  gem 'json_pure', '~> 1.8'
+  gem 'addressable', '~> 2.3'
+  gem 'memoist', '~> 0.14'
+  gem 'ruby-hmac', '~> 0.4'
+  gem 'typed-array', '~> 0.1'
+  gem 'delayer', '~> 0.0'
+  gem 'pluggaloid', '>= 1.1.1', '< 2.0'
+  gem 'delayer-deferred', '>= 1.0.4', '< 2.0'
+  gem 'twitter-text', '1.14.2'
+end
+
+group :test do
+  gem 'test-unit', '~> 3.0'
+  gem 'rake', '~> 10.1'
+  gem 'watch', '~> 0.1'
+  gem 'mocha', '~> 0.14'
+  gem 'webmock', '~> 1.17'
+  gem 'ruby-prof'
+end
+
+
+group :plugin do
+  Dir.glob(File.expand_path(File.join(File.dirname(__FILE__), "core/plugin/*/Gemfile"))){ |path|
+    eval File.open(path).read
+  }
+end
diff --git a/pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock b/pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock
new file mode 100644
index 0000000000000..58f41087919e5
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock
@@ -0,0 +1,104 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    addressable (2.5.1)
+      public_suffix (~> 2.0, >= 2.0.2)
+    atk (3.1.1)
+      glib2 (= 3.1.1)
+    cairo (1.15.7)
+      native-package-installer
+      pkg-config (>= 1.1.5)
+    crack (0.4.3)
+      safe_yaml (~> 1.0.0)
+    delayer (0.0.2)
+    delayer-deferred (1.1.1)
+      delayer (>= 0.0.2, < 0.1)
+    gdk_pixbuf2 (3.1.1)
+      gio2 (= 3.1.1)
+    gettext (3.0.9)
+      locale (>= 2.0.5)
+      text
+    gio2 (3.1.1)
+      glib2 (= 3.1.1)
+      gobject-introspection (= 3.1.1)
+    glib2 (3.1.1)
+      pkg-config
+    gobject-introspection (3.1.1)
+      glib2 (= 3.1.1)
+    gtk2 (3.1.1)
+      atk (= 3.1.1)
+      gdk_pixbuf2 (= 3.1.1)
+      pango (= 3.1.1)
+    hashdiff (0.3.4)
+    httpclient (2.8.3)
+    instance_storage (1.0.0)
+    json_pure (1.8.6)
+    locale (2.1.2)
+    memoist (0.15.0)
+    metaclass (0.0.4)
+    mini_portile2 (2.1.0)
+    mocha (0.14.0)
+      metaclass (~> 0.0.1)
+    moneta (1.0.0)
+    native-package-installer (1.0.1)
+    nokogiri (1.7.2)
+      mini_portile2 (~> 2.1.0)
+    oauth (0.5.1)
+    pango (3.1.1)
+      cairo (>= 1.14.0)
+      glib2 (= 3.1.1)
+    pkg-config (1.2.0)
+    pluggaloid (1.1.1)
+      delayer
+      instance_storage (>= 1.0.0, < 2.0.0)
+    power_assert (1.0.2)
+    public_suffix (2.0.5)
+    rake (10.5.0)
+    ruby-hmac (0.4.0)
+    ruby-prof (0.16.2)
+    safe_yaml (1.0.4)
+    test-unit (3.2.3)
+      power_assert
+    text (1.3.1)
+    totoridipjp (0.1.0)
+    twitter-text (1.14.2)
+      unf (~> 0.1.0)
+    typed-array (0.1.2)
+    unf (0.1.4)
+      unf_ext
+    unf_ext (0.0.7.4)
+    watch (0.1.0)
+    webmock (1.24.6)
+      addressable (>= 2.3.6)
+      crack (>= 0.3.2)
+      hashdiff
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  addressable (~> 2.3)
+  delayer (~> 0.0)
+  delayer-deferred (>= 1.0.4, < 2.0)
+  gettext (~> 3.0.1)
+  gtk2 (= 3.1.1)
+  httpclient
+  json_pure (~> 1.8)
+  memoist (~> 0.14)
+  mocha (~> 0.14)
+  moneta
+  nokogiri
+  oauth (>= 0.5.1)
+  pluggaloid (>= 1.1.1, < 2.0)
+  rake (~> 10.1)
+  ruby-hmac (~> 0.4)
+  ruby-prof
+  test-unit (~> 3.0)
+  totoridipjp
+  twitter-text (= 1.14.2)
+  typed-array (~> 0.1)
+  watch (~> 0.1)
+  webmock (~> 1.17)
+
+BUNDLED WITH
+   1.14.4
diff --git a/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/gtk/Gemfile b/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/gtk/Gemfile
new file mode 100644
index 0000000000000..4015fbec1bc92
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/gtk/Gemfile
@@ -0,0 +1,3 @@
+source 'https://rubygems.org'
+
+gem 'gtk2', '3.1.1'
diff --git a/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/image_file_cache/Gemfile b/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/image_file_cache/Gemfile
new file mode 100644
index 0000000000000..f86005fef078e
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/image_file_cache/Gemfile
@@ -0,0 +1 @@
+gem 'moneta'
diff --git a/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/photo_support/Gemfile b/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/photo_support/Gemfile
new file mode 100644
index 0000000000000..ee2ecf52d42ec
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/photo_support/Gemfile
@@ -0,0 +1,5 @@
+source 'https://rubygems.org'
+
+gem 'nokogiri'
+gem 'httpclient'
+gem 'totoridipjp'
diff --git a/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/uitranslator/Gemfile b/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/uitranslator/Gemfile
new file mode 100644
index 0000000000000..1625327f16dcd
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/uitranslator/Gemfile
@@ -0,0 +1,5 @@
+source 'https://rubygems.org'
+
+group :default do
+  gem 'gettext', '~> 3.0.1'
+end
diff --git a/pkgs/applications/networking/instant-messengers/mikutter/default.nix b/pkgs/applications/networking/instant-messengers/mikutter/default.nix
new file mode 100644
index 0000000000000..4d69c5501e6b7
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/mikutter/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, fetchurl
+, bundlerEnv, ruby, pkgconfig
+, alsaUtils, libnotify, which, wrapGAppsHook, gtk2
+}:
+
+stdenv.mkDerivation rec {
+  name = "mikutter-${version}";
+  version = "3.5.7";
+
+  src = fetchurl {
+    url = "https://mikutter.hachune.net/bin/mikutter.${version}.tar.gz";
+    sha256 = "1vh5ap92q869j69hmmbznailaflmdp0km4sqdv06cpq7v8pwm28w";
+  };
+
+  env = bundlerEnv {
+    name = "mikutter-${version}-gems";
+    gemdir = ./.;
+
+    inherit ruby;
+  };
+
+  buildInputs = [ alsaUtils libnotify which gtk2 ruby ];
+  nativeBuildInputs = [ wrapGAppsHook ];
+
+  postUnpack = ''
+    rm -rf $sourceRoot/vendor
+  '';
+
+  installPhase = ''
+    install -v -D -m644 README $out/share/doc/mikutter/README
+    install -v -D -m644 LICENSE $out/share/doc/mikutter/LICENSE
+    rm -v README LICENSE
+
+    cp -rv . $out
+    mkdir $out/bin/
+    # hack wrapGAppsHook wants a file not a symlink
+    mv $out/mikutter.rb $out/bin/mikutter
+
+    gappsWrapperArgs+=(
+      --prefix PATH : "${ruby}/bin:${alsaUtils}/bin:${libnotify}/bin"
+      --prefix GEM_HOME : "${env}/${env.ruby.gemPath}"
+      --set DISABLE_BUNDLER_SETUP 1
+    )
+
+    mkdir -p $out/share/mikutter $out/share/applications
+    ln -sv $out/core/skin $out/share/mikutter/skin
+    substituteAll ${./mikutter.desktop} $out/share/applications/mikutter.desktop
+  '';
+
+  postFixup = ''
+    mv $out/bin/.mikutter-wrapped $out/mikutter.rb
+    substituteInPlace $out/bin/mikutter \
+      --replace "$out/bin/.mikutter-wrapped" "$out/mikutter.rb"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An extensible Twitter client";
+    homepage = "https://mikutter.hachune.net";
+    maintainers = with maintainers; [ midchildan ];
+    platforms = ruby.meta.platforms;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/mikutter/gemset.nix b/pkgs/applications/networking/instant-messengers/mikutter/gemset.nix
new file mode 100644
index 0000000000000..d6d99f3d55b79
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/mikutter/gemset.nix
@@ -0,0 +1,365 @@
+{
+  addressable = {
+    dependencies = ["public_suffix"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i8q32a4gr0zghxylpyy7jfqwxvwrivsxflg9mks6kx92frh75mh";
+      type = "gem";
+    };
+    version = "2.5.1";
+  };
+  atk = {
+    dependencies = ["glib2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17x88g596s3pqfxplm5ia7anpcmd9kxs4nzmpf2h74bqwkbq2jrz";
+      type = "gem";
+    };
+    version = "3.1.1";
+  };
+  cairo = {
+    dependencies = ["native-package-installer" "pkg-config"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "115ksrswbs7pg7kdfi2w8bi9xxv9gzmfvcjj8qj4dxy8dkvp3k4d";
+      type = "gem";
+    };
+    version = "1.15.7";
+  };
+  crack = {
+    dependencies = ["safe_yaml"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
+      type = "gem";
+    };
+    version = "0.4.3";
+  };
+  delayer = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "156vy4x1d2jgafkjaafzfz7g8ghl4p5zgbl859b8slp4wdxy3v1r";
+      type = "gem";
+    };
+    version = "0.0.2";
+  };
+  delayer-deferred = {
+    dependencies = ["delayer"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bw48i6qbxmjf2al4a0mw23nlkcrjrwsrdrabbwz62v8sdmdynpc";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  gdk_pixbuf2 = {
+    dependencies = ["gio2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0x9fzsazfi6f3iq7zkqc0vjl6311876dvff0000vg41rajv3rhh1";
+      type = "gem";
+    };
+    version = "3.1.1";
+  };
+  gettext = {
+    dependencies = ["locale" "text"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14vw306p46w2kyad3kp9vq56zw3ch6px30wkhl5x0qkx8d3ya3ir";
+      type = "gem";
+    };
+    version = "3.0.9";
+  };
+  gio2 = {
+    dependencies = ["glib2" "gobject-introspection"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ki9yxp860xk5cf04hrgvh386n93bkr0pf4c0kl3fx6pnwr4w3v0";
+      type = "gem";
+    };
+    version = "3.1.1";
+  };
+  glib2 = {
+    dependencies = ["pkg-config"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "131jd26n2wwp2lrkyyfq5nb3qriasaym1zpygm991qzcaq79i444";
+      type = "gem";
+    };
+    version = "3.1.1";
+  };
+  gobject-introspection = {
+    dependencies = ["glib2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fbi1pxyq73d674cwznya6kda38yjp4ahc2xgxi9shsdqmqcx3vs";
+      type = "gem";
+    };
+    version = "3.1.1";
+  };
+  gtk2 = {
+    dependencies = ["atk" "gdk_pixbuf2" "pango"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "00cbfl306xkglk0cc758vsvv1saaa24gvwh0m2jnzwgfwxk7mc5w";
+      type = "gem";
+    };
+    version = "3.1.1";
+  };
+  hashdiff = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1n6hj7k7b9hazac0j48ypbak2nqi5wy4nh5cjra6xl3a92r8db0a";
+      type = "gem";
+    };
+    version = "0.3.4";
+  };
+  httpclient = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
+      type = "gem";
+    };
+    version = "2.8.3";
+  };
+  instance_storage = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08nf5fhq9dckq9lmaklxydq0hrlfi7phk66gr3bggxg45zd687pl";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  json_pure = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vllrpm2hpsy5w1r7000mna2mhd7yfrmd8hi713lk0n9mv27bmam";
+      type = "gem";
+    };
+    version = "1.8.6";
+  };
+  locale = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+  memoist = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yd3rd7bnbhn9n47qlhcii5z89liabdjhy3is3h6gq77gyfk4f5q";
+      type = "gem";
+    };
+    version = "0.15.0";
+  };
+  metaclass = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5";
+      type = "gem";
+    };
+    version = "0.0.4";
+  };
+  mini_portile2 = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1y25adxb1hgg1wb2rn20g3vl07qziq6fz364jc5694611zz863hb";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  mocha = {
+    dependencies = ["metaclass"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0id1x7g46fzy8f4jna20ys329ydaj3sad75qs9db2a6nd7f0zc2b";
+      type = "gem";
+    };
+    version = "0.14.0";
+  };
+  moneta = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pgwn6xnlh7vviy511mfgkv2j3sfihn5ic2zabmyrs2nh6kfa912";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  native-package-installer = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1zh5x87y9dr16ic7vif2c3rnpr5k5wfs6kihpy4dnb9s0mqyqhsj";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jd8q3pr5rkrxx1vklvhcqcgl8kmfv5c8ny36ni3z5mirw6cm70c";
+      type = "gem";
+    };
+    version = "1.7.2";
+  };
+  oauth = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1awhy8ddhixch44y68lail3h1d214rnl3y1yzk0msq5g4z2l62ky";
+      type = "gem";
+    };
+    version = "0.5.1";
+  };
+  pango = {
+    dependencies = ["cairo" "glib2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18cc24lz4dmb7pavfspivbhbsypf40fhcbdzj8885zs0zr0dknby";
+      type = "gem";
+    };
+    version = "3.1.1";
+  };
+  pkg-config = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fklf2dnk354ahxma3iki5cx7b8yn9khby162pz17z6f1f3xk84g";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  pluggaloid = {
+    dependencies = ["delayer" "instance_storage"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0p9s1bzw02jzjlpjpxsbfsy1cyfbqs10iqvhxqh4xgyh72nry9zr";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  power_assert = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "168ac459nv45a2lhdf86zv35lv9nr569ny5nh3kfnglnxyzyx0kr";
+      type = "gem";
+    };
+    version = "1.0.2";
+  };
+  public_suffix = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "040jf98jpp6w140ghkhw2hvc1qx41zvywx5gj7r2ylr1148qnj7q";
+      type = "gem";
+    };
+    version = "2.0.5";
+  };
+  rake = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jcabbgnjc788chx31sihc5pgbqnlc1c75wakmqlbjdm8jns2m9b";
+      type = "gem";
+    };
+    version = "10.5.0";
+  };
+  ruby-hmac = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01zym41f8fqbmxfz8zv19627swi62ka3gp33bfbkc87v5k7mw954";
+      type = "gem";
+    };
+    version = "0.4.0";
+  };
+  ruby-prof = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0y13gdcdajfgrkx5rc9pvb7bwkyximwl5yrhq05gkmhflzdr7kag";
+      type = "gem";
+    };
+    version = "0.16.2";
+  };
+  safe_yaml = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  test-unit = {
+    dependencies = ["power_assert"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kngxp21sqbm7kv7wnxfqk99ik3wv1bjab519vcbj8xj30a5y4py";
+      type = "gem";
+    };
+    version = "3.2.3";
+  };
+  text = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+  totoridipjp = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03ci9hbwc6xf4x0lkm6px4jgbmi37n8plsjhbf2ir5vka9f29lck";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  twitter-text = {
+    dependencies = ["unf"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lld6d8rzj1zrgs6b227mp675bn8ds56f1c9w9wvx321f6ibn6np";
+      type = "gem";
+    };
+    version = "1.14.2";
+  };
+  typed-array = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qlv2rnkin9rwkgjx3k5qvc17m0m7jf5cdirw3wxbjnw5kga27w9";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  unf = {
+    dependencies = ["unf_ext"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+  unf_ext = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14hr2dzqh33kqc0xchs8l05pf3kjcayvad4z1ip5rdjxrkfk8glb";
+      type = "gem";
+    };
+    version = "0.0.7.4";
+  };
+  watch = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02g4g6ynnldyjjzrh19r584gj4z6ksff7h0ajz5jdwhpp5y7cghx";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  webmock = {
+    dependencies = ["addressable" "crack" "hashdiff"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03vlr6axajz6c7xmlk0w1kvkxc92f8y2zp27wq1z6yk916ry25n5";
+      type = "gem";
+    };
+    version = "1.24.6";
+  };
+}
\ No newline at end of file
diff --git a/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop b/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop
new file mode 100644
index 0000000000000..092f5f35cbf82
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=mikutter
+Comment=Twitter Client
+Type=Application
+Exec=@out@/bin/mikutter
+Icon=@out@/core/skin/data/icon.png
+Terminal=false
+Categories=Network;
+Keywords=Twitter;
diff --git a/pkgs/applications/networking/instant-messengers/mikutter/shell.nix b/pkgs/applications/networking/instant-messengers/mikutter/shell.nix
new file mode 100644
index 0000000000000..efa57175b2372
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/mikutter/shell.nix
@@ -0,0 +1,17 @@
+{ pkgs ? import <nixpkgs> {} }:
+
+pkgs.stdenv.mkDerivation {
+  name = "mikutter-shell";
+  buildInputs = with pkgs; [
+    bundix
+    bundler
+  ];
+
+  shellHook = ''
+    truncate --size 0 Gemfile.lock
+    bundle lock
+    bundle package --path=vendor/bundle --no-install
+    rm -rf vendor .bundle
+    bundix -d
+  '';
+}