diff --git a/README.org b/README.org index 4e5de7c..02877f5 100644 --- a/README.org +++ b/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.