Re: Shepherd timers

2024-03-30 Thread Adam Faiz
Hi Ludovic,

I want to give my suggestion for the timer support in the Shepherd:

Could the Shepherd depend on mcron for the timer functionality? Since mcron 
already handles scheduling commands to run at a certain time, there would be no 
need to reimplement it again.

Mcron would just need to support handling user jobs dynamically, and the 
Shepherd implementing timers as a simple interface for it.



Re: Guidelines for bootstrapping with lots of inputs

2024-02-20 Thread Adam Faiz
>How is typescript bootstrapped? Even though you'll have to repeat the trial 
>and error process again, I think using sucrase is easier for bootstrapping 
>typescript: https://lists.gnu.org/archive/html/guix-devel/2024-02/msg00122.html

Nevermind, it's already bootstrapped with esbuild in guixrus.



Re: Guidelines for bootstrapping with lots of inputs

2024-02-20 Thread Adam Faiz
> WDYT? Are there guidelines somewhere about how to do proper bootstrapping in 
> these cases where hundreds of packages are involved?

Not really, but your idea to rewrite inputs for the bootstrapping process does 
simplify things a lot.

How is typescript bootstrapped? Even though you'll have to repeat the trial and 
error process again, I think using sucrase is easier for bootstrapping 
typescript: https://lists.gnu.org/archive/html/guix-devel/2024-02/msg00122.html



Re: How to always keep build tree when run guix build.

2024-01-17 Thread Adam Faiz
Hello,

> Hello:
> 
>   How to always keep build tree when run guix build, at the moment, I 
> use --keep-failed, but it will remove build tree when build success, the
> problem is that build success alway not right build success :-), I need
> go to build tree to check some thing.
> 
> Thanks!
> 
> 
> -- 

You can add the `--cache-failures` option when starting the guix-daemon, which 
tells it to keep the build failures by default.
It's explained in more detail in the "Invoking guix-daemon" section of the Guix 
manual:
https://guix.gnu.org/en/manual/devel/en/html_node/Invoking-guix_002ddaemon.html



Re: guix installation why internet connection required?

2023-12-20 Thread Adam Faiz
Hi vvt,
> x86 x64 gnu guix system 1.4.0 iso requires internet connection in order to get
> installed. Same goes for i686 iso.
> 
> Why is that so? Why is there no
> iso option for installing off line? Thanks.

The reason why is because the GNU Guix System ISO is a netinstall ISO,
it has the bare minimum needed to customise the installation options and then 
downloads the packages when installing.

There's no option for installing offline because Guix currently doesn't offer 
ISO images that do that, even though it's possible.
There's previous discussion about this issue: 
https://lists.gnu.org/archive/html/guix-devel/2015-12/msg00452.html

Could you try this operating system definition? I think it should work(it adds 
XFCE and MATE).
Make a Guix checkout, and put the attached file in the gnu/system directory of 
the local Guix copy.
Then you can do `guix system image -t iso9660 gnu/system/offline-install.scm` 
to generate the offline installation ISO.

;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014-2022 Ludovic Courtès 
;;; Copyright © 2015 Mark H Weaver 
;;; Copyright © 2016 Andreas Enge 
;;; Copyright © 2017 Marius Bakke 
;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice 
;;; Copyright © 2020 Florian Pelz 
;;; Copyright © 2020 Efraim Flashner 
;;; Copyright © 2022 Josselin Poiret 
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix 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.
;;;
;;; GNU Guix 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 GNU Guix.  If not, see .

