all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Unofficial channel 'whispers' with services and packages
@ 2024-10-28 14:36 Runciter via Development of GNU Guix and the GNU System distribution.
  2024-11-04 21:57 ` Ludovic Courtès
  0 siblings, 1 reply; 4+ messages in thread
From: Runciter via Development of GNU Guix and the GNU System distribution. @ 2024-10-28 14:36 UTC (permalink / raw)
  To: guix-devel

Hello Guix users and maintainers!

I've decided to make parts of my personal channel 'whispers' public, in
case it can be helpful to some users, or if the Guix maintainers wish to
pick and choose packages or services from it.

The following channel declaration in the list of your
'~/.config/channels.scm' should enable pulling from the whispers
channel. Let me know if this works for you:

(channel (name 'whispers)
         (url "https://git.whispers-vpn.org/whispers.git")
         (branch "trunk")
         (introduction
          (make-channel-introduction
           "af5bbe630cb990daf9f29b307572f965ee9fa099"
           (openpgp-fingerprint
            "F7E9 58D9 7711 36C6 EBCA  A908 F0F4 A585 9416 E70E"))))

You should also be able to clone the channel with:
git clone https://git.whispers-vpn.org/whispers.git

In passing I want to thank the guixer sash-kan for guix-forge; I used it
to get an elementary web server with cgit and https working in less than
one evening!

The channel contains both services and packages which may be of interest:

SERVICES
========

Services of the following modules might be of interest to end-user:

* (whispers services ssh-tunneler): ssh port forwarding, dynamic
  forwarding and tunnel forwarding as Guix shepherd services. Comes with
  facilities to "resurrect" them with mcron jobs after a temporary drop
  of connectivity. Can automate a workflow with sshpass, although it is
  not recommended. Includes features where ssh connections can be
  proxied inside dynamic proxies created by other ssh connections,
  sometimes useful for stealth, or to bypass firewall, or to escape
  packet scanning.

* (whispers services whispers): Extend a flexible tree of shepherd
  processes running as root or a normal user, each of the shepherds in
  the tree can have shepherd services. The modules also provides
  facilities for other services to extend the start and stop actions of
  services within the tree.

** (whispers services whispers ssh): Extend my aforementioned
   ssh-tunneler services within the whispers tree instead of the root
   shepherd, per-user if needed, and possibly in a somewhat easier to
   configure manner; also, the module provides services to automate
   ssh-agent and the adding of keys into ssh-agent per-user as shepherd
   services.

** (whispers services whispers gpsd): gpsd shepherd service(s) running
   inside the whispers tree, running as configurable user(s).

** (whispers services whispers mail): currently, just an hydroxide
   service for users to handle mail received by and sent through the
   protonmail servers locally, communicating with the proton mail
   servers through the hydroxide program.

** (whispers services whispers finance): BTC and XMR nodes per-user
   running as shepherd services inside the whispers tree.

** (whispers services whispers vpn): *DO NOT USE* in the wild. A VPN
   which uses the facilities of (whispers services ssh-tunneler) to
   deploy a VPN network between machines running Guix and
   whispers. Merely a proof-of-concept which achieves basic
   functionality through horrible spaghetti code included strictly only
   for experimental purposes. It may have security vulnerabilities, and
   it will almost certainly leave you in an inconsistent state if the
   network drops unexpectedly or if the VPN connection fails to
   establish. It might be possible to make it workable, my next step
   will be to try to re-factor and improve the parts which are
   deserving, and rewrite the rest with a better design.

PACKAGES
========

* ssh-tunneler-doc: info manual for the (whispers services ssh-tunneler)
  service.

* whispers-doc: info manual for the whispers shepherd tree and the
  service types that live inside it.

* ssh-tunneler-tests: shell script for testing the ssh-tunneler
  services. Takes insanely long to run.

* whispers-tests: shell script for testing whispers. Includes a script
  'whispers-vpn-tests' which you can use to play with the VPN inside a
  network of VMs. Takes insanely long to run. Don't press a key on the
  terminal where it is running, or it will kill the VMs as soon as it
  has finished deploying them. When it finally finished deploying the
  VMs and connecting the VPN, it will print instructions on how to ssh
  into the VMs from another terminal of the local machine.

* whispers: a simple wrapper around herd to control the actions of
  shepherd services running inside the whispers tree.

* sh-pulse: an elementary script 'vlm' to control pulseaudio volume and
  cycle output sinks. The script's actions are intended to be used with
  keyboard shortcuts configured in whichever way is most agreeable to
  the user. Although it was never distributed, many years ago I posted
  my little script on a Debian forum and I was surprised to get a
  (single) testimonial that "this was the only thing that worked" along
  with a request to re-post it a few months later. Indeed it has worked
  continuously for me ever since. This may be useful/necessary to have a
  script like this if you're using a somewhat minimalist WM and you
  don't want to pull along the gazillion dependencies and services of a
  monolithic desktop manager just to have keyboard shortcuts for volume
  control.

* libmaa: C library from the DICT project, because it is a dependency
  for the dictd package. I'm just the packager not an author.

* dictd: the original programs for the DICT protocol. Includes the dict
  client and dictd server, which dico and dicod know how to
  emulate. Also includes the dictfmt utility, which is useful to express
  DICT dictionaries from human-written sources or other dictionary
  formats, for which GNU dico has no equivalent to my knowledge. I'm
  just the packager not an author.

* freedict-tools: I packaged helper tools to compile the freedict
  multilingual dictionaries. I'm just the packager not an author.

* freedict-dictionaries: package containing a subset of the
  freedict-dictionaries, intended for a local installation on a Guix
  system. I think the subset which I packaged corresponds exactly to the
  Freedict bilingual dictionaries which are human-written. The Freedict
  project also has a system which copulates 2 bilingual dictionaries
  sharing a common language into a third new automatically generated
  bilingual dictionary, I don't think my package outputs any of the many
  dictionaries which are expressed by this system. I'm just the packager
  not an author.

* cc-cedict: Scripts run by the GNU build system, using mostly sed, awk
  and the dictfmt utility to convert the community written
  chinese/english bilingual dictionary CC-CEDICT into 5 chinese/english
  dictionaries in DICT format: one dictionary for simplified characters,
  one for traditional characters, and 3 dictionaries in various forms
  of pinyin or assimilate.d I'm the author of the (very dirty) scripts
  and build system stances which perform this conversion, but I'm not a
  contributor or editor of the CC-CEDICT project. CC-CEDICT is published
  under CC-BY-SA.

For any useful purposes, here's a snippet that you should be able to
use in order to make the above dictionary-related packages useful with
your local machine's dicod service, along with wordnet and gcide which
Guix proper already provides:

              (service dicod-service-type
                       (dicod-configuration
                        (handlers (list
                                   (dicod-handler
                                    (name "wordnet")
                                    (module "wordnet")
                                    (options
                                     (list #~(string-append "wnhome="
                                                            #$wordnet))))
                                   %dictorg-handler))
                        (databases (cons*
                                    (dicod-database
                                     (name "wordnet")
                                     (complex? #t)
                                     (handler "wordnet")
                                     (options '("merge-defs")))
                                    %dicod-database:gcide
                                    (append %freedict-dictorg-databases
                                            %cedict-dictorg-databases)))))

* zathura-synctex: just a Zathura pdf reader compiled with synctex
  support. The Zathura packaged by Guix cannot do synctex since the
  feature is disabled by default at compile-time by upstream. I'm just
  the packager not an author.

Enjoy!



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Unofficial channel 'whispers' with services and packages
  2024-10-28 14:36 Unofficial channel 'whispers' with services and packages Runciter via Development of GNU Guix and the GNU System distribution.
@ 2024-11-04 21:57 ` Ludovic Courtès
  2024-11-06 16:51   ` Runciter via Development of GNU Guix and the GNU System distribution.
  2024-11-17 18:51   ` Runciter via Development of GNU Guix and the GNU System distribution.
  0 siblings, 2 replies; 4+ messages in thread
