Compare commits
	
		
			580 Commits 
		
	
	
		
			2016-07-29
			...
			nixos-unst
		
	
	@ -0,0 +1,118 @@
 | 
				
			|||||||
 | 
					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
 | 
				
			||||||
@ -1,5 +0,0 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
# 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
 | 
					 | 
				
			||||||
@ -0,0 +1,240 @@
 | 
				
			|||||||
 | 
					# 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
 | 
				
			||||||
 | 
					~~~
 | 
				
			||||||
@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					{ 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;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					{ 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,15 +1,16 @@
 | 
				
			|||||||
{ config, lib, pkgs, ... }:
 | 
					{ config, lib, pkgs, ... }:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let
 | 
					let
 | 
				
			||||||
  inherit (lib) mkIf;
 | 
					  inherit (lib) mkIf mkMerge mkThenElse;
 | 
				
			||||||
  cfg = config.r6d.config-generator;
 | 
					  annuaire = config.r6d.machines;
 | 
				
			||||||
  computers = config.r6d.computers;
 | 
					  currentMachine = annuaire."${config.networking.fqdn}";
 | 
				
			||||||
  profiles = config.r6d.profiles;
 | 
					  flags = currentMachine.configurationFlags;
 | 
				
			||||||
in
 | 
					in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mkIf cfg.conception-assistee {
 | 
					mkIf (flags.conception-assistee && flags.graphical) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
environment.systemPackages = with pkgs; [
 | 
					  # Paquets
 | 
				
			||||||
 | 
					  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,19 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					{ 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; [
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					{ 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, ...)
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					{ 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 = [
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					{ 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)
 | 
				
			||||||
 | 
					  ]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					{ 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; [
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					{ 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; [
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					{ 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"
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,48 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  #];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					{ 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)
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					{ 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; [
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,73 @@
 | 
				
			|||||||
 | 
					{ 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;
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					{ 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, ...)
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					{ 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 = [
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					{ 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***
 | 
				
			||||||
 | 
					  ]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					{ 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; [
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					{ 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; [
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					{ 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; [
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					{ 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;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					{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,8 +1,18 @@
 | 
				
			|||||||
{ ... }:
 | 
					{ config, lib, pkgs, ... }:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  imports = [
 | 
					  imports = [
 | 
				
			||||||
    ./base/base.nix
 | 
					    # moulinette de configuration
 | 
				
			||||||
    ./desktop/desktop.nix
 | 
					    /*./config-generator.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
 | 
				
			||||||
  ];
 | 
					  ];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,48 +0,0 @@
 | 
				
			|||||||
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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,12 +0,0 @@
 | 
				
			|||||||
{ 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;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,37 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
        '';
 | 
					 | 
				
			||||||
      };
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,10 +0,0 @@
 | 
				
			|||||||
{ config, pkgs, ... }:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
with pkgs.lib;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  cfg = config.r6d.config-generator;
 | 
					 | 
				
			||||||
in {
 | 
					 | 
				
			||||||
  # Gestion spécifique pour PC portable
 | 
					 | 
				
			||||||
  powerManagement.cpuFreqGovernor = mkIf cfg.laptop "powersave";
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
{ config, pkgs, ... }:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
with pkgs.lib;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  cfg = config.r6d.config-generator;
 | 
					 | 
				
			||||||
in {
 | 
					 | 
				
			||||||
  imports = [
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  services.locate = {
 | 
					 | 
				
			||||||
    enable = cfg.locate;
 | 
					 | 
				
			||||||
    interval = "hourly";
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,24 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
    '';
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
@ -1,12 +0,0 @@
 | 
				
			|||||||
{ 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 ];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
    ];
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,16 +0,0 @@
 | 
				
			|||||||
{ 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
												
											
										
									
								@ -1,14 +0,0 @@
 | 
				
			|||||||
{ config, pkgs, ... }:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  imports = [
 | 
					 | 
				
			||||||
    ./environment.nix
 | 
					 | 
				
			||||||
    ./localisation.nix
 | 
					 | 
				
			||||||
    ./monitoring.nix
 | 
					 | 
				
			||||||
    ./networking.nix
 | 
					 | 
				
			||||||
    ./services.nix
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # inclusion conditionnelle
 | 
					 | 
				
			||||||
    ./config-generator.nix
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,254 +0,0 @@
 | 
				
			|||||||
{ 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;
 | 
					 | 
				
			||||||
      };
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,72 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
  '';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,25 +0,0 @@
 | 
				
			|||||||
# 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
 | 
					 | 
				
			||||||
@ -1,13 +0,0 @@
 | 
				
			|||||||
{ config, pkgs, ... }:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  # Select internationalisation properties.
 | 
					 | 
				
			||||||
  i18n = {
 | 
					 | 
				
			||||||
    consoleFont = "Lat2-Terminus16";
 | 
					 | 
				
			||||||
    consoleKeyMap = "fr";
 | 
					 | 
				
			||||||
    defaultLocale = "fr_FR.UTF-8";
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Set your time zone.
 | 
					 | 
				
			||||||
  time.timeZone = "Europe/Paris";
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,19 +0,0 @@
 | 
				
			|||||||
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"
 | 
					 | 
				
			||||||
    ]; }
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					#!/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};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					{ 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;
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,64 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  '';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					{ 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;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					{ 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";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					{ 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;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					{ 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";
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					{ 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;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					{ 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
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					{ 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,44 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,18 +0,0 @@
 | 
				
			|||||||
{ 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;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,18 +0,0 @@
 | 
				
			|||||||
{ 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;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,25 +0,0 @@
 | 
				
			|||||||
{ 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;
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,24 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
    ];
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,46 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,43 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,17 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
    josm          # outil de contribution à OpenStreetMap
 | 
					 | 
				
			||||||
    viking        # analyse de topo, gestion de données GPS
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,33 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,42 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,37 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,20 +0,0 @@
 | 
				
			|||||||
{ 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
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
{ 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; [
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,107 +0,0 @@
 | 
				
			|||||||
{ 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";
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					all:
 | 
				
			||||||
 | 
						nixos-generate-config --root /mnt
 | 
				
			||||||
 | 
						git config --global user.email "nixos-live@example.org"
 | 
				
			||||||
 | 
						git config --global user.name "NixOS Live"
 | 
				
			||||||
 | 
						cd /mnt/etc/nixos && git init . && git add . && git commit -m "initial commit"
 | 
				
			||||||
 | 
						cd /mnt/etc/nixos && git submodule add http://gogs.prunetwork.fr:80/nixos-config/nixos-template-base.git base
 | 
				
			||||||
 | 
						cd /mnt/etc/nixos && git submodule add https://gogs.prunetwork.fr/Capgemini-CDS-Arkea/template-nixos.git capgemini-cmb
 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show More
					Loading…
					
					
				
		Reference in New Issue