(define-module (gnu system install)
  #:use-module (gnu)
  #:use-module (gnu system)
  #:use-module (gnu system setuid)
  #:use-module (gnu bootloader u-boot)
  #:use-module (guix gexp)
  #:use-module (guix store)
  #:use-module (guix monads)
  #:use-module (guix modules)
  #:use-module ((guix packages) #:select (package-version supported-package?))
  #:use-module (guix platform)
  #:use-module ((guix store) #:select (%store-prefix))
  #:use-module (guix utils)
  #:use-module (gnu installer)
  #:use-module (gnu system locale)
  #:use-module (gnu services avahi)
  #:use-module (gnu services dbus)
  #:use-module (gnu services networking)
  #:use-module (gnu services shepherd)
  #:use-module (gnu services ssh)
  #:use-module (gnu packages admin)
  #:use-module (gnu packages bash)
  #:use-module (gnu packages bootloaders)
  #:use-module (gnu packages certs)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages cryptsetup)
  #:use-module (gnu packages disk)
  #:use-module (gnu packages file-systems)
  #:use-module (gnu packages fonts)
  #:use-module (gnu packages fontutils)
  #:use-module (gnu packages guile)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages package-management)
  #:use-module (gnu packages texinfo)
  #:use-module (gnu packages xorg)
  #:use-module (ice-9 match)
  #:use-module (srfi srfi-26)
  #:export (installation-os
a20-olinuxino-lime-installation-os
a20-olinuxino-lime2-emmc-installation-os
a20-olinuxino-micro-installation-os
bananapi-m2-ultra-installation-os
beaglebone-black-installation-os
mx6cuboxi-installation-os
nintendo-nes-classic-edition-installation-os
novena-installation-os
firefly-rk3399-installation-os
pine64-plus-installation-os
pinebook-installation-os
rock64-installation-os
rockpro64-installation-os
rk3399-puma-installation-os
wandboard-installation-os
os-with-u-boot))
(use-service-modules desktop sddm xorg)
(use-package-modules certs gnome)

;;; Commentary:
;;;
;;; This module provides an 'operating-system' definition for use on images
;;; for USB sticks etc., for the installation of the GNU system.
;;;
;;; Code:


;;;
;;; Documentation service.
;;;

(define %installation-node-names
  ;; Translated name of the "System Installation" node of the manual.  Ideally
  ;; we'd extract it from the 'guix-manual' gettext domain, but that one is
  ;; usually not available at run time, hence this hack.
  '(("de" . "Systeminstallation")
("en" . "System Installation")
("es" . "Instalación del sistema")
("fr" . "Installation du système")
("ru" . "Установка системы")))