From: Ludovic Courtès @ 2024-11-04 21:57 UTC (permalink / raw)
  To: Runciter via Development of GNU Guix and the GNU System distribution.
  Cc: Runciter

Hello Runciter,

Lots of interesting things in there!

If I could have a wish list of things to integrate in Guix proper, it
would be this:

> * dictd: the original programs for the DICT protocol. Includes the dict
>   client and dictd server, which dico and dicod know how to
>   emulate. Also includes the dictfmt utility, which is useful to express
>   DICT dictionaries from human-written sources or other dictionary
>   formats, for which GNU dico has no equivalent to my knowledge. I'm
>   just the packager not an author.
>
> * freedict-tools: I packaged helper tools to compile the freedict
>   multilingual dictionaries. I'm just the packager not an author.
>
> * freedict-dictionaries: package containing a subset of the
>   freedict-dictionaries, intended for a local installation on a Guix
>   system. I think the subset which I packaged corresponds exactly to the
>   Freedict bilingual dictionaries which are human-written. The Freedict
>   project also has a system which copulates 2 bilingual dictionaries
>   sharing a common language into a third new automatically generated
>   bilingual dictionary, I don't think my package outputs any of the many
>   dictionaries which are expressed by this system. I'm just the packager
>   not an author.

:-)

Thanks,
Ludo’.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Unofficial channel 'whispers' with services and packages
  2024-11-04 21:57 ` Ludovic Courtès
@ 2024-11-06 16:51   ` Runciter via Development of GNU Guix and the GNU System distribution.
  2024-11-17 18:51   ` Runciter via Development of GNU Guix and the GNU System distribution.
  1 sibling, 0 replies; 4+ messages in thread
From: Runciter via Development of GNU Guix and the GNU System distribution. @ 2024-11-06 16:51 UTC (permalink / raw)
  To: guix-devel

Ludovic Courtès <ludo@gnu.org> writes:

> Hello Runciter,
>
> Lots of interesting things in there!
>
> If I could have a wish list of things to integrate in Guix proper, it
> would be this:
>
>> * dictd: the original programs for the DICT protocol. Includes the dict
>>   client and dictd server, which dico and dicod know how to
>>   emulate. Also includes the dictfmt utility, which is useful to express
>>   DICT dictionaries from human-written sources or other dictionary
>>   formats, for which GNU dico has no equivalent to my knowledge. I'm
>>   just the packager not an author.
>>
>> * freedict-tools: I packaged helper tools to compile the freedict
>>   multilingual dictionaries. I'm just the packager not an author.
>>
>> * freedict-dictionaries: package containing a subset of the
>>   freedict-dictionaries, intended for a local installation on a Guix
>>   system. I think the subset which I packaged corresponds exactly to the
>>   Freedict bilingual dictionaries which are human-written. The Freedict
>>   project also has a system which copulates 2 bilingual dictionaries
>>   sharing a common language into a third new automatically generated
>>   bilingual dictionary, I don't think my package outputs any of the many
>>   dictionaries which are expressed by this system. I'm just the packager
>>   not an author.
>
> :-)
>
> Thanks,
> Ludo’.

Hello Ludo,

Very well, I'll be glad to contribute those 3 packages.

I'm frequently busy and away from my main computer these days, I'll be
able to work conveniently with the Guix source-tree on Sunday, and then
should be able to submit a patch or three next week.

As a first step, I'll just submit a patch or a series with only the packages.

As a second step, it might be helpful to make a short addition to the
relevant section of the info manual, and/or to export working default
bindings from the (gnu services dict) module, for ease of configuration.

Regards,
Runciter



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Unofficial channel 'whispers' with services and packages
  2024-11-04 21:57 ` Ludovic Courtès
  2024-11-06 16:51   ` Runciter via Development of GNU Guix and the GNU System distribution.
@ 2024-11-17 18:51   ` Runciter via Development of GNU Guix and the GNU System distribution.
  1 sibling, 0 replies; 4+ messages in thread
