Compare commits

..

132 Commits

Author SHA1 Message Date
35e09f59d5 purge des copies des fichiers imprimés par cups 2016-07-31 23:47:36 +02:00
40f547852e commentaires + ménage dans les appli réseau 2016-07-29 15:33:33 +02:00
2a4c036ee4 activation conditionnelle (workstation) pour certains ensembles d'appli 2016-07-29 15:23:28 +02:00
ee93d2f29d renommage fichier 2016-07-29 14:51:16 +02:00
55880e13f3 adaptation pour que les expression de desktop se lancent que dans desktop 2016-07-29 12:41:37 +02:00
9db6440dab activation des base et desktop 2016-07-29 12:22:25 +02:00
5d86171461 ajout de fichiers migrer en douceur d'existant 2016-07-29 11:44:54 +02:00
909844a961 import historique de "base" 2016-07-29 11:40:15 +02:00
3b39357e2a import historique de "desktop" 2016-07-29 11:38:13 +02:00
3a3e43dd26 commit initial 2016-07-29 11:33:17 +02:00
Yves Dubromelle
11c624da59 option pour afficher le détail des erreurs 2016-07-27 11:50:27 +02:00
Yves Dubromelle
e88711df13 désactivation de nix-serve-client pour dubronetwork (déjà dans desktop) 2016-07-27 11:44:53 +02:00
Yves Dubromelle
8881df0d4a option de configuration pour murmur + activation pour rollo 2016-07-27 11:44:10 +02:00
System administrator
206430165a ajout de rollo.dubronetwokr.fr 2016-07-27 09:28:28 +02:00
6ff5e008a7 harmonisation fichiers activation manuelle 2016-07-26 15:57:02 +02:00
35c49c2fcd Merge remote-tracking branch 'origin/master' 2016-07-25 14:26:28 +02:00
95c7fc7a14 ajout de paquets utilisé sur les desktop & serveur -> base 2016-07-25 14:25:49 +02:00
Yves Dubromelle
908be0c5e8 option pour que les rebuild cherchent une solution au lieu de planter 2016-07-23 17:37:32 +02:00
Yves Dubromelle
12fe6f2b94 implémentation de la typo "gti" :) 2016-07-23 17:36:22 +02:00
dbd58cabc0 désactivation de nix serve pour ocean
* nix serve permet de récupérer toute la config de la machine ce qui ne
  me plait pas pour un serveur.
2016-07-23 13:55:11 +02:00
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
e0cd512f87 petits outils pour xorg : xev et xbacklight 2016-07-21 00:44:23 +02:00
Yves Dubromelle
3d1a7d2161 timeout à 5 secondes pour la connexion à un cache 2016-07-21 00:43:15 +02:00
Yves Dubromelle
51787ab25b configuration pour xmonad 2016-07-21 00:22:31 +02:00
Yves Dubromelle
111f33ff3d profil pour xmonad, et activation pour latitude 2016-07-21 00:02:33 +02:00
7e9a8131a3 déplacement de la définition de la variable awesome 2016-07-18 12:44:20 +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
ba9cdb7518 exemple d'utilisation de la variable d'environement pour awesome 2016-07-16 13:40:13 +02:00
Yves Dubromelle
bd70296e68 variable d'environement contenant le chemin vers awesome 2016-07-16 13:36:36 +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
50083e7d93 xkill 2016-07-13 23:21:59 +02:00
a920200904 ajout machine xray 2016-07-13 23:19:04 +02:00
a5f3e7f87d ajout de zeal (explorateur de doc offline) 2016-07-13 16:58:31 +02:00
9cce1410a0 ajout d'un lien vers des raccourcis utiles pour git 2016-07-11 15:45:26 +02:00
3180832a1f ajout de paquets utilisés sur radx 2016-07-11 14:30:55 +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
49dfc7eeb0 uniformisation des en-tetes 2016-07-10 22:06:26 +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
0bfca5b71d ajout des activations manuelles dans desktop.
* l'activarion ou non est controlée depuis base. Mais l'inclusion est
* systématique
2016-07-10 17:00:41 +02:00
62b1537353 fix: erreur de syntaxe sur les fichiers manuels 2016-07-10 17:00:15 +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
c8444defd3 Merge branch 'generator' 2016-07-09 21:33:04 +02:00
df8df234c1 utilisation des flags de configuration des fop,tionalités 2016-07-09 21:32:41 +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
11a50ead02 réduction taille LaTeX: Full -> base + beamer + cv 2016-07-09 18:56:31 +02:00
28f91e5327 déplacement des app géographiques dans un fichier à part 2016-07-09 18:40:12 +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
Yves Dubromelle
b816211833 ajout des ports pour iperf 2016-06-25 14:26:18 +02:00
5e470017d6 suite du classement dans catégories 2016-06-13 01:38:10 +02:00
d5ef35906b la prise en charge de la souris en console est migrée de desktop à base 2016-06-13 00:56:44 +02:00
a27a1c5aed ajout thème d'icone pour spaceFM 2016-06-13 00:43:55 +02:00
Yves Dubromelle
0ad1b1038c virtualbox en activation manuelle 2016-06-09 17:12:09 +02:00
Yves Dubromelle
dee3648f70 allowUnfree déplacé dans base 2016-06-09 16:32:08 +02:00
Yves Dubromelle
4a68e71a1d ajustement pour que ça compile 2016-06-09 15:58:40 +02:00
Yves Dubromelle
10f7efd252 fix typo 2016-06-09 15:35:18 +02:00
e8d0ccd483 ajout d'une expression laptop inspirée de la conf de latitude 2016-06-03 15:21:20 +02:00
Yves Dubromelle
ae328bb742 activation de povray pour freecad + commentaires 2016-06-01 11:00:08 +02:00
Yves Dubromelle
b5316cc818 logiciel de capture d'écran 2016-06-01 10:57:07 +02:00
Yves Dubromelle
024227a2f1 ajout paquet photo 2016-05-28 15:44:16 +02:00
00a4fb4e16 docker est placé dans une expression manuelle avec activation du service 2016-05-22 15:59:04 +02:00
fff3b94beb ajout de commentaires 2016-05-21 13:11:19 +02:00
3e5540a9e6 ajout du dictionnaire FR pour aspell 2016-05-19 20:33:59 +02:00
47b69d9e85 les jeux ne sont installés seulement si nécessaire 2016-05-17 18:28:48 +02:00
2479e9f72b ordre alphabetique 2016-05-17 17:55:53 +02:00
e60fd00c47 ajout de catégories & commentaires dans les fichiers nix 2016-05-17 17:06:11 +02:00
e40206c116 manipulation du presse papier depuis la console 2016-05-17 14:06:34 +02:00
63108b2077 ajout de gource & gcc 2016-05-10 14:27:44 +02:00
1991c00fe8 ajout de message d'erreur de slock 2016-05-08 22:00:35 +02:00
af3faefeee ajout editeur de texte graphique (pas vocation à remplacer vim) 2016-05-08 18:58:36 +02:00
bec1c4b84d ajout d'une liste adminsys + déplacement de paquets 2016-05-08 18:58:12 +02:00
59a545f3ab déplacement paquet 2016-05-08 18:57:48 +02:00
171ccd1559 découpage des applications déjà classées dans différents fichiers 2016-05-08 18:34:01 +02:00
Yves Dubromelle
d1114b0548 tri, suite 2016-05-05 02:32:33 +02:00
Yves Dubromelle
745bcf876a installation de urbanterror 2016-05-05 02:01:41 +02:00
Yves Dubromelle
c85389b633 installation de ghc 2016-05-05 02:01:18 +02:00
Yves Dubromelle
fb068f2efa améliorations pour les "marble mouse" 2016-05-05 00:36:56 +02:00
Yves Dubromelle
ba13255577 début classement des paquets 2016-05-04 21:58:37 +02:00
Yves Dubromelle
d9a03c1445 activation de pulseaudio 2016-05-04 21:53:26 +02:00
Yves Dubromelle
669be98608 activation du plugin html sur claws-mail 2016-05-04 16:21:14 +02:00
Yves Dubromelle
1a4277af74 installation de freecad 2016-05-04 14:51:55 +02:00
Yves Dubromelle
fbf0ddfbae paquets déjà présents dans template-base 2016-05-04 14:51:26 +02:00
Yves Dubromelle
dac301ae6c activation de l'agent gnupg au lieu de l'agent ssh (incompatibles) 2016-05-04 11:21:40 +02:00
Yves Dubromelle
cfcaaf1509 gnupg déjà défini dans template-base 2016-05-04 11:21:20 +02:00
fc2c49b15d problème pour glances avec python 3.5 2016-04-24 11:50:44 +02:00
fb1ac16d95 problème avec ansible et python 3.5 2016-04-24 10:16:26 +02:00
6e73a026ca première passe d'écrêmage 2016-04-24 10:11:18 +02:00
4e3ec6c71f ajout de tous les logiciels en vrac 2016-04-24 10:00:46 +02:00
aa7d44af03 commit initial 2016-04-24 09:37:31 +02:00
46 changed files with 1180 additions and 164 deletions

