Guix

409 readers
18 users here now

Guix is an advanced distribution of the GNU operating system developed by the GNU Project

founded 5 years ago
MODERATORS
1
 
 

Recently I got into NixOS and started setting it up -- until I found Guix System. I started feeling like Nix is more of a DSL, while Guix seems more like a truly programmable system. But I still can’t decide between them. What do you find most attractive about Guix System compared to NixOS?

2
3
4
submitted 2 weeks ago* (last edited 2 weeks ago) by csantosb@lemmy.ml to c/guix@lemmy.ml
4
5
 
 

cross-posted from: https://lemmy.ml/post/30485676

Generate SVG images for handy useful glyphs, org/markdown badges and more, from Lisp (Guile Scheme)

https://codeberg.org/jjba23/ggg

Be proud and appreciate technologies and techniques you use, distinguish clearly supported versions of things, etc. With flexible support for badges between one and three parts.

Through SVG generation from Lisp (Guile Scheme) we leverage a beautiful DSL and apply some mathematical knowledge to build pixel perfect badges. These SVG can then be easily converted without quality loss to any desired format.

With GGG, you have the power to create your own badges and images with a consistent and clean aesthetic.

6
16
submitted 3 weeks ago* (last edited 3 weeks ago) by greywolf0x1@lemmy.ml to c/guix@lemmy.ml
 
 

I was never able to get into that email based workflow anyway

7
 
 

cross-posted from: https://lemmy.ml/post/29897788

LucidPlan proudly announces version v0.4.0 of the project:

https://codeberg.org/jjba23/lucidplan

#foss #project #management for everyone ( #selfhosting )

work more #agile in your team thanks to a fast-paced no-nonsense-workflow and customizability, also thanks to being written in #lisp ( #guile #scheme ) and using #guix

This tool results of years of experience using proprietary systems like Jira/Trello, and experiencing the frustrations they bring.

find my live instance here:

https://lucidplan.jointhefreeworld.org/tickets/sss

8
 
 

cross-posted from: https://lemmy.ml/post/29436906

The free and open Lisp-powered notification nexus : https://codeberg.org/jjba23/pingwing

Do you want to work the complexity away of sending e-mail, Slack or other notifications, from every other program? Specially if you use a (micro)service oriented architecture?

pingwing, a key component of the jointhefreeworld ecosystem, emerges as a robust and extensible solution. Architected in the elegant and powerful dialect of Lisp known as Guile Scheme, this tool gives you power (via REST API and more) to become the central notification system for your platform.

At its core, pingwing exposes a programmatic interface (and more!) allowing you to dispatch messages, electronic mail, and critical alerts with finesse. Forget juggling disparate notification mechanisms; pingwing harmonizes these streams, routing them to your chosen endpoints.

Initial support includes SMTP for email delivery, with a pending integration for Slack (expect webhook wizardry soon!).

The architecture is designed for future expansion, promising connectivity to a diverse range of notification sinks.

This project is powered by Lisp (Guile Scheme), curl , make , SXML and the GNU Artanis web framework, SQLite, among others.

This is free software, licensed under the GNU General Public License 3 or newer.

This tool is compatible with any SMTP provider you can think of, thanks to its simple and agnostic approach.

All you need to do to interact with pingwing is call the /api/v1/tasks with a POST method and give your preferences. See app/api/v1.scm for more details on the API, and lib/pingwing/tasks.scm for more.

curl -v \
     -H "Content-Type: application/json" \
     -d '{
         "task-type": "send-email",
         "template": "password-reset",
         "template-vars": {
           "system-name": "WikiMusic",
           "user": "jjbigorra@gmail.com",
           "reset-link": "https://gnu.org/"
         },
         "sender-name": "No Reply - WikiMusic",
         "sender-address": "noreply@wikimusic.jointhefreeworld.org",
         "subject": "Wikimusic - Password Reset",
         "recipients": [
           {"name": "Josep Bigorra", "address": "jjbigorra@gmail.com"},
           {"name": "Another Person", "address": "jjbigorra+1@gmail.com"}
         ]
       }' \
     'http://localhost:50077/api/v1/tasks'

