Compare commits

...

17 Commits

Author SHA1 Message Date
Yves Dubromelle
40426c1ad2 déplacement de la configuration à la racine du dépôt (sauf rc.lua) 2017-03-25 00:25:30 +01:00
Yves Dubromelle
c1d112a10a suite du tri dans public/ 2017-03-25 00:11:05 +01:00
Yves Dubromelle
9997092984 oops: munin-muttrc n'a pas suivi son fichier .nix 2017-03-25 00:08:22 +01:00
Yves Dubromelle
da41826e33 découpage des applications par défaut 2017-03-25 00:05:47 +01:00
Yves Dubromelle
708e5fcbce tri à la racine de public/ 2017-03-24 23:57:40 +01:00
Yves Dubromelle
097472cca0 tri de la catégorie applications 2017-03-24 23:43:14 +01:00
Yves Dubromelle
eeb4543f1f TADA ! retour de l'activation de xserver dans le template :) 2017-03-24 23:29:32 +01:00
Yves Dubromelle
4660f79017 refactor de la configuration spécifique aux laptops 2017-03-24 23:25:46 +01:00
Yves Dubromelle
3963027f04 isDesktop -> isDesktopEnvironment + groupes de logiciels 2017-03-24 23:14:20 +01:00
Yves Dubromelle
156cbc8c27 scanner sorti du profil desktop par défaut 2017-03-24 22:51:01 +01:00
Yves Dubromelle
a51024633f option à part pour pulseaudio 2017-03-24 22:30:01 +01:00
Yves Dubromelle
c8f8ad898d suppression des préfixes app et service 2017-03-24 22:25:34 +01:00
Yves Dubromelle
937565f885 déplacement naïf dans "applications" et "services" 2017-03-24 22:21:44 +01:00
Yves Dubromelle
15ce896f9c bon numéro de version nixos 2017-03-24 22:15:59 +01:00
348433e395 ajout service hoogle local pour profil dev-haskell 2017-03-20 21:29:21 +01:00
f1c02b0625 fix: erreur de nomage 2017-03-15 17:16:43 +01:00
0ffecb8804 option smokeping + activation pour serveurs 2017-03-15 17:16:20 +01:00
57 changed files with 145 additions and 139 deletions

View File

