Compare commits

..

38 Commits

Author SHA1 Message Date
Yves Dubromelle
8845300555 awesome: activation du raccourci xrandr-auto + au démarrage 2017-02-25 11:51:16 +01:00
dce783708c désactivation modification IO scheduler pour SSD 2017-02-20 22:23:13 +01:00
f2305d0a81 tinc: ajout @IP dubro vivo 2017-02-20 22:22:51 +01:00
a6e957afae ménage config-generator 2017-02-20 22:21:00 +01:00
edfac07129 pru: + de paquets par défaut 2017-02-20 22:20:39 +01:00
7799eb106f haskell: ajout threadscope pour analyser les logs d'application 2017-02-19 21:28:58 +01:00
Yves Dubromelle
754a1ec934 nix-server: ajout de monstre 2017-02-12 22:58:00 +01:00
Yves Dubromelle
80f7b32af6 phenom: est un client nix-serve 2017-02-12 22:38:04 +01:00
Yves Dubromelle
5cd1cd0e6f phenom: desactivation de latitude comme source nix-serve 2017-02-12 22:10:30 +01:00
Yves Dubromelle
fae4a8237c /run/current-system/sw/bin/bash: q : commande introuvable 2017-02-12 22:06:38 +01:00
Yves Dubromelle
5f09c0896d ajout de machines fixes comme serveur nix 2017-02-12 22:04:08 +01:00
Yves Dubromelle
2244b917ac radx: activation nix-server 2017-02-12 22:00:48 +01:00
458362bece git: alias d'affichage des branches triées par date de modification 2017-02-11 01:42:45 +01:00
b4b213e836 client internet: ajout de quassel simple pour se connecter sans bouncer 2017-02-11 01:41:33 +01:00
cc7f911141 radx: activation postgresql 2017-02-11 01:41:14 +01:00
4ffd71f10f haskell: ajout hlint 2017-02-11 01:40:48 +01:00
Yves Dubromelle
07cf33a086 police hasklig 2017-02-04 13:44:11 +01:00
f3741782e3 munin: réduction du temps d'attente au lancement. On verra s'il est suffisant 2017-02-02 16:14:32 +01:00
b8c3447767 fix: syntax 2017-02-01 13:40:33 +01:00
eb3a945c7c prunetwork: disable hydra 2017-02-01 02:18:35 +01:00
6f19fdec07 ajout de time devant les commandes nix potentiellement longues 2017-01-31 13:10:55 +01:00
91e81d50a6 radx: profils de dev 2017-01-31 12:43:32 +01:00
Yves Dubromelle
293dd76025 profil pour Elm (et plugin vim) 2017-01-30 21:35:53 +01:00
65a21c197c ajout hostname pour {radx, hydra, ocean} 2017-01-29 23:56:58 +01:00
Yves Dubromelle
c11cd5d456 formatage 2017-01-29 23:34:52 +01:00
Yves Dubromelle
805ef707f5 fix: plus de matching sur le hostname, is<machine> à mettre à true dans configuration.nix 2017-01-29 23:31:44 +01:00
Yves Dubromelle
1ee426f50a hostname dans le config-generator pour phenom 2017-01-29 23:29:50 +01:00
Yves Dubromelle
0bcd327679 -hydra pour phenom 2017-01-29 23:28:53 +01:00
04c3397ff3 suppression de la variable enable car toujours à vraie 2017-01-29 19:28:40 +01:00
5f86c78e1b smokeping: ajout hydra 2017-01-28 00:15:26 +01:00
715a3519f4 Merge remote-tracking branch 'origin/master' into nixos-unstable 2017-01-27 19:31:38 +01:00
0b08c7dbd0 munin: ajout dépendances sur 'sensors' 2017-01-27 19:30:04 +01:00
d7f2b4fd38 ajout monitoring smokeping pour toutes les machines 2017-01-26 11:49:18 +01:00
Yves Dubromelle
ce1cae293c ajout hindent 2017-01-26 10:42:52 +01:00
Yves Dubromelle
1c58705adf latitude sert son nix-store 2017-01-26 10:42:52 +01:00
Yves Dubromelle
1cc773c034 outils de ménage de fichier 2017-01-26 00:12:19 +01:00
Yves Dubromelle
58c32c79fb ajout de paquets haskell 2017-01-26 00:12:19 +01:00
d1a5228a92 MaJ config pulseaudio : nouvel argument pour déclarer les options du daemon 2017-01-26 00:12:19 +01:00
19 changed files with 395 additions and 329 deletions

View File

