{ config, lib, pkgs, ... }: let inherit (lib) mkIf mkMerge mkThenElse; cfg = config.r6d.config-generator; computers = config.r6d.computers; profiles = config.r6d.profiles; in { # Nombre de process d'installation en parrallèle effectués par Nix nix.buildCores = 0; # The NixOS release to be compatible with for stateful data such as databases. system.stateVersion = "16.09"; # copies the NixOS configuration file (usually /etc/nixos/configuration.nix) and links it from the resulting system (getting to /run/current-system/configuration.nix) system.copySystemConfiguration = true; # On autorise les paquets non-libres nixpkgs.config.allowUnfree = true; # Lancement de dbus pour les utilisateurs services.dbus.socketActivated = true; # NixOS Hardening #security.grsecurity.enable = true; # Paquets environment = { systemPackages = with pkgs; [ bind # utilisé pour les utilitaires comme dig byobu # permet de se déconnecter d'un terminal sans l'aréter exfat # Pour monter les FAT avec Fuse git gitAndTools.gitSVN gitAndTools.tig gti # outil de gestion de version gnumake # pour décrire les recettes de compilation gnupg # GPG gpm # prise en charge de la souris en console htop # monitoring lsb-release # pour les scripts qui utilisent cet outil #libressl # librairie pour faire du TLS et les algorithmes de crypto par OpenBSD ncdu # outil pour voir l'espace utilisé nmap # outil de scan de port réseau mtr # outil de diagnostic réseau par2cmdline # outil de récupération de fichiers corrompus - .par2 p7zip # compression de fichier parted # partitionnement de disque pciutils pinentry # pour taper les mots de passe gpg psmisc # fournis les utilitaires comme killall, fuser, pstree python # python -- python -m SimpleHTTPServer 8000 python34Packages.glances # monitoring pwgen # générateur de mot de passe rtorrent # outil de téléchargement de torrent & magnet tmux # nécessaire pour byobu tree # affiche une arborescence de fichiers et dossiers usbutils (import ./vim.nix) wget # client HTTP console which # pour connaitre le chemin d'un exécutable ]; shellAliases = { byobu = "byobu-tmux"; gpg = "gpg2"; jacques-a-dit = "sudo"; tree = "tree -C"; tree1 = "tree -d -L 1"; tree2 = "tree -d -L 2"; tree3 = "tree -d -L 3"; # https://gist.github.com/amitchhajer/4461043 : Count number of code lines in git repository per user #git-loc = "git ls-files | while read f; do git blame --line-porcelain "${f}" | grep '^author '; done | sort -f | uniq -ic | sort -n"; grep = "grep --color=auto"; vi = "vim"; }; etc.gitconfig.text = builtins.readFile ./gitconfig; }; # programmes qui n'ont pas besoin de sudo pour fonctionner security.setuidPrograms = [ "mtr" ]; programs.bash = { enableCompletion = true; promptInit = builtins.readFile ./bash-prompt.sh; interactiveShellInit = builtins.readFile ./bash-interactive-init.sh; }; # https://wiki.mozilla.org/Security/Guidelines/OpenSSH#Modern programs.ssh.extraConfig = '' # Ensure KnownHosts are unreadable if leaked - it is otherwise easier to know which hosts your keys have access to. HashKnownHosts yes # Host keys the client accepts - order here is honored by OpenSSH HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256 KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp256,ecdh-sha2-nistp384,diffie-hellman-group-exchange-sha256 MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr ''; }