Compare commits

...

100 Commits

Author SHA1 Message Date
5fa77bda2e le résolveur DNS local est activé si la machine n'est pas un serveur 2016-07-22 16:43:56 +02:00
363b2f56e4 ajout de variables pour le DNS 2016-07-22 16:34:02 +02:00
5380bb76b0 ajout du monitoring local (déplacement depuis server) 2016-07-22 16:16:25 +02:00
ef3778dd54 ajout de variable pour rabbitmq 2016-07-22 16:10:25 +02:00
b50aa1ad0e ajout option pour lancer un serveur postgres 2016-07-22 16:02:31 +02:00
326da0f7e8 ajout header + utilisation 2016-07-22 14:16:20 +02:00
c5b7c16946 xmonad est activé pour toutes les stations de travail dubronetwork 2016-07-22 13:48:22 +02:00
af15068c29 utilisation de blocs pour éviter de répeter le préfixe 2016-07-22 13:46:46 +02:00
d503b8f0f4 ajout de commentaires 2016-07-22 13:40:39 +02:00
7bd6eb37e3 fix: erreur sur la logique. oubli d'un ! 2016-07-22 13:40:13 +02:00
592e5664be ajout clef mbp 2016-07-22 03:13:45 +02:00
20e8e8beaa renforcement serveur SSH en forcant les algos récents (selon mozilla) 2016-07-21 23:38:59 +02:00
66252cb498 renforcement de la sécurité pour les clients SSH 2016-07-21 23:16:27 +02:00
906ae9b7d1 ajout de python 2016-07-21 23:00:57 +02:00
2195033ee5 ajout de variable pour l'impression 2016-07-21 22:25:21 +02:00
becd37ba28 ajustment config nix serve client 2016-07-21 22:21:52 +02:00
f55ae85a66 ajout de groupes 2016-07-21 22:12:00 +02:00
cd458f24a7 création automatique de l'utilisateur selon la machine 2016-07-21 21:58:17 +02:00
86c46a97de désactivation du client nix-serve sur les serveurs prunetwork 2016-07-21 21:47:51 +02:00
b2619291a7 ajout readme avec 2 liens 2016-07-21 15:33:36 +02:00
5350372774 ajout de profil minimaliste pour ocean 2016-07-21 12:54:11 +02:00
Yves Dubromelle
3d1a7d2161 timeout à 5 secondes pour la connexion à un cache 2016-07-21 00:43:15 +02:00
Yves Dubromelle
111f33ff3d profil pour xmonad, et activation pour latitude 2016-07-21 00:02:33 +02:00
28f65522ae ajout variable pour ajouter variable d'environnement awesome 2016-07-18 12:14:00 +02:00
Yves Dubromelle
b7f05e47ac prise en compte de nomade par le générateur 2016-07-16 20:42:30 +02:00
Yves Dubromelle
350b62aef2 formattage 2016-07-16 20:41:00 +02:00
Yves Dubromelle
f6b939ffa9 ajout de politique d'énergie pour laptop 2016-07-15 11:59:39 +02:00
Yves Dubromelle
aa48575f58 déplacement de l'activation de nixos server vers phenom 2016-07-15 11:37:52 +02:00
a920200904 ajout machine xray 2016-07-13 23:19:04 +02:00
9cce1410a0 ajout d'un lien vers des raccourcis utiles pour git 2016-07-11 15:45:26 +02:00
9499034120 ajout du cache nixos normal.
* la définition d'un server de cache supprimait cache.nixos.org de la liste

  Pour le voir nixos-option nix.binaryCaches