@@ -1,17 +1,18 @@
GSF=git submodule foreach GSF=git submodule foreach
TIME=time
all: rebuild-switch all: rebuild-switch
date date
##--------- Commandes spécifiques pour NixOS ##--------- Commandes spécifiques pour NixOS
clean: clean:
nix-collect-garbage -d --delete-older-than 15d $(TIME) nix-collect-garbage -d --delete-older-than 15d
clean-aggressive: clean-aggressive:
nix-collect-garbage -d --delete-older-than 1d $(TIME) nix-collect-garbage -d --delete-older-than 1d
clean-total: clean-total:
nix-collect-garbage -d $(TIME) nix-collect-garbage -d
clean-log: clean-log:
journalctl --vacuum-size=1G journalctl --vacuum-size=1G
@@ -20,19 +21,19 @@ full-auto: submodules-update upgrade clean optimise
@date @date
optimise: optimise:
nix-store --optimise $(TIME) nix-store --optimise
rebuild-switch: rebuild-switch:
nixos-rebuild switch --fallback --show-trace $(TIME) time nixos-rebuild switch --fallback --show-trace
show-roots: show-roots:
nix-store --gc --print-roots nix-store --gc --print-roots
store-repair: store-repair:
nix-store --verify --check-contents --repair $(TIME) nix-store --verify --check-contents --repair
upgrade: upgrade:
nixos-rebuild switch --upgrade --fallback --show-trace $(TIME) nixos-rebuild switch --upgrade --fallback --show-trace
##--------- Commandes spécifiques pour NixOS -- Opérations non courantes ##--------- Commandes spécifiques pour NixOS -- Opérations non courantes

184
README.md
View File

