first commit
This commit is contained in:
commit
283911150a
|
@ -0,0 +1,38 @@
|
||||||
|
kind: pipeline
|
||||||
|
name: default
|
||||||
|
workspace:
|
||||||
|
base: /lewa
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: build ebook files
|
||||||
|
image: xena/pandoc
|
||||||
|
pull: always
|
||||||
|
commands:
|
||||||
|
- cd book/src && ./build.sh
|
||||||
|
volumes:
|
||||||
|
- name: book
|
||||||
|
path: /lewa/book
|
||||||
|
- name: build mdbook
|
||||||
|
image: xena/mdbook
|
||||||
|
pull: always
|
||||||
|
commands:
|
||||||
|
- cd book && mdbook build
|
||||||
|
volumes:
|
||||||
|
- name: book
|
||||||
|
path: /lewa/book
|
||||||
|
- name: build image
|
||||||
|
image: docker:dind
|
||||||
|
volumes:
|
||||||
|
- name: book
|
||||||
|
path: /lewa/book
|
||||||
|
- name: dockersock
|
||||||
|
path: /var/run/docker.sock
|
||||||
|
commands:
|
||||||
|
- sh -c 'docker build -t xena/lewa:$DRONE_COMMIT .'
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- name: book
|
||||||
|
temp: {}
|
||||||
|
- name: dockersock
|
||||||
|
host:
|
||||||
|
path: /var/run/docker.sock
|
|
@ -0,0 +1 @@
|
||||||
|
book
|
|
@ -0,0 +1,6 @@
|
||||||
|
[book]
|
||||||
|
authors = ["Christine Dodrill"]
|
||||||
|
language = "en"
|
||||||
|
multilingual = false
|
||||||
|
src = "src"
|
||||||
|
title = "L'ewa: A Personal Language"
|
|
@ -0,0 +1,4 @@
|
||||||
|
*.epub
|
||||||
|
*.mobi
|
||||||
|
*.pdf
|
||||||
|
test.tex
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Summary
|
||||||
|
|
||||||
|
- [Introduction](./intro/index.md)
|
||||||
|
- [L'ewa as a Diary Language](./intro/diary_language.md)
|
||||||
|
- [eBook Version](./intro/ebook.md)
|
||||||
|
- [Changelog](./intro/CHANGELOG.md)
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
FILES='
|
||||||
|
intro/index.md
|
||||||
|
intro/diary_language.md
|
||||||
|
intro/CHANGELOG.md
|
||||||
|
'
|
||||||
|
|
||||||
|
set -x
|
||||||
|
pandoc -o lewa.epub --epub-chapter-level=2 --resource-path=. title.md $FILES
|
||||||
|
pandoc -o test.tex -s --include-in-header sectionpagebreak.tex --variable=subparagraph --toc --toc-depth=2 --resource-path=. title.md $FILES
|
||||||
|
pandoc -o lewa.pdf --include-in-header sectionpagebreak.tex --variable=subparagraph --toc --toc-depth=2 --pdf-engine xelatex --resource-path=. title.md $FILES || exit
|
||||||
|
kindlegen lewa.epub
|
||||||
|
mkdir -p ../book
|
||||||
|
cp -vrf lewa.mobi ../book/
|
||||||
|
cp -vrf lewa.epub ../book/
|
||||||
|
cp -vrf lewa.pdf ../book/
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
## Changelog
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
### [Unreleased]
|
||||||
|
|
||||||
|
#### Added
|
||||||
|
|
||||||
|
- Initial setup and formatting
|
||||||
|
- First Section on introduction stuff
|
|
@ -0,0 +1,17 @@
|
||||||
|
## L'wea as A Diary Language
|
||||||
|
|
||||||
|
When I was younger, I used to keep a diary/journal file on my computers off and
|
||||||
|
on. I was detailed about what I was feeling and what I was considering and going
|
||||||
|
through. This all ended abruptly after my parents were snooping through my
|
||||||
|
computer in middle school and discovered that I was questioning fundamental
|
||||||
|
aspects of myself like my gender. I have never really felt comfortable keeping a
|
||||||
|
diary file since then. I have made a few attempts at this (including by using a
|
||||||
|
dedicated diary machine, air-gapped TempleOS machines and the like), but they
|
||||||
|
all feel too vulnerable and open for anyone to read them.
|
||||||
|
|
||||||
|
This is my logic for using a language that I create for myself. If people really
|
||||||
|
want to go through and take the time to learn the ins and outs of a tool I
|
||||||
|
created for myself to archive my personal thoughts, they probably deserve to be
|
||||||
|
able to read them. Otherwise, this would allow me to write my diary from pretty
|
||||||
|
much anywhere, even in plain sight out in public. People can't shoulder-surf and
|
||||||
|
read what they literally cannot understand.
|
|
@ -0,0 +1,7 @@
|
||||||
|
## eBook Edition
|
||||||
|
|
||||||
|
The following is the eBook edition of L'ewa: A Personal Language.
|
||||||
|
|
||||||
|
- [ePub (iBooks)](./lewa.epub)
|
||||||
|
- [Kindle](./lewa.mobi)
|
||||||
|
- [PDF](./lewa.pdf)
|
|
@ -0,0 +1,62 @@
|
||||||
|
# Introduction
|
||||||
|
|
||||||
|
I've been curious about how language works for a very long time. This curiosity
|
||||||
|
has lead me down many fascinating rabbit holes, but for a long time I have
|
||||||
|
either been cribbing off of other people's work or studying natural languages
|
||||||
|
that don't have a cohesive plan or core to them. [Constructed
|
||||||
|
Languages][conlangs] (or conlangs as I will probably be calling them from here
|
||||||
|
on out) are a simpler model of this. You might be familiar with
|
||||||
|
[Klingon][tlhnganhol] from the Star Trek series, the [various forms of
|
||||||
|
Elvish][elvish] as described by J. R. R. Tolkien or [Dothraki][dothraki] from
|
||||||
|
Game of Thrones. This series will show an example of how one of those kinds of
|
||||||
|
languages are created.
|
||||||
|
|
||||||
|
[conlangs]: https://en.wikipedia.org/wiki/Constructed_language
|
||||||
|
[tlhnganhol]: https://en.wikipedia.org/wiki/Klingon_language
|
||||||
|
[elvish]: https://en.wikipedia.org/wiki/Elvish_languages
|
||||||
|
[dothraki]: https://en.wikipedia.org/wiki/Dothraki_language
|
||||||
|
|
||||||
|
Recently a challenge came up on [/r/conlangs][rconlangs] called
|
||||||
|
[ReConLangMo][reconlangmo] and I've decided to take a stab at this and flesh
|
||||||
|
this out into a [personal language][perslang].
|
||||||
|
|
||||||
|
[rconlangs]: https://www.reddit.com/r/conlangs/
|
||||||
|
[reconlangmo]: https://www.reddit.com/r/conlangs/comments/gbgvu0/reconlangmo_2020/
|
||||||
|
[perslang]: https://en.wikipedia.org/wiki/Artistic_language#Personal_languages
|
||||||
|
|
||||||
|
## L'ewa Overview
|
||||||
|
|
||||||
|
The language I am going to create will be called L'ewa (⁄l.ʔɛ.wa⁄, also
|
||||||
|
romanized `lewa` for filesystems). This word is identical in English and in L'ewa.
|
||||||
|
It means "is a language". The name came to me in a shower a while ago and I'm
|
||||||
|
not entirely sure where it came from.
|
||||||
|
|
||||||
|
This language is being designed as a personal language to help me keep a diary
|
||||||
|
(more on that later) and to act as a testbed for writing a computational
|
||||||
|
knowledge engine, much like IBM's Watson. I do not expect anyone else to use
|
||||||
|
this language. I may pull this language into fiction (if that ever gets off the
|
||||||
|
ground) or into other projects as it makes sense.
|
||||||
|
|
||||||
|
Some of the high level things I want to try in this language are ways to make me
|
||||||
|
think differently. I'm following the weak form of the [Sapir-Whorf
|
||||||
|
hypothesis][sapirwhorf] by this logic. I want to see what would happen if I give
|
||||||
|
myself a tool that I can use to help myself think in different ways. Other
|
||||||
|
features I plan to include are:
|
||||||
|
|
||||||
|
[sapirwhorf]: https://en.wikipedia.org/wiki/Linguistic_relativity
|
||||||
|
|
||||||
|
- A [seximal][seximal] number system
|
||||||
|
- A predicate-argument system similar to [Lojban][lojban]
|
||||||
|
- Nounlessness (only having verbs for content words) like [Salishan][salishan]
|
||||||
|
languages
|
||||||
|
- An [a-priori][apriori] (or made up) vocabulary
|
||||||
|
- Grammatical markers for the identity of the thinker of a sentence/phrase/word
|
||||||
|
- Make each grammatical feature and word logical, or working in one way only
|
||||||
|
- Typeable with standard QWERTY en-US keyboards
|
||||||
|
- A decorative script that I'll turn into a font
|
||||||
|
|
||||||
|
[seximal]: https://www.seximal.net
|
||||||
|
[lojban]: https://lojban.pw/cll/uncll-1.2.6/xhtml_section_chunks/chapter-tour.html#section-bridi
|
||||||
|
[salishan]: https://en.wikipedia.org/wiki/Salishan_languages
|
||||||
|
[apriori]: https://en.wikipedia.org/wiki/Constructed_language#A_priori_and_a_posteriori_languages
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
\usepackage{titlesec}
|
||||||
|
|
||||||
|
\titleclass{\section}{top}
|
||||||
|
\newcommand\sectionbreak{\pagebreak}
|
||||||
|
|
||||||
|
\usepackage[letterpaper]{geometry}
|
||||||
|
\geometry{top=1.0in, bottom=1.0in, left=1.0in, right=1.0in}
|
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
title: "L'ewa: A Personal Language"
|
||||||
|
author: Christine Dodrill
|
||||||
|
rights: All Rights Reserved
|
||||||
|
language: en-US
|
||||||
|
|
||||||
|
links-as-notes: true
|
||||||
|
toc-depth: 2
|
||||||
|
fontfamily: noto-serif
|
||||||
|
abstract: |
|
||||||
|
A personal language for use in linguistics research and for a diary.
|
||||||
|
---
|
|
@ -0,0 +1,20 @@
|
||||||
|
{ fetchurl, stdenv }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "dyson";
|
||||||
|
version = "0.1.1";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url =
|
||||||
|
"https://xena.greedo.xeserv.us/files/${name}-linux-amd64-0.1.0.tgz";
|
||||||
|
sha256 = "08c6md2cfi5g91h23ydg5z14lkq252cdqd41x269mwk19q89nmna";
|
||||||
|
};
|
||||||
|
|
||||||
|
phases = "installPhase";
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
tar xf $src
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp ${name}-linux-amd64-${version}/${name} $out/bin
|
||||||
|
'';
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"niv": {
|
||||||
|
"branch": "master",
|
||||||
|
"description": "Easy dependency management for Nix projects",
|
||||||
|
"homepage": "https://github.com/nmattia/niv",
|
||||||
|
"owner": "nmattia",
|
||||||
|
"repo": "niv",
|
||||||
|
"rev": "f73bf8d584148677b01859677a63191c31911eae",
|
||||||
|
"sha256": "0jlmrx633jvqrqlyhlzpvdrnim128gc81q5psz2lpp2af8p8q9qs",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/nmattia/niv/archive/f73bf8d584148677b01859677a63191c31911eae.tar.gz",
|
||||||
|
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"branch": "nixos-19.09",
|
||||||
|
"description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to",
|
||||||
|
"homepage": "https://github.com/NixOS/nixpkgs",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs-channels",
|
||||||
|
"rev": "a7ceb2536ab11973c59750c4c48994e3064a75fa",
|
||||||
|
"sha256": "0hka65f31njqpq7i07l22z5rs7lkdfcl4pbqlmlsvnysb74ynyg1",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/NixOS/nixpkgs-channels/archive/a7ceb2536ab11973c59750c4c48994e3064a75fa.tar.gz",
|
||||||
|
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,134 @@
|
||||||
|
# This file has been generated by Niv.
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
#
|
||||||
|
# The fetchers. fetch_<type> fetches specs of type <type>.
|
||||||
|
#
|
||||||
|
|
||||||
|
fetch_file = pkgs: spec:
|
||||||
|
if spec.builtin or true then
|
||||||
|
builtins_fetchurl { inherit (spec) url sha256; }
|
||||||
|
else
|
||||||
|
pkgs.fetchurl { inherit (spec) url sha256; };
|
||||||
|
|
||||||
|
fetch_tarball = pkgs: spec:
|
||||||
|
if spec.builtin or true then
|
||||||
|
builtins_fetchTarball { inherit (spec) url sha256; }
|
||||||
|
else
|
||||||
|
pkgs.fetchzip { inherit (spec) url sha256; };
|
||||||
|
|
||||||
|
fetch_git = spec:
|
||||||
|
builtins.fetchGit { url = spec.repo; inherit (spec) rev ref; };
|
||||||
|
|
||||||
|
fetch_builtin-tarball = spec:
|
||||||
|
builtins.trace
|
||||||
|
''
|
||||||
|
WARNING:
|
||||||
|
The niv type "builtin-tarball" will soon be deprecated. You should
|
||||||
|
instead use `builtin = true`.
|
||||||
|
|
||||||
|
$ niv modify <package> -a type=tarball -a builtin=true
|
||||||
|
''
|
||||||
|
builtins_fetchTarball { inherit (spec) url sha256; };
|
||||||
|
|
||||||
|
fetch_builtin-url = spec:
|
||||||
|
builtins.trace
|
||||||
|
''
|
||||||
|
WARNING:
|
||||||
|
The niv type "builtin-url" will soon be deprecated. You should
|
||||||
|
instead use `builtin = true`.
|
||||||
|
|
||||||
|
$ niv modify <package> -a type=file -a builtin=true
|
||||||
|
''
|
||||||
|
(builtins_fetchurl { inherit (spec) url sha256; });
|
||||||
|
|
||||||
|
#
|
||||||
|
# Various helpers
|
||||||
|
#
|
||||||
|
|
||||||
|
# The set of packages used when specs are fetched using non-builtins.
|
||||||
|
mkPkgs = sources:
|
||||||
|
let
|
||||||
|
sourcesNixpkgs =
|
||||||
|
import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) {};
|
||||||
|
hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath;
|
||||||
|
hasThisAsNixpkgsPath = <nixpkgs> == ./.;
|
||||||
|
in
|
||||||
|
if builtins.hasAttr "nixpkgs" sources
|
||||||
|
then sourcesNixpkgs
|
||||||
|
else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then
|
||||||
|
import <nixpkgs> {}
|
||||||
|
else
|
||||||
|
abort
|
||||||
|
''
|
||||||
|
Please specify either <nixpkgs> (through -I or NIX_PATH=nixpkgs=...) or
|
||||||
|
add a package called "nixpkgs" to your sources.json.
|
||||||
|
'';
|
||||||
|
|
||||||
|
# The actual fetching function.
|
||||||
|
fetch = pkgs: name: spec:
|
||||||
|
|
||||||
|
if ! builtins.hasAttr "type" spec then
|
||||||
|
abort "ERROR: niv spec ${name} does not have a 'type' attribute"
|
||||||
|
else if spec.type == "file" then fetch_file pkgs spec
|
||||||
|
else if spec.type == "tarball" then fetch_tarball pkgs spec
|
||||||
|
else if spec.type == "git" then fetch_git spec
|
||||||
|
else if spec.type == "builtin-tarball" then fetch_builtin-tarball spec
|
||||||
|
else if spec.type == "builtin-url" then fetch_builtin-url spec
|
||||||
|
else
|
||||||
|
abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}";
|
||||||
|
|
||||||
|
# Ports of functions for older nix versions
|
||||||
|
|
||||||
|
# a Nix version of mapAttrs if the built-in doesn't exist
|
||||||
|
mapAttrs = builtins.mapAttrs or (
|
||||||
|
f: set: with builtins;
|
||||||
|
listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set))
|
||||||
|
);
|
||||||
|
|
||||||
|
# fetchTarball version that is compatible between all the versions of Nix
|
||||||
|
builtins_fetchTarball = { url, sha256 }@attrs:
|
||||||
|
let
|
||||||
|
inherit (builtins) lessThan nixVersion fetchTarball;
|
||||||
|
in
|
||||||
|
if lessThan nixVersion "1.12" then
|
||||||
|
fetchTarball { inherit url; }
|
||||||
|
else
|
||||||
|
fetchTarball attrs;
|
||||||
|
|
||||||
|
# fetchurl version that is compatible between all the versions of Nix
|
||||||
|
builtins_fetchurl = { url, sha256 }@attrs:
|
||||||
|
let
|
||||||
|
inherit (builtins) lessThan nixVersion fetchurl;
|
||||||
|
in
|
||||||
|
if lessThan nixVersion "1.12" then
|
||||||
|
fetchurl { inherit url; }
|
||||||
|
else
|
||||||
|
fetchurl attrs;
|
||||||
|
|
||||||
|
# Create the final "sources" from the config
|
||||||
|
mkSources = config:
|
||||||
|
mapAttrs (
|
||||||
|
name: spec:
|
||||||
|
if builtins.hasAttr "outPath" spec
|
||||||
|
then abort
|
||||||
|
"The values in sources.json should not have an 'outPath' attribute"
|
||||||
|
else
|
||||||
|
spec // { outPath = fetch config.pkgs name spec; }
|
||||||
|
) config.sources;
|
||||||
|
|
||||||
|
# The "config" used by the fetchers
|
||||||
|
mkConfig =
|
||||||
|
{ sourcesFile ? ./sources.json
|
||||||
|
, sources ? builtins.fromJSON (builtins.readFile sourcesFile)
|
||||||
|
, pkgs ? mkPkgs sources
|
||||||
|
}: rec {
|
||||||
|
# The sources, i.e. the attribute set of spec name to spec
|
||||||
|
inherit sources;
|
||||||
|
|
||||||
|
# The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
|
||||||
|
inherit pkgs;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
mkSources (mkConfig {}) // { __functor = _: settings: mkSources (mkConfig settings); }
|
|
@ -0,0 +1,21 @@
|
||||||
|
let
|
||||||
|
pkgs = import <nixpkgs> { };
|
||||||
|
nur = import (builtins.fetchTarball
|
||||||
|
"https://github.com/nix-community/NUR/archive/master.tar.gz") {
|
||||||
|
inherit pkgs;
|
||||||
|
};
|
||||||
|
dyson = pkgs.callPackage ./nix/dyson.nix { };
|
||||||
|
tex = with pkgs;
|
||||||
|
texlive.combine { inherit (texlive) scheme-medium noto titlesec; };
|
||||||
|
in pkgs.mkShell {
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
dyson
|
||||||
|
kindlegen
|
||||||
|
kubectl
|
||||||
|
kubectx
|
||||||
|
mdbook
|
||||||
|
nur.repos.mic92.pandoc-bin
|
||||||
|
tex
|
||||||
|
nur.repos.xe.zathura
|
||||||
|
];
|
||||||
|
}
|
Loading…
Reference in New Issue