You are not logged in.

#1 2017-12-04 05:28:18

sdellysse
Member
Registered: 2009-12-15
Posts: 33

effuvv: functional arch linux system management (formerly farch)

From the README:

effuvv stands for "functional arch". It allows (and requires) you to express your arch linux installation in the terms of a function of a configuration. Essentially, you have a set of configuration files that you would normally edit, such as /effuvv/etc/fstab and /effuvv/etc/default/grub, and a main config file, /effuvv/effuvv_config.js that specifies how everything should be bound together, and a tool, effuvv-sync, that makes sure the system reflects your configuration.

effuvv is heavily inspired by NixOS in that the running system becomes a function of your system configuration. You no longer have to ever question which part of your /etc folder is from pacman or from yourself or a mixture of the two. You no longer have to deal with not knowing where an installed package came from.

Beyond these basic questions, it allows you to orchestrate your system in a way you've never had the chance before on arch. Instead of mutating the system, you tell effuvv how you want your system to be and it makes it happen.

effuvv covers these system administration topics:

  • package management

  • service management

  • configuration file management

  • users management

A more complete description of the tooling, along with tutorial and examples, are in the github link below

WARNING this stuff is super alpha. I run it on my own machines and it works fine but who knows it might microwave your chinchilla

github: https://github.com/shawndellysse/effuvv

EDIT: renamed from farch -> effuvv

Last edited by sdellysse (2017-12-12 06:01:36)

Offline

#2 2017-12-04 07:22:46

Head_on_a_Stick
Member
From: London
Registered: 2014-02-20
Posts: 7,680
Website

Re: effuvv: functional arch linux system management (formerly farch)

I think all of the configuration performed by farch can be done with a PKGBUILD instead.

For example: https://github.com/Earnestly/pkgbuilds/ … g/PKGBUILD

Offline

#3 2017-12-04 15:35:24

sdellysse
Member
Registered: 2009-12-15
Posts: 33

Re: effuvv: functional arch linux system management (formerly farch)

That's true, PKGBUILDs are just shell scripts so you can do pretty much anything with them.

farch does a bit more than just install the files, it has some intelligence to determine to install the file only if the file in the configuration has changed, allowing you to hook other functionality, like only rebuilding your initramfs when /etc/mkinitcpio.conf changes

farch also has a bunch more features than just being a file installer, it manages systemd services, it takes your package list and not only installs what's missing but uninstalls anything that managed to slip in. Example, you decide to switch from firefox to chrome, just delete the firefox line from the packages list and add chromium in there, the system will install chromium and uninstall firefox for you. The real boon of farch is the mental model: don't tell it what to do, tell it what you want.

Obviously, the model isn't perfect. there are places where you're telling the system to, for example, rebuild the grub config. but since this is reactive to files being changed, I feel it's a worthy tradeoff

A system that I took heavy inspiration from that doesn't have the issue i just mentioned is NixOS, but they solve that by completely turning everything inside-out. It's awesome, but you have to re-learn a large amount of basic linux administration to get it

Offline

#4 2017-12-04 17:14:59

Alad
Wiki Admin/IRC Op
From: Bagelstan
Registered: 2014-05-04
Posts: 2,407
Website

Re: effuvv: functional arch linux system management (formerly farch)

Ansible?


Mods are just community members who have the occasionally necessary option to move threads around and edit posts. -- Trilby

Offline

#5 2017-12-04 20:11:15

Nowaker
Member
From: Gdańsk, Poland
Registered: 2011-10-26
Posts: 20
Website

Re: effuvv: functional arch linux system management (formerly farch)

sdellysse wrote:

farch stands for "functional arch". It allows (and requires) you to express your arch linux installation in the terms of a function of a configuration. Essentially, you have a set of configuration files that you would normally edit, such as /farch/etc/fstab and /farch/etc/default/grub, and a main config file, /farch/farch_config.js that specifies how everything should be bound together, and a tool, farch-sync, that makes sure the system reflects your configuration.

Wow, great idea! Looking at the given examples, it feels too "heavy-weight" in terms of how much code needs to be written. It's a pure Node.js code. Especially, by "install, run, changes" part it's evident Node.js isn't the best language for DSLs. Why not adopt a syntax that is easily written, read and understood? E.g. YAML:

after_packages:
  install: fstab
  on_change:
    /etc/localtime:
    - hwclock --systohc: 
    /etc/locale.gen:
    - locale-gen

(Example, might not be syntactically correct, might require some 'string escapes' here and there)


Head_on_a_Stick wrote:

I think all of the configuration performed by farch can be done with a PKGBUILD instead.

Likewise, all of the configuration performed by Chef/Ansible can be done with RPM, but it doesn't mean it's preferable. There's many different use cases, and farch addresses some of them.


Alad wrote:

Ansible?

Ansible, Chef and alike are general purpose. Tools that get exactly one thing done (here: Arch Linux configuration management) can achieve the same goal with less amount of code/manifests written, and without digging into Ansible/Chef itself. It's a benefit when the domain is very narrow. Like in this case. I'm a huge fan of Chef (and Ruby) but I'd prefer something simpler for my desktop/laptop configuration management.


Great work, @sdellysse!

Last edited by Nowaker (2017-12-04 20:11:54)

Offline

#6 2017-12-05 01:37:34

sdellysse
Member
Registered: 2009-12-15
Posts: 33

Re: effuvv: functional arch linux system management (formerly farch)

Looking at the given examples, it feels too "heavy-weight" in terms of how much code needs to be written. It's a pure Node.js code. Especially, by "install, run, changes" part it's evident Node.js isn't the best language for DSLs. Why not adopt a syntax that is easily written, read and understood? E.g. YAML

I'll be honest with you, something similar to what you're talking about is where I eventually want this project to end up. The issue with that coming out the gate is that if the interpreted config markup isn't done right, it can severely restrict what can be done with this. In an ideal world, this software will get used and we'll start to see patterns emerge in the farch_configs that show us how to structure the non-javascript configs. With using JS to script the system installs, while wordy, it gives the users complete control over the process, for better or worse. So in short, you're right, just not yet ;-)


Ansible [...] I'd prefer something simpler for my desktop/laptop configuration management.

You hit the nail on the head.

Thanks for the kind words @Nowaker.

Offline

Board footer

Powered by FluxBB