(define (log-to-info tty user)
  "Return a script that spawns the Info reader on the right section of the
manual."
  (program-file "log-to-info"
#~(let* ((tty  (open-file #$(string-append

Re: GUI for Guix

2023-10-02 Thread Adam Faiz
> The last message in that issue discussion is mine:

>FWIW M-x guix-installed-packages (and all the other stuff) works for me

> Is it *actually* broken?  If it is and you can provide information on
how to trigger the broken behavior we might be a step closer to fixing
it.

I assumed that M-x guix-installed-packages already worked, so I wanted to test 
the main menu instead.

I did the following steps:
1. M-x guix
2. Chose 'packages' by pressing p
3. Go to the search by pressing s

I can't paste the error anytime soon since I don't have my laptop with me, but 
I remember that there was a REPL error with something being undefined.



(computed-origin-method) and (origin)'s file-name field

2023-08-27 Thread Adam Faiz
Hello everyone,

I'm wondering about the solution to the computed-origin-method workaround...
Must the 'computed-origin-method' workaround be solved by adding the renaming 
capability to snippets?

Why couldn't the file-name field of the source origin be used to rename it?

If it's because the upstream source might be confused with the liberated 
version, couldn't a comment above the snippet clarify that?



Re: Help packaging ArrayFire

2023-08-25 Thread Adam Faiz
On 8/20/23 19:35, B. Wilson wrote:
> Hello Guix,
> 
> Knee deep in CMake hell here and would appreciate a helping hand. ArrayFire
> build is defeating me:
> 
> CMake Error at 
> /gnu/store/ygab8v4ci9iklaykapq52bfsshpvi8pw-cmake-minimal-3.24.2/share/cmake-3.24/Modules/ExternalProject.cmake:3269
>  (message):
>   error: could not find git for fetch of af_forge-populate
> Call Stack (most recent call first):
>   
> /gnu/store/ygab8v4ci9iklaykapq52bfsshpvi8pw-cmake-minimal-3.24.2/share/cmake-3.24/Modules/ExternalProject.cmake:4171
>  (_ep_add_update_command)
>   CMakeLists.txt:13 (ExternalProject_Add)
> 
> Apparently, some of the build dependencies get automatically cloned, but I'm
> unable to make heads or tails of how to work around this. The
> `af_forge-populate` makes it look like it's related to Forge, but "ArrayFire
> also requires Forge but this is a submodule and will be checkout during
> submodule initilization stage. AF_BUILD_FORGE cmake option has to be turned on
> to build graphics support," so I'm stumped.
> 
> I need this soon for a project and am willing to pay someone to take this 
> over.
> 
> Here are the official build instructions: 
> https://github.com/arrayfire/arrayfire/wiki/Build-Instructions-for-Linux
> 
> In fact, there's a 2016 thread where Dennis Mungai claims to have successfully
> gotten ArrayFire packaged on Guix: https://issues.guix.gnu.org/23055. However,
> that appears to have never resulted in a patch.
> 
> Thoughts?
> 
I'm willing to work on this, it's a very interesting challenge.



Re: Installation of Sheperd under Linux from Scratch

2023-06-26 Thread Adam Faiz
Hello Andreas,

On 6/22/23 12:56, Andreas Buchter wrote:
> I would like to install/use Shepherd as an init system under LFS (Linux from 
> Scratch) https://www.linuxfromscratch.org 
> No clue what would be required to do that. Could someone give me any hints? 
> Thank you!

First, you need to build the Shepherd from source.

git clone https://git.savannah.gnu.org/git/shepherd.git
cd shepherd
autoreconf -vif

In the README there's instructions on how to configure and build it.

After building, you need to put a shepherd.scm config at 
/usr/local/etc/shepherd.scm or a different location
specified with the --config=FILE option for the Shepherd.

Here's an example shepherd.scm config:
https://lists.gnu.org/archive/html/guix-devel/2022-01/msg00279.html

I've attached the shepherd-init wrapper script I use to do some initialisation 
before running shepherd as init.

After that, I added the following to /etc/default/grub to use the Shepherd as 
the default init system:
GRUB_CMDLINE_LINUX="init=/usr/local/sbin/shepherd-init"


Note that in the future 1.0 release of the Shepherd, the GOOPS interface will 
be removed and the old configuration format above won't work anymore.
I plan on updating from 0.8.1 to the 0.10.x release so that I can update my 
config to the nicer format[1] before then.

[1]: 
https://www.gnu.org/software/shepherd/manual/shepherd.html#Legacy-GOOPS-Interface


#!/bin/sh
SOCKET=/usr/local/var/run/shepherd/socket
mount -o remount,rw /
rm $SOCKET
mkdir /dev/shm
chmod 1777 /dev/shm
exec shepherd


Re: package transformation and “guix graph”?

2023-04-28 Thread Adam Faiz

Hello,


Hi,

Investigating « bug#62645: Failing `guix install gnash` » [1], I am a
bit surprised:

The package rust-hmac needs to be rebuilt but it does not appear

connected via “guix graph”.  Note that rust-hmac has no direct
dependency and only the ones from the Rust build system.

Similarly, the node ’gcc’ appears in the DAG of gnash:

but then,

--8<---cut here---start->8---
$ guix graph --path gnash -e '(@@ (gnu packages gcc) gcc-11)' -t bag 
guix graph: error: no path from 'gnash@0.8.11-0.583ccbc' to 'gcc@11.3.0'

--8<---cut here---end--->8---

And note that,

--8<---cut here---start->8---
$ guix build -e '(@@ (gnu packages gcc) gcc-11)' --no-grafts -d
/gnu/store/rcd13s3lcd579s0l8v3awk4a6kbj8hvz-gcc-11.3.0.drv
$ guix build -e '(@@ (gnu packages gcc) gcc-11)' -d
/gnu/store/rcd13s3lcd579s0l8v3awk4a6kbj8hvz-gcc-11.3.0.drv
--8<---cut here---end--->8---

the derivation does not match with the one reported by “guix graph”.


Last, the package ’gcc’ appears in the graph of ’rust-hmac’ – which
seems weird to me but why not:

--8<---cut here---start->8---
$ guix graph rust-hmac -t bag-emerged | grep label | grep gcc
  "/gnu/store/wcx86bp6zcad2n2x5940dndhcksvfk5v-gcc-11.3.0.drv" [label = 
"gcc@11.3.0", shape = box, fontname = sans];

--8<---cut here---end--->8---

and then again no path between rust-hmac and gcc.  Note the same
derivation.


What do I miss?

There's a long standing issue of rust packages not using inputs and 
native-inputs[1] because of how cargo-build-system works.
The WIP antioxidant-build-system[2] will properly address all the shortcomings 
currently in Guix's Rust packaging.

gcc-11 is an implicit input of gnu-build-system so it's still in the build 
graph.

1: https://issues.guix.gnu.org/53127
2: https://notabug.org/maximed/cargoless-rust-experiments




Cheers,
simon

1: https://issues.guix.gnu.org/issue/62645






Re: The 🐑 Shepherd gets a service collection

2023-03-16 Thread Adam Faiz

On 3/16/23 22:14, Ludovic Courtès wrote:

The main limitation of mcron for such thing is that it’s entirely
static: it reads a list of job specs upfront and then goes on to
schedule them.  There’s no communication protocol to talk to it and
add/remove jobs on the fly, which is what ‘at’ would need.

Would it be easier to add dynamic job spec support to mcron than adding a new 
command scheduler?


Regarding syslogd, I think a better approach is to tell the services to send 
their output to stdout and stderror,
so that logs don't depend on a separate logging service in the first place.


Yes, but:

   1. Some daemons include syslog support even today, sometimes optional,
  sometimes mandatory.

   2. Syslog is a bit more structured than just stdout/stderr output:
  there are facilities and levels, for instance—see syslog(3);
  syslogd provides interesting filtering capabilities.


Thanks, it looks like syslog is still important for structured logs.

Are there issues of logs sent to syslog being lost even when the syslogd 
service is specified as a requirement of services that use it?
If not, I think it's not necessary to add a syslogd implementation to the 
shepherd.
 

Per-service logging is already implemented in the Shepherd, but could be 
streamlined to have a default logs directory:
https://skarnet.org/software/s6/s6-log.html#loggingchain


Interesting read, thanks!

Regarding the default logs directory, there’s /var/log already, or did
you mean something else?

I do mean /var/log, I felt like #:log-file in make-forkexec-constructor could 
be improved.
Rather than always having to specify the absolute log file path, #:log-file 
could just be set as #t and would then default to /var/log/$canonical-name of 
the service.
 

Thanks,
Ludo’.





Re: The 🐑 Shepherd gets a service collection

2023-03-13 Thread Adam Faiz
I imagine we could develop more convenient services like this, such as 
basic command scheduler similar to the ‘at’ command, and a syslogd

implementation.  The latter could be nice for a couple of reasons:
logging would happen from the start and till the end (an improvement
over the external syslogd process), and it could let us provide a nicer
user interface to view logs (taking inspiration from that of
‘journalctl’).

Thoughts?  Ideas?I don't think a command scheduler should be added to the 
Shepherd, isn't that what mcron does?

If mcron has any deficiencies for being used as an `at` command, then that can 
be improved.

Regarding syslogd, I think a better approach is to tell the services to send 
their output to stdout and stderror,
so that logs don't depend on a separate logging service in the first place.
Per-service logging is already implemented in the Shepherd, but could be 
streamlined to have a default logs directory:
https://skarnet.org/software/s6/s6-log.html#loggingchain

I'm already happy with zless/any GUI log viewer, but it would be great to have 
a nicer user interface to view logs nonetheless.



Shepherd news + planned feature removal

2023-02-23 Thread Adam Faiz

Hello Guix!

I recently pushed an updated and rebased variant of
‘wip-service-monitor’ in the Shepherd, previously discussed here:

  https://lists.gnu.org/archive/html/guix-devel/2022-06/msg00350.html

I’m going to merge it real soon if there are no objections, with the
goal of using it as the basis for 0.10.x and hopefully soonish 1.0.x.

The main news are:

  • Services can now be in one of 4 states: stopped, starting, started,
and stopping.  (Previously it was just started/stopped.)

  • ‘herd status SERVICE’ reports those new states.

  • ‘start’ waits if the service was already starting; ‘stop’ waits if
the service was already being stopped.

  • Services are now started in parallel, to the extent possible.

Internally, the big change is that, in addition to a “service registry”
actor (a fiber and associated channel where it receives requests), each
service has an associated actor (likewise, a fiber) that handles
service-specific operations such as ‘start’ and ‘stop’.  I find it
aesthetically pleasing and fun to work with; incidentally, it should
sound familiar to the goblins among us.  :-)

There’s a couple of shepherd features that I’d like to remove:
“persistency” (sic), and the “unknown” service.  These things were added
in the early days of dmd ca. 2003 but they’re totally untested, likely
broken, and probably useless.  If you have objections, now’s the time to
let it be known.


I'm ok with current service state persistency being removed, since users can 
always modify a copy of the shepherd configuration file and tell the shepherd to 
load that instead, which achieves the same thing.


The 'unknown service fallback seems like a really cool feature, but if there 
isn't really any use for it, then I guess it should be removed. It can always be 
added back in if someone has a usecase for it.


I just have 1 question: Why is there a need for `herd status` to display whether 
a service is in a starting or stopping state?


From the perspective of the shepherd, a service that is starting isn't running 
yet, and a service that is stopping isn't stopped yet.
The "starting" and "stopping" states are just an implementation detail to handle 
the shepherd being asynchronous. It's the running and stopped states that a user 
wants to know about a service.




Feedback welcome!

Ludo’.





Preferring packages with smaller closures as package inputs (Was: Packages grow, no longer fit on a 💾)

2023-01-18 Thread Adam Faiz

Hello!

Over the course of a few years, the size of our packages has apparently
kept growing.  Example:

--8<---cut here---start->8---
Should packages with smaller closures be preferred as package inputs, in 
the case that multiple packages implement the same interface?


For example, pkgconf is much simpler compared to pkg-config but 
implements the same interface. Should it be used as an input for all 
packages that need pkg-config, through a pkg-config symlink in the 
pkgconf package for complete compatibility? If not, why? Are there more 
important factors to consider than bootstrapping complexity?


In contrast, pkg-config has glib as a bundled dependency when it should 
be unbundled. There's probably a circular dependency that needs to be 
resolved but it needs to be done.






Re: Help needed adapting IceCat patches to 102

2022-12-24 Thread Adam Faiz

On 12/24/22 08:34, Adam Faiz wrote:
Gentoo's patches should be tested, I don't have the time but maybe 
someone else can do it.


The relevant patches can be found in Gentoo's 102esr-patches-07j.tar.xz:
Support-system-graphite2.patch
Support-system-harfbuzz.patch
Support-system-av1.patch
fix-av1-libs.patch

The patented H264 format absolutely shouldn't be encouraged, so the 
OpenH264 patches are probably not necessary.


Other Gentoo patches that might be of interest are the following:
fix-build-on-x86.patch

There may be other patches that should be considered in a separate issue.



Help needed adapting IceCat patches to 102

2022-12-24 Thread Adam Faiz

Hello everyone,

I don't know what I'm doing wrong with adding configure options, but 
icecat-102.6.0-guix0-preview1/moz.configure still doesn't recognise 
--with-system-ogg after applying the attached patches.
I think the problem is that it's not registering properly in 
toolkit/moz.configure or maybe also needs to be registered elsewhere.


The other --with-system options the patches aim to fix probably also 
don't work, because it fails with ogg first before the others when I 
added all the related --with-system ones to the #:configure-flags.


I've tried a few option registration variations found in 
icecat-102.6.0-guix0-preview1/moz.configure already, but it still fails.


It also doesn't help that the patches developing cycle is at least 20 
minutes long, to extract icecat and run the phases prior to configure. 
I'm not sure if it's faster on other machines, but I'm on a Thinkpad T410.


I'm hoping that once the options are recognised, building icecat will be 
smooth sailing. The adapted patches should be sent to the linked bug 
reports[1][2].


1: https://bugzilla.mozilla.org/show_bug.cgi?id=847568
2: https://bugzilla.mozilla.org/show_bug.cgi?id=517422From 557c2020d765c0802dd5fd55fe0742f61fb925a5 Mon Sep 17 00:00:00 2001
From: AwesomeAdam54321 
Date: Wed, 21 Dec 2022 14:32:12 +0800
Subject: [PATCH 1/3] icecat-avoid-bundled-libraries

Fixes needed when avoiding bundled libraries.
---
 dom/indexedDB/moz.build| 1 -
 storage/moz.build  | 1 -
 third_party/libwebrtc/rtc_base/rtc_task_queue_gn/moz.build | 2 --
 xpcom/build/moz.build  | 5 -
 4 files changed, 9 deletions(-)

diff --git a/dom/indexedDB/moz.build b/dom/indexedDB/moz.build
index 9282d91a..500366ed 100644
--- a/dom/indexedDB/moz.build
+++ b/dom/indexedDB/moz.build
@@ -116,7 +116,6 @@ LOCAL_INCLUDES += [
 "/dom/base",
 "/dom/storage",
 "/ipc/glue",
-"/third_party/sqlite3/src",
 "/xpcom/build",
 ]
 
diff --git a/storage/moz.build b/storage/moz.build
index 3bc84420..7ce5ca26 100644
--- a/storage/moz.build
+++ b/storage/moz.build
@@ -101,7 +101,6 @@ DEFINES["SQLITE_MAX_LIKE_PATTERN_LENGTH"] = 5
 
 LOCAL_INCLUDES += [
 "/dom/base",
-"/third_party/sqlite3/src",
 ]
 
 CXXFLAGS += CONFIG["SQLITE_CFLAGS"]
diff --git a/third_party/libwebrtc/rtc_base/rtc_task_queue_gn/moz.build b/third_party/libwebrtc/rtc_base/rtc_task_queue_gn/moz.build
index 7ddc659b..0dfa27fb 100644
--- a/third_party/libwebrtc/rtc_base/rtc_task_queue_gn/moz.build
+++ b/third_party/libwebrtc/rtc_base/rtc_task_queue_gn/moz.build
@@ -22,8 +22,6 @@ FINAL_LIBRARY = "webrtc"
 LOCAL_INCLUDES += [
 "!/ipc/ipdl/_ipdlheaders",
 "/ipc/chromium/src",
-"/third_party/libwebrtc/",
-"/third_party/libwebrtc/third_party/abseil-cpp/",
 "/tools/profiler/public"
 ]
 
diff --git a/xpcom/build/moz.build b/xpcom/build/moz.build
index d86af97c..46de45da 100755
--- a/xpcom/build/moz.build
+++ b/xpcom/build/moz.build
@@ -100,8 +100,3 @@ LOCAL_INCLUDES += [
 "/docshell/base",
 "/js/xpconnect/loader",
 ]
-
-if CONFIG["MOZ_VPX"]:
-LOCAL_INCLUDES += [
-"/media/libvpx",
-]
-- 
2.38.1

From 8e64027b6b188d4c016fc8ca427965d1a2560687 Mon Sep 17 00:00:00 2001
From: AwesomeAdam54321 
Date: Wed, 21 Dec 2022 14:37:57 +0800
Subject: [PATCH 2/3] icecat-use-system-graphite2+harfbuzz

Allow building against system-wide graphite2/harfbuzz.
See 
Based on:
  https://svnweb.freebsd.org/ports/head/www/firefox-esr/files/patch-bug847568?revision=472833&view=co
Modified for use with patch -p1, and to apply cleanly to GNU IceCat.
---
 config/system-headers.mozbuild  | 13 +
 dom/base/moz.build  |  3 +++
 gfx/graphite2/moz-gr-update.sh  |  7 ++-
 gfx/moz.build   |  8 ++--
 gfx/skia/generate_mozbuild.py   |  3 +++
 gfx/skia/moz.build  |  3 +++
 gfx/thebes/moz.build|  8 +++-
 intl/unicharutil/util/moz.build |  3 +++
 netwerk/dns/moz.build   |  3 +++
 old-configure.in| 21 +
 toolkit/library/moz.build   |  6 ++
 toolkit/moz.configure   | 28 
 12 files changed, 102 insertions(+), 4 deletions(-)

diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild
index 9c07dba2..5594d659 100644
--- a/config/system-headers.mozbuild
+++ b/config/system-headers.mozbuild
@@ -1293,6 +1293,19 @@ if CONFIG['MOZ_ENABLE_LIBPROXY']:
 'proxy.h',
 ]
 
