add nim packages
This commit is contained in:
parent
4f24dba2ae
commit
9e6e045e88
|
@ -1,5 +1,9 @@
|
||||||
self: super:
|
self: super:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
buildNimblePackage = super.callPackage ./pkgs/nim-packages/generic.nix { };
|
||||||
|
|
||||||
|
gintro = super.callPackage ./pkgs/nim-packages/gintro/default.nix { };
|
||||||
|
|
||||||
shinto-cli = super.callPackage ./pkgs/shinto-cli { };
|
shinto-cli = super.callPackage ./pkgs/shinto-cli { };
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
{ stdenv, nim }:
|
||||||
|
|
||||||
|
{ name, src, nimDeps ? [], buildInputs ? [], nativeBuildInputs ? [],
|
||||||
|
patches ? [], ... }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = name;
|
||||||
|
src = src;
|
||||||
|
patches = patches;
|
||||||
|
buildInputs = [ nim ] ++ buildInputs;
|
||||||
|
nativeBuildInputs = nativeBuildInputs;
|
||||||
|
LD_LIBRARY_PATH = stdenv.lib.makeLibraryPath (buildInputs ++ nativeBuildInputs);
|
||||||
|
buildPhase = ''
|
||||||
|
HOME=$TMPDIR
|
||||||
|
mkdir -p $HOME/.nimble/pkgs
|
||||||
|
echo "[]" > $HOME/.nimble/packages_official.json
|
||||||
|
'' + toString (map (dep: ''
|
||||||
|
if [ -d ${dep}/.nimble ]; then
|
||||||
|
cp -R ${dep}/.nimble/pkgs $HOME/.nimble/
|
||||||
|
else
|
||||||
|
cp -R ${dep} $HOME/.nimble/pkgs/${dep.name}
|
||||||
|
fi
|
||||||
|
''
|
||||||
|
) nimDeps) + ''
|
||||||
|
nimble install
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir $out
|
||||||
|
nimbleDir=$TMPDIR/.nimble
|
||||||
|
if [ -d $nimbleDir/bin ]; then
|
||||||
|
cp -RL $nimbleDir/bin $out
|
||||||
|
fi
|
||||||
|
numberNimFiles=$(find $nimbleDir/pkgs/${name} -type f -name "*.nim" | wc -l)
|
||||||
|
numberDirectories=$(find $nimbleDir/pkgs/${name} -mindepth 1 -type d | wc -l)
|
||||||
|
if [ $numberNimFiles -gt 0 ] || [ $numberDirectories -gt 0 ]; then
|
||||||
|
mkdir -p $out/.nimble
|
||||||
|
cp -R $nimbleDir/pkgs $out/.nimble
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
diff --git a/gintro.nimble b/gintro.nimble
|
||||||
|
index 937984d..e4378bf 100644
|
||||||
|
--- a/gintro.nimble
|
||||||
|
+++ b/gintro.nimble
|
||||||
|
@@ -31,8 +31,6 @@ proc prep =
|
||||||
|
# quit("gintro: tmp directory already exists!")
|
||||||
|
mkDir(wd)
|
||||||
|
cd(wd)
|
||||||
|
- mkDir("ngtk3")
|
||||||
|
- cd("ngtk3")
|
||||||
|
|
||||||
|
cpFile(this / "tests" / "gen.nim", td / wd / "gen.nim")
|
||||||
|
cpFile(this / "tests" / "combinatorics.nim", td / wd / "combinatorics.nim")
|
||||||
|
@@ -40,6 +38,8 @@ proc prep =
|
||||||
|
cd(td)
|
||||||
|
cd(wd)
|
||||||
|
|
||||||
|
+ mkDir("oldgtk3")
|
||||||
|
+ cd("oldgtk3")
|
||||||
|
try:
|
||||||
|
exec("wget https://raw.githubusercontent.com/StefanSalewski/oldgtk3/master/oldgtk3/gobject.nim -O gobject.nim")
|
||||||
|
exec("wget https://raw.githubusercontent.com/StefanSalewski/oldgtk3/master/oldgtk3/glib.nim -O glib.nim")
|
||||||
|
@@ -57,6 +57,7 @@ proc prep =
|
||||||
|
echo "Nimgrab should be available in Nim/tools directory. You may compile it with 'nim c -d:ssl nimgrab.nim'"
|
||||||
|
echo "and put it into your search path"
|
||||||
|
echo "For the unlikely case that you have already full oldgtk3 package installed, we will just try to continue..."
|
||||||
|
+ cd("..")
|
||||||
|
|
||||||
|
exec("nim c gen.nim")
|
||||||
|
mkDir("nim_gi")
|
||||||
|
@@ -70,7 +71,6 @@ proc prep =
|
||||||
|
|
||||||
|
#task prepare, "preparing gintro":
|
||||||
|
before install:
|
||||||
|
-
|
||||||
|
echo "preparing gintro"
|
||||||
|
prep()
|
||||||
|
|
||||||
|
diff --git a/tests/gen.nim b/tests/gen.nim
|
||||||
|
index ef3becf..d13eab4 100644
|
||||||
|
--- a/tests/gen.nim
|
||||||
|
+++ b/tests/gen.nim
|
||||||
|
@@ -31,8 +31,8 @@
|
||||||
|
# This module is really ugly currently -- the first goal was to get a working gi solution
|
||||||
|
|
||||||
|
from os import `/`
|
||||||
|
-import gir
|
||||||
|
-import glib
|
||||||
|
+import oldgtk3/gir
|
||||||
|
+import oldgtk3/glib
|
||||||
|
import strutils
|
||||||
|
import sequtils
|
||||||
|
import streams
|
|
@ -0,0 +1,51 @@
|
||||||
|
{ stdenv, buildNimblePackage, fetchFromGitHub, glib, gobjectIntrospection,
|
||||||
|
gnome3, cairo, pango, librsvg, libnotify }:
|
||||||
|
|
||||||
|
let
|
||||||
|
oldgtk3 = buildNimblePackage rec {
|
||||||
|
name = "oldgtk3-${version}";
|
||||||
|
version = "0.1.0";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "StefanSalewski";
|
||||||
|
repo = "oldgtk3";
|
||||||
|
rev = "8ad4bc7e790c2c4b01eff9ff4f7d7ecc2cac25e3";
|
||||||
|
sha256 = "1kfv4cwgfygbxfgnsyzcwvy5l17082zx9vb9kc75zj27qhlq9ygd";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
in buildNimblePackage rec {
|
||||||
|
name = "gintro-${version}";
|
||||||
|
version = "0.4.17";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "StefanSalewski";
|
||||||
|
repo = "gintro";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "1cyif60611gig0r65zlgk15rvxyp00dddqcd9bc54xx3znxmygbv";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [ ./allow-preinstalled-oldgtk3.patch ];
|
||||||
|
|
||||||
|
nimDeps = [ oldgtk3 ];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
glib
|
||||||
|
gobjectIntrospection
|
||||||
|
gnome3.gdk_pixbuf
|
||||||
|
gnome3.gtk
|
||||||
|
gnome3.gtksourceview
|
||||||
|
gnome3.vte
|
||||||
|
cairo
|
||||||
|
pango
|
||||||
|
librsvg
|
||||||
|
libnotify
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "High level GObject-Introspection based GTK3 bindings for Nim language";
|
||||||
|
homepage = https://github.com/StefanSalewski/gintro;
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ lurchi ];
|
||||||
|
platforms = platforms.gnu ++ platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue