Compare commits

...

48 Commits

Author SHA1 Message Date
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
11 changed files with 311 additions and 9 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

View File

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

View File

@@ -4,8 +4,8 @@
imports = [
];
services.locate= {
enable = true;
services.locate = {
enable = config.r6d.config-generator.locate;
interval = "hourly";
};
}

View File

@@ -0,0 +1,9 @@
{ config, pkgs, ... }:
{
nix = pkgs.lib.mkIf config.r6d.config-generator.nix-serve-client {
# Cache http pour le store
requireSignedBinaryCaches = false;
binaryCaches = [ "http://192.168.10.169:5000" ];
};
}

View File

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

View File

@@ -0,0 +1,12 @@
{ config, pkgs, ... }:
{
# Gestion du swap
# https://en.wikipedia.org/wiki/Swappiness
boot.kernel.sysctl = pkgs.lib.mkIf config.r6d.config-generator.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;
};
}

View File

@@ -2,8 +2,17 @@
{
imports = [
./tools.nix
./environment.nix
./localisation.nix
./networking.nix
./services.nix
# inclusion conditionnelle
./config-generator.nix
./activation-manuelle/auto-upgrade.nix
./activation-manuelle/locate.nix
./activation-manuelle/nix-serve.nix
./activation-manuelle/nix-serve-client.nix
./activation-manuelle/swap.nix
];
}

153
config-generator.nix Normal file
View File

@@ -0,0 +1,153 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkEnableOption mkIf mkMerge mkOption singleton types;
#inherit (pkgs) bird;
cfg = config.r6d.config-generator;
# configFile = pkgs.writeText "bird.conf" ''
# ${cfg.config}
#'';
in
{
imports = [
];
###### interface
options = {
r6d.config-generator = {
enable = mkEnableOption "Generation de la configuration d'une machine";
auto-upgrade = mkOption {
type = types.bool;
default = true;
description = ''
Profil pour activer les mises à jour automatiques.
'';
};
docker = mkOption {
type = types.bool;
default = false;
description = ''
Profil pour l'utilisation de Docker.
'';
};
jeux = mkOption {
type = types.bool;
default = false;
description = ''
Profil pour les jeux vidéos.
'';
};
laptop = mkOption {
type = types.bool;
default = false;
description = ''
Profil pour les outils spécifiques aux ordinateurs portables..
'';
};
locate = mkOption {
type = types.bool;
default = true;
description = ''
Profil pour activer la fonction locate.
'';
};
nix-serve-client = mkOption {
type = types.bool;
default = false;
description = ''
Profil pour que la machine soit un serveur de cache nix.
'';
};
nix-serve-server = mkOption {
type = types.bool;
default = false;
description = ''
Profil pour que la machine soit un serveur de cache nix.
'';
};
swap = mkOption {
type = types.bool;
default = false;
description = ''
Profil pour que le swap soit activé.
'';
};
virtualbox = mkOption {
type = types.bool;
default = false;
description = ''
Profil pour l'utilisation de VirtualBox.
'';
};
};
};
###### 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.
{
#environment.systemPackages = [ ... ];
r6d.config-generator.enable = true;
}
# Conditional stuff.
## Affectation des profils aux machines
(mkIf (config.networking.hostName == "radx.prunetwork.fr") {
r6d.config-generator = {
docker = true;
jeux = true;
nix-serve-server = true;
swap = true;
};
})
(mkIf (config.networking.hostName == "latitude.dubronetwork.fr") {
r6d.config-generator = {
docker = true;
jeux = true;
laptop = true;
nix-serve-client = true;
};
})
(mkIf (config.networking.hostName == "monstre.dubronetwork.fr") {
r6d.config-generator = {
nix-serve-server = true;
};
})
(mkIf (config.networking.hostName == "neo-nomade.dubronetwork.fr") {
r6d.config-generator = {
laptop = true;
nix-serve-client = true;
};
})
(mkIf (config.networking.hostName == "phenom.dubronetwork.fr") {
r6d.config-generator = {
docker = true;
jeux = true;
nix-serve-client = true;
nix-serve-server = true;
virtualbox = true;
};
})
## Contenu des Profils
# -> voir les sources des dépots base & desktop
];
}

View File

@@ -1,25 +1,38 @@
{ 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
git gitAndTools.tig
exfat # Pour monter les FAT avec Fuse
git gitAndTools.gitSVN gitAndTools.tig
gnumake
gnupg
gpm # prise en charge de la souris en console
htop
ncdu
nmap
mtr
p7zip
parted
pciutils
python34Packages.glances
pwgen
tmux
tree
usbutils
(import ./vim.nix)
wget
which

View File

@@ -1,18 +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
## 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" = 3600; # 1 heure
"net.ipv6.conf.all.temp_valid_lft" = 86400; # 1 jour
"net.ipv6.conf.all.temp_prefered_lft" = 1800; # 30 min
"net.ipv6.conf.all.temp_valid_lft" = 3600; # 1 heure
"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" = 86400; # 1 jour
"net.ipv6.conf.default.temp_valid_lft" = 3600; # 1 heure
"net.ipv6.conf.default.use_tempaddr" = 2; # activé
};
}

31
services.nix Normal file
View File

@@ -0,0 +1,31 @@
{ 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;
};
# Enable CUPS to print documents.
services.printing = {
enable = true;
drivers = [ pkgs.samsung-unified-linux-driver ];
};
# Monitoring
## Noeud de supervision munin = pas de stockage des données locales
services.munin-node = {
enable = true;
};
}