Compare commits

..

81 Commits

Author SHA1 Message Date
9190d21a65 il manquait la commande mail pour munin 2016-08-15 14:46:09 +02:00
Yves Dubromelle
b4c960d3d3 fix: quand isDesktop = true, les autres paquets n'étaient plus là 2016-08-15 02:47:53 +02:00
516976ccf9 désactivation de sudo sans mot de passe 2016-08-14 11:25:32 +02:00
634af07219 ajout d'assertion à users.nix 2016-08-14 10:43:41 +02:00
91d414d3e1 ajustement description 2016-08-14 10:42:15 +02:00
ca0171b70e une partie des outils d'admin sont disponibles en permanence 2016-08-14 10:27:17 +02:00
48361328dd ajout de rdfind + ajout commentaires 2016-08-14 00:12:14 +02:00
ee34e1a138 lancement de la commande munin (web) par 'make munin' 2016-08-12 13:06:37 +02:00
ea307cc5dc application du template 2016-08-12 12:46:36 +02:00
1cce1ec034 commande pour faciliter l'application du template 2016-08-12 12:12:47 +02:00
32a05e2124 MaJ template 2016-08-12 11:51:40 +02:00
Yves Dubromelle
23cb4c79a9 désactivation du cache standard pour les machines dubronetwork 2016-08-12 01:35:04 +02:00
Yves Dubromelle
160ec79b0f désactivation de nix-serve-server sur les serveurs dubronetwork 2016-08-12 01:25:24 +02:00
Yves Dubromelle
9bc50b35dd ajout de la machine pedro 2016-08-12 01:08:32 +02:00
Yves Dubromelle
1c649a9b04 les jeux ne sont plus activés systématiquements 2016-08-11 23:49:17 +02:00
Yves Dubromelle
7cb371510b ajustement des règles d'utilisation du cache 2016-08-11 23:47:50 +02:00
Yves Dubromelle
b38e5a87bb monstre est un client du cache nix 2016-08-11 23:44:05 +02:00
Yves Dubromelle
50326127d3 taeradan: ajout d'un mot de passe initial très compliqué 2016-08-11 23:32:00 +02:00
Yves Dubromelle
02a8b96e61 ajout d'utilisateurs avec mailbox 2016-08-11 23:30:24 +02:00
Yves Dubromelle
5e6586d403 rollo stocke les mails 2016-08-11 23:25:00 +02:00
Yves Dubromelle
b65ffa4d8f ajout option de configuration pour stocker les mails en boite 2016-08-11 23:08:33 +02:00
Yves Dubromelle
744ebec05b activation des comptes jpierre03 et taeradan sur toutes les machines 2016-08-11 22:58:15 +02:00
d1113bec00 script de lancement d'un serveur web pour les fichier munin 2016-08-11 22:09:16 +02:00
ef2733675d radx: désactivation de nix-serve 2016-08-11 21:51:43 +02:00
63902d313c radx n'est plus un serveur 2016-08-11 21:45:47 +02:00
0dc2561017 désactivation addresqse ipv6 temporaires 2016-08-11 21:27:06 +02:00
Yves Dubromelle
953021f306 option pour le proxy-cache nginx du nix store + actif sur monstre 2016-08-11 19:59:30 +02:00
Yves Dubromelle
c2da568c30 template d'un module nix façon r6d 2016-08-11 19:56:15 +02:00
bbfd76a4a1 ajout clef SSH pour root 2016-08-11 19:42:19 +02:00
Yves Dubromelle
e1e30f4ce0 option pour activer dovecot 2016-08-10 23:16:03 +02:00
4c3e1abfcb ajout de variables locales pour la config de fail2ban 2016-08-10 16:11:03 +02:00
Yves Dubromelle
c5b9c97327 ajout de programmes (reddit, IRC) depuis phenom 2016-08-10 12:12:58 +02:00
Yves Dubromelle
6b0689d336 option pour ZNC 2016-08-09 22:11:29 +02:00
7536316133 ajout clef ssh à root 2016-08-09 15:16:16 +02:00
c346262619 oups: un paquet ne compile pas 2016-08-09 14:15:27 +02:00
312cc9ddc2 suppression de paquets qui devraient être des services 2016-08-09 14:10:58 +02:00
ff3e764bc2 extraction des apps pour l'édition multimédie (musique, photo, video) 2016-08-09 14:08:53 +02:00
4100ff2f2f regroupement conf laptop + service laptop 2016-08-09 13:52:10 +02:00
b64a846407 indentation 2016-08-09 13:38:12 +02:00
2df8cf6695 extraction de pulseaudio comme service 2016-08-09 13:36:34 +02:00
40ea98af6b extraction de x11 comme service 2016-08-09 13:34:24 +02:00
Yves Dubromelle
944f8103e6 quelques polices sympatiques pour le bureau et le code 2016-08-09 10:53:05 +02:00
453ad77953 extraction de services & configuration générique 2016-08-08 23:32:19 +02:00
3c7274848d ajout de variable cartographie 2016-08-08 23:15:24 +02:00
1d5692fbc5 Merge remote-tracking branch 'origin/master' 2016-08-08 23:05:00 +02:00
7367bd462e le monitoring est un service publiable -> public 2016-08-08 23:04:14 +02:00
3de2cceef4 le monitoring est regroupé dans un fichier 2016-08-08 23:03:19 +02:00
8ebfe6c9a6 on fait apparaître que locate est un service 2016-08-08 22:59:55 +02:00
33e44d23f9 harmonisation des headers pour public/ 2016-08-08 22:58:30 +02:00
Yves Dubromelle
461adfc7fe arandr, interface pour xrandr 2016-08-08 22:57:15 +02:00
47de85f6bd notes sur comment les packages publics sont activés 2016-08-08 22:52:24 +02:00
abec02d668 expression vide 2016-08-08 22:44:43 +02:00
78cccc3934 tri des entrées 2016-08-08 22:32:52 +02:00
42c1327500 déplacement de desktop vers public 2016-08-08 22:30:44 +02:00
e685d8e518 regroupement des clients pour réseaux sociaux 2016-08-08 22:24:50 +02:00
366272d1f6 ajout d'infos sur le README 2016-08-08 22:24:09 +02:00
25e9a9c1ab revue du lien symbolique pour le Makefile 2016-08-08 22:19:43 +02:00
e685771d12 déplacement base/base vers base/public 2016-08-08 22:15:21 +02:00
67907ba8c8 déplacement de .nix de base/desktop vers base/public 2016-08-08 22:06:08 +02:00
36c0eba3b5 déplacement de .nix de base/base vers base/public 2016-08-08 22:00:02 +02:00
3d7b3f1106 création de variable de stockage de clef ssh 2016-08-07 11:11:05 +02:00
Yves Dubromelle
71c89d7272 l'uid n'est pas forcé. nix choisi le 1er libre. 2016-08-07 10:21:59 +02:00
Yves Dubromelle
e974e8949d ajout de clef ssh 2016-08-07 10:14:29 +02:00
a8b5ee97c6 ajout utilisateur taeradan si dubronetwork 2016-08-07 10:03:41 +02:00
45a4bc9a28 indentation 2016-08-07 09:54:25 +02:00
Yves Dubromelle
b998bea22e ouverture du port pour afficher les stats munin 2016-08-07 02:01:01 +02:00
Yves Dubromelle
a356a2f5fa Merge remote-tracking branch 'origin/master' 2016-08-07 01:38:28 +02:00
Yves Dubromelle
0e5137a236 suppression de postfix comme paquet accessible 2016-08-07 01:37:18 +02:00
Yves Dubromelle
65064f7f8b Merge remote-tracking branch 'origin/master' 2016-08-06 22:59:55 +02:00
Yves Dubromelle
12e3f20a8e ajout option de configuration pour ipv6 (EXPERIMENTAL) 2016-08-06 22:52:08 +02:00
a05ef8fbdc ajout clef ssh voyage 2016-08-06 16:41:17 +02:00
e6fc844aaf ajout de clef ssh autorisée 2016-08-05 15:25:49 +02:00
Yves Dubromelle
eaa35ac70e examples de configuration de xmonad et xmobar 2016-08-05 11:36:50 +02:00
2bcc6944b2 ajout de docker pour ocean 2016-08-04 20:59:48 +02:00
013b83c9a0 Merge branch 'master' of ssh://gogs.prunetwork.fr:10022/nixos-config/nixos-template-base 2016-08-03 16:39:40 +02:00
Yves Dubromelle
a5842e7763 réactivation de tex full 2016-08-02 13:48:58 +02:00
06ec0979dc ajout app géo 2016-08-02 13:48:36 +02:00
221bcd2dee déplacement dans dossier spécifique 2016-08-02 01:20:51 +02:00
aec2f9bfe9 ajout d'un début de création de dérivation pour osm2pgsql 2016-08-02 01:19:55 +02:00
a84ca742de déplacement de config generator 2016-08-01 15:41:12 +02:00
256ae50aea ajout de qgis 2016-08-01 15:34:17 +02:00
59 changed files with 945 additions and 445 deletions

