10   boot.tmp.cleanOnBoot = mkDefault true;
 
  11   boot.tmp.useTmpfs = mkDefault true;
 
  13   services.logrotate.enable = true;
 
  14   # NOTE: mostly useless on a server, and CPU intensive.
 
  16     enable = mkDefault true;
 
  17     dev.enable = mkDefault false;
 
  18     doc.enable = mkDefault true;
 
  19     info.enable = mkDefault false;
 
  20     man.enable = mkDefault true;
 
  21     nixos.enable = mkDefault false;
 
  23   programs.vim.defaultEditor = mkDefault true;
 
  24   programs.vim.enable = mkDefault true;
 
  25   environment.variables = {
 
  27     NIXPKGS_CONFIG = mkForce "";
 
  29     SYSTEMD_LESS = "FKMRX";
 
  30     # Setting TZ= avoids a lot of useless syscalls reading /etc/localtime
 
  31     # but requires to restart the session to change the time zone for all programs.
 
  32     TZ = lib.mkDefault (if config.time.timeZone != null then config.time.timeZone else "Europe/Paris");
 
  34   home-manager.users.root = {
 
  36       ../../home-manager/options.nix
 
  37       ../../home-manager/profiles/essential.nix
 
  39     services.gpg-agent.pinentryPackage = pkgs.pinentry-curses;
 
  42     settings.auto-optimise-store = mkDefault true;
 
  43     gc.automatic = mkDefault true;
 
  44     gc.dates = mkDefault "weekly";
 
  45     gc.options = mkDefault "--delete-older-than 7d";
 
  46     nixPath = mkForce [ ];
 
  47     # Pin the rev to the revision of the public Nixpkgs that the system was built from.
 
  48     # This is the version which will be locked by flakes using flake:nixpkgs
 
  49     #registry.nixpkgs = mkDefault { flake = inputs.nixpkgs; };
 
  58         inherit (inputs.nixpkgs) rev;
 
  59         # May be overriden by nixos/modules/installer/cd-dvd/channel.nix
 
  60         type = mkDefault "github";
 
  63     package = pkgs.nixVersions.stable;
 
  64     settings.experimental-features = [
 
  69   security.lockKernelModules = false;
 
  73       MaxRetentionSec=1month
 
  78   # none is the recommended elevator for SSD, whereas HDD could use mq-deadline.
 
  79   services.udev.extraRules = ''
 
  80     ACTION=="add|change", KERNEL=="sd[a-z][0-9]*", ATTR{../queue/rotational}=="0", ATTR{../queue/scheduler}="none"
 
  81     ACTION=="add|change", KERNEL=="nvme[0-9]*n[0-9]*p[0-9]*", ATTR{../queue/rotational}=="0", ATTR{../queue/scheduler}="none"
 
  84     enable = mkDefault true;
 
  85     enableRootSlice = mkDefault true;
 
  86     enableSystemSlice = mkDefault true;
 
  87     enableUserSlices = mkDefault true;
 
  89   systemd.services.sshd = {
 
  91       ManagedOOMPreference = "omit";
 
  95     system.nixos.versionSuffix = ".${
 
  96     substring 0 8 (inputs.self.lastModifiedDate or inputs.self.lastModified)}.${
 
  97     inputs.self.shortRev or "dirty"}";
 
  98     system.nixos.revision = mkIf (inputs.self ? rev) inputs.self.rev;
 
 100   # Let 'nixos-version --json' know about the Git revision of this flake.
 
 101   system.configurationRevision = mkIf (inputs.self ? rev) inputs.self.rev;
 
 103     system.configurationRevision =
 
 106     else throw "Refusing to build from a dirty Git tree!";
 
 108   users.mutableUsers = false;