déplacement de la configuration à la racine du dépôt (sauf rc.lua)
This commit is contained in:
@@ -1,62 +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
|
||||
|
||||
mkIf true {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Adminsys
|
||||
cowsay # pour ansible & 4lulz
|
||||
iotop
|
||||
lm_sensors
|
||||
lshw
|
||||
lsof
|
||||
ntp
|
||||
powerline-fonts
|
||||
powertop
|
||||
python27Packages.ansible2
|
||||
python27Packages.glances
|
||||
sysstat # pour la commande "iostat -x -1" de monitoring d'activité disque
|
||||
usbutils
|
||||
|
||||
# Backup
|
||||
duplicity # création de sauvegarde chiffrées (GPG)
|
||||
|
||||
# Compression
|
||||
lz4
|
||||
lzop
|
||||
|
||||
# Système de fichier
|
||||
## Montage de filesystem
|
||||
curlftpfs # ftp
|
||||
exfat # Pour monter les FAT avec Fuse
|
||||
hubicfuse # montage hubic
|
||||
ntfs3g # ntfs
|
||||
samba # partages windows
|
||||
squashfsTools # squashfs
|
||||
sshfsFuse # ssh
|
||||
|
||||
## Gestion de FS
|
||||
nfs-utils
|
||||
|
||||
## Exploitation FS
|
||||
inotify-tools # être notifié lorsque le contenu d'un répertoire change
|
||||
detox # The detox utility renames files to make them easier to work with.
|
||||
duff # outil de recherche de fichiers en doublons
|
||||
rdfind # recherche de fichiers doublons pour remplacement par hard/soft link
|
||||
|
||||
(mkIf profiles.isDesktopEnvironment
|
||||
## Gestion de FS
|
||||
gparted # Gestion graphique de partitions
|
||||
)
|
||||
(mkIf profiles.isDesktopEnvironment
|
||||
unetbootin # création de clefs USB bootables
|
||||
)
|
||||
];
|
||||
}
|
||||
@@ -1,52 +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
|
||||
|
||||
mkIf profiles.isDesktopEnvironment {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# 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
|
||||
xclip # manipulation du clipboard X depuis la console
|
||||
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
|
||||
gnome3.adwaita-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
|
||||
];
|
||||
|
||||
# Polices supplémentaires
|
||||
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
|
||||
hack-font # police monospace créée explicitement pour coder
|
||||
hasklig # police dérivée de source-code-pro mais avec des ligatures
|
||||
];
|
||||
|
||||
# Paquets avec setuid root
|
||||
security.wrappers = {
|
||||
# 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";
|
||||
};
|
||||
}
|
||||
@@ -1,53 +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
|
||||
|
||||
mkIf cfg.officeSuite {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Bureautique
|
||||
aspell aspellDicts.fr # correction d'ortographe
|
||||
gnumeric # tableur
|
||||
#kde4.ksnapshot# réalisation de capture d'écran
|
||||
|
||||
# Gestion de tâche
|
||||
taskwarrior # gestionnaire de tâches en console
|
||||
|
||||
## Cartes mentales
|
||||
freemind
|
||||
|
||||
## Diagrammes & Schémas
|
||||
dia # dessin & schéma technique
|
||||
|
||||
## Editeur de texte
|
||||
#lyx # surcouche WISIWIM à LaTeX
|
||||
#focuswriter # outil pour l'écriture
|
||||
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
|
||||
#odpdown # conversion md -> presentation ODP : https://github.com/thorstenb/odpdown
|
||||
pandoc
|
||||
haskellPackages.pandoc-citeproc
|
||||
texlive.combined.scheme-full # distribution LaTeX
|
||||
#texLive # distribution LaTeX de base
|
||||
#texLiveBeamer # paquets et extensions pour Beamer
|
||||
#texLiveModerncv # paquets pour la classe Modern CV
|
||||
];
|
||||
}
|
||||
@@ -1,24 +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
|
||||
|
||||
mkIf cfg.conception-assistee {
|
||||
|
||||
# Paquets
|
||||
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
|
||||
];
|
||||
}
|
||||
@@ -1,21 +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
|
||||
|
||||
mkIf cfg.cartographie {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Gestion de données géographiques
|
||||
expat
|
||||
gpsbabel # pour convettir les données des GPS
|
||||
josm # outil de contribution à OpenStreetMap
|
||||
#qgis # client lourd de manipulation de données géographiques
|
||||
viking # analyse de topo, gestion de données GPS
|
||||
];
|
||||
}
|
||||
@@ -1,57 +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
|
||||
# TODO: ménage
|
||||
mkIf cfg.internetSuite {
|
||||
|
||||
# Paquets
|
||||
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
|
||||
quassel
|
||||
quasselClient
|
||||
mumble
|
||||
mutt
|
||||
pidgin
|
||||
thunderbird
|
||||
|
||||
# Transfert de fichier
|
||||
filezilla
|
||||
transmission_gtk
|
||||
transmission_remote_gtk
|
||||
];
|
||||
|
||||
nixpkgs.config.packageOverrides = pkgs: {
|
||||
clawsMail = pkgs.clawsMail.override {
|
||||
enablePluginFancy = false; # nécessite wekitgtk qui est troué
|
||||
enablePluginPdf = true;
|
||||
enablePluginRavatar = true;
|
||||
enablePluginSmime = true;
|
||||
enablePluginVcalendar = true;
|
||||
enableSpellcheck = true;
|
||||
};
|
||||
mumble = pkgs.mumble.override { pulseSupport = true; };
|
||||
};
|
||||
|
||||
#nixpkgs.config.permittedInsecurePackages = [
|
||||
# "webkitgtk-2.4.11" # pour que le plugin fancy de claws-mail fonctionne
|
||||
#];
|
||||
|
||||
}
|
||||
@@ -1,42 +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
|
||||
|
||||
{
|
||||
|
||||
# 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
|
||||
];
|
||||
}
|
||||
@@ -1,26 +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
|
||||
|
||||
mkIf cfg.developpement-elm {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
elmPackages.elm
|
||||
];
|
||||
|
||||
# Services
|
||||
|
||||
# Réseau
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,34 +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
|
||||
|
||||
mkIf cfg.developpement-haskell {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Haskell platform
|
||||
cabal-install # fournis cabal
|
||||
cabal2nix # convertir les .cabal en .nix
|
||||
ghc # pour les appels depuis les scripts
|
||||
stack # pour les paquets en LTS de stackage
|
||||
] ++ (with pkgs.haskellPackages; [
|
||||
# Haskell lib
|
||||
autoproc # ? procmail
|
||||
darcs # Gestionnaire de version éponyme
|
||||
ghc-mod
|
||||
hindent # indentation code
|
||||
hlint # qualite de code, analyse statique de code + astuces & bonnes pratiques
|
||||
#postgrest # mapper HTTP <-> PostgreSQL
|
||||
stylish-haskell # qualité de code
|
||||
threadscope # visualisation des threads (<bidule>.eventlog)
|
||||
turtle # genre shell-scripting
|
||||
|
||||
# Application perso
|
||||
hahp
|
||||
]);
|
||||
}
|
||||
@@ -1,24 +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
|
||||
|
||||
mkIf cfg.developpement-java {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# IDE
|
||||
idea.idea-community # IntelliJ IDEA
|
||||
|
||||
# Java
|
||||
maven
|
||||
openjdk
|
||||
];
|
||||
environment.variables = {
|
||||
JAVA_HOME = "${pkgs.openjdk}";
|
||||
};
|
||||
}
|
||||
@@ -1,19 +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
|
||||
|
||||
mkIf cfg.jetbrains-licensed {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
idea.idea-ultimate
|
||||
idea.clion
|
||||
idea.datagrip
|
||||
idea.pycharm-professional
|
||||
];
|
||||
}
|
||||
@@ -1,18 +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
|
||||
|
||||
mkIf cfg.developpement-rust {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Rust
|
||||
cargo # récupération des dépendances + compilation projet rust
|
||||
rustc # pour les appels depuis les scripts
|
||||
];
|
||||
}
|
||||
@@ -1,45 +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
|
||||
|
||||
mkIf cfg.developpement {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Base de données
|
||||
pgadmin # interface d'administration de postgres
|
||||
sqlitebrowser # interface d'administration de sqlite
|
||||
|
||||
# C / C++
|
||||
gcc # pour les appels depuis les scripts
|
||||
|
||||
# Documentation
|
||||
#zeal # consulter la documentation hors ligne
|
||||
|
||||
# Gestion des sources
|
||||
cloc # outil pour compter les lignes de code source
|
||||
git # déjà présent dans "base"
|
||||
#gitg # interface pour utiliser git (historique, commit)
|
||||
gitstats # génère un site web statique avec des statistiques
|
||||
gitAndTools.gitFull # pour gitk
|
||||
git-cola # interface pour utiliser git (historique, commit)
|
||||
mercurial
|
||||
subversion
|
||||
|
||||
# Mono
|
||||
#mono46 # interpréteur .NET
|
||||
|
||||
## Visualisation & outils de diff
|
||||
#gource # visualisation en mouvement de l'historique git
|
||||
meld # outil de comparaison graphique
|
||||
#vbindiff # diff de fichier hexadecimaux avec vim
|
||||
|
||||
# Editeur texte
|
||||
atom
|
||||
];
|
||||
}
|
||||
@@ -1,19 +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
|
||||
|
||||
mkIf cfg.edition-musique {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
#
|
||||
audacity # montage audio
|
||||
easytag # gestion des métadonnées des fichiers musicaux
|
||||
picard # gestion des métadonnées des fichiers musicaux
|
||||
];
|
||||
}
|
||||
@@ -1,27 +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
|
||||
|
||||
mkIf cfg.edition-photo {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Méta données
|
||||
exif
|
||||
exiftags
|
||||
|
||||
# Retouche, modification & dessin vectoriel
|
||||
gimp # logiciel d'édition/montage/retouche photo
|
||||
inkscape # édition d'image vectorielle (svg & autre)
|
||||
imagemagick # modification image en CLI
|
||||
#rawtherapee # développemen de photos en RAW
|
||||
|
||||
# TEST d'outil de gestion de catalogue de photos
|
||||
#kde4.digikam # gestionnaire de bibliothèque de photo
|
||||
];
|
||||
}
|
||||
@@ -1,26 +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
|
||||
|
||||
mkIf cfg.edition-video {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Vidéo
|
||||
#cinelerra # editeur video
|
||||
pitivi # montage vidéo
|
||||
ffmpeg-full # assemblage de flux audio & video en ligne de commande
|
||||
];
|
||||
|
||||
nixpkgs.config.packageOverrides = pkgs: {
|
||||
ffmpeg-full = pkgs.ffmpeg-full.override {
|
||||
nonfreeLicensing = true;
|
||||
nvenc = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,17 +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
|
||||
|
||||
mkIf cfg.jeux {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Jeux
|
||||
urbanterror
|
||||
];
|
||||
}
|
||||
@@ -1,29 +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
|
||||
|
||||
# TODO ranger le spécifique pulseaudio
|
||||
mkIf cfg.multimediaSuite {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Multimedia
|
||||
|
||||
## Audio
|
||||
beep
|
||||
cmus # lecteur audio console
|
||||
espeak # synthèse vocale
|
||||
paprefs # préferences pulseaudio
|
||||
pavucontrol # mixer pulseaudio
|
||||
vorbis-tools # codec
|
||||
|
||||
## Video
|
||||
smplayer # lecteur vidéo
|
||||
vlc # lecteur vidéo
|
||||
];
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
in
|
||||
|
||||
mkIf true {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Outils réseau
|
||||
iperf # outil de mesure de la qualité du réseau
|
||||
iptraf-ng # outil de mesure de la qualité du réseau
|
||||
nload # affichage de statisques d'utilisation instantannées du réseau
|
||||
telnet
|
||||
|
||||
## Diagnostic
|
||||
arp-scan
|
||||
nmap # outil de scan de port réseau
|
||||
#wireshark
|
||||
whois
|
||||
];
|
||||
|
||||
# Paquets avec setuid root
|
||||
security.wrappers = {
|
||||
# outil de diagnostic réseau
|
||||
mtr.source = "${pkgs.mtr}/bin/mtr";
|
||||
};
|
||||
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [
|
||||
5201 # iperf
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
5201 # iperf
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,20 +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
|
||||
|
||||
mkIf cfg.securitySuite {
|
||||
|
||||
# Paquets
|
||||
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
|
||||
#yubikey-personalization-gui # utilisation de la clef Yubikey
|
||||
];
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
with import <nixpkgs> {};
|
||||
|
||||
vim_configurable.customize {
|
||||
# Specifies the vim binary name.
|
||||
# E.g. set this to "my-vim" and you need to type "my-vim" to open this vim
|
||||
# This allows to have multiple vim packages installed (e.g. with a different set of plugins)
|
||||
name = "vim";
|
||||
vimrcConfig.customRC = builtins.readFile ./vimrc;
|
||||
vimrcConfig.vam.knownPlugins = pkgs.vimPlugins;
|
||||
vimrcConfig.vam.pluginDictionaries = [
|
||||
{ names = [
|
||||
# Here you can place all your vim plugins
|
||||
# They are installed managed by `vam` (a vim plugin manager)
|
||||
#"vim-addon-nix"
|
||||
"elm-vim"
|
||||
"vim-nix"
|
||||
"wombat256-vim"
|
||||
]; }
|
||||
];
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
" Use Vim settings, rather than Vi settings (much better!).
|
||||
" This must be first, because it changes other options as a side effect.
|
||||
set nocompatible
|
||||
|
||||
" allow backspacing over everything in insert mode
|
||||
set backspace=indent,eol,start
|
||||
|
||||
if has("vms")
|
||||
set nobackup " do not keep a backup file, use versions instead
|
||||
else
|
||||
set backup " keep a backup file
|
||||
endif
|
||||
set history=50 " keep 50 lines of command line history
|
||||
set ruler " show the cursor position all the time
|
||||
set showcmd " display incomplete commands
|
||||
set incsearch " do incremental searching
|
||||
|
||||
" Tab specific option
|
||||
set tabstop=4 "A tab is 8 spaces
|
||||
set expandtab "Always uses spaces instead of tabs
|
||||
set softtabstop=4 "Insert 4 spaces when tab is pressed
|
||||
set shiftwidth=4 "An indent is 4 spaces
|
||||
set shiftround "Round indent to nearest shiftwidth multiple
|
||||
|
||||
"""""" Réglages cosmétiques
|
||||
set background=dark
|
||||
set number
|
||||
highlight ColorColumn ctermbg=8
|
||||
"Détection de la profondeur des couleurs (8bits)
|
||||
if &t_Co > 8
|
||||
colorscheme wombat256mod
|
||||
let &colorcolumn="80,".join(range(120,999),",")
|
||||
highlight ColorColumn ctermbg=235 guibg=#2c2d27
|
||||
endif
|
||||
@@ -1,16 +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
|
||||
|
||||
mkIf cfg.auto-upgrade {
|
||||
|
||||
# Automatic update & automatic clean
|
||||
|
||||
system.autoUpgrade.enable = true;
|
||||
nix.gc.automatic = true;
|
||||
}
|
||||
@@ -1,23 +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
|
||||
|
||||
# TODO: rc.lua par défaut (système)
|
||||
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}";
|
||||
};
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
# don't put duplicate lines in the history. See bash(1) for more options
|
||||
# don't overwrite GNU Midnight Commander's setting of `ignorespace'.
|
||||
export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups
|
||||
# ... or force ignoredups and ignorespace
|
||||
export HISTCONTROL=ignoreboth
|
||||
|
||||
# append to the history file, don't overwrite it
|
||||
shopt -s histappend
|
||||
|
||||
# check the window size after each command and, if necessary,
|
||||
# update the values of LINES and COLUMNS.
|
||||
shopt -s checkwinsize
|
||||
|
||||
# set a fancy prompt (non-color, unless we know we "want" color)
|
||||
case "$TERM" in
|
||||
xterm) TERM=xterm-256color;;
|
||||
screen) TERM=screen-256color;;
|
||||
esac
|
||||
@@ -1,27 +0,0 @@
|
||||
# Définition des couleurs du prompt
|
||||
if [[ $(tput colors) -ge 256 ]] 2>/dev/null; then
|
||||
PS1_USER='\[$(tput setaf 27)\]'
|
||||
PS1_HOST='\[$(tput setaf 37)\]'
|
||||
PS1_ROOT='\[$(tput setaf 160)\]'
|
||||
PS1_PATH='\[$(tput setaf 64)\]'
|
||||
PS1_GIT='\[$(tput setaf 136)\]'
|
||||
PS1_MISC='\[$(tput setaf 230)\]'
|
||||
|
||||
else
|
||||
PS1_USER='\[$(tput setaf 4)\]'
|
||||
PS1_HOST='\[$(tput setaf 6)\]'
|
||||
PS1_ROOT='\[$(tput setaf 1)\]'
|
||||
PS1_PATH='\[$(tput setaf 2)\]'
|
||||
PS1_GIT='\[$(tput setaf 3)\]'
|
||||
PS1_MISC='\[$(tput setaf 7)\]'
|
||||
fi
|
||||
BOLD='\[$(tput bold)\]'
|
||||
RESET='\[$(tput sgr0)\]'
|
||||
|
||||
# Définition du prompt
|
||||
if [ $UID = 0 ]; then
|
||||
PS1_ID=$PS1_ROOT
|
||||
else
|
||||
PS1_ID=$PS1_USER'\u'$PS1_MISC@$PS1_HOST
|
||||
fi
|
||||
PS1=$RESET$BOLD$PS1_ID'\h '$PS1_PATH'\w'$PS1_GIT'$(__git_ps1)'"\n"$PS1_MISC'\$ '$RESET
|
||||
@@ -1,65 +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
|
||||
|
||||
# TODO: ménage
|
||||
{
|
||||
# Nombre de process d'installation en parrallèle effectués par Nix
|
||||
nix.buildCores = 0;
|
||||
|
||||
# The NixOS release to be compatible with for stateful data such as databases.
|
||||
system.stateVersion = "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;
|
||||
|
||||
# On autorise les paquets non-libres
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# Lancement de dbus pour les utilisateurs
|
||||
services.dbus.socketActivated = true;
|
||||
|
||||
# NixOS Hardening
|
||||
#security.grsecurity.enable = true;
|
||||
|
||||
# Paquets
|
||||
environment = {
|
||||
shellAliases = {
|
||||
byobu = "byobu-tmux";
|
||||
gpg = "gpg2";
|
||||
jacques-a-dit = "sudo";
|
||||
tree = "tree -C";
|
||||
tree1 = "tree -d -L 1";
|
||||
tree2 = "tree -d -L 2";
|
||||
tree3 = "tree -d -L 3";
|
||||
# https://gist.github.com/amitchhajer/4461043 : Count number of code lines in git repository per user
|
||||
#git-loc = "git ls-files | while read f; do git blame --line-porcelain "${f}" | grep '^author '; done | sort -f | uniq -ic | sort -n";
|
||||
grep = "grep --color=auto";
|
||||
vi = "vim";
|
||||
byobu-adminsys = "/etc/nixos/base/byobu-adminsys";
|
||||
};
|
||||
etc.gitconfig.text = builtins.readFile ./gitconfig;
|
||||
};
|
||||
programs.bash = {
|
||||
enableCompletion = true;
|
||||
promptInit = builtins.readFile ./bash-prompt.sh;
|
||||
interactiveShellInit = builtins.readFile ./bash-interactive-init.sh;
|
||||
};
|
||||
|
||||
# https://wiki.mozilla.org/Security/Guidelines/OpenSSH#Modern
|
||||
programs.ssh.extraConfig = ''
|
||||
# Ensure KnownHosts are unreadable if leaked - it is otherwise easier to know which hosts your keys have access to.
|
||||
HashKnownHosts yes
|
||||
# Host keys the client accepts - order here is honored by OpenSSH
|
||||
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256
|
||||
|
||||
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp256,ecdh-sha2-nistp384,diffie-hellman-group-exchange-sha256
|
||||
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com
|
||||
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
|
||||
'';
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
# http://www.git-attitude.fr/2014/09/15/30-options-git-qui-gagnent-a-etre-connues/
|
||||
[color]
|
||||
diff = auto
|
||||
branch = auto
|
||||
interactive = auto
|
||||
pager = true
|
||||
showbranch = auto
|
||||
status = auto
|
||||
[alias]
|
||||
a = add -p
|
||||
br = for-each-ref --sort=committerdate refs/heads/ --format='%(committerdate:short)\t%(authorname)\t%(refname:short)'
|
||||
ci = commit
|
||||
co = checkout
|
||||
ff = pull --ff-only
|
||||
oops = commit --amend --no-edit
|
||||
# Show files ignored by git
|
||||
ignored = ls-files -o -i --exclude-standard
|
||||
ls = ls-files
|
||||
st = status
|
||||
# Logs
|
||||
lol = log --graph --decorate --pretty=oneline --abbrev-commit
|
||||
lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
|
||||
[push]
|
||||
default = simple
|
||||
[core]
|
||||
editor = /usr/bin/env vim
|
||||
@@ -1,33 +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
|
||||
|
||||
mkIf cfg.laptop {
|
||||
|
||||
# Gestion spécifique pour PC portable
|
||||
|
||||
## Gestion de l'énergie
|
||||
powerManagement.cpuFreqGovernor = "powersave";
|
||||
|
||||
## Activation d'un gestionnaire de réseau
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
networkmanagerapplet # gestionnaire réseau graphique + console (nm-applet + nmtui)
|
||||
wirelesstools # fournis iwconfig
|
||||
];
|
||||
|
||||
# Services
|
||||
services.xserver.synaptics = {
|
||||
enable = true;
|
||||
twoFingerScroll = true;
|
||||
};
|
||||
}
|
||||
@@ -1,21 +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
|
||||
|
||||
mkIf true {
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n = {
|
||||
consoleFont = "Lat2-Terminus16";
|
||||
consoleKeyMap = "fr";
|
||||
defaultLocale = "fr_FR.UTF-8";
|
||||
};
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "Europe/Paris";
|
||||
}
|
||||
@@ -1,29 +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
|
||||
|
||||
mkIf true {
|
||||
|
||||
# Utilisation d'adresse IPv6 temporaire
|
||||
|
||||
## https://blog.linitx.com/control-privacy-addressing-ipv6-linux/
|
||||
## http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/x1092.html
|
||||
|
||||
boot.kernel.sysctl = {
|
||||
"net.ipv6.conf.all.temp_prefered_lft" = 1800; # 30 min
|
||||
"net.ipv6.conf.all.temp_valid_lft" = 43200; # 12 heures
|
||||
"net.ipv6.conf.all.use_tempaddr" = 2; # activé
|
||||
|
||||
"net.ipv6.conf.default.temp_prefered_lft" = 3600; # 1 heure
|
||||
"net.ipv6.conf.default.temp_valid_lft" = 3600; # 1 heure
|
||||
"net.ipv6.conf.default.use_tempaddr" = 2; # activé
|
||||
|
||||
"net.ipv6.conf.all.forwarding" = true;
|
||||
"net.ipv6.conf.default.forwarding" = true;
|
||||
};
|
||||
}
|
||||
@@ -1,23 +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
|
||||
|
||||
mkIf true {
|
||||
|
||||
# fix: Hostname -s renvoie "Unknown host" alors que hostname renvoie la bonne valeur
|
||||
# Il s'avère que hostname vérifie la validité du FQDN et du reverse.
|
||||
# Fixer ces paramètres dans les hosts permet de faire tomber en marche
|
||||
networking.extraHosts = ''
|
||||
127.0.0.1 ${config.networking.hostName}
|
||||
'';
|
||||
|
||||
boot.kernel.sysctl = {
|
||||
"net.ipv4.conf.all.forwarding" = true;
|
||||
"net.ipv4.conf.default.forwarding" = true;
|
||||
};
|
||||
}
|
||||
@@ -1,20 +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
|
||||
|
||||
mkIf cfg.swap {
|
||||
|
||||
# Gestion du swap
|
||||
|
||||
# https://en.wikipedia.org/wiki/Swappiness
|
||||
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;
|
||||
};
|
||||
}
|
||||
@@ -1,18 +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
|
||||
|
||||
mkIf false {
|
||||
# Définition du IO Scheduler pour les SSD
|
||||
services.udev.extraRules = ''
|
||||
# set deadline scheduler for non-rotating disks
|
||||
# according to https://wiki.debian.org/SSDOptimization, deadline is preferred over noop
|
||||
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
|
||||
'';
|
||||
|
||||
}
|
||||
@@ -1,65 +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
|
||||
./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
|
||||
];
|
||||
}
|
||||
@@ -1,20 +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
|
||||
|
||||
mkIf cfg.docker {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Ecosystème Docker
|
||||
docker
|
||||
python27Packages.docker_compose
|
||||
];
|
||||
|
||||
virtualisation.docker.enable = true;
|
||||
}
|
||||
@@ -1,34 +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
|
||||
|
||||
mkIf cfg.elasticsearch {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
];
|
||||
|
||||
# Services
|
||||
|
||||
## E : http://localhost:9200/_cat/indices?v
|
||||
services.elasticsearch = {
|
||||
enable = true;
|
||||
port = 9200;
|
||||
listenAddress = "127.0.0.1";
|
||||
#listenAddress = "_site_";
|
||||
};
|
||||
|
||||
# Réseau
|
||||
# -> Aucun port n'est ouvert caril est recommandé de mettre un proxy HTTP devant
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,21 +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
|
||||
|
||||
mkIf true {
|
||||
|
||||
# Sécurité & Accès distant
|
||||
# Services
|
||||
|
||||
## Augmentation de l'entropie du système par un générateur de nombres aléatoires
|
||||
## cat /proc/sys/kernel/random/entropy_avail
|
||||
services.haveged = {
|
||||
enable = true;
|
||||
refill_threshold = 2048;
|
||||
};
|
||||
}
|
||||
@@ -1,16 +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
|
||||
|
||||
mkIf cfg.developpement-haskell {
|
||||
|
||||
services.hoogle = {
|
||||
enable = true;
|
||||
# port 8080
|
||||
};
|
||||
}
|
||||
@@ -1,45 +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
|
||||
# TODO: ménage
|
||||
mkIf cfg.hydra-builder {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
qemu
|
||||
kvm
|
||||
];
|
||||
|
||||
# Services
|
||||
|
||||
## Services de virtualisation utilisé pour les tests hydra
|
||||
virtualisation.docker.enable = true;
|
||||
virtualisation.libvirtd.enable = true;
|
||||
virtualisation.libvirtd.enableKVM = true;
|
||||
#virtualisation.virtualbox.guest.enable = true;
|
||||
virtualisation.virtualbox.host.enable = true;
|
||||
virtualisation.virtualbox.host.headless = true;
|
||||
|
||||
## Ménage automatique tous les jours
|
||||
nix.gc.automatic = true;
|
||||
|
||||
# users.users."hydrabld" = {
|
||||
# description = "Execution des jobs hydra";
|
||||
# group = "nixbld";
|
||||
# extraGroups = [
|
||||
# "docker"
|
||||
# "nixbld"
|
||||
# "vboxusers"
|
||||
# ];
|
||||
# isNormalUser = true; # devrait être à false: TODO débugger la conf ssh & users pour que ça marche en user système
|
||||
|
||||
# openssh.authorizedKeys.keys = [
|
||||
# "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGYpjcWJCf8dXpv2LmoIaNVbwZXEC50QUU6Az+lqeD89 hydra radx"
|
||||
# ];
|
||||
# };
|
||||
}
|
||||
@@ -1,93 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkIf mkMerge mkThenElse;
|
||||
cfg = config.r6d.config-generator;
|
||||
computers = config.r6d.computers;
|
||||
profiles = config.r6d.profiles;
|
||||
|
||||
|
||||
#### https://github.com/NixOS/hydra/issues/413
|
||||
# Note that we use 'import <nixpkgs> {}' instead of 'pkgs'.
|
||||
# If we use the latter we get an infinite recursion
|
||||
# because we include hydra-src in the module imports below which in turn defines the 'pkgs' value.
|
||||
#hydra-src = (import <nixpkgs> {}).fetchgit {
|
||||
# url = "https://github.com/NixOS/hydra.git";
|
||||
# rev = "de55303197d997c4fc5503b52b1321ae9528583d";
|
||||
# sha256 = "0nimqsbpjxfwha6d5gp6a7jh50i83z1llmx30da4bscsic8z1xly";
|
||||
#};
|
||||
|
||||
#hydra-src-pkg = lib.mkDefault ((import (hydra-src + /release.nix) {}).build.x86_64-linux);
|
||||
|
||||
# information pour l'état de hydra :
|
||||
# hydra-queue-runner --status | json_pp
|
||||
in
|
||||
# TODO: passe de ménage
|
||||
mkIf cfg.hydra-core {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
];
|
||||
|
||||
# Documentation HYDRA
|
||||
|
||||
## Installation
|
||||
|
||||
# 1. créer clef SSH :
|
||||
# ssh-keygen -C "hydra@pedro.dubronetwork.fr" -N "" -f /etc/nixos/id_buildfarm
|
||||
# 2. récupérer la clef publique du serveur ssh + l'ajouter dans les `knownHosts` :
|
||||
# ssh-keyscan localhost
|
||||
# 3. créer un utilisateur pour gérer hydra
|
||||
# su - hydra
|
||||
# hydra-create-user jpierre03 --password xxx --role 'admin'
|
||||
# 4. relancer hydra
|
||||
# 5. ajouter un vhost à nginx
|
||||
# 6. relancer nginx
|
||||
# 7. le service accessible à hydra.<nom de machine>
|
||||
|
||||
## Tutoriel
|
||||
# * https://github.com/peti/hydra-tutorial
|
||||
|
||||
# Services
|
||||
|
||||
## Hydra
|
||||
|
||||
services.hydra = {
|
||||
enable = true;
|
||||
hydraURL = "http://hydra.${config.networking.hostName}";
|
||||
notificationSender = "hydra@${config.networking.hostName}";
|
||||
listenHost = "localhost";
|
||||
minimumDiskFree = 50; # Go
|
||||
smtpHost = "localhost";
|
||||
#package = hydra-src-pkg ;
|
||||
};
|
||||
|
||||
#systemd.services.hydra-evaluator = {
|
||||
# path = [ pkgs.nettools config.services.hydra.package ];
|
||||
#};
|
||||
|
||||
## Ménage
|
||||
#nix.gc.automatic = true;
|
||||
|
||||
## Délégation des actions de compilation à la ferme de compilation
|
||||
|
||||
### Machines connues
|
||||
|
||||
programs.ssh.knownHosts = {
|
||||
"hydra.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHqja/yYsQeS5amZKPUG+EKSIkjEN6fYW54Fzvj1pFaP";
|
||||
"monstre.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBTTrLhq1Cwm0rpnwEIxSLqVrJWZnt+/9dt+SKd8NiIc";
|
||||
"pedro.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM7fjo2ysLqlfSo6BKnc6I6m1ayoPrbwEEyTKZmUzsOD";
|
||||
"ocean.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINCaRuTl8iCTUE4XInOpkSlwQj5Re4w4Iq+gNIlJe8pA";
|
||||
"radx.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGyoXdTEnxSgZTMfRfVH+bpOGZJtJpydAijcRGsZik7U";
|
||||
"rollo.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID4lWgS/sVdcZvnAAN+lBSOcCL9ISdAUsjp1kh9lalNu";
|
||||
};
|
||||
|
||||
### La liste des machines utilisées
|
||||
nix = {
|
||||
distributedBuilds = false;
|
||||
buildMachines = [
|
||||
# { hostName = "pedro.dubronetwork.fr"; maxJobs = 5; speedFactor = 10; sshKey = "/etc/nixos/id_buildfarm"; sshUser = "root"; system = "x86_64-linux"; }
|
||||
];
|
||||
extraOptions = "auto-optimise-store = true";
|
||||
};
|
||||
}
|
||||
@@ -1,33 +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
|
||||
|
||||
mkIf cfg.kibana {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
];
|
||||
|
||||
# Services
|
||||
|
||||
# K : http://localhost:8000
|
||||
services.kibana = {
|
||||
enable = true;
|
||||
elasticsearch.url = "http://127.0.0.1:9200";
|
||||
port = 8000;
|
||||
};
|
||||
|
||||
# Réseau
|
||||
# -> Aucun port n'est ouvert caril est recommandé de mettre un proxy HTTP devant
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,17 +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
|
||||
|
||||
mkIf cfg.locate {
|
||||
|
||||
# Services
|
||||
services.locate = {
|
||||
enable = true;
|
||||
interval = "hourly";
|
||||
};
|
||||
}
|
||||
@@ -1,51 +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
|
||||
|
||||
# TODO: ajouter option
|
||||
# TODO: changer adresse mail
|
||||
mkIf true {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
bc
|
||||
mailutils
|
||||
];
|
||||
|
||||
# Services
|
||||
|
||||
## Noeud de supervision munin = pas de stockage des données locales
|
||||
services.munin-node = {
|
||||
enable = true;
|
||||
};
|
||||
systemd.services.munin-node = {
|
||||
path = with pkgs; [ munin lm_sensors ];
|
||||
serviceConfig.TimeoutStartSec = "3min";
|
||||
};
|
||||
|
||||
## Munin server -- generate /var/www/munin
|
||||
services.munin-cron = {
|
||||
enable = true;
|
||||
hosts = ''
|
||||
[${config.networking.hostName}]
|
||||
address 127.0.0.1
|
||||
'';
|
||||
extraGlobalConfig = ''
|
||||
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
|
||||
'';
|
||||
};
|
||||
|
||||
# Réseau
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [
|
||||
#8000
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,198 +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
|
||||
|
||||
mkIf cfg.smokeping {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
bind
|
||||
];
|
||||
|
||||
# Paquets avec setuid root
|
||||
security.wrappers = {
|
||||
# outil de diagnostic réseau
|
||||
fping.source = "${pkgs.fping}/bin/fping";
|
||||
};
|
||||
|
||||
# Services
|
||||
|
||||
services.smokeping = {
|
||||
enable = true;
|
||||
probeConfig = ''
|
||||
+ FPing
|
||||
#binary = ${pkgs.fping}/bin/fping
|
||||
binary = ${config.security.wrapperDir}/fping
|
||||
|
||||
+DNS
|
||||
#binary = ${pkgs.bind}/bin/dig
|
||||
binary = /run/current-system/sw/bin/dig
|
||||
forks = 5
|
||||
offset = 50%
|
||||
step = 300
|
||||
timeout = 15
|
||||
'';
|
||||
targetConfig = ''
|
||||
probe = FPing
|
||||
menu = Top
|
||||
title = Suivi de la latence reseau
|
||||
remark = Monitoring de la latence reseau. \
|
||||
Here you will learn all about the latency of our network.
|
||||
+ Local
|
||||
probe = FPing
|
||||
menu = Local
|
||||
title = Local Network
|
||||
++ LocalMachine
|
||||
menu = Local Machine
|
||||
title = This host
|
||||
host = localhost
|
||||
|
||||
+ Grudu_Tinc
|
||||
probe = FPing
|
||||
title = Grudu_Tinc
|
||||
menu = Grudu.net - Tinc
|
||||
|
||||
++ Hydra
|
||||
menu = hydra.grudu.net
|
||||
title = hydra.grudu.net
|
||||
host = hydra.grudu.net
|
||||
|
||||
++ Monstre
|
||||
menu = monstre.grudu.net
|
||||
title = monstre.grudu.net
|
||||
host = monstre.grudu.net
|
||||
|
||||
++ Rollo
|
||||
menu = rollo.grudu.net
|
||||
title = rollo.grudu.net
|
||||
host = rollo.grudu.net
|
||||
|
||||
++ Ocean
|
||||
menu = ocean.grudu.net
|
||||
title = ocean.grudu.net
|
||||
host = ocean.grudu.net
|
||||
|
||||
++ MultiHost
|
||||
menu = Multihost
|
||||
title = Ensemble de mesures de latence
|
||||
host = /Grudu_Tinc/Monstre /Grudu_Tinc/Rollo /Grudu_Tinc/Ocean /Grudu_Tinc/Hydra
|
||||
|
||||
+ Grudu_DNS
|
||||
title = Grudu_DNS
|
||||
menu = Grudu.net - DNS
|
||||
probe = DNS
|
||||
pings = 5
|
||||
++ Ocean
|
||||
title = ocean
|
||||
menu = serveur ocean
|
||||
server = ocean.prunetwork.fr
|
||||
+++ ocean
|
||||
host = ocean.grudu.net
|
||||
lookup = ocean.grudu.net
|
||||
+++ rollo
|
||||
host = rollo.grudu.net
|
||||
lookup = rollo.grudu.net
|
||||
++ Rollo
|
||||
title = rollo
|
||||
menu = serveur rollo
|
||||
server = rollo.dubronetwork.fr
|
||||
+++ ocean
|
||||
host = ocean.grudu.net
|
||||
lookup = ocean.grudu.net
|
||||
+++ rollo
|
||||
host = rollo.grudu.net
|
||||
lookup = rollo.grudu.net
|
||||
++ MultiHost
|
||||
menu = Multihost
|
||||
title = Ensemble de mesures DNS
|
||||
host = /Grudu_DNS/Ocean/ocean /Grudu_DNS/Ocean/rollo /Grudu_DNS/Rollo/ocean /Grudu_DNS/Rollo/rollo
|
||||
+ France
|
||||
probe = FPing
|
||||
title = France
|
||||
menu = Operateur francais
|
||||
|
||||
++ Atos
|
||||
menu = Atos
|
||||
title = www.atos.fr
|
||||
host = www.atos.fr
|
||||
|
||||
++ Axialys
|
||||
menu = Axialys
|
||||
title = www.axialys.fr
|
||||
host = www.axialys.fr
|
||||
|
||||
++ Azurtel
|
||||
menu = azurtel
|
||||
title = www.azurtel.fr
|
||||
host = www.azurtel.fr
|
||||
|
||||
++ Bouygues-Telecom
|
||||
menu = Bouygues-Telecom
|
||||
title = www.bouygues-telecom.fr
|
||||
host = www.bouygues-telecom.fr
|
||||
|
||||
++ Colt
|
||||
menu = Colt
|
||||
title = www.colt.fr
|
||||
host = www.colt.fr
|
||||
|
||||
++ Completel
|
||||
menu = completel
|
||||
title = www.completel.fr
|
||||
host = www.completel.fr
|
||||
|
||||
++ Free
|
||||
menu = Free
|
||||
title = www.free.fr
|
||||
host = www.free.fr
|
||||
|
||||
++ Kosmos
|
||||
menu = Kosmos
|
||||
title = www.kosmos.fr
|
||||
host = www.kosmos.fr
|
||||
|
||||
++ Orange
|
||||
menu = Orange
|
||||
title = www.orange.fr
|
||||
host = www.orange.fr
|
||||
|
||||
++ Renater
|
||||
menu = Renater
|
||||
title = www.renater.fr
|
||||
host = www.renater.fr
|
||||
|
||||
++ SFR
|
||||
menu = SFR
|
||||
title = www.sfr.fr
|
||||
host = www.sfr.fr
|
||||
|
||||
++ MultiHost
|
||||
menu = Multihost
|
||||
title = Ensemble de mesures de latence
|
||||
host = /France/Atos /France/Axialys /France/Azurtel \
|
||||
/France/Bouygues-Telecom \
|
||||
/France/Completel \
|
||||
/France/Free \
|
||||
/France/Kosmos \
|
||||
/France/Orange \
|
||||
/France/Renater \
|
||||
/France/SFR
|
||||
|
||||
# /France/Colt
|
||||
'';
|
||||
};
|
||||
|
||||
# Réseau
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [
|
||||
#8081 # accès depuis localhost uniquement ou à travers un proxy nginx
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
set copy=no
|
||||
set realname = "Munin daemon"
|
||||
|
||||
@@ -1,27 +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
|
||||
|
||||
mkIf cfg.print {
|
||||
|
||||
# Services
|
||||
## 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
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,18 +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
|
||||
|
||||
mkIf cfg.pulseaudio {
|
||||
|
||||
# Pulse Audio
|
||||
hardware.pulseaudio = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
daemon.config = { flat-volumes = "no"; };
|
||||
};
|
||||
}
|
||||
@@ -1,27 +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
|
||||
|
||||
mkIf cfg.scanner {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
simple-scan
|
||||
];
|
||||
|
||||
# Services
|
||||
hardware.sane.enable = true;
|
||||
|
||||
# Réseau
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,31 +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
|
||||
|
||||
mkIf true {
|
||||
|
||||
# Services
|
||||
## OpenSSH daemon
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
# https://wiki.mozilla.org/Security/Guidelines/OpenSSH#Modern_.28OpenSSH_6.7.2B.29
|
||||
# http://www.cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html
|
||||
extraConfig = ''
|
||||
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
|
||||
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
|
||||
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com
|
||||
|
||||
# LogLevel VERBOSE logs user's key fingerprint on login. Needed to have a clear audit track of which key was using to log in.
|
||||
LogLevel VERBOSE
|
||||
|
||||
# Use kernel sandbox mechanisms where possible in unprivilegied processes
|
||||
# Systrace on OpenBSD, Seccomp on Linux, seatbelt on MacOSX/Darwin, rlimit elsewhere.
|
||||
UsePrivilegeSeparation sandbox
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,27 +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
|
||||
|
||||
mkIf cfg.virtualbox {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
linuxPackages.virtualbox
|
||||
linuxPackages.virtualboxGuestAdditions
|
||||
];
|
||||
|
||||
# À décommenter pour activer le pack d'extension
|
||||
#boot.kernelPackages = pkgs.linuxPackages // {
|
||||
# virtualbox = pkgs.linuxPackages.virtualbox.override {
|
||||
# enableExtensionPack = true;
|
||||
# pulseSupport = true;
|
||||
# };
|
||||
#};
|
||||
|
||||
virtualisation.virtualbox.host.enable = true;
|
||||
}
|
||||
@@ -1,45 +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
|
||||
|
||||
mkIf profiles.isDesktopEnvironment {
|
||||
|
||||
# Services
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
layout = "fr";
|
||||
xkbOptions = "eurosign:e";
|
||||
displayManager.lightdm.enable = true;
|
||||
windowManager.awesome.enable = true;
|
||||
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.
|
||||
''];
|
||||
};
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
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>"
|
||||
}
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
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)
|
||||
|
||||
@@ -1,30 +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
|
||||
|
||||
mkIf cfg.xmonad {
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
dmenu
|
||||
haskellPackages.xmobar
|
||||
trayer
|
||||
];
|
||||
|
||||
# Services
|
||||
services.xserver.windowManager.xmonad = {
|
||||
enable = true;
|
||||
enableContribAndExtras = true;
|
||||
extraPackages = haskellPackages: [
|
||||
haskellPackages.xmobar
|
||||
];
|
||||
};
|
||||
environment.variables = {
|
||||
_JAVA_AWT_WM_NONREPARENTING = "1";
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user