View File

@@ -1,48 +0,0 @@
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

1
Makefile Symbolic link
View File

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

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

@@ -1,7 +0,0 @@
{ config, pkgs, ... }:
{
# Automatic update & automatic clean
system.autoUpgrade.enable = true;
nix.gc.automatic = true;
}

View File

@@ -1,11 +0,0 @@
{ config, pkgs, ... }:
{
imports = [
];
services.locate= {
enable = true;
interval = "hourly";
};
}

View File

@@ -1,13 +1,8 @@
{ config, pkgs, ... }:
{ ... }:
{
imports = [
#./activation-manuelle/auto-upgrade.nix
#./activation-manuelle/locate.nix
#./activation-manuelle/swap.nix
./environment.nix
./localisation.nix
./networking.nix
./services.nix
./base/base.nix
./desktop/desktop.nix
];
}

48
base/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 --fallback --show-trace
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 --fallback --show-trace

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,22 @@
{ 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
];
# Suppression automatique des fichiers temporaires.
# Par défaut, cups conserve une copie de ce qui a été imprimé
# pas cool pour les mots de passe ou autre donnée sensible
extraConf = ''
PreserveJobHistory No
PreserveJobFiles No
'';
};
}

View File

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

14
base/base.nix Normal file
View File

@@ -0,0 +1,14 @@
{ config, pkgs, ... }:
{
imports = [
./environment.nix
./localisation.nix
./monitoring.nix
./networking.nix
./services.nix
# inclusion conditionnelle
./config-generator.nix
];
}

254
base/config-generator.nix Normal file
View File

@@ -0,0 +1,254 @@
{ 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.";
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";
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.";
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.";
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.";
isRollo = 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";
isRollo = host == "rollo.dubronetwork.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;
# 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;
#rabbitmq = true;
};
})
# /!\ PAS un serveur
(mkIf (!pfl.isServer) {
r6d.config-generator = {
dns_resolveur = true;
};
})
(mkIf pfl.isWorkstation {
r6d.profiles.isDesktop = true;
r6d.config-generator = {
developpement = true;
docker = true;
};
})
## Profils liés à Dubronetwork
(mkIf pfl.isDubronetwork {
r6d.config-generator = {
auto-upgrade = 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 = {
conception-assistee = true;
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 = {
nix-serve-server = true;
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;
};
})
(mkIf comp.isRollo {
r6d.profiles = {
isDubronetwork = true;
isServer = true;
};
r6d.config-generator = {
fail2ban = true;
murmur = true;
};
})
];
}

72
base/environment.nix Normal file
View File

@@ -0,0 +1,72 @@
{ 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 gti # 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
par2cmdline # outil de récupération de fichiers corrompus - .par2
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
rtorrent # outil de téléchargement de torrent & magnet
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
@@ -10,6 +11,7 @@
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

27
base/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
}