View File

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

54
Makefile Normal file
View File

@@ -0,0 +1,54 @@
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
munin:
pushd /var/www/munin/ ; python -m SimpleHTTPServer 8000
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)"
template:
find . -name "*.nix" -exec meld /etc/nixos/base/module-template.nix {} \;
tag: submodules-tag
git tag -f "$$(date +%F)-$$(hostname -s)"
upgrade:
nixos-rebuild switch --upgrade --fallback --show-trace

6
README
View File

@@ -1,3 +1,9 @@
# nixos-template-base
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).
Actuellement, les scripts contiennent un peu de configuration spécifique pour les machines des mainteneurs.
# Lien pour install sur machine distante

View File

@@ -1,8 +1,20 @@
{ ... }:
{ config, lib, pkgs, ... }:
let
#inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
{
imports = [
# recettes
./base/base.nix
./desktop/desktop.nix
./public/public.nix
# moulinette de configuration
./config-generator.nix
];
}

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

1
base/Makefile Symbolic link
View File

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

View File

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

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

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

View File

@@ -1,24 +1,25 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge;
profiles = config.r6d.profiles;
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
in {
nix = mkIf config.r6d.config-generator.nix-serve-client {
profiles = config.r6d.profiles;
in
mkIf cfg.nix-serve-client {
nix = {
# 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.isDubronetwork && (! computers.isPedro) && (! computers.isRollo)) "http://nix-cache.dubronetwork.fr:5001")
(mkIf profiles.isPrunetwork "https://cache.nixos.org/")
(mkIf (profiles.isPrunetwork && !profiles.isServer) "http://192.168.1.20:5000")
];
extraOptions = ''
connect-timeout = 5
connect-timeout = 5
'';
};
}
};
}

