at 25.11-pre 1.2 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7 8let 9 cfg = config.programs.nano; 10in 11 12{ 13 options = { 14 programs.nano = { 15 enable = lib.mkEnableOption "nano, a small user-friendly console text editor" // { 16 default = true; 17 }; 18 19 package = lib.mkPackageOption pkgs "nano" { }; 20 21 nanorc = lib.mkOption { 22 type = lib.types.lines; 23 default = ""; 24 description = '' 25 The system-wide nano configuration. 26 See {manpage}`nanorc(5)`. 27 ''; 28 example = '' 29 set nowrap 30 set tabstospaces 31 set tabsize 2 32 ''; 33 }; 34 35 syntaxHighlight = lib.mkOption { 36 type = lib.types.bool; 37 default = true; 38 description = "Whether to enable syntax highlight for various languages."; 39 }; 40 }; 41 }; 42 43 config = lib.mkIf cfg.enable { 44 environment = { 45 etc.nanorc.text = 46 (lib.optionalString cfg.syntaxHighlight '' 47 # load syntax highlighting files 48 include "${cfg.package}/share/nano/*.nanorc" 49 include "${cfg.package}/share/nano/extra/*.nanorc" 50 '') 51 + cfg.nanorc; 52 systemPackages = [ cfg.package ]; 53 pathsToLink = [ "/share/nano" ]; 54 }; 55 }; 56}