View File

@@ -19,7 +19,7 @@
boot.kernel.sysctl = {
"net.ipv6.conf.all.temp_prefered_lft" = 1800; # 30 min
"net.ipv6.conf.all.temp_valid_lft" = 3600; # 1 heure
"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

38
base/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

View File

@@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in mkIf cfg.awesome {
environment.variables = {
# Export the current path for the awesome derivation, useful for users rc.lua
# Example usage in rc.lua :
#
# config = {}
# config.dir = os.getenv("AWESOME_CONFIG_DIR")
# beautiful.init(config.dir .. "/share/awesome//themes/zenburn/theme.lua")
#
AWESOME_CONFIG_DIR = "${pkgs.awesome}";
};
}

View File

@@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf cfg.conception-assistee {
environment.systemPackages = with pkgs; [
# CAO
## Modélisation 3D
freecad # modélisation de pièces en 3D
povray # Rendu tracé de rayon, utilisé dans freecad
## Électricité & Électronique
fritzing # schéma de câblages "jolis"
kicad # ensemble d'outils de conception électronique
qucs # simulateur de circuits électroniques
];
}

View File

@@ -0,0 +1,44 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf cfg.developpement {
environment.systemPackages = with pkgs; [
# Base de données
pgadmin
sqlitebrowser
# Développement
cloc
idea.idea-community
gcc # pour les appels depuis les scripts
# Documentation
zeal
## Gestion des sources
# git # déjà présent dans "base"
git-cola
mercurial
subversion
## Haskell
ghc
stack
## Rust
cargo # récupération des dépendances + compilation projet rust
rustPlatform.rustc
## Visualisation & outils de diff
gource
meld
vbindiff # diff de fichier hexadecimaux avec vim
];
}

View File

@@ -0,0 +1,18 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in mkIf cfg.docker {
environment.systemPackages = with pkgs; [
# Ecosystème Docker
docker
python27Packages.docker_compose
];
virtualisation.docker.enable = true;
}

View File

@@ -0,0 +1,15 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in mkIf cfg.jeux {
environment.systemPackages = with pkgs; [
# Jeux
urbanterror
];
}

View File

@@ -0,0 +1,18 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in mkIf cfg.virtualbox {
environment.systemPackages = with pkgs; [
linuxPackages.virtualbox
linuxPackages.virtualboxGuestAdditions
];
virtualisation.virtualbox.host.enable = true;
}

View File

@@ -0,0 +1,25 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in mkIf cfg.laptop {
# Paquets spécifiques pour un ordinateur portable
## Activation d'un gestionnaire de réseau
networking.networkmanager.enable = true;
hardware.bluetooth.enable = true;
environment.systemPackages = with pkgs; [
networkmanagerapplet
];
services.xserver.synaptics = {
enable = true;
twoFingerScroll = true;
};
}

View File

@@ -0,0 +1,24 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in mkIf cfg.xmonad {
# Paquets spécifiques pour xmonad
environment.systemPackages = with pkgs;[
dmenu
haskellPackages.xmobar
];
services.xserver.windowManager.xmonad = {
enable = true;
enableContribAndExtras = true;
extraPackages = haskellPackages: [
haskellPackages.xmobar
];
};
}

46
desktop/app-adminsys.nix Normal file
View File

@@ -0,0 +1,46 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
environment.systemPackages = with pkgs; [
# Adminsys
iotop
lm_sensors
lshw
lsof
ntp
powerline-fonts
powertop
python27Packages.ansible2
python27Packages.glances
usbutils
# DNS
unbound
# Compression
lz4
lzop
# Mail
postfix
# Système de fichier
curlftpfs
gparted
inotify-tools
nfs-utils
ntfs3g
sshfsFuse
#
unetbootin # création de clefs USB bootables
];
}

View File

