eufon

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

default.nix (2356B)


      1 { stdenv
      2 , callPackage
      3 , debug ? false
      4 , fetchFromGitHub
      5 
      6 , fennel
      7 , glib-networking
      8 , gobject-introspection
      9 , webkitgtk
     10 , gtk3
     11 , gtk-layer-shell
     12 , lua5_3
     13 , socat
     14 , cpio
     15 
     16 , makeWrapper
     17 } :
     18 let
     19   lua = lua5_3;
     20   fennel_ = (fennel.override { lua = lua5_3; });
     21   luaDbusProxy = callPackage ./lua-dbus-proxy.nix {
     22     inherit (lua.pkgs) lgi buildLuaPackage;
     23     inherit lua;
     24   };
     25   glib_networking_gio  = "${glib-networking}/lib/gio/modules";
     26   inifile = lua.pkgs.buildLuaPackage rec {
     27     pname  = "inifile";
     28     name = "${pname}-${version}";
     29     version  = "1.0.2";
     30     src = fetchFromGitHub {
     31       owner = "bartbes";
     32       repo = "inifile";
     33       rev = "f0b41a8a927f3413310510121c5767021957a4e0";
     34       sha256 = "1ry0q238vbp8wxwy4qp1aychh687lvbckcf647pmc03rwkakxm4r";
     35     };
     36     buildPhase = ":";
     37     installPhase = ''
     38         mkdir -p "$out/share/lua/${lua.luaversion}"
     39         cp inifile.lua "$out/share/lua/${lua.luaversion}/"
     40       '';
     41   };
     42 
     43   luaWithPackages = lua5_3.withPackages (ps: with ps; [
     44     (toLuaModule fennel_)
     45     inifile
     46     luafilesystem
     47     lgi
     48     luaposix
     49     luaDbusProxy
     50     penlight
     51 
     52   ]);
     53   kiwmi = callPackage ./kiwmi.nix { lua = lua5_3; inherit debug; };
     54   GIO_EXTRA_MODULES = "${glib-networking}/lib/gio/modules";
     55 in
     56 stdenv.mkDerivation {
     57   pname = "eufon";
     58   version = "0.1";
     59   inherit GIO_EXTRA_MODULES;
     60   buildInputs = [
     61     luaWithPackages
     62     kiwmi
     63     glib-networking
     64     gobject-introspection.dev
     65     gtk-layer-shell
     66     gtk3
     67     webkitgtk
     68   ];
     69   nativeBuildInputs = [ cpio makeWrapper ];
     70 
     71   installPhase = ''
     72     export LUA_PATH="`lua -e 'print(package.path)'`"
     73     export LUA_CPATH="`lua -e 'print(package.cpath)'`"
     74     mkdir -p $out/bin
     75     find . -name kiwmi -prune \
     76         -o -type l -prune \
     77         -o -name git -prune \
     78         -o -print0 | cpio -0 -v --pass-through $out
     79     substitute bin/eufonctl.sh $out/bin/eufonctl \
     80       --replace SOCAT=socat SOCAT=${socat}/bin/socat
     81     makeWrapper ${kiwmi}/bin/kiwmi $out/bin/eufon \
     82       --set LUA_PATH "$out/?.lua;$LUA_PATH" \
     83       --set LUA_CPATH "$LUA_CPATH" \
     84       --prefix PATH : ${kiwmi}/bin:${luaWithPackages}/bin \
     85       --set EUFON_PATH "$out" \
     86       --set GIO_EXTRA_MODULES "${glib-networking}/lib/gio/modules" \
     87       --set GI_TYPELIB_PATH "$GI_TYPELIB_PATH" \
     88       --add-flags "-c $out/init.lua"
     89 
     90     chmod +x $out/bin/eufon
     91   '';
     92 
     93   src = ./.;
     94 }