at 25.11-pre 1.3 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7let 8 cfg = config.boot.uvesafb; 9 inherit (lib) 10 mkIf 11 mkEnableOption 12 mkOption 13 types 14 ; 15in 16{ 17 options = { 18 boot.uvesafb = { 19 enable = mkEnableOption "uvesafb"; 20 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 }; 26 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 }; 45 46 boot.kernelParams = [ 47 "video=uvesafb:mode:${cfg.gfx-mode},mtrr:3,ywrap" 48 ''uvesafb.v86d="${cfg.v86d.package}/bin/v86d"'' 49 ]; 50 }; 51}