@@ -1,45 +1,18 @@
# nixos-template-base # nixos-template-base
Versions de NixOS supportées : Version de nixos supportée : NixOs 16.09
* NixOS 16.09
* NixOS unstable
Ce dépôt stocke une configuration générique des machines. 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). 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. Actuellement, les scripts contiennent un peu de configuration spécifique pour les machines des mainteneurs.
# Notes de mise-à-jour # Lien pour install sur machine distante
## pour le passage de 16.09 à unstable
* mettre à jour tous les dépôts * https://nixos.org/wiki/How_to_install_NixOS_from_Linux#Installing_through_a_chroot
* changer la branche de base vers `nixos-unstable` * https://github.com/NixOS/nixpkgs/issues/13305
* changer la declaration de la machine dans `configuration.nix`
~~~ # Notes pour l'upgrade de 16.03 vers 16.09
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 * 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``` * changer le channel nixos : ```nix-channel --add https://nixos.org/channels/nixos-16.09 nixos```
@@ -68,150 +41,3 @@ Pour résoudre les soucis d'upgrade, il est conseillé :
* d'ajouter `vim` aux paquets * d'ajouter `vim` aux paquets
* de réactiver petit à petit les lignes désactivées * 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
~~~
sudo su -
~~~
* formater les partitions
~~~
mkfs.ext4 -L nixos /dev/sda1
swapoff -a
mkswap /dev/sda2
swapon -a
~~~
* monter les partitions dans /mnt
~~~
mount /dev/sda1 /mnt/
mkdir /mnt/etc/
mkdir /etc/nixos
mkdir /mnt/nix
mount --bind /mnt/nix/ /nix
~~~
* installer les paquets nécessaires
~~~
apt-get install bzip2 git byobu htop glances
~~~
* création d'utilisateur (n'importe quil mot de passe)
~~~
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
~~~
update-ca-certificates
~~~
* installer nix
~~~
chown -R nix /nix
su - nix
bash <(curl https://nixos.org/nix/install)
exit
~~~
* créer un profil nix pour root & un channel
~~~
. ~nix/.nix-profile/etc/profile.d/nix.sh
nix-channel --remove nixpkgs
nix-channel --add http://nixos.org/channels/nixos-unstable nixos
nix-channel --update
~~~
* installer un editeur de texte
~~~
nix-env -i vim_configurable
~~~
* installation de nixos-install
~~~
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
~~~
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
~~~
mount --bind /mnt/etc/nixos/ /etc/nixos/
~~~
* mettre à jour la configuration matérielle
~~~
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
~~~
unset NIXOS_CONFIG
nixos-install
~~~

View File

@@ -13,15 +13,15 @@ mkIf cfg.nix-serve-client {
# Cache http pour le store # Cache http pour le store
requireSignedBinaryCaches = false; requireSignedBinaryCaches = false;
binaryCaches = [ binaryCaches = [
#(mkIf (computers.isRollo) "http://ocean.grudu.net:5001/")
(mkIf (computers.isRollo) "http://192.168.12.6:5000/")
#(mkIf (computers.isOcean) "http://rollo.grudu.net:5001/")
(mkIf (computers.isOcean) "http://192.168.12.5:5000/")
(mkIf (profiles.isDubronetwork && (! computers.isPedro) && (! computers.isRollo)) "http://nix-cache.dubronetwork.fr:5001") (mkIf (profiles.isDubronetwork && (! computers.isPedro) && (! computers.isRollo)) "http://nix-cache.dubronetwork.fr:5001")
#(mkIf (profiles.isDubronetwork && computers.isPhenom) "http://latitude.grudu.net:5000")
(mkIf (profiles.isDubronetwork && computers.isPhenom) "http://monstre.grudu.net:5000")
(mkIf (profiles.isDubronetwork && computers.isPhenom) "http://radx.grudu.net:5000")
(mkIf profiles.isPrunetwork "https://cache.nixos.org/") (mkIf profiles.isPrunetwork "https://cache.nixos.org/")
(mkIf (profiles.isPrunetwork && !profiles.isServer) "http://nix-cache.dubronetwork.fr:5001") (mkIf (profiles.isPrunetwork && !profiles.isServer) "http://nix-cache.dubronetwork.fr:5001")
(mkIf (profiles.isPrunetwork && computers.isRadx) "http://monstre.grudu.net:5000")
(mkIf (profiles.isPrunetwork && computers.isRadx) "http://phenom.grudu.net:5000")
]; ];
extraOptions = '' extraOptions = ''
connect-timeout = 5 connect-timeout = 5

File diff suppressed because one or more lines are too long

View File

@@ -9,118 +9,101 @@ let
in in
{ {
###### interface ###### interface
options = { options = {
#* Utilisé pour afecter des capacités aux machines #* Utilisé pour afecter des capacités aux machines
r6d.profiles = { r6d.profiles = {
# Domaine # Domaine
isDubronetwork = mkEnableOption "Pour distinguer les machines dubronetwork."; isDubronetwork = mkEnableOption "Pour distinguer les machines dubronetwork.";
isPrunetwork = mkEnableOption "Pour distinguer les machines prunetwork."; isPrunetwork = mkEnableOption "Pour distinguer les machines prunetwork.";
# Utilisation machine # Utilisation machine
isDesktop = mkEnableOption "Pour indiquer une machine avec interface graphique."; isDesktop = mkEnableOption "Pour indiquer une machine avec interface graphique.";
isHome = mkEnableOption "Pour indiquer que la machine sert à la maison (divertissement & autre)."; isHome = mkEnableOption "Pour indiquer que la machine sert à la maison (divertissement & autre).";
isServer = mkEnableOption "Pour indiquer qu'il s'agit d'un serveur."; isServer = mkEnableOption "Pour indiquer qu'il s'agit d'un serveur.";
isWorkstation = mkEnableOption "Pour indiquer que la machine sert à travailler."; 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.";
cartographie = mkEnableOption "Profil pour activer les outils de gestion de données géographiques.";
conception-assistee = mkEnableOption "Profil pour activer les outils de conception électronique & modélisation 3D";
database_postgres = mkEnableOption "Profil pour activer le SGBD PostgreSQL.";
developpement = mkEnableOption "Profil pour activer les outils de développement";
developpement-haskell = mkEnableOption "Profil pour activer les outils de développement Haskell";
developpement-java = mkEnableOption "Profil pour activer les outils de développement Java";
developpement-rust = mkEnableOption "Profil pour activer les outils de développement Rust";
docker = mkEnableOption "Profil pour l'utilisation de Docker.";
dovecot = mkEnableOption "Profil pour activer le serveur Dovecot.";
dns_autorite = mkEnableOption "Profil pour servir les fichiers de zone DNS.";
dns_resolveur = mkEnableOption "Profil pour activer un résolveur DNS local.";
edition-musique = mkEnableOption "Profil pour la création/édition de musique.";
edition-photo = mkEnableOption "Profil pour la création/édition de photos.";
edition-video = mkEnableOption "Profil pour la création/édition de video.";
elasticsearch = mkEnableOption "Profil pour activer le service elasticsearch.";
fail2ban = mkEnableOption "Profil pour activer Fail2ban.";
hydra-builder = mkEnableOption "Profil pour une machine qui compile pour hydra.";
hydra-core = mkEnableOption "Profil pour un serveur hydra.";
kibana = mkEnableOption "Profil pour activer le service kibana.";
jetbrains-licensed = mkEnableOption "Profil pour la suite de développement Jetbrains payante (sous-ensemble).";
jeux = mkEnableOption "Profil pour les jeux vidéos.";
laptop = mkEnableOption "Profil pour les outils spécifiques aux ordinateurs portables.";
locate = mkEnableOption "Profil pour activer la fonction locate.";
mailboxes = mkEnableOption "Profil pour stocker les mails dans des boîtes aux lettres.";
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.";
nixStoreProxyCache = mkEnableOption "Profil pour activer le proxy cahce nginx pour le nix store";
print = mkEnableOption "Profil pour activer cups & pouvoir imprimer.";
rabbitmq = mkEnableOption "Profil pour activer le service de messagerie AMQP.";
radicale = mkEnableOption "Profil pour activer le service d'hébergement de calendrier + tâches & contacts.";
scanner = mkEnableOption "Profil pour que les scanners soient utilisable.";
swap = mkEnableOption "Profil pour que le swap soit activé.";
virtualbox = mkEnableOption "Profil pour l'utilisation de VirtualBox.";
xmonad = mkEnableOption "Profil pour activer le gestionnaire de fenêtres xmonad.";
znc = mkEnableOption "Profil pour activer le relais IRC ZNC.";
tincAddress = mkOption {
default = "";
example = "192.168.1.1";
description = "Adresse du noeud tinc local";
type = lib.types.string;
};
tincExtraConfig = mkOption {
default = "";
example = ''
Mode = router
ConnecTo = bar
'';
description = "Configuration supplémentaire pour tinc";
type = lib.types.string;
};
};
#* Utilisé pour avoir des raccourcis de machine
r6d.computers = {
isHydra = mkEnableOption "Identification du nom de machine.";
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.";
isPedro = 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.";
};
}; };
###### implementation #* Utilisé dans les fichiers .nix
# https://nixos.org/releases/nixos/14.12-small/nixos-14.12.374.61adf9e/manual/sec-writing-modules.html r6d.config-generator = {
# https://nixos.org/wiki/NixOS:extend_NixOS #enable = mkEnableOption "Génération de la configuration d'une machine.";
config = mkMerge awesome = mkEnableOption "Profil pour activer le gestionnaire de fenêtre awesome.";
[ # Unconditional stuff. auto-upgrade = mkEnableOption "Profil pour activer les mises à jour automatiques.";
{ cartographie = mkEnableOption "Profil pour activer les outils de gestion de données géographiques.";
r6d.config-generator.enable = true; conception-assistee = mkEnableOption "Profil pour activer les outils de conception électronique & modélisation 3D";
r6d.computers = { database_postgres = mkEnableOption "Profil pour activer le SGBD PostgreSQL.";
isHydra = host == "hydra.prunetwork.fr"; developpement = mkEnableOption "Profil pour activer les outils de développement";
isLatitude = host == "latitude.dubronetwork.fr"; developpement-elm = mkEnableOption "Profil pour activer les outils de développement Elm";
isMonstre = host == "monstre.dubronetwork.fr"; developpement-haskell = mkEnableOption "Profil pour activer les outils de développement Haskell";
isNeoNomade = host == "neo-nomade.dubronetwork.fr"; developpement-java = mkEnableOption "Profil pour activer les outils de développement Java";
isNomade = host == "nomade.dubronetwork.fr"; developpement-rust = mkEnableOption "Profil pour activer les outils de développement Rust";
isOcean = host == "ocean.prunetwork.fr"; docker = mkEnableOption "Profil pour l'utilisation de Docker.";
isPedro = host == "pedro.dubronetwork.fr"; dovecot = mkEnableOption "Profil pour activer le serveur Dovecot.";
isPhenom = host == "phenom.dubronetwork.fr"; dns_autorite = mkEnableOption "Profil pour servir les fichiers de zone DNS.";
isRadx = host == "radx.prunetwork.fr"; dns_resolveur = mkEnableOption "Profil pour activer un résolveur DNS local.";
isRollo = host == "rollo.dubronetwork.fr"; edition-musique = mkEnableOption "Profil pour la création/édition de musique.";
edition-photo = mkEnableOption "Profil pour la création/édition de photos.";
edition-video = mkEnableOption "Profil pour la création/édition de video.";
elasticsearch = mkEnableOption "Profil pour activer le service elasticsearch.";
fail2ban = mkEnableOption "Profil pour activer Fail2ban.";
hydra-builder = mkEnableOption "Profil pour une machine qui compile pour hydra.";
hydra-core = mkEnableOption "Profil pour un serveur hydra.";
kibana = mkEnableOption "Profil pour activer le service kibana.";
jetbrains-licensed = mkEnableOption "Profil pour la suite de développement Jetbrains payante (sous-ensemble).";
jeux = mkEnableOption "Profil pour les jeux vidéos.";
laptop = mkEnableOption "Profil pour les outils spécifiques aux ordinateurs portables.";
locate = mkEnableOption "Profil pour activer la fonction locate.";
mailboxes = mkEnableOption "Profil pour stocker les mails dans des boîtes aux lettres.";
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.";
nixStoreProxyCache = mkEnableOption "Profil pour activer le proxy cahce nginx pour le nix store";
print = mkEnableOption "Profil pour activer cups & pouvoir imprimer.";
rabbitmq = mkEnableOption "Profil pour activer le service de messagerie AMQP.";
radicale = mkEnableOption "Profil pour activer le service d'hébergement de calendrier + tâches & contacts.";
scanner = mkEnableOption "Profil pour que les scanners soient utilisable.";
swap = mkEnableOption "Profil pour que le swap soit activé.";
virtualbox = mkEnableOption "Profil pour l'utilisation de VirtualBox.";
xmonad = mkEnableOption "Profil pour activer le gestionnaire de fenêtres xmonad.";
znc = mkEnableOption "Profil pour activer le relais IRC ZNC.";
tincAddress = mkOption {
default = "";
example = "192.168.1.1";
description = "Adresse du noeud tinc local";
type = lib.types.string;
}; };
} tincExtraConfig = mkOption {
default = "";
# Conditional stuff example = ''
Mode = router
ConnecTo = bar
'';
description = "Configuration supplémentaire pour tinc";
type = lib.types.string;
};
};
#* Utilisé pour avoir des raccourcis de machine
r6d.computers = {
isHydra = mkEnableOption "Identification du nom de machine.";
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.";
isPedro = 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.";
};
};
###### 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 ## Définition des profils génériques
(mkIf pfl.isDesktop { (mkIf pfl.isDesktop {
r6d.config-generator = { r6d.config-generator = {
@@ -171,6 +154,7 @@ in
conception-assistee = true; conception-assistee = true;
docker = true; docker = true;
developpement = true; developpement = true;
developpement-elm = true;
developpement-haskell = true; developpement-haskell = true;
developpement-java = true; developpement-java = true;
developpement-rust = true; developpement-rust = true;
@@ -195,21 +179,27 @@ in
(mkIf (pfl.isPrunetwork && pfl.isWorkstation) { (mkIf (pfl.isPrunetwork && pfl.isWorkstation) {
r6d.config-generator = { r6d.config-generator = {
cartographie = true; cartographie = true;
conception-assistee = true;
docker = true;
developpement = true; developpement = true;
#developpement-elm = true;
developpement-haskell = true; developpement-haskell = true;
developpement-java = true; developpement-java = true;
#developpement-rust = true; developpement-rust = true;
#edition-musique = true; edition-musique = true;
edition-photo = true; edition-photo = true;
#edition-video = true; edition-video = true;
hydra-core = false; # DO NOT ENABLE ON WORKSTATION, YOU CAN CRASH YOUR SYSTEM
print = true; print = true;
virtualbox = true; #virtualbox = true;
#xmonad = true;
}; };
}) })
## Affectation des profils aux machines ## Affectation des profils aux machines
(mkIf comp.isHydra { (mkIf comp.isHydra {
networking.hostName = "hydra.prunetwork.fr"; # Define your hostname.
r6d.profiles = { r6d.profiles = {
isPrunetwork = true; isPrunetwork = true;
isServer = true; isServer = true;
@@ -219,14 +209,14 @@ in
docker = true; docker = true;
hydra-builder = true; hydra-builder = true;
hydra-core = true; hydra-core = true;
tincAddress = "192.168.12.8/24"; #tincAddress = "192.168.12.6/24";
tincExtraConfig = '' #tincExtraConfig = ''
ConnectTo = rollo_dubronetwork_fr # ConnectTo = rollo_dubronetwork_fr
ConnectTo = ocean_prunetwork_fr # '';
'';
}; };
}) })
(mkIf comp.isOcean { (mkIf comp.isOcean {
networking.hostName = "ocean.prunetwork.fr"; # Define your hostname.
r6d.profiles = { r6d.profiles = {
isPrunetwork = true; isPrunetwork = true;
isServer = true; isServer = true;
@@ -235,15 +225,14 @@ in
r6d.config-generator = { r6d.config-generator = {
docker = true; docker = true;
radicale = true; radicale = true;
nix-serve-client = true;
nix-serve-server = true;
tincAddress = "192.168.12.6/24"; tincAddress = "192.168.12.6/24";
tincExtraConfig = '' tincExtraConfig = ''
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
''; '';
}; };
}) })
(mkIf comp.isRadx { (mkIf comp.isRadx {
networking.hostName = "radx.prunetwork.fr"; # Define your hostname.
r6d.profiles = { r6d.profiles = {
isHome = true; isHome = true;
isPrunetwork = true; isPrunetwork = true;
@@ -251,17 +240,20 @@ in
}; };
r6d.config-generator = { r6d.config-generator = {
database_postgres = true;
elasticsearch = true; elasticsearch = true;
hydra-builder = true; hydra-builder = true;
hydra-core = true; #hydra-core = false; # DO NOT ENABLE ON WORKSTATION
kibana = true; kibana = true;
nix-serve-client = true;
nix-serve-server = true;
rabbitmq = true; rabbitmq = true;
tincAddress = "192.168.12.3/24"; tincAddress = "192.168.12.3/24";
tincExtraConfig = '' tincExtraConfig = ''
ConnectTo = monstre_dubronetwork_fr ConnectTo = monstre_dubronetwork_fr
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr
''; '';
}; };
}) })
@@ -280,7 +272,7 @@ in
ConnectTo = monstre_dubronetwork_fr ConnectTo = monstre_dubronetwork_fr
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr
''; '';
nix-serve-server = true; nix-serve-server = true;
}; };
}) })
@@ -300,7 +292,7 @@ in
tincExtraConfig = '' tincExtraConfig = ''
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr
''; '';
}; };
}) })
(mkIf comp.isNeoNomade{ (mkIf comp.isNeoNomade{
@@ -316,9 +308,11 @@ in
ConnectTo = monstre_dubronetwork_fr ConnectTo = monstre_dubronetwork_fr
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr
''; '';
}; };
}) })
# Dubro Vivo - St Malo
#tincAddress = "192.168.12.8/24";
(mkIf comp.isNomade{ (mkIf comp.isNomade{
r6d.profiles.isDubronetwork = true; r6d.profiles.isDubronetwork = true;
@@ -337,6 +331,7 @@ in
}; };
}) })
(mkIf comp.isPhenom { (mkIf comp.isPhenom {
networking.hostName = "phenom.dubronetwork.fr"; # Define your hostname.
r6d.profiles = { r6d.profiles = {
isDubronetwork = true; isDubronetwork = true;
isHome = true; isHome = true;
@@ -345,7 +340,8 @@ in
r6d.config-generator = { r6d.config-generator = {
jetbrains-licensed = true; jetbrains-licensed = true;
hydra-core = true; #hydra-core = true;
nix-serve-client = true;
nix-serve-server = true; nix-serve-server = true;
edition-photo = true; edition-photo = true;
tincAddress = "192.168.12.1/24"; tincAddress = "192.168.12.1/24";
@@ -353,7 +349,7 @@ in
ConnectTo = monstre_dubronetwork_fr ConnectTo = monstre_dubronetwork_fr
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr
''; '';
}; };
}) })
(mkIf comp.isRollo { (mkIf comp.isRollo {
@@ -367,12 +363,10 @@ in
fail2ban = true; fail2ban = true;
mailboxes = true; mailboxes = true;
murmur = true; murmur = true;
nix-serve-client = true;
nix-serve-server = true;
tincAddress = "192.168.12.5/24"; tincAddress = "192.168.12.5/24";
tincExtraConfig = '' tincExtraConfig = ''
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr
''; '';
znc = true; znc = true;
}; };
}) })