2016-07-11 12:44:27 +02:00
2c715f9e14 monstre n'utilise plus phenom comme cache 2016-07-11 12:29:53 +02:00
cd18fb2792 création de variable nix pour identifier les machines 2016-07-11 12:29:30 +02:00
522131a517 ajout de monstre comme serveur de cache 2016-07-11 12:05:22 +02:00
cfc55fa479 nsp 2016-07-11 11:54:29 +02:00
81ad043adb activation de fail2ban sur les serveur dubronetwork & prunetwork 2016-07-11 11:50:20 +02:00
a475a88ac4 ajout de fail2ban 2016-07-11 11:50:06 +02:00
30c9bd1b71 le client nix-serve change de serveur selon le domaine de la machine 2016-07-10 21:23:30 +02:00
b95c4509aa renommage fichier 2016-07-10 20:34:56 +02:00
e3d982a1fd réorganisation du fichier 2016-07-10 20:33:30 +02:00
021f6499f9 ajout de profils + utilisation sur les machines gérées 2016-07-10 20:19:27 +02:00
1416a12d22 activation de virtualbox sur radx 2016-07-10 17:02:31 +02:00
c9d1f4e67c augmentation de la durée de validité des @IP
* cela signifie que les connexions TCP longues seront coupées après plus
  longtemps
2016-07-10 16:09:05 +02:00
2bb9511c1f ajout de commentaires à la liste d'applications 2016-07-10 16:08:44 +02:00
b4a72c5510 indentation 2016-07-10 16:08:35 +02:00
253403de89 déplacement des inclusions manuelles 2016-07-10 15:55:43 +02:00
2fa21f7f4d activation du client sur les machines + ajout monstre 2016-07-09 21:44:49 +02:00
0bbddfbfa0 ajout du flag pour le client nix-serve 2016-07-09 21:42:02 +02:00
85ee98585b Merge remote-tracking branch 'origin/master' 2016-07-09 21:35:11 +02:00
61d0c565ea Merge branch 'generator' 2016-07-09 21:27:50 +02:00
0a8c503032 les services "activation manuelle" sont gérés par config-generator 2016-07-09 21:26:20 +02:00
3d1feebee0 ajout de machines (latitude, neo-nomade) 2016-07-09 21:25:59 +02:00
d03f8cbfc2 ajustement de la configuration 2016-07-09 21:14:25 +02:00
b277551d6a moulinette de configuration par flags de fonctionalité 2016-07-09 21:12:20 +02:00
Yves Dubromelle
87a0a9d3de options pour utiliser le cache nix de phenom 2016-07-06 16:08:32 +02:00
Yves Dubromelle
aae5d9a4cc serveur de cache nix 2016-07-04 10:56:33 +02:00
d4417b922a les commandes de push envoient également les tags 2016-06-28 20:55:28 +02:00
c4a3515aa0 ajout de commande pour produire facilement des tags 2016-06-28 20:52:05 +02:00
8d464837ec diminution de la durée de validité des IPv6 temporaires 2016-06-14 17:56:48 +02:00
e486a82be2 commentaire 2016-06-13 18:28:30 +02:00
eeae177744 séparation de push & submodules-push 2016-06-13 16:27:53 +02:00
22bd42f61f déplacement de munin-node vers services 2016-06-13 16:26:01 +02:00
092b4a8b44 ajout de cible pour pusher tous les sousmodules & dépot courant 2016-06-13 16:14:28 +02:00
5c0c2fa2ec ajout de cible pour vérifier et corriger le store 2016-06-13 16:11:36 +02:00
d71f1b7f57 ajout d'un générateur de nombres aléatoires pour ++ l'entropie du système 2016-06-13 15:12:58 +02:00
cc1d6f5859 la prise en charge de la souris en console est migrée de desktop à base 2016-06-13 00:56:08 +02:00
Yves Dubromelle
2cd5f1c03e Merge remote-tracking branch 'origin/master' 2016-06-09 16:35:59 +02:00
Yves Dubromelle
48f45f76aa ajout de cible full-auto 2016-06-09 16:35:37 +02:00
Yves Dubromelle
a228a0e52c autorisation des paquets non libres 2016-06-09 16:31:18 +02:00
Yves Dubromelle
2cf7a7a7ee ajout du numéro de version de NixOS et du nombre de jobs // 2016-06-09 16:26:01 +02:00
Yves Dubromelle
54382e757c tools -> environment 2016-06-09 16:25:43 +02:00
Yves Dubromelle
a91f81a650 activation de CUPS et des pilotes samsung 2016-06-09 16:19:24 +02:00
Yves Dubromelle
c5eeaae443 modification du make pour garder la branche master à jour 2016-06-09 16:17:54 +02:00
Yves Dubromelle
71807d038a ajout d'une expression pour les services 2016-06-09 16:11:04 +02:00
Yves Dubromelle
35b2dede57 ajout commentaire 2016-06-09 16:05:59 +02:00
2c4daa1766 ajout domaines recherchés par le DNS 2016-06-03 14:52:05 +02:00
6ae67f8e09 ajout de la mise à jour automatique du système en manuel 2016-06-03 14:38:58 +02:00
d2b4afd9d4 activation d'un noeud munin local (acessible uniquement par localhost) 2016-05-31 21:09:06 +02:00
Yves Dubromelle
c93cd28bb1 update -> upgrade 2016-05-23 19:04:15 +02:00
Yves Dubromelle
f5f92fcb07 make rule that cleans everything 2016-05-23 19:01:56 +02:00
Yves Dubromelle
4857ea1b56 règle pour optimiser le store 2016-05-23 17:09:28 +02:00
f7ac4acd54 le ménage aggressif efface plius ancien que 1 jour 2016-05-23 16:50:44 +02:00
dccec5d306 Revert "ajustement de la durée de rétention à 0 pour le ménage aggressif"
This reverts commit 58342eef57.
2016-05-23 16:50:26 +02:00
58342eef57 ajustement de la durée de rétention à 0 pour le ménage aggressif 2016-05-23 16:48:47 +02:00
Yves Dubromelle
521d362779 cible pour faire du ménage dans les logs 2016-05-23 10:04:30 +02:00
e9cf5d5472 cible de ménage aggressif 2016-05-17 20:09:04 +02:00
691b961d64 ajout configurationmanuelle du swap 2016-05-16 21:57:47 +02:00
76e075cab4 ajout de la directive pour activer svn avec git 2016-05-16 21:19:28 +02:00
Yves Dubromelle
51a3a75d74 activation exfat 2016-05-16 15:34:12 +02:00
Yves Dubromelle
6a53257409 ajout cible de MaJ sous-modules 2016-05-16 14:14:09 +02:00
78cb2f7976 ajout d'une cible clean qui "collect -d 15jours" 2016-05-14 20:59:13 +02:00
Yves Dubromelle
ddc89e6a6e ajout d'un make 2016-05-12 00:42:30 +02:00
Yves Dubromelle
f8890aa003 ajout de lspci et lsusb 2016-05-10 22:10:41 +02:00
ec72d97c8f les expressions activées "à la main" sont séparées dans un dossier 2016-05-09 22:00:26 +02:00
d7844c641c ajout du service locate (non activé dans base) 2016-05-08 18:20:15 +02:00
f0c5ce1e8c ajout d'alias git 2016-05-08 17:51:39 +02:00
542105d6e3 lien vers article "Privacy Extension IPv6 Addresses" 2016-05-06 17:25:28 +02:00
606a6738c9 activation des adresses ipv6 temporaires
-> il y a donc plusieurs @IPv6 affectées à une machine.
Une adresse qui ne devrait pas changer entre les reboot +
une adresse qui change régulièrement (préférence 1h, valide 1jour)
2016-05-06 17:20:00 +02:00
Yves Dubromelle
2227277cbb 'which', outil utile 2016-05-04 21:51:52 +02:00
Yves Dubromelle
07669adcf3 ligne rouge moche à 80c -> ligne à fond gris à 80 et à partir de 120 2016-05-04 14:56:47 +02:00
20 changed files with 639 additions and 45 deletions

