Update the readme for v4

This commit is contained in:
Sameer Rahmani 2024-04-10 22:39:33 +01:00
parent 2a4333de0c
commit 12810a8553
Signed by: lxsameer
GPG Key ID: 8741FACBF412FFA5
1 changed files with 61 additions and 45 deletions

View File

@ -1,66 +1,82 @@
* Future Gadgets 42 * Future Gadgets 42
*FG42* is a framework to create and editor and window manager based on *GNU/Emacs*. It has *FG42* is an Emacs based editor that utilizes [[https://nixos.org/][Nix]], and shipped preconfigured. While it
a pre-defined setup as well which can be installed out of the box. But the goal of this is the Emacs that you love :heart:, it breaks the tradition by not using any of Emace's
project is to provide the API necessary to create an integrated editor. package managers (More on that later). It provides a self-contained program and
contains all the runtime dependencies including Emacs itself.
So you need to know about Emacs in advance.
** Requirements ** Requirements
In order to use *FG42* you need *Emacs >= 27.1* and the =texinfo= package. If you're on a The only requirement to install *FG42*, is [[https://nixos.org/][Nix]]. If you don't use Nix, try it today.
debian based distro you can install it using =apt install texinfo=. It's amazing.
** Install from source
In order to install *FG42*, issue the following commands:
** Installation
If you're using Nix (and not NixOS), then you can install *FG42* like:
#+BEGIN_SRC bash #+BEGIN_SRC bash
# Install emacs, make and texinfo # Install emacs, make and texinfo
# clone the FG42 repository in ~/.fg42 directory $ nix profile install "git+https://devheroes.codes/FG42/FG42#"
$ git clone https://devheroes.codes/FG42/FG42.git ~/.fg42/
# You can clone it where ever your want # Or via nix build like:
$ cd ~/.fg42/ nix build "git+https://devheroes.codes/FG42/FG42#"
$ make install
# Run fg42, It will download and build some lisp dependencies on the first execution.
$ fg42
#+END_SRC #+END_SRC
Since the installer script uses =sudo=, during the installation process, If you're using NixOS or HomeManager you can use *FG42* as an input
you'll have to enter your password. Make sure that you're user account has to your flake. If your not using flakes, I'm pretty sure you know
a =sudo= access. what you are doing so I leave it to your experience.
#+BEGIN_SRC nix
{
description = "Exmaple flake";
inputs = {
fg42.url = "git+https://devheroes.codes/FG42/FG42";
};
outputs = { self, fg42, ... } @ inputs:
let
# I just use linux and currently only x86_64
system = "x86_64-linux";
# Grab the default package of FG42
fg42 = fg42.outputs.packages.${system}.default;
in {
# Now you can use the 'fg42' package in your package list
....
};
}
#+END_SRC
After installing *FG42* you should be able to start the default editor via =fg42= script.
The very first time that you start =fg42= it will download all the necessary packages to
operate, so it will take a while for all the packages to install. You can tell when it is
finished by a message in the minibuffer and the fact that the look of emacs changes.
Enjoy using **FG42** ;)
** Configuration ** Configuration
After installation there would be a file at =~/.fg42.el= which is the user specific FG42 comes pre-configured, but if you need to add your own configuration you can
configuration of *FG42*. You can configure your copy of *FG42* using this file. do it in =~/.fg42.el=.
Also you can generally use this file to configure Emacs as well.
** Terms & Concepts ** Flags
FG42 introduced some new features to the Vanilla *Gnu/Emacs*. So you migh encounter several of these features during your
journey. It's a good idea to at least know what you're dealing with.
*** Cubes
*FG42*'s design is very similar to *Gentoo*. The abstraction unit of functionality in FG42
is a **Cube**. Cubes are function like entities that you can call in order to activate them.
They get activated just once and multiple calls don't have any effect on them.
*** Flags
** Documentation
TBD TBD
** Debugging ** Debugging
If you ran into an issue and want to debug FG42, the best and easiest way is to turn on Debugging is *OFF* by default in *FG42*. You can turn it on by setting the ~FG42_DEBUG~
debugging by uncommenting =(setq debug-on-error t)= in your configuration (=~/.fg42.el=) environment variable to ~1~.
and restarting FG42. After that you'll get a traceback for any exception in FG42.
** what's with the name?
** FAQ
*** Why Nix? Have you tried Emacsian package manager?
Yes we tried many of them. We started by a manual solution that the name ~fpkg~ remains
as remembrance of that effort. We moved to [[https://github.com/dimitri/el-get][el-get]], then [[https://github.com/cask/cask][Cask]], [[https://github.com/emacs-eldev/eldev][ElDev]] and finally we
landed on [[https://github.com/radian-software/straight.el][straight.el]] on ~V3~. But none of the provided the stability that we need.
But on ~V4~ (Current version), We've change the approach by disabling all the package managers
(don't worry you can still use them if you want to) and used *Nix* to manage everything. Both
elisp dependencies and system dependencies. This way we get reproducible builds that gives
us stability and reliability. Also we get to pin every single dependency version even Emacs
itself. So no more ":shrug: But it works on my computer".
*** what's with the name?
I'm a huge fan of [Steins Gate](https://en.wikipedia.org/wiki/Steins;Gate) anime and I follow its I'm a huge fan of [Steins Gate](https://en.wikipedia.org/wiki/Steins;Gate) anime and I follow its
naming convensions on *Future Gadgets 42*. naming convensions on *Future Gadgets 42*.
** Why we moved from Github ? *** Why we moved from Github ?
We're not happy with Microsoft buying Github and we don't trust a company like Microsoft because of their history and We're not happy with Microsoft buying Github and we don't trust a company like Microsoft because of their history and
their strategies (For more information take a look at [[https://en.wikipedia.org/wiki/Halloween_documents][Halloween documents]]. their strategies (For more information take a look at [[https://en.wikipedia.org/wiki/Halloween_documents][Halloween documents]].
So we decided to move to Devheroes as an alternative and we are happy here so far. So we decided to move to Devheroes as an alternative and we are happy here so far.