@@ -0,0 +1,43 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
environment.systemPackages = with pkgs; [
# Bureautique
aspell aspellDicts.fr
dia
gnumeric
## Cartes mentales
freemind
## Editeur de texte
lyx # surcouche WISIWIM à LaTeX
textadept # un éditeur de texte facile pour copier-coller graphique
zim # outil de prise de notes, wiki de bureau
## Visionneuse
kde5.okular # pdf
mcomix # livres (cbr, liste d'images), gestion d'une bibliothèque
pdfpc # pdf
qpdfview # pdf
gqview # visionneuse image & gestion basique de collection
## Convertisseurs (texte -> <autre format>)
gnuplot # générateur de graphes à partir de données numériques
graphviz # dot, neato : traçage de graphes (carré, rond)
jekyll # générateur statique de site web
pandoc
#texLiveFull # distribution LaTeX
texLive # distribution LaTeX de base
texLiveBeamer # paquets et extensions pour Beamer
texLiveModerncv # paquets pour la classe Modern CV
];
}

View File

@@ -0,0 +1,17 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
environment.systemPackages = with pkgs; [
# Gestion de données géographiques
josm # outil de contribution à OpenStreetMap
viking # analyse de topo, gestion de données GPS
];
}

View File

@@ -0,0 +1,33 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
environment.systemPackages = with pkgs; [
# Clients Internet
## Navigateur & Réseaux sociaux
chromium
firefox
python27Packages.turses # client twitter en ncurse
## Mail & Discussion (texte, audio)
clawsMail
kde5.quasselClient
mumble
mutt
pidgin
thunderbird
# Transfert de fichier
filezilla
transmission_gtk
transmission_remote_gtk
];
}

View File

@@ -0,0 +1,42 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
environment.systemPackages = with pkgs; [
# Multimedia
## Audio
audacity # montage audio
beep
cmus # lecteur audio console
easytag # gestion des métadonnées des fichiers musicaux
picard # gestion des métadonnées des fichiers musicaux
espeak # synthèse vocale
paprefs # préferences pulseaudio
pavucontrol # mixer pulseaudio
vorbis-tools # codec
## Video
smplayer # lecteur vidéo
vlc # lecteur vidéo
## Photo & Dessin vectoriel
exif
exiftags
gimp # logiciel d'édition/montage/retouche photo
inkscape # édition d'image vectorielle (svg & autre)
imagemagick # modification image en CLI
kde4.ksnapshot
rawtherapee # développemen de photos en RAW
### TEST d'outil de gestion de catalogue de photos
kde4.digikam # gestionnaire de bibliothèque de photo
];
}

37
desktop/app-network.nix Normal file
View File

@@ -0,0 +1,37 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
environment.systemPackages = with pkgs; [
# Outils réseau
iperf # outil de mesure de la qualité du réseau
iptraf-ng # outil de mesure de la qualité du réseau
nload # affichage de statisques d'utilisation instantannées du réseau
telnet
#vsftpd # serveur FTP
## Diagnostic
arp-scan
wireshark
whois
## Routage
quagga # daemon de routage
## Tunnel
# openvpn
tinc
];
networking.firewall = {
allowedTCPPorts = [5201]; # iperf
allowedUDPPorts = [5201]; # iperf
};
}

20
desktop/app-securite.nix Normal file
View File

@@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
environment.systemPackages = with pkgs; [
# Securité
gnome3.seahorse # gestionnaire graphique de clef GPG
pass # gestionnaire de mots de passe
pwgen # générateur de mots de passe
slock # vérouiller l''écran. "cannot disable the out-of-memory killer for this process (make sure to suid or sgid slock)" --> en root
yubikey-personalization-gui # utilisation de la clef Yubikey
];
}

View File

@@ -0,0 +1,15 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
environment.systemPackages = with pkgs; [
];
}

107
desktop/desktop.nix Normal file
View File