@@ -51,11 +51,11 @@ mkIf true {
duff # outil de recherche de fichiers en doublons
rdfind # recherche de fichiers doublons pour remplacement par hard/soft link
(mkIf profiles.isDesktop
(mkIf profiles.isDesktopEnvironment
## Gestion de FS
gparted # Gestion graphique de partitions
)
(mkIf profiles.isDesktop
(mkIf profiles.isDesktopEnvironment
unetbootin # création de clefs USB bootables
)
];

View File

@@ -7,7 +7,7 @@ let
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
mkIf profiles.isDesktopEnvironment {
# Paquets
environment.systemPackages = with pkgs; [
@@ -33,7 +33,7 @@ mkIf profiles.isDesktop {
];
# Polices supplémentaires
fonts.fonts = with pkgs; mkIf profiles.isDesktop [
fonts.fonts = with pkgs; [
fira # police créée pour Firefox
fira-code # idem fira-mono + ligatures pour la programmation
fira-mono # dérivée de fira en monospace
@@ -46,5 +46,7 @@ mkIf profiles.isDesktop {
# pour le montage des media amovibles
devmon.source = "${pkgs.udevil}/bin/devmon";
udevil.source = "${pkgs.udevil}/bin/udevil"; # utilisé par spacefm
# vérouiller l''écran. "cannot disable the out-of-memory killer for this process (make sure to suid or sgid slock)" --> en root
slock.source = "${pkgs.slock}/bin/slock";
};
}

View File

@@ -7,7 +7,7 @@ let
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
mkIf cfg.officeSuite {
# Paquets
environment.systemPackages = with pkgs; [

View File

@@ -7,7 +7,7 @@ let
profiles = config.r6d.profiles;
in
# TODO: ménage
mkIf profiles.isDesktop {
mkIf cfg.internetSuite {
# Paquets
environment.systemPackages = with pkgs; [

View File

@@ -0,0 +1,42 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
{
# Paquets
environment.systemPackages = with pkgs; [
bind # utilisé pour les utilitaires comme dig
byobu # permet de se déconnecter d'un terminal sans l'aréter
dhcp # client dhcp
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
lsb-release # pour les scripts qui utilisent cet outil
#libressl # librairie pour faire du TLS et les algorithmes de crypto par OpenBSD
ncdu # outil pour voir l'espace utilisé
par2cmdline # outil de récupération de fichiers corrompus - .par2
p7zip # compression de fichier
parted # partitionnement de disque
pciutils
pinentry # pour taper les mots de passe gpg
psmisc # fournis les utilitaires comme killall, fuser, pstree
python # python -- python -m SimpleHTTPServer 8000
#python34Packages.glances # monitoring
pwgen # générateur de mot de passe
rtorrent # TODO 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
];
}

View File

@@ -7,7 +7,8 @@ let
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
# TODO ranger le spécifique pulseaudio
mkIf cfg.multimediaSuite {
# Paquets
environment.systemPackages = with pkgs; [

View File

@@ -8,7 +8,6 @@ let
in
mkIf true {
#mkIf profiles.isDesktop {
# Paquets
environment.systemPackages = with pkgs; [

View File

@@ -7,7 +7,7 @@ let
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
mkIf cfg.securitySuite {
# Paquets
environment.systemPackages = with pkgs; [
@@ -17,10 +17,4 @@ mkIf profiles.isDesktop {
pwgen # générateur de mots de passe
#yubikey-personalization-gui # utilisation de la clef Yubikey
];
# Paquets avec setui root
security.wrappers = {
# vérouiller l''écran. "cannot disable the out-of-memory killer for this process (make sure to suid or sgid slock)" --> en root
slock.source = "${pkgs.slock}/bin/slock";
};
}

View File

@@ -9,10 +9,60 @@ in
{
imports = [
# recettes
./public/public.nix
# moulinette de configuration
./config-generator.nix
# installées systématiquement
./applications/default-applications.nix
./configuration/environment.nix
./configuration/localisation.nix
./configuration/network.nix
#./configuration/network-ipv6.nix
./configuration/udev.nix
./services/haveged.nix
./services/monitoring-munin.nix
./services/monitoring-smokeping.nix
./services/ssh.nix
# commandées par config-generator
## option de configuration spécifique
./applications/cao.nix # de conception assisté par ordinateur & modélisation
./applications/cartographie.nix # manipuler les données géographiques & cartes
./applications/developpement.nix # développer des programmes/scripts
./applications/developpement-elm.nix # développer en elm
./applications/developpement-haskell.nix # développer en haskell
./applications/developpement-java.nix # développer en java
./applications/developpement-jetbrains.nix # outils jetbrains
./applications/developpement-rust.nix # développer en rust
./applications/edition-musique.nix # modifier les fichiers musicaux
./applications/edition-photo.nix # modifier les photos & assimilé
./applications/edition-video.nix # modifier les vidéos
./applications/jeux.nix # jouer, tout simplement ;)
./configuration/auto-upgrade.nix # mise à jour automatique du système
./configuration/awesome.nix # pour le gestionaire de fenêtres awesome
./configuration/laptop.nix # appli & configuration adaptée pour un PC portable
./configuration/swap.nix # définition de l'utilisation du swap
./services/print.nix # configuration de base de cups
./services/docker.nix # activer docker
./services/elasticsearch.nix # service de stockage et recher de données
./services/hoogle.nix # service hoogle pour haskell
./services/hydra-build.nix # service de construction de paquet. -> la machine compile des paquets
./services/hydra-core.nix # service pour l'instance d'hydra
./services/kibana.nix # service de visualisation de données stockées dans elasticsearch
./services/locate.nix # service locate
./services/virtualbox.nix # activer virtualbox
./services/xmonad/xmonad.nix # pour le gestionaire de fenêtre xmonad
## if isDesktop
./applications/adminsys.nix # pour gérer le système dans son ensemble et les services
./applications/bureau.nix # éléments pour avoir un environement graphique minimal utilisable
./applications/bureautique.nix # dédiée à la bureautique (traitement de texte, dessin, ...)
./applications/client-internet.nix # pour accéder & utiliser des ressources par le réseau
./applications/multimedia.nix # pour gérer le son, l'image et la vidéo
./applications/network.nix # de gestion, de diagnostique & surveillance réseau
./applications/securite.nix # relatives à la sécurité (chiffrement, gpg, mots de passe, ...)
./services/pulseaudio.nix # activation du serveur audio
./services/scanner.nix # utilisation d'un scanner
./services/x11.nix # activation du serveur graphique X
];
}

View File

@@ -9,7 +9,9 @@ let
in
{
# TODO: ménage
# TODO camel case partout
# TODO everything in english
# TODO sortir ce qui est privé
###### interface
options = {
@@ -20,8 +22,7 @@ in
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).";
isDesktopEnvironment = mkEnableOption "Pour indiquer une machine avec interface graphique.";
isServer = mkEnableOption "Pour indiquer qu'il s'agit d'un serveur.";
isWorkstation = mkEnableOption "Pour indiquer que la machine sert à travailler.";
};
@@ -51,19 +52,25 @@ in
hydra-builder = mkEnableOption "Profil pour une machine qui compile pour hydra.";
hydra-core = mkEnableOption "Profil pour un serveur hydra.";
kibana = mkEnableOption "Profil pour activer le service kibana.";
internetSuite = mkEnableOption "Profil pour la suite de logiciels pour Internet.";
jetbrains-licensed = mkEnableOption "Profil pour la suite de développement Jetbrains payante (sous-ensemble).";
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.";
multimediaSuite = mkEnableOption "Profil pour la suite multimédia.";
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";
officeSuite = mkEnableOption "Profil pour la suite bureautique";
print = mkEnableOption "Profil pour activer cups & pouvoir imprimer.";
pulseaudio = mkEnableOption "Profil pour activer pulseaudio.";
rabbitmq = mkEnableOption "Profil pour activer le service de messagerie AMQP.";
radicale = mkEnableOption "Profil pour activer le service d'hébergement de calendrier + tâches & contacts.";
scanner = mkEnableOption "Profil pour que les scanners soient utilisable.";
securitySuite = mkEnableOption "Profil pour la suite de logiciels de sécurité.";
smokeping = mkEnableOption "Profil pour activer le monitoring réseau par smokeping.";
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.";
@@ -106,16 +113,16 @@ in
config = mkMerge
[
## Définition des profils génériques
(mkIf pfl.isDesktop {
(mkIf pfl.isDesktopEnvironment {
r6d.config-generator = {
awesome = true;
#nix-serve-client = true;
scanner = true;
internetSuite = true;
multimediaSuite = true;
officeSuite = true;
pulseaudio = true;
securitySuite = true;
};
})
(mkIf pfl.isHome {
r6d.profiles.isDesktop = true;
})
(mkIf (pfl.isServer && !comp.isMonstre) {
r6d.config-generator = {
#database_postgres = true;
@@ -123,6 +130,7 @@ in
#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;
smokeping = true;
#rabbitmq = true;
};
@@ -134,7 +142,7 @@ in
};
})
(mkIf pfl.isWorkstation {
r6d.profiles.isDesktop = true;
r6d.profiles.isDesktopEnvironment = true;
r6d.config-generator = {
docker = true;
@@ -162,6 +170,7 @@ in
edition-musique = true;
edition-photo = true;
edition-video = true;
scanner = true;
virtualbox = true;
xmonad = true;
};
@@ -174,6 +183,7 @@ in
docker = true;
locate = true;
fail2ban = true;
smokeping = true;
swap = true;
};
})
@@ -192,6 +202,7 @@ in
edition-video = true;
hydra-core = false; # DO NOT ENABLE ON WORKSTATION, YOU CAN CRASH YOUR SYSTEM
print = true;
scanner = true;
#virtualbox = true;
#xmonad = true;
};
@@ -241,7 +252,6 @@ in
(mkIf comp.isRadx {
networking.hostName = "radx.prunetwork.fr"; # Define your hostname.
r6d.profiles = {
isHome = true;
isPrunetwork = true;
isWorkstation = true;
};
@@ -269,7 +279,6 @@ in
networking.hostName = "latitude.dubronetwork.fr"; # Define your hostname.
r6d.profiles = {
isDubronetwork = true;
isHome = true;
isWorkstation = true;
};
@@ -312,11 +321,12 @@ in
networking.hostName = "neo-nomade.dubronetwork.fr"; # Define your hostname.
r6d.profiles = {
isDubronetwork = true;
isHome = true;
isDesktopEnvironment = true;
};
r6d.config-generator = {
laptop = true;
scanner = true;
tincAddress = "192.168.12.7/24";
tincExtraConfig = ''
ConnectTo = monstre_dubronetwork_fr
@@ -350,7 +360,6 @@ in
networking.hostName = "phenom.dubronetwork.fr"; # Define your hostname.
r6d.profiles = {
isDubronetwork = true;
isHome = true;
isWorkstation = true;
};

View File

@@ -13,7 +13,7 @@ in
nix.buildCores = 0;
# The NixOS release to be compatible with for stateful data such as databases.
system.stateVersion = "16.09";
system.stateVersion = "17.03";
# copies the NixOS configuration file (usually /etc/nixos/configuration.nix) and links it from the resulting system (getting to /run/current-system/configuration.nix)
system.copySystemConfiguration = true;
@@ -29,35 +29,6 @@ in
# Paquets
environment = {
systemPackages = with pkgs; [
bind # utilisé pour les utilitaires comme dig
byobu # permet de se déconnecter d'un terminal sans l'aréter
dhcp # client dhcp
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
lsb-release # pour les scripts qui utilisent cet outil
#libressl # librairie pour faire du TLS et les algorithmes de crypto par OpenBSD
ncdu # outil pour voir l'espace utilisé
par2cmdline # outil de récupération de fichiers corrompus - .par2
p7zip # compression de fichier
parted # partitionnement de disque
pciutils
pinentry # pour taper les mots de passe gpg
psmisc # fournis les utilitaires comme killall, fuser, pstree
python # python -- python -m SimpleHTTPServer 8000
#python34Packages.glances # monitoring
pwgen # générateur de mot de passe
rtorrent # TODO 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";
gpg = "gpg2";

View File

@@ -24,4 +24,10 @@ mkIf cfg.laptop {
networkmanagerapplet # gestionnaire réseau graphique + console (nm-applet + nmtui)
wirelesstools # fournis iwconfig
];
# Services
services.xserver.synaptics = {
enable = true;
twoFingerScroll = true;
};
}

View File

@@ -1,64 +0,0 @@
{ config, lib, pkgs, ... }:
let
#inherit (lib) mkIf mkMerge mkThenElse;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
{
imports = [
# installées systématiquement
./environment.nix
./localisation.nix
./network.nix
#./network-ipv6.nix
./service-haveged.nix
./service-monitoring-munin.nix
./service-monitoring-smokeping.nix
./service-ssh.nix
./udev.nix
# commandées par config-generator
## option de configuration spécifique
./app-awesome.nix # pour le gestionaire de fenêtres awesome
./app-cao.nix # de conception assisté par ordinateur & modélisation
./app-cartographie.nix # manipuler les données géographiques & cartes
./app-developpement.nix # développer des programmes/scripts
./app-developpement-elm.nix # développer en elm
./app-developpement-haskell.nix # développer en haskell
./app-developpement-java.nix # développer en java
./app-developpement-jetbrains.nix # outils jetbrains
./app-developpement-rust.nix # développer en rust
./app-docker.nix # activer docker
./app-edition-musique.nix # modifier les fichiers musicaux
./app-edition-photo.nix # modifier les photos & assimilé
./app-edition-video.nix # modifier les vidéos
./app-jeux.nix # jouer, tout simplement ;)
./app-virtualbox.nix # activer 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-elasticsearch.nix # service de stockage et recher de données
./service-hydra-build.nix # service de construction de paquet. -> la machine compile des paquets
./service-hydra-core.nix # service pour l'instance d'hydra
./service-kibana.nix # service de visualisation de données stockées dans elasticsearch
./service-laptop.nix # services spécifiques aux pc portables
./service-locate.nix # service locate
./swap.nix # définition de l'utilisation du swap
./xmonad/xmonad.nix # pour le gestionaire de fenêtre xmonad
## if isDesktop
./app-adminsys.nix # pour gérer le système dans son ensemble et les services
./app-bureau.nix # éléments pour avoir un environement graphique minimal utilisable
./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, ...)
./hardware-scanner.nix # utilisation d'un scanner
./service-pulseaudio.nix # activation du serveur audio
./service-x11.nix # activation du serveur graphique X
];
}

View File

@@ -7,13 +7,10 @@ let
profiles = config.r6d.profiles;
in
mkIf cfg.laptop {
mkIf cfg.developpement-haskell {
# Gestion spécifique pour PC portable
# Services
services.xserver.synaptics = {
services.hoogle = {
enable = true;
twoFingerScroll = true;
# port 8080
};
}

View File

@@ -36,7 +36,7 @@ mkIf true {
address 127.0.0.1
'';
extraGlobalConfig = ''
contact.email.command ${pkgs.mutt}/bin/mutt -F /etc/nixos/base/public/munin-muttrc -s "Munin notification for ''${var:host}" jean-pierre@ocean.prunetwork.fr
contact.email.command ${pkgs.mutt}/bin/mutt -F /etc/nixos/base/public/services/munin-muttrc -s "Munin notification for ''${var:host}" jean-pierre@ocean.prunetwork.fr
'';
};

View File

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

View File

@@ -7,7 +7,7 @@ let
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
mkIf cfg.pulseaudio {
# Pulse Audio
hardware.pulseaudio = {

View File

@@ -7,12 +7,12 @@ let
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
mkIf profiles.isDesktopEnvironment {
# Services
# Enable the X11 windowing system.
services.xserver = {
#enable = true;
enable = true;
layout = "fr";
xkbOptions = "eurosign:e";
displayManager.lightdm.enable = true;