Compare commits
15 Commits
2017-01-29
...
93254f45c0
| Author | SHA1 | Date | |
|---|---|---|---|
| 93254f45c0 | |||
| c1ce935adb | |||
| e68cbcd8b9 | |||
| ac39a52fd7 | |||
| 3dc8184bca | |||
| 24ef44b100 | |||
| 9e9ea00cd2 | |||
|
|
493249ebd3 | ||
| e0a468bfeb | |||
| c4013be348 | |||
| 6cdd621db2 | |||
| a5bfdbcd3d | |||
| 5b954581db | |||
| ca11b46674 | |||
| aad2931967 |
184
README.md
184
README.md
@@ -1,18 +1,45 @@
|
|||||||
# nixos-template-base
|
# nixos-template-base
|
||||||
|
|
||||||
Version de nixos supportée : NixOs 16.09
|
Versions de NixOS supportées :
|
||||||
|
* 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.
|
||||||
|
|
||||||
# Lien pour install sur machine distante
|
# Notes de mise-à-jour
|
||||||
|
## pour le passage de 16.09 à unstable
|
||||||
|
|
||||||
* https://nixos.org/wiki/How_to_install_NixOS_from_Linux#Installing_through_a_chroot
|
* mettre à jour tous les dépôts
|
||||||
* https://github.com/NixOS/nixpkgs/issues/13305
|
* changer la branche de base vers `nixos-unstable`
|
||||||
|
* 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```
|
||||||
@@ -41,3 +68,150 @@ 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
|
||||||
|
~~~
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,11 @@ 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.isPrunetwork "https://cache.nixos.org/")
|
(mkIf profiles.isPrunetwork "https://cache.nixos.org/")
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -9,114 +9,114 @@ 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 = "";
|
#* Utilisé dans les fichiers .nix
|
||||||
example = ''
|
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
|
Mode = router
|
||||||
ConnecTo = bar
|
ConnecTo = bar
|
||||||
'';
|
'';
|
||||||
description = "Configuration supplémentaire pour tinc";
|
description = "Configuration supplémentaire pour tinc";
|
||||||
type = lib.types.string;
|
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.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
#* 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
|
###### implementation
|
||||||
# https://nixos.org/releases/nixos/14.12-small/nixos-14.12.374.61adf9e/manual/sec-writing-modules.html
|
# 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
|
# https://nixos.org/wiki/NixOS:extend_NixOS
|
||||||
config = mkMerge
|
config = mkMerge
|
||||||
[ # Unconditional stuff.
|
[ # Unconditional stuff.
|
||||||
{
|
{
|
||||||
#r6d.config-generator.enable = true;
|
r6d.config-generator.enable = true;
|
||||||
# r6d.computers = {
|
r6d.computers = {
|
||||||
# isHydra = host == "hydra.prunetwork.fr";
|
isHydra = host == "hydra.prunetwork.fr";
|
||||||
# isLatitude = host == "latitude.dubronetwork.fr";
|
isLatitude = host == "latitude.dubronetwork.fr";
|
||||||
# isMonstre = host == "monstre.dubronetwork.fr";
|
isMonstre = host == "monstre.dubronetwork.fr";
|
||||||
# isNeoNomade = host == "neo-nomade.dubronetwork.fr";
|
isNeoNomade = host == "neo-nomade.dubronetwork.fr";
|
||||||
# isNomade = host == "nomade.dubronetwork.fr";
|
isNomade = host == "nomade.dubronetwork.fr";
|
||||||
# isOcean = host == "ocean.prunetwork.fr";
|
isOcean = host == "ocean.prunetwork.fr";
|
||||||
# isPedro = host == "pedro.dubronetwork.fr";
|
isPedro = host == "pedro.dubronetwork.fr";
|
||||||
# isPhenom = host == "phenom.dubronetwork.fr";
|
isPhenom = host == "phenom.dubronetwork.fr";
|
||||||
# isRadx = host == "radx.prunetwork.fr";
|
isRadx = host == "radx.prunetwork.fr";
|
||||||
# isRollo = host == "rollo.dubronetwork.fr";
|
isRollo = host == "rollo.dubronetwork.fr";
|
||||||
# };
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
# Conditional stuff
|
# Conditional stuff
|
||||||
@@ -219,10 +219,11 @@ in
|
|||||||
docker = true;
|
docker = true;
|
||||||
hydra-builder = true;
|
hydra-builder = true;
|
||||||
hydra-core = true;
|
hydra-core = true;
|
||||||
#tincAddress = "192.168.12.6/24";
|
tincAddress = "192.168.12.8/24";
|
||||||
#tincExtraConfig = ''
|
tincExtraConfig = ''
|
||||||
# ConnectTo = rollo_dubronetwork_fr
|
ConnectTo = rollo_dubronetwork_fr
|
||||||
# '';
|
ConnectTo = ocean_prunetwork_fr
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
(mkIf comp.isOcean {
|
(mkIf comp.isOcean {
|
||||||
@@ -234,10 +235,12 @@ 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 {
|
||||||
@@ -258,7 +261,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
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -277,7 +280,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;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
@@ -297,7 +300,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{
|
||||||
@@ -313,7 +316,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.isNomade{
|
(mkIf comp.isNomade{
|
||||||
@@ -334,7 +337,6 @@ 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;
|
||||||
@@ -343,7 +345,7 @@ in
|
|||||||
|
|
||||||
r6d.config-generator = {
|
r6d.config-generator = {
|
||||||
jetbrains-licensed = true;
|
jetbrains-licensed = true;
|
||||||
#hydra-core = true;
|
hydra-core = 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";
|
||||||
@@ -351,7 +353,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 {
|
||||||
@@ -365,10 +367,12 @@ 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;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ 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
|
||||||
@@ -44,7 +43,6 @@ 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
|
||||||
|
|
||||||
|
|||||||
@@ -22,10 +22,5 @@ mkIf cfg.developpement-haskell {
|
|||||||
|
|
||||||
# Application perso
|
# Application perso
|
||||||
haskellPackages.hahp
|
haskellPackages.hahp
|
||||||
|
|
||||||
# Application
|
|
||||||
haskellPackages.autoproc # ? procmail
|
|
||||||
haskellPackages.darcs # Gestionnaire de version éponyme
|
|
||||||
haskellPackages.turtle # genre shell-scripting
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ in
|
|||||||
#./network-ipv6.nix
|
#./network-ipv6.nix
|
||||||
./sudo.nix
|
./sudo.nix
|
||||||
./service-haveged.nix
|
./service-haveged.nix
|
||||||
./service-monitoring-munin.nix
|
./service-monitoring.nix
|
||||||
./service-monitoring-smokeping.nix
|
|
||||||
./service-ssh.nix
|
./service-ssh.nix
|
||||||
./udev.nix
|
./udev.nix
|
||||||
|
|
||||||
|
|||||||
@@ -1,194 +0,0 @@
|
|||||||
{ 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 = [
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -21,10 +21,7 @@ mkIf true {
|
|||||||
services.munin-node = {
|
services.munin-node = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
systemd.services.munin-node = {
|
systemd.services.munin-node.serviceConfig.TimeoutStartSec = "3min";
|
||||||
path = [ pkgs.munin pkgs.lm_sensors ];
|
|
||||||
serviceConfig.TimeoutStartSec = "3min";
|
|
||||||
};
|
|
||||||
|
|
||||||
## Munin server -- generate /var/www/munin
|
## Munin server -- generate /var/www/munin
|
||||||
services.munin-cron = {
|
services.munin-cron = {
|
||||||
@@ -13,7 +13,6 @@ 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";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user