Compare commits
	
		
			No commits in common. 'nixos-unstable' and '2016-08-02-phenom' have entirely different histories. 
		
	
	
		
			nixos-unst
			...
			2016-08-02
		
	
		
	| @ -1,118 +0,0 @@ | |||||||
| GSF=git submodule foreach |  | ||||||
| TIME=time |  | ||||||
| 
 |  | ||||||
| CHRONY_STATUS=chronyc tracking |  | ||||||
| CHRONY_STATS=chronyc sources -v |  | ||||||
| CHRONY_STATS_SOURCES=chronyc sourcestats |  | ||||||
| 
 |  | ||||||
| all: rebuild-switch |  | ||||||
| 	date |  | ||||||
| ##--------- Commandes spécifiques pour NixOS
 |  | ||||||
| 
 |  | ||||||
| clean: |  | ||||||
| 	$(TIME) nix-collect-garbage -d --delete-older-than 15d |  | ||||||
| 
 |  | ||||||
| clean-aggressive: |  | ||||||
| 	$(TIME) nix-collect-garbage -d --delete-older-than 1d |  | ||||||
| 
 |  | ||||||
| clean-total: |  | ||||||
| 	$(TIME) nix-collect-garbage -d |  | ||||||
| 
 |  | ||||||
| clean-log: |  | ||||||
| 	journalctl --flush --rotate |  | ||||||
| 	journalctl --vacuum-size=1G |  | ||||||
| 
 |  | ||||||
| full-auto: submodules-update upgrade clean optimise |  | ||||||
| 	@date |  | ||||||
| 
 |  | ||||||
| list-installed-packages: |  | ||||||
| 	@# source : https://functor.tokyo/blog/2018-02-20-show-packages-installed-on-nixos |  | ||||||
| 	@# https://www.domenkozar.com/2014/01/02/getting-started-with-nix-package-manager/ |  | ||||||
| 	@#nixos-option environment.systemPackages |  | ||||||
| 	nixos-option environment.systemPackages | head -2 | tail -1 | sed -e 's/ /\n/g' | cut -d- -f2- | sort | uniq| sed -e 's/"$$//' |  | ||||||
| 
 |  | ||||||
| optimise: |  | ||||||
| 	$(TIME) nix store optimise |  | ||||||
| 
 |  | ||||||
| rebuild-build: |  | ||||||
| 	nix-channel --add https://nixos.org/channels/nixos-unstable nixos |  | ||||||
| 	$(TIME) time nixos-rebuild build --fallback  --show-trace |  | ||||||
| 
 |  | ||||||
| rebuild-switch: |  | ||||||
| 	$(TIME) time nixos-rebuild switch --fallback  --show-trace |  | ||||||
| 
 |  | ||||||
| show-blackholed: |  | ||||||
| 	-@ip route |grep blackhole |wc -l| awk '{print "Il y a "$$1" route(s) en blackhole sur";system("hostname ")}' |cowsay |  | ||||||
| 
 |  | ||||||
| show-diff-with-current: |  | ||||||
| 	-diff /run/current-system/configuration.nix /etc/nixos/configuration.nix |  | ||||||
| 
 |  | ||||||
| show-roots: |  | ||||||
| 	nix-store --gc --print-roots |  | ||||||
| 
 |  | ||||||
| show-time: |  | ||||||
| 	-@$(CHRONY_STATUS) && $(CHRONY_STATS) |  | ||||||
| 	-@watch -d -n 2 "$(CHRONY_STATUS) && echo "-- Statistiques générales :" && $(CHRONY_STATS) && echo "-- Statistiques sur les sources :" && $(CHRONY_STATS_SOURCES) && echo "-- Statistiques sur les clients :" && chronyc clients" |  | ||||||
| 
 |  | ||||||
| store-repair: |  | ||||||
| 	$(TIME) nix-store --verify --check-contents --repair |  | ||||||
| 
 |  | ||||||
| upgrade: |  | ||||||
| 	nix-channel --add https://nixos.org/channels/nixos-unstable nixos |  | ||||||
| 	$(TIME) nixos-rebuild switch --upgrade --fallback --show-trace |  | ||||||
| 
 |  | ||||||
| ##--------- Commandes spécifiques pour NixOS -- Opérations non courantes
 |  | ||||||
| 
 |  | ||||||
| download-sources: |  | ||||||
| 	# https://nixos.org/wiki/Download_all_sources |  | ||||||
| 	nix-store -r $$(grep -l outputHash $$(nix-store -qR $$(nix-instantiate '<nixpkgs>' -A geeqie) | grep '.drv$$')) |  | ||||||
| 
 |  | ||||||
| build-iso: |  | ||||||
| 	nix-build '<nixpkgs/nixos>' -A config.system.build.isoImage -I nixos-config=/etc/nixos/base/iso-image/livecd-minimal.nix |  | ||||||
| 
 |  | ||||||
| ##--------- Commandes spécifiques pour GIT
 |  | ||||||
| 
 |  | ||||||
| push: submodules-push |  | ||||||
| 	git push --all |  | ||||||
| 	git push --tags |  | ||||||
| 
 |  | ||||||
| submodules-update: |  | ||||||
| 	#git submodule update --remote |  | ||||||
| 	#$(GSF) git co master |  | ||||||
| 	$(GSF) git ff |  | ||||||
| 	$(GSF) git gc --auto |  | ||||||
| 
 |  | ||||||
| submodules-push: |  | ||||||
| 	$(GSF) git push --all |  | ||||||
| 	$(GSF) git push --tags |  | ||||||
| 
 |  | ||||||
| submodules-tag: |  | ||||||
| 	$(GSF) git tag -f "$$(date +%F)-$$(hostname -s)" |  | ||||||
| 
 |  | ||||||
| template: |  | ||||||
| 	find . -name "*.nix" -exec meld /etc/nixos/base/module-template.nix {} \; |  | ||||||
| 
 |  | ||||||
| tag: submodules-tag |  | ||||||
| 	git tag -f "$$(date +%F)-$$(hostname -s)" |  | ||||||
| 
 |  | ||||||
| ##--------- Munin
 |  | ||||||
| 
 |  | ||||||
| munin: |  | ||||||
| 	pushd /var/www/munin/ ; python -m SimpleHTTPServer 8000 |  | ||||||
| ##--------- Gestion d'un système de fichier monté en mémoire
 |  | ||||||
| 
 |  | ||||||
| tmpfs-create: |  | ||||||
| 	mkdir -p /mnt/tmpfs |  | ||||||
| 
 |  | ||||||
| tmpfs-mount: tmpfs-create |  | ||||||
| 	mount -t tmpfs -o size=10G tmpfs /mnt/tmpfs |  | ||||||
| 
 |  | ||||||
| tmpfs-umount: |  | ||||||
| 	umount /mnt/tmpfs |  | ||||||
| 
 |  | ||||||
| tmpfs-destroy: tmpfs-umount |  | ||||||
| 	rmdir /mnt/tmpfs |  | ||||||
| 
 |  | ||||||
| ##- Test awesome
 |  | ||||||
| test-awesome: |  | ||||||
| 	Xephyr :5 & sleep 1; DISPLAY=:5 awesome |  | ||||||
| @ -0,0 +1,5 @@ | |||||||
|  | 
 | ||||||
|  | # Lien pour install sur machine distante | ||||||
|  | 
 | ||||||
|  | * https://nixos.org/wiki/How_to_install_NixOS_from_Linux#Installing_through_a_chroot | ||||||
|  | * https://github.com/NixOS/nixpkgs/issues/13305 | ||||||
| @ -1,240 +0,0 @@ | |||||||
| # nixos-template-base |  | ||||||
| 
 |  | ||||||
| Versions de NixOS supportées : |  | ||||||
| * NixOS unstable |  | ||||||
| 
 |  | ||||||
| Ce dépôt stocke une configuration générique des machines. |  | ||||||
| 
 |  | ||||||
| ~~Une recette dite "config-generator" adapte la configuration selon le nom de la machine (FQDN).~~ |  | ||||||
| 
 |  | ||||||
| ~~Actuellement, les scripts contiennent un peu de configuration spécifique pour les machines des mainteneurs.~~ |  | ||||||
| 
 |  | ||||||
| # Liens |  | ||||||
| * https://status.nixos.org/ pour savoir de quand datent les différentes releases de NixOS |  | ||||||
| * https://repology.org/repository/nix_unstable/problems pour lister les paquets avec problèmes |  | ||||||
| 
 |  | ||||||
| # Notes de mise-à-jour |  | ||||||
| 
 |  | ||||||
| ## pour l'utilisation de l'annuaire (à partir de 2017-04-28) |  | ||||||
| 
 |  | ||||||
