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'>| { | |
| 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 |
| {"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) | |
| {pkgs ? import <nixpkgs> {}}: let | |
| myPython = pkgs.python37; | |
| pythonWithPkgs = myPython.withPackages (pythonPkgs: | |
| with pythonPkgs; [ | |
| pip | |
| setuptools | |
| wheel | |
| ]); |