Compare commits

...

55 Commits

Author SHA1 Message Date
f1c02b0625 fix: erreur de nomage 2017-03-15 17:16:43 +01:00
0ffecb8804 option smokeping + activation pour serveurs 2017-03-15 17:16:20 +01:00
ac76e6e62b dev: ajout editeur atom 2017-03-13 23:55:47 +01:00
5a7ad25615 désactivation gitg 2017-03-13 23:55:34 +01:00
Yves Dubromelle
c3c7581a3e rollo: active virtualbox 2017-03-10 17:41:36 +01:00
e80018e273 radx: essai de faire une VM de build compatible hydra 2017-03-10 12:49:35 +01:00
b829e708a0 la machine hydra est serveur nix-serve 2017-03-10 12:37:04 +01:00
3297760d21 ajout systat pour les statistiques disque 2017-03-10 12:04:56 +01:00
b983832308 hydra-builder: suppression de la configuration utilisateur (spécifique machine) 2017-03-10 11:32:34 +01:00
db66626208 ocean est un hydra builder 2017-03-10 11:29:03 +01:00
Yves Dubromelle
14e9ddbc13 set JAVA_HOME 2017-03-09 23:32:55 +01:00
Yves Dubromelle
c96c981d20 retour à openjdk, problèmes avec zulu 2017-03-09 21:55:54 +01:00
4535ccf03c fix: oubli virgule 2017-03-06 09:51:07 +01:00
7bc21c0dc8 awesome: ajout 2nd script pour xrandr 2017-03-05 19:07:48 +01:00
Yves Dubromelle
3f74486951 nix-serve: latitude peut aussi être un client nix-serve 2017-03-05 15:33:31 +01:00
Yves Dubromelle
0dae9aef3c haskell: ajout ghc-mod 2017-03-05 15:14:25 +01:00
Yves Dubromelle
1a3e8f4528 tinc-hydra: ajout comme remote possible 2017-03-05 15:03:23 +01:00
Yves Dubromelle
b1d3ee4aae hydra: adresse tinc en .9 2017-03-05 14:48:59 +01:00
e2178821d8 haskell: extraction du prefixe commun 2017-03-04 17:20:03 +01:00
1e00db3864 haskell: commentaires 2017-03-04 17:17:19 +01:00
System administrator
3364f19ed7 xmonad: variable pour java et trayer 2017-03-04 13:41:42 +01:00
es006
c10d2c6d63 le script byobu va chercher la liste des sous modules 2017-03-04 12:15:57 +01:00
8dd973ede1 inutile 2017-03-03 21:36:45 +01:00
aeeea3a743 la clef du serveur hydra a changée 2017-03-03 16:00:51 +01:00
3b76bd00af Merge branch 'master' into nixos-unstable 2017-03-02 20:07:51 +01:00
e74a1825d9 backport from master 2017-03-02 19:48:11 +01:00
Yves Dubromelle
b47c6807d1 activation nix-serve pour les serveurs online 2017-03-02 18:56:05 +01:00
Yves Dubromelle
a4728792b2 les noms pour les machines dubro n'était pas dans config-generator 2017-03-02 18:51:14 +01:00
Yves Dubromelle
4c4c2fed3e fix: le nom de rollo n'était pas défini 2017-03-02 18:49:07 +01:00
93254f45c0 Mettre à jour 'README.md' 2017-03-02 17:27:05 +00:00
c1ce935adb Mettre à jour 'README.md' 2017-03-02 17:22:36 +00:00
e68cbcd8b9 Mettre à jour 'README.md' 2017-03-02 17:19:33 +00:00
ac39a52fd7 Mettre à jour 'README.md' 2017-03-02 17:16:43 +00:00
3dc8184bca formatage 2017-03-02 16:47:46 +01:00
24ef44b100 ajout notes pour installation machine chez online 2017-03-02 16:42:23 +01:00
9e9ea00cd2 Mettre à jour 'README.md' 2017-03-02 13:59:09 +00:00
464da39592 glances en python 3 refuse de compiler. Il reste celui en python2 2017-03-02 14:56:49 +01:00
963c818875 claws-mail: désactivation du plugin pour voir les mails en HTML
* plusieurs failles de sécurité
* option en commentaire pour l'activer quand même
2017-03-02 14:47:03 +01:00
Yves Dubromelle
2f99508331 ajout todo sur config-generator 2017-03-02 00:09:56 +01:00
Yves Dubromelle
b6a7f50ebd ajout de todo 2017-03-01 23:58:43 +01:00
Yves Dubromelle
2fdaf24fae déplacement de la config desktop vers les endroits quivontbien(c) dans public 2017-03-01 23:29:21 +01:00
Yves Dubromelle
c193d944d9 déplacement de la config xmonad vers public 2017-03-01 23:16:24 +01:00
Yves Dubromelle
7750d1a266 déplacement de la config du résolveur dns vers private + purge base 2017-03-01 23:01:09 +01:00
Yves Dubromelle
08195188b2 déplacement de nix-serve et fail2ban dans private 2017-03-01 22:52:34 +01:00
Yves Dubromelle
b12e1f9ae5 déplacement des users vers private 2017-03-01 22:30:51 +01:00
Yves Dubromelle
d0b3497ccb htop s'ouvre dans byobu 2017-03-01 21:59:42 +01:00
Yves Dubromelle
ba0d43670d la dernière série d'onglets byobu lance une commande 2017-03-01 21:59:09 +01:00
System administrator
493249ebd3 clef ssh taeradan de la VM capgemini 2017-02-27 16:28:55 +01:00
e0a468bfeb fix port 2017-02-19 18:27:35 +01:00
c4013be348 typo 2017-02-19 18:22:27 +01:00
6cdd621db2 erreur DNS pour grudu. utilisation @IPv4 2017-02-19 18:20:12 +01:00
a5bfdbcd3d activation nix-serve-client {ocean, rollo} 2017-02-19 18:13:12 +01:00
5b954581db activation nix-serve client entre les serveurs online 2017-02-19 18:11:29 +01:00
ca11b46674 activation serveur nix-serve sur machines en salle machine 2017-02-19 18:08:28 +01:00
aad2931967 tinc: ajout adresse réseau grudu pour hydra.pru 2017-01-27 23:41:04 +01:00
31 changed files with 286 additions and 405 deletions

