Compare commits
	
		
			No commits in common. 'nixos-unstable' and '2017-03-01-phenom' have entirely different histories. 
		
	
	
		
			nixos-unst
			...
			2017-03-01
		
	
		
	| @ -1,21 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.graphical { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|      # Gestion de FS |  | ||||||
|      gparted       # Gestion graphique de partitions |  | ||||||
|      unetbootin    # création de clefs USB bootables |  | ||||||
| 
 |  | ||||||
|      # visualisation de log |  | ||||||
|      #logstalgia |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,37 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (flags.officeSuite && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Bureautique |  | ||||||
|     gnumeric      # tableur |  | ||||||
|     #kde4.ksnapshot# réalisation de capture d'écran |  | ||||||
| 
 |  | ||||||
|     ## Cartes mentales |  | ||||||
|     freemind |  | ||||||
| 
 |  | ||||||
|     ## Diagrammes & Schémas |  | ||||||
|     dia           # dessin & schéma technique |  | ||||||
| 
 |  | ||||||
|     ## Editeur de texte |  | ||||||
|     #lyx          # surcouche WISIWIM à LaTeX |  | ||||||
|     #focuswriter  # outil pour l'écriture |  | ||||||
|     #textadept     # un éditeur de texte facile pour copier-coller graphique |  | ||||||
|     #zim          # outil de prise de notes, wiki de bureau |  | ||||||
| 
 |  | ||||||
|     ## Visionneuse |  | ||||||
|     #kde5.okular   # pdf |  | ||||||
|     #mcomix        # livres (cbr, liste d'images), gestion d'une bibliothèque # Supprimé dans NixOS 20.03 |  | ||||||
|     pdfpc         # pdf |  | ||||||
|     qpdfview      # pdf |  | ||||||
|     gqview        # visionneuse image & gestion basique de collection |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,33 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (flags.internetSuite && flags.graphical) { |  | ||||||
| 
 |  | ||||||
| # Paquets |  | ||||||
| environment.systemPackages = with pkgs; [ |  | ||||||
|     # Clients Internet |  | ||||||
| 
 |  | ||||||
|     ## Navigateur |  | ||||||
|     chromium |  | ||||||
|     firefox |  | ||||||
| 
 |  | ||||||
|     ## Mail & Discussion (texte, audio) |  | ||||||
|     claws-mail |  | ||||||
|     hexchat |  | ||||||
|     quasselClient |  | ||||||
|     mumble |  | ||||||
|     pidgin |  | ||||||
|     thunderbird |  | ||||||
| 
 |  | ||||||
|     # Transfert de fichier |  | ||||||
|     filezilla |  | ||||||
|     transmission-gtk |  | ||||||
|     transmission-remote-gtk |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (true && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,40 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   #inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   imports = [ |  | ||||||
|     # installées systématiquement |  | ||||||
|     ./default-applications.nix |  | ||||||
| 
 |  | ||||||
|     # commandées par config-generator |  | ||||||
|     ## option de configuration spécifique |  | ||||||
|     ./cao.nix                   # de conception assisté par ordinateur & modélisation |  | ||||||
|     ./cartographie.nix          # manipuler les données géographiques & cartes |  | ||||||
|     ./developpement.nix         # développer des programmes/scripts |  | ||||||
|     ./developpement-elm.nix     # développer en elm |  | ||||||
|     ./developpement-haskell.nix # développer en haskell |  | ||||||
|     ./developpement-java.nix    # développer en java |  | ||||||
|     ./developpement-jetbrains.nix # outils jetbrains |  | ||||||
|     ./developpement-rust.nix    # développer en rust |  | ||||||
|     ./edition-musique.nix       # modifier les fichiers musicaux |  | ||||||
|     ./edition-photo.nix         # modifier les photos & assimilé |  | ||||||
|     ./edition-video.nix         # modifier les vidéos |  | ||||||
|     ./jeux.nix                  # jouer, tout simplement ;) |  | ||||||
|     ./radio.nix                 # outils pour faire de la radio SDR |  | ||||||
| 
 |  | ||||||
|     ## if isDesktop |  | ||||||
|     ./adminsys.nix              # pour gérer le système dans son ensemble et les services |  | ||||||
|     ./bureau.nix                # éléments pour avoir un environement graphique minimal utilisable |  | ||||||
|     ./bureautique.nix           # dédiée à la bureautique (traitement de texte, dessin, ...) |  | ||||||
|     ./client-internet.nix       # pour accéder & utiliser des ressources par le réseau |  | ||||||
|     ./multimedia.nix            # pour gérer le son, l'image et la vidéo |  | ||||||
|     ./network.nix               # de gestion, de diagnostique & surveillance réseau |  | ||||||
|     ./securite.nix              # relatives à la sécurité (chiffrement, gpg, mots de passe, ...) |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,18 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (flags.developpement-haskell && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|   ] ++ (with pkgs.haskellPackages; [ |  | ||||||
|     # Haskell lib |  | ||||||
|     #threadscope     # visualisation des threads (<bidule>.eventlog) |  | ||||||
|   ]); |  | ||||||
| } |  | ||||||
| @ -1,17 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (flags.developpement-java && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # IDE |  | ||||||
|     jetbrains.idea-community # IntelliJ IDEA |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (flags.jetbrains-licensed && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     jetbrains.idea-ultimate |  | ||||||
|     jetbrains.clion |  | ||||||
|     jetbrains.datagrip |  | ||||||
|     jetbrains.pycharm-professional |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (flags.developpement-rust && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,33 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (flags.developpement && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Base de données |  | ||||||
|     #pgadmin             # interface d'administration de postgres ***plus à jour, version openssl dépréciée*** |  | ||||||
|     #sqlitebrowser       # interface d'administration de sqlite |  | ||||||
| 
 |  | ||||||
|     # Documentation |  | ||||||
|     #zeal                # consulter la documentation hors ligne |  | ||||||
| 
 |  | ||||||
|     # Gestion des sources |  | ||||||
|     #gitg               # interface pour utiliser git (historique, commit) |  | ||||||
|     gitstats            # génère un site web statique avec des statistiques |  | ||||||
|     git-cola            # interface pour utiliser git (historique, commit) |  | ||||||
| 
 |  | ||||||
|     ## Visualisation & outils de diff |  | ||||||
|     #gource              # visualisation en mouvement de l'historique git |  | ||||||
|     meld                # outil de comparaison graphique |  | ||||||
| 
 |  | ||||||
|     # Editeur texte |  | ||||||
|     atom |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,18 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (flags.edition-video && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Vidéo |  | ||||||
|     #cinelerra     # editeur video |  | ||||||
|     pitivi        # montage vidéo |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,17 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (flags.jeux && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Jeux |  | ||||||
|     urbanterror |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,18 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (flags.multimediaSuite && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     ## Video |  | ||||||
|     smplayer      # lecteur vidéo |  | ||||||
|     vlc           # lecteur vidéo |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,21 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (true && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Diagnostic réseau Wireshark (droits fins par le groupe wireshark) |  | ||||||
|   programs.wireshark = { |  | ||||||
|     enable = true; |  | ||||||
|     package = pkgs.wireshark; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,27 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (flags.radio && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     ## GUI |  | ||||||
|     chirp                   # Configuration de radios portatives |  | ||||||
|     gqrx                    # GUI |  | ||||||
|     cubicsdr                # Another GUI |  | ||||||
|     gnuradio-with-packages  # Software Defined Radio (SDR) software |  | ||||||
| 
 |  | ||||||
|     ## A Trier |  | ||||||
|     #inspectrum    # Tool for analysing captured signals from sdr receivers |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   nixpkgs.config.permittedInsecurePackages = [ |  | ||||||
|     "python2.7-Pillow-6.2.2" |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,17 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf (flags.securitySuite && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     gnome3.seahorse # gestionnaire graphique de clef GPG |  | ||||||
|     #yubikey-personalization-gui # utilisation de la clef Yubikey |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,48 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf true { |  | ||||||
| 
 |  | ||||||
|   nixpkgs.config.packageOverrides = pkgs: { |  | ||||||
|     claws-mail = pkgs.claws-mail.override { |  | ||||||
|       enablePgp = true; |  | ||||||
|       enablePluginArchive = true; |  | ||||||
|       #enablePluginFancy = false; # nécessite wekitgtk qui est troué # Option supprimée dans NixOS 20.03 |  | ||||||
|       enablePluginPdf = true; |  | ||||||
|       enablePluginRavatar = true; |  | ||||||
|       enablePluginSmime = true; |  | ||||||
|       enablePluginVcalendar = true; |  | ||||||
|       enableSpellcheck = true; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     ffmpeg-full = pkgs.ffmpeg-full.override { |  | ||||||
|       nonfreeLicensing = true; |  | ||||||
|       nvenc  = true; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     # bug connu : https://nixos.org/nix-dev/2014-December/015225.html |  | ||||||
|     # find /nix/store/  -maxdepth 1 -type d -name "*gnuradio-*" |  | ||||||
|     # Commande pour générer le path : find /nix/store/  -maxdepth 1 -type d -name "*gnuradio-*"|paste -d: -s - |  | ||||||
|     gnuradio-with-packages = pkgs.gnuradio-with-packages.override { |  | ||||||
|       extraPackages = with pkgs; [ |  | ||||||
|         gnuradio-ais |  | ||||||
|         gnuradio-gsm |  | ||||||
|         gnuradio-nacl |  | ||||||
|         gnuradio-osmosdr    # support des dongle Realtek |  | ||||||
|         gnuradio-rds        # support du décodage de RDS sur les radio FM |  | ||||||
|       ]; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     mumble = pkgs.mumble.override { pulseSupport = true; }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   #nixpkgs.config.permittedInsecurePackages = [ |  | ||||||
|   #  "webkitgtk-2.4.11"       # pour que le plugin fancy de claws-mail fonctionne |  | ||||||
|   #]; |  | ||||||
| } |  | ||||||
| @ -1,17 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf true { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     ## Manipulation de fichier |  | ||||||
|     vifm            # gestionnaire de fichiers basé sur VIM (console) |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,33 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.officeSuite { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Bureautique |  | ||||||
|     aspell aspellDicts.fr         # correction d'ortographe |  | ||||||
|     python39Packages.grammalecte  # correction gramatical |  | ||||||
| 
 |  | ||||||
|     # Gestion de tâche |  | ||||||
|     taskwarrior     # gestionnaire de tâches en console |  | ||||||
| 
 |  | ||||||
|     ## Convertisseurs (texte -> <autre format>) |  | ||||||
|     gnuplot       # générateur de graphes à partir de données numériques |  | ||||||
|     graphviz      # dot, neato : traçage de graphes (carré, rond) |  | ||||||
|     #jekyll       # générateur statique de site web |  | ||||||
|     #odpdown      # conversion md -> presentation ODP : https://github.com/thorstenb/odpdown |  | ||||||
|     pandoc |  | ||||||
|     #haskellPackages.pandoc-citeproc # ***BROKEN*** |  | ||||||
|     texlive.combined.scheme-full # distribution LaTeX |  | ||||||
|     #texLive       # distribution LaTeX de base |  | ||||||
|     #texLiveBeamer # paquets et extensions pour Beamer |  | ||||||
|     #texLiveModerncv # paquets pour la classe Modern CV |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.conception-assistee { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,18 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.cartographie { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Gestion de données géographiques |  | ||||||
|     expat |  | ||||||
|     gpsbabel      # pour convertir les données des GPS |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,30 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.internetSuite { |  | ||||||
| 
 |  | ||||||
| # Paquets |  | ||||||
| environment.systemPackages = with pkgs; [ |  | ||||||
|     # Clients Internet |  | ||||||
| 
 |  | ||||||
|     ## Réseaux sociaux |  | ||||||
|     #turses                            # client twitter en ncurse |  | ||||||
|     #python39Packages.rainbowstream    # client twitter en console |  | ||||||
|     #rtv                               # client reddit en console |  | ||||||
| 
 |  | ||||||
|     ## Mail & Discussion (texte, audio) |  | ||||||
|     mutt |  | ||||||
| 
 |  | ||||||
|     ## Sauvegarde nuagique (cloud storage) |  | ||||||
|     #rclone |  | ||||||
| 
 |  | ||||||
|     ## P2P |  | ||||||
|     rtorrent      # outil de téléchargement de torrent & magnet |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,73 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf true { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|       byobu         # permet de se déconnecter d'un terminal sans l'arréter |  | ||||||
|       tig gti lazygit # outil de gestion de version |  | ||||||
|       gnumake       # pour décrire les recettes de compilation |  | ||||||
|       gnupg         # GPG |  | ||||||
|       htop          # monitoring |  | ||||||
|       lsb-release   # pour les scripts qui utilisent cet outil (dont byobu) |  | ||||||
|       #libressl      # librairie pour faire du TLS et les algorithmes de crypto par OpenBSD |  | ||||||
|       ncdu          # outil pour voir l'espace utilisé |  | ||||||
|       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 |  | ||||||
|       shared-mime-info  # MIME info |  | ||||||
|       tmux          # nécessaire pour byobu |  | ||||||
|       tree          # affiche une arborescence de fichiers et dossiers |  | ||||||
|       usbutils |  | ||||||
|       wget          # client HTTP console |  | ||||||
|       which         # pour connaitre le chemin d'un exécutable |  | ||||||
|   ]; |  | ||||||
|   programs = { |  | ||||||
|     fish.enable = true; |  | ||||||
|     gnupg.agent.enable = true; |  | ||||||
|     git = { |  | ||||||
|       enable = true; |  | ||||||
|       package = pkgs.gitFull; |  | ||||||
|       config = { |  | ||||||
|         # http://www.git-attitude.fr/2014/09/15/30-options-git-qui-gagnent-a-etre-connues/ |  | ||||||
|         color = { |  | ||||||
|           diff = "auto"; |  | ||||||
|           branch = "auto"; |  | ||||||
|           interactive = "auto"; |  | ||||||
|           pager = true; |  | ||||||
|           showbranch = "auto"; |  | ||||||
|           status = "auto"; |  | ||||||
|         }; |  | ||||||
|         alias = { |  | ||||||
|           a  = "add -p"; |  | ||||||
|           br = "for-each-ref --sort=committerdate refs/heads/ --format='%(committerdate:short)\t%(authorname)\t%(refname:short)'"; |  | ||||||
|           ci = "commit"; |  | ||||||
|           co = "checkout"; |  | ||||||
|           ff = "pull --ff-only"; |  | ||||||
|           oops = "commit --amend --no-edit"; |  | ||||||
|           # Show files ignored by git |  | ||||||
|           ignored = "ls-files -o -i --exclude-standard"; |  | ||||||
|           ls = "ls-files"; |  | ||||||
|           st = "status"; |  | ||||||
|           # Logs |  | ||||||
|           lol = "log --graph --decorate --pretty=oneline --abbrev-commit"; |  | ||||||
|           lola = "log --graph --decorate --pretty=oneline --abbrev-commit --all"; |  | ||||||
|           not-pushed = "log --branches --not --remotes"; |  | ||||||
|         }; |  | ||||||
|         push.default = "simple"; |  | ||||||
|         code.editor = "${pkgs.vim_configurable}/bin/vim"; |  | ||||||
|       }; |  | ||||||
|       lfs.enable = true; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| @ -1,41 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   #inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   imports = [ |  | ||||||
|     # installées systématiquement |  | ||||||
|     ./default-applications.nix |  | ||||||
| 
 |  | ||||||
|     # commandées par config-generator |  | ||||||
|     ## option de configuration spécifique |  | ||||||
|     ./cao.nix                   # de conception assisté par ordinateur & modélisation |  | ||||||
|     ./cartographie.nix          # manipuler les données géographiques & cartes |  | ||||||
|     ./developpement.nix         # développer des programmes/scripts |  | ||||||
|     ./developpement-elm.nix     # développer en elm |  | ||||||
|     ./developpement-haskell.nix # développer en haskell |  | ||||||
|     ./developpement-java.nix    # développer en java |  | ||||||
|     ./developpement-jetbrains.nix # outils jetbrains |  | ||||||
|     ./developpement-rust.nix    # développer en rust |  | ||||||
|     ./edition-musique.nix       # modifier les fichiers musicaux |  | ||||||
|     ./edition-photo.nix         # modifier les photos & assimilé |  | ||||||
|     ./edition-video.nix         # modifier les vidéos |  | ||||||
|     ./jeux.nix                  # jouer, tout simplement ;) |  | ||||||
|     ./radio.nix                 # outils pour faire de la radio SDR |  | ||||||
|     ./vim.nix                   # vim avec plugins |  | ||||||
| 
 |  | ||||||
|     ## if isDesktop |  | ||||||
|     ./adminsys.nix              # pour gérer le système dans son ensemble et les services |  | ||||||
|     ./bureau.nix                # éléments pour avoir un environement graphique minimal utilisable |  | ||||||
|     ./bureautique.nix           # dédiée à la bureautique (traitement de texte, dessin, ...) |  | ||||||
|     ./client-internet.nix       # pour accéder & utiliser des ressources par le réseau |  | ||||||
|     ./multimedia.nix            # pour gérer le son, l'image et la vidéo |  | ||||||
|     ./network.nix               # de gestion, de diagnostique & surveillance réseau |  | ||||||
|     ./securite.nix              # relatives à la sécurité (chiffrement, gpg, mots de passe, ...) |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,36 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.developpement-haskell { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Haskell platform |  | ||||||
|     cabal-install         # fournis cabal |  | ||||||
|     cabal2nix             # convertir les .cabal en .nix |  | ||||||
|     ghc                   # pour les appels depuis les scripts |  | ||||||
|     stack                 # pour les paquets en LTS de stackage |  | ||||||
|   ] ++ (with pkgs.haskellPackages; [ |  | ||||||
|     # Haskell lib |  | ||||||
|     autoproc              # ? procmail |  | ||||||
|     #brittany              # formatteur de code |  | ||||||
|     #darcs                 # gestionnaire de version éponyme |  | ||||||
|     #ghc-mod               # outil d'analyse de code haskell utilisé par IDE |  | ||||||
|     #hindent               # indentation code ***BROKEN*** |  | ||||||
|     hlint                 # qualite de code, analyse statique de code + astuces & bonnes pratiques |  | ||||||
|     #postgrest            # mapper HTTP <-> PostgreSQL |  | ||||||
|     servant               # génération d'API REST |  | ||||||
|     stylish-haskell       # qualité de code |  | ||||||
|     turtle                # genre shell-scripting |  | ||||||
| 
 |  | ||||||
|     # Application perso |  | ||||||
|     #hahp |  | ||||||
|     #pandoc-filter-graphviz # filtre pour utiliser graphviz à partir de pandoc ***BROKEN*** |  | ||||||
|   ]); |  | ||||||
| } |  | ||||||
| @ -1,24 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.developpement-java { |  | ||||||
| 
 |  | ||||||
|   # Installe le paquet + JAVA_HOME |  | ||||||
|   programs.java = { |  | ||||||
|     enable = true; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Systèmes de build autour de java |  | ||||||
|     ant |  | ||||||
|     maven |  | ||||||
|     gradle |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.jetbrains-licensed { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,20 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.developpement-rust { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Rust |  | ||||||
|     cargo               # récupération des dépendances + compilation projet rust |  | ||||||
|     rustc               # pour les appels depuis les scripts |  | ||||||
|     rustup              # outil de configuration de toolchain rust |  | ||||||
|     crate2nix           # génère les fichiers de build Nix dans un projet Rust |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,40 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.developpement { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Build / outil de construction |  | ||||||
|     autobuild |  | ||||||
|     autoconf |  | ||||||
|     automake |  | ||||||
| 
 |  | ||||||
|     # Base de données |  | ||||||
|     pg_top                 # monitoring de PostgreSQL |  | ||||||
|     sqlite                 # le moteur de base de données |  | ||||||
| 
 |  | ||||||
|     # C / C++ |  | ||||||
|     gcc                    # pour les appels depuis les scripts |  | ||||||
| 
 |  | ||||||
|     # Gestion des sources |  | ||||||
|     cloc                   # outil pour compter les lignes de code source |  | ||||||
|     mercurial |  | ||||||
|     subversion |  | ||||||
| 
 |  | ||||||
|     # spécification |  | ||||||
|     plantuml               # diagrammes UML et plus si affinité |  | ||||||
| 
 |  | ||||||
|     # Mono |  | ||||||
|     #mono46                # interpréteur .NET |  | ||||||
| 
 |  | ||||||
|     ## Visualisation & outils de diff |  | ||||||
|     #vbindiff              # diff de fichier hexadecimaux avec vim |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.edition-musique { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,21 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.edition-photo { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
| environment.systemPackages = with pkgs; [ |  | ||||||
|     # Méta données |  | ||||||
|     exif |  | ||||||
|     exiftags |  | ||||||
| 
 |  | ||||||
|     # Retouche, modification & dessin vectoriel |  | ||||||
|     imagemagick   # modification image en CLI |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,16 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.edition-video { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     ffmpeg-full   # assemblage de flux audio & video en ligne de commande |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.jeux { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,20 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.multimediaSuite { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     ## Audio |  | ||||||
|     beep |  | ||||||
|     cmus          # lecteur audio console |  | ||||||
|     espeak        # synthèse vocale |  | ||||||
|     vorbis-tools  # codec |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,29 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.radio { |  | ||||||
| 
 |  | ||||||
| # pour que ça marche |  | ||||||
| # sudo rmmod dvb_usb_rtl28xxu |  | ||||||
| 
 |  | ||||||
| # lecture radio FM |  | ||||||
| # rtl_fm -f 96.9e6 -M wbfm -s 440000 -r 44100 - | aplay -r 44100 -f S16_LE |  | ||||||
| # rtl_fm -f 96.95e6 -M wbfm -s 441000 -r 44100 - | aplay -r 44100 -f S16_LE -t raw -c 1 |  | ||||||
| # rtl_fm -f 96.95e6 -M wbfm -s 441000 -r 44100 -E deemp - |pv| aplay -r 44100 -f S16_LE -t raw -c 1 |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     gnss-sdr    # Global Navigation Satellite Systems software-defined receiver |  | ||||||
|     liquid-dsp  # Digital signal processing library for software-defined radios |  | ||||||
|     rtl-sdr     # Turns your Realtek RTL2832 based DVB dongle into a SDR receiver |  | ||||||
|     dump1090    # Listen to planes ADS-B and view them on a map |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   hardware.rtl-sdr.enable = true; |  | ||||||
| } |  | ||||||
| @ -1,17 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.securitySuite { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     pass            # gestionnaire de mots de passe |  | ||||||
|     pwgen           # générateur de mots de passe |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,28 +0,0 @@ | |||||||
| {pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   myVim = pkgs.vim_configurable.customize { |  | ||||||
|     # Specifies the vim binary name. |  | ||||||
|     # E.g. set this to "my-vim" and you need to type "my-vim" to open this vim |  | ||||||
|     # This allows to have multiple vim packages installed (e.g. with a different set of plugins) |  | ||||||
|     name = "vim"; |  | ||||||
|     vimrcConfig.customRC = builtins.readFile ./vimrc; |  | ||||||
|     vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; { |  | ||||||
|       start = [ |  | ||||||
|         wombat256-vim |  | ||||||
|       ]; |  | ||||||
|       opt = [ |  | ||||||
|         elm-vim |  | ||||||
|         vim-fish |  | ||||||
|         vim-nix |  | ||||||
|         vimwiki |  | ||||||
|       ]; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
| in { |  | ||||||
|   programs.vim = { |  | ||||||
|     defaultEditor = true; |  | ||||||
|     package = myVim; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| @ -1,18 +1,18 @@ | |||||||
| { config, lib, pkgs, ... }: | { config, lib, pkgs, ... }: | ||||||
| 
 | 
 | ||||||
|  | let | ||||||
|  |   #inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
| { | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     # moulinette de configuration |     # recettes | ||||||
|     /*./config-generator.nix*/ |     ./public/public.nix | ||||||
|     ./options.nix |  | ||||||
| 
 | 
 | ||||||
|     # Redéfinition d'applications et de modules |     # moulinette de configuration | ||||||
|     ./applications/overrides.nix |     ./config-generator.nix | ||||||
| 
 |  | ||||||
|     # subfolders |  | ||||||
|     ./applications/graphical/default.nix |  | ||||||
|     ./applications/terminal/default.nix |  | ||||||
|     ./configuration/default.nix |  | ||||||
|     ./services/default.nix |  | ||||||
|   ]; |   ]; | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,28 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   #inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   imports = [ |  | ||||||
| 
 |  | ||||||
|     # installées systématiquement |  | ||||||
|     ./environment.nix |  | ||||||
|     ./localisation.nix |  | ||||||
|     ./network.nix |  | ||||||
|     #./network-ipv6.nix |  | ||||||
|     ./u2f.nix |  | ||||||
|     ./udev.nix |  | ||||||
| 
 |  | ||||||
|     # commandées par config-generator |  | ||||||
|     ## option de configuration spécifique |  | ||||||
|     ./awesome.nix               # pour le gestionaire de fenêtres awesome |  | ||||||
|     ./laptop.nix                    # appli & configuration adaptée pour un PC portable |  | ||||||
|     ./nix-options.nix              # options de Nix (update, gc, optimisation) |  | ||||||
|     ./swap.nix                      # définition de l'utilisation du swap |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,64 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # The NixOS release to be compatible with for stateful data such as databases. |  | ||||||
|   system.stateVersion = "19.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; |  | ||||||
| 
 |  | ||||||
|   # NixOS Hardening |  | ||||||
|   #security.grsecurity.enable = true; |  | ||||||
| 
 |  | ||||||
|   # Ménage de /tmp au boot |  | ||||||
|   boot.cleanTmpDir = true; |  | ||||||
| 
 |  | ||||||
|   # Activation des pages de manuel |  | ||||||
|   documentation.man.enable = true; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment = { |  | ||||||
|     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"; |  | ||||||
|       byobu-adminsys = "/etc/nixos/base/byobu-adminsys"; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
|   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-nistp384,ecdh-sha2-nistp256,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 |  | ||||||
|   ''; |  | ||||||
| } |  | ||||||
| @ -1,40 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf flags.laptop { |  | ||||||
| 
 |  | ||||||
|   # Gestion spécifique pour PC portable |  | ||||||
| 
 |  | ||||||
|   ## Gestion de l'énergie |  | ||||||
|   services.tlp.enable = true; |  | ||||||
| 
 |  | ||||||
|   ## Activation d'un gestionnaire de réseau |  | ||||||
|   networking.networkmanager.enable = true; |  | ||||||
| 
 |  | ||||||
|   hardware.bluetooth = { |  | ||||||
|     enable = true; |  | ||||||
|     powerOnBoot = false; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Gestion graphique du réseau dans la barre système |  | ||||||
|   programs.nm-applet.enable = true; |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     wirelesstools           # fournis iwconfig |  | ||||||
|     blueman                 # outils bluetooth (manager, system tray) |  | ||||||
|     cbatticon               # status de la batterie dans le system tray |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   # Services |  | ||||||
|   services.blueman.enable = true; |  | ||||||
|   services.xserver.libinput = { |  | ||||||
|     enable = true; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| @ -1,24 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf true { |  | ||||||
| 
 |  | ||||||
|   # fix: Hostname -s renvoie "Unknown host" alors que hostname renvoie la bonne valeur |  | ||||||
|   #      Il s'avère que hostname vérifie la validité du FQDN et du reverse. |  | ||||||
|   #      Fixer ces paramètres dans les hosts permet de faire tomber en marche |  | ||||||
|   networking.extraHosts = '' |  | ||||||
|     127.0.0.1   ${config.networking.fqdn} ${config.networking.hostName} |  | ||||||
|   ''; |  | ||||||
| 
 |  | ||||||
|   # Activation du routage |  | ||||||
|   boot.kernel.sysctl = { |  | ||||||
|     "net.ipv4.conf.all.forwarding" = true; |  | ||||||
|     "net.ipv4.conf.default.forwarding" = true; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| @ -1,30 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
| 
 |  | ||||||
|   # Automatic update & automatic clean |  | ||||||
| 
 |  | ||||||
|   system.autoUpgrade.enable = flags.auto-upgrade; |  | ||||||
|   nix = { |  | ||||||
|     extraOptions = '' |  | ||||||
|       experimental-features = nix-command flakes |  | ||||||
|     ''; |  | ||||||
|     settings = { |  | ||||||
|       auto-optimise-store = true; |  | ||||||
|       # Nombre de process d'installation en parrallèle effectués par Nix |  | ||||||
|       cores = 0; |  | ||||||
|     }; |  | ||||||
|     gc = { |  | ||||||
|       automatic = true; |  | ||||||
|       dates = "daily"; |  | ||||||
|       options = "--delete-older-than 7d"; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| @ -1,41 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf true { |  | ||||||
|   # Ajout du support des yobikey & hyperfido |  | ||||||
|   ## source des valeurs udev : https://github.com/Yubico/libu2f-host/blob/master/70-u2f.rules |  | ||||||
| 
 |  | ||||||
|   ## source car udev sur nixos semble ancien : https://raw.githubusercontent.com/Yubico/libu2f-host/master/70-old-u2f.rules |  | ||||||
|   services.udev.extraRules = '' |  | ||||||
|   # this udev file should be used with udev older than 188 |  | ||||||
|   ACTION!="add|change", GOTO="u2f_end" |  | ||||||
| 
 |  | ||||||
|   # Yubico YubiKey |  | ||||||
|   KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0113|0114|0115|0116|0120|0402|0403|0406|0407|0410", GROUP="plugdev", MODE="0660" |  | ||||||
| 
 |  | ||||||
|   # Happlink (formerly Plug-Up) Security KEY |  | ||||||
|   KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="f1d0", GROUP="plugdev", MODE="0660" |  | ||||||
| 
 |  | ||||||
|   #  Neowave Keydo and Keydo AES |  | ||||||
|   KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1e0d", ATTRS{idProduct}=="f1d0|f1ae", GROUP="plugdev", MODE="0660" |  | ||||||
| 
 |  | ||||||
|   # HyperSecu HyperFIDO |  | ||||||
|   KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="096e", ATTRS{idProduct}=="0880", GROUP="plugdev", MODE="0660" |  | ||||||
| 
 |  | ||||||
|   LABEL="u2f_end" |  | ||||||
| 
 |  | ||||||
|   SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", GROUP="audio", MODE="0666", SYMLINK+="rtl_sdr" |  | ||||||
|   ''; |  | ||||||
| 
 |  | ||||||
|   security.pam.u2f.enable = true; |  | ||||||
| 
 |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     libu2f-host |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,7 +0,0 @@ | |||||||
| all: |  | ||||||
| 	nixos-generate-config --root /mnt |  | ||||||
| 	git config --global user.email "nixos-live@example.org" |  | ||||||
| 	git config --global user.name "NixOS Live" |  | ||||||
| 	cd /mnt/etc/nixos && git init . && git add . && git commit -m "initial commit" |  | ||||||
| 	cd /mnt/etc/nixos && git submodule add http://gogs.prunetwork.fr:80/nixos-config/nixos-template-base.git base |  | ||||||
| 	cd /mnt/etc/nixos && git submodule add https://gogs.prunetwork.fr/Capgemini-CDS-Arkea/template-nixos.git capgemini-cmb |  | ||||||
| @ -1,24 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   imports = [ |  | ||||||
|     capgemini-cmb/default.nix |  | ||||||
|     /nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix |  | ||||||
|     nixos-template-base/base.nix |  | ||||||
|   ]; |  | ||||||
|   # Custom name |  | ||||||
|   isoImage.isoName = pkgs.lib.mkForce "${config.isoImage.isoBaseName}-capgemini-${config.system.nixosLabel}-${pkgs.stdenv.system}.iso"; |  | ||||||
|   # Avoid having the terminal flooded by kernel audit messages |  | ||||||
|   boot.kernelParams = [ "audit=0" ]; |  | ||||||
| 
 |  | ||||||
|   # Files to copy to the liveCD |  | ||||||
|   isoImage.contents = [ |  | ||||||
|     { |  | ||||||
|       source = ./Makefile.installation; |  | ||||||
|       target = "/custom/Makefile"; |  | ||||||
|     } |  | ||||||
|   ]; |  | ||||||
|   environment.shellAliases = { nixos-generate-custom-config = "cd /iso/custom/ && make";}; |  | ||||||
|   networking.hostName = "nixos-livecd"; |  | ||||||
|   networking.domain = "grudu.net"; |  | ||||||
| } |  | ||||||
| @ -1,50 +0,0 @@ | |||||||
| let |  | ||||||
|   lib = with import <nixpkgs> {}; pkgs.lib; |  | ||||||
| 
 |  | ||||||
|   profiles = { |  | ||||||
|     isDesktopEnvironment = { |  | ||||||
|       awesome = true; |  | ||||||
|       internetSuite = true; |  | ||||||
|       graphical = true; |  | ||||||
|       multimediaSuite = true; |  | ||||||
|       officeSuite = true; |  | ||||||
|       pulseaudio = true; |  | ||||||
|       securitySuite = true; |  | ||||||
|     }; |  | ||||||
|     isWorkstation = { |  | ||||||
|       docker = true; |  | ||||||
|       developpement = true; |  | ||||||
|       developpement-elm = true; |  | ||||||
|       developpement-haskell = true; |  | ||||||
|       developpement-java = true; |  | ||||||
|       developpement-rust = true; |  | ||||||
|     }; |  | ||||||
|     #isServer = { |  | ||||||
|       #}; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| with lib; rec{ |  | ||||||
|   # Apply the profiles (pre-defined + custom) to the whole directory |  | ||||||
|   applyProfilesToDirectory = customProfiles: directory: |  | ||||||
|     lib.mapAttrs (applyProfilesToMachine customProfiles) directory; |  | ||||||
| 
 |  | ||||||
|   # Apply the profiles (pre-defined + custom) to a machine |  | ||||||
|   applyProfilesToMachine = customProfiles: machineName: machineOptions: |  | ||||||
|   { configurationFlags = lib.recursiveUpdate (generateFlagsSet customProfiles machineOptions.profiles) machineOptions.configurationFlags; |  | ||||||
|     configurationOptions = machineOptions.configurationOptions; |  | ||||||
|     profiles = machineOptions.profiles; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Generate a set of configuration flags based on profiles |  | ||||||
|   generateFlagsSet = customProfiles: machineProfiles: |  | ||||||
|   let |  | ||||||
|     allProfiles = recursiveUpdate profiles customProfiles; |  | ||||||
|     conditionalFlags = name: value: |  | ||||||
|       if machineProfiles.${name} |  | ||||||
|       then value |  | ||||||
|       else {}; |  | ||||||
|   in |  | ||||||
|   foldr (a: b: a // b) {} (mapAttrsToList conditionalFlags allProfiles); |  | ||||||
| } |  | ||||||
| @ -0,0 +1,40 @@ | |||||||
|  | { stdenv, fetchurl | ||||||
|  | , boost | ||||||
|  | , bzip2 | ||||||
|  | , cmake | ||||||
|  | , expat | ||||||
|  | , geos | ||||||
|  | , lua | ||||||
|  | , postgresql | ||||||
|  | , proj | ||||||
|  | , zlib | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | stdenv.mkDerivation rec { | ||||||
|  |   #version = "0.87.1"; | ||||||
|  |   version = "0.90.1"; | ||||||
|  |   name = "osm2pgsql-${version}-0"; | ||||||
|  | 
 | ||||||
|  |   src = fetchurl { | ||||||
|  |     url = "https://github.com/openstreetmap/osm2pgsql/archive/${version}.tar.gz"; | ||||||
|  |     sha256 = "0i0zg8di8nbh96qnyyr156ikwcsq1w9b2291bazm5whb351flmqx"; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     #nativeBuildInputs = [ ]; | ||||||
|  |     buildInputs = [ ]; | ||||||
|  | 
 | ||||||
|  |     #preConfigure = '' | ||||||
|  |     ''; | ||||||
|  |     #buildPhase = ''jam "-j$NIX_BUILD_CORES" ''; | ||||||
|  |     #installPhase = '' | ||||||
|  |     #''; | ||||||
|  | 
 | ||||||
|  |     meta = with stdenv.lib; { | ||||||
|  |       homepage = http://wiki.openstreetmap.org/wiki/Osm2pgsql; | ||||||
|  |       description = "osm2pgsql is a tool for loading OpenStreetMap data into a PostgreSQL / PostGIS database suitable for applications like rendering into a map, geocoding with Nominatim, or general analysis."; | ||||||
|  |       license = licenses.gpl2; | ||||||
|  |       #maintainers = [ maintainers.phunehehe ]; | ||||||
|  |       maintainers = [ maintainers.jpierre03 ]; | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
| @ -1,8 +0,0 @@ | |||||||
| #!/usr/bin/env bash |  | ||||||
| 
 |  | ||||||
| EXCLUSION="~$|swp$|swo$" |  | ||||||
| 
 |  | ||||||
| while inotifywait --exclude $EXCLUSION -r -e modify . |  | ||||||
| do |  | ||||||
| 	$@ |  | ||||||
| done |  | ||||||
| @ -1,216 +0,0 @@ | |||||||
| { config, lib, pkgs, r6d, ... }: |  | ||||||
| let |  | ||||||
|   inherit (lib) mkEnableOption mkTextOption mkIf mkMerge mkOption singleton types; |  | ||||||
| 
 |  | ||||||
|   # TODO: Anglish :) |  | ||||||
|   machineOptions = types.submodule { |  | ||||||
|     options = { |  | ||||||
| 
 |  | ||||||
|       configurationFlags = { |  | ||||||
|         #enable                = mkEnableOption "Génération de la configuration d'une machine."; |  | ||||||
|         awesome               = mkEnableOption "Profil pour activer le gestionnaire de fenêtre awesome."; |  | ||||||
|         auto-upgrade          = mkEnableOption "Profil pour activer les mises à jour automatiques."; |  | ||||||
|         cartographie          = mkEnableOption "Profil pour activer les outils de gestion de données géographiques."; |  | ||||||
|         conception-assistee   = mkEnableOption "Profil pour activer les outils de conception électronique & modélisation 3D"; |  | ||||||
|         database_postgres     = mkEnableOption "Profil pour activer le SGBD PostgreSQL."; |  | ||||||
|         developpement         = mkEnableOption "Profil pour activer les outils de développement"; |  | ||||||
|         developpement-elm     = mkEnableOption "Profil pour activer les outils de développement Elm"; |  | ||||||
|         developpement-haskell = mkEnableOption "Profil pour activer les outils de développement Haskell"; |  | ||||||
|         developpement-java    = mkEnableOption "Profil pour activer les outils de développement Java"; |  | ||||||
|         developpement-rust    = mkEnableOption "Profil pour activer les outils de développement Rust"; |  | ||||||
|         docker                = mkEnableOption "Profil pour l'utilisation de Docker."; |  | ||||||
|         dovecot               = mkEnableOption "Profil pour activer le serveur Dovecot."; |  | ||||||
|         dns_autorite          = mkEnableOption "Profil pour servir les fichiers de zone DNS."; |  | ||||||
|         dns_resolveur         = mkEnableOption "Profil pour activer un résolveur DNS local."; |  | ||||||
|         edition-musique       = mkEnableOption "Profil pour la création/édition de musique."; |  | ||||||
|         edition-photo         = mkEnableOption "Profil pour la création/édition de photos."; |  | ||||||
|         edition-video         = mkEnableOption "Profil pour la création/édition de video."; |  | ||||||
|         elasticsearch         = mkEnableOption "Profil pour activer le service elasticsearch."; |  | ||||||
|         fail2ban              = mkEnableOption "Profil pour activer Fail2ban."; |  | ||||||
|         graphical             = mkEnableOption "Profil pour activer les applications graphgiques."; |  | ||||||
|         hydra-builder         = mkEnableOption "Profil pour une machine qui compile pour hydra."; |  | ||||||
|         hydra-core            = mkEnableOption "Profil pour un serveur hydra."; |  | ||||||
|         kibana                = mkEnableOption "Profil pour activer le service kibana."; |  | ||||||
|         internetSuite         = mkEnableOption "Profil pour la suite de logiciels pour Internet."; |  | ||||||
|         jetbrains-licensed    = mkEnableOption "Profil pour la suite de développement Jetbrains payante (sous-ensemble)."; |  | ||||||
|         jeux                  = mkEnableOption "Profil pour les jeux vidéos."; |  | ||||||
|         laptop                = mkEnableOption "Profil pour les outils spécifiques aux ordinateurs portables."; |  | ||||||
|         locate                = mkEnableOption "Profil pour activer la fonction locate."; |  | ||||||
|         mailboxes             = mkEnableOption "Profil pour stocker les mails dans des boîtes aux lettres."; |  | ||||||
|         multimediaSuite       = mkEnableOption "Profil pour la suite multimédia."; |  | ||||||
|         munin                 = mkEnableOption "Profil pour activer la supervision par Munin"; |  | ||||||
|         murmur                = mkEnableOption "Profil pour activer un serveur Mumble (murmur)"; |  | ||||||
|         nixos-manual          = mkEnableOption "Profil pour activer la documentation nixos en local sur un TTY"; |  | ||||||
|         nix-serve-server      = mkEnableOption "Profil pour que la machine soit un serveur de cache nix."; |  | ||||||
|         nixStoreProxyCache    = mkEnableOption "Profil pour activer le proxy cahce nginx pour le nix store"; |  | ||||||
|         officeSuite           = mkEnableOption "Profil pour la suite bureautique"; |  | ||||||
|         pipewire              = mkEnableOption "Profil pour activer pipewire."; |  | ||||||
|         print                 = mkEnableOption "Profil pour activer cups & pouvoir imprimer."; |  | ||||||
|         pulseaudio            = mkEnableOption "Profil pour activer pulseaudio."; |  | ||||||
|         rabbitmq              = mkEnableOption "Profil pour activer le service de messagerie AMQP."; |  | ||||||
|         radio                 = mkEnableOption "Profil pour activer les outils pour faire de radio numérique - SDR."; |  | ||||||
|         radicale              = mkEnableOption "Profil pour activer le service d'hébergement de calendrier + tâches & contacts."; |  | ||||||
|         rmilter               = mkEnableOption "Profil pour activer le filtrage de mails par postfix."; |  | ||||||
|         scanner               = mkEnableOption "Profil pour que les scanners soient utilisable."; |  | ||||||
|         securitySuite         = mkEnableOption "Profil pour la suite de logiciels de sécurité."; |  | ||||||
|         smokeping             = mkEnableOption "Profil pour activer le monitoring réseau par smokeping."; |  | ||||||
|         swap                  = mkEnableOption "Profil pour que le swap soit activé."; |  | ||||||
|         virtualbox            = mkEnableOption "Profil pour l'utilisation de VirtualBox."; |  | ||||||
|         xmonad                = mkEnableOption "Profil pour activer le gestionnaire de fenêtres xmonad."; |  | ||||||
|         znc                   = mkEnableOption "Profil pour activer le relais IRC ZNC."; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       configurationOptions = { |  | ||||||
| 
 |  | ||||||
|       ipAddress = mkOption { |  | ||||||
|         description = "Adresse IP."; |  | ||||||
|         type = lib.types.str; |  | ||||||
|       }; |  | ||||||
|       nix-serve-server = mkEnableOption "nix-serve server."; |  | ||||||
|       nix-serve-client = { |  | ||||||
|         enable =  mkEnableOption "nix-serve client"; |  | ||||||
|         servers = mkOption { |  | ||||||
|           default = [ https://cache.nixos.org/ ]; |  | ||||||
|           description = "List of nix-serve servers providing binary caches."; |  | ||||||
|           type = types.listOf types.str; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       tinc = { |  | ||||||
|         enable = mkEnableOption "Enable tinc service."; |  | ||||||
|         dnsFQDN = mkOption { |  | ||||||
|           example = "device.example.net."; |  | ||||||
|           description = "DNS name of host pointing to tunnel IP."; |  | ||||||
|           type = lib.types.str; |  | ||||||
|         }; |  | ||||||
|         connectToAddress = mkOption { |  | ||||||
|           default = ""; |  | ||||||
|           example = "192.168.1.1"; |  | ||||||
|           description = "External address to connect from another node."; |  | ||||||
|           type = lib.types.str; |  | ||||||
|         }; |  | ||||||
|         vpnAddress = mkOption { |  | ||||||
|           example = "192.168.69.69/24"; |  | ||||||
|           description = "VPN local node IP address."; |  | ||||||
|           type = lib.types.str; |  | ||||||
|         }; |  | ||||||
|         vpnCidrLength = mkOption { |  | ||||||
|           default = 24; |  | ||||||
|           example = 24; |  | ||||||
|           description = "VPN netmask length."; |  | ||||||
|           type = lib.types.int; |  | ||||||
|         }; |  | ||||||
|         extraConfig = mkOption { |  | ||||||
|           default = ""; |  | ||||||
|           example = '' |  | ||||||
|               Mode = router |  | ||||||
|               ConnecTo = bar |  | ||||||
|           ''; |  | ||||||
|           description = "Configuration supplémentaire pour tinc."; |  | ||||||
|           type = lib.types.str; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       quagga = { |  | ||||||
|         enable = mkEnableOption "Enable Quagga + BGP service"; |  | ||||||
|         bgpConfig = mkOption { |  | ||||||
|           type = types.lines; |  | ||||||
|           default = ""; |  | ||||||
|           example ='' |  | ||||||
|               router bgp 65001 |  | ||||||
|                 neighbor 10.0.0.1 remote-as 65001 |  | ||||||
|             ''; |  | ||||||
|           description = '' |  | ||||||
|             BGP configuration statements. |  | ||||||
|           ''; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       windowsBoot = { |  | ||||||
|         enable = mkEnableOption "Activation du démarrage de Windows par Grub"; |  | ||||||
|         drive = mkOption { |  | ||||||
|           description = "Lecteur sur lequel est présent le système Windows (au format GRUB)"; |  | ||||||
|           type = lib.types.str; |  | ||||||
|           default = "hd0,1"; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|       windowsMount ={ |  | ||||||
|         enable = mkEnableOption "Montage de la partition data Windows"; |  | ||||||
|         device = mkOption { |  | ||||||
|           description = "Lecteur sur lequel est présent le disque de data Windows"; |  | ||||||
|           type = lib.types.str; |  | ||||||
|           default = "/dev/sda2"; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|       profiles = { |  | ||||||
|         # Domaine |  | ||||||
|         isDubronetwork        = mkEnableOption "Pour distinguer les machines dubronetwork."; |  | ||||||
|         isDubronetworkServer  = mkEnableOption "Pour distinguer les machines dubronetwork avec Server."; |  | ||||||
|         isDubronetworkWorkstation = mkEnableOption "Pour distinguer les machines dubronetwork avec Workstation."; |  | ||||||
|         isPrunetwork          = mkEnableOption "Pour distinguer les machines prunetwork."; |  | ||||||
|         isPrunetworkServer    = mkEnableOption "Pour distinguer les machines prunetwork avec Server."; |  | ||||||
|         isPrunetworkWorkstation = mkEnableOption "Pour distinguer les machines prunetwork avec Workstation."; |  | ||||||
|         # Utilisation machine |  | ||||||
|         isDesktopEnvironment  = mkEnableOption "Pour indiquer une machine avec interface graphique."; |  | ||||||
|         isServer              = mkEnableOption "Pour indiquer qu'il s'agit d'un serveur."; |  | ||||||
|         isWorkstation         = mkEnableOption "Pour indiquer que la machine sert à travailler."; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   options = { |  | ||||||
|     r6d.machines = mkOption { |  | ||||||
|       type = types.attrsOf machineOptions; |  | ||||||
|       description = '' |  | ||||||
|           Machines directory. |  | ||||||
|       ''; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = { |  | ||||||
|     /** |  | ||||||
|      prototype : (expression A ) && tests || !(expression A) ->   réalise le test si A est satisfait, et continue sinon = pas de politique |  | ||||||
|     */ |  | ||||||
|     assertions = [ |  | ||||||
|      { |  | ||||||
|        assertion = (currentMachine.profiles.isWorkstation && (currentMachine.configurationFlags.graphical == true)) |  | ||||||
|        || (!currentMachine.profiles.isWorkstation); |  | ||||||
|        message = "A workstation requires a graphical environement."; |  | ||||||
|      } |  | ||||||
|      { |  | ||||||
|        assertion = (currentMachine.profiles.isDesktopEnvironment && (currentMachine.configurationFlags.graphical == true)) |  | ||||||
|        || (!currentMachine.profiles.isDesktopEnvironment); |  | ||||||
|        message = "A desktop station requires a graphical environement."; |  | ||||||
|      } |  | ||||||
|      { |  | ||||||
|        assertion = (currentMachine.profiles.isDesktopEnvironment && (config.services.xserver.enable == true)) |  | ||||||
|                  || (!currentMachine.profiles.isDesktopEnvironment); |  | ||||||
|        message = "You need to enable xserver manually."; |  | ||||||
|      } |  | ||||||
|      { |  | ||||||
|        assertion = (currentMachine.profiles.isServer  && (currentMachine.profiles.isDesktopEnvironment == false)) |  | ||||||
|                  || (!currentMachine.profiles.isServer); |  | ||||||
|        message = "A graphical environment is not required for a server."; |  | ||||||
|      } |  | ||||||
|      { |  | ||||||
|        /*  At least one (authorité or resolveur) */ |  | ||||||
|        assertion = flags.dns_autorite || flags.dns_resolveur; |  | ||||||
|        message = "DNS service is disabled. You must enable a dns recursor or autoritative."; |  | ||||||
|      } |  | ||||||
|      { |  | ||||||
|        /*  authorité xor resolveur */ |  | ||||||
|        assertion = (flags.dns_autorite && ! flags.dns_resolveur) |  | ||||||
|                  || (!flags.dns_autorite && flags.dns_resolveur); |  | ||||||
|        message = "Both authoritative and recursor DNS services can't be live simultaneously. Choose only one!"; |  | ||||||
|      } |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| @ -0,0 +1,53 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf profiles.isDesktop { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Bureautique | ||||||
|  |     aspell aspellDicts.fr # correction d'ortographe | ||||||
|  |     gnumeric      # tableur | ||||||
|  |     #kde4.ksnapshot# réalisation de capture d'écran | ||||||
|  | 
 | ||||||
|  |     # Gestion de tâche | ||||||
|  |     taskwarrior     # gestionnaire de tâches en console | ||||||
|  | 
 | ||||||
|  |     ## Cartes mentales | ||||||
|  |     freemind | ||||||
|  | 
 | ||||||
|  |     ## Diagrammes & Schémas | ||||||
|  |     dia           # dessin & schéma technique | ||||||
|  | 
 | ||||||
|  |     ## Editeur de texte | ||||||
|  |     #lyx          # surcouche WISIWIM à LaTeX | ||||||
|  |     #focuswriter  # outil pour l'écriture | ||||||
|  |     textadept     # un éditeur de texte facile pour copier-coller graphique | ||||||
|  |     #zim          # outil de prise de notes, wiki de bureau | ||||||
|  | 
 | ||||||
|  |     ## Visionneuse | ||||||
|  |     #kde5.okular   # pdf | ||||||
|  |     mcomix        # livres (cbr, liste d'images), gestion d'une bibliothèque | ||||||
|  |     pdfpc         # pdf | ||||||
|  |     qpdfview      # pdf | ||||||
|  |     gqview        # visionneuse image & gestion basique de collection | ||||||
|  | 
 | ||||||
|  |     ## Convertisseurs (texte -> <autre format>) | ||||||
|  |     gnuplot       # générateur de graphes à partir de données numériques | ||||||
|  |     graphviz      # dot, neato : traçage de graphes (carré, rond) | ||||||
|  |     #jekyll       # générateur statique de site web | ||||||
|  |     #odpdown      # conversion md -> presentation ODP : https://github.com/thorstenb/odpdown | ||||||
|  |     pandoc | ||||||
|  |     haskellPackages.pandoc-citeproc | ||||||
|  |     texlive.combined.scheme-full # distribution LaTeX | ||||||
|  |     #texLive       # distribution LaTeX de base | ||||||
|  |     #texLiveBeamer # paquets et extensions pour Beamer | ||||||
|  |     #texLiveModerncv # paquets pour la classe Modern CV | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,52 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | # TODO: ménage | ||||||
|  | mkIf profiles.isDesktop { | ||||||
|  | 
 | ||||||
|  | # Paquets | ||||||
|  | environment.systemPackages = with pkgs; [ | ||||||
|  |     # Clients Internet | ||||||
|  | 
 | ||||||
|  |     ## Navigateur | ||||||
|  |     chromium | ||||||
|  |     firefox | ||||||
|  | 
 | ||||||
|  |     ## Réseaux sociaux | ||||||
|  |     #python27Packages.turses           # client twitter en ncurse | ||||||
|  |     python27Packages.rainbowstream    # client twitter en console | ||||||
|  |     rtv                               # client reddit en console | ||||||
|  | 
 | ||||||
|  |     ## Mail & Discussion (texte, audio) | ||||||
|  |     clawsMail | ||||||
|  |     hexchat | ||||||
|  |     quassel | ||||||
|  |     quasselClient | ||||||
|  |     mumble | ||||||
|  |     mutt | ||||||
|  |     pidgin | ||||||
|  |     thunderbird | ||||||
|  | 
 | ||||||
|  |     # Transfert de fichier | ||||||
|  |     filezilla | ||||||
|  |     transmission_gtk | ||||||
|  |     transmission_remote_gtk | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   nixpkgs.config.packageOverrides = pkgs: { | ||||||
|  |     clawsMail = pkgs.clawsMail.override { | ||||||
|  |       enablePluginFancy = true; | ||||||
|  |       enablePluginPdf = true; | ||||||
|  |       enablePluginRavatar = true; | ||||||
|  |       enablePluginSmime = true; | ||||||
|  |       enablePluginVcalendar = true; | ||||||
|  |       enableSpellcheck = true; | ||||||
|  |     }; | ||||||
|  |     mumble = pkgs.mumble.override { pulseSupport = true; }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,33 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf cfg.developpement-haskell { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Haskell | ||||||
|  |     cabal-install         # fournis cabal | ||||||
|  |     cabal2nix             # convertir les .cabal en .nix | ||||||
|  |     ghc                   # pour les appels depuis les scripts | ||||||
|  |     stack                 # pour les paquets en LTS de stackage | ||||||
|  | 
 | ||||||
|  |     haskellPackages.stylish-haskell # qualité de code | ||||||
|  |     haskellPackages.hindent | ||||||
|  |     haskellPackages.hlint | ||||||
|  |     haskellPackages.threadscope | ||||||
|  | 
 | ||||||
|  |     # Application perso | ||||||
|  |     haskellPackages.hahp | ||||||
|  | 
 | ||||||
|  |     # Application | ||||||
|  |     haskellPackages.autoproc	# ? procmail | ||||||
|  |     haskellPackages.darcs	# Gestionnaire de version éponyme | ||||||
|  |     haskellPackages.turtle	# genre shell-scripting | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,21 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf cfg.developpement-java { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # IDE | ||||||
|  |     idea.idea-community # IntelliJ IDEA | ||||||
|  | 
 | ||||||
|  |     # Java | ||||||
|  |     maven | ||||||
|  |     zulu | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf cfg.jetbrains-licensed { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     idea.idea-ultimate | ||||||
|  |     idea.clion | ||||||
|  |     idea.datagrip | ||||||
|  |     idea.pycharm-professional | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,18 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf cfg.developpement-rust { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Rust | ||||||
|  |     cargo               # récupération des dépendances + compilation projet rust | ||||||
|  |     rustc               # pour les appels depuis les scripts | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,42 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf cfg.developpement { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Base de données | ||||||
|  |     pgadmin             # interface d'administration de postgres | ||||||
|  |     sqlitebrowser       # interface d'administration de sqlite | ||||||
|  | 
 | ||||||
|  |     # C / C++ | ||||||
|  |     gcc                 # pour les appels depuis les scripts | ||||||
|  | 
 | ||||||
|  |     # Documentation | ||||||
|  |     #zeal                # consulter la documentation hors ligne | ||||||
|  | 
 | ||||||
|  |     # Gestion des sources | ||||||
|  |     cloc                # outil pour compter les lignes de code source | ||||||
|  |     git                 # déjà présent dans "base" | ||||||
|  |     gitg                # interface pour utiliser git (historique, commit) | ||||||
|  |     gitstats            # génère un site web statique avec des statistiques | ||||||
|  |     gitAndTools.gitFull # pour gitk | ||||||
|  |     git-cola            # interface pour utiliser git (historique, commit) | ||||||
|  |     mercurial | ||||||
|  |     subversion | ||||||
|  | 
 | ||||||
|  |     # Mono | ||||||
|  |     #mono46              # interpréteur .NET | ||||||
|  | 
 | ||||||
|  |     ## Visualisation & outils de diff | ||||||
|  |     #gource              # visualisation en mouvement de l'historique git | ||||||
|  |     meld                # outil de comparaison graphique | ||||||
|  |     #vbindiff           # diff de fichier hexadecimaux avec vim | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,26 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf cfg.edition-video { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Vidéo | ||||||
|  |     #cinelerra     # editeur video | ||||||
|  |     pitivi        # montage vidéo | ||||||
|  |     ffmpeg-full   # assemblage de flux audio & video en ligne de commande | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   nixpkgs.config.packageOverrides = pkgs: { | ||||||
|  |     ffmpeg-full = pkgs.ffmpeg-full.override { | ||||||
|  |       nonfreeLicensing = true; | ||||||
|  |       nvenc  = true; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,17 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf cfg.jeux { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Jeux | ||||||
|  |     urbanterror | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,28 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf profiles.isDesktop { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Multimedia | ||||||
|  | 
 | ||||||
|  |     ## Audio | ||||||
|  |     beep | ||||||
|  |     cmus          # lecteur audio console | ||||||
|  |     espeak        # synthèse vocale | ||||||
|  |     paprefs       # préferences pulseaudio | ||||||
|  |     pavucontrol   # mixer pulseaudio | ||||||
|  |     vorbis-tools  # codec | ||||||
|  | 
 | ||||||
|  |     ## Video | ||||||
|  |     smplayer      # lecteur vidéo | ||||||
|  |     vlc           # lecteur vidéo | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,26 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf profiles.isDesktop { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Securité | ||||||
|  |     gnome3.seahorse # gestionnaire graphique de clef GPG | ||||||
|  |     pass            # gestionnaire de mots de passe | ||||||
|  |     pwgen           # générateur de mots de passe | ||||||
|  |     #yubikey-personalization-gui # utilisation de la clef Yubikey | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   # Paquets avec setui root | ||||||
|  |   security.wrappers = { | ||||||
|  |     # vérouiller l''écran. "cannot disable the out-of-memory killer for this process (make sure to suid or sgid slock)" --> en root | ||||||
|  |     slock.source = "${pkgs.slock}/bin/slock"; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,16 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf cfg.auto-upgrade { | ||||||
|  | 
 | ||||||
|  |   # Automatic update & automatic clean | ||||||
|  | 
 | ||||||
|  |   system.autoUpgrade.enable = true; | ||||||
|  |   nix.gc.automatic = true; | ||||||
|  | } | ||||||
| @ -0,0 +1,94 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | # TODO: ménage | ||||||
|  | { | ||||||
|  |   # 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 | ||||||
|  |       dhcp          # client dhcp | ||||||
|  |       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é | ||||||
|  |       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      # TODO 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"; | ||||||
|  |       byobu-adminsys = "/etc/nixos/base/byobu-adminsys"; | ||||||
|  |     }; | ||||||
|  |     etc.gitconfig.text = builtins.readFile ./gitconfig; | ||||||
|  |   }; | ||||||
|  |   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 | ||||||
|  |   ''; | ||||||
|  | } | ||||||
| @ -0,0 +1,26 @@ | |||||||
|  | # http://www.git-attitude.fr/2014/09/15/30-options-git-qui-gagnent-a-etre-connues/ | ||||||
|  | [color] | ||||||
|  |     diff = auto | ||||||
|  |     branch = auto | ||||||
|  |     interactive = auto | ||||||
|  |     pager = true | ||||||
|  |     showbranch = auto | ||||||
|  |     status = auto | ||||||
|  | [alias] | ||||||
|  |     a  = add -p | ||||||
|  |     br = for-each-ref --sort=committerdate refs/heads/ --format='%(committerdate:short)\t%(authorname)\t%(refname:short)' | ||||||
|  |     ci = commit | ||||||
|  |     co = checkout | ||||||
|  |     ff = pull --ff-only | ||||||
|  |     oops = commit --amend --no-edit | ||||||
|  |     # Show files ignored by git | ||||||
|  |     ignored = ls-files -o -i --exclude-standard | ||||||
|  |     ls = ls-files | ||||||
|  |     st = status | ||||||
|  |     # Logs | ||||||
|  |     lol = log --graph --decorate --pretty=oneline --abbrev-commit | ||||||
|  |     lola = log --graph --decorate --pretty=oneline --abbrev-commit --all | ||||||
|  | [push] | ||||||
|  |     default = simple | ||||||
|  | [core] | ||||||
|  |     editor = /usr/bin/env vim | ||||||
| @ -0,0 +1,27 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf cfg.laptop { | ||||||
|  | 
 | ||||||
|  |   # Gestion spécifique pour PC portable | ||||||
|  | 
 | ||||||
|  |   ## Gestion de l'énergie | ||||||
|  |   powerManagement.cpuFreqGovernor = "powersave"; | ||||||
|  | 
 | ||||||
|  |   ## Activation d'un gestionnaire de réseau | ||||||
|  |   networking.networkmanager.enable = true; | ||||||
|  | 
 | ||||||
|  |   hardware.bluetooth.enable = true; | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     networkmanagerapplet    # gestionnaire réseau graphique + console (nm-applet + nmtui) | ||||||
|  |     wirelesstools           # fournis iwconfig | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,23 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf true { | ||||||
|  | 
 | ||||||
|  |   # fix: Hostname -s renvoie "Unknown host" alors que hostname renvoie la bonne valeur | ||||||
|  |   #      Il s'avère que hostname vérifie la validité du FQDN et du reverse. | ||||||
|  |   #      Fixer ces paramètres dans les hosts permet de faire tomber en marche | ||||||
|  |   networking.extraHosts = ''                                                                                                                                                                                                                                                  | ||||||
|  |     127.0.0.1   ${config.networking.hostName}                                                                                                                                                                                                                              | ||||||
|  |   ''; | ||||||
|  | 
 | ||||||
|  |   boot.kernel.sysctl = { | ||||||
|  |     "net.ipv4.conf.all.forwarding" = true; | ||||||
|  |     "net.ipv4.conf.default.forwarding" = true; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,64 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   #inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | { | ||||||
|  |   imports = [ | ||||||
|  |     # installées systématiquement | ||||||
|  |     ./environment.nix | ||||||
|  |     ./localisation.nix | ||||||
|  |     ./network.nix | ||||||
|  |     #./network-ipv6.nix | ||||||
|  |     ./service-haveged.nix | ||||||
|  |     ./service-monitoring-munin.nix | ||||||
|  |     ./service-monitoring-smokeping.nix | ||||||
|  |     ./service-ssh.nix | ||||||
|  |     ./udev.nix | ||||||
|  | 
 | ||||||
|  |     # commandées par config-generator | ||||||
|  |     ## option de configuration spécifique | ||||||
|  |     ./app-awesome.nix               # pour le gestionaire de fenêtres awesome | ||||||
|  |     ./app-cao.nix                   # de conception assisté par ordinateur & modélisation | ||||||
|  |     ./app-cartographie.nix          # manipuler les données géographiques & cartes | ||||||
|  |     ./app-developpement.nix         # développer des programmes/scripts | ||||||
|  |     ./app-developpement-elm.nix     # développer en elm | ||||||
|  |     ./app-developpement-haskell.nix # développer en haskell | ||||||
|  |     ./app-developpement-java.nix    # développer en java | ||||||
|  |     ./app-developpement-jetbrains.nix # outils jetbrains | ||||||
|  |     ./app-developpement-rust.nix    # développer en rust | ||||||
|  |     ./app-docker.nix                # activer docker | ||||||
|  |     ./app-edition-musique.nix       # modifier les fichiers musicaux | ||||||
|  |     ./app-edition-photo.nix         # modifier les photos & assimilé | ||||||
|  |     ./app-edition-video.nix         # modifier les vidéos | ||||||
|  |     ./app-jeux.nix                  # jouer, tout simplement ;) | ||||||
|  |     ./app-virtualbox.nix            # activer virtualbox | ||||||
|  |     ./auto-upgrade.nix              # mise à jour automatique du système | ||||||
|  |     ./laptop.nix                    # appli & configuration adaptée pour un PC portable | ||||||
|  |     ./print.nix                     # configuration de base de cups | ||||||
|  |     ./service-elasticsearch.nix     # service de stockage et recher de données | ||||||
|  |     ./service-hydra-build.nix       # service de construction de paquet. -> la machine compile des paquets | ||||||
|  |     ./service-hydra-core.nix        # service pour l'instance d'hydra | ||||||
|  |     ./service-kibana.nix            # service de visualisation de données stockées dans elasticsearch | ||||||
|  |     ./service-laptop.nix            # services spécifiques aux pc portables | ||||||
|  |     ./service-locate.nix            # service locate | ||||||
|  |     ./swap.nix                      # définition de l'utilisation du swap | ||||||
|  |     ./xmonad/xmonad.nix             # pour le gestionaire de fenêtre xmonad | ||||||
|  | 
 | ||||||
|  |     ## if isDesktop | ||||||
|  |     ./app-adminsys.nix              # pour gérer le système dans son ensemble et les services | ||||||
|  |     ./app-bureau.nix                # éléments pour avoir un environement graphique minimal utilisable | ||||||
|  |     ./app-bureautique.nix           # dédiée à la bureautique (traitement de texte, dessin, ...) | ||||||
|  |     ./app-client-internet.nix       # pour accéder & utiliser des ressources par le réseau | ||||||
|  |     ./app-multimedia.nix            # pour gérer le son, l'image et la vidéo | ||||||
|  |     ./app-network.nix               # de gestion, de diagnostique & surveillance réseau | ||||||
|  |     ./app-securite.nix              # relatives à la sécurité (chiffrement, gpg, mots de passe, ...) | ||||||
|  |     ./hardware-scanner.nix          # utilisation d'un scanner | ||||||
|  |     ./service-pulseaudio.nix        # activation du serveur audio | ||||||
|  |     ./service-x11.nix               # activation du serveur graphique X | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,45 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | # TODO: ménage | ||||||
|  | mkIf cfg.hydra-builder { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     qemu | ||||||
|  |     kvm | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   # Services | ||||||
|  | 
 | ||||||
|  |   ## Services de virtualisation utilisé pour les tests hydra | ||||||
|  |   virtualisation.docker.enable = true; | ||||||
|  |   virtualisation.libvirtd.enable = true; | ||||||
|  |   virtualisation.libvirtd.enableKVM = true; | ||||||
|  |   #virtualisation.virtualbox.guest.enable = true; | ||||||
|  |   virtualisation.virtualbox.host.enable = true; | ||||||
|  |   virtualisation.virtualbox.host.headless = true; | ||||||
|  | 
 | ||||||
|  |   ## Ménage automatique tous les jours | ||||||
|  |   nix.gc.automatic = true; | ||||||
|  | 
 | ||||||
|  |   users.users."hydrabld" = { | ||||||
|  |     description = "Execution des jobs hydra"; | ||||||
|  |     group = "nixbld"; | ||||||
|  |     extraGroups = [ | ||||||
|  |       "docker" | ||||||
|  |       "nixbld" | ||||||
|  |       "vboxusers" | ||||||
|  |     ]; | ||||||
|  |     isNormalUser = true;  # devrait être à false: TODO débugger la conf ssh & users pour que ça marche en user système | ||||||
|  | 
 | ||||||
|  |     openssh.authorizedKeys.keys = [ | ||||||
|  |       "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGYpjcWJCf8dXpv2LmoIaNVbwZXEC50QUU6Az+lqeD89 hydra radx" | ||||||
|  |     ]; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf cfg.laptop { | ||||||
|  | 
 | ||||||
|  |   # Gestion spécifique pour PC portable | ||||||
|  | 
 | ||||||
|  |   # Services | ||||||
|  |   services.xserver.synaptics = { | ||||||
|  |     enable = true; | ||||||
|  |     twoFingerScroll = true; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,51 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | # TODO: ajouter option | ||||||
|  | # TODO: changer adresse mail | ||||||
|  | mkIf true { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     bc | ||||||
|  |     mailutils | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   # Services | ||||||
|  | 
 | ||||||
|  |   ## Noeud de supervision munin = pas de stockage des données locales | ||||||
|  |   services.munin-node = { | ||||||
|  |     enable = true; | ||||||
|  |   }; | ||||||
|  |   systemd.services.munin-node = { | ||||||
|  |     path = with pkgs; [ munin lm_sensors ]; | ||||||
|  |     serviceConfig.TimeoutStartSec = "3min"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   ## Munin server -- generate /var/www/munin | ||||||
|  |   services.munin-cron = { | ||||||
|  |     enable = true; | ||||||
|  |     hosts = '' | ||||||
|  |       [${config.networking.hostName}] | ||||||
|  |         address 127.0.0.1 | ||||||
|  |     ''; | ||||||
|  |     extraGlobalConfig = '' | ||||||
|  |       contact.email.command ${pkgs.mutt}/bin/mutt -F /etc/nixos/base/public/munin-muttrc -s "Munin notification for ''${var:host}" jean-pierre@ocean.prunetwork.fr | ||||||
|  |     ''; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   # Réseau | ||||||
|  |   networking.firewall = { | ||||||
|  |     allowedTCPPorts = [ | ||||||
|  |       #8000 | ||||||
|  |     ]; | ||||||
|  |     allowedUDPPorts = [ | ||||||
|  |     ]; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,199 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge mkThenElse; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | # TODO: ajouter option | ||||||
|  | mkIf true { | ||||||
|  | 
 | ||||||
|  |   # Paquets | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     bind | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   # Paquets avec setuid root | ||||||
|  |   security.wrappers = { | ||||||
|  |     # outil de diagnostic réseau | ||||||
|  |     fping.source = "${pkgs.fping}/bin/fping"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   # Services | ||||||
|  | 
 | ||||||
|  |   services.smokeping = { | ||||||
|  |     enable = true; | ||||||
|  |     probeConfig = '' | ||||||
|  |       + FPing | ||||||
|  |       #binary = ${pkgs.fping}/bin/fping | ||||||
|  |       binary = ${config.security.wrapperDir}/fping | ||||||
|  | 
 | ||||||
|  |       +DNS | ||||||
|  |       #binary = ${pkgs.bind}/bin/dig | ||||||
|  |       binary = /run/current-system/sw/bin/dig | ||||||
|  |       forks = 5 | ||||||
|  |       offset = 50% | ||||||
|  |       step = 300 | ||||||
|  |       timeout = 15 | ||||||
|  |     ''; | ||||||
|  |     targetConfig = '' | ||||||
|  |       probe = FPing | ||||||
|  |       menu = Top | ||||||
|  |       title = Suivi de la latence reseau | ||||||
|  |       remark = Monitoring de la latence reseau. \ | ||||||
|  |           Here you will learn all about the latency of our network. | ||||||
|  |       + Local | ||||||
|  |       probe = FPing | ||||||
|  |       menu = Local | ||||||
|  |       title = Local Network | ||||||
|  |         ++ LocalMachine | ||||||
|  |         menu = Local Machine | ||||||
|  |         title = This host | ||||||
|  |         host = localhost | ||||||
|  | 
 | ||||||
|  |       + Grudu_Tinc | ||||||
|  |       probe = FPing | ||||||
|  |       title = Grudu_Tinc | ||||||
|  |       menu = Grudu.net - Tinc | ||||||
|  | 
 | ||||||
|  |         ++ Hydra | ||||||
|  |         menu = hydra.grudu.net | ||||||
|  |         title = hydra.grudu.net | ||||||
|  |         host = hydra.grudu.net | ||||||
|  | 
 | ||||||
|  |         ++ Monstre | ||||||
|  |         menu = monstre.grudu.net | ||||||
|  |         title = monstre.grudu.net | ||||||
|  |         host = monstre.grudu.net | ||||||
|  | 
 | ||||||
|  |         ++ Rollo | ||||||
|  |         menu = rollo.grudu.net | ||||||
|  |         title = rollo.grudu.net | ||||||
|  |         host = rollo.grudu.net | ||||||
|  | 
 | ||||||
|  |         ++ Ocean | ||||||
|  |         menu = ocean.grudu.net | ||||||
|  |         title = ocean.grudu.net | ||||||
|  |         host = ocean.grudu.net | ||||||
|  | 
 | ||||||
|  |         ++ MultiHost | ||||||
|  |         menu = Multihost | ||||||
|  |         title = Ensemble de mesures de latence | ||||||
|  |         host = /Grudu_Tinc/Monstre /Grudu_Tinc/Rollo /Grudu_Tinc/Ocean /Grudu_Tinc/Hydra | ||||||
|  | 
 | ||||||
|  |       + Grudu_DNS | ||||||
|  |       title = Grudu_DNS | ||||||
|  |       menu = Grudu.net - DNS | ||||||
|  |       probe = DNS | ||||||
|  |       pings = 5 | ||||||
|  |         ++ Ocean | ||||||
|  |         title = ocean | ||||||
|  |         menu = serveur ocean | ||||||
|  |         server = ocean.prunetwork.fr | ||||||
|  |           +++ ocean | ||||||
|  |           host = ocean.grudu.net | ||||||
|  |           lookup = ocean.grudu.net | ||||||
|  |           +++ rollo | ||||||
|  |           host = rollo.grudu.net | ||||||
|  |           lookup = rollo.grudu.net | ||||||
|  |         ++ Rollo | ||||||
|  |         title = rollo | ||||||
|  |         menu = serveur rollo | ||||||
|  |         server = rollo.dubronetwork.fr | ||||||
|  |           +++ ocean | ||||||
|  |           host = ocean.grudu.net | ||||||
|  |           lookup = ocean.grudu.net | ||||||
|  |           +++ rollo | ||||||
|  |           host = rollo.grudu.net | ||||||
|  |           lookup = rollo.grudu.net | ||||||
|  |         ++ MultiHost | ||||||
|  |           menu = Multihost | ||||||
|  |           title = Ensemble de mesures DNS | ||||||
|  |           host = /Grudu_DNS/Ocean/ocean /Grudu_DNS/Ocean/rollo /Grudu_DNS/Rollo/ocean /Grudu_DNS/Rollo/rollo  | ||||||
|  |       + France | ||||||
|  |       probe = FPing | ||||||
|  |       title = France | ||||||
|  |       menu = Operateur francais | ||||||
|  | 
 | ||||||
|  |         ++ Atos | ||||||
|  |         menu = Atos | ||||||
|  |         title = www.atos.fr | ||||||
|  |         host = www.atos.fr | ||||||
|  | 
 | ||||||
|  |         ++ Axialys | ||||||
|  |         menu = Axialys | ||||||
|  |         title = www.axialys.fr | ||||||
|  |         host = www.axialys.fr | ||||||
|  | 
 | ||||||
|  |         ++ Azurtel | ||||||
|  |         menu = azurtel | ||||||
|  |         title = www.azurtel.fr | ||||||
|  |         host = www.azurtel.fr | ||||||
|  | 
 | ||||||
|  |         ++ Bouygues-Telecom | ||||||
|  |         menu = Bouygues-Telecom | ||||||
|  |         title = www.bouygues-telecom.fr | ||||||
|  |         host = www.bouygues-telecom.fr | ||||||
|  | 
 | ||||||
|  |         ++ Colt | ||||||
|  |         menu = Colt | ||||||
|  |         title = www.colt.fr | ||||||
|  |         host = www.colt.fr | ||||||
|  | 
 | ||||||
|  |         ++ Completel | ||||||
|  |         menu = completel | ||||||
|  |         title = www.completel.fr | ||||||
|  |         host = www.completel.fr | ||||||
|  | 
 | ||||||
|  |         ++ Free | ||||||
|  |         menu = Free | ||||||
|  |         title = www.free.fr | ||||||
|  |         host = www.free.fr | ||||||
|  | 
 | ||||||
|  |         ++ Kosmos | ||||||
|  |         menu = Kosmos | ||||||
|  |         title = www.kosmos.fr | ||||||
|  |         host = www.kosmos.fr | ||||||
|  | 
 | ||||||
|  |         ++ Orange | ||||||
|  |         menu = Orange | ||||||
|  |         title = www.orange.fr | ||||||
|  |         host = www.orange.fr | ||||||
|  | 
 | ||||||
|  |         ++ Renater | ||||||
|  |         menu = Renater | ||||||
|  |         title = www.renater.fr | ||||||
|  |         host = www.renater.fr | ||||||
|  | 
 | ||||||
|  |         ++ SFR | ||||||
|  |         menu = SFR | ||||||
|  |         title = www.sfr.fr | ||||||
|  |         host = www.sfr.fr | ||||||
|  | 
 | ||||||
|  |         ++ MultiHost | ||||||
|  |         menu = Multihost | ||||||
|  |         title = Ensemble de mesures DNS | ||||||
|  |         host =  /France/Atos /France/Axialys /France/Azurtel \ | ||||||
|  |                 /France/Bouygues-Telecom \ | ||||||
|  |                 /France/Completel \ | ||||||
|  |                 /France/Free \ | ||||||
|  |                 /France/Kosmos \ | ||||||
|  |                 /France/Orange \ | ||||||
|  |                 /France/Renater \ | ||||||
|  |                 /France/SFR | ||||||
|  |                  | ||||||
|  |       #         /France/Colt | ||||||
|  |       ''; | ||||||
|  |  }; | ||||||
|  | 
 | ||||||
|  |   # Réseau | ||||||
|  |   networking.firewall = { | ||||||
|  |     allowedTCPPorts = [ | ||||||
|  |       #8081   # accès depuis localhost uniquement ou à travers un proxy nginx | ||||||
|  |     ]; | ||||||
|  |     allowedUDPPorts = [ | ||||||
|  |     ]; | ||||||
|  |   }; | ||||||
|  | } | ||||||
Some files were not shown because too many files have changed in this diff Show More
					Loading…
					
					
				
		Reference in New Issue