| * faire les mises à jour de l'OS |  | ||||||
| * commiter & pusher l'état des dépôts (au cas où). Pour les différents dépôts `git a`, `git commit` puis `make tag push` |  | ||||||
| * mettre à jour les dépôts avec les dernières versions, `make submodules-update` |  | ||||||
| * vérifier que `configuration.nix` contient `services.xserver.enable = true;` pour les machines avec interface graphique |  | ||||||
| * vérifier que `configuration.nix` contient le nom de la machine `networking.hostName = "<X>";` |  | ||||||
| * vérifier que `configuration.nix` contient le nom de domaine `networking.domain = "<X>";` |  | ||||||
| * tester la configuration : `nixos-rebuild build` |  | ||||||
| * corriger et ajouter les éléments manquant (notamment dans `private/annuaire.nix` ) |  | ||||||
| * lorsque tout semble bon, vérifier : |  | ||||||
|   * qu'il y a toujours des utilisateurs dans la configuration |  | ||||||
|   * que le moyen d'accéder à la machine n'a pas été supprimé (surtout les machines distantes) |  | ||||||
| * lancer la commande de build de l'os : `make` :) |  | ||||||
| 
 |  | ||||||
| ## pour le passage de 16.09 à unstable |  | ||||||
| 
 |  | ||||||
| * mettre à jour tous les dépôts |  | ||||||
| * changer la branche de base vers `nixos-unstable` |  | ||||||
| * changer la declaration de la machine dans `configuration.nix` |  | ||||||
| 
 |  | ||||||
| ~~~ |  | ||||||
| networking.hostName = "<bidule>"; |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| devient |  | ||||||
| 
 |  | ||||||
| ~~~ |  | ||||||
| r6d.computers.is<bidule> = true; |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * mettre à jour le channel |  | ||||||
| 
 |  | ||||||
| ~~~ |  | ||||||
| nix-channel --add  https://nixos.org/channels/nixos-unstable nixos |  | ||||||
| nix-channel --update |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * faire la mise à jour |  | ||||||
| 
 |  | ||||||
| ~~~ |  | ||||||
| make |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| ## pour le passage de 16.03 à 16.09 |  | ||||||
| 
 |  | ||||||
| * mettre le dépôt base sur la branche upgrade-16.09 |  | ||||||
| * changer le channel nixos : ```nix-channel --add https://nixos.org/channels/nixos-16.09 nixos``` |  | ||||||
| * activer x11 dans le configuration.nix |  | ||||||
| 
 |  | ||||||
| ~~~ |  | ||||||
| services.xserver.enable = true; |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * remplacer le bootloader si gummiboot était utilisé |  | ||||||
| 
 |  | ||||||
| ~~~ |  | ||||||
| boot.loader.gummiboot.enable = true; |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| devient |  | ||||||
| 
 |  | ||||||
| ~~~ |  | ||||||
| boot.loader.systemd-boot.enable = true; |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| Pour résoudre les soucis d'upgrade, il est conseillé : |  | ||||||
| * de désactiver tous les imports (sauf `hardware.nix`) |  | ||||||
| * d'ajouter `.../localisation.nix` dans les imports sous peine d'être en clavier US |  | ||||||
| * d'ajouter ```nixpkgs.config.allowUnfree = true;``` |  | ||||||
| * d'ajouter `vim` aux paquets |  | ||||||
| * de réactiver petit à petit les lignes désactivées |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # Installation sur machine chez online.net |  | ||||||
| 
 |  | ||||||
| * https://nixos.org/wiki/Install_NixOS_on_Online.Net |  | ||||||
| * https://nixos.org/wiki/Install_NixOS_on_Linode |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## Installation selon config online |  | ||||||
| 
 |  | ||||||
| * commander serveur |  | ||||||
| * lancer la procédure d'installation avec ubuntu LTS 64bits |  | ||||||
| * partitionner le disque avec l'interface web |  | ||||||
| * lancer l'installation de l'os. |  | ||||||
| * attendre que la procédure standard d'installation d'online ait terminée |  | ||||||
| * lorsque l'install est finie, dans l'onglet "Etat" se trouve l'option "Secours" |  | ||||||
| 
 |  | ||||||
| ## Transformation en NixOS |  | ||||||
| 
 |  | ||||||
| * relancer la machine en mode "Secours" |  | ||||||
| * choisir un linux 64bits (préférence pour ubuntu LTS) |  | ||||||
| * le système de boot donne des identifiants SSH pour le connecter à la machine |  | ||||||
| 
 |  | ||||||
