1{ config, lib, pkgs, ... }:
2
3with lib;
4
5{
6 options = {
7 gnu = mkOption {
8 type = types.bool;
9 default = false;
10 description = ''
11 When enabled, GNU software is chosen by default whenever a there is
12 a choice between GNU and non-GNU software (e.g., GNU lsh
13 vs. OpenSSH).
14 '';
15 };
16 };
17
18 config = mkIf config.gnu {
19
20 environment.systemPackages = with pkgs;
21 # TODO: Adjust `requiredPackages' from `system-path.nix'.
22 # TODO: Add Inetutils once it has the new `ifconfig'.
23 [ parted
24 #fdisk # XXX: GNU fdisk currently fails to build and it's redundant
25 # with the `parted' command.
26 nano zile
27 texinfo # for the stand-alone Info reader
28 ]
29 ++ stdenv.lib.optional (!stdenv.isArm) grub2;
30
31
32 # GNU GRUB, where available.
33 boot.loader.grub.enable = !pkgs.stdenv.isArm;
34 boot.loader.grub.version = 2;
35
36 # GNU lsh.
37 services.openssh.enable = false;
38 services.lshd.enable = true;
39 programs.ssh.startAgent = false;
40 services.xserver.startGnuPGAgent = true;
41
42 # TODO: GNU dico.
43 # TODO: GNU Inetutils' inetd.
44 # TODO: GNU Pies.
45 };
46}