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