View File

@@ -1,12 +1,27 @@
{ config, pkgs, ... }:
with pkgs.lib;
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
in {
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf cfg.nix-serve-server {
# Cache http pour le store
services.nix-serve.enable = cfg.nix-serve-server;
networking.firewall.allowedTCPPorts = mkIf cfg.nix-serve-server [ 5000 ];
# Services
services.nix-serve = {
enable = true;
};
# Réseau
networking.firewall = {
allowedTCPPorts = [
5000
];
allowedUDPPorts = [
];
};
}

View File

@@ -1,30 +1,35 @@
{ config, pkgs, ... }:
with pkgs.lib;
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
in {
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
services = mkIf cfg.fail2ban {
# 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 pedro.dubronetwork.fr cube.dubronetwork.fr voyage.prunetwork.fr xray.prunetwork.fr 192.168.0.0/16 172.16.0.0/16
ignoreip = 127.0.0.1/8 ${ignoreip}
# 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
destemail = ${destemail}
'';
ssh-route = ''
filter = sshd

File diff suppressed because one or more lines are too long

View File

@@ -1,14 +1,20 @@
{ config, pkgs, ... }:
{ config, lib, pkgs, ... }:
let
#inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
{
imports = [
./environment.nix
./localisation.nix
./monitoring.nix
./networking.nix
./services.nix
./network-dns.nix
# inclusion conditionnelle
./config-generator.nix
./activation-manuelle/service-fail2ban.nix
./activation-manuelle/nix-serve-client.nix
./activation-manuelle/nix-serve-server.nix
./activation-manuelle/users.nix
];
}

View File

@@ -1,27 +0,0 @@
# 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
}

22
base/network-dns.nix Normal file
View File

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

@@ -1,6 +1,5 @@
{ config, lib, pkgs, ... }:
# exemple utilisé pour commencer bird.nix
let
inherit (lib) mkEnableOption mkIf mkMerge mkOption singleton types;
cfg = config.r6d.config-generator;
@@ -9,19 +8,7 @@ let
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 = {
@@ -43,24 +30,33 @@ in
enable = mkEnableOption "Génération de la configuration d'une machine.";
awesome = mkEnableOption "Profil pour activer le gestionnaire de fenêtre awesome.";
auto-upgrade = mkEnableOption "Profil pour activer les mises à jour automatiques.";
cartographie = mkEnableOption "Profil pour activer les outils de gestion de données géographiques.";
conception-assistee = mkEnableOption "Profil pour activer les outils de conception électronique & modélisation 3D";
database_postgres=mkEnableOption "Profil pour activer le SGBD PostgreSQL.";
developpement = mkEnableOption "Profil pour activer les outils de développement";
docker = mkEnableOption "Profil pour l'utilisation de Docker.";
dovecot = mkEnableOption "Profil pour activer le serveur Dovecot.";
dns_autorite = mkEnableOption "Profil pour servir les fichiers de zone DNS.";
dns_resolveur = mkEnableOption "Profil pour activer un résolveur DNS local.";
edition-musique = mkEnableOption "Profil pour la création/édition de musique.";
edition-photo = mkEnableOption "Profil pour la création/édition de photos.";
edition-video = mkEnableOption "Profil pour la création/édition de video.";
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.";
mailboxes = mkEnableOption "Profil pour stocker les mails dans des boîtes aux lettres.";
murmur = mkEnableOption "Profil pour activer un serveur Mumble (murmur)";
nix-serve-client= mkEnableOption "Profil pour que la machine soit un client de cache nix.";
nix-serve-server= mkEnableOption "Profil pour que la machine soit un serveur de cache nix.";
nixStoreProxyCache = mkEnableOption "Profil pour activer le proxy cahce nginx pour le nix store";
online-ipv6 = mkEnableOption "Profil pour activer l'IPv6 de online.net";
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.";
znc = mkEnableOption "Profil pour activer le relais IRC ZNC.";
};
#* Utilisé pour avoir des raccourcis de machine
r6d.computers = {
@@ -69,6 +65,7 @@ in
isNeoNomade = mkEnableOption "Identification du nom de machine.";
isNomade = mkEnableOption "Identification du nom de machine.";
isOcean = mkEnableOption "Identification du nom de machine.";
isPedro = mkEnableOption "Identification du nom de machine.";
isPhenom = mkEnableOption "Identification du nom de machine.";
isRadx = mkEnableOption "Identification du nom de machine.";
isRollo = mkEnableOption "Identification du nom de machine.";
@@ -89,6 +86,7 @@ in
isNeoNomade = host == "neo-nomade.dubronetwork.fr";
isNomade = host == "nomade.dubronetwork.fr";
isOcean = host == "ocean.prunetwork.fr";
isPedro = host == "pedro.dubronetwork.fr";
isPhenom = host == "phenom.dubronetwork.fr";
isRadx = host == "radx.prunetwork.fr";
isRollo = host == "rollo.dubronetwork.fr";
@@ -129,8 +127,13 @@ in
r6d.profiles.isDesktop = true;
r6d.config-generator = {
cartographie = true;
developpement = true;
docker = true;
edition-musique = true;
edition-photo = true;
edition-video = true;
};
})
@@ -141,12 +144,6 @@ in
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;
@@ -171,17 +168,19 @@ in
isPrunetwork = true;
isServer = true;
};
r6d.config-generator = {
docker = true;
};
})
(mkIf comp.isRadx {
r6d.profiles = {
isHome = true;
isPrunetwork = true;
isServer = true;
isWorkstation = true;
};
r6d.config-generator = {
nix-serve-server = true;
virtualbox = true;
};
})
@@ -209,7 +208,11 @@ in
isServer = true;
};
r6d.config-generator.fail2ban = true;
r6d.config-generator = {
fail2ban = true;
nix-serve-client = true;
nixStoreProxyCache = true;
};
})
(mkIf comp.isNeoNomade{
r6d.profiles = {
@@ -228,6 +231,17 @@ in
laptop = true;
};
})
(mkIf comp.isPedro {
r6d.profiles = {
isDubronetwork = true;
isServer = true;
};
r6d.config-generator = {
fail2ban = true;
online-ipv6 = true;
};
})
(mkIf comp.isPhenom {
r6d.profiles = {
isDubronetwork = true;
@@ -246,8 +260,12 @@ in
};
r6d.config-generator = {
dovecot = true;
fail2ban = true;
mailboxes = true;
murmur = true;
online-ipv6 = true;
znc = true;
};
})
];

