Compare commits

..

121 Commits

Author SHA1 Message Date
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
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
Yves Dubromelle
e0cd512f87 petits outils pour xorg : xev et xbacklight 2016-07-21 00:44:23 +02:00
Yves Dubromelle
51787ab25b configuration pour xmonad 2016-07-21 00:22:31 +02:00
7e9a8131a3 déplacement de la définition de la variable awesome 2016-07-18 12:44:20 +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
50083e7d93 xkill 2016-07-13 23:21:59 +02:00
a5f3e7f87d ajout de zeal (explorateur de doc offline) 2016-07-13 16:58:31 +02:00
3180832a1f ajout de paquets utilisés sur radx 2016-07-11 14:30:55 +02:00
49dfc7eeb0 uniformisation des en-tetes 2016-07-10 22:06:26 +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
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
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
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
57 changed files with 1011 additions and 144 deletions

View File

@@ -23,7 +23,7 @@ push: submodules-push
git push --tags
rebuild-switch:
nixos-rebuild switch --fallback
nixos-rebuild switch --fallback --show-trace
store-repair:
nix-store --verify --check-contents --repair
@@ -44,5 +44,5 @@ tag: submodules-tag
git tag -f "$$(date +%F)-$$(hostname -s)"
upgrade:
nixos-rebuild switch --upgrade --fallback
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,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,15 +0,0 @@
{ 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
];
};
}

File diff suppressed because one or more lines are too long

View File

@@ -1,14 +1,13 @@
{ config, pkgs, ... }:
{ ... }:
{
imports = [
./environment.nix
./localisation.nix
./monitoring.nix
./networking.nix
./services.nix
# recettes
./base/base.nix
./desktop/desktop.nix
./public/public.nix
# inclusion conditionnelle
# moulinette de configuration
./config-generator.nix
];
}

1
base/Makefile Symbolic link
View File

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

File diff suppressed because one or more lines are too long

13
base/base.nix Normal file
View File

@@ -0,0 +1,13 @@
{ config, pkgs, ... }:
{
imports = [
./network-dns.nix
# inclusion conditionnelle
./activation-manuelle/fail2ban.nix
./activation-manuelle/nix-serve-client.nix
./activation-manuelle/nix-serve-server.nix
./activation-manuelle/users.nix
];
}

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

@@ -0,0 +1,14 @@
{ config, pkgs, ... }:
{
# Définition des domaines utilisés lorsque un identifiant non-FQDN est donné (ping, nslookup)
networking = {
search = [
"dubronetwork.fr"
"prunetwork.fr"
"teleragno.fr"
"teleragno.net"
];
dnsExtensionMechanism = true;
};
}

View File

@@ -9,19 +9,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,21 +31,30 @@ 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.";
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.";
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.";
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 = {
@@ -68,6 +65,7 @@ in
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.";
};
};
@@ -87,6 +85,7 @@ in
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";
};
}
@@ -124,7 +123,13 @@ in
r6d.profiles.isDesktop = true;
r6d.config-generator = {
cartographie = true;
developpement = true;
docker = true;
edition-musique = true;
edition-photo = true;
edition-video = true;
};
})
@@ -132,7 +137,6 @@ in
(mkIf pfl.isDubronetwork {
r6d.config-generator = {
auto-upgrade = true;
nix-serve-client = true;
print = true;
};
})
@@ -144,6 +148,7 @@ in
})
(mkIf (pfl.isDubronetwork && pfl.isWorkstation) {
r6d.config-generator = {
conception-assistee = true;
virtualbox = true;
xmonad = true;
};
@@ -165,6 +170,10 @@ in
isPrunetwork = true;
isServer = true;
};
r6d.config-generator = {
docker = true;
};
})
(mkIf comp.isRadx {
r6d.profiles = {
@@ -233,5 +242,18 @@ in
nix-serve-server = true;
};
})
(mkIf comp.isRollo {
r6d.profiles = {
isDubronetwork = true;
isServer = true;
};
r6d.config-generator = {
fail2ban = 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

@@ -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
];
};
}

57
desktop/desktop.nix Normal file
View File

@@ -0,0 +1,57 @@
{ 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/xmonad/xmonad.nix # gestionnaire de fenêtres xmonad
];
environment.systemPackages = with pkgs; mkIf profiles.isDesktop [
# Environement de bureau
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'
## 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
];
# 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; };
};
}

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 ];
};
}

