Files
bed/flake.nix
T
2026-07-27 06:56:01 +01:00

119 lines
2.3 KiB
Nix

{
description = "Crib - An IDE.";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
self.submodules = true;
};
outputs =
{ nixpkgs, ... }:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system}.pkgsStatic;
hostPkgs = nixpkgs.legacyPackages.${system};
mruby = pkgs.stdenv.mkDerivation {
pname = "mruby";
version = "0.0.1";
src = pkgs.lib.cleanSourceWith {
src = ./libs;
name = "mruby-src";
};
patches = [
./libs/changes.patch
];
nativeBuildInputs = with hostPkgs; [
ruby
gnumake
];
buildPhase = ''
cd mruby
rake
'';
installPhase = ''
mkdir -p $out
cp -r build/host/lib $out/lib
cp -r build/host/include $out/include
mkdir -p $out/bin
cp build/host/bin/mrbc $out/bin/mrbc
'';
};
crib = pkgs.stdenv.mkDerivation {
pname = "crib";
version = "0.1.0";
src = ./.;
nativeBuildInputs = with hostPkgs; [
pkg-config
gnumake
xxd
bash
];
buildInputs = with pkgs; [
libgrapheme
pcre2
mruby
];
buildPhase = ''
make \
MRBC=${mruby}/bin/mrbc \
MRUBY_CFLAGS=-I${mruby}/include \
MRUBY_LIBS=-L${mruby}/lib -lmruby
'';
installPhase = ''
mkdir -p $out/bin
cp bin/crib $out/bin/crib
'';
};
in
{
packages.${system} = {
default = crib;
crib = crib;
mruby = mruby;
};
devShells.${system}.default = pkgs.mkShell {
inputsFrom = [ crib ];
packages = [
hostPkgs.clang-tools
hostPkgs.pkg-config
hostPkgs.ccache
hostPkgs.gnumake
hostPkgs.bear
hostPkgs.ruby
hostPkgs.xxd
hostPkgs.gdb
hostPkgs.binutils
pkgs.libgrapheme
pkgs.pcre2
];
shellHook = ''
export CC="ccache $CC"
export CXX="ccache $CXX"
export MRBC=${mruby}/bin/mrbc
export MRUBY_CFLAGS=-I${mruby}/include
export MRUBY_LIBS="-L${mruby}/lib -lmruby"
'';
};
};
}