View File

@@ -0,0 +1,32 @@
Config { font = "xft:Monospace-10:bold"
, additionalFonts = []
, border = NoBorder
, bgColor = "black"
, fgColor = "white"
, alpha = 255
, position = Top
--, textOffset = -1
--, iconOffset = -1
, lowerOnStart = False
, pickBroadest = False
, persistent = False
, hideOnStart = False
, iconRoot = "."
, allDesktops = True
, overrideRedirect = True
, commands = [ Run DynNetwork ["-L","0","-H","32","--normal","green","--high","red"] 10
, Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10
, Run Memory ["-t","Mem: <usedratio>%"] 10
, Run Battery ["-t", "Batt: <left>%, <watts>W -> <timeleft>"] 10
, Run Date "%F %H:%M:%S" "date" 10
--, Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
, Run StdinReader
, Run Brightness [] 10
, Run Volume "default" "Master" [] 10
]
, sepChar = "%"
, alignSep = "}{"
, template = " %StdinReader% }\
\{ %cpu% | %memory% | %dynnetwork% | %battery% | %bright% | %default:Master% | <fc=#ee9a00>%date%</fc>"
}

View File

@@ -0,0 +1,47 @@
import Graphics.X11.ExtraTypes.XF86
import XMonad
import XMonad.Config.Desktop
import XMonad.Config.Azerty
import XMonad.Hooks.DynamicLog
import XMonad.Util.EZConfig
-- # Ligne principale
main = xmonad =<< xmobar myConfig
--main = xmonad =<< statusBar myBar myPP toggleStrutsKey myConfig
-- # Réglages de xmonad
myConfig = azertyConfig
{ terminal = "sakura"
, modMask = mod4Mask
, borderWidth = 2
, workspaces = myWorkspaces
} `additionalKeys` myKeys `removeKeys` unusefulKeys
myWorkspaces = ["1:mail","2:chat","3:web","4","5","6","7","8", "9:system"]
myKeys = [ ((0, xF86XK_MonBrightnessUp), spawn "xbacklight +10") -- +brightness
, ((0, xF86XK_MonBrightnessDown), spawn "xbacklight -10") -- -brightness
, ((0, xF86XK_AudioRaiseVolume), spawn "amixer set Master 3%+") -- +volume
, ((0, xF86XK_AudioLowerVolume), spawn "amixer set Master 3%-") -- -volume
, ((0, xF86XK_AudioMute), spawn "amixer set Master toggle") -- mute volume
, ((0, xF86XK_AudioPlay), spawn "cmus-remote -u") -- cmus play/stop
, ((0, xF86XK_AudioPrev), spawn "cmus-remote -r") -- cmus next
, ((0, xF86XK_AudioNext), spawn "cmus-remote -n") -- cmus previous
]
unusefulKeys = []
-- # Réglages de xmobar
myBar = "xmobar"
-- Custom PP, configure it as you like. It determines what is being written to the bar.
myPP = xmobarPP
{ ppCurrent = xmobarColor "black" "yellow" . wrap " " " "
}
-- Key binding to toggle the gap for the bar.
toggleStrutsKey XConfig {XMonad.modMask = modMask} = (modMask, xK_b)