| * se connecter à la machine |  | ||||||
| * passer en root |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| sudo su - |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * formater les partitions |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| mkfs.ext4 -L nixos /dev/sda1 |  | ||||||
| swapoff -a |  | ||||||
| mkswap /dev/sda2 |  | ||||||
| swapon -a |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * monter les partitions dans /mnt |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| mount /dev/sda1 /mnt/ |  | ||||||
| mkdir /mnt/etc/ |  | ||||||
| mkdir /mnt/etc/nixos |  | ||||||
| mkdir /etc/nixos |  | ||||||
| mkdir /mnt/nix |  | ||||||
| mkdir /nix |  | ||||||
| mount --bind /mnt/nix/ /nix |  | ||||||
| mkdir /mnt/tmp |  | ||||||
| mount --bind /mnt/tmp /tmp |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| * installer les paquets nécessaires |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| apt-get install bzip2 git byobu htop glances |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * création d'utilisateur (n'importe quil mot de passe) |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| adduser nix |  | ||||||
| groupadd -r nixbld |  | ||||||
| for n in $(seq 1 10); do useradd -c "Nix build user $n" -d /var/empty -g nixbld -G nixbld -M -N -r -s "$(which nologin)" nixbld$n; done |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * mise-à-jour des certificats |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| update-ca-certificates |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * installer nix |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| chown -R nix /nix /tmp |  | ||||||
| su - nix |  | ||||||
| bash <(curl https://nixos.org/nix/install) |  | ||||||
| exit |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * créer un profil nix pour root & un channel |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| . ~nix/.nix-profile/etc/profile.d/nix.sh |  | ||||||
| nix-channel --remove nixpkgs |  | ||||||
| nix-channel --add https://nixos.org/channels/nixos-unstable nixos |  | ||||||
| nix-channel --update |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * installer un editeur de texte |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| nix-env -i vim_configurable |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * installation de nixos-install |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| cat <<EOF > /root/configuration.nix |  | ||||||
| { fileSystems."/" = {}; |  | ||||||
|   boot.loader.grub.enable = false; |  | ||||||
| } |  | ||||||
| EOF |  | ||||||
| export NIX_PATH=nixpkgs=/root/.nix-defexpr/channels/nixos:nixos=/root/.nix-defexpr/channels/nixos/nixos |  | ||||||
| export NIXOS_CONFIG=/root/configuration.nix |  | ||||||
| nix-env -i -A config.system.build.nixos-install \ |  | ||||||
|        -A config.system.build.nixos-option \ |  | ||||||
|        -A config.system.build.nixos-generate-config \ |  | ||||||
|        -f "<nixos>" |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * configuration de NixOS |  | ||||||
| 
 |  | ||||||
| si la machine existe déjà, cloner le dépôt dans /mnt/etc/nixos |  | ||||||
| pour cela, créer clef ssh et l'ajouter sur la forge |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| ssh-keygen -t ed25519 |  | ||||||
| cp ~/.ssh/id_ed25519* /mnt/etc/nixos/ |  | ||||||
| 
 |  | ||||||
| git clone <> |  | ||||||
| git submodule init |  | ||||||
| git submodule update |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * monter /etc/nixos vers /mnt/etc/nixos pour que la config clonée fonctionne |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| mount --bind /mnt/etc/nixos/ /etc/nixos/ |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * mettre à jour la configuration matérielle |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| export NIX_PATH=nixpkgs=/root/.nix-defexpr/channels/nixos:nixos=/root/.nix-defexpr/channels/nixos/nixos |  | ||||||
| nixos-generate-config --root /mnt |  | ||||||
| ~~~ |  | ||||||
| 
 |  | ||||||
| * vérifier le /mnt/etc/nixos/configuration.nix |  | ||||||
| 
 |  | ||||||
| notamment le périphérique utilisé par grub |  | ||||||
| 
 |  | ||||||
| * installer le système sur le disque |  | ||||||
| 
 |  | ||||||
| ~~~bash |  | ||||||
| unset NIXOS_CONFIG |  | ||||||
| nixos-install |  | ||||||
| ~~~ |  | ||||||
| @ -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,56 +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 currentMachine.profiles.isDesktopEnvironment { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Environement de bureau |  | ||||||
|     arandr          # interface graphique pour xrandr |  | ||||||
|     wmname          # pour définir le nom du gestionnaire de fenêtre (utile pour java) |  | ||||||
|     #kde4.ksnapshot # capture d'écran |  | ||||||
|     xclip           # manipulation du clipboard X depuis la console |  | ||||||
|     xorg.xbacklight # pour gérer la luminosité de l'écran |  | ||||||
|     xorg.xev        # pour repérer les codes + noms standard des actions clavier/souris |  | ||||||
|     xorg.xkill      # pour 'tuer une application' |  | ||||||
| 
 |  | ||||||
|     ## Gestionnaire de fenêtre & Thème |  | ||||||
|     gnome3.adwaita-icon-theme  # thème d'icone - semble fonctionner avec spaceFM |  | ||||||
| 
 |  | ||||||
|     ## Manipulation de fichier |  | ||||||
|     #kde5.dolphin          # gestionnaire de fichiers graphique |  | ||||||
|     #kde5.dolphin-plugins  # gestionnaire de fichiers graphique |  | ||||||
|     pcmanfm               # gestionnaire de fichiers graphique |  | ||||||
|     #vifm                  # gestionnaire de fichiers basé sur VIM (console) |  | ||||||
| 
 |  | ||||||
|     ## Terminal |  | ||||||
|     kitty                  # terminal avec rendu par GPU |  | ||||||
|     sakura                # terminal |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   # Polices supplémentaires |  | ||||||
|   fonts.fonts = with pkgs; [ |  | ||||||
|     fira            # police créée pour Firefox |  | ||||||
|     fira-code       # idem fira-mono + ligatures pour la programmation |  | ||||||
|     fira-mono       # dérivée de fira en monospace |  | ||||||
|     font-awesome_5  # Jeux de police, utilisé avec Latex |  | ||||||
|     hack-font       # police monospace créée explicitement pour coder |  | ||||||
|     hasklig         # police dérivée de source-code-pro mais avec des ligatures |  | ||||||
|     jetbrains-mono  # police spécial développeurs par Jetbrains |  | ||||||
|   ]; |  | ||||||
|   fonts.fontconfig.defaultFonts = { |  | ||||||
|     monospace = [ "JetBrains Mono" ]; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   programs = { |  | ||||||
|     slock.enable = true; |  | ||||||
|     spacefm.enable = true; |  | ||||||
|     udevil.enable = true; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| @ -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,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.cartographie && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Gestion de données géographiques |  | ||||||
|     josm          # outil de contribution à OpenStreetMap |  | ||||||
|     #qgis         # client lourd de manipulation de données géographiques |  | ||||||
|     viking        # analyse de topo, gestion de données GPS |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -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,25 +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-elm && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   # Services |  | ||||||
| 
 |  | ||||||
|   # Réseau |  | ||||||
|   networking.firewall = { |  | ||||||
|     allowedTCPPorts = [ |  | ||||||
|     ]; |  | ||||||
|     allowedUDPPorts = [ |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| @ -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,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.edition-musique && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # |  | ||||||
|     audacity      # montage audio |  | ||||||
|     easytag       # gestion des métadonnées des fichiers musicaux |  | ||||||
|     picard        # gestion des métadonnées des fichiers musicaux |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -1,22 +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 && flags.graphical) { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Retouche, modification & dessin vectoriel |  | ||||||
|     gimp          # logiciel d'édition/montage/retouche photo |  | ||||||
|     inkscape      # édition d'image vectorielle (svg & autre) |  | ||||||
|     #rawtherapee  # développemen de photos en RAW |  | ||||||
| 
 |  | ||||||
|     # TEST d'outil de gestion de catalogue de photos |  | ||||||
|     #kde4.digikam  # gestionnaire de bibliothèque de photo |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -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,58 +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; [ |  | ||||||
|     # Adminsys |  | ||||||
|     bind          # utilisé pour les utilitaires comme dig |  | ||||||
|     cowsay        # pour ansible & 4lulz |  | ||||||
|     dhcp          # client dhcp |  | ||||||
|     iotop |  | ||||||
|     lm_sensors |  | ||||||
|     lshw |  | ||||||
|     lsof |  | ||||||
|     ntp |  | ||||||
|     powerline-fonts |  | ||||||
|     powertop |  | ||||||
|     #ansible |  | ||||||
|     glances |  | ||||||
|     pv            # afficher le débit d'un flux     dd if=/dev/zero | pv | dd of=/dev/null |  | ||||||
|     sysstat       # pour la commande "iostat -x -1" de monitoring d'activité disque |  | ||||||
|     usbutils |  | ||||||
| 
 |  | ||||||
|     # Backup |  | ||||||
|     duplicity     # création de sauvegarde chiffrées (GPG) |  | ||||||
|     par2cmdline   # outil de récupération de fichiers corrompus - .par2 |  | ||||||
| 
 |  | ||||||
|     # Compression |  | ||||||
|     lz4 |  | ||||||
|     lzop |  | ||||||
| 
 |  | ||||||
|     # Système de fichier |  | ||||||
|     ## Montage de filesystem |  | ||||||
|     curlftpfs     # ftp |  | ||||||
|     exfat         # Pour monter les FAT avec Fuse |  | ||||||
|     hubicfuse     # montage hubic |  | ||||||
|     ntfs3g        # ntfs |  | ||||||
|     samba         # partages windows |  | ||||||
|     squashfsTools # squashfs |  | ||||||
|     sshfs-fuse    # ssh |  | ||||||
| 
 |  | ||||||
|     ## Gestion de FS |  | ||||||
|     nfs-utils |  | ||||||
| 
 |  | ||||||
|     ## Exploitation FS |  | ||||||
|     inotify-tools # être notifié lorsque le contenu d'un répertoire change |  | ||||||
|     detox			    # The detox utility renames files to make them easier to work with. |  | ||||||
|     duff          # outil de recherche de fichiers en doublons |  | ||||||
|     #rdfind        # recherche de fichiers doublons pour remplacement par hard/soft link |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -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,26 +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-elm { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     elmPackages.elm |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   # Services |  | ||||||
| 
 |  | ||||||
|   # Réseau |  | ||||||
|   networking.firewall = { |  | ||||||
|     allowedTCPPorts = [ |  | ||||||
|     ]; |  | ||||||
|     allowedUDPPorts = [ |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| @ -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,39 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| mkIf true { |  | ||||||
| 
 |  | ||||||
|   # Paquets |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # Outils réseau |  | ||||||
|     iperf         # outil de mesure de la qualité du réseau |  | ||||||
|     iptraf-ng     # outil de mesure de la qualité du réseau |  | ||||||
|     nload         # affichage de statisques d'utilisation instantannées du réseau |  | ||||||
|     inetutils |  | ||||||
| 
 |  | ||||||
|     ## Diagnostic |  | ||||||
|     arp-scan |  | ||||||
|     #mtr  -> installé plus bas |  | ||||||
|     nmap          # outil de scan de port réseau |  | ||||||
|     whois |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   # https://github.com/NixOS/nixpkgs/issues/30335 |  | ||||||
|   # Some programs need SUID wrappers, can be configured further or are started in user sessions. |  | ||||||
|   programs.mtr.enable = true; |  | ||||||
| 
 |  | ||||||
|   networking.firewall = { |  | ||||||
|     allowedTCPPorts = [ |  | ||||||
|       5201 # iperf |  | ||||||
|     ]; |  | ||||||
|     allowedUDPPorts = [ |  | ||||||
|       5201 # iperf |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| @ -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,8 @@ | |||||||
| { config, lib, pkgs, ... }: | { ... }: | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     # moulinette de configuration |     ./base/base.nix | ||||||
|     /*./config-generator.nix*/ |     ./desktop/desktop.nix | ||||||
|     ./options.nix |  | ||||||
| 
 |  | ||||||
|     # Redéfinition d'applications et de modules |  | ||||||
|     ./applications/overrides.nix |  | ||||||
| 
 |  | ||||||
|     # subfolders |  | ||||||
|     ./applications/graphical/default.nix |  | ||||||
|     ./applications/terminal/default.nix |  | ||||||
|     ./configuration/default.nix |  | ||||||
|     ./services/default.nix |  | ||||||
|   ]; |   ]; | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,48 @@ | |||||||
|  | all: rebuild-switch | ||||||
|  | 	date | ||||||
|  | 
 | ||||||
|  | clean: | ||||||
|  | 	nix-collect-garbage -d --delete-older-than 15d | ||||||
|  | 
 | ||||||
|  | clean-aggressive: | ||||||
|  | 	nix-collect-garbage -d --delete-older-than 1d | ||||||
|  | 
 | ||||||
|  | clean-total: | ||||||
|  | 	nix-collect-garbage -d | ||||||
|  | 
 | ||||||
|  | clean-log: | ||||||
|  | 	journalctl --vacuum-size=1G | ||||||
|  | 
 | ||||||
|  | full-auto: submodules-update upgrade clean optimise | ||||||
|  | 
 | ||||||
|  | optimise: | ||||||
|  | 	nix-store --optimise | ||||||
|  | 
 | ||||||
|  | push: submodules-push | ||||||
|  | 	git push --all | ||||||
|  | 	git push --tags | ||||||
|  | 
 | ||||||
|  | rebuild-switch: | ||||||
|  | 	nixos-rebuild switch --fallback  --show-trace | ||||||
|  | 
 | ||||||
|  | store-repair: | ||||||
|  | 	nix-store --verify --check-contents --repair | ||||||
|  | 
 | ||||||
|  | submodules-update: | ||||||
|  | 	#git submodule update --remote | ||||||
|  | 	git submodule foreach git co master | ||||||
|  | 	git submodule foreach git ff | ||||||
|  | 
 | ||||||
|  | submodules-push: | ||||||
|  | 	git submodule foreach git push --all | ||||||
|  | 	git submodule foreach git push --tags | ||||||
|  | 
 | ||||||
|  | submodules-tag: | ||||||
|  | 	git submodule foreach git tag -f "$$(date +%F)-$$(hostname -s)" | ||||||
|  | 
 | ||||||
|  | tag: submodules-tag | ||||||
|  | 	git tag -f "$$(date +%F)-$$(hostname -s)" | ||||||
|  | 
 | ||||||
|  | upgrade: | ||||||
|  | 	nixos-rebuild switch --upgrade --fallback --show-trace | ||||||
|  | 
 | ||||||
| @ -0,0 +1,12 @@ | |||||||
|  | { config, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | with pkgs.lib; | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  | in { | ||||||
|  |   # Automatic update & automatic clean | ||||||
|  | 
 | ||||||
|  |   system.autoUpgrade.enable = cfg.auto-upgrade; | ||||||
|  |   nix.gc.automatic = cfg.auto-upgrade; | ||||||
|  | } | ||||||
| @ -0,0 +1,37 @@ | |||||||
|  | { config, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | with pkgs.lib; | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  | in { | ||||||
|  |   # Gestion de fail2ban | ||||||
|  |    | ||||||
|  |   services = mkIf cfg.fail2ban { | ||||||
|  |     fail2ban = { | ||||||
|  |       enable = true; | ||||||
|  |       jails = { | ||||||
|  |         DEFAULT = '' | ||||||
|  |           # "ignoreip" can be an IP address, a CIDR mask or a DNS host | ||||||
|  |           ignoreip = 127.0.0.1/8 pedro.dubronetwork.fr cube.dubronetwork.fr voyage.prunetwork.fr xray.prunetwork.fr 192.168.0.0/16 172.16.0.0/16 | ||||||
|  | 
 | ||||||
|  |           # 1 jour | ||||||
|  |           # bantime  = 86400 | ||||||
|  |           # 5 jours  | ||||||
|  |           bantime  = 432000 | ||||||
|  |           maxretry = 3 | ||||||
|  | 
 | ||||||
|  |           # | ||||||
|  |           # Destination email address used solely for the interpolations in | ||||||
|  |           # jail.{conf,local} configuration files. | ||||||
|  |           destemail = admins@dubronetwork.fr | ||||||
|  |         ''; | ||||||
|  |         ssh-route = '' | ||||||
|  |           filter   = sshd | ||||||
|  |           action   = route[blocktype=blackhole] | ||||||
|  |           maxretry = 3 | ||||||
|  |         ''; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,10 @@ | |||||||
|  | { config, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | with pkgs.lib; | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  | in { | ||||||
|  |   # Gestion spécifique pour PC portable | ||||||
|  |   powerManagement.cpuFreqGovernor = mkIf cfg.laptop "powersave"; | ||||||
|  | } | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | { config, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | with pkgs.lib; | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  | in { | ||||||
|  |   imports = [ | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   services.locate = { | ||||||
|  |     enable = cfg.locate; | ||||||
|  |     interval = "hourly"; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,24 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf mkMerge; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  | in { | ||||||
|  |   nix = mkIf config.r6d.config-generator.nix-serve-client { | ||||||
|  |     # Cache http pour le store | ||||||
|  |     requireSignedBinaryCaches = false; | ||||||
|  |     binaryCaches =  [ | ||||||
|  |       ("https://cache.nixos.org/") | ||||||
|  |       (mkIf (profiles.isDubronetwork && (! computers.isMonstre)) "http://192.168.10.169:5000") | ||||||
|  |       (mkIf profiles.isDubronetwork "http://192.168.10.252:5000") | ||||||
|  | 
 | ||||||
|  |       (mkIf (profiles.isPrunetwork && !profiles.isServer) "http://192.168.1.20:5000") | ||||||
|  |     ]; | ||||||
|  |     extraOptions = '' | ||||||
|  |       connect-timeout = 5 | ||||||
|  |     ''; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |   } | ||||||
| @ -0,0 +1,12 @@ | |||||||
|  | { config, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | with pkgs.lib; | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  | in { | ||||||
|  |   # Cache http pour le store | ||||||
|  | 
 | ||||||
|  |   services.nix-serve.enable = cfg.nix-serve-server; | ||||||
|  |   networking.firewall.allowedTCPPorts = mkIf cfg.nix-serve-server [ 5000 ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,22 @@ | |||||||
|  | { config, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | with pkgs.lib; | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  | in { | ||||||
|  |   # Enable CUPS to print documents. | ||||||
|  |   services.printing = mkIf cfg.print { | ||||||
|  |     enable = true; | ||||||
|  |     drivers = [ | ||||||
|  |       pkgs.samsung-unified-linux-driver | ||||||
|  |     ]; | ||||||
|  |     # Suppression automatique des fichiers temporaires. | ||||||
|  |     # Par défaut, cups conserve une copie de ce qui a été imprimé | ||||||
|  |     # pas cool pour les mots de passe ou autre donnée sensible | ||||||
|  |     extraConf = '' | ||||||
|  |       PreserveJobHistory No | ||||||
|  |       PreserveJobFiles No | ||||||
|  |     ''; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,16 @@ | |||||||
|  | { config, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | with pkgs.lib; | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  | in { | ||||||
|  |   # Gestion du swap | ||||||
|  |    | ||||||
|  |   # https://en.wikipedia.org/wiki/Swappiness | ||||||
|  |   boot.kernel.sysctl = mkIf cfg.swap { | ||||||
|  |     # le swap est activé (!= 0) | ||||||
|  |     # le swap est utilisé lorsque (100 - x) % de la mémoire est déja allouée | ||||||
|  |     "vm.swappiness" = 10; | ||||||
|  |   }; | ||||||
|  | } | ||||||
											
												
													File diff suppressed because one or more lines are too long
												
											
										
									
								| @ -0,0 +1,14 @@ | |||||||
|  | { config, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | { | ||||||
|  |   imports = [ | ||||||
|  |     ./environment.nix | ||||||
|  |     ./localisation.nix | ||||||
|  |     ./monitoring.nix | ||||||
|  |     ./networking.nix | ||||||
|  |     ./services.nix | ||||||
|  | 
 | ||||||
|  |     # inclusion conditionnelle | ||||||
|  |     ./config-generator.nix | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,254 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | # exemple utilisé pour commencer bird.nix | ||||||
|  | let | ||||||
|  |   inherit (lib) mkEnableOption mkIf mkMerge mkOption singleton types; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   pfl = config.r6d.profiles; | ||||||
|  |   comp = config.r6d.computers; | ||||||
|  |   host = config.networking.hostName; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  |   { | ||||||
|  |     imports = [ | ||||||
|  |       ./activation-manuelle/auto-upgrade.nix | ||||||
|  |       ./activation-manuelle/laptop.nix | ||||||
|  |       ./activation-manuelle/locate.nix | ||||||
|  |       ./activation-manuelle/fail2ban.nix | ||||||
|  |       ./activation-manuelle/nix-serve-client.nix | ||||||
|  |       ./activation-manuelle/nix-serve-server.nix | ||||||
|  |       ./activation-manuelle/print.nix | ||||||
|  |       ./activation-manuelle/swap.nix | ||||||
|  |       ./activation-manuelle/users.nix | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     ###### interface | ||||||
|  | 
 | ||||||
|  |     options = { | ||||||
|  | 
 | ||||||
|  |       #* Utilisé pour afecter des capacités aux machines | ||||||
|  |       r6d.profiles  = { | ||||||
|  |         # Domaine | ||||||
|  |         isDubronetwork  = mkEnableOption "Pour distinguer les machines dubronetwork."; | ||||||
|  |         isPrunetwork    = mkEnableOption "Pour distinguer les machines prunetwork."; | ||||||
|  |         # Utilisation machine | ||||||
|  |         isDesktop       = mkEnableOption "Pour indiquer une machine avec interface graphique."; | ||||||
|  |         isHome          = mkEnableOption "Pour indiquer que la machine sert à la maison (divertissement & autre)."; | ||||||
|  |         isServer        = mkEnableOption "Pour indiquer qu'il s'agit d'un serveur."; | ||||||
|  |         isWorkstation   = mkEnableOption "Pour indiquer que la machine sert à travailler."; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       #* Utilisé dans les fichiers .nix | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         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."; | ||||||
|  |         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"; | ||||||
|  |         docker          = mkEnableOption "Profil pour l'utilisation de Docker."; | ||||||
|  |         dns_autorite    = mkEnableOption "Profil pour servir les fichiers de zone DNS."; | ||||||
|  |         dns_resolveur   = mkEnableOption "Profil pour activer un résolveur DNS local."; | ||||||
|  |         fail2ban        = mkEnableOption "Profil pour activer Fail2ban."; | ||||||
|  |         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."; | ||||||
|  |         murmur          = mkEnableOption "Profil pour activer un serveur Mumble (murmur)"; | ||||||
|  |         nix-serve-client= mkEnableOption "Profil pour que la machine soit un client de cache nix."; | ||||||
|  |         nix-serve-server= mkEnableOption "Profil pour que la machine soit un serveur de cache nix."; | ||||||
|  |         print           = mkEnableOption "Profil pour activer cups & pouvoir imprimer."; | ||||||
|  |         rabbitmq        = mkEnableOption "Profil pour activer le service de messagerie AMQP."; | ||||||
|  |         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."; | ||||||
|  |       }; | ||||||
|  |       #* Utilisé pour avoir des raccourcis de machine | ||||||
|  |       r6d.computers = { | ||||||
|  |         isLatitude      = mkEnableOption "Identification du nom de machine."; | ||||||
|  |         isMonstre       = mkEnableOption "Identification du nom de machine."; | ||||||
|  |         isNeoNomade     = mkEnableOption "Identification du nom de machine."; | ||||||
|  |         isNomade        = mkEnableOption "Identification du nom de machine."; | ||||||
|  |         isOcean         = mkEnableOption "Identification du nom de machine."; | ||||||
|  |         isPhenom        = mkEnableOption "Identification du nom de machine."; | ||||||
|  |         isRadx          = mkEnableOption "Identification du nom de machine."; | ||||||
|  |         isRollo         = mkEnableOption "Identification du nom de machine."; | ||||||
|  |         isXray          = mkEnableOption "Identification du nom de machine."; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     ###### implementation | ||||||
|  |     # https://nixos.org/releases/nixos/14.12-small/nixos-14.12.374.61adf9e/manual/sec-writing-modules.html | ||||||
|  |     # https://nixos.org/wiki/NixOS:extend_NixOS | ||||||
|  |     config = mkMerge | ||||||
|  |     [ # Unconditional stuff. | ||||||
|  |     { | ||||||
|  |       r6d.config-generator.enable = true; | ||||||
|  |       r6d.computers = { | ||||||
|  |         isLatitude  = host == "latitude.dubronetwork.fr"; | ||||||
|  |         isMonstre   = host == "monstre.dubronetwork.fr"; | ||||||
|  |         isNeoNomade = host == "neo-nomade.dubronetwork.fr"; | ||||||
|  |         isNomade    = host == "nomade.dubronetwork.fr"; | ||||||
|  |         isOcean     = host == "ocean.prunetwork.fr"; | ||||||
|  |         isPhenom    = host == "phenom.dubronetwork.fr"; | ||||||
|  |         isRadx      = host == "radx.prunetwork.fr"; | ||||||
|  |         isRollo     = host == "rollo.dubronetwork.fr"; | ||||||
|  |         isXray      = host == "xray.prunetwork.fr"; | ||||||
|  |       }; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     # Conditional stuff | ||||||
|  | 
 | ||||||
|  |     ## Définition des profils génériques | ||||||
|  |     (mkIf pfl.isDesktop { | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         awesome = true; | ||||||
|  |         nix-serve-client = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  |     (mkIf pfl.isHome { | ||||||
|  |       r6d.profiles.isDesktop = true; | ||||||
|  |     }) | ||||||
|  |     (mkIf pfl.isServer { | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         #database_postgres = true; | ||||||
|  |         dns_autorite = true; | ||||||
|  |         #dns_resolveur = true; | ||||||
|  |         # inutile d'exposer la conf complète du serveur par le store tant qu'il n'y a pas de protection complémentaire - utilisation SSH ? | ||||||
|  |         #nix-serve-server = true; | ||||||
|  | 
 | ||||||
|  |         #rabbitmq =  true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  |     # /!\ PAS un serveur | ||||||
|  |     (mkIf (!pfl.isServer) { | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         dns_resolveur = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  |     (mkIf pfl.isWorkstation { | ||||||
|  |       r6d.profiles.isDesktop = true; | ||||||
|  | 
 | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         developpement = true; | ||||||
|  |         docker = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|  |     ## Profils liés à Dubronetwork | ||||||
|  |     (mkIf pfl.isDubronetwork { | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         auto-upgrade = true; | ||||||
|  |         print = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  |     (mkIf (pfl.isDubronetwork && pfl.isHome) { | ||||||
|  |       r6d.config-generator.jeux = true; | ||||||
|  |     }) | ||||||
|  |     (mkIf (pfl.isDubronetwork && pfl.isServer) { | ||||||
|  |       r6d.config-generator.nix-serve-server = true; | ||||||
|  |     }) | ||||||
|  |     (mkIf (pfl.isDubronetwork && pfl.isWorkstation) { | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         conception-assistee = true; | ||||||
|  |         virtualbox = true; | ||||||
|  |         xmonad = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|  |     ## Profils liés à Prunetwork | ||||||
|  |     (mkIf pfl.isPrunetwork { | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         auto-upgrade = true; | ||||||
|  |         fail2ban = true; | ||||||
|  |         swap = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     ## Affectation des profils aux machines | ||||||
|  |     (mkIf comp.isOcean { | ||||||
|  |       r6d.profiles = { | ||||||
|  |         isPrunetwork = true; | ||||||
|  |         isServer = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  |     (mkIf comp.isRadx { | ||||||
|  |       r6d.profiles = { | ||||||
|  |         isHome = true; | ||||||
|  |         isPrunetwork = true; | ||||||
|  |         isServer = true; | ||||||
|  |         isWorkstation = true; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         nix-serve-server = true; | ||||||
|  |         virtualbox = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  |     (mkIf comp.isXray { | ||||||
|  |       r6d.profiles = { | ||||||
|  |         isPrunetwork = true; | ||||||
|  |         isServer = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|  |     (mkIf comp.isLatitude { | ||||||
|  |       r6d.profiles = { | ||||||
|  |         isDubronetwork = true; | ||||||
|  |         isHome = true; | ||||||
|  |         isWorkstation = true; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         laptop = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  |     (mkIf comp.isMonstre { | ||||||
|  |       r6d.profiles = { | ||||||
|  |         isDubronetwork = true; | ||||||
|  |         isServer = true; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       r6d.config-generator.fail2ban = true; | ||||||
|  |     }) | ||||||
|  |     (mkIf comp.isNeoNomade{ | ||||||
|  |       r6d.profiles = { | ||||||
|  |         isDubronetwork = true; | ||||||
|  |         isHome = true; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         laptop = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  |     (mkIf comp.isNomade{ | ||||||
|  |       r6d.profiles.isDubronetwork = true; | ||||||
|  | 
 | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         laptop = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  |     (mkIf comp.isPhenom { | ||||||
|  |       r6d.profiles = { | ||||||
|  |         isDubronetwork = true; | ||||||
|  |         isHome = true; | ||||||
|  |         isWorkstation = true; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         nix-serve-server = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  |     (mkIf comp.isRollo { | ||||||
|  |       r6d.profiles = { | ||||||
|  |         isDubronetwork = true; | ||||||
|  |         isServer = true; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       r6d.config-generator = { | ||||||
|  |         fail2ban = true; | ||||||
|  |         murmur = true; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,72 @@ | |||||||
|  | { config, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | { | ||||||
|  |   # 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.03"; | ||||||
|  | 
 | ||||||
|  |   # On autorise les paquets non-libres | ||||||
|  |   nixpkgs.config.allowUnfree = true; | ||||||
|  | 
 | ||||||
|  |   # List packages installed in system profile. To search by name, run: | ||||||
|  |   # $ nix-env -qaP | grep wget | ||||||
|  |   environment = { | ||||||
|  |     systemPackages = with pkgs; [ | ||||||
|  |       bind          # utilisé pour les utilitaires comme dig | ||||||
|  |       byobu         # permet de se déconnecter d'un terminal sans l'aréter | ||||||
|  |       exfat         # Pour monter les FAT avec Fuse | ||||||
|  |       git gitAndTools.gitSVN gitAndTools.tig gti # outil de gestion de version | ||||||
|  |       gnumake       # pour décrire les recettes de compilation | ||||||
|  |       gnupg         # GPG | ||||||
|  |       gpm           # prise en charge de la souris en console | ||||||
|  |       htop          # monitoring | ||||||
|  |       #libressl      # librairie pour faire du TLS et les algorithmes de crypto par OpenBSD | ||||||
|  |       ncdu          # outil pour voir l'espace utilisé | ||||||
|  |       nmap          # outil de scan de port réseau | ||||||
|  |       mtr           # outil de diagnostic réseau | ||||||
|  |       par2cmdline   # outil de récupération de fichiers corrompus - .par2 | ||||||
|  |       p7zip         # compression de fichier | ||||||
|  |       parted        # partitionnement de disque | ||||||
|  |       pciutils | ||||||
|  |       python        # python -- python -m SimpleHTTPServer 8000 | ||||||
|  |       python34Packages.glances # monitoring | ||||||
|  |       pwgen         # générateur de mot de passe | ||||||
|  |       rtorrent      # outil de téléchargement de torrent & magnet | ||||||
|  |       tmux          # nécessaire pour byobu | ||||||
|  |       tree          # affiche une arborescence de fichiers et dossiers | ||||||
|  |       usbutils | ||||||
|  |       (import ./vim.nix) | ||||||
|  |       wget          # client HTTP console | ||||||
|  |       which         # pour connaitre le chemin d'un exécutable | ||||||
|  |     ]; | ||||||
|  |     shellAliases = { | ||||||
|  |       byobu = "byobu-tmux"; | ||||||
|  |       tree = "tree -C"; | ||||||
|  |       tree1 = "tree -d -L 1"; | ||||||
|  |       tree2 = "tree -d -L 2"; | ||||||
|  |       tree3 = "tree -d -L 3"; | ||||||
|  |       grep = "grep --color=auto"; | ||||||
|  |       vi = "vim"; | ||||||
|  |     }; | ||||||
|  |     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,25 @@ | |||||||
|  | # 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 | ||||||
|  |     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,13 @@ | |||||||
|  | { config, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | { | ||||||
|  |   # Select internationalisation properties. | ||||||
|  |   i18n = { | ||||||
|  |     consoleFont = "Lat2-Terminus16"; | ||||||
|  |     consoleKeyMap = "fr"; | ||||||
|  |     defaultLocale = "fr_FR.UTF-8"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   # Set your time zone. | ||||||
|  |   time.timeZone = "Europe/Paris"; | ||||||
|  | } | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | with import <nixpkgs> {}; | ||||||
|  | 
 | ||||||
|  | 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.vam.knownPlugins = pkgs.vimPlugins; | ||||||
|  |   vimrcConfig.vam.pluginDictionaries = [ | ||||||
|  |     { names = [ | ||||||
|  |       # Here you can place all your vim plugins | ||||||
|  |       # They are installed managed by `vam` (a vim plugin manager) | ||||||
|  |       #"vim-addon-nix" | ||||||
|  |       "vim-nix" | ||||||
|  |       "wombat256-vim" | ||||||
|  |     ]; } | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -1,34 +0,0 @@ | |||||||
| #!/usr/bin/env bash |  | ||||||
| 
 |  | ||||||
| SESSION_NAME="Adminsys" |  | ||||||
| PROJECT_DIR="/etc/nixos" |  | ||||||
| PROJECT_MODULES=$(cd $PROJECT_DIR && git submodule --quiet foreach 'echo $path') |  | ||||||
| HEAD_ADDITIONNAL_TABS="git config" |  | ||||||
| TAIL_ADDITIONNAL_TABS="glances htop" |  | ||||||
| 
 |  | ||||||
| # création de la session |  | ||||||
| byobu new-session -d -s ${SESSION_NAME} -n 'run' -c ${PROJECT_DIR}; |  | ||||||
| 
 |  | ||||||
| # définition des onglets |  | ||||||
| 
 |  | ||||||
| ## onglets courants au début. Positionnés dans dossier projet |  | ||||||
| for i in ${HEAD_ADDITIONNAL_TABS} |  | ||||||
| do |  | ||||||
|     byobu new-window -n ${i} -c ${PROJECT_DIR}; |  | ||||||
| done |  | ||||||
| 
 |  | ||||||
| ## onglets spécifiques au projet. Positionnés dans les dossiers enfants |  | ||||||
| for i in ${PROJECT_MODULES} |  | ||||||
| do |  | ||||||
|     byobu new-window -n ${i} -c ${PROJECT_DIR}/${i}; |  | ||||||
| done |  | ||||||
| 
 |  | ||||||
| ## onglets courants à la fin. Positionnés dans dossier projet. Lance la commande du même nom que l'onglet |  | ||||||
| for i in ${TAIL_ADDITIONNAL_TABS} |  | ||||||
| do |  | ||||||
|     byobu new-window -n ${i} -c ${PROJECT_DIR} ${i}; |  | ||||||
| done |  | ||||||
| 
 |  | ||||||
| # affiche la session |  | ||||||
| byobu -2 attach-session -t ${SESSION_NAME}; |  | ||||||
| 
 |  | ||||||
| @ -1,55 +0,0 @@ | |||||||
| { config, lib, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   inherit (lib) mkEnableOption mkIf mkMerge mkOption singleton types; |  | ||||||
|   cfg = config.r6d.config-generator; |  | ||||||
|   pfl = config.r6d.profiles; |  | ||||||
|   comp = config.r6d.computers; |  | ||||||
|   host = config.networking.fqdn; |  | ||||||
|   annuaire = config.r6d.machines; |  | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |  | ||||||
|   flags = currentMachine.configurationFlags; |  | ||||||
| in |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
| # TODO camel case partout |  | ||||||
| # TODO everything in english |  | ||||||
| # TODO sortir ce qui est privé |  | ||||||
|   ###### interface |  | ||||||
| 
 |  | ||||||
|   options = { |  | ||||||
|     #* Utilisé pour avoir des raccourcis de machine |  | ||||||
|     r6d.computers = { |  | ||||||
|       isNomade    = mkEnableOption "Identification du nom de machine."; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   ###### implementation |  | ||||||
|   # https://nixos.org/releases/nixos/14.12-small/nixos-14.12.374.61adf9e/manual/sec-writing-modules.html |  | ||||||
|   # https://nixos.org/wiki/NixOS:extend_NixOS |  | ||||||
|   config = mkMerge |  | ||||||
|   [ |  | ||||||
|     ## Définition des profils génériques |  | ||||||
|     # /!\ PAS un serveur |  | ||||||
|     (mkIf (!pfl.isServer || comp.isMonstre) { |  | ||||||
|       r6d.config-generator = { |  | ||||||
|         dns_resolveur = true; |  | ||||||
|       }; |  | ||||||
|     }) |  | ||||||
| 
 |  | ||||||
|     ## Affectation des profils aux machines |  | ||||||
| 
 |  | ||||||
|     # Dubro Vivo - St Malo |  | ||||||
|     #tincAddress = "192.168.12.8/24"; |  | ||||||
| 
 |  | ||||||
|     (mkIf comp.isNomade{ |  | ||||||
|       networking.hostName = "nomade"; # Define your hostname. |  | ||||||
|       networking.domain = "dubronetwork.fr"; |  | ||||||
|       r6d.profiles.isDubronetwork = true; |  | ||||||
| 
 |  | ||||||
|       r6d.config-generator = { |  | ||||||
|         laptop = true; |  | ||||||
|       }; |  | ||||||
|     }) |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
| @ -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,23 +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 { |  | ||||||
| 
 |  | ||||||
|   # Select internationalisation properties. |  | ||||||
|   console = { |  | ||||||
|     font = "Lat2-Terminus16"; |  | ||||||
|     keyMap = "fr"; |  | ||||||
|   }; |  | ||||||
|   i18n = { |  | ||||||
|     defaultLocale = "fr_FR.UTF-8"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Set your time zone. |  | ||||||
|   time.timeZone = "Europe/Paris"; |  | ||||||
| } |  | ||||||
| @ -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,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.swap { |  | ||||||
| 
 |  | ||||||
|   # Gestion du swap |  | ||||||
| 
 |  | ||||||
|   # https://en.wikipedia.org/wiki/Swappiness |  | ||||||
|   boot.kernel.sysctl = { |  | ||||||
|     # le swap est activé (!= 0) |  | ||||||
|     # le swap est utilisé lorsque (100 - x) % de la mémoire est déja allouée |  | ||||||
|     "vm.swappiness" = 10; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
| @ -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,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 false { |  | ||||||
|   # Définition du IO Scheduler pour les SSD |  | ||||||
|   services.udev.extraRules = '' |  | ||||||
|   # set deadline scheduler for non-rotating disks |  | ||||||
|   # according to https://wiki.debian.org/SSDOptimization, deadline is preferred over noop |  | ||||||
|   ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline" |  | ||||||
|   ''; |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| @ -1,16 +1,15 @@ | |||||||
| { config, lib, pkgs, ... }: | { config, lib, pkgs, ... }: | ||||||
| 
 | 
 | ||||||
| let | let | ||||||
|   inherit (lib) mkIf mkMerge mkThenElse; |   inherit (lib) mkIf; | ||||||
|   annuaire = config.r6d.machines; |   cfg = config.r6d.config-generator; | ||||||
|   currentMachine = annuaire."${config.networking.fqdn}"; |   computers = config.r6d.computers; | ||||||
|   flags = currentMachine.configurationFlags; |   profiles = config.r6d.profiles; | ||||||
| in | in | ||||||
| 
 | 
 | ||||||
| mkIf (flags.conception-assistee && flags.graphical) { | mkIf cfg.conception-assistee { | ||||||
| 
 | 
 | ||||||
|   # Paquets | environment.systemPackages = with pkgs; [ | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     # CAO |     # CAO | ||||||
|     ## Modélisation 3D |     ## Modélisation 3D | ||||||
|     freecad   # modélisation de pièces en 3D |     freecad   # modélisation de pièces en 3D | ||||||
| @ -0,0 +1,44 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf cfg.developpement { | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Base de données | ||||||
|  |     pgadmin | ||||||
|  |     sqlitebrowser | ||||||
|  | 
 | ||||||
|  |     # Développement | ||||||
|  |     cloc | ||||||
|  |     idea.idea-community | ||||||
|  |     gcc           # pour les appels depuis les scripts | ||||||
|  | 
 | ||||||
|  |     # Documentation | ||||||
|  |     zeal | ||||||
|  | 
 | ||||||
|  |     ## Gestion des sources | ||||||
|  |     # git       # déjà présent dans "base" | ||||||
|  |     git-cola | ||||||
|  |     mercurial | ||||||
|  |     subversion | ||||||
|  | 
 | ||||||
|  |     ## Haskell | ||||||
|  |     ghc | ||||||
|  |     stack | ||||||
|  | 
 | ||||||
|  |     ## Rust | ||||||
|  |     cargo       # récupération des dépendances + compilation projet rust | ||||||
|  |     rustPlatform.rustc | ||||||
|  | 
 | ||||||
|  |     ## Visualisation & outils de diff | ||||||
|  |     gource | ||||||
|  |     meld | ||||||
|  |     vbindiff    # diff de fichier hexadecimaux avec vim | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,18 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | 
 | ||||||
|  | in mkIf cfg.docker { | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Ecosystème Docker | ||||||
|  |     docker | ||||||
|  |     python27Packages.docker_compose | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   virtualisation.docker.enable = true; | ||||||
|  | } | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | 
 | ||||||
|  | in mkIf cfg.jeux { | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Jeux | ||||||
|  |     urbanterror | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,18 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | 
 | ||||||
|  | in mkIf cfg.virtualbox { | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     linuxPackages.virtualbox | ||||||
|  |     linuxPackages.virtualboxGuestAdditions | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   virtualisation.virtualbox.host.enable = true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| @ -0,0 +1,25 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | 
 | ||||||
|  | in mkIf cfg.laptop { | ||||||
|  |   # Paquets spécifiques pour un ordinateur portable | ||||||
|  | 
 | ||||||
|  |   ## Activation d'un gestionnaire de réseau | ||||||
|  |   networking.networkmanager.enable = true; | ||||||
|  | 
 | ||||||
|  |   hardware.bluetooth.enable = true; | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     networkmanagerapplet | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   services.xserver.synaptics = { | ||||||
|  |     enable = true; | ||||||
|  |     twoFingerScroll = true; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,24 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | 
 | ||||||
|  | in  mkIf cfg.xmonad { | ||||||
|  |   # Paquets spécifiques pour xmonad | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs;[ | ||||||
|  |     dmenu | ||||||
|  |     haskellPackages.xmobar | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   services.xserver.windowManager.xmonad = { | ||||||
|  |     enable = true; | ||||||
|  |     enableContribAndExtras = true; | ||||||
|  |     extraPackages = haskellPackages: [ | ||||||
|  |       haskellPackages.xmobar | ||||||
|  |     ]; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,46 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf profiles.isDesktop { | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Adminsys | ||||||
|  |     iotop | ||||||
|  |     lm_sensors | ||||||
|  |     lshw | ||||||
|  |     lsof | ||||||
|  |     ntp | ||||||
|  |     powerline-fonts | ||||||
|  |     powertop | ||||||
|  |     python27Packages.ansible2 | ||||||
|  |     python27Packages.glances | ||||||
|  |     usbutils | ||||||
|  | 
 | ||||||
|  |     # DNS | ||||||
|  |     unbound | ||||||
|  | 
 | ||||||
|  |     # Compression | ||||||
|  |     lz4 | ||||||
|  |     lzop | ||||||
|  | 
 | ||||||
|  |     # Mail | ||||||
|  |     postfix | ||||||
|  | 
 | ||||||
|  |     # Système de fichier | ||||||
|  |     curlftpfs | ||||||
|  |     gparted | ||||||
|  |     inotify-tools | ||||||
|  |     nfs-utils | ||||||
|  |     ntfs3g | ||||||
|  |     sshfsFuse | ||||||
|  | 
 | ||||||
|  |     # | ||||||
|  |     unetbootin    # création de clefs USB bootables | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,43 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf profiles.isDesktop { | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Bureautique | ||||||
|  |     aspell aspellDicts.fr | ||||||
|  |     dia | ||||||
|  |     gnumeric | ||||||
|  | 
 | ||||||
|  |     ## Cartes mentales | ||||||
|  |     freemind | ||||||
|  | 
 | ||||||
|  |     ## Editeur de texte | ||||||
|  |     lyx           # surcouche WISIWIM à LaTeX | ||||||
|  |     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 | ||||||
|  |     pandoc | ||||||
|  |     texLiveFull   # distribution LaTeX | ||||||
|  |     #texLive       # distribution LaTeX de base | ||||||
|  |     #texLiveBeamer # paquets et extensions pour Beamer | ||||||
|  |     #texLiveModerncv # paquets pour la classe Modern CV | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf profiles.isDesktop { | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Gestion de données géographiques | ||||||
|  |     expat          | ||||||
|  |     gpsbabel      # pour convettir les données des GPS | ||||||
|  |     josm          # outil de contribution à OpenStreetMap | ||||||
|  |     viking        # analyse de topo, gestion de données GPS | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,33 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf profiles.isDesktop { | ||||||
|  | 
 | ||||||
|  | environment.systemPackages = with pkgs; [ | ||||||
|  |     # Clients Internet | ||||||
|  | 
 | ||||||
|  |     ## Navigateur & Réseaux sociaux | ||||||
|  |     chromium | ||||||
|  |     firefox | ||||||
|  |     python27Packages.turses # client twitter en ncurse | ||||||
|  | 
 | ||||||
|  |     ## Mail & Discussion (texte, audio) | ||||||
|  |     clawsMail | ||||||
|  |     kde5.quasselClient | ||||||
|  |     mumble | ||||||
|  |     mutt | ||||||
|  |     pidgin | ||||||
|  |     thunderbird | ||||||
|  | 
 | ||||||
|  |     # Transfert de fichier | ||||||
|  |     filezilla | ||||||
|  |     transmission_gtk | ||||||
|  |     transmission_remote_gtk | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,42 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf profiles.isDesktop { | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Multimedia | ||||||
|  | 
 | ||||||
|  |     ## Audio | ||||||
|  |     audacity      # montage audio | ||||||
|  |     beep | ||||||
|  |     cmus          # lecteur audio console | ||||||
|  |     easytag       # gestion des métadonnées des fichiers musicaux | ||||||
|  |     picard        # gestion des métadonnées des fichiers musicaux | ||||||
|  |     espeak        # synthèse vocale | ||||||
|  |     paprefs       # préferences pulseaudio | ||||||
|  |     pavucontrol   # mixer pulseaudio | ||||||
|  |     vorbis-tools  # codec | ||||||
|  | 
 | ||||||
|  |     ## Video | ||||||
|  |     smplayer      # lecteur vidéo | ||||||
|  |     vlc           # lecteur vidéo | ||||||
|  | 
 | ||||||
|  |     ## Photo & Dessin vectoriel | ||||||
|  |     exif | ||||||
|  |     exiftags | ||||||
|  |     gimp          # logiciel d'édition/montage/retouche photo | ||||||
|  |     inkscape      # édition d'image vectorielle (svg & autre) | ||||||
|  |     imagemagick   # modification image en CLI | ||||||
|  |     kde4.ksnapshot | ||||||
|  |     rawtherapee   # développemen de photos en RAW | ||||||
|  | 
 | ||||||
|  |     ### TEST d'outil de gestion de catalogue de photos | ||||||
|  |     kde4.digikam  # gestionnaire de bibliothèque de photo | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,37 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf profiles.isDesktop { | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  |     # Outils réseau | ||||||
|  |     iperf         # outil de mesure de la qualité du réseau | ||||||
|  |     iptraf-ng     # outil de mesure de la qualité du réseau | ||||||
|  |     nload         # affichage de statisques d'utilisation instantannées du réseau | ||||||
|  |     telnet | ||||||
|  |     #vsftpd       # serveur FTP | ||||||
|  | 
 | ||||||
|  |     ## Diagnostic | ||||||
|  |     arp-scan | ||||||
|  |     wireshark | ||||||
|  |     whois | ||||||
|  | 
 | ||||||
|  |     ## Routage | ||||||
|  |     quagga        # daemon de routage | ||||||
|  | 
 | ||||||
|  |     ## Tunnel | ||||||
|  |     # openvpn | ||||||
|  |     tinc | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   networking.firewall = { | ||||||
|  |     allowedTCPPorts = [5201]; # iperf | ||||||
|  |     allowedUDPPorts = [5201]; # iperf | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -0,0 +1,20 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf profiles.isDesktop { | ||||||
|  | 
 | ||||||
|  |   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 | ||||||
|  |     slock           # vérouiller l''écran. "cannot disable the out-of-memory killer for this process (make sure to suid or sgid slock)" --> en root | ||||||
|  |     yubikey-personalization-gui # utilisation de la clef Yubikey | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   inherit (lib) mkIf; | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | mkIf profiles.isDesktop { | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs; [ | ||||||
|  | 
 | ||||||
|  |   ]; | ||||||
|  | } | ||||||
| @ -0,0 +1,107 @@ | |||||||
|  | { config, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   cfg = config.r6d.config-generator; | ||||||
|  |   computers = config.r6d.computers; | ||||||
|  |   profiles = config.r6d.profiles; | ||||||
|  |   mkIf = pkgs.lib.mkIf; | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | { | ||||||
|  |   imports = [                   # applications : | ||||||
|  |     # commandées par config-generator | ||||||
|  |     ./activation-manuelle/app-awesome.nix # pour les profils awesome | ||||||
|  |     ./activation-manuelle/app-cao.nix     # de conception assisté par ordinateur & modélisation | ||||||
|  |     ./activation-manuelle/app-developpement.nix # utilisée pour développer des programmes/scripts | ||||||
|  |     ./activation-manuelle/app-docker.nix  # pour activer docker | ||||||
|  |     ./activation-manuelle/app-jeux.nix    # permettant de jouer ;) | ||||||
|  |     ./activation-manuelle/app-virtualbox.nix # pour exploiter virtualbox | ||||||
|  |     ./activation-manuelle/laptop.nix      # appli & configuration adaptée pour un PC portable$ | ||||||
|  |     ./activation-manuelle/xmonad.nix      # gestionnaire de fenêtres xmonad | ||||||
|  |     # installées systématiquement | ||||||
|  |     ./desktop-minimal.nix | ||||||
|  |     ./app-adminsys.nix          # pour gérer le système dans son ensemble et les services | ||||||
|  |     ./app-bureautique.nix       # dédiée à la bureautique (traitement de texte, dessin, ...) | ||||||
|  |     # A ajouter dans config-generator & revoir le contenu pour le mettre si nécessaire dans minimal | ||||||
|  |     ./app-cartographie.nix      # utilisée pour manipuler les données géographiques & cartes | ||||||
|  |     ./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, ...) | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   environment.systemPackages = with pkgs; mkIf profiles.isDesktop [ | ||||||
|  |     # Environement de bureau | ||||||
|  |     wmname        # pour définir le nom du gestionnaire de fenêtre (utile pour java) | ||||||
|  |     kde4.ksnapshot# capture d'écran | ||||||
|  |     xorg.xbacklight # pour gérer la luminosité de l'écran | ||||||
|  |     xorg.xev        # pour repérer les codes + noms standard des actions clavier/souris | ||||||
|  |     xorg.xkill    # pour 'tuer une application' | ||||||
|  | 
 | ||||||
|  |     ## Gestionnaire de fenêtre & Thème | ||||||
|  |     gnome.gnome_icon_theme  # thème d'icone - semble fonctionner avec spaceFM | ||||||
|  | 
 | ||||||
|  |     ## Manipulation de fichier | ||||||
|  |     pcmanfm       # gestionnaire de fichiers graphique | ||||||
|  |     spaceFM       # gestionnaire de fichiers graphique | ||||||
|  |     vifm          # gestionnaire de fichiers basé sur VIM (console) | ||||||
|  | 
 | ||||||
|  |     ## Terminal | ||||||
|  |     sakura        # terminal | ||||||
|  | 
 | ||||||
|  |     # A trier | ||||||
|  |     cowsay | ||||||
|  |     fgallery      # générateur de gallerie statique http://www.thregr.org/~wavexx/software/fgallery/ | ||||||
|  |     samba | ||||||
|  |     taskwarrior   # gestionnaire de tâches en console | ||||||
|  |     udevil        # pour le montage des media amovibles | ||||||
|  |     xclip         # manipulation du clipboard X depuis la console | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   nixpkgs.config.packageOverrides = pkgs: { | ||||||
|  |     clawsMail = pkgs.clawsMail.override { enablePluginFancy = true; }; | ||||||
|  |     mumble = pkgs.mumble.override { pulseSupport = true; }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   # Enable the X11 windowing system. | ||||||
|  |   services.xserver = mkIf profiles.isDesktop { | ||||||
|  |     enable = true; | ||||||
|  |     layout = "fr"; | ||||||
|  |     xkbOptions = "eurosign:e"; | ||||||
|  |     displayManager.lightdm.enable = true; | ||||||
|  |     windowManager.awesome.enable = true; | ||||||
|  |     startGnuPGAgent = true; | ||||||
|  |     startOpenSSHAgent = false; # pas compatible avec l'agent GnuPG | ||||||
|  |     inputClassSections = ['' | ||||||
|  |     Identifier  "Marble Mouse" | ||||||
|  |     MatchProduct "Logitech USB Trackball" | ||||||
|  |     MatchIsPointer "on" | ||||||
|  |     MatchDevicePath "/dev/input/event*" | ||||||
|  |     Driver "evdev" | ||||||
|  |     # Physical button #s:     A b D - - - - B C    b = A & D simultaneously;   - = no button | ||||||
|  |     #Option "ButtonMapping" "1 8 3 4 5 6 7 2 2"   #  For right-hand placement | ||||||
|  |     #Option "ButtonMapping" "3 8 1 4 5 6 7 2 2"   #  For left-hand placement | ||||||
|  | 
 | ||||||
|  |     # EmulateWheel refers to emulating a mouse wheel using Marble Mouse trackball. | ||||||
|  |     Option "EmulateWheel" "true" | ||||||
|  |     Option "EmulateWheelButton" "8"   # Factory default; use "9" for left-side placement. | ||||||
|  | 
 | ||||||
|  |     # EmulateWheelInertia specifies how far (in pixels) the pointer must move to | ||||||
|  |     # generate button press/release events in wheel emulation mode. | ||||||
|  |     Option "EmulateWheelInertia" "10" # Factory default: 50 | ||||||
|  | 
 | ||||||
|  |     Option "ZAxisMapping" "4 5" | ||||||
|  |     Option "XAxisMapping" "6 7"       # Disable this for vertical-only scrolling. | ||||||
|  |     # Emulate3Buttons refers to the act of pressing buttons A and D | ||||||
|  |     # simultaneously to emulate a middle-click or wheel click. | ||||||
|  |     Option "Emulate3Buttons" "true"   # Factory default. | ||||||
|  |     '']; | ||||||
|  |   }; | ||||||
|  |    | ||||||
|  |   # Pulse Audio | ||||||
|  |   hardware.pulseaudio = mkIf profiles.isDesktop { | ||||||
|  |     enable = true; | ||||||
|  |     support32Bit = true; | ||||||
|  |   }; | ||||||
|  |   environment.etc."pulse/daemon.conf".text = "flat-volumes = no"; | ||||||
|  | } | ||||||
Some files were not shown because too many files have changed in this diff Show More
					Loading…
					
					
				
		Reference in New Issue