You can submit tasks at super high rates to pingwing since the ingestion and processing are done completely separately. This ensures that we can do a reliable retry mechanism and can handle high volumes of data.

After the task has submitted and picked up by the worker, a message like this will be produced:

MIME-Version: 1.0
Subject: WikiMusic - Password Reset 998c42eb-7472-4e12-aa5a-ffdbe754b430
From: No Reply - WikiMusic <noreply@wikimusic.jointhefreeworld.org>
To: Josep Bigorra <jjbigorra@gmail.com>
Content-Type: multipart/alternative; boundary="pingwing-message-multipart-boundary-33c2b557-7f27-4339-9a85-2385e7ecde9b"

--pingwing-message-multipart-boundary-33c2b557-7f27-4339-9a85-2385e7ecde9b
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Reset your password: 
We have received a request to reset the password for your user account:
User.............

--pingwing-message-multipart-boundary-33c2b557-7f27-4339-9a85-2385e7ecde9b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" />..............

--pingwing-message-multipart-boundary-33c2b557-7f27-4339-9a85-2385e7ecde9b--

Send mail message via SMTP with curl And the worker will pick it up and send it (programatically for you):

>>= sending mail to email-smtp.eu-west-3.amazonaws.com

curl --verbose --ssl-reqd --url smtp://email-smtp.eu-west-3.amazonaws.com:587 --user "AK*****:*************" --mail-from 'noreply@wikimusic.jointhefreeworld.org' --mail-rcpt 'jjbigorra@gmail.com' --mail-rcpt-allowfails --upload-file tmp/998c42eb-7472-4e12-aa5a-ffdbe754b430-noreply@wikimusic.jointhefreeworld.org-jjbigorra@gmail.com

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Host email-smtp.eu-west-3.amazonaws.com:587 was resolved.
 IPv6: (none)
 IPv4: 15.236.217.177, 15.236.68.209, 15.237.2.166
   Trying 15.236.217.177:587...
 Connected to email-smtp.eu-west-3.amazonaws.com (15.236.217.177) port 587
< 220 email-smtp.amazonaws.com ESMTP SimpleEmailService-d-I
> EHLO 998c42eb-7472-4e12-aa5a-ffdbe754b430-noreply@wikimusic.jointhefreeworld.org-jjbigorra@gmail.com
< 250-email-smtp.amazonaws.com
< 250-8BITMIME
< 250-STARTTLS
< 250-AUTH PLAIN LOGIN
< 250 Ok
> STARTTLS
< 220 Ready to start TLS
.........................
< 235 Authentication successful.
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0> MAIL FROM:<noreply@wikimusic.jointhefreeworld.org>
< 250 Ok
> RCPT TO:<jjbigorra@gmail.com>
< 250 Ok
> DATA
< 354 End data with <CR><LF>.<CR><LF>q
} [3028 bytes data]
 We are completely uploaded and fine
< 250 Ok 011301968c239ad5-72018cb8-ab51-42dd-8ea6-fd6395124272-000000
100  3028    0     0  100  3028      0   5653 --:--:-- --:--:-- --:--:--  5649
 Connection #0 to host email-smtp.eu-west-3.amazonaws.com left intact`___`

example of how simple a template definition can be:

;;; pingwing -- the free and open Lisp-powered notification nexus

;; Copyright © Josep Bigorra <jjbigorra@gmail.com>

;; pingwing is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; pingwing is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with pingwing.  If not, see <https://www.gnu.org/licenses/>.

