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
|
* 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.
|
||||||
|
|
Loading…
Reference in New Issue