184
README.md
View File

@@ -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
~~~

View File

@@ -10,8 +10,6 @@ in
{ {
imports = [ imports = [
# recettes # recettes
./base/base.nix
./desktop/desktop.nix
./public/public.nix ./public/public.nix
# moulinette de configuration # moulinette de configuration

View File

@@ -1 +0,0 @@
/etc/nixos/base/Makefile

View File

@@ -1,30 +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 cfg.nix-serve-client {
nix = {
# Cache http pour le store
requireSignedBinaryCaches = false;
binaryCaches = [
(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 && !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 = ''
connect-timeout = 5
'';
};
}

View File

@@ -1,31 +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 cfg.nix-serve-server {
# Cache http pour le store
# Services
services.nix-serve = {
enable = true;
};
# Réseau
networking.firewall = {
allowedTCPPorts = [
#5000 # ouvert sur tinc
];
allowedUDPPorts = [
];
extraCommands = ''
iptables -A INPUT -i tinc.grudunet -p tcp --dport 5000 -j ACCEPT
ip6tables -A INPUT -i tinc.grudunet -p tcp --dport 5000 -j ACCEPT
'';
};
}

View File

@@ -1,64 +0,0 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
ignoreip = "pedro.dubronetwork.fr cube.dubronetwork.fr voyage.prunetwork.fr xray.prunetwork.fr 192.168.0.0/16 172.16.0.0/16";
destemail = "admins@dubronetwork.fr";
in
mkIf cfg.fail2ban {
# Gestion de fail2ban
# Paquets
environment.systemPackages = with pkgs; [
mailutils
whois
];
# Services
services = {
fail2ban = {
enable = true;
jails = {
DEFAULT = ''
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8 ${ignoreip}
# 1 jour
# bantime = 86400
# 5 jours
bantime = 432000
maxretry = 3
destemail = ${destemail}
# https://github.com/Baughn/nixpkgs/blob/master/nixos/modules/services/security/fail2ban.nix
findtime = 600
maxretry = 3
backend = systemd
enabled = true
'';
ssh-route = ''
filter = sshd
action = route[blocktype=blackhole]
'';
# désactivation car souci de PATH avec les commandes mail ou sendmail. Nécessite un path motifiable
# ticket à ouvrir
#ssh-mail = ''
# filter = sshd
# action = sendmail[sendername=Fail2ban @${config.networking.hostName}]
#'';
};
};
};
# https://github.com/NixOS/nixpkgs/issues/8437
services.fail2ban.jails.ssh-iptables = "enabled = true";
}

File diff suppressed because one or more lines are too long

View File

@@ -1,20 +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
{
imports = [
./network-dns.nix
# inclusion conditionnelle
./activation-manuelle/service-fail2ban.nix
./activation-manuelle/nix-serve-client.nix
./activation-manuelle/nix-serve-server.nix
./activation-manuelle/users.nix
];
}

View File

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

View File

@@ -2,9 +2,9 @@
SESSION_NAME="Adminsys" SESSION_NAME="Adminsys"
PROJECT_DIR="/etc/nixos" PROJECT_DIR="/etc/nixos"
PROJECT_MODULES="base private server" PROJECT_MODULES=$(cd $PROJECT_DIR && git submodule --quiet foreach 'echo $path')
HEAD_ADDITIONNAL_TABS="git config" HEAD_ADDITIONNAL_TABS="git config"
TAIL_ADDITIONNAL_TABS="glances" TAIL_ADDITIONNAL_TABS="glances htop"
# création de la session # création de la session
byobu new-session -d -s ${SESSION_NAME} -n 'run' -c ${PROJECT_DIR}; byobu new-session -d -s ${SESSION_NAME} -n 'run' -c ${PROJECT_DIR};
@@ -23,10 +23,10 @@ do
byobu new-window -n ${i} -c ${PROJECT_DIR}/${i}; byobu new-window -n ${i} -c ${PROJECT_DIR}/${i};
done done
## onglets courants à la fin. Positionnés dans dossier projet ## onglets courants à la fin. Positionnés dans dossier projet. Lance la commande du même nom que l'onglet
for i in ${TAIL_ADDITIONNAL_TABS} for i in ${TAIL_ADDITIONNAL_TABS}
do do
byobu new-window -n ${i} -c ${PROJECT_DIR}; byobu new-window -n ${i} -c ${PROJECT_DIR} ${i};
done done
# affiche la session # affiche la session

View File

@@ -9,6 +9,7 @@ let
in in
{ {
# TODO: ménage
###### interface ###### interface
options = { options = {
@@ -63,6 +64,7 @@ in
rabbitmq = mkEnableOption "Profil pour activer le service de messagerie AMQP."; 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."; radicale = mkEnableOption "Profil pour activer le service d'hébergement de calendrier + tâches & contacts.";
scanner = mkEnableOption "Profil pour que les scanners soient utilisable."; scanner = mkEnableOption "Profil pour que les scanners soient utilisable.";
smokeping = mkEnableOption "Profil pour activer le monitoring réseau par smokeping.";
swap = mkEnableOption "Profil pour que le swap soit activé."; swap = mkEnableOption "Profil pour que le swap soit activé.";
virtualbox = mkEnableOption "Profil pour l'utilisation de VirtualBox."; virtualbox = mkEnableOption "Profil pour l'utilisation de VirtualBox.";
xmonad = mkEnableOption "Profil pour activer le gestionnaire de fenêtres xmonad."; xmonad = mkEnableOption "Profil pour activer le gestionnaire de fenêtres xmonad.";
@@ -122,6 +124,7 @@ in
#dns_resolveur = true; #dns_resolveur = true;
# inutile d'exposer la conf complète du serveur par le store tant qu'il n'y a pas de protection complémentaire - utilisation SSH ? # inutile d'exposer la conf complète du serveur par le store tant qu'il n'y a pas de protection complémentaire - utilisation SSH ?
#nix-serve-server = true; #nix-serve-server = true;
smokeping = true;
#rabbitmq = true; #rabbitmq = true;
}; };
@@ -173,6 +176,7 @@ in
docker = true; docker = true;
locate = true; locate = true;
fail2ban = true; fail2ban = true;
smokeping = true;
swap = true; swap = true;
}; };
}) })
@@ -209,10 +213,12 @@ in
docker = true; docker = true;
hydra-builder = true; hydra-builder = true;
hydra-core = true; hydra-core = true;
#tincAddress = "192.168.12.6/24"; nix-serve-server = true;
#tincExtraConfig = '' tincAddress = "192.168.12.9/24";
# ConnectTo = rollo_dubronetwork_fr tincExtraConfig = ''
# ''; ConnectTo = rollo_dubronetwork_fr
ConnectTo = ocean_prunetwork_fr
'';
}; };
}) })
(mkIf comp.isOcean { (mkIf comp.isOcean {
@@ -224,9 +230,13 @@ in
r6d.config-generator = { r6d.config-generator = {
docker = true; docker = true;
hydra-builder = 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 = hydra_prunetwork_fr
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
''; '';
}; };
@@ -242,7 +252,6 @@ in
r6d.config-generator = { r6d.config-generator = {
database_postgres = true; database_postgres = true;
elasticsearch = true; elasticsearch = true;
hydra-builder = true;
#hydra-core = false; # DO NOT ENABLE ON WORKSTATION #hydra-core = false; # DO NOT ENABLE ON WORKSTATION
kibana = true; kibana = true;
nix-serve-client = true; nix-serve-client = true;
@@ -252,12 +261,15 @@ in
tincExtraConfig = '' tincExtraConfig = ''
ConnectTo = monstre_dubronetwork_fr ConnectTo = monstre_dubronetwork_fr
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
ConnectTo = hydra_prunetwork_fr
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr
''; '';
virtualbox = true;
}; };
}) })
(mkIf comp.isLatitude { (mkIf comp.isLatitude {
networking.hostName = "latitude.dubronetwork.fr"; # Define your hostname.
r6d.profiles = { r6d.profiles = {
isDubronetwork = true; isDubronetwork = true;
isHome = true; isHome = true;
@@ -267,16 +279,19 @@ in
r6d.config-generator = { r6d.config-generator = {
jetbrains-licensed = true; jetbrains-licensed = true;
laptop = true; laptop = true;
nix-serve-client = true;
nix-serve-server = true;
tincAddress = "192.168.12.2/24"; tincAddress = "192.168.12.2/24";
tincExtraConfig = '' tincExtraConfig = ''
ConnectTo = monstre_dubronetwork_fr ConnectTo = monstre_dubronetwork_fr
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
ConnectTo = hydra_prunetwork_fr
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr
''; '';
nix-serve-server = true;
}; };
}) })
(mkIf comp.isMonstre { (mkIf comp.isMonstre {
networking.hostName = "monstre.dubronetwork.fr"; # Define your hostname.
r6d.profiles = { r6d.profiles = {
isDubronetwork = true; isDubronetwork = true;
isServer = true; isServer = true;
@@ -291,11 +306,13 @@ in
tincAddress = "192.168.12.4/24"; tincAddress = "192.168.12.4/24";
tincExtraConfig = '' tincExtraConfig = ''
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
ConnectTo = hydra_prunetwork_fr
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr
''; '';
}; };
}) })
(mkIf comp.isNeoNomade{ (mkIf comp.isNeoNomade{
networking.hostName = "neo-nomade.dubronetwork.fr"; # Define your hostname.
r6d.profiles = { r6d.profiles = {
isDubronetwork = true; isDubronetwork = true;
isHome = true; isHome = true;
@@ -307,6 +324,7 @@ in
tincExtraConfig = '' tincExtraConfig = ''
ConnectTo = monstre_dubronetwork_fr ConnectTo = monstre_dubronetwork_fr
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
ConnectTo = hydra_prunetwork_fr
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr
''; '';
}; };
@@ -314,6 +332,7 @@ in
# Dubro Vivo - St Malo # Dubro Vivo - St Malo
#tincAddress = "192.168.12.8/24"; #tincAddress = "192.168.12.8/24";
(mkIf comp.isNomade{ (mkIf comp.isNomade{
networking.hostName = "nomade.dubronetwork.fr"; # Define your hostname.
r6d.profiles.isDubronetwork = true; r6d.profiles.isDubronetwork = true;
r6d.config-generator = { r6d.config-generator = {
@@ -348,11 +367,13 @@ in
tincExtraConfig = '' tincExtraConfig = ''
ConnectTo = monstre_dubronetwork_fr ConnectTo = monstre_dubronetwork_fr
ConnectTo = rollo_dubronetwork_fr ConnectTo = rollo_dubronetwork_fr
ConnectTo = hydra_prunetwork_fr
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr
''; '';
}; };
}) })
(mkIf comp.isRollo { (mkIf comp.isRollo {
networking.hostName = "rollo.dubronetwork.fr"; # Define your hostname.
r6d.profiles = { r6d.profiles = {
isDubronetwork = true; isDubronetwork = true;
isServer = true; isServer = true;
@@ -363,10 +384,14 @@ 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 = hydra_prunetwork_fr
ConnectTo = ocean_prunetwork_fr ConnectTo = ocean_prunetwork_fr
''; '';
virtualbox = true;
znc = true; znc = true;
}; };
}) })

View File

@@ -1,31 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
mkIf = lib.mkIf;
in
{
imports = [ # applications :
# commandées par config-generator
./activation-manuelle/xmonad/xmonad.nix # gestionnaire de fenêtres xmonad
];
# Paquets
environment.systemPackages = with pkgs; mkIf profiles.isDesktop [
# A trier
cowsay
fgallery # générateur de gallerie statique http://www.thregr.org/~wavexx/software/fgallery/
taskwarrior # gestionnaire de tâches en console
xclip # manipulation du clipboard X depuis la console
];
# Paquets avec setuid root
security.wrappers = {
# pour le montage des media amovibles
devmon.source = "${pkgs.udevil}/bin/devmon";
udevil.source = "${pkgs.udevil}/bin/udevil"; # utilisé par spacefm
};
}

View File

@@ -1,40 +0,0 @@
{ stdenv, fetchurl
, boost
, bzip2
, cmake
, expat
, geos
, lua
, postgresql
, proj
, zlib
}
stdenv.mkDerivation rec {
#version = "0.87.1";
version = "0.90.1";
name = "osm2pgsql-${version}-0";
src = fetchurl {
url = "https://github.com/openstreetmap/osm2pgsql/archive/${version}.tar.gz";
sha256 = "0i0zg8di8nbh96qnyyr156ikwcsq1w9b2291bazm5whb351flmqx";
};
#nativeBuildInputs = [ ];
buildInputs = [ ];
#preConfigure = ''
'';
#buildPhase = ''jam "-j$NIX_BUILD_CORES" '';
#installPhase = ''
#'';
meta = with stdenv.lib; {
homepage = http://wiki.openstreetmap.org/wiki/Osm2pgsql;
description = "osm2pgsql is a tool for loading OpenStreetMap data into a PostgreSQL / PostGIS database suitable for applications like rendering into a map, geocoding with Nominatim, or general analysis.";
license = licenses.gpl2;
#maintainers = [ maintainers.phunehehe ];
maintainers = [ maintainers.jpierre03 ];
};
}

View File

@@ -12,6 +12,7 @@ mkIf true {
# Paquets # Paquets
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# Adminsys # Adminsys
cowsay # pour ansible & 4lulz
iotop iotop
lm_sensors lm_sensors
lshw lshw
@@ -21,6 +22,7 @@ mkIf true {
powertop powertop
python27Packages.ansible2 python27Packages.ansible2
python27Packages.glances python27Packages.glances
sysstat # pour la commande "iostat -x -1" de monitoring d'activité disque
usbutils usbutils
# Backup # Backup

View File

@@ -7,6 +7,7 @@ let
profiles = config.r6d.profiles; profiles = config.r6d.profiles;
in in
# TODO: rc.lua par défaut (système)
mkIf cfg.awesome { mkIf cfg.awesome {
environment.variables = { environment.variables = {

View File

@@ -15,6 +15,7 @@ mkIf profiles.isDesktop {
arandr # interface graphique pour xrandr arandr # interface graphique pour xrandr
wmname # pour définir le nom du gestionnaire de fenêtre (utile pour java) wmname # pour définir le nom du gestionnaire de fenêtre (utile pour java)
#kde4.ksnapshot # capture d'écran #kde4.ksnapshot # capture d'écran
xclip # manipulation du clipboard X depuis la console
xorg.xbacklight # pour gérer la luminosité de l'écran xorg.xbacklight # pour gérer la luminosité de l'écran
xorg.xev # pour repérer les codes + noms standard des actions clavier/souris xorg.xev # pour repérer les codes + noms standard des actions clavier/souris
xorg.xkill # pour 'tuer une application' xorg.xkill # pour 'tuer une application'
@@ -39,4 +40,11 @@ mkIf profiles.isDesktop {
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 hasklig # police dérivée de source-code-pro mais avec des ligatures
]; ];
# Paquets avec setuid root
security.wrappers = {
# pour le montage des media amovibles
devmon.source = "${pkgs.udevil}/bin/devmon";
udevil.source = "${pkgs.udevil}/bin/udevil"; # utilisé par spacefm
};
} }

View File

@@ -16,6 +16,9 @@ mkIf profiles.isDesktop {
gnumeric # tableur gnumeric # tableur
#kde4.ksnapshot# réalisation de capture d'écran #kde4.ksnapshot# réalisation de capture d'écran
# Gestion de tâche
taskwarrior # gestionnaire de tâches en console
## Cartes mentales ## Cartes mentales
freemind freemind

View File

@@ -6,7 +6,7 @@ let
computers = config.r6d.computers; computers = config.r6d.computers;
profiles = config.r6d.profiles; profiles = config.r6d.profiles;
in in
# TODO: ménage
mkIf profiles.isDesktop { mkIf profiles.isDesktop {
# Paquets # Paquets
@@ -40,7 +40,7 @@ environment.systemPackages = with pkgs; [
nixpkgs.config.packageOverrides = pkgs: { nixpkgs.config.packageOverrides = pkgs: {
clawsMail = pkgs.clawsMail.override { clawsMail = pkgs.clawsMail.override {
enablePluginFancy = true; enablePluginFancy = false; # nécessite wekitgtk qui est troué
enablePluginPdf = true; enablePluginPdf = true;
enablePluginRavatar = true; enablePluginRavatar = true;
enablePluginSmime = true; enablePluginSmime = true;
@@ -49,4 +49,9 @@ environment.systemPackages = with pkgs; [
}; };
mumble = pkgs.mumble.override { pulseSupport = true; }; mumble = pkgs.mumble.override { pulseSupport = true; };
}; };
#nixpkgs.config.permittedInsecurePackages = [
# "webkitgtk-2.4.11" # pour que le plugin fancy de claws-mail fonctionne
#];
} }

View File

@@ -11,23 +11,24 @@ mkIf cfg.developpement-haskell {
# Paquets # Paquets
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# Haskell # Haskell platform
cabal-install # fournis cabal cabal-install # fournis cabal
cabal2nix # convertir les .cabal en .nix cabal2nix # convertir les .cabal en .nix
ghc # pour les appels depuis les scripts ghc # pour les appels depuis les scripts
stack # pour les paquets en LTS de stackage stack # pour les paquets en LTS de stackage
] ++ (with pkgs.haskellPackages; [
haskellPackages.stylish-haskell # qualité de code # Haskell lib
haskellPackages.hindent autoproc # ? procmail
haskellPackages.hlint darcs # Gestionnaire de version éponyme
haskellPackages.threadscope ghc-mod
hindent # indentation code
hlint # qualite de code, analyse statique de code + astuces & bonnes pratiques
#postgrest # mapper HTTP <-> PostgreSQL
stylish-haskell # qualité de code
threadscope # visualisation des threads (<bidule>.eventlog)
turtle # genre shell-scripting
# Application perso # Application perso
haskellPackages.hahp hahp
]);
# Application
haskellPackages.autoproc # ? procmail
haskellPackages.darcs # Gestionnaire de version éponyme
haskellPackages.turtle # genre shell-scripting
];
} }

View File

@@ -16,6 +16,9 @@ mkIf cfg.developpement-java {
# Java # Java
maven maven
zulu openjdk
]; ];
environment.variables = {
JAVA_HOME = "${pkgs.openjdk}";
};
} }

View File

@@ -24,7 +24,7 @@ mkIf cfg.developpement {
# Gestion des sources # Gestion des sources
cloc # outil pour compter les lignes de code source cloc # outil pour compter les lignes de code source
git # déjà présent dans "base" git # déjà présent dans "base"
gitg # interface pour utiliser git (historique, commit) #gitg # interface pour utiliser git (historique, commit)
gitstats # génère un site web statique avec des statistiques gitstats # génère un site web statique avec des statistiques
gitAndTools.gitFull # pour gitk gitAndTools.gitFull # pour gitk
git-cola # interface pour utiliser git (historique, commit) git-cola # interface pour utiliser git (historique, commit)
@@ -38,5 +38,8 @@ mkIf cfg.developpement {
#gource # visualisation en mouvement de l'historique git #gource # visualisation en mouvement de l'historique git
meld # outil de comparaison graphique meld # outil de comparaison graphique
#vbindiff # diff de fichier hexadecimaux avec vim #vbindiff # diff de fichier hexadecimaux avec vim
# Editeur texte
atom
]; ];
} }

View File

@@ -344,6 +344,7 @@ globalkeys = awful.util.table.join(
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 }, "F10", function () awful.util.spawn("xrandr-auto-2") end),
awful.key({ modkey }, "F11", function () awful.util.spawn("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),

View File

@@ -7,6 +7,7 @@ let
profiles = config.r6d.profiles; profiles = config.r6d.profiles;
in in
# TODO: ménage
{ {
# Nombre de process d'installation en parrallèle effectués par Nix # Nombre de process d'installation en parrallèle effectués par Nix
nix.buildCores = 0; nix.buildCores = 0;
@@ -47,7 +48,7 @@ in
pinentry # pour taper les mots de passe gpg pinentry # pour taper les mots de passe gpg
psmisc # fournis les utilitaires comme killall, fuser, pstree psmisc # fournis les utilitaires comme killall, fuser, pstree
python # python -- python -m SimpleHTTPServer 8000 python # python -- python -m SimpleHTTPServer 8000
python34Packages.glances # monitoring #python34Packages.glances # monitoring
pwgen # générateur de mot de passe pwgen # générateur de mot de passe
rtorrent # TODO outil de téléchargement de torrent & magnet rtorrent # TODO outil de téléchargement de torrent & magnet
tmux # nécessaire pour byobu tmux # nécessaire pour byobu

View File

@@ -22,7 +22,7 @@ in
# commandées par config-generator # commandées par config-generator
## option de configuration spécifique ## option de configuration spécifique
./app-awesome.nix # pour les profils awesome ./app-awesome.nix # pour le gestionaire de fenêtres awesome
./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
@@ -47,6 +47,7 @@ in
./service-laptop.nix # services spécifiques aux pc portables ./service-laptop.nix # services spécifiques aux pc portables
./service-locate.nix # service locate ./service-locate.nix # service locate
./swap.nix # définition de l'utilisation du swap ./swap.nix # définition de l'utilisation du swap
./xmonad/xmonad.nix # pour le gestionaire de fenêtre xmonad
## if isDesktop ## if isDesktop
./app-adminsys.nix # pour gérer le système dans son ensemble et les services ./app-adminsys.nix # pour gérer le système dans son ensemble et les services

View File

@@ -6,7 +6,7 @@ let
computers = config.r6d.computers; computers = config.r6d.computers;
profiles = config.r6d.profiles; profiles = config.r6d.profiles;
in in
# TODO: ménage
mkIf cfg.hydra-builder { mkIf cfg.hydra-builder {
# Paquets # Paquets
@@ -28,18 +28,18 @@ mkIf cfg.hydra-builder {
## Ménage automatique tous les jours ## Ménage automatique tous les jours
nix.gc.automatic = true; nix.gc.automatic = true;
users.users."hydrabld" = { # users.users."hydrabld" = {
description = "Execution des jobs hydra"; # description = "Execution des jobs hydra";
group = "nixbld"; # group = "nixbld";
extraGroups = [ # extraGroups = [
"docker" # "docker"
"nixbld" # "nixbld"
"vboxusers" # "vboxusers"
]; # ];
isNormalUser = true; # devrait être à false: TODO débugger la conf ssh & users pour que ça marche en user système # isNormalUser = true; # devrait être à false: TODO débugger la conf ssh & users pour que ça marche en user système
openssh.authorizedKeys.keys = [ # openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGYpjcWJCf8dXpv2LmoIaNVbwZXEC50QUU6Az+lqeD89 hydra radx" # "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGYpjcWJCf8dXpv2LmoIaNVbwZXEC50QUU6Az+lqeD89 hydra radx"
]; # ];
}; # };
} }

View File

@@ -22,6 +22,7 @@ let
# information pour l'état de hydra : # information pour l'état de hydra :
# hydra-queue-runner --status | json_pp # hydra-queue-runner --status | json_pp
in in
# TODO: passe de ménage
mkIf cfg.hydra-core { mkIf cfg.hydra-core {
# Paquets # Paquets
@@ -73,7 +74,7 @@ mkIf cfg.hydra-core {
### Machines connues ### Machines connues
programs.ssh.knownHosts = { programs.ssh.knownHosts = {
"hydra.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMhXFlj2oyArVyEwEwDxNXthB/JljHkq+UhTLxbekkMB"; "hydra.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHqja/yYsQeS5amZKPUG+EKSIkjEN6fYW54Fzvj1pFaP";
"monstre.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBTTrLhq1Cwm0rpnwEIxSLqVrJWZnt+/9dt+SKd8NiIc"; "monstre.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBTTrLhq1Cwm0rpnwEIxSLqVrJWZnt+/9dt+SKd8NiIc";
"pedro.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM7fjo2ysLqlfSo6BKnc6I6m1ayoPrbwEEyTKZmUzsOD"; "pedro.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM7fjo2ysLqlfSo6BKnc6I6m1ayoPrbwEEyTKZmUzsOD";
"ocean.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINCaRuTl8iCTUE4XInOpkSlwQj5Re4w4Iq+gNIlJe8pA"; "ocean.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINCaRuTl8iCTUE4XInOpkSlwQj5Re4w4Iq+gNIlJe8pA";

View File

@@ -7,6 +7,8 @@ let
profiles = config.r6d.profiles; profiles = config.r6d.profiles;
in in
# TODO: ajouter option
# TODO: changer adresse mail
mkIf true { mkIf true {
# Paquets # Paquets

View File

@@ -7,7 +7,7 @@ let
profiles = config.r6d.profiles; profiles = config.r6d.profiles;
in in
mkIf true { mkIf cfg.smokeping {
# Paquets # Paquets
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@@ -173,7 +173,7 @@ mkIf true {
++ MultiHost ++ MultiHost
menu = Multihost menu = Multihost
title = Ensemble de mesures DNS title = Ensemble de mesures de latence
host = /France/Atos /France/Axialys /France/Azurtel \ host = /France/Atos /France/Axialys /France/Azurtel \
/France/Bouygues-Telecom \ /France/Bouygues-Telecom \
/France/Completel \ /France/Completel \

View File

@@ -13,6 +13,7 @@ mkIf cfg.xmonad {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
dmenu dmenu
haskellPackages.xmobar haskellPackages.xmobar
trayer
]; ];
# Services # Services
@@ -23,4 +24,7 @@ mkIf cfg.xmonad {
haskellPackages.xmobar haskellPackages.xmobar
]; ];
}; };
environment.variables = {
_JAVA_AWT_WM_NONREPARENTING = "1";
};
} }