From: Runciter via Development of GNU Guix and the GNU System distribution. @ 2024-11-17 18:51 UTC (permalink / raw)
  To: guix-devel

Ludovic Courtès <ludo@gnu.org> writes:

Hello Guix,

> Hello Runciter,
>
> Lots of interesting things in there!
>
> If I could have a wish list of things to integrate in Guix proper, it
> would be this:
>
>> * dictd: the original programs for the DICT protocol. Includes the dict
>>   client and dictd server, which dico and dicod know how to
>>   emulate. Also includes the dictfmt utility, which is useful to express
>>   DICT dictionaries from human-written sources or other dictionary
>>   formats, for which GNU dico has no equivalent to my knowledge. I'm
>>   just the packager not an author.
>>
>> * freedict-tools: I packaged helper tools to compile the freedict
>>   multilingual dictionaries. I'm just the packager not an author.
>>
>> * freedict-dictionaries: package containing a subset of the
>>   freedict-dictionaries, intended for a local installation on a Guix
>>   system. I think the subset which I packaged corresponds exactly to the
>>   Freedict bilingual dictionaries which are human-written. The Freedict
>>   project also has a system which copulates 2 bilingual dictionaries
>>   sharing a common language into a third new automatically generated
>>   bilingual dictionary, I don't think my package outputs any of the many
>>   dictionaries which are expressed by this system. I'm just the packager
>>   not an author.

I've just sent a cover letter to the patches mailing list, I'm waiting
for it to show up before sending 4 patches.

There's 4 packages and not 3 finally because 'libmaa' is a dependency of
dictd.

Everything compiles and cross-compiles, however the
'freedict-dictionaries' build is non-deterministic. One reason,
hopefully the only reason for the non-deterministic output is that the
'dictzip' program includes a timestamp header in the compressed files it
produces. The man page of dictzip does not document a way to modify or
get rid of the timestamp header.

There is a possible fix I have not tried yet, which looks like it's
going to work: I could probably output non-compressed binary dictionary
files (*.dict) instead of dictzipped dictionary files (*.dict.dz). In
order to do it, an 'install-base' target needs to be modified. This
target is found in mk/dicts.mk inside the toolchain package
'freedict-tools'. I have not found how this could be easily configured
at build-time, at the moment I would only know how to do it with a patch
to the 'freedict-tools' package.

What's your policy, or what's your call for this case? Do you want me to
try my fix, or do you find it preferable to sacrifice determinism in
exchange for enjoying dictzip compression of the output, which also
amounts to staying faithful to the upstream intended installation
contents? Other suggestions?

Runciter



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-11-17 18:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-28 14:36 Unofficial channel 'whispers' with services and packages Runciter via Development of GNU Guix and the GNU System distribution.
2024-11-04 21:57 ` Ludovic Courtès
2024-11-06 16:51   ` Runciter via Development of GNU Guix and the GNU System distribution.
2024-11-17 18:51   ` Runciter via Development of GNU Guix and the GNU System distribution.

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.