(define-module (pingwing templates system-alert)
  #:use-module (ice-9 time)
  #:use-module (ice-9 format)
  #:use-module (ice-9 rdelim)
  #:use-module (ice-9 textual-ports)
  #:use-module (ice-9 regex)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-64)
  #:use-module (pingwing css)
  #:use-module (pingwing html)
  #:use-module (ice-9 string-fun)
  #:use-module (sxml simple)
  #:use-module (ice-9 iconv))

(begin
  (define* (system-alert-html-template #:key system-name alert-value)
    (let* (
           (tree `((html (head ,meta-charset
                               ,meta-ie
                               ,meta-responsive
                               ,meta-color-scheme
                               ,meta-supported-color-schemes
                               (title ,(gettext "System Alert"))
                               (style ,mail-style))
                         (body (h1 (span ,(gettext
                                           "System Alert: "))
                                   (span ,system-name))
                               (p ,(gettext
                                    "An alert has been triggered from your system"))
                               (hr (@ (style ,(->style '((margin-top . "1.4em") (margin-bottom . "1.4em"))))))
                               (p ,alert-value)
                               ,mail-footer)))))
      (with-output-to-string (lambda ()
                               (sxml->xml tree)))))
  (export system-alert-html-template))

(begin
  (define* (system-alert-plain-template #:key system-name alert-value)
    (let* ((content (list (gettext "System Alert")
                          (gettext
                           "An alert has been triggered from your system:")
                          system-name
                          "----------------------------------"
                          alert-value
                          "----------------------------------"
                          (gettext
                           "this e-mail was powered by pingwing - the free and open Lisp-powered notification nexus")
                          "https://codeberg.org/jjba23/pingwing"
                          (gettext "see pingwing's source code on Codeberg"))))
      (string-join content "\n")))
  (export system-alert-plain-template))
9
5
submitted 2 months ago* (last edited 2 months ago) by csantosb@lemmy.ml to c/guix@lemmy.ml
 
 

#guix

10
11
12
13
5
Futurile: Guix Resources (www.futurile.net)
submitted 3 months ago by kixik@lemmy.ml to c/guix@lemmy.ml
14
15
16
17
18
 
 

Guix main repositories and substitutes appear to be inaccessible from russia, I don't know where else to ask about this other then the irc, but has anyone encountered this and knows how it could be solved? I've found some mentions of this online but no other advices or workarounds

Basically when I try to use Guix package manager on a different system I get infinite attempts to connect to substitutes and when attempting to install guix in a vm the installation fails at some point

19
 
 

I hope for the days when this become very usable

20
21
22
 
 

The guix user surveys are in

23
 
 

I got my Emacs setup fully functional and now I'm doing a little bit of hacking on my config files. (Because that's what you do on Christmas eve, when the children has fallen asleep.)

However, even though I use Geiser and fancy rainbow parentheses (plus extra Christmas bling), I run into these stupid invalid specifier errors. And the compiler output is neither pretty nor helpful. It basically gives me a large chunk of unformatted code and says there's an invalid specifier somewhere.

Questions:

Is it possible to make Guile do a pretty print on the error output?

Is it possible to make Guile error messages more precise about the problem?

24
1
submitted 5 months ago* (last edited 5 months ago) by sith@lemmy.zip to c/guix@lemmy.ml
 
 

I'm trying to configure my Emacs so that I get access to Guix documentation and source code when I writing my configuration files. I did RTFM, but I can't get it to work. More specifically, Geiser can only find symbol definitions if they are in the same buffer.

Actually, I realize I have the same problem as this person: https://unix.stackexchange.com/questions/761784/how-to-get-guix-perfect-setup-to-work

The Guix REPL can find the Guix source code, but the Geiser Guile REPL can't (even though the right path is loaded, it seems). The stackexchange solution is basically a hack and can't be the proper one, right? So, how do you do when developing Guix in Emacs?

Should I post a bug report about the "perfect setup" chapter in the Reference Manual or am I just incompetent?

25
 
 

Howdy!

Probably not the best place to ask, but I'll give it a try. For the sake of a flourishing Fediverse.

I'm trying out Guix and have installed Steam through the nonguix channel. Unfortunately, almost no games work. Probably because of missing/wrong version of stdlibc++ (and probably more). I got this error when I tried to launch Victoria 3:

./victoria3: /usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by ./victoria3)

I.e. GLIBCXX_3.4.30 is missing. How can I fix this? Is it possible to add multiple GLIBCXX versions to the Steam package? Any ideas? And shouldn't Steam be self contained?

view more: next ›