Compare commits

..

68 Commits

Author SHA1 Message Date
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
35e09f59d5 purge des copies des fichiers imprimés par cups 2016-07-31 23:47:36 +02:00
58 changed files with 680 additions and 345 deletions

View File

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

48
Makefile Normal file
View File

@@ -0,0 +1,48 @@
all: rebuild-switch
date
clean:
nix-collect-garbage -d --delete-older-than 15d
clean-aggressive:
nix-collect-garbage -d --delete-older-than 1d
clean-total:
nix-collect-garbage -d
clean-log:
journalctl --vacuum-size=1G
full-auto: submodules-update upgrade clean optimise
optimise:
nix-store --optimise
push: submodules-push
git push --all
git push --tags
rebuild-switch:
nixos-rebuild switch --fallback --show-trace
store-repair:
nix-store --verify --check-contents --repair
submodules-update:
#git submodule update --remote
git submodule foreach git co master
git submodule foreach git ff
submodules-push:
git submodule foreach git push --all
git submodule foreach git push --tags
submodules-tag:
git submodule foreach git tag -f "$$(date +%F)-$$(hostname -s)"
tag: submodules-tag
git tag -f "$$(date +%F)-$$(hostname -s)"
upgrade:
nixos-rebuild switch --upgrade --fallback --show-trace

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

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

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

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

View File

@@ -4,6 +4,10 @@ with pkgs.lib;
let
cfg = config.r6d.config-generator;
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 {
# Gestion de fail2ban
@@ -13,18 +17,16 @@ in {
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

@@ -2,13 +2,12 @@
{
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
];
}

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,24 +31,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 = {
@@ -129,8 +126,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,9 +143,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;
})
@@ -171,17 +170,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 +210,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 = {
@@ -246,8 +251,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,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,48 @@ 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
];
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 ];
};
}

View File

@@ -7,9 +7,5 @@ let
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
environment.systemPackages = with pkgs; [
];
mkIf true {
}

3
munin-www.sh Executable file
View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
pushd /var/www/munin/ && python -m SimpleHTTPServer 8000

View File

@@ -29,9 +29,6 @@ mkIf profiles.isDesktop {
lz4
lzop
# Mail
postfix
# Système de fichier
curlftpfs
gparted

View File

@@ -5,7 +5,9 @@ let
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

@@ -35,9 +35,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

@@ -7,11 +7,14 @@ let
profiles = config.r6d.profiles;
in
mkIf profiles.isDesktop {
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

@@ -12,13 +12,18 @@ mkIf profiles.isDesktop {
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

@@ -5,8 +5,9 @@ let
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
in mkIf cfg.docker {
mkIf cfg.docker {
environment.systemPackages = with pkgs; [
# Ecosystème Docker

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

View File

@@ -5,8 +5,9 @@ let
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
in mkIf cfg.jeux {
mkIf cfg.jeux {
environment.systemPackages = with pkgs; [
# Jeux

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

View File

@@ -15,19 +15,11 @@ mkIf profiles.isDesktop {
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 = {

View File

@@ -5,8 +5,9 @@ let
cfg = config.r6d.config-generator;
computers = config.r6d.computers;
profiles = config.r6d.profiles;
in
in mkIf cfg.virtualbox {
mkIf cfg.virtualbox {
environment.systemPackages = with pkgs; [
linuxPackages.virtualbox
@@ -15,4 +16,3 @@ in mkIf cfg.virtualbox {
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;
}

View File

@@ -5,9 +5,14 @@ let
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;
@@ -17,9 +22,4 @@ in mkIf cfg.laptop {
environment.systemPackages = with pkgs; [
networkmanagerapplet
];
services.xserver.synaptics = {
enable = true;
twoFingerScroll = true;
};
}

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;