43
public/app-adminsys.nix Normal file
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; [
# Adminsys
iotop
lm_sensors
lshw
lsof
ntp
powerline-fonts
powertop
python27Packages.ansible2
python27Packages.glances
usbutils
# DNS
unbound
# Compression
lz4
lzop
# Système de fichier
curlftpfs
gparted
inotify-tools
nfs-utils
ntfs3g
sshfsFuse
#
unetbootin # création de clefs USB bootables
];
}

22
public/app-awesome.nix Normal file
View File

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

23
public/app-cao.nix Normal file
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,20 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf cfg.cartographie {
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

@@ -0,0 +1,38 @@
{ 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
chromium
firefox
## 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
pidgin
thunderbird
# Transfert de fichier
filezilla
transmission_gtk
transmission_remote_gtk
];
}

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
];
}

19
public/app-docker.nix Normal file
View File

@@ -0,0 +1,19 @@
{ 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,18 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf cfg.edition-musique {
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,26 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf cfg.edition-photo {
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

@@ -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 cfg.edition-video {
environment.systemPackages = with pkgs; [
# Vidéo
#cinelerra # editeur video
pitivi # montage vidéo
];
}

16
public/app-jeux.nix Normal file
View File

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

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

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

29
public/app-network.nix Normal file
View File

@@ -0,0 +1,29 @@
{ 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
## Diagnostic
arp-scan
wireshark
whois
];
networking.firewall = {
allowedTCPPorts = [5201]; # iperf
allowedUDPPorts = [5201]; # iperf
};
}

20
public/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
];
}

18
public/app-virtualbox.nix Normal file
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;
}

15
public/auto-upgrade.nix Normal file
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.auto-upgrade {
# Automatic update & automatic clean
system.autoUpgrade.enable = true;
nix.gc.automatic = true;
}

25
public/laptop.nix Normal file
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 {
# 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;
environment.systemPackages = with pkgs; [
networkmanagerapplet
];
}

View File

@@ -1,17 +1,6 @@
{ config, pkgs, ... }:
{
# Définition des domaines utilisés lorsque un identifiant non-FQDN est donné (ping, nslookup)
networking = {
search = [
"dubronetwork.fr"
"prunetwork.fr"
"teleragno.fr"
"teleragno.net"
];
dnsExtensionMechanism = true;
};
# Utilisation d'adresse IPv6 temporaire
## https://blog.linitx.com/control-privacy-addressing-ipv6-linux/

25
public/print.nix Normal file
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.print {
# Enable CUPS to print documents.
services.printing = {
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
'';
};
}

42
public/public.nix Normal file
View File

@@ -0,0 +1,42 @@
{ config, pkgs, ... }:
{
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,12 @@
{ 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;
};
}

18
public/service-laptop.nix Normal file
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.laptop {
# Gestion spécifique pour PC portable
services.xserver.synaptics = {
enable = true;
twoFingerScroll = true;
};
}

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

@@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
mkIf cfg.locate {
services.locate = {
enable = true;
interval = "hourly";
};
}

View File

@@ -1,11 +1,14 @@
# 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
# Monitoring
# 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 = ''
@@ -13,12 +16,13 @@
address localhost
'';
extraGlobalConfig = ''
contact.email.command mail -s "Munin notification for ''${var:host}" hostmaster@prunetwork.fr
contact.email.command mail -s "Munin notification for ''${var:host}" root@${config.networking.hostName}
'';
};
networking.firewall.allowedTCPPorts = [
# TODO configurer les bon ports lors de l'ouverture du service
8000
];
## Documentation

View File

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

View File

@@ -1,16 +1,7 @@
{ 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
# OpenSSH daemon
services.openssh = {
enable = true;
# https://wiki.mozilla.org/Security/Guidelines/OpenSSH#Modern_.28OpenSSH_6.7.2B.29
@@ -27,12 +18,4 @@
UsePrivilegeSeparation sandbox
'';
};
# Monitoring
## Noeud de supervision munin = pas de stockage des données locales
services.munin-node = {
enable = true;
};
}

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

@@ -0,0 +1,45 @@
{ config, pkgs, ... }:
let
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
mkIf = pkgs.lib.mkIf;
in
{
# 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.
''];
};
}

View File

@@ -1,14 +1,17 @@
{ config, pkgs, ... }:
with pkgs.lib;
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
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;

View File