View File

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

View File

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

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

View File

@@ -10,98 +10,49 @@ 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, ...)
./activation-manuelle/xmonad/xmonad.nix # gestionnaire de fenêtres xmonad
];
# Paquets
environment.systemPackages = with pkgs; mkIf profiles.isDesktop [
# Environement de bureau
wmname # pour définir le nom du gestionnaire de fenêtre (utile pour java)
arandr # interface graphique pour xrandr
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'
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)
pcmanfm # gestionnaire de fichiers graphique
spaceFM # gestionnaire de fichiers graphique
vifm # gestionnaire de fichiers basé sur VIM (console)
## Terminal
sakura # terminal
sakura # terminal
# A trier
cowsay
fgallery # générateur de gallerie statique http://www.thregr.org/~wavexx/software/fgallery/
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
taskwarrior # gestionnaire de tâches en console
udevil # pour le montage des media amovibles
xclip # manipulation du clipboard X depuis la console
];
# Polices supplémentaires
fonts.fonts = with pkgs; mkIf profiles.isDesktop [
fira # police créée pour Firefox
fira-code # idem fira-mono + ligatures pour la programmation
fira-mono # dérivée de fira en monospace
hack-font # police monospace créée explicitement pour coder
];
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

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

25
module-template.nix Normal file
View File