+if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
+system_headers += [
+'graphite2/Font.h',
+'graphite2/Segment.h',
+]
+
+if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
+system_headers += [
+'harfbuzz/hb-glib.h',
+'harfbuzz/hb-ot.h',
+'harfbuzz/hb.h',
+]
+
 if CONFIG['MOZ_SYSTEM_LIBVPX']:
 system_headers += [
 'vpx_mem/vpx_mem.h',
diff --git a/dom/

Re: GNU Shepherd config contribution

2022-01-16 Thread Adam Faiz

On 16/01/2022 16:41, jbra...@dismail.de wrote:

Hey, Adam thanks for this submission!

I think it's great that you can give examples of shepherd services!  I don't 
really know
much about how to define shepherd services.  Maybe you could teach me sometime.

Since, you are wanting to submit code, we recommend that you paste your code to
guix-patc...@gnu.org.

https://guix.gnu.org/manual/en/html_node/Submitting-Patches.html#Submitting-Patches

Where do you want your code snippets/documentation to go?  Do you want to add 
to the cookbook?

Or do you want to add to the manual?

Thanks,

Joshua


I think the code snippets should go in the "Service Examples" section of 
the GNU Shepherd manual.






GNU Shepherd config contribution

2022-01-15 Thread Adam Faiz
Hello! I would like to contribute examples of Shepherd services, by 
sending my Shepherd system configuration file that I use. Attached is 
the configuration file.


I hope this will help add more detailed examples to the GNU Shepherd manual.
;; init.scm -- default shepherd configuration file.

;; Services known to shepherd:
;; Add new services (defined using 'make ') to shepherd here by
;; providing them as arguments to 'register-services'.

(register-services
	(make 
		#:provides '(getty@tty2)
		#:requires '()
		#:docstring "The getty@tty2 service provides a getty on tty2."
		#:start (make-forkexec-constructor '("/usr/local/etc/init.d/getty@tty2"))
		#:stop (make-kill-destructor)
		#:respawn? #t)

	(make 
		#:provides '(cron)
		#:requires '()
		#:docstring "The cron service provides execution of regularly scheduled commands."
		#:start (make-forkexec-constructor '("cron" "-f"))
		#:stop (make-kill-destructor)
		#:respawn? #t)

	(make 
		#:provides '(accounts-daemon)
		#:requires '(dbus)
		#:docstring "The accounts-daemon provides the Accounts Service."
		#:start (make-forkexec-constructor '("/usr/lib/accountsservice/accounts-daemon")
#:environment-variables (append (environ) '("GVFS_DISABLE_FUSE=1" "GIO_USE_VFS=local" "GVFS_REMOTE_VOLUME_MONITOR_IGNORE=1")))
		#:stop (make-kill-destructor)
		#:respawn? #t)

	(make 
		#:provides '(apparmor)
		#:requires '()
		#:docstring "Loads AppArmor profiles."
		#:start (make-forkexec-constructor '("/lib/apparmor/apparmor.systemd" "reload"))
		#:stop (make-kill-destructor)
		#:oneshot? #t)

	(make 
		#:provides '(avahi-daemon)
		#:requires '(dbus)
		#:docstring "The avahi-daemon provides the Avahi mDNS/DNS-SD Stack."
		#:start (make-forkexec-constructor '("avahi-daemon" "-s"))
		#:stop (make-kill-destructor)
		#:respawn? #t)

	(make 
		#:provides '(binfmt-support)
		#:requires '()
		#:docstring "Enables support for additional executable binary formats."
		#:start (make-forkexec-constructor '("update-binfmts" "--enable"))
		#:stop (make-system-destructor "update-binfmts --disable")
		#:oneshot? #t)

	(make 
		#:provides '(casper)
		#:requires '()
		#:docstring "Shuts down the 'live' preinstalled system cleanly."
		#:start (make-forkexec-constructor '("casper-stop"))
		#:stop (make-kill-destructor)
		#:oneshot? #t)

	(make 
		#:provides '(colord)
		#:requires '(dbus)
		#:docstring "The colord service is used to manage, install generate Colour Profiles."
		#:start (make-forkexec-constructor '("/usr/libexec/colord") #:user "colord")
		#:stop (make-kill-destructor)
		#:respawn? #t)

	(make 
		#:provides '(console-setup)
		#:requires '()
		#:docstring "Sets the system console font and keymap."
		#:start (make-forkexec-constructor '("/lib/console-setup/console-setup.sh"))
		#:stop (make-kill-destructor)
		#:oneshot? #t)

	(make 
		#:provides '(cups)
		#:requires '()
		#:docstring "The cups service provides the CUPS scheduler."
		#:start (make-forkexec-constructor '("cupsd" "-f"))
		#:stop (make-kill-destructor)
		#:respawn? #t)

	(make 
		#:provides '(cups-browsed)
		#:requires '(cups)
		#:docstring "The cups-browsed service makes remote CUPS printers available locally."
		#:start (make-forkexec-constructor '("cups-browsed"))
		#:stop (make-kill-destructor)
		#:respawn? #t)

	(make 
		#:provides '(dbus)
		#:requires '()
		#:docstring "The dbus service provides the D-Bus System Message Bus."
		#:start (make-forkexec-constructor '("/usr/local/etc/init.d/dbus"))
		#:stop (make-kill-destructor)
		#:respawn? #t)

	(make 
		#:provides '(lightdm display-manager)
		#:requires '(dbus)
		#:docstring "The lightdm service provides the Light Display Manager."
		#:start (make-forkexec-constructor '("/usr/local/etc/init.d/lightdm"))
		#:stop (make-kill-destructor)
		#:respawn? #t)

	(make 
		#:provides '(dm-event)
		#:requires '()
		#:docstring "The dm-event service provides an event monitoring daemon for device-mapper devices."
		#:start (make-forkexec-constructor '("dmeventd" "-f") #:environment-variables (append (environ) '("SD_ACTIVATION=1")))
		#:stop (make-kill-destructor)
		#:respawn? #t)

	(make 
		#:provides '(dns-clean)
		#:requires '()
		#:docstring "Clean up any mess left by 0dns-up"
		#:start (make-forkexec-constructor '("/usr/local/etc/init.d/dns-clean"))
		#:stop (make-kill-destructor)
		#:oneshot? #t)

	(make 
		#:provides '(firewalld)
		#:requires '(dbus polkit)
		#:docstring "The firewalld service provides a dynamically managed firewall."
		#:start (make-forkexec-constructor '("firewalld" "--nofork" "--nopid"))
		#:stop (make-kill-destructor)
		#:respawn? #t)

	(make 
		#:provides '(grub-common)
		#:requires '()
		#:docstring "Record successful boot for GRUB."
		#:start (make-forkexec-constructor '("/usr/local/etc/init.d/grub-common"))
		#:stop (make-kill-destructor)
		#:oneshot? #t)

	(make 
		#:provides '(grub-initrd-fallback)
		#:requires '(grub-common)
		#:docstring "GRUB failed boot detection."
		#:start (make-forkexec-constructor '("/usr/local/etc/init.d/grub-in