View File

@@ -49,6 +49,7 @@ in
fira-code # idem fira-mono + ligatures pour la programmation fira-code # idem fira-mono + ligatures pour la programmation
fira-mono # dérivée de fira en monospace fira-mono # dérivée de fira en monospace
hack-font # police monospace créée explicitement pour coder hack-font # police monospace créée explicitement pour coder
hasklig # police dérivée de source-code-pro mais avec des ligatures
]; ];
nixpkgs.config.packageOverrides = pkgs: { nixpkgs.config.packageOverrides = pkgs: {

View File

@@ -36,6 +36,7 @@ mkIf true {
exfat # Pour monter les FAT avec Fuse exfat # Pour monter les FAT avec Fuse
hubicfuse # montage hubic hubicfuse # montage hubic
ntfs3g # ntfs ntfs3g # ntfs
squashfsTools # squashfs
sshfsFuse # ssh sshfsFuse # ssh
## Gestion de FS ## Gestion de FS
@@ -43,6 +44,7 @@ mkIf true {
## Exploitation FS ## Exploitation FS
inotify-tools # être notifié lorsque le contenu d'un répertoire change 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 duff # outil de recherche de fichiers en doublons
rdfind # recherche de fichiers doublons pour remplacement par hard/soft link rdfind # recherche de fichiers doublons pour remplacement par hard/soft link

View File

@@ -25,6 +25,7 @@ environment.systemPackages = with pkgs; [
## Mail & Discussion (texte, audio) ## Mail & Discussion (texte, audio)
clawsMail clawsMail
hexchat hexchat
quassel
quasselClient quasselClient
mumble mumble
mutt mutt

View File

@@ -0,0 +1,26 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf cfg.developpement-elm {
# Paquets
environment.systemPackages = with pkgs; [
elmPackages.elm
];
# Services
# Réseau
networking.firewall = {
allowedTCPPorts = [
];
allowedUDPPorts = [
];
};
}

View File

@@ -19,8 +19,15 @@ mkIf cfg.developpement-haskell {
haskellPackages.stylish-haskell # qualité de code haskellPackages.stylish-haskell # qualité de code
haskellPackages.hindent haskellPackages.hindent
haskellPackages.hlint
haskellPackages.threadscope
# Application perso # Application perso
haskellPackages.hahp haskellPackages.hahp
# Application
haskellPackages.autoproc # ? procmail
haskellPackages.darcs # Gestionnaire de version éponyme
haskellPackages.turtle # genre shell-scripting
]; ];
} }

View File

@@ -14,5 +14,13 @@ mkIf cfg.edition-video {
# Vidéo # Vidéo
#cinelerra # editeur video #cinelerra # editeur video
pitivi # montage vidéo pitivi # montage vidéo
ffmpeg-full # assemblage de flux audio & video en ligne de commande
]; ];
nixpkgs.config.packageOverrides = pkgs: {
ffmpeg-full = pkgs.ffmpeg-full.override {
nonfreeLicensing = true;
nvenc = true;
};
};
} }

