Merge #361424: refactor lib.packagesFromDirectoryRecursive (v2)
[NixPkgs.git] / nixos / modules / system / boot / uvesafb.nix
blob67850b422e3f2a673b0521291f830f7792055dce
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
7 let
8   cfg = config.boot.uvesafb;
9   inherit (lib)
10     mkIf
11     mkEnableOption
12     mkOption
13     types
14     ;
17   options = {
18     boot.uvesafb = {
19       enable = mkEnableOption "uvesafb";
21       gfx-mode = mkOption {
22         type = types.str;
23         default = "1024x768-32";
24         description = "Screen resolution in modedb format. See [uvesafb](https://docs.kernel.org/fb/uvesafb.html) and [modedb](https://docs.kernel.org/fb/modedb.html) documentation for more details. The default value is a sensible default but may be not ideal for all setups.";
25       };
27       v86d.package = mkOption {
28         type = types.package;
29         description = "Which v86d package to use with uvesafb";
30         defaultText = ''
31           config.boot.kernelPackages.v86d.overrideAttrs (old: {
32                     hardeningDisable = [ "all" ];
33                   })'';
34         default = config.boot.kernelPackages.v86d.overrideAttrs (old: {
35           hardeningDisable = [ "all" ];
36         });
37       };
38     };
39   };
40   config = mkIf cfg.enable {
41     boot.initrd = {
42       kernelModules = [ "uvesafb" ];
43       extraFiles."/usr/v86d".source = cfg.v86d.package;
44     };
46     boot.kernelParams = [
47       "video=uvesafb:mode:${cfg.gfx-mode},mtrr:3,ywrap"
48       ''uvesafb.v86d="${cfg.v86d.package}/bin/v86d"''
49     ];
50   };