Thanks for the information!

Just a clarification do you mean to do this as work around?

boot.loader.grub.extraConfig = ''
if keystatus --shift ; then
    set timeout=-1
else
    set timeout=0
fi
'';

I currently have boot.loader.grub.timeout = 0; Will this directive need to change?

Thanks,
Roger

On 28/05/2014 3:29 AM, Kirill Elagin wrote:
Well, it looks like I should start with basics of grub.

Grub has a configuration file, `grub.cfg`. There is no such thing as “hidden timeout” in terms of grub's configuration file.

Also they ship scripts that generate this configuration from another configuration, supposedly, a more user-friendly one. That's actually what you edit in `/etc/default/grub`. By the way, the scripts that source this file and generate `grub.cfg` are in `/etc/grub.d/` so you can check them out if you are interested. The relevant part is `make_timeout` function in `00_header`. I should note that I never trusted those generating scripts, because they produce tons of useless code and I prefer to write
`grub.cfg` myself (kinda old-school, yeah!).

Now, NixOS, obviously doesn't use those scripts and generates `grub.cfg` for you. So, the thing is, there is no way to configure “hidden timeout” which is not cool, and I'll definitely put this on my list of my future contributions to NixOS.
But for now you can simulate this by putting something like:

boot.loader.grub.extraConfig = ''
    if sleep --interruptible 5 ; then
        set timeout=10
    fi
'';

(Not tested, just guessing.)
(Where 5 is GRUB_HIDDEN_TIMEOUT and 10 is GRUB_TIMEOUT.)

This way you'll get the same behaviour as grub's upstream generator scripts give you.

Personally I normally use this in my `grub.cfg` instead:

if keystatus --shift ; then
    set timeout=-1
else
    set timeout=0
fi

This will normally boot immediately without displaying the menu or waiting for something, _unless_ you are holding shift when booting. If you are holding shift, it will display the menu without timeout.



--
Кирилл Елагин


On Tue, May 27, 2014 at 11:53 AM, Roger Qiu <[email protected] <mailto:[email protected]>> wrote:

    Hello,

    In a configuration.nix, where would you be able to set GRUB
    options such as:

    |GRUB_HIDDEN_TIMEOUT=0
    GRUB_HIDDEN_TIMEOUT_QUIET=true|

    The normal boot.loader.grub does not seem to have these functions?

    Thanks,
    Roger

    _______________________________________________
    nix-dev mailing list
    [email protected] <mailto:[email protected]>
    http://lists.science.uu.nl/mailman/listinfo/nix-dev



_______________________________________________
nix-dev mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-dev

Reply via email to