View File

@@ -343,8 +343,8 @@ globalkeys = awful.util.table.join(
awful.key({ modkey }, "F7", function () awful.util.spawn("claws-mail") end), awful.key({ modkey }, "F7", function () awful.util.spawn("claws-mail") end),
awful.key({ modkey }, "F12", function () awful.util.spawn("slock") end), awful.key({ modkey }, "F12", function () awful.util.spawn("slock") end),
awful.key({ modkey, "Shift" }, "F1", function () awful.util.spawn("claws-mail") end), awful.key({ modkey, "Shift" }, "F1", function () awful.util.spawn("claws-mail") end),
awful.key({ modkey, "Shift" }, "F3", function () awful.util.spawn("pcmanfm") end) awful.key({ modkey, "Shift" }, "F3", function () awful.util.spawn("pcmanfm") end),
-- awful.key({ modkey }, "F11", function () awful.util.spawn("/home/taeradan/bin/xrandr-auto") end), awful.key({ modkey }, "F11", function () awful.util.spawn("xrandr-auto") end)
-- awful.key({ modkey, "Shift" }, "F11", function () awful.util.spawn("/home/taeradan/bin/xrandr-left") end), -- awful.key({ modkey, "Shift" }, "F11", function () awful.util.spawn("/home/taeradan/bin/xrandr-left") end),
-- awful.key({ modkey, "Control" }, "F11", function () awful.util.spawn("/home/taeradan/bin/xrandr-right") end), -- awful.key({ modkey, "Control" }, "F11", function () awful.util.spawn("/home/taeradan/bin/xrandr-right") end),
@@ -564,6 +564,6 @@ client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_n
-- }}} -- }}}
-- Au démarrage -- Au démarrage
-- awful.util.spawn_with_shell("/home/taeradan/bin/xrandr-auto") awful.util.spawn_with_shell("xrandr-auto || true")
-- awful.util.spawn_with_shell("gnome-sound-applet") -- awful.util.spawn_with_shell("gnome-sound-applet")
-- awful.util.spawn_with_shell("nm-applet") -- awful.util.spawn_with_shell("nm-applet")

