Skip to content

Instantly share code, notes, and snippets.

View GeorgesAlkhouri's full-sized avatar
🚩

Georges GeorgesAlkhouri

🚩
View GitHub Profile
{
inputs = {
nixpkgs.url = "github:cachix/devenv-nixpkgs/rolling";
systems.url = "github:nix-systems/default";
devenv.url = "github:cachix/devenv";
devenv.inputs.nixpkgs.follows = "nixpkgs";
};
nixConfig = {
extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=";
{"inkVersion":21,"root":[[{"->":"start"},["done",{"#f":5,"#n":"g-0"}],null],"done",{"checkMind":["ev",{"VAR?":"mind"},5,">","/ev","~ret",{"#f":1}],"checkForce":["ev",{"VAR?":"force"},5,">","/ev","~ret",{"#f":1}],"start":[["^You roam around, looking for a suitable sinkhole to break some minerals from the rock. As you discover an old path that leads further up into the more sloping regions of the mountain.","\n","ev","str","^I could follow this path and find out where it leads.","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^I'd rather stay at this altitude, mining minerals is easier here","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["^ ","\n","ev",{"f()":"checkMind"},"/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"path_positive"},{"->":".^.^.^.7"},null]}],[{"->":".^.b"},{"b":["\n",{"->":"path_negative"},{"->":".^.^.^.7"},null]}],"nop","\n",{"#f":5}],"c-1":["\n","ev",{"f()":"checkForce"},"/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"pit_positive"},{"->":".^.^.^.6"},null]}],[{"->":".^.b"},{"b":["\n",{"->":"
{"inkVersion":21,"root":[["^You roam around, searching for a suitable pit to break some minerals from the rock. As you discover an old trail leading further into the steeper regions of the mountain.","\n","ev","str","^ \"I could follow this trail and find out where it leads.\"","/str","/ev",{"*":"0.c-0","flg":20},"ev","str","^\"I prefer to stay at this altitude; mining minerals here is easier.\"","/str","/ev",{"*":"0.c-1","flg":20},{"c-0":["^ ",{"->":"path"},"\n",{"->":"0.g-0"},{"#f":5}],"c-1":["^ ",{"->":"pit"},"\n","end",{"->":"0.g-0"},{"#f":5}],"g-0":["done",{"#f":5}]}],"done",{"path":["^Time and weather have taken a toll on the path, which winds clumsily up the mountain. Sometimes it disappears under rubble or briefly loses itself at a cliff edge. But you can always rediscover it.","\n","^The ascent is arduous, but would have been impossible without the old path. After a while, you reach a wind-sculpted plateau of stone. You cannot discern the purpose this place once served, but before you lies a marvelou
@GeorgesAlkhouri
GeorgesAlkhouri / test.json
Created February 12, 2024 12:24
Test Story
{"inkVersion":21,"root":[["#","^Player.Dex + Player.Strength > RAND(10,20) AND Player.Inv.Wood > 20","/#","#","^REMOVE Items.Potion FROM Player.Inventory\"","/#","#","^ADD Traits.DoubleMovement TO Player FOR 10m","/#",{"->":"Start"},["done",{"#f":5,"#n":"g-0"}],null],"done",{"Start":[["#","^Key NOT IN Egon.Inventory","/#","^Egons Abenteur beginnt als er den Turm betritt. Vor ihm eröffnet sich ein großer Raum, mit einem versta bDgubten Altar. Eine Treppe führt in das obere Stockwerk, eine Luke führt, weiß Gott wohin.","\n","ev","str","^Los Egon, untersuch den 😁 Altar! ","#","^Key NOT IN Egon.Inventory ","/#","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Egon, schau mal lieber im oberen Stockwerk nach!","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^Ich find Egon sollte die Luke öffnen.","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["^ ",{"->":"deraltar"},"\n",{"#f":5}],"c-1":["^ ",{"->":"DasobereStockwerk"},"\n",{"#f":5}],"c-2":["^ ",{"->":"dieluke"},"\n",{"#f":5}]}],{"#f":1}],"start2":[["^Egon betritt erne
{
"id": "test_dialogs",
"schema_version": 1,
"other_dialogs": {
"middle": {
"id": "middle",
"header": "The Editor",
"text": "This Dialog Sequence was made using the WIN95 Dialog Editor programmed by Ibrahim Roskow.",
"select_min_values": 1,
"select_max_values": 1,
{
"id": "test_1",
"schema_version": 1,
"start": {
"id": "start",
"header": "Du bist tot",
"options": [
{
"id": "option-1",
"header": "Ok",
{
"id": "test_dialogs",
"schema_version": 1,
"start": {
"id": "start",
"header": "Big Sword",
"text": "Roll your dice, to get the big great sword!",
"image": null,
"select_placeholder": "Choose...",
"select_max_values": 1,
#### Business Logic
from typing import Protocol, TypeVar
# make type variable contravariant in UserStore protocol to allow for more specific types
T = TypeVar("T", contravariant=True)
C = TypeVar("C", contravariant=True)
@GeorgesAlkhouri
GeorgesAlkhouri / cheatsheet.md
Last active January 13, 2025 19:23
Nix store and dependencies management cheat sheet

Nix Fonts without NixOS

Create the local fontconfig directory mkdir -p ~/.config/fontconfig/conf.d/

Create a file in that directory for the Nix fonts

cat << EOF > ~/.config/fontconfig/conf.d/10-nix-fonts.conf
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
@GeorgesAlkhouri
GeorgesAlkhouri / shell.nix
Created August 19, 2022 06:59
Python development environment via nix-shell and pip
{pkgs ? import <nixpkgs> {}}: let
myPython = pkgs.python37;
pythonWithPkgs = myPython.withPackages (pythonPkgs:
with pythonPkgs; [
pip
setuptools
wheel
]);