summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraethrvmn <me@aethrvmn.gr>2025-11-11 00:17:15 +0000
committeraethrvmn <me@aethrvmn.gr>2025-11-11 00:17:15 +0000
commitfe6431180841d5f8450123929f264690a924918a (patch)
tree7176a5892ce60ac6767c119836dca4057637f59c
parentnew blog post (diff)
added neofetch imageHEADmaster
-rw-r--r--content/blog/package-manager.md4
-rw-r--r--static/images/mosaic.jpgbin0 -> 2500653 bytes
2 files changed, 3 insertions, 1 deletions
diff --git a/content/blog/package-manager.md b/content/blog/package-manager.md
index 358e3f5..061c2f0 100644
--- a/content/blog/package-manager.md
+++ b/content/blog/package-manager.md
@@ -20,6 +20,8 @@ In any case, `wget` is important because it is both how we will access the sourc
Very importantly, and before we get into the weeds, let us change the distribution name from `Linux From Scratch` to `mosaic`, and the codename to `ravenna`. Let us also import a draft ascii logo and call neofetch (neofetch is a bash script, so its super easy to install)
+![mosaic neofetch](/images/mosaic.jpg)
+
Now that LFS is installed, the first thing that a package manager should do is maintain itself, as well as the system. This will also allow me to build the skeleton of what the package manager will be. In my case, this means that I first started with building `git`, which would allow me to sync and keep track of my progress. This also "forced me" to come up immediately with the package definition scheme.
Nim's power for this specific usecase is, as mentioned before, its powerful metaprogramming via macros (soon to be compiler plugins in nim 3), meaning that we can replicate and even simplify the package definitions for Arch Linux (`PKGBUILD`), or Alpine (`APKBUILD`). Let's see how a package is defined.
@@ -78,7 +80,7 @@ Simple huh? We have declaratively defined everything needed to build `git`. But
- `build: seq[string]`
- `result: string`
-and which, at compile time, unwraps into an iterative process. For anyone interested, lapis, the DSL definition is found [here](https://code.aethrvmn.gr/mosaic/tessera.git)[^3]. Suffice to say, it is my first take at a macro, and this is, once again, pre-alpha, so it will hopefully get better with time.
+and which, at compile time, unwraps into an iterative process. For anyone interested, lapis, the DSL definition is found [here](https://code.aethrvmn.gr/mosaic/tesserae.git)[^3]. Suffice to say, it is my first take at a macro, and this is, once again, pre-alpha, so it will hopefully get better with time.
Now that `git` is here, all we need to do is to follow the `dependencies` tree, in order to define evey package that `git` needs[^4], as per the BLFS book, and create a tessera for each.
diff --git a/static/images/mosaic.jpg b/static/images/mosaic.jpg
new file mode 100644
index 0000000..e66fd06
--- /dev/null
+++ b/static/images/mosaic.jpg
Binary files differ
Directive (EU) 2019/790, Article 4(3); all rights regarding Text and Data Mining (TDM) are reserved.