View File

@@ -8,6 +8,7 @@
status = auto status = auto
[alias] [alias]
a = add -p a = add -p
br = for-each-ref --sort=committerdate refs/heads/ --format='%(committerdate:short)\t%(authorname)\t%(refname:short)'
ci = commit ci = commit
co = checkout co = checkout
ff = pull --ff-only ff = pull --ff-only

View File

@@ -16,7 +16,8 @@ in
#./network-ipv6.nix #./network-ipv6.nix
./sudo.nix ./sudo.nix
./service-haveged.nix ./service-haveged.nix
./service-monitoring.nix ./service-monitoring-munin.nix
./service-monitoring-smokeping.nix
./service-ssh.nix ./service-ssh.nix
./udev.nix ./udev.nix
@@ -26,6 +27,7 @@ in
./app-cao.nix # de conception assisté par ordinateur & modélisation ./app-cao.nix # de conception assisté par ordinateur & modélisation
./app-cartographie.nix # manipuler les données géographiques & cartes ./app-cartographie.nix # manipuler les données géographiques & cartes
./app-developpement.nix # développer des programmes/scripts ./app-developpement.nix # développer des programmes/scripts
./app-developpement-elm.nix # développer en elm
./app-developpement-haskell.nix # développer en haskell ./app-developpement-haskell.nix # développer en haskell
./app-developpement-java.nix # développer en java ./app-developpement-java.nix # développer en java
./app-developpement-jetbrains.nix # outils jetbrains ./app-developpement-jetbrains.nix # outils jetbrains