@@ -0,0 +1,107 @@
{ config, pkgs, ... }:
let
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
mkIf = pkgs.lib.mkIf;
in
{
imports = [ # applications :
# commandées par config-generator
./activation-manuelle/app-awesome.nix # pour les profils awesome
./activation-manuelle/app-cao.nix # de conception assisté par ordinateur & modélisation
./activation-manuelle/app-developpement.nix # utilisée pour développer des programmes/scripts
./activation-manuelle/app-docker.nix # pour activer docker
./activation-manuelle/app-jeux.nix # permettant de jouer ;)
./activation-manuelle/app-virtualbox.nix # pour exploiter virtualbox
./activation-manuelle/laptop.nix # appli & configuration adaptée pour un PC portable$
./activation-manuelle/xmonad.nix # gestionnaire de fenêtres xmonad
# installées systématiquement
./desktop-minimal.nix
./app-adminsys.nix # pour gérer le système dans son ensemble et les services
./app-bureautique.nix # dédiée à la bureautique (traitement de texte, dessin, ...)
# A ajouter dans config-generator & revoir le contenu pour le mettre si nécessaire dans minimal
./app-cartographie.nix # utilisée pour manipuler les données géographiques & cartes
./app-client-internet.nix # pour accéder & utiliser des ressources par le réseau
./app-multimedia.nix # pour gérer le son, l'image et la vidéo
./app-network.nix # de gestion, de diagnostique & surveillance réseau
./app-securite.nix # relatives à la sécurité (chiffrement, gpg, mots de passe, ...)
];
environment.systemPackages = with pkgs; mkIf profiles.isDesktop [
# Environement de bureau
wmname # pour définir le nom du gestionnaire de fenêtre (utile pour java)
kde4.ksnapshot# capture d'é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.xkill # pour 'tuer une application'
## Gestionnaire de fenêtre & Thème
gnome.gnome_icon_theme # thème d'icone - semble fonctionner avec spaceFM
## Manipulation de fichier
pcmanfm # gestionnaire de fichiers graphique
spaceFM # gestionnaire de fichiers graphique
vifm # gestionnaire de fichiers basé sur VIM (console)
## Terminal
sakura # terminal
# A trier
cowsay
fgallery # générateur de gallerie statique http://www.thregr.org/~wavexx/software/fgallery/
samba
taskwarrior # gestionnaire de tâches en console
udevil # pour le montage des media amovibles
xclip # manipulation du clipboard X depuis la console
];
nixpkgs.config.packageOverrides = pkgs: {
clawsMail = pkgs.clawsMail.override { enablePluginFancy = true; };
mumble = pkgs.mumble.override { pulseSupport = true; };
};
# Enable the X11 windowing system.
services.xserver = mkIf profiles.isDesktop {
enable = true;
layout = "fr";
xkbOptions = "eurosign:e";
displayManager.lightdm.enable = true;
windowManager.awesome.enable = true;
startGnuPGAgent = true;
startOpenSSHAgent = false; # pas compatible avec l'agent GnuPG
inputClassSections = [''
Identifier "Marble Mouse"
MatchProduct "Logitech USB Trackball"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
# Physical button #s: A b D - - - - B C b = A & D simultaneously; - = no button
#Option "ButtonMapping" "1 8 3 4 5 6 7 2 2" # For right-hand placement
#Option "ButtonMapping" "3 8 1 4 5 6 7 2 2" # For left-hand placement
# EmulateWheel refers to emulating a mouse wheel using Marble Mouse trackball.
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "8" # Factory default; use "9" for left-side placement.
# EmulateWheelInertia specifies how far (in pixels) the pointer must move to
# generate button press/release events in wheel emulation mode.
Option "EmulateWheelInertia" "10" # Factory default: 50
Option "ZAxisMapping" "4 5"
Option "XAxisMapping" "6 7" # Disable this for vertical-only scrolling.
# Emulate3Buttons refers to the act of pressing buttons A and D
# simultaneously to emulate a middle-click or wheel click.
Option "Emulate3Buttons" "true" # Factory default.
''];
};
# Pulse Audio
hardware.pulseaudio = mkIf profiles.isDesktop {
enable = true;
support32Bit = true;
};
environment.etc."pulse/daemon.conf".text = "flat-volumes = no";
}

View File

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

View File

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