@@ -0,0 +1,25 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf true {
# Paquets
environment.systemPackages = with pkgs; [
];
# Services
# Réseau
networking.firewall = {
allowedTCPPorts = [
];
allowedUDPPorts = [
];
};
}

51
public/app-adminsys.nix Normal file
View File

@@ -0,0 +1,51 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf true {
# Paquets
environment.systemPackages = with pkgs; [
# Adminsys
iotop
lm_sensors
lshw
lsof
ntp
powerline-fonts
powertop
python27Packages.ansible2
python27Packages.glances
usbutils
# Compression
lz4
lzop
# Système de fichier
## Montage de filesystem
curlftpfs # ftp
ntfs3g # ntfs
sshfsFuse # ssh
## Gestion de FS
nfs-utils
## Exploitation FS
inotify-tools # être notifié lorsque le contenu d'un répertoire change
rdfind # recherche de fichiers doublons pour remplacement par hard/soft link
(mkIf profiles.isDesktop
## Gestion de FS
gparted # Gestion graphique de partitions
)
(mkIf profiles.isDesktop
unetbootin # création de clefs USB bootables
)
#
];
}

View File

@@ -1,11 +1,13 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in mkIf cfg.awesome {
in
mkIf cfg.awesome {
environment.variables = {
# Export the current path for the awesome derivation, useful for users rc.lua

View File

@@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
@@ -9,6 +9,7 @@ in
mkIf profiles.isDesktop {
# Paquets
environment.systemPackages = with pkgs; [
# Bureautique
aspell aspellDicts.fr
@@ -35,9 +36,9 @@ mkIf profiles.isDesktop {
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
texLiveFull # distribution LaTeX
#texLive # distribution LaTeX de base
#texLiveBeamer # paquets et extensions pour Beamer
#texLiveModerncv # paquets pour la classe Modern CV
];
}

View File

@@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
@@ -9,7 +9,8 @@ in
mkIf cfg.conception-assistee {
environment.systemPackages = with pkgs; [
# Paquets
environment.systemPackages = with pkgs; [
# CAO
## Modélisation 3D
freecad # modélisation de pièces en 3D

View File

@@ -1,17 +1,21 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
mkIf cfg.cartographie {
# Paquets
environment.systemPackages = with pkgs; [
# Gestion de données géographiques
expat
gpsbabel # pour convettir les données des GPS
josm # outil de contribution à OpenStreetMap
qgis # client lourd de manipulation de données géographiques
viking # analyse de topo, gestion de données GPS
];
}

View File

@@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
@@ -9,16 +9,22 @@ in
mkIf profiles.isDesktop {
# Paquets
environment.systemPackages = with pkgs; [
# Clients Internet
## Navigateur & Réseaux sociaux
## Navigateur
chromium
firefox
python27Packages.turses # client twitter en ncurse
## Réseaux sociaux
python27Packages.turses # client twitter en ncurse
python27Packages.rainbowstream # client twitter en console
rtv # client reddit en console
## Mail & Discussion (texte, audio)
clawsMail
hexchat
kde5.quasselClient
mumble
mutt

View File

@@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
@@ -9,6 +9,7 @@ in
mkIf cfg.developpement {
# Paquets
environment.systemPackages = with pkgs; [
# Base de données
pgadmin

View File

@@ -1,13 +1,15 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
in mkIf cfg.docker {
mkIf cfg.docker {
# Paquets
environment.systemPackages = with pkgs; [
# Ecosystème Docker
docker

View File

@@ -0,0 +1,19 @@
{ 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.edition-musique {
# Paquets
environment.systemPackages = with pkgs; [
#
audacity # montage audio
easytag # gestion des métadonnées des fichiers musicaux
picard # gestion des métadonnées des fichiers musicaux
];
}

View File

@@ -0,0 +1,27 @@
{ 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.edition-photo {
# Paquets
environment.systemPackages = with pkgs; [
# Méta données
exif
exiftags
# Retouche, modification & dessin vectoriel
gimp # logiciel d'édition/montage/retouche photo
inkscape # édition d'image vectorielle (svg & autre)
imagemagick # modification image en CLI
rawtherapee # développemen de photos en RAW
# TEST d'outil de gestion de catalogue de photos
kde4.digikam # gestionnaire de bibliothèque de photo
];
}

View File

@@ -1,15 +1,18 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
mkIf cfg.edition-video {
# Paquets
environment.systemPackages = with pkgs; [
# Vidéo
#cinelerra # editeur video
pitivi # montage vidéo
];
}

View File

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

30
public/app-multimedia.nix Normal file
View File

@@ -0,0 +1,30 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
# Paquets
environment.systemPackages = with pkgs; [
# Multimedia
## Audio
beep
cmus # lecteur audio console
espeak # synthèse vocale
paprefs # préferences pulseaudio
pavucontrol # mixer pulseaudio
vorbis-tools # codec
## Video
smplayer # lecteur vidéo
vlc # lecteur vidéo
kde4.ksnapshot# réalisation de capture d'écran
];
}

View File

@@ -9,29 +9,26 @@ in
mkIf profiles.isDesktop {
# Paquets
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
allowedTCPPorts = [
5201 # iperf
];
allowedUDPPorts = [
5201 # iperf
];
};
}

View File

@@ -1,7 +1,7 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
@@ -9,6 +9,7 @@ in
mkIf profiles.isDesktop {
# Paquets
environment.systemPackages = with pkgs; [
# Securité
gnome3.seahorse # gestionnaire graphique de clef GPG

View File

@@ -1,13 +1,15 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
in mkIf cfg.virtualbox {
mkIf cfg.virtualbox {
# Paquets
environment.systemPackages = with pkgs; [
linuxPackages.virtualbox
linuxPackages.virtualboxGuestAdditions
@@ -15,4 +17,3 @@ in mkIf cfg.virtualbox {
virtualisation.virtualbox.host.enable = true;
}

16
public/auto-upgrade.nix Normal file
View File

@@ -0,0 +1,16 @@
{ 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.auto-upgrade {
# Automatic update & automatic clean
system.autoUpgrade.enable = true;
nix.gc.automatic = true;
}

View File

@@ -1,4 +1,11 @@
{ config, pkgs, ... }:
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
{
# Nombre de process d'installation en parrallèle effectués par Nix
@@ -10,8 +17,7 @@
# 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
# Paquets
environment = {
systemPackages = with pkgs; [
bind # utilisé pour les utilitaires comme dig

View File

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

View File

@@ -1,6 +1,14 @@
{ config, pkgs, ... }:
{ 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 {
{
# Select internationalisation properties.
i18n = {
consoleFont = "Lat2-Terminus16";

View File

@@ -1,16 +1,13 @@
{ config, pkgs, ... }:
{ config, lib, 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;
};
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf true {
# Utilisation d'adresse IPv6 temporaire

View File

@@ -1,12 +1,17 @@
{ config, pkgs, ... }:
with pkgs.lib;
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
in {
# Enable CUPS to print documents.
services.printing = mkIf cfg.print {
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf cfg.print {
# Services
## Enable CUPS to print documents.
services.printing = {
enable = true;
drivers = [
pkgs.samsung-unified-linux-driver

49
public/public.nix Normal file
View File

@@ -0,0 +1,49 @@
{ config, lib, pkgs, ... }:
let
#inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
{
imports = [
# installées systématiquement
./environment.nix
./localisation.nix
#./network-ipv6.nix
./service-haveged.nix
./service-monitoring.nix
./service-ssh.nix
# commandées par config-generator
## option de configuration spécifique
./app-awesome.nix # pour les profils awesome
./app-cao.nix # de conception assisté par ordinateur & modélisation
./app-cartographie.nix # utilisée pour manipuler les données géographiques & cartes
./app-developpement.nix # utilisée pour développer des programmes/scripts
./app-docker.nix # pour activer docker
./app-edition-musique.nix # pour modifier les fichiers musicaux
./app-edition-photo.nix # pour modifier les photos & assimilé
./app-edition-video.nix # pour modifier les vidéos
./app-jeux.nix # permettant de jouer ;)
./app-virtualbox.nix # pour exploiter virtualbox
./auto-upgrade.nix # mise à jour automatique du système
./laptop.nix # appli & configuration adaptée pour un PC portable
./print.nix # configuration de base de cups
./service-laptop.nix # services spécifiques aux pc portables
./service-locate.nix # service locate
./swap.nix # définition de l'utilisation du swap
## if isDesktop
./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, ...)
./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, ...)
./service-pulseaudio.nix # activation du serveur audio
./service-x11.nix # activation du serveur graphique X
];
}

View File

@@ -0,0 +1,21 @@
{ 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 {
# Sécurité & Accès distant
# Services
## 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;
};
}

19
public/service-laptop.nix Normal file
View File

@@ -0,0 +1,19 @@
{ 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.laptop {
# Gestion spécifique pour PC portable
# Services
services.xserver.synaptics = {
enable = true;
twoFingerScroll = true;
};
}

17
public/service-locate.nix Normal file
View File

@@ -0,0 +1,17 @@
{ 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.locate {
# Services
services.locate = {
enable = true;
interval = "hourly";
};
}

View File

@@ -0,0 +1,44 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf true {
# Paquets
environment.systemPackages = with pkgs; [
mailutils
];
# Services
## Noeud de supervision munin = pas de stockage des données locales
services.munin-node = {
enable = true;
};
## 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}" root@${config.networking.hostName}
'';
};
# Réseau
networking.firewall = {
allowedTCPPorts = [
8000
];
allowedUDPPorts = [
];
};
}

View File

@@ -0,0 +1,18 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
# Pulse Audio
hardware.pulseaudio = {
enable = true;
support32Bit = true;
};
environment.etc."pulse/daemon.conf".text = "flat-volumes = no";
}

View File

@@ -1,15 +1,15 @@
{ config, pkgs, ... }:
{ config, lib, pkgs, ... }:
{
# Sécurité & Acces distant
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
## 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;
};
mkIf true {
# Services
## OpenSSH daemon
services.openssh = {
enable = true;
@@ -27,12 +27,4 @@
UsePrivilegeSeparation sandbox
'';
};
# Monitoring
## Noeud de supervision munin = pas de stockage des données locales
services.munin-node = {
enable = true;
};
}

47
public/service-x11.nix Normal file
View File

@@ -0,0 +1,47 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
# Services
# Enable the X11 windowing system.
services.xserver = {
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.
''];
};
}

View File

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