* Brain storming cool Guix features
@ 2019-01-04 12:11 Joshua Branson
2019-01-04 16:01 ` Ricardo Wurmus
` (3 more replies)
0 siblings, 4 replies; 31+ messages in thread
From: Joshua Branson @ 2019-01-04 12:11 UTC (permalink / raw)
To: guix-devel
I had some cool ideas/features for things that GuixSD could potentially
add, and I wanted to share. Are any of these possible?
#+BEGIN_SRC scheme
(operating system
(keymap "dvorak")
...)
#+END_SRC
The above would make the bootloader, console, X, and wayland all use the
dvorak layout. That would be a nice feature! I currently use "dvorak",
and it's slightly annoying that grub uses qwerty. :(
#+BEGIN_SRC
(user-account
(name "joshua")
(default-font "font-hack"))
#+END_SRC
The above would set a default font for the user joshua.
How about a hook that stores the user's profile of packages in a
manifest file after every package transaction (upgrade or downgrade)?
#+BEGIN_SRC
(user-account
(name "joshua")
(updates-in-manifest #t)
(manifest-file "/etc/manifest.scm"))
#+END_SRC
How about automatic updates? Since a guixSD user can always downgrade
to the previous version, it would be nice if it would automatically
update my user profile, root profile and reconfigure say once a week.
#+BEGIN_SRC scheme
(operating system
(auto-upgrade #t)
(auto-upgrade-interval 'once-a-week)
...)
#+END_SRC
--
Joshua Branson
Sent from Emacs and Gnus
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Brain storming cool Guix features
2019-01-04 12:11 Brain storming cool Guix features Joshua Branson
@ 2019-01-04 16:01 ` Ricardo Wurmus
2019-01-05 13:59 ` Joshua Branson
2019-01-13 20:18 ` Joshua Branson
2019-01-04 16:10 ` Brain storming cool Guix features Pierre Neidhardt
` (2 subsequent siblings)
3 siblings, 2 replies; 31+ messages in thread
From: Ricardo Wurmus @ 2019-01-04 16:01 UTC (permalink / raw)
To: Joshua Branson; +Cc: guix-devel
Joshua Branson <jbranso@dismail.de> writes:
> I had some cool ideas/features for things that GuixSD could potentially
> add, and I wanted to share. Are any of these possible?
>
> #+BEGIN_SRC scheme
> (operating system
> (keymap "dvorak")
> ...)
> #+END_SRC
>
> The above would make the bootloader, console, X, and wayland all use the
> dvorak layout. That would be a nice feature! I currently use "dvorak",
> and it's slightly annoying that grub uses qwerty. :(
Same here. Some of this might be accomplished with a system service
that extends configuration files with the required settings. Would you
like to give this a try?
> How about automatic updates? Since a guixSD user can always downgrade
> to the previous version, it would be nice if it would automatically
> update my user profile, root profile and reconfigure say once a week.
>
> #+BEGIN_SRC scheme
> (operating system
> (auto-upgrade #t)
> (auto-upgrade-interval 'once-a-week)
> ...)
> #+END_SRC
Cron jobs can be used here via the mcron service.
--
Ricardo
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Brain storming cool Guix features
2019-01-04 12:11 Brain storming cool Guix features Joshua Branson
2019-01-04 16:01 ` Ricardo Wurmus
@ 2019-01-04 16:10 ` Pierre Neidhardt
2019-01-04 16:14 ` John Soo
2019-01-04 16:58 ` znavko
2019-01-07 16:48 ` L p R n d n
3 siblings, 1 reply; 31+ messages in thread
From: Pierre Neidhardt @ 2019-01-04 16:10 UTC (permalink / raw)
To: Joshua Branson; +Cc: guix-devel
[-- Attachment #1: Type: text/plain, Size: 222 bytes --]
Very nice ideas, in particular the manifest-file option!
Note that something like ~/.config/guix/manifest.scm would probably be a better
fit for user-profile manifests.
--
Pierre Neidhardt
https://ambrevar.xyz/
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Brain storming cool Guix features
2019-01-04 16:10 ` Brain storming cool Guix features Pierre Neidhardt
@ 2019-01-04 16:14 ` John Soo
0 siblings, 0 replies; 31+ messages in thread
From: John Soo @ 2019-01-04 16:14 UTC (permalink / raw)
To: Pierre Neidhardt; +Cc: guix-devel, Joshua Branson
Yes, good ideas! I’m curious if per-user packages could be declared in the system configuration. I think nixOS has that feature now and I’m a little jealous...
> On Jan 4, 2019, at 8:10 AM, Pierre Neidhardt <mail@ambrevar.xyz> wrote:
>
> Very nice ideas, in particular the manifest-file option!
>
> Note that something like ~/.config/guix/manifest.scm would probably be a better
> fit for user-profile manifests.
>
> --
> Pierre Neidhardt
> https://ambrevar.xyz/
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Brain storming cool Guix features
2019-01-04 12:11 Brain storming cool Guix features Joshua Branson
2019-01-04 16:01 ` Ricardo Wurmus
2019-01-04 16:10 ` Brain storming cool Guix features Pierre Neidhardt
@ 2019-01-04 16:58 ` znavko
2019-01-06 13:44 ` Amirouche Boubekki
2019-01-07 16:48 ` L p R n d n
3 siblings, 1 reply; 31+ messages in thread
From: znavko @ 2019-01-04 16:58 UTC (permalink / raw)
To: Joshua Branson; +Cc: guix-devel
[-- Attachment #1: Type: text/plain, Size: 2582 bytes --]
Hello! As topic is started, I suggest this to a roadmap http://git.savannah.gnu.org/cgit/guix.git/tree/ROADMAP <http://git.savannah.gnu.org/cgit/guix.git/tree/ROADMAP> :
znavko`s roadmap suggestions:
- total guix architecture guide (not only descriptions of cases ‘environment’, ‘system’, ‘package’ and its options) with pictures,
- interface for searching for substitute servers or a list of available servers
- searching interface for packages substitution (server url, system type, package version), how you can find server where package you need is compiled
- feature for getting source config.scm used in `guix system configure` (for beginners when deleted or modified to unworkable)
- count estimative compilation time for every package in different system configurations and display it for user system configuration when run `guix package -u` or `guix package -i name`
- promotional video with infographics why to choose Guix and GuixSD
Also this:
- wiki with operating system configurations (starting from a subject, but not from existing options): system packages, services configurations with examples and full list of variables even where to paste it,
- Guile and Scheme for Beginners book.
Jan 4, 2019, 12:11 PM by jbranso@dismail.de:
>
> I had some cool ideas/features for things that GuixSD could potentially
> add, and I wanted to share. Are any of these possible?
>
> #+BEGIN_SRC scheme
> (operating system
> (keymap "dvorak")
> ...)
> #+END_SRC
>
> The above would make the bootloader, console, X, and wayland all use the
> dvorak layout. That would be a nice feature! I currently use "dvorak",
> and it's slightly annoying that grub uses qwerty. :(
>
> #+BEGIN_SRC
> (user-account
> (name "joshua")
> (default-font "font-hack"))
> #+END_SRC
>
> The above would set a default font for the user joshua.
>
>
> How about a hook that stores the user's profile of packages in a
> manifest file after every package transaction (upgrade or downgrade)?
>
> #+BEGIN_SRC
> (user-account
> (name "joshua")
> (updates-in-manifest #t)
> (manifest-file "/etc/manifest.scm"))
> #+END_SRC
>
> How about automatic updates? Since a guixSD user can always downgrade
> to the previous version, it would be nice if it would automatically
> update my user profile, root profile and reconfigure say once a week.
>
> #+BEGIN_SRC scheme
> (operating system
> (auto-upgrade #t)
> (auto-upgrade-interval 'once-a-week)
> ...)
> #+END_SRC
>
> --
> Joshua Branson
> Sent from Emacs and Gnus
>
[-- Attachment #2: Type: text/html, Size: 5478 bytes --]
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Brain storming cool Guix features
2019-01-04 16:01 ` Ricardo Wurmus
@ 2019-01-05 13:59 ` Joshua Branson
2019-01-05 17:06 ` Ricardo Wurmus
2019-01-13 20:18 ` Joshua Branson
1 sibling, 1 reply; 31+ messages in thread
From: Joshua Branson @ 2019-01-05 13:59 UTC (permalink / raw)
To: guix-devel
Ricardo Wurmus <rekado@elephly.net> writes:
> Joshua Branson <jbranso@dismail.de> writes:
>
>> I had some cool ideas/features for things that GuixSD could potentially
>> add, and I wanted to share. Are any of these possible?
>>
>> #+BEGIN_SRC scheme
>> (operating system
>> (keymap "dvorak")
>> ...)
>> #+END_SRC
>>
>> The above would make the bootloader, console, X, and wayland all use the
>> dvorak layout. That would be a nice feature! I currently use "dvorak",
>> and it's slightly annoying that grub uses qwerty. :(
>
> Same here. Some of this might be accomplished with a system service
> that extends configuration files with the required settings. Would you
> like to give this a try?
Yes I would! I will probably need some mentoring to figure it all out,
but I will take a go at it. I think I know how to go about trying it.
I'll get back to you next week, when I'll probably need some more
direction.
>
>> How about automatic updates? Since a guixSD user can always downgrade
>> to the previous version, it would be nice if it would automatically
>> update my user profile, root profile and reconfigure say once a week.
>>
>> #+BEGIN_SRC scheme
>> (operating system
>> (auto-upgrade #t)
>> (auto-upgrade-interval 'once-a-week)
>> ...)
>> #+END_SRC
>
> Cron jobs can be used here via the mcron service.
--
Joshua Branson
Sent from Emacs and Gnus
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Brain storming cool Guix features
2019-01-05 13:59 ` Joshua Branson
@ 2019-01-05 17:06 ` Ricardo Wurmus
0 siblings, 0 replies; 31+ messages in thread
From: Ricardo Wurmus @ 2019-01-05 17:06 UTC (permalink / raw)
To: Joshua Branson; +Cc: guix-devel
Hi Joshua,
> Ricardo Wurmus <rekado@elephly.net> writes:
>
>> Joshua Branson <jbranso@dismail.de> writes:
>>
>>> I had some cool ideas/features for things that GuixSD could potentially
>>> add, and I wanted to share. Are any of these possible?
>>>
>>> #+BEGIN_SRC scheme
>>> (operating system
>>> (keymap "dvorak")
>>> ...)
>>> #+END_SRC
>>>
>>> The above would make the bootloader, console, X, and wayland all use the
>>> dvorak layout. That would be a nice feature! I currently use "dvorak",
>>> and it's slightly annoying that grub uses qwerty. :(
>>
>> Same here. Some of this might be accomplished with a system service
>> that extends configuration files with the required settings. Would you
>> like to give this a try?
>
> Yes I would! I will probably need some mentoring to figure it all out,
> but I will take a go at it. I think I know how to go about trying it.
> I'll get back to you next week, when I'll probably need some more
> direction.
Excellent! I recommend looking at the manual section “6.2.15.1 Service
Composition”. We would like to have a service that extends other
existing services — in some cases we want an extension of the
etc-service-type, which adds files to /etc. In other cases we may want
to extend the configuration of some X11 service, which is trickier.
Before you try to write any code at all, it would make sense to figure
out what exactly we want to happen. Currently, the way to configure X11
is a bit awkward: I need to do something like this to override X11
settings:
--8<---------------cut here---------------start------------->8---
(slim-service-type
config => (slim-configuration
(inherit config)
(startx (xorg-start-command
#:configuration-file
(xorg-configuration-file
#:extra-config
(list dvorak-evdev))))))
--8<---------------cut here---------------end--------------->8---
But what should the service do if we aren’t using slim-service-type? It
seems to me that maybe slim-service-type should extend some new
x11-service-type that has its own configuration, instead of having the
X11 configuration be a side effect of specifying the “startx” field of
the slim-configuration.
Feel free to come up with a better way and discuss it here on the list
rather than trying to squeeze the desired behaviour into the current
implementation.
--
Ricardo
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Brain storming cool Guix features
2019-01-04 16:58 ` znavko
@ 2019-01-06 13:44 ` Amirouche Boubekki
2019-01-06 16:33 ` swedebugia
0 siblings, 1 reply; 31+ messages in thread
From: Amirouche Boubekki @ 2019-01-06 13:44 UTC (permalink / raw)
To: znavko; +Cc: guix-devel, Joshua Branson
[-- Attachment #1: Type: text/plain, Size: 266 bytes --]
Le ven. 4 janv. 2019 à 18:14, <znavko@tutanota.com> a écrit :
> - Guile and Scheme for Beginners book.
>
Regarding this topic, I just made a mini game to teach scheme, there very
few exercices, let me know what you think
http://scheme-lang.com/cons/
[-- Attachment #2: Type: text/html, Size: 752 bytes --]
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Brain storming cool Guix features
2019-01-06 13:44 ` Amirouche Boubekki
@ 2019-01-06 16:33 ` swedebugia
2019-01-06 20:04 ` Amirouche Boubekki
0 siblings, 1 reply; 31+ messages in thread
From: swedebugia @ 2019-01-06 16:33 UTC (permalink / raw)
To: Amirouche Boubekki, znavko@tutanota.com; +Cc: guix-devel, Joshua Branson
[-- Attachment #1.1: Type: text/html, Size: 1290 bytes --]
[-- Attachment #1.2: Type: text/plain, Size: 548 bytes --]
Amirouche Boubekki <amirouche.boubekki@gmail.com> skrev: (6 januari 2019 14:44:30 CET)
>Le ven. 4 janv. 2019 à 18:14, <znavko@tutanota.com> a écrit :
>
>
>> - Guile and Scheme for Beginners book.
>>
>
>Regarding this topic, I just made a mini game to teach scheme, there
>very
>few exercices, let me know what you think
>
>http://scheme-lang.com/cons/
I like it!
Maybe we could make a guix variant. Maybe enable selection of topics in the beginning like: config, packaging, derivations...
--
Sent from my p≡p for Android.
[-- Attachment #2: pEpkey.asc --]
[-- Type: application/pgp-keys, Size: 3825 bytes --]
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Brain storming cool Guix features
2019-01-06 16:33 ` swedebugia
@ 2019-01-06 20:04 ` Amirouche Boubekki
0 siblings, 0 replies; 31+ messages in thread
From: Amirouche Boubekki @ 2019-01-06 20:04 UTC (permalink / raw)
To: swedebugia; +Cc: guix-devel, Joshua Branson
[-- Attachment #1: Type: text/plain, Size: 1182 bytes --]
Le dim. 6 janv. 2019 à 17:33, swedebugia <swedebugia@riseup.net> a écrit :
> Amirouche Boubekki <amirouche.boubekki@gmail.com> skrev: (6 januari 2019
> 14:44:30 CET)
> >Le ven. 4 janv. 2019 à 18:14, <znavko@tutanota.com> a écrit :
> >
> >
> >> - Guile and Scheme for Beginners book.
> >>
> >
> >Regarding this topic, I just made a mini game to teach scheme, there
> >very
> >few exercices, let me know what you think
> >
> >http://scheme-lang.com/cons/
>
> I like it!
>
Thanks a lot! I forgot to point out that the code is available at your own
risk at https://github.com/amirouche/scheme-lang/
A tentative explanation of how it works is over the moutain at
https://groups.google.com/forum/#!topic/chibi-scheme/UW11XvoAF1c
> Maybe we could make a guix variant. Maybe enable selection of topics in
> the beginning like: config, packaging, derivations...
>
With that tool at hand, we can imagine many things. My primary thoughts was
about learning scheme hence guile (even if it's a variant of scheme, a lot
of concepts are shared between the two). But we could use it to provide
questions with multiple answers to learn guix specifically.
[-- Attachment #2: Type: text/html, Size: 2148 bytes --]
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Brain storming cool Guix features
2019-01-04 12:11 Brain storming cool Guix features Joshua Branson
` (2 preceding siblings ...)
2019-01-04 16:58 ` znavko
@ 2019-01-07 16:48 ` L p R n d n
2019-01-07 18:16 ` Joshua Branson
2019-01-11 22:32 ` GRUB fallback mechanism [was Re: Brain storming cool Guix features] Leo Famulari
3 siblings, 2 replies; 31+ messages in thread
From: L p R n d n @ 2019-01-07 16:48 UTC (permalink / raw)
To: guix-devel
Hellohello,
Joshua Branson <jbranso@dismail.de> writes:
> I had some cool ideas/features for things that GuixSD could potentially
> add, and I wanted to share. Are any of these possible?
>
> #+BEGIN_SRC scheme
> (operating system
> (keymap "dvorak")
> ...)
> #+END_SRC
>
>
> The above would make the bootloader, console, X, and wayland all use the
> dvorak layout. That would be a nice feature! I currently use "dvorak",
> and it's slightly annoying that grub uses qwerty. :(
>
> #+BEGIN_SRC
> (user-account
> (name "joshua")
> (default-font "font-hack"))
> #+END_SRC
>
>
> The above would set a default font for the user joshua.
>
>
> How about a hook that stores the user's profile of packages in a
> manifest file after every package transaction (upgrade or downgrade)?
>
> #+BEGIN_SRC
> (user-account
> (name "joshua")
> (updates-in-manifest #t)
> (manifest-file "/etc/manifest.scm"))
> #+END_SRC
The ability to deal with user profiles in the configure file would be
awesome. Is it already possible to define a "default" manifest for a
user? If not, could be cool too.
>
> How about automatic updates? Since a guixSD user can always downgrade
> to the previous version, it would be nice if it would automatically
> update my user profile, root profile and reconfigure say once a week.
>
> #+BEGIN_SRC scheme
> (operating system
> (auto-upgrade #t)
> (auto-upgrade-interval 'once-a-week)
> ...)
> #+END_SRC
As said by Ricardo, currently a cron job might just be enough. In the
long term, a tool to manage updating (pause, schedule, configure stuff)
could be useful.
> --
> Joshua Branson
> Sent from Emacs and Gnus
If I can add, I thought about something.
- Currently, I think the only way for a GuixSD installation to break is
if something goes wrong with the bootloader. Might be nice to have a
tool (in the install image I suppose) to recover the bootloader.
Maybe 'guix system init' can deal with that king of cases for now, I
don't know, but a dedicated command might be able to use the original
store, restore previous generations etc.
Bye,
Lprndn
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Brain storming cool Guix features
2019-01-07 16:48 ` L p R n d n
@ 2019-01-07 18:16 ` Joshua Branson
2019-01-11 22:32 ` GRUB fallback mechanism [was Re: Brain storming cool Guix features] Leo Famulari
1 sibling, 0 replies; 31+ messages in thread
From: Joshua Branson @ 2019-01-07 18:16 UTC (permalink / raw)
To: guix-devel
L p R n d n <guix@lprndn.info> writes:
>>
>>
>> The above would set a default font for the user joshua.
>>
>>
>> How about a hook that stores the user's profile of packages in a
>> manifest file after every package transaction (upgrade or downgrade)?
>>
>> #+BEGIN_SRC
>> (user-account
>> (name "joshua")
>> (updates-in-manifest #t)
>> (manifest-file "/etc/manifest.scm"))
>> #+END_SRC
>
> The ability to deal with user profiles in the configure file would be
> awesome. Is it already possible to define a "default" manifest for a
> user? If not, could be cool too.
There is not default method to do this, but it is possible. You'd just
need to write some custom code to do it.
>
>>
>> How about automatic updates? Since a guixSD user can always downgrade
>> to the previous version, it would be nice if it would automatically
>> update my user profile, root profile and reconfigure say once a week.
>>
>> #+BEGIN_SRC scheme
>> (operating system
>> (auto-upgrade #t)
>> (auto-upgrade-interval 'once-a-week)
>> ...)
>> #+END_SRC
>
> As said by Ricardo, currently a cron job might just be enough. In the
> long term, a tool to manage updating (pause, schedule, configure stuff)
> could be useful.
>
>> --
>> Joshua Branson
>> Sent from Emacs and Gnus
>
> If I can add, I thought about something.
>
> - Currently, I think the only way for a GuixSD installation to break is
> if something goes wrong with the bootloader. Might be nice to have a
> tool (in the install image I suppose) to recover the bootloader.
> Maybe 'guix system init' can deal with that king of cases for now, I
> don't know, but a dedicated command might be able to use the original
> store, restore previous generations etc.
That's a great idea. I think guix has a command to generate a boot-able
image. You should be able to add "grub" to the commands that are
available to you.
Then it's just a grub-install command. The arch wiki has good
documentation on this. :)
>
> Bye,
>
> Lprndn
>
--
Joshua Branson
Sent from Emacs and Gnus
^ permalink raw reply [flat|nested] 31+ messages in thread
* GRUB fallback mechanism [was Re: Brain storming cool Guix features]
2019-01-07 16:48 ` L p R n d n
2019-01-07 18:16 ` Joshua Branson
@ 2019-01-11 22:32 ` Leo Famulari
2019-01-12 12:59 ` swedebugia
1 sibling, 1 reply; 31+ messages in thread
From: Leo Famulari @ 2019-01-11 22:32 UTC (permalink / raw)
To: L p R n d n; +Cc: guix-devel
[-- Attachment #1: Type: text/plain, Size: 836 bytes --]
On Mon, Jan 07, 2019 at 05:48:39PM +0100, L p R n d n wrote:
> - Currently, I think the only way for a GuixSD installation to break is
> if something goes wrong with the bootloader. Might be nice to have a
> tool (in the install image I suppose) to recover the bootloader.
> Maybe 'guix system init' can deal with that king of cases for now, I
> don't know, but a dedicated command might be able to use the original
> store, restore previous generations etc.
Apparently GRUB has a feature that records a "fallback" system to boot
if booting fails.
Maybe when reconfiguring, Guix could set the current system as the
fallback so that it would always boot.
If we did that, we'd want to warn the user somehow... not sure how to
achieve that.
Discussion of this feature at NixOS:
https://github.com/NixOS/nixpkgs/issues/26332
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: GRUB fallback mechanism [was Re: Brain storming cool Guix features]
2019-01-11 22:32 ` GRUB fallback mechanism [was Re: Brain storming cool Guix features] Leo Famulari
@ 2019-01-12 12:59 ` swedebugia
2019-01-12 15:58 ` Ricardo Wurmus
0 siblings, 1 reply; 31+ messages in thread
From: swedebugia @ 2019-01-12 12:59 UTC (permalink / raw)
To: Leo Famulari, L p R n d n; +Cc: guix-devel@gnu.org
[-- Attachment #1.1: Type: text/html, Size: 1568 bytes --]
[-- Attachment #1.2: Type: text/plain, Size: 1153 bytes --]
Leo Famulari <leo@famulari.name> skrev: (11 januari 2019 23:32:12 CET)
>On Mon, Jan 07, 2019 at 05:48:39PM +0100, L p R n d n wrote:
>> - Currently, I think the only way for a GuixSD installation to break
>is
>> if something goes wrong with the bootloader. Might be nice to have
>a
>> tool (in the install image I suppose) to recover the bootloader.
>> Maybe 'guix system init' can deal with that king of cases for now,
>I
>> don't know, but a dedicated command might be able to use the
>original
>> store, restore previous generations etc.
>
>Apparently GRUB has a feature that records a "fallback" system to boot
>if booting fails.
>
>Maybe when reconfiguring, Guix could set the current system as the
>fallback so that it would always boot.
>
>If we did that, we'd want to warn the user somehow... not sure how to
>achieve that.
>
>Discussion of this feature at NixOS:
>
>https://github.com/NixOS/nixpkgs/issues/26332
I don't think automatic fallback is a good idea because it unnecessarily complicates a now well working simple part of the OS.
KISS is a nice principle.
--
Sent from my p≡p for Android.
[-- Attachment #2: pEpkey.asc --]
[-- Type: application/pgp-keys, Size: 3825 bytes --]
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: GRUB fallback mechanism [was Re: Brain storming cool Guix features]
2019-01-12 12:59 ` swedebugia
@ 2019-01-12 15:58 ` Ricardo Wurmus
2019-01-13 20:58 ` Ludovic Courtès
0 siblings, 1 reply; 31+ messages in thread
From: Ricardo Wurmus @ 2019-01-12 15:58 UTC (permalink / raw)
To: swedebugia; +Cc: guix-devel@gnu.org, L p R n d n
swedebugia <swedebugia@riseup.net> writes:
> Leo Famulari <leo@famulari.name> skrev: (11 januari 2019 23:32:12 CET)
>>On Mon, Jan 07, 2019 at 05:48:39PM +0100, L p R n d n wrote:
>>> - Currently, I think the only way for a GuixSD installation to break
>>is
>>> if something goes wrong with the bootloader. Might be nice to have
>>a
>>> tool (in the install image I suppose) to recover the bootloader.
>>> Maybe 'guix system init' can deal with that king of cases for now,
>>I
>>> don't know, but a dedicated command might be able to use the
>>original
>>> store, restore previous generations etc.
>>
>>Apparently GRUB has a feature that records a "fallback" system to boot
>>if booting fails.
>>
>>Maybe when reconfiguring, Guix could set the current system as the
>>fallback so that it would always boot.
>>
>>If we did that, we'd want to warn the user somehow... not sure how to
>>achieve that.
>>
>>Discussion of this feature at NixOS:
>>
>>https://github.com/NixOS/nixpkgs/issues/26332
>
> I don't think automatic fallback is a good idea because it unnecessarily complicates a now well working simple part of the OS.
> KISS is a nice principle.
I think exposing this GRUB feature would be good, even if not enabled by
default. It does not seem very complicated and can be very useful for
some users.
Unfortunately, it doesn’t help us when GRUB itself is broken with an
upgrade, which I think is what was suggested earlier.
--
Ricardo
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Brain storming cool Guix features
2019-01-04 16:01 ` Ricardo Wurmus
2019-01-05 13:59 ` Joshua Branson
@ 2019-01-13 20:18 ` Joshua Branson
2019-01-13 21:36 ` bug#25453: Keyboard layout configuration Ludovic Courtès
1 sibling, 1 reply; 31+ messages in thread
From: Joshua Branson @ 2019-01-13 20:18 UTC (permalink / raw)
To: guix-devel
Ricardo Wurmus <rekado@elephly.net> writes:
> Joshua Branson <jbranso@dismail.de> writes:
>
>> I had some cool ideas/features for things that GuixSD could potentially
>> add, and I wanted to share. Are any of these possible?
>>
>> #+BEGIN_SRC scheme
>> (operating system
>> (keymap "dvorak")
>> ...)
>> #+END_SRC
>>
>> The above would make the bootloader, console, X, and wayland all use the
>> dvorak layout. That would be a nice feature! I currently use "dvorak",
>> and it's slightly annoying that grub uses qwerty. :(
>
> Same here. Some of this might be accomplished with a system service
> that extends configuration files with the required settings. Would you
> like to give this a try?
>
Here's what I have been able to do for this week.
td;dr
I believe I have identified conceptually how to do some of these things.
This project breaks down into four areas
Getting the layout to work with:
1) grub
2) linux's initrd
3) console
4) X/wayland's layout
5) How to do the above
1) I was not able to get grub to generate an alternate keyboard layout.
#+BEGIN_SRC sh :results output :exports both
sudo grub-kbdcomp -o /boot/grub/dvorak.gkb dvorak
#+END_SRC
#+RESULTS:
: /home/joshua/.guix-profile/bin/grub-kbdcomp: line 76: ckbcomp: command not found
: ERROR: no valid keyboard layout found. Check the input.
Do we have ckbcomp installed? How do I install that?
2) Linux's initrd
The manual mentions that there are three ways to customize your initrd.
Hopefully I'll be able to use the highlevel base-initrd procedure.
Furthermore, if you need lower-level customization, the ‘initrd’
field of an ‘operating-system’ declaration allows you to specify which
initrd you would like to use. The ‘(gnu system linux-initrd)’ module
provides three ways to build an initrd: the high-level ‘base-initrd’
procedure and the low-level ‘raw-initrd’ and ‘expression->initrd’
procedures.
3) console
This shouldn't be all that hard to do. We just have to add a
console-keymap-service.
4) X/Wayland's layout shouldn't be all that hard to do too. X is just
a simple xorg-start-command tweak. I'm not certain how to do the same
for wayland yet.
5) Now, how do I go about doing the above? I thought about modifying
%base-services and %desktop services, but some users won't use those
variables. So I am going to have to do some change at a deeper level.
I believe that I found the reconfigure module in the guix source code,
and I see the variable called "operating-system-user-services". My
intent is to modify this variable, and that should be how a good-old
reconfigure will change your layout.
Thanks,
--
Joshua Branson
Sent from Emacs and Gnus
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: GRUB fallback mechanism [was Re: Brain storming cool Guix features]
2019-01-12 15:58 ` Ricardo Wurmus
@ 2019-01-13 20:58 ` Ludovic Courtès
2019-01-14 14:15 ` L p R n d n
0 siblings, 1 reply; 31+ messages in thread
From: Ludovic Courtès @ 2019-01-13 20:58 UTC (permalink / raw)
To: Ricardo Wurmus; +Cc: guix-devel@gnu.org, L p R n d n
Ricardo Wurmus <rekado@elephly.net> skribis:
> swedebugia <swedebugia@riseup.net> writes:
>
>> Leo Famulari <leo@famulari.name> skrev: (11 januari 2019 23:32:12 CET)
[...]
>>>Apparently GRUB has a feature that records a "fallback" system to boot
>>>if booting fails.
>>>
>>>Maybe when reconfiguring, Guix could set the current system as the
>>>fallback so that it would always boot.
>>>
>>>If we did that, we'd want to warn the user somehow... not sure how to
>>>achieve that.
>>>
>>>Discussion of this feature at NixOS:
>>>
>>>https://github.com/NixOS/nixpkgs/issues/26332
>>
>> I don't think automatic fallback is a good idea because it unnecessarily complicates a now well working simple part of the OS.
>> KISS is a nice principle.
>
> I think exposing this GRUB feature would be good, even if not enabled by
> default. It does not seem very complicated and can be very useful for
> some users.
I agree.
> Unfortunately, it doesn’t help us when GRUB itself is broken with an
> upgrade, which I think is what was suggested earlier.
We’ll have to assume (and ensure!) this doesn’t happen…
Ludo’.
^ permalink raw reply [flat|nested] 31+ messages in thread
* bug#25453: Keyboard layout configuration
2019-01-13 20:18 ` Joshua Branson
@ 2019-01-13 21:36 ` Ludovic Courtès
2019-01-13 22:49 ` nee
2019-01-13 22:49 ` nee
0 siblings, 2 replies; 31+ messages in thread
From: Ludovic Courtès @ 2019-01-13 21:36 UTC (permalink / raw)
To: guix-devel; +Cc: 25453
Hello Joshua,
Thanks a lot for working on this! I’d really like 1.0 to provide a
reasonable way to configure the keyboard layout once and for all.
I suggest we continue the discussion in the context of
<https://issues.guix.info/issue/25453>.
Joshua Branson <jbranso@dismail.de> skribis:
> I believe I have identified conceptually how to do some of these things.
>
> This project breaks down into four areas
>
> Getting the layout to work with:
>
> 1) grub
> 2) linux's initrd
> 3) console
> 4) X/wayland's layout
> 5) How to do the above
There’s also the question of how to “translate” keyboard layouts among
all of these. Debian has a mechanism whereby you specify the layout in
a single place, and it then does the right thing for GRUB, Linux, X, and
so on. I forgot how it works, but we should aim for something like
that.
> 1) I was not able to get grub to generate an alternate keyboard layout.
>
> #+BEGIN_SRC sh :results output :exports both
> sudo grub-kbdcomp -o /boot/grub/dvorak.gkb dvorak
> #+END_SRC
>
> #+RESULTS:
> : /home/joshua/.guix-profile/bin/grub-kbdcomp: line 76: ckbcomp: command not found
> : ERROR: no valid keyboard layout found. Check the input.
>
> Do we have ckbcomp installed? How do I install that?
I searched on packages.debian.org, and it’s in ‘console-setup’, which
happens to be the thing I was mentioning above: :-)
https://packages.debian.org/stretch/console-setup
It looks like Debian is actually upstream for this package, but it may
be usable on non-Debian systems as well.
> 2) Linux's initrd
We’d probably need to invoke ‘loadkeys’ or similar from the initrd, and
to embed only the specific layout files that we need. See (gnu system
linux-initrd).
> 3) console
> This shouldn't be all that hard to do. We just have to add a
> console-keymap-service.
Yes, #2 and #3 are actually the same thing (and redundant), except that
in #2 we have to be careful not to embed too much in the initrd.
> 4) X/Wayland's layout shouldn't be all that hard to do too. X is just
> a simple xorg-start-command tweak. I'm not certain how to do the same
> for wayland yet.
OK.
> 5) Now, how do I go about doing the above? I thought about modifying
> %base-services and %desktop services, but some users won't use those
> variables. So I am going to have to do some change at a deeper level.
> I believe that I found the reconfigure module in the guix source code,
> and I see the variable called "operating-system-user-services". My
> intent is to modify this variable, and that should be how a good-old
> reconfigure will change your layout.
I think we’ll have to use ‘console-setup’.
The difficulty is that we want a single ‘keyboard-layout’ field (say) in
the OS config that would have an effect on GRUB, the Linux console,
Xorg, and Wayland, *if* they are used (setting the keyboard layout
shouldn’t require you to use Xorg, for instance.)
So I think we cannot use the standard Guix-y static approach where
services are instantiated directly with the right configuration.
Instead, Xorg & co. may need to look for a config file at a fixed
location, say /etc/guix/keyboard-layout.conf, pretty much the same way
it’s done on Debian & co.
Thoughts?
Ludo’.
^ permalink raw reply [flat|nested] 31+ messages in thread
* bug#25453: Keyboard layout configuration
2019-01-13 21:36 ` bug#25453: Keyboard layout configuration Ludovic Courtès
@ 2019-01-13 22:49 ` nee
2019-01-13 22:49 ` nee
1 sibling, 0 replies; 31+ messages in thread
From: nee @ 2019-01-13 22:49 UTC (permalink / raw)
To: guix-devel; +Cc: 25453
[-- Attachment #1: Type: text/plain, Size: 938 bytes --]
Am 13.01.19 um 22:36 schrieb Ludovic Courtès:
>> 1) grub
>> 2) linux's initrd
>> 3) console
>> 4) X/wayland's layout
>> 5) How to do the above
>
Hello, I was working on this recently and made a patch for X11 that
fixes the layout in the slim login and when you login into gnome3 or
whatever desktop environment.
I also made a patch for grub that fixes the layout when you edit the
boot command for a menu entry, but not for the luks prompt. I think that
might require installing a custom grub image (grub-mkimage) with
grub-bios-setup instead of using grub-install (I saw some posts on the
archlinux forum I don't have a link to right now). But this patch should
lay the groundwork for it, as it can generate grub keyboard config files.
The patches are pretty dirty, but I might not have that much time in the
next few weeks to work on this, and since is hot on the mailing list
right now, I'm sending them here now.
Happy hacking!
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-bootloader-grub-custom-keyboard-layout.patch --]
[-- Type: text/x-patch; name="0001-bootloader-grub-custom-keyboard-layout.patch", Size: 15512 bytes --]
From 5612630ea4324339322ba726846d1962aaa86dc8 Mon Sep 17 00:00:00 2001
From: nee <nee.git@cock.li>
Date: Sat, 5 Jan 2019 22:07:30 +0100
Subject: [PATCH] bootloader: grub custom keyboard-layout, but luks password
prompts are still unaffected
---
gnu/bootloader/grub.scm | 128 +++++++++++++++++++++++------------
gnu/packages/bootloaders.scm | 11 +++
gnu/packages/xorg.scm | 121 +++++++++++++++++++++++++++++++++
3 files changed, 215 insertions(+), 45 deletions(-)
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm
index 161e8b3d0..ca9f2f565 100644
--- a/gnu/bootloader/grub.scm
+++ b/gnu/bootloader/grub.scm
@@ -29,6 +29,7 @@
#:use-module (gnu system file-systems)
#:autoload (gnu packages bootloaders) (grub)
#:autoload (gnu packages gtk) (guile-cairo guile-rsvg)
+ #:autoload (gnu packages xorg) (xkeyboard-config)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (srfi srfi-1)
@@ -46,6 +47,8 @@
%background-image
%default-theme
+ grub-keyboard-layout-file
+
grub-bootloader
grub-efi-bootloader
grub-mkrescue-bootloader
@@ -219,11 +222,35 @@ fi~%"
;;; Configuration file.
;;;
+(define* (grub-keyboard-layout-file
+ #:key
+ (layout #f) ; something like "fr" "de" "ru"
+ (grub grub)
+ (xkeyboard-config xkeyboard-config))
+ "Returns a Gexp that generates a xkb keyboard LAYOUT file that GRUB can load.
+The LAYOUT must be present in XKEYBOARD-CONFIGs share/X11xkb/symbols/ directory.
+When LAYOUT is #f no file will be generated and 'no-keymap-used is
+returned in a gexp."
+ (define builder
+ #~(zero?
+ (system* (string-append #$grub "/bin/grub-kbdcomp")
+ (string-append #$xkeyboard-config
+ "/share/X11/xkb/symbols/" #$layout)
+ (string-append "-I" #$xkeyboard-config
+ "/share/X11/xkb")
+ "-rules" "base"
+ "-o" #$output)))
+
+ (if layout
+ (computed-file "keyboard-layout.xkb" builder)
+ (gexp 'no-keymap-used)))
+
+
(define (grub-setup-io config)
"Return GRUB commands to configure the input / output interfaces. The result
is a string that can be inserted in grub.cfg."
(let* ((symbols->string (lambda (list)
- (string-join (map symbol->string list) " ")))
+ (string-join (map symbol->string list) " ")))
(outputs (bootloader-configuration-terminal-outputs config))
(inputs (bootloader-configuration-terminal-inputs config))
(unit (bootloader-configuration-serial-unit config))
@@ -233,41 +260,41 @@ is a string that can be inserted in grub.cfg."
;; as documented in GRUB manual section "Simple Configuration
;; Handling".
(valid-outputs '(console serial serial_0 serial_1 serial_2 serial_3
- gfxterm vga_text mda_text morse spkmodem))
+ gfxterm vga_text mda_text morse spkmodem))
(valid-inputs '(console serial serial_0 serial_1 serial_2 serial_3
- at_keyboard usb_keyboard))
+ at_keyboard usb_keyboard))
(io (string-append
- "terminal_output "
- (symbols->string
- (map
- (lambda (output)
- (if (memq output valid-outputs) output #f)) outputs)) "\n"
- (if (null? inputs)
- ""
- (string-append
- "terminal_input "
- (symbols->string
- (map
- (lambda (input)
- (if (memq input valid-inputs) input #f)) inputs)) "\n"))
- ;; UNIT and SPEED are arguments to the same GRUB command
- ;; ("serial"), so we process them together.
- (if (or unit speed)
- (string-append
- "serial"
- (if unit
- ;; COM ports 1 through 4
- (if (and (exact-integer? unit) (<= unit 3) (>= unit 0))
- (string-append " --unit=" (number->string unit))
- #f)
- "")
- (if speed
- (if (exact-integer? speed)
- (string-append " --speed=" (number->string speed))
- #f)
- ""))
- ""))))
+ "terminal_output "
+ (symbols->string
+ (map
+ (lambda (output)
+ (if (memq output valid-outputs) output #f)) outputs)) "\n"
+ (if (null? inputs)
+ ""
+ (string-append
+ "terminal_input "
+ (symbols->string
+ (map
+ (lambda (input)
+ (if (memq input valid-inputs) input #f)) inputs)) "\n"))
+ ;; UNIT and SPEED are arguments to the same GRUB command
+ ;; ("serial"), so we process them together.
+ (if (or unit speed)
+ (string-append
+ "serial"
+ (if unit
+ ;; COM ports 1 through 4
+ (if (and (exact-integer? unit) (<= unit 3) (>= unit 0))
+ (string-append " --unit=" (number->string unit))
+ #f)
+ "")
+ (if speed
+ (if (exact-integer? speed)
+ (string-append " --speed=" (number->string speed))
+ #f)
+ ""))
+ ""))))
(format #f "~a" io)))
(define (grub-root-search device file)
@@ -293,6 +320,8 @@ code."
(define* (grub-configuration-file config entries
#:key
+ (keyboard-layout-file
+ (grub-keyboard-layout-file))
(system (%current-system))
(old-entries '()))
"Return the GRUB configuration file corresponding to CONFIG, a
@@ -329,6 +358,14 @@ entries corresponding to old generations of the system."
(menu-entry-device-mount-point (first all-entries))
#:system system
#:port #~port))
+ (define keyboard-layout-config
+ #~(let ((keymap #$keyboard-layout-file))
+ (if (eq? 'no-keymap-used keymap)
+ (format port "")
+ (format port "terminal_input at_keyboard
+insmod keylayouts
+keymap ~a
+" keymap))))
(define builder
#~(call-with-output-file #$output
@@ -338,6 +375,7 @@ entries corresponding to old generations of the system."
# will be lost upon reconfiguration.
")
#$sugar
+ #$keyboard-layout-config
(format port "
set default=~a
set timeout=~a~%"
@@ -426,17 +464,17 @@ submenu \"GNU system, old configurations...\" {~%")
(define-syntax grub-configuration
(syntax-rules (grub)
- ((_ (grub package) fields ...)
- (if (eq? package grub)
- (bootloader-configuration
- (bootloader grub-bootloader)
- fields ...)
- (bootloader-configuration
- (bootloader grub-efi-bootloader)
- fields ...)))
- ((_ fields ...)
- (bootloader-configuration
- (bootloader grub-bootloader)
- fields ...))))
+ ((_ (grub package) fields ...)
+ (if (eq? package grub)
+ (bootloader-configuration
+ (bootloader grub-bootloader)
+ fields ...)
+ (bootloader-configuration
+ (bootloader grub-efi-bootloader)
+ fields ...)))
+ ((_ fields ...)
+ (bootloader-configuration
+ (bootloader grub-bootloader)
+ fields ...))))
;;; grub.scm ends here
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 2a595fafa..3cc331dcb 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -55,6 +55,7 @@
#:use-module (gnu packages swig)
#:use-module (gnu packages valgrind)
#:use-module (gnu packages virtualization)
+ #:use-module (gnu packages xorg)
#:use-module (gnu packages web)
#:use-module (guix build-system gnu)
#:use-module (guix download)
@@ -110,6 +111,12 @@
;; Make the font visible.
(copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz")
(system* "gunzip" "unifont.bdf.gz")
+
+ ;; patch the path to ckbcomp
+ (substitute* "util/grub-kbdcomp.in"
+ (("^ckbcomp ")
+ (string-append (assoc-ref inputs "console-setup")
+ "/bin/ckbcomp ")))
#t))
(add-before 'check 'disable-flaky-test
(lambda _
@@ -134,6 +141,10 @@
;; to determine whether the root file system is RAID.
("mdadm" ,mdadm)
+ ;; console-setup's ckbcomp is invoked by grub-kbdcomp
+ ;; it is required for generating alternative keyboard layouts
+ ("console-setup" ,console-setup)
+
("freetype" ,freetype)
;; ("libusb" ,libusb)
;; ("fuse" ,fuse)
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 9aa65291b..0a95a21cf 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -46,6 +46,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages anthy)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@@ -6258,3 +6259,123 @@ selecting windows by pointing select actual focused X11 window, selecting by
window name or id, forcing toggle, increase or decrease opacity.")
(home-page "http://forchheimer.se/transset-df/")
(license license:x11)))
+
+(define-public bdfresize
+ (package
+ (name "bdfresize")
+ (version "1.5-11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://salsa.debian.org/debian/bdfresize/-/archive/debian/"
+ version "/bdfresize-debian-"version ".tar.bz2"))
+ (sha256
+ (base32
+ "1fcn0hhzk8g3h0x50n982jwgsivhkqfd50bqs3iv2db3j4bnxp51"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(;; #:make-flags
+ ;; (let ((bash (assoc-ref %build-inputs "bash"))
+ ;; (out (assoc-ref %outputs "out")))
+ ;; (list (string-append "SHELL=" bash "/bin/bash")
+ ;; ;; (string-append "prefix=" out)
+ ;; ))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key build configure-flags outputs inputs
+ #:allow-other-keys #:rest args)
+ (let ((out (assoc-ref outputs "out")))
+ ;; The default configure tries to pass
+ ;; SHELL=/gnu/store/…-bash-minimal-4.4.23/bin/bash
+ ;; This breaks the configure script with:
+ ;; "error: can only configure for one host and one target at a time"
+ (setenv "CONFIG_SHELL"
+ (string-append (assoc-ref %build-inputs "bash")
+ "/bin/bash"))
+ (zero? (system* "./configure"
+
+ "--build" build
+ "--prefix" out)))))
+ (add-after 'configure 'fix-for-new-gcc
+ ;; TODO might upstream, once upstream is back
+ (lambda _
+ (substitute* "charresize.c"
+ (("char\t\\*malloc\\(\\);")
+ ""))
+ #t)))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs `(("perl" ,perl)))
+ (synopsis "")
+ (description "")
+ ;; latest upstream vanished, using debian fork for now
+ ;; used to be: http://openlab.jp/efont/
+ (home-page "https://tracker.debian.org/pkg/bdfresize")
+ (license license:x11)) )
+
+(define-public console-setup
+ (package
+ (name "console-setup")
+ (version "1.188")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://salsa.debian.org/installer-team/console-setup/-/archive/"
+ version "/console-setup-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "1v6zfnsp1fakv1q8b68wdjjxscpw2sbmw2fpqw5af4b3isha5sgr"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:make-flags
+ (let ((bash (assoc-ref %build-inputs "bash"))
+ (out (assoc-ref %outputs "out")))
+ (list (string-append "SHELL=" bash "/bin/bash")
+ ;; (string-append "prefix=" out)
+ ))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-before 'build 'make-doubled-bdfs
+ (lambda* (#:key inputs #:allow-other-keys)
+ (with-directory-excursion "Fonts"
+ (zero? (system* (string-append (assoc-ref inputs "make")
+ "/bin/make")
+ "doubled_bdfs"
+ (string-append "SHELL="
+ (assoc-ref inputs "bash")
+ "/bin/bash"))))))
+ (delete 'check)
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref %outputs "out")))
+ (zero? (system* (string-append (assoc-ref inputs "make")
+ "/bin/make")
+ "install-linux"
+ (string-append "prefix=" out)
+ (string-append "SHELL="
+ (assoc-ref inputs "bash")
+ "/bin/bash")))))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ;; ("bash" ,bash)
+ ("bdftopcf" ,bdftopcf)
+ ("bdfresize" ,bdfresize)
+ ("sharutils" ,sharutils)
+ ("make" ,gnu-make)
+ ))
+ (inputs `(("perl" ,perl)))
+ (synopsis "")
+ (description "console-setup provides the console with the same
+keyboard configuration scheme that X Window System has.
+In result, there is no need to duplicate or change the console keyboard
+files just to make simple customizations such as the use of dead keys,
+the key functioning as AltGr or Compose key, the key(s) to switch between
+Latin and non-Latin layouts, etc. Besides the keyboard,
+the package configures also the font on the console.
+It includes a rich collection of fonts and supports several languages that
+ would be otherwise unsupported on the console (such as Armenian, Georgian,
+ Lao and Thai).")
+ (home-page "https://salsa.debian.org/installer-team/console-setup/")
+ (license license:x11)))
--
2.20.1
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001-services-Init-the-keyboard-layout-in-xorg-configurat.patch --]
[-- Type: text/x-patch; name="0001-services-Init-the-keyboard-layout-in-xorg-configurat.patch", Size: 12277 bytes --]
From 54b0b2a8b29a797932bf9a65c7f2e3981a630425 Mon Sep 17 00:00:00 2001
From: nee <nee.git@cock.li>
Date: Sat, 5 Jan 2019 23:43:42 +0100
Subject: [PATCH] services: Init the keyboard-layout in
xorg-configuration-directory.
* doc/guix.texi (X Window):
Document keyboard-layout and keyboard-variant for xorg-start-command.
Remove the example about setting the keyboard-layout through extra-config.
* gnu/services/xorg.scm (xorg-configuration-file):
Add keyboard-layout and keyboard-variant arguments.
* gnu/system/examples/desktop.tmpl:
Add keyboard-layout and keyboard-variant for xorg.
* gnu/system/examples/lightweight-desktop.tmpl:
Add keyboard-layout and keyboard-variant for xorg.
---
doc/guix.texi | 69 +++++---------------
gnu/services/xorg.scm | 25 +++++--
gnu/system/examples/desktop.tmpl | 13 +++-
gnu/system/examples/lightweight-desktop.tmpl | 13 +++-
4 files changed, 60 insertions(+), 60 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index f86a2885a..2a915c07d 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -48,7 +48,7 @@ Copyright @copyright{} 2017, 2018 Tobias Geerinckx-Rice@*
Copyright @copyright{} 2017 George Clemmer@*
Copyright @copyright{} 2017 Andy Wingo@*
Copyright @copyright{} 2017, 2018 Arun Isaac@*
-Copyright @copyright{} 2017 nee@*
+Copyright @copyright{} 2017, 2019 nee@*
Copyright @copyright{} 2018 Rutger Helling@*
Copyright @copyright{} 2018 Oleg Pykhalov@*
Copyright @copyright{} 2018 Mike Gerwitz@*
@@ -1004,7 +1004,7 @@ similar file. It can be converted to the OpenSSH format using
@command{lsh-export-key} (@pxref{Converting keys,,, lsh, LSH Manual}):
@example
-$ lsh-export-key --openssh < /etc/lsh/host-key.pub
+$ lsh-export-key --openssh < /etc/lsh/host-key.pub
ssh-rsa AAAAB3NzaC1yc2EAAAAEOp8FoQAAAQEAs1eB46LV@dots{}
@end example
@@ -2807,13 +2807,13 @@ produced by @command{guix pull}, along with details about their provenance:
@example
$ guix pull -l
-Generation 1 Jun 10 2018 00:18:18
+Generation 1 Jun 10 2018 00:18:18
guix 65956ad
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: origin/master
commit: 65956ad3526ba09e1f7a40722c96c6ef7c0936fe
-Generation 2 Jun 11 2018 11:02:49
+Generation 2 Jun 11 2018 11:02:49
guix e0cc7f6
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: origin/master
@@ -2823,7 +2823,7 @@ Generation 2 Jun 11 2018 11:02:49
guile2.0-guix@@0.14.0-12.77a1aac, guix@@0.14.0-12.77a1aac,
heimdal@@7.5.0, milkytracker@@1.02.00, nix@@2.0.4
-Generation 3 Jun 13 2018 23:31:07 (current)
+Generation 3 Jun 13 2018 23:31:07 (current)
guix 844cc1c
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: origin/master
@@ -3018,7 +3018,7 @@ modules:
@example
$ guix pull --list-generations
@dots{}
-Generation 19 Aug 27 2018 16:20:48
+Generation 19 Aug 27 2018 16:20:48
guix d894ab8
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
@@ -3255,7 +3255,7 @@ and commit IDs (@pxref{Channels}):
@example
$ guix describe
-Generation 10 Sep 03 2018 17:32:44 (current)
+Generation 10 Sep 03 2018 17:32:44 (current)
guix e0fa68c
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
@@ -4342,9 +4342,9 @@ build file @file{build.xml} with tasks to build the specified jar
archive. In this case the parameter @code{#:source-dir} can be used to
specify the source sub-directory, defaulting to ``src''.
-The @code{#:main-class} parameter can be used with the minimal ant
-buildfile to specify the main class of the resulting jar. This makes the
-jar file executable. The @code{#:test-include} parameter can be used to
+The @code{#:main-class} parameter can be used with the minimal ant
+buildfile to specify the main class of the resulting jar. This makes the
+jar file executable. The @code{#:test-include} parameter can be used to
specify the list of junit tests to run. It defaults to
@code{(list "**/*Test.java")}. The @code{#:test-exclude} can be used to
disable some tests. It defaults to @code{(list "**/Abstract*.java")},
@@ -12949,12 +12949,15 @@ type @code{<sddm-configuration>}.
@deffn {Scheme Procedure} xorg-start-command [#:guile] @
[#:modules %default-xorg-modules] @
[#:fonts %default-xorg-fonts] @
+ [#:keyboard-layout "us"] @
+ [#:keyboard-variant #f] @
[#:configuration-file (xorg-configuration-file @dots{})] @
[#:xorg-server @var{xorg-server}]
Return a @code{startx} script in which @var{modules}, a list of X module
-packages, and @var{fonts}, a list of X font directories, are available. See
-@code{xorg-wrapper} for more details on the arguments. The result should be
-used in place of @code{startx}.
+packages, and @var{fonts}, a list of X font directories, are available.
+It will use the @var{keyboard-layout} with the @var{keyboard-variant}
+if it exists in @var{xkeyboard-config}. See @code{xorg-wrapper} for more
+details on the arguments. The result should be used in place of @code{startx}.
Usually the X server is started by a login manager.
@end deffn
@@ -12982,44 +12985,6 @@ resolutions---e.g., @code{((1024 768) (640 480))}.
Last, @var{extra-config} is a list of strings or objects appended to the
configuration file. It is used to pass extra text to be
added verbatim to the configuration file.
-
-@cindex keymap
-@cindex keyboard layout
-This procedure is especially useful to configure a different keyboard layout
-than the default US keymap. For instance, to use the ``bépo'' keymap by
-default on the display manager:
-
-@example
-(define bepo-evdev
- "Section \"InputClass\"
- Identifier \"evdev keyboard catchall\"
- Driver \"evdev\"
- MatchIsKeyboard \"on\"
- Option \"xkb_layout\" \"fr\"
- Option \"xkb_variant\" \"bepo\"
-EndSection")
-
-(operating-system
- ...
- (services
- (modify-services %desktop-services
- (slim-service-type config =>
- (slim-configuration
- (inherit config)
- (startx (xorg-start-command
- #:configuration-file
- (xorg-configuration-file
- #:extra-config
- (list bepo-evdev)))))))))
-@end example
-
-The @code{MatchIsKeyboard} line specifies that we only apply the configuration
-to keyboards. Without this line, other devices such as touchpad may not work
-correctly because they will be attached to the wrong driver. In this example,
-the user typically used @code{setxkbmap fr bepo} to set their favorite keymap
-once logged in. The first argument corresponds to the layout, while the second
-argument corresponds to the variant. The @code{xkb_variant} line can be omitted
-to select the default variant.
@end deffn
@deffn {Scheme Procedure} screen-locker-service @var{package} [@var{program}]
@@ -22727,7 +22692,7 @@ extends: shepherd-root
description: Install the given fonts on the specified ttys (fonts are
+ per virtual console on GNU/Linux). The value of this service is a list
+ of tty/font pairs like:
-+
++
+ '(("tty1" . "LatGrkCyr-8x16"))
relevance: 20
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index ea8433af3..f41c5dfe8 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2019 nee <nee-git@hidamari.blue>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -121,6 +122,8 @@
(modules %default-xorg-modules)
(fonts %default-xorg-fonts)
(drivers '()) (resolutions '())
+ (keyboard-layout #f)
+ (keyboard-variant #f)
(extra-config '()))
"Return a configuration file for the Xorg server containing search paths for
all the common drivers.
@@ -222,6 +225,21 @@ EndSection\n" port)
port)
(newline port)
+ (when #$keyboard-layout
+ (display "Section \"InputClass\"
+ Identifier \"evdev keyboard catchall\"
+ MatchIsKeyboard \"on\"\n" port)
+ (format port
+ " Option \"XkbLayout\" ~s\n" #$keyboard-layout)
+ (when #$keyboard-variant
+ (format
+ port
+ " Option \"XkbVariant\" ~s\n" #$keyboard-variant))
+ (display
+ " MatchDevicePath \"/dev/input/event*\"
+ Driver \"evdev\"
+EndSection\n" port))
+
(for-each (lambda (config)
(display config port))
'#$extra-config)))))
@@ -229,7 +247,7 @@ EndSection\n" port)
(computed-file "xserver.conf" build))
-(define (xorg-configuration-directory modules)
+(define* (xorg-configuration-directory modules)
"Return a directory that contains the @code{.conf} files for X.org that
includes the @code{share/X11/xorg.conf.d} directories of each package listed
in @var{modules}."
@@ -255,6 +273,7 @@ in @var{modules}."
files)
#t))))
+
(define* (xorg-wrapper #:key
(guile (canonical-package guile-2.0))
(modules %default-xorg-modules)
@@ -290,9 +309,7 @@ in place of @code{/usr/bin/X}."
#:fonts fonts))
(xorg-server xorg-server))
"Return a @code{startx} script in which @var{modules}, a list of X module
-packages, and @var{fonts}, a list of X font directories, are available. See
-@code{xorg-wrapper} for more details on the arguments. The result should be
-used in place of @code{startx}."
+packages, and @var{fonts}, a list of X font directories, are available."
(define X
(xorg-wrapper #:guile guile
#:configuration-file configuration-file
diff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmpl
index 1b8d46afa..cb561c4e5 100644
--- a/gnu/system/examples/desktop.tmpl
+++ b/gnu/system/examples/desktop.tmpl
@@ -3,7 +3,7 @@
;; root partition is encrypted with LUKS.
(use-modules (gnu) (gnu system nss))
-(use-service-modules desktop)
+(use-service-modules desktop xorg)
(use-package-modules certs gnome)
(operating-system
@@ -52,7 +52,16 @@
;; NetworkManager, and more.
(services (cons* (gnome-desktop-service)
(xfce-desktop-service)
- %desktop-services))
+ (modify-services %desktop-services
+ (slim-service-type config =>
+ (slim-configuration
+ (inherit config)
+ (startx
+ (xorg-start-command
+ #:configuration-file
+ (xorg-configuration-file
+ #:keyboard-layout "us"
+ #:keyboard-variant #f))))))))
;; Allow resolution of '.local' host names with mDNS.
(name-service-switch %mdns-host-lookup-nss))
diff --git a/gnu/system/examples/lightweight-desktop.tmpl b/gnu/system/examples/lightweight-desktop.tmpl
index 360ee62ff..c5ca4a3db 100644
--- a/gnu/system/examples/lightweight-desktop.tmpl
+++ b/gnu/system/examples/lightweight-desktop.tmpl
@@ -3,7 +3,7 @@
;; environments.
(use-modules (gnu) (gnu system nss))
-(use-service-modules desktop)
+(use-service-modules desktop xorg)
(use-package-modules bootloaders certs ratpoison suckless wm)
(operating-system
@@ -46,7 +46,16 @@
;; Use the "desktop" services, which include the X11
;; log-in service, networking with NetworkManager, and more.
- (services %desktop-services)
+ (services (modify-services %desktop-services
+ (slim-service-type config =>
+ (slim-configuration
+ (inherit config)
+ (startx
+ (xorg-start-command
+ #:configuration-file
+ (xorg-configuration-file
+ #:keyboard-layout "us"
+ #:keyboard-variant #f)))))))
;; Allow resolution of '.local' host names with mDNS.
(name-service-switch %mdns-host-lookup-nss))
--
2.20.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: Keyboard layout configuration
2019-01-13 21:36 ` bug#25453: Keyboard layout configuration Ludovic Courtès
2019-01-13 22:49 ` nee
@ 2019-01-13 22:49 ` nee
2019-01-15 22:21 ` Ludovic Courtès
` (3 more replies)
1 sibling, 4 replies; 31+ messages in thread
From: nee @ 2019-01-13 22:49 UTC (permalink / raw)
To: guix-devel; +Cc: 25453
[-- Attachment #1: Type: text/plain, Size: 962 bytes --]
Am 13.01.19 um 22:36 schrieb Ludovic Courtès:
>> 1) grub
>> 2) linux's initrd
>> 3) console
>> 4) X/wayland's layout
>> 5) How to do the above
>
Hello, I was working on this recently and made a patch for X11 that
fixes the layout in the slim login and when you login into gnome3 or
whatever desktop environment.
I also made a patch for grub that fixes the layout when you edit the
boot command for a menu entry, but not for the luks prompt. I think that
might require installing a custom grub image (grub-mkimage) with
grub-bios-setup instead of using grub-install (I saw some posts on the
archlinux forum I don't have a link to right now). But this patch should
lay the groundwork for it, as it can generate grub keyboard config files.
The patches are pretty dirty, but I might not have that much time in the
next few weeks to work on this, and since is hot on the mailing list
right now, I'm sending them here now.
Happy hacking!
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-bootloader-grub-custom-keyboard-layout.patch --]
[-- Type: text/x-patch; name="0001-bootloader-grub-custom-keyboard-layout.patch", Size: 15893 bytes --]
From 5612630ea4324339322ba726846d1962aaa86dc8 Mon Sep 17 00:00:00 2001
From: nee <nee.git@cock.li>
Date: Sat, 5 Jan 2019 22:07:30 +0100
Subject: [PATCH] bootloader: grub custom keyboard-layout, but luks password
prompts are still unaffected
---
gnu/bootloader/grub.scm | 128 +++++++++++++++++++++++------------
gnu/packages/bootloaders.scm | 11 +++
gnu/packages/xorg.scm | 121 +++++++++++++++++++++++++++++++++
3 files changed, 215 insertions(+), 45 deletions(-)
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm
index 161e8b3d0..ca9f2f565 100644
--- a/gnu/bootloader/grub.scm
+++ b/gnu/bootloader/grub.scm
@@ -29,6 +29,7 @@
#:use-module (gnu system file-systems)
#:autoload (gnu packages bootloaders) (grub)
#:autoload (gnu packages gtk) (guile-cairo guile-rsvg)
+ #:autoload (gnu packages xorg) (xkeyboard-config)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (srfi srfi-1)
@@ -46,6 +47,8 @@
%background-image
%default-theme
+ grub-keyboard-layout-file
+
grub-bootloader
grub-efi-bootloader
grub-mkrescue-bootloader
@@ -219,11 +222,35 @@ fi~%"
;;; Configuration file.
;;;
+(define* (grub-keyboard-layout-file
+ #:key
+ (layout #f) ; something like "fr" "de" "ru"
+ (grub grub)
+ (xkeyboard-config xkeyboard-config))
+ "Returns a Gexp that generates a xkb keyboard LAYOUT file that GRUB can load.
+The LAYOUT must be present in XKEYBOARD-CONFIGs share/X11xkb/symbols/ directory.
+When LAYOUT is #f no file will be generated and 'no-keymap-used is
+returned in a gexp."
+ (define builder
+ #~(zero?
+ (system* (string-append #$grub "/bin/grub-kbdcomp")
+ (string-append #$xkeyboard-config
+ "/share/X11/xkb/symbols/" #$layout)
+ (string-append "-I" #$xkeyboard-config
+ "/share/X11/xkb")
+ "-rules" "base"
+ "-o" #$output)))
+
+ (if layout
+ (computed-file "keyboard-layout.xkb" builder)
+ (gexp 'no-keymap-used)))
+
+
(define (grub-setup-io config)
"Return GRUB commands to configure the input / output interfaces. The result
is a string that can be inserted in grub.cfg."
(let* ((symbols->string (lambda (list)
- (string-join (map symbol->string list) " ")))
+ (string-join (map symbol->string list) " ")))
(outputs (bootloader-configuration-terminal-outputs config))
(inputs (bootloader-configuration-terminal-inputs config))
(unit (bootloader-configuration-serial-unit config))
@@ -233,41 +260,41 @@ is a string that can be inserted in grub.cfg."
;; as documented in GRUB manual section "Simple Configuration
;; Handling".
(valid-outputs '(console serial serial_0 serial_1 serial_2 serial_3
- gfxterm vga_text mda_text morse spkmodem))
+ gfxterm vga_text mda_text morse spkmodem))
(valid-inputs '(console serial serial_0 serial_1 serial_2 serial_3
- at_keyboard usb_keyboard))
+ at_keyboard usb_keyboard))
(io (string-append
- "terminal_output "
- (symbols->string
- (map
- (lambda (output)
- (if (memq output valid-outputs) output #f)) outputs)) "\n"
- (if (null? inputs)
- ""
- (string-append
- "terminal_input "
- (symbols->string
- (map
- (lambda (input)
- (if (memq input valid-inputs) input #f)) inputs)) "\n"))
- ;; UNIT and SPEED are arguments to the same GRUB command
- ;; ("serial"), so we process them together.
- (if (or unit speed)
- (string-append
- "serial"
- (if unit
- ;; COM ports 1 through 4
- (if (and (exact-integer? unit) (<= unit 3) (>= unit 0))
- (string-append " --unit=" (number->string unit))
- #f)
- "")
- (if speed
- (if (exact-integer? speed)
- (string-append " --speed=" (number->string speed))
- #f)
- ""))
- ""))))
+ "terminal_output "
+ (symbols->string
+ (map
+ (lambda (output)
+ (if (memq output valid-outputs) output #f)) outputs)) "\n"
+ (if (null? inputs)
+ ""
+ (string-append
+ "terminal_input "
+ (symbols->string
+ (map
+ (lambda (input)
+ (if (memq input valid-inputs) input #f)) inputs)) "\n"))
+ ;; UNIT and SPEED are arguments to the same GRUB command
+ ;; ("serial"), so we process them together.
+ (if (or unit speed)
+ (string-append
+ "serial"
+ (if unit
+ ;; COM ports 1 through 4
+ (if (and (exact-integer? unit) (<= unit 3) (>= unit 0))
+ (string-append " --unit=" (number->string unit))
+ #f)
+ "")
+ (if speed
+ (if (exact-integer? speed)
+ (string-append " --speed=" (number->string speed))
+ #f)
+ ""))
+ ""))))
(format #f "~a" io)))
(define (grub-root-search device file)
@@ -293,6 +320,8 @@ code."
(define* (grub-configuration-file config entries
#:key
+ (keyboard-layout-file
+ (grub-keyboard-layout-file))
(system (%current-system))
(old-entries '()))
"Return the GRUB configuration file corresponding to CONFIG, a
@@ -329,6 +358,14 @@ entries corresponding to old generations of the system."
(menu-entry-device-mount-point (first all-entries))
#:system system
#:port #~port))
+ (define keyboard-layout-config
+ #~(let ((keymap #$keyboard-layout-file))
+ (if (eq? 'no-keymap-used keymap)
+ (format port "")
+ (format port "terminal_input at_keyboard
+insmod keylayouts
+keymap ~a
+" keymap))))
(define builder
#~(call-with-output-file #$output
@@ -338,6 +375,7 @@ entries corresponding to old generations of the system."
# will be lost upon reconfiguration.
")
#$sugar
+ #$keyboard-layout-config
(format port "
set default=~a
set timeout=~a~%"
@@ -426,17 +464,17 @@ submenu \"GNU system, old configurations...\" {~%")
(define-syntax grub-configuration
(syntax-rules (grub)
- ((_ (grub package) fields ...)
- (if (eq? package grub)
- (bootloader-configuration
- (bootloader grub-bootloader)
- fields ...)
- (bootloader-configuration
- (bootloader grub-efi-bootloader)
- fields ...)))
- ((_ fields ...)
- (bootloader-configuration
- (bootloader grub-bootloader)
- fields ...))))
+ ((_ (grub package) fields ...)
+ (if (eq? package grub)
+ (bootloader-configuration
+ (bootloader grub-bootloader)
+ fields ...)
+ (bootloader-configuration
+ (bootloader grub-efi-bootloader)
+ fields ...)))
+ ((_ fields ...)
+ (bootloader-configuration
+ (bootloader grub-bootloader)
+ fields ...))))
;;; grub.scm ends here
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 2a595fafa..3cc331dcb 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -55,6 +55,7 @@
#:use-module (gnu packages swig)
#:use-module (gnu packages valgrind)
#:use-module (gnu packages virtualization)
+ #:use-module (gnu packages xorg)
#:use-module (gnu packages web)
#:use-module (guix build-system gnu)
#:use-module (guix download)
@@ -110,6 +111,12 @@
;; Make the font visible.
(copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz")
(system* "gunzip" "unifont.bdf.gz")
+
+ ;; patch the path to ckbcomp
+ (substitute* "util/grub-kbdcomp.in"
+ (("^ckbcomp ")
+ (string-append (assoc-ref inputs "console-setup")
+ "/bin/ckbcomp ")))
#t))
(add-before 'check 'disable-flaky-test
(lambda _
@@ -134,6 +141,10 @@
;; to determine whether the root file system is RAID.
("mdadm" ,mdadm)
+ ;; console-setup's ckbcomp is invoked by grub-kbdcomp
+ ;; it is required for generating alternative keyboard layouts
+ ("console-setup" ,console-setup)
+
("freetype" ,freetype)
;; ("libusb" ,libusb)
;; ("fuse" ,fuse)
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 9aa65291b..0a95a21cf 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -46,6 +46,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages anthy)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@@ -6258,3 +6259,123 @@ selecting windows by pointing select actual focused X11 window, selecting by
window name or id, forcing toggle, increase or decrease opacity.")
(home-page "http://forchheimer.se/transset-df/")
(license license:x11)))
+
+(define-public bdfresize
+ (package
+ (name "bdfresize")
+ (version "1.5-11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://salsa.debian.org/debian/bdfresize/-/archive/debian/"
+ version "/bdfresize-debian-"version ".tar.bz2"))
+ (sha256
+ (base32
+ "1fcn0hhzk8g3h0x50n982jwgsivhkqfd50bqs3iv2db3j4bnxp51"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(;; #:make-flags
+ ;; (let ((bash (assoc-ref %build-inputs "bash"))
+ ;; (out (assoc-ref %outputs "out")))
+ ;; (list (string-append "SHELL=" bash "/bin/bash")
+ ;; ;; (string-append "prefix=" out)
+ ;; ))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key build configure-flags outputs inputs
+ #:allow-other-keys #:rest args)
+ (let ((out (assoc-ref outputs "out")))
+ ;; The default configure tries to pass
+ ;; SHELL=/gnu/store/…-bash-minimal-4.4.23/bin/bash
+ ;; This breaks the configure script with:
+ ;; "error: can only configure for one host and one target at a time"
+ (setenv "CONFIG_SHELL"
+ (string-append (assoc-ref %build-inputs "bash")
+ "/bin/bash"))
+ (zero? (system* "./configure"
+
+ "--build" build
+ "--prefix" out)))))
+ (add-after 'configure 'fix-for-new-gcc
+ ;; TODO might upstream, once upstream is back
+ (lambda _
+ (substitute* "charresize.c"
+ (("char\t\\*malloc\\(\\);")
+ ""))
+ #t)))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs `(("perl" ,perl)))
+ (synopsis "")
+ (description "")
+ ;; latest upstream vanished, using debian fork for now
+ ;; used to be: http://openlab.jp/efont/
+ (home-page "https://tracker.debian.org/pkg/bdfresize")
+ (license license:x11)) )
+
+(define-public console-setup
+ (package
+ (name "console-setup")
+ (version "1.188")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://salsa.debian.org/installer-team/console-setup/-/archive/"
+ version "/console-setup-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "1v6zfnsp1fakv1q8b68wdjjxscpw2sbmw2fpqw5af4b3isha5sgr"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:make-flags
+ (let ((bash (assoc-ref %build-inputs "bash"))
+ (out (assoc-ref %outputs "out")))
+ (list (string-append "SHELL=" bash "/bin/bash")
+ ;; (string-append "prefix=" out)
+ ))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-before 'build 'make-doubled-bdfs
+ (lambda* (#:key inputs #:allow-other-keys)
+ (with-directory-excursion "Fonts"
+ (zero? (system* (string-append (assoc-ref inputs "make")
+ "/bin/make")
+ "doubled_bdfs"
+ (string-append "SHELL="
+ (assoc-ref inputs "bash")
+ "/bin/bash"))))))
+ (delete 'check)
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref %outputs "out")))
+ (zero? (system* (string-append (assoc-ref inputs "make")
+ "/bin/make")
+ "install-linux"
+ (string-append "prefix=" out)
+ (string-append "SHELL="
+ (assoc-ref inputs "bash")
+ "/bin/bash")))))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ;; ("bash" ,bash)
+ ("bdftopcf" ,bdftopcf)
+ ("bdfresize" ,bdfresize)
+ ("sharutils" ,sharutils)
+ ("make" ,gnu-make)
+ ))
+ (inputs `(("perl" ,perl)))
+ (synopsis "")
+ (description "console-setup provides the console with the same
+keyboard configuration scheme that X Window System has.
+In result, there is no need to duplicate or change the console keyboard
+files just to make simple customizations such as the use of dead keys,
+the key functioning as AltGr or Compose key, the key(s) to switch between
+Latin and non-Latin layouts, etc. Besides the keyboard,
+the package configures also the font on the console.
+It includes a rich collection of fonts and supports several languages that
+ would be otherwise unsupported on the console (such as Armenian, Georgian,
+ Lao and Thai).")
+ (home-page "https://salsa.debian.org/installer-team/console-setup/")
+ (license license:x11)))
--
2.20.1
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001-services-Init-the-keyboard-layout-in-xorg-configurat.patch --]
[-- Type: text/x-patch; name="0001-services-Init-the-keyboard-layout-in-xorg-configurat.patch", Size: 12588 bytes --]
From 54b0b2a8b29a797932bf9a65c7f2e3981a630425 Mon Sep 17 00:00:00 2001
From: nee <nee.git@cock.li>
Date: Sat, 5 Jan 2019 23:43:42 +0100
Subject: [PATCH] services: Init the keyboard-layout in
xorg-configuration-directory.
* doc/guix.texi (X Window):
Document keyboard-layout and keyboard-variant for xorg-start-command.
Remove the example about setting the keyboard-layout through extra-config.
* gnu/services/xorg.scm (xorg-configuration-file):
Add keyboard-layout and keyboard-variant arguments.
* gnu/system/examples/desktop.tmpl:
Add keyboard-layout and keyboard-variant for xorg.
* gnu/system/examples/lightweight-desktop.tmpl:
Add keyboard-layout and keyboard-variant for xorg.
---
doc/guix.texi | 69 +++++---------------
gnu/services/xorg.scm | 25 +++++--
gnu/system/examples/desktop.tmpl | 13 +++-
gnu/system/examples/lightweight-desktop.tmpl | 13 +++-
4 files changed, 60 insertions(+), 60 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index f86a2885a..2a915c07d 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -48,7 +48,7 @@ Copyright @copyright{} 2017, 2018 Tobias Geerinckx-Rice@*
Copyright @copyright{} 2017 George Clemmer@*
Copyright @copyright{} 2017 Andy Wingo@*
Copyright @copyright{} 2017, 2018 Arun Isaac@*
-Copyright @copyright{} 2017 nee@*
+Copyright @copyright{} 2017, 2019 nee@*
Copyright @copyright{} 2018 Rutger Helling@*
Copyright @copyright{} 2018 Oleg Pykhalov@*
Copyright @copyright{} 2018 Mike Gerwitz@*
@@ -1004,7 +1004,7 @@ similar file. It can be converted to the OpenSSH format using
@command{lsh-export-key} (@pxref{Converting keys,,, lsh, LSH Manual}):
@example
-$ lsh-export-key --openssh < /etc/lsh/host-key.pub
+$ lsh-export-key --openssh < /etc/lsh/host-key.pub
ssh-rsa AAAAB3NzaC1yc2EAAAAEOp8FoQAAAQEAs1eB46LV@dots{}
@end example
@@ -2807,13 +2807,13 @@ produced by @command{guix pull}, along with details about their provenance:
@example
$ guix pull -l
-Generation 1 Jun 10 2018 00:18:18
+Generation 1 Jun 10 2018 00:18:18
guix 65956ad
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: origin/master
commit: 65956ad3526ba09e1f7a40722c96c6ef7c0936fe
-Generation 2 Jun 11 2018 11:02:49
+Generation 2 Jun 11 2018 11:02:49
guix e0cc7f6
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: origin/master
@@ -2823,7 +2823,7 @@ Generation 2 Jun 11 2018 11:02:49
guile2.0-guix@@0.14.0-12.77a1aac, guix@@0.14.0-12.77a1aac,
heimdal@@7.5.0, milkytracker@@1.02.00, nix@@2.0.4
-Generation 3 Jun 13 2018 23:31:07 (current)
+Generation 3 Jun 13 2018 23:31:07 (current)
guix 844cc1c
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: origin/master
@@ -3018,7 +3018,7 @@ modules:
@example
$ guix pull --list-generations
@dots{}
-Generation 19 Aug 27 2018 16:20:48
+Generation 19 Aug 27 2018 16:20:48
guix d894ab8
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
@@ -3255,7 +3255,7 @@ and commit IDs (@pxref{Channels}):
@example
$ guix describe
-Generation 10 Sep 03 2018 17:32:44 (current)
+Generation 10 Sep 03 2018 17:32:44 (current)
guix e0fa68c
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
@@ -4342,9 +4342,9 @@ build file @file{build.xml} with tasks to build the specified jar
archive. In this case the parameter @code{#:source-dir} can be used to
specify the source sub-directory, defaulting to ``src''.
-The @code{#:main-class} parameter can be used with the minimal ant
-buildfile to specify the main class of the resulting jar. This makes the
-jar file executable. The @code{#:test-include} parameter can be used to
+The @code{#:main-class} parameter can be used with the minimal ant
+buildfile to specify the main class of the resulting jar. This makes the
+jar file executable. The @code{#:test-include} parameter can be used to
specify the list of junit tests to run. It defaults to
@code{(list "**/*Test.java")}. The @code{#:test-exclude} can be used to
disable some tests. It defaults to @code{(list "**/Abstract*.java")},
@@ -12949,12 +12949,15 @@ type @code{<sddm-configuration>}.
@deffn {Scheme Procedure} xorg-start-command [#:guile] @
[#:modules %default-xorg-modules] @
[#:fonts %default-xorg-fonts] @
+ [#:keyboard-layout "us"] @
+ [#:keyboard-variant #f] @
[#:configuration-file (xorg-configuration-file @dots{})] @
[#:xorg-server @var{xorg-server}]
Return a @code{startx} script in which @var{modules}, a list of X module
-packages, and @var{fonts}, a list of X font directories, are available. See
-@code{xorg-wrapper} for more details on the arguments. The result should be
-used in place of @code{startx}.
+packages, and @var{fonts}, a list of X font directories, are available.
+It will use the @var{keyboard-layout} with the @var{keyboard-variant}
+if it exists in @var{xkeyboard-config}. See @code{xorg-wrapper} for more
+details on the arguments. The result should be used in place of @code{startx}.
Usually the X server is started by a login manager.
@end deffn
@@ -12982,44 +12985,6 @@ resolutions---e.g., @code{((1024 768) (640 480))}.
Last, @var{extra-config} is a list of strings or objects appended to the
configuration file. It is used to pass extra text to be
added verbatim to the configuration file.
-
-@cindex keymap
-@cindex keyboard layout
-This procedure is especially useful to configure a different keyboard layout
-than the default US keymap. For instance, to use the ``bépo'' keymap by
-default on the display manager:
-
-@example
-(define bepo-evdev
- "Section \"InputClass\"
- Identifier \"evdev keyboard catchall\"
- Driver \"evdev\"
- MatchIsKeyboard \"on\"
- Option \"xkb_layout\" \"fr\"
- Option \"xkb_variant\" \"bepo\"
-EndSection")
-
-(operating-system
- ...
- (services
- (modify-services %desktop-services
- (slim-service-type config =>
- (slim-configuration
- (inherit config)
- (startx (xorg-start-command
- #:configuration-file
- (xorg-configuration-file
- #:extra-config
- (list bepo-evdev)))))))))
-@end example
-
-The @code{MatchIsKeyboard} line specifies that we only apply the configuration
-to keyboards. Without this line, other devices such as touchpad may not work
-correctly because they will be attached to the wrong driver. In this example,
-the user typically used @code{setxkbmap fr bepo} to set their favorite keymap
-once logged in. The first argument corresponds to the layout, while the second
-argument corresponds to the variant. The @code{xkb_variant} line can be omitted
-to select the default variant.
@end deffn
@deffn {Scheme Procedure} screen-locker-service @var{package} [@var{program}]
@@ -22727,7 +22692,7 @@ extends: shepherd-root
description: Install the given fonts on the specified ttys (fonts are
+ per virtual console on GNU/Linux). The value of this service is a list
+ of tty/font pairs like:
-+
++
+ '(("tty1" . "LatGrkCyr-8x16"))
relevance: 20
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index ea8433af3..f41c5dfe8 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2019 nee <nee-git@hidamari.blue>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -121,6 +122,8 @@
(modules %default-xorg-modules)
(fonts %default-xorg-fonts)
(drivers '()) (resolutions '())
+ (keyboard-layout #f)
+ (keyboard-variant #f)
(extra-config '()))
"Return a configuration file for the Xorg server containing search paths for
all the common drivers.
@@ -222,6 +225,21 @@ EndSection\n" port)
port)
(newline port)
+ (when #$keyboard-layout
+ (display "Section \"InputClass\"
+ Identifier \"evdev keyboard catchall\"
+ MatchIsKeyboard \"on\"\n" port)
+ (format port
+ " Option \"XkbLayout\" ~s\n" #$keyboard-layout)
+ (when #$keyboard-variant
+ (format
+ port
+ " Option \"XkbVariant\" ~s\n" #$keyboard-variant))
+ (display
+ " MatchDevicePath \"/dev/input/event*\"
+ Driver \"evdev\"
+EndSection\n" port))
+
(for-each (lambda (config)
(display config port))
'#$extra-config)))))
@@ -229,7 +247,7 @@ EndSection\n" port)
(computed-file "xserver.conf" build))
-(define (xorg-configuration-directory modules)
+(define* (xorg-configuration-directory modules)
"Return a directory that contains the @code{.conf} files for X.org that
includes the @code{share/X11/xorg.conf.d} directories of each package listed
in @var{modules}."
@@ -255,6 +273,7 @@ in @var{modules}."
files)
#t))))
+
(define* (xorg-wrapper #:key
(guile (canonical-package guile-2.0))
(modules %default-xorg-modules)
@@ -290,9 +309,7 @@ in place of @code{/usr/bin/X}."
#:fonts fonts))
(xorg-server xorg-server))
"Return a @code{startx} script in which @var{modules}, a list of X module
-packages, and @var{fonts}, a list of X font directories, are available. See
-@code{xorg-wrapper} for more details on the arguments. The result should be
-used in place of @code{startx}."
+packages, and @var{fonts}, a list of X font directories, are available."
(define X
(xorg-wrapper #:guile guile
#:configuration-file configuration-file
diff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmpl
index 1b8d46afa..cb561c4e5 100644
--- a/gnu/system/examples/desktop.tmpl
+++ b/gnu/system/examples/desktop.tmpl
@@ -3,7 +3,7 @@
;; root partition is encrypted with LUKS.
(use-modules (gnu) (gnu system nss))
-(use-service-modules desktop)
+(use-service-modules desktop xorg)
(use-package-modules certs gnome)
(operating-system
@@ -52,7 +52,16 @@
;; NetworkManager, and more.
(services (cons* (gnome-desktop-service)
(xfce-desktop-service)
- %desktop-services))
+ (modify-services %desktop-services
+ (slim-service-type config =>
+ (slim-configuration
+ (inherit config)
+ (startx
+ (xorg-start-command
+ #:configuration-file
+ (xorg-configuration-file
+ #:keyboard-layout "us"
+ #:keyboard-variant #f))))))))
;; Allow resolution of '.local' host names with mDNS.
(name-service-switch %mdns-host-lookup-nss))
diff --git a/gnu/system/examples/lightweight-desktop.tmpl b/gnu/system/examples/lightweight-desktop.tmpl
index 360ee62ff..c5ca4a3db 100644
--- a/gnu/system/examples/lightweight-desktop.tmpl
+++ b/gnu/system/examples/lightweight-desktop.tmpl
@@ -3,7 +3,7 @@
;; environments.
(use-modules (gnu) (gnu system nss))
-(use-service-modules desktop)
+(use-service-modules desktop xorg)
(use-package-modules bootloaders certs ratpoison suckless wm)
(operating-system
@@ -46,7 +46,16 @@
;; Use the "desktop" services, which include the X11
;; log-in service, networking with NetworkManager, and more.
- (services %desktop-services)
+ (services (modify-services %desktop-services
+ (slim-service-type config =>
+ (slim-configuration
+ (inherit config)
+ (startx
+ (xorg-start-command
+ #:configuration-file
+ (xorg-configuration-file
+ #:keyboard-layout "us"
+ #:keyboard-variant #f)))))))
;; Allow resolution of '.local' host names with mDNS.
(name-service-switch %mdns-host-lookup-nss))
--
2.20.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: GRUB fallback mechanism [was Re: Brain storming cool Guix features]
2019-01-13 20:58 ` Ludovic Courtès
@ 2019-01-14 14:15 ` L p R n d n
0 siblings, 0 replies; 31+ messages in thread
From: L p R n d n @ 2019-01-14 14:15 UTC (permalink / raw)
To: guix-devel
Hello,
Ludovic Courtès <ludo@gnu.org> writes:
> Ricardo Wurmus <rekado@elephly.net> skribis:
>
>> swedebugia <swedebugia@riseup.net> writes:
>>
>>> Leo Famulari <leo@famulari.name> skrev: (11 januari 2019 23:32:12 CET)
>
> [...]
>
>>>>Apparently GRUB has a feature that records a "fallback" system to boot
>>>>if booting fails.
>>>>
>>>>Maybe when reconfiguring, Guix could set the current system as the
>>>>fallback so that it would always boot.
>>>>
>>>>If we did that, we'd want to warn the user somehow... not sure how to
>>>>achieve that.
>>>>
>>>>Discussion of this feature at NixOS:
>>>>
>>>>https://github.com/NixOS/nixpkgs/issues/26332
>>>
>>> I don't think automatic fallback is a good idea because it unnecessarily complicates a now well working simple part of the OS.
>>> KISS is a nice principle.
>>
>> I think exposing this GRUB feature would be good, even if not enabled by
>> default. It does not seem very complicated and can be very useful for
>> some users.
>
> I agree.
>
>> Unfortunately, it doesn’t help us when GRUB itself is broken with an
>> upgrade, which I think is what was suggested earlier.
>
> We’ll have to assume (and ensure!) this doesn’t happen…
Personally, I never thought about a guix failure here, more about
power-outtage or anything we can't control. :D
> Ludo’.
^ permalink raw reply [flat|nested] 31+ messages in thread
* bug#25453: Keyboard layout configuration
2019-01-13 22:49 ` nee
2019-01-15 22:21 ` Ludovic Courtès
@ 2019-01-15 22:21 ` Ludovic Courtès
2019-01-16 13:10 ` Ludovic Courtès
2019-01-16 13:10 ` bug#25453: " Ludovic Courtès
3 siblings, 0 replies; 31+ messages in thread
From: Ludovic Courtès @ 2019-01-15 22:21 UTC (permalink / raw)
To: nee; +Cc: guix-devel, 25453
Hello nee!
nee <nee@cock.li> skribis:
> Am 13.01.19 um 22:36 schrieb Ludovic Courtès:
>>> 1) grub
>>> 2) linux's initrd
>>> 3) console
>>> 4) X/wayland's layout
>>> 5) How to do the above
>>
>
> Hello, I was working on this recently and made a patch for X11 that
> fixes the layout in the slim login and when you login into gnome3 or
> whatever desktop environment.
>
> I also made a patch for grub that fixes the layout when you edit the
> boot command for a menu entry, but not for the luks prompt. I think that
> might require installing a custom grub image (grub-mkimage) with
> grub-bios-setup instead of using grub-install (I saw some posts on the
> archlinux forum I don't have a link to right now). But this patch should
> lay the groundwork for it, as it can generate grub keyboard config files.
>
> The patches are pretty dirty, but I might not have that much time in the
> next few weeks to work on this, and since is hot on the mailing list
> right now, I'm sending them here now.
Nice, you did well!
I’ve already pushed “bdfresize” and “console-setup” partly based on your
patches:
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=fe77ede70ad292c8fcba80f34b356fecd86f7f78
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=41a54622b691b68e342a0c7de23fec8de14cb739
The GRUB and Xorg parts look overall like the right thing to me—I’ll
take some time to review more closely soon.
Then we’ll also need to think about extending the bootloader API (not
GRUB-specific), and then providing a way to specify the layout globally
in a single place.
Anyway, thanks a lot for helping out!
Ludo’.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Keyboard layout configuration
2019-01-13 22:49 ` nee
@ 2019-01-15 22:21 ` Ludovic Courtès
2019-03-12 19:34 ` bug#25453: " Taylan Kammer
` (3 more replies)
2019-01-15 22:21 ` Ludovic Courtès
` (2 subsequent siblings)
3 siblings, 4 replies; 31+ messages in thread
From: Ludovic Courtès @ 2019-01-15 22:21 UTC (permalink / raw)
To: nee; +Cc: guix-devel, 25453
Hello nee!
nee <nee@cock.li> skribis:
> Am 13.01.19 um 22:36 schrieb Ludovic Courtès:
>>> 1) grub
>>> 2) linux's initrd
>>> 3) console
>>> 4) X/wayland's layout
>>> 5) How to do the above
>>
>
> Hello, I was working on this recently and made a patch for X11 that
> fixes the layout in the slim login and when you login into gnome3 or
> whatever desktop environment.
>
> I also made a patch for grub that fixes the layout when you edit the
> boot command for a menu entry, but not for the luks prompt. I think that
> might require installing a custom grub image (grub-mkimage) with
> grub-bios-setup instead of using grub-install (I saw some posts on the
> archlinux forum I don't have a link to right now). But this patch should
> lay the groundwork for it, as it can generate grub keyboard config files.
>
> The patches are pretty dirty, but I might not have that much time in the
> next few weeks to work on this, and since is hot on the mailing list
> right now, I'm sending them here now.
Nice, you did well!
I’ve already pushed “bdfresize” and “console-setup” partly based on your
patches:
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=fe77ede70ad292c8fcba80f34b356fecd86f7f78
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=41a54622b691b68e342a0c7de23fec8de14cb739
The GRUB and Xorg parts look overall like the right thing to me—I’ll
take some time to review more closely soon.
Then we’ll also need to think about extending the bootloader API (not
GRUB-specific), and then providing a way to specify the layout globally
in a single place.
Anyway, thanks a lot for helping out!
Ludo’.
^ permalink raw reply [flat|nested] 31+ messages in thread
* bug#25453: Keyboard layout configuration
2019-01-13 22:49 ` nee
` (2 preceding siblings ...)
2019-01-16 13:10 ` Ludovic Courtès
@ 2019-01-16 13:10 ` Ludovic Courtès
3 siblings, 0 replies; 31+ messages in thread
From: Ludovic Courtès @ 2019-01-16 13:10 UTC (permalink / raw)
To: nee; +Cc: guix-devel, 25453
nee <nee@cock.li> skribis:
> --- a/gnu/packages/bootloaders.scm
> +++ b/gnu/packages/bootloaders.scm
> @@ -55,6 +55,7 @@
> #:use-module (gnu packages swig)
> #:use-module (gnu packages valgrind)
> #:use-module (gnu packages virtualization)
> + #:use-module (gnu packages xorg)
> #:use-module (gnu packages web)
> #:use-module (guix build-system gnu)
> #:use-module (guix download)
> @@ -110,6 +111,12 @@
> ;; Make the font visible.
> (copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz")
> (system* "gunzip" "unifont.bdf.gz")
> +
> + ;; patch the path to ckbcomp
> + (substitute* "util/grub-kbdcomp.in"
> + (("^ckbcomp ")
> + (string-append (assoc-ref inputs "console-setup")
> + "/bin/ckbcomp ")))
> #t))
> (add-before 'check 'disable-flaky-test
> (lambda _
> @@ -134,6 +141,10 @@
> ;; to determine whether the root file system is RAID.
> ("mdadm" ,mdadm)
>
> + ;; console-setup's ckbcomp is invoked by grub-kbdcomp
> + ;; it is required for generating alternative keyboard layouts
> + ("console-setup" ,console-setup)
I pushed this bit on your behalf as commit
ab100b905f4073b24d69af3de6de61c4c55ce27d.
It’s a bit sad that the closure of ‘grub-efi’ goes from 162 MiB to
223 MiB because of Perl, which is used to run this tiny ‘ckbcomp’
program. At some point we should consider translating it to Scheme,
especially since it’s essentially data.
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: Keyboard layout configuration
2019-01-13 22:49 ` nee
2019-01-15 22:21 ` Ludovic Courtès
2019-01-15 22:21 ` Ludovic Courtès
@ 2019-01-16 13:10 ` Ludovic Courtès
2019-01-16 13:10 ` bug#25453: " Ludovic Courtès
3 siblings, 0 replies; 31+ messages in thread
From: Ludovic Courtès @ 2019-01-16 13:10 UTC (permalink / raw)
To: nee; +Cc: guix-devel, 25453
nee <nee@cock.li> skribis:
> --- a/gnu/packages/bootloaders.scm
> +++ b/gnu/packages/bootloaders.scm
> @@ -55,6 +55,7 @@
> #:use-module (gnu packages swig)
> #:use-module (gnu packages valgrind)
> #:use-module (gnu packages virtualization)
> + #:use-module (gnu packages xorg)
> #:use-module (gnu packages web)
> #:use-module (guix build-system gnu)
> #:use-module (guix download)
> @@ -110,6 +111,12 @@
> ;; Make the font visible.
> (copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz")
> (system* "gunzip" "unifont.bdf.gz")
> +
> + ;; patch the path to ckbcomp
> + (substitute* "util/grub-kbdcomp.in"
> + (("^ckbcomp ")
> + (string-append (assoc-ref inputs "console-setup")
> + "/bin/ckbcomp ")))
> #t))
> (add-before 'check 'disable-flaky-test
> (lambda _
> @@ -134,6 +141,10 @@
> ;; to determine whether the root file system is RAID.
> ("mdadm" ,mdadm)
>
> + ;; console-setup's ckbcomp is invoked by grub-kbdcomp
> + ;; it is required for generating alternative keyboard layouts
> + ("console-setup" ,console-setup)
I pushed this bit on your behalf as commit
ab100b905f4073b24d69af3de6de61c4c55ce27d.
It’s a bit sad that the closure of ‘grub-efi’ goes from 162 MiB to
223 MiB because of Perl, which is used to run this tiny ‘ckbcomp’
program. At some point we should consider translating it to Scheme,
especially since it’s essentially data.
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 31+ messages in thread
* bug#25453: Keyboard layout configuration
2019-01-15 22:21 ` Ludovic Courtès
@ 2019-03-12 19:34 ` Taylan Kammer
2019-03-12 19:34 ` Taylan Kammer
` (2 subsequent siblings)
3 siblings, 0 replies; 31+ messages in thread
From: Taylan Kammer @ 2019-03-12 19:34 UTC (permalink / raw)
To: nee; +Cc: guix-devel, 25453
nee <nee@cock.li> wrote:
> Am 13.01.19 um 22:36 schrieb Ludovic Courtès:
>>> 1) grub
>>> 2) linux's initrd
>>> 3) console
>>> 4) X/wayland's layout
>>> 5) How to do the above
>>
>
> Hello, I was working on this recently and made a patch for X11 that
> fixes the layout in the slim login and when you login into gnome3 or
> whatever desktop environment.
>
> I also made a patch for grub that fixes the layout when you edit the
> boot command for a menu entry, but not for the luks prompt. I think that
> might require installing a custom grub image (grub-mkimage) with
> grub-bios-setup instead of using grub-install (I saw some posts on the
> archlinux forum I don't have a link to right now). But this patch should
> lay the groundwork for it, as it can generate grub keyboard config files.
>
> The patches are pretty dirty, but I might not have that much time in the
> next few weeks to work on this, and since is hot on the mailing list
> right now, I'm sending them here now.
Heya, just wanted to give my personal thanks for working on this. :-) As
a user of an unusual keyboard layout (Colemak), this is one of my main
pet annoyances with Guix.
And by the way, an unpleasent off-topic issue:
After getting curious and visiting the homepage of your email domain
'cock.li' I was at first amused to see Chen from Touhou, but then pretty
sad to see a frivolous use of racist and sexist slurs and what I guess
is supposed to be "humorously meant hate speech" (thinking of the domain
name "nuke.africa" for instance). I understand that this is probably
supposed to be a kind of childish black humor (I spent a lot of time on
4chan back in my time) but let's not forget that we're not, in fact,
children anymore, and that stuff like this can be quite seriously
upsetting to some people. Imagine that we have, say, a middle-aged
African computer scientist in our community, who isn't familiar with
such "humor", or a young female college student with a background in a
conservative family with rigid gender roles, and consider how they might
feel after seeing domain names like "getbackinthe.kitchen", "nigge.rs",
and the like. I'd urge you to use another address for correspondence
with an open community like this one, given that anyone could get
curious like me and visit the homepage of your domain.
- Taylan
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: bug#25453: Keyboard layout configuration
2019-01-15 22:21 ` Ludovic Courtès
2019-03-12 19:34 ` bug#25453: " Taylan Kammer
@ 2019-03-12 19:34 ` Taylan Kammer
2019-03-15 18:19 ` nee
2019-03-20 23:07 ` Ludovic Courtès
2019-03-20 23:07 ` Ludovic Courtès
3 siblings, 1 reply; 31+ messages in thread
From: Taylan Kammer @ 2019-03-12 19:34 UTC (permalink / raw)
To: nee; +Cc: guix-devel, 25453
nee <nee@cock.li> wrote:
> Am 13.01.19 um 22:36 schrieb Ludovic Courtès:
>>> 1) grub
>>> 2) linux's initrd
>>> 3) console
>>> 4) X/wayland's layout
>>> 5) How to do the above
>>
>
> Hello, I was working on this recently and made a patch for X11 that
> fixes the layout in the slim login and when you login into gnome3 or
> whatever desktop environment.
>
> I also made a patch for grub that fixes the layout when you edit the
> boot command for a menu entry, but not for the luks prompt. I think that
> might require installing a custom grub image (grub-mkimage) with
> grub-bios-setup instead of using grub-install (I saw some posts on the
> archlinux forum I don't have a link to right now). But this patch should
> lay the groundwork for it, as it can generate grub keyboard config files.
>
> The patches are pretty dirty, but I might not have that much time in the
> next few weeks to work on this, and since is hot on the mailing list
> right now, I'm sending them here now.
Heya, just wanted to give my personal thanks for working on this. :-) As
a user of an unusual keyboard layout (Colemak), this is one of my main
pet annoyances with Guix.
And by the way, an unpleasent off-topic issue:
After getting curious and visiting the homepage of your email domain
'cock.li' I was at first amused to see Chen from Touhou, but then pretty
sad to see a frivolous use of racist and sexist slurs and what I guess
is supposed to be "humorously meant hate speech" (thinking of the domain
name "nuke.africa" for instance). I understand that this is probably
supposed to be a kind of childish black humor (I spent a lot of time on
4chan back in my time) but let's not forget that we're not, in fact,
children anymore, and that stuff like this can be quite seriously
upsetting to some people. Imagine that we have, say, a middle-aged
African computer scientist in our community, who isn't familiar with
such "humor", or a young female college student with a background in a
conservative family with rigid gender roles, and consider how they might
feel after seeing domain names like "getbackinthe.kitchen", "nigge.rs",
and the like. I'd urge you to use another address for correspondence
with an open community like this one, given that anyone could get
curious like me and visit the homepage of your domain.
- Taylan
^ permalink raw reply [flat|nested] 31+ messages in thread
* bug#25453: Keyboard layout configuration
2019-03-12 19:34 ` Taylan Kammer
@ 2019-03-15 18:19 ` nee
2019-03-21 22:23 ` Taylan Kammer
0 siblings, 1 reply; 31+ messages in thread
From: nee @ 2019-03-15 18:19 UTC (permalink / raw)
To: Taylan Kammer; +Cc: guix-devel, 25453
> And by the way, an unpleasent off-topic issue:
Hello, thank you for your considerate message. I'm using the my own
domain for email in the future.
Happy hacking!
^ permalink raw reply [flat|nested] 31+ messages in thread
* bug#25453: Keyboard layout configuration
2019-01-15 22:21 ` Ludovic Courtès
2019-03-12 19:34 ` bug#25453: " Taylan Kammer
2019-03-12 19:34 ` Taylan Kammer
@ 2019-03-20 23:07 ` Ludovic Courtès
2019-03-20 23:07 ` Ludovic Courtès
3 siblings, 0 replies; 31+ messages in thread
From: Ludovic Courtès @ 2019-03-20 23:07 UTC (permalink / raw)
To: nee; +Cc: guix-devel, 25453
Hello nee,
Ludovic Courtès <ludo@gnu.org> skribis:
> I’ve already pushed “bdfresize” and “console-setup” partly based on your
> patches:
>
> https://git.savannah.gnu.org/cgit/guix.git/commit/?id=fe77ede70ad292c8fcba80f34b356fecd86f7f78
> https://git.savannah.gnu.org/cgit/guix.git/commit/?id=41a54622b691b68e342a0c7de23fec8de14cb739
>
> The GRUB and Xorg parts look overall like the right thing to me—I’ll
> take some time to review more closely soon.
Inspired by your other patches I’ve posted this series:
https://issues.guix.info/issue/34929
Ludo’.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: bug#25453: Keyboard layout configuration
2019-01-15 22:21 ` Ludovic Courtès
` (2 preceding siblings ...)
2019-03-20 23:07 ` Ludovic Courtès
@ 2019-03-20 23:07 ` Ludovic Courtès
3 siblings, 0 replies; 31+ messages in thread
From: Ludovic Courtès @ 2019-03-20 23:07 UTC (permalink / raw)
To: nee; +Cc: guix-devel, 25453
Hello nee,
Ludovic Courtès <ludo@gnu.org> skribis:
> I’ve already pushed “bdfresize” and “console-setup” partly based on your
> patches:
>
> https://git.savannah.gnu.org/cgit/guix.git/commit/?id=fe77ede70ad292c8fcba80f34b356fecd86f7f78
> https://git.savannah.gnu.org/cgit/guix.git/commit/?id=41a54622b691b68e342a0c7de23fec8de14cb739
>
> The GRUB and Xorg parts look overall like the right thing to me—I’ll
> take some time to review more closely soon.
Inspired by your other patches I’ve posted this series:
https://issues.guix.info/issue/34929
Ludo’.
^ permalink raw reply [flat|nested] 31+ messages in thread
* bug#25453: Keyboard layout configuration
2019-03-15 18:19 ` nee
@ 2019-03-21 22:23 ` Taylan Kammer
0 siblings, 0 replies; 31+ messages in thread
From: Taylan Kammer @ 2019-03-21 22:23 UTC (permalink / raw)
To: nee; +Cc: guix-devel, 25453
nee <nee-git@hidamari.blue> writes:
>> And by the way, an unpleasent off-topic issue:
>
> Hello, thank you for your considerate message. I'm using the my own
> domain for email in the future.
>
> Happy hacking!
Thank you for being understanding, happy hacking! :-)
- Taylan
^ permalink raw reply [flat|nested] 31+ messages in thread
end of thread, other threads:[~2019-03-21 19:36 UTC | newest]
Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-04 12:11 Brain storming cool Guix features Joshua Branson
2019-01-04 16:01 ` Ricardo Wurmus
2019-01-05 13:59 ` Joshua Branson
2019-01-05 17:06 ` Ricardo Wurmus
2019-01-13 20:18 ` Joshua Branson
2019-01-13 21:36 ` bug#25453: Keyboard layout configuration Ludovic Courtès
2019-01-13 22:49 ` nee
2019-01-13 22:49 ` nee
2019-01-15 22:21 ` Ludovic Courtès
2019-03-12 19:34 ` bug#25453: " Taylan Kammer
2019-03-12 19:34 ` Taylan Kammer
2019-03-15 18:19 ` nee
2019-03-21 22:23 ` Taylan Kammer
2019-03-20 23:07 ` Ludovic Courtès
2019-03-20 23:07 ` Ludovic Courtès
2019-01-15 22:21 ` Ludovic Courtès
2019-01-16 13:10 ` Ludovic Courtès
2019-01-16 13:10 ` bug#25453: " Ludovic Courtès
2019-01-04 16:10 ` Brain storming cool Guix features Pierre Neidhardt
2019-01-04 16:14 ` John Soo
2019-01-04 16:58 ` znavko
2019-01-06 13:44 ` Amirouche Boubekki
2019-01-06 16:33 ` swedebugia
2019-01-06 20:04 ` Amirouche Boubekki
2019-01-07 16:48 ` L p R n d n
2019-01-07 18:16 ` Joshua Branson
2019-01-11 22:32 ` GRUB fallback mechanism [was Re: Brain storming cool Guix features] Leo Famulari
2019-01-12 12:59 ` swedebugia
2019-01-12 15:58 ` Ricardo Wurmus
2019-01-13 20:58 ` Ludovic Courtès
2019-01-14 14:15 ` L p R n d n
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.