View File

@@ -21,7 +21,10 @@ mkIf true {
services.munin-node = { services.munin-node = {
enable = true; enable = true;
}; };
systemd.services.munin-node.serviceConfig.TimeoutStartSec = "3min"; systemd.services.munin-node = {
path = [ pkgs.munin pkgs.lm_sensors ];
serviceConfig.TimeoutStartSec = "1min";
};
## Munin server -- generate /var/www/munin ## Munin server -- generate /var/www/munin
services.munin-cron = { services.munin-cron = {

View File

@@ -0,0 +1,194 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf true {
# Paquets
environment.systemPackages = with pkgs; [
bind
];
security.setuidPrograms = [ "fping" ];
# Services
services.smokeping = {
enable = true;
probeConfig = ''
+ FPing
#binary = ${pkgs.fping}/bin/fping
binary = ${config.security.wrapperDir}/fping
+DNS
#binary = ${pkgs.bind}/bin/dig
binary = /run/current-system/sw/bin/dig
forks = 5
offset = 50%
step = 300
timeout = 15
'';
targetConfig = ''
probe = FPing
menu = Top
title = Suivi de la latence reseau
remark = Monitoring de la latence reseau. \
Here you will learn all about the latency of our network.
+ Local
probe = FPing
menu = Local
title = Local Network
++ LocalMachine
menu = Local Machine
title = This host
host = localhost
+ Grudu_Tinc
probe = FPing
title = Grudu_Tinc
menu = Grudu.net - Tinc
++ Hydra
menu = hydra.grudu.net
title = hydra.grudu.net
host = hydra.grudu.net
++ Monstre
menu = monstre.grudu.net
title = monstre.grudu.net
host = monstre.grudu.net
++ Rollo
menu = rollo.grudu.net
title = rollo.grudu.net
host = rollo.grudu.net
++ Ocean
menu = ocean.grudu.net
title = ocean.grudu.net
host = ocean.grudu.net
++ MultiHost
menu = Multihost
title = Ensemble de mesures de latence
host = /Grudu_Tinc/Monstre /Grudu_Tinc/Rollo /Grudu_Tinc/Ocean /Grudu_Tinc/Hydra
+ Grudu_DNS
title = Grudu_DNS
menu = Grudu.net - DNS
probe = DNS
pings = 5
++ Ocean
title = ocean
menu = serveur ocean
server = ocean.prunetwork.fr
+++ ocean
host = ocean.grudu.net
lookup = ocean.grudu.net
+++ rollo
host = rollo.grudu.net
lookup = rollo.grudu.net
++ Rollo
title = rollo
menu = serveur rollo
server = rollo.dubronetwork.fr
+++ ocean
host = ocean.grudu.net
lookup = ocean.grudu.net
+++ rollo
host = rollo.grudu.net
lookup = rollo.grudu.net
++ MultiHost
menu = Multihost
title = Ensemble de mesures DNS
host = /Grudu_DNS/Ocean/ocean /Grudu_DNS/Ocean/rollo /Grudu_DNS/Rollo/ocean /Grudu_DNS/Rollo/rollo
+ France
probe = FPing
title = France
menu = Operateur francais
++ Atos
menu = Atos
title = www.atos.fr
host = www.atos.fr
++ Axialys
menu = Axialys
title = www.axialys.fr
host = www.axialys.fr
++ Azurtel
menu = azurtel
title = www.azurtel.fr
host = www.azurtel.fr
++ Bouygues-Telecom
menu = Bouygues-Telecom
title = www.bouygues-telecom.fr
host = www.bouygues-telecom.fr
++ Colt
menu = Colt
title = www.colt.fr
host = www.colt.fr
++ Completel
menu = completel
title = www.completel.fr
host = www.completel.fr
++ Free
menu = Free
title = www.free.fr
host = www.free.fr
++ Kosmos
menu = Kosmos
title = www.kosmos.fr
host = www.kosmos.fr
++ Orange
menu = Orange
title = www.orange.fr
host = www.orange.fr
++ Renater
menu = Renater
title = www.renater.fr
host = www.renater.fr
++ SFR
menu = SFR
title = www.sfr.fr
host = www.sfr.fr
++ MultiHost
menu = Multihost
title = Ensemble de mesures DNS
host = /France/Atos /France/Axialys /France/Azurtel \
/France/Bouygues-Telecom \
/France/Completel \
/France/Free \
/France/Kosmos \
/France/Orange \
/France/Renater \
/France/SFR
# /France/Colt
'';
};
# Réseau
networking.firewall = {
allowedTCPPorts = [
#8081 # accès depuis localhost uniquement ou à travers un proxy nginx
];
allowedUDPPorts = [
];
};
}

View File

@@ -13,6 +13,7 @@ mkIf profiles.isDesktop {
hardware.pulseaudio = { hardware.pulseaudio = {
enable = true; enable = true;
support32Bit = true; support32Bit = true;
daemon.config = { flat-volumes = "no"; };
}; };
environment.etc."pulse/daemon.conf".text = "flat-volumes = no"; #environment.etc."pulse/daemon.conf".text = "flat-volumes = no";
} }

View File

@@ -7,7 +7,7 @@ let
profiles = config.r6d.profiles; profiles = config.r6d.profiles;
in in
{ mkIf false {
# Définition du IO Scheduler pour les SSD # Définition du IO Scheduler pour les SSD
services.udev.extraRules = '' services.udev.extraRules = ''
# set deadline scheduler for non-rotating disks # set deadline scheduler for non-rotating disks

View File

@@ -12,6 +12,7 @@ vim_configurable.customize {
# Here you can place all your vim plugins # Here you can place all your vim plugins
# They are installed managed by `vam` (a vim plugin manager) # They are installed managed by `vam` (a vim plugin manager)
#"vim-addon-nix" #"vim-addon-nix"
"elm-vim"
"vim-nix" "vim-nix"
"wombat256-vim" "wombat256-vim"
]; } ]; }