Update the readme for v4
This commit is contained in:
parent
2a4333de0c
commit
12810a8553
106
README.org
106
README.org
|
@ -1,66 +1,82 @@
|
|||
* Future Gadgets 42
|
||||
*FG42* is a framework to create and editor and window manager based on *GNU/Emacs*. It has
|
||||
a pre-defined setup as well which can be installed out of the box. But the goal of this
|
||||
project is to provide the API necessary to create an integrated editor.
|
||||
|
||||
So you need to know about Emacs in advance.
|
||||
*FG42* is an Emacs based editor that utilizes [[https://nixos.org/][Nix]], and shipped preconfigured. While it
|
||||
is the Emacs that you love :heart:, it breaks the tradition by not using any of Emace's
|
||||
package managers (More on that later). It provides a self-contained program and
|
||||
contains all the runtime dependencies including Emacs itself.
|
||||
|
||||
** Requirements
|
||||
In order to use *FG42* you need *Emacs >= 27.1* and the =texinfo= package. If you're on a
|
||||
debian based distro you can install it using =apt install texinfo=.
|
||||
|
||||
** Install from source
|
||||
In order to install *FG42*, issue the following commands:
|
||||
The only requirement to install *FG42*, is [[https://nixos.org/][Nix]]. If you don't use Nix, try it today.
|
||||
It's amazing.
|
||||
|
||||
** Installation
|
||||
If you're using Nix (and not NixOS), then you can install *FG42* like:
|
||||
#+BEGIN_SRC bash
|
||||
# Install emacs, make and texinfo
|
||||
# clone the FG42 repository in ~/.fg42 directory
|
||||
$ git clone https://devheroes.codes/FG42/FG42.git ~/.fg42/
|
||||
# You can clone it where ever your want
|
||||
$ cd ~/.fg42/
|
||||
$ make install
|
||||
# Run fg42, It will download and build some lisp dependencies on the first execution.
|
||||
$ fg42
|
||||
# Install emacs, make and texinfo
|
||||
$ nix profile install "git+https://devheroes.codes/FG42/FG42#"
|
||||
|
||||
# Or via nix build like:
|
||||
nix build "git+https://devheroes.codes/FG42/FG42#"
|
||||
#+END_SRC
|
||||
|
||||
Since the installer script uses =sudo=, during the installation process,
|
||||
you'll have to enter your password. Make sure that you're user account has
|
||||
a =sudo= access.
|
||||
If you're using NixOS or HomeManager you can use *FG42* as an input
|
||||
to your flake. If your not using flakes, I'm pretty sure you know
|
||||
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
|
||||
After installation there would be a file at =~/.fg42.el= which is the user specific
|
||||
configuration of *FG42*. You can configure your copy of *FG42* using this file.
|
||||
Also you can generally use this file to configure Emacs as well.
|
||||
FG42 comes pre-configured, but if you need to add your own configuration you can
|
||||
do it in =~/.fg42.el=.
|
||||
|
||||
** Terms & Concepts
|
||||
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
|
||||
** Flags
|
||||
TBD
|
||||
|
||||
** Debugging
|
||||
If you ran into an issue and want to debug FG42, the best and easiest way is to turn on
|
||||
debugging by uncommenting =(setq debug-on-error t)= in your configuration (=~/.fg42.el=)
|
||||
and restarting FG42. After that you'll get a traceback for any exception in FG42.
|
||||
Debugging is *OFF* by default in *FG42*. You can turn it on by setting the ~FG42_DEBUG~
|
||||
environment variable to ~1~.
|
||||
|
||||
** 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
|
||||
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
|
||||
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.
|
||||
|
|
Loading…
Reference in New Issue