48
Makefile Normal file
View File

@@ -0,0 +1,48 @@
all: rebuild-switch
date
clean:
nix-collect-garbage -d --delete-older-than 15d
clean-aggressive:
nix-collect-garbage -d --delete-older-than 1d
clean-total:
nix-collect-garbage -d
clean-log:
journalctl --vacuum-size=1G
full-auto: submodules-update upgrade clean optimise
optimise:
nix-store --optimise
push: submodules-push
git push --all
git push --tags
rebuild-switch:
nixos-rebuild switch
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

5
README Normal file
View File

@@ -0,0 +1,5 @@
# Lien pour install sur machine distante
* https://nixos.org/wiki/How_to_install_NixOS_from_Linux#Installing_through_a_chroot
* https://github.com/NixOS/nixpkgs/issues/13305

View File

@@ -0,0 +1,12 @@
{ config, pkgs, ... }:
with pkgs.lib;
let
cfg = config.r6d.config-generator;
in {
# Automatic update & automatic clean
system.autoUpgrade.enable = cfg.auto-upgrade;
nix.gc.automatic = cfg.auto-upgrade;
}

View File

@@ -0,0 +1,37 @@
{ config, pkgs, ... }:
with pkgs.lib;
let
cfg = config.r6d.config-generator;
in {
# Gestion de fail2ban
services = mkIf cfg.fail2ban {
fail2ban = {
enable = true;
jails = {
DEFAULT = ''
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8 pedro.dubronetwork.fr cube.dubronetwork.fr voyage.prunetwork.fr xray.prunetwork.fr 192.168.0.0/16 172.16.0.0/16
# 1 jour
# bantime = 86400
# 5 jours
bantime = 432000
maxretry = 3
#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = admins@dubronetwork.fr
'';
ssh-route = ''
filter = sshd
action = route[blocktype=blackhole]
maxretry = 3
'';
};
};
};
}

View File

@@ -0,0 +1,10 @@
{ config, pkgs, ... }:
with pkgs.lib;
let
cfg = config.r6d.config-generator;
in {
# Gestion spécifique pour PC portable
powerManagement.cpuFreqGovernor = mkIf cfg.laptop "powersave";
}

View File

@@ -0,0 +1,15 @@
{ config, pkgs, ... }:
with pkgs.lib;
let
cfg = config.r6d.config-generator;
in {
imports = [
];
services.locate = {
enable = cfg.locate;
interval = "hourly";
};
}

View File

@@ -0,0 +1,24 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge;
profiles = config.r6d.profiles;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
in {
nix = mkIf config.r6d.config-generator.nix-serve-client {
# Cache http pour le store
requireSignedBinaryCaches = false;
binaryCaches = [
("https://cache.nixos.org/")
(mkIf (profiles.isDubronetwork && (! computers.isMonstre)) "http://192.168.10.169:5000")
(mkIf profiles.isDubronetwork "http://192.168.10.252:5000")
(mkIf (profiles.isPrunetwork && !profiles.isServer) "http://192.168.1.20:5000")
];
extraOptions = ''
connect-timeout = 5
'';
};
}

View File

@@ -0,0 +1,12 @@
{ config, pkgs, ... }:
with pkgs.lib;
let
cfg = config.r6d.config-generator;
in {
# Cache http pour le store
services.nix-serve.enable = cfg.nix-serve-server;
networking.firewall.allowedTCPPorts = mkIf cfg.nix-serve-server [ 5000 ];
}

View File

@@ -0,0 +1,15 @@
{ 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
];
};
}

View File

@@ -0,0 +1,16 @@
{ config, pkgs, ... }:
with pkgs.lib;
let
cfg = config.r6d.config-generator;
in {
# Gestion du swap
# https://en.wikipedia.org/wiki/Swappiness
boot.kernel.sysctl = mkIf cfg.swap {
# le swap est activé (!= 0)
# le swap est utilisé lorsque (100 - x) % de la mémoire est déja allouée
"vm.swappiness" = 10;
};
}

File diff suppressed because one or more lines are too long

View File

@@ -2,7 +2,13 @@
{
imports = [
./tools.nix
./environment.nix
./localisation.nix
./monitoring.nix
./networking.nix
./services.nix
# inclusion conditionnelle
./config-generator.nix
];
}

233
config-generator.nix Normal file
View File

@@ -0,0 +1,233 @@
{ 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.";
database_postgres=mkEnableOption "Profil pour activer le SGBD PostgreSQL.";
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.";
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.";
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";
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;
nix-serve-server = true;
#rabbitmq = true;
};
})
(mkIf (!pfl.isServer) {
r6d.config-generator = {
dns_resolveur = true;
};
})
(mkIf pfl.isWorkstation {
r6d.profiles.isDesktop = true;
r6d.config-generator = {
docker = true;
};
})
## Profils liés à Dubronetwork
(mkIf pfl.isDubronetwork {
r6d.config-generator = {
auto-upgrade = true;
nix-serve-client = 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 = {
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 = {
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;
};
})
];
}

70
environment.nix Normal file
View File

@@ -0,0 +1,70 @@
{ 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 # 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
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
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
'';
}

View File

@@ -1,3 +1,4 @@
# http://www.git-attitude.fr/2014/09/15/30-options-git-qui-gagnent-a-etre-connues/
[color]
diff = auto
branch = auto
@@ -7,9 +8,17 @@
status = auto
[alias]
a = add -p
st = status
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]

27
monitoring.nix Normal file
View File

@@ -0,0 +1,27 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, ... }:
{
## Munin server -- generate /var/www/munin
services.munin-cron = {
enable = true;
hosts = ''
[${config.networking.hostName}]
address localhost
'';
extraGlobalConfig = ''
contact.email.command mail -s "Munin notification for ''${var:host}" hostmaster@prunetwork.fr
'';
};
networking.firewall.allowedTCPPorts = [
# TODO configurer les bon ports lors de l'ouverture du service
];
## Documentation
# * https://nixos.org/wiki/Create_and_debug_nix_packages
# * http://chriswarbo.net/essays/nixos/developing_on_nixos.html
}

29
networking.nix Normal file
View File

@@ -0,0 +1,29 @@
{ config, pkgs, ... }:
{
# Définition des domaines utilisés lorsque un identifiant non-FQDN est donné (ping, nslookup)
networking = {
search = [
"dubronetwork.fr"
"prunetwork.fr"
"teleragno.fr"
"teleragno.net"
];
dnsExtensionMechanism = true;
};
# Utilisation d'adresse IPv6 temporaire
## https://blog.linitx.com/control-privacy-addressing-ipv6-linux/
## http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/x1092.html
boot.kernel.sysctl = {
"net.ipv6.conf.all.temp_prefered_lft" = 1800; # 30 min
"net.ipv6.conf.all.temp_valid_lft" = 43200; # 12 heures
"net.ipv6.conf.all.use_tempaddr" = 2; # activé
"net.ipv6.conf.default.temp_prefered_lft" = 3600; # 1 heure
"net.ipv6.conf.default.temp_valid_lft" = 3600; # 1 heure
"net.ipv6.conf.default.use_tempaddr" = 2; # activé
};
}

38
services.nix Normal file
View File

@@ -0,0 +1,38 @@
{ config, pkgs, ... }:
{
# Sécurité & Acces distant
## Augmentation de l'entropie du système par un générateur de nombres aléatoires
## cat /proc/sys/kernel/random/entropy_avail
services.haveged = {
enable = true;
refill_threshold = 2048;
};
## OpenSSH daemon
services.openssh = {
enable = true;
# https://wiki.mozilla.org/Security/Guidelines/OpenSSH#Modern_.28OpenSSH_6.7.2B.29
extraConfig = ''
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
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
# LogLevel VERBOSE logs user's key fingerprint on login. Needed to have a clear audit track of which key was using to log in.
LogLevel VERBOSE
# Use kernel sandbox mechanisms where possible in unprivilegied processes
# Systrace on OpenBSD, Seccomp on Linux, seatbelt on MacOSX/Darwin, rlimit elsewhere.
UsePrivilegeSeparation sandbox
'';
};
# Monitoring
## Noeud de supervision munin = pas de stockage des données locales
services.munin-node = {
enable = true;
};
}

View File

@@ -1,42 +0,0 @@
{ config, pkgs, ... }:
{
# 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
git gitAndTools.tig
gnumake
gnupg
htop
ncdu
nmap
mtr
p7zip
parted
python34Packages.glances
pwgen
tmux
tree
(import ./vim.nix)
wget
];
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;
};
}

3
vimrc
View File

@@ -24,10 +24,11 @@ set shiftround "Round indent to nearest shiftwidth multiple
"""""" Réglages cosmétiques
set background=dark
set cc=80
set number
highlight ColorColumn ctermbg=8
"Détection de la profondeur des couleurs (8bits)
if &t_Co > 8
colorscheme wombat256mod
let &colorcolumn="80,".join(range(120,999),",")
highlight ColorColumn ctermbg=235 guibg=#2c2d27
endif