diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..95a6d7d --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +# Vim : +## swap +[._]*.s[a-w][a-z] +[._]s[a-w][a-z] +## session +Session.vim +## temporary +.netrwhist +*~ +## auto-generated tag files +tags diff --git a/desktop/activation-manuelle/app-awesome.nix b/desktop/activation-manuelle/app-awesome.nix new file mode 100644 index 0000000..abc751a --- /dev/null +++ b/desktop/activation-manuelle/app-awesome.nix @@ -0,0 +1,20 @@ +{ config, lib, pkgs, ... }: + +let + inherit (lib) mkIf; + cfg = config.r6d.config-generator; + computers = config.r6d.computers; + profiles = config.r6d.profiles; +in mkIf cfg.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}"; + }; +} diff --git a/desktop/activation-manuelle/app-docker.nix b/desktop/activation-manuelle/app-docker.nix new file mode 100644 index 0000000..69bc060 --- /dev/null +++ b/desktop/activation-manuelle/app-docker.nix @@ -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.docker { + + environment.systemPackages = with pkgs; [ + # Ecosystème Docker + docker + python27Packages.docker_compose + ]; + + virtualisation.docker.enable = true; +} diff --git a/desktop/activation-manuelle/app-jeux.nix b/desktop/activation-manuelle/app-jeux.nix new file mode 100644 index 0000000..7371907 --- /dev/null +++ b/desktop/activation-manuelle/app-jeux.nix @@ -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.jeux { + + environment.systemPackages = with pkgs; [ + # Jeux + urbanterror + ]; +} diff --git a/desktop/activation-manuelle/app-virtualbox.nix b/desktop/activation-manuelle/app-virtualbox.nix new file mode 100644 index 0000000..47d461c --- /dev/null +++ b/desktop/activation-manuelle/app-virtualbox.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, ... }: + +let + inherit (lib) mkIf; + cfg = config.r6d.config-generator; + computers = config.r6d.computers; + profiles = config.r6d.profiles; + +in mkIf cfg.virtualbox { + + environment.systemPackages = with pkgs; [ + linuxPackages.virtualbox + linuxPackages.virtualboxGuestAdditions + ]; + + virtualisation.virtualbox.host.enable = true; +} + diff --git a/desktop/activation-manuelle/laptop.nix b/desktop/activation-manuelle/laptop.nix new file mode 100644 index 0000000..f31a388 --- /dev/null +++ b/desktop/activation-manuelle/laptop.nix @@ -0,0 +1,25 @@ +{ config, lib, pkgs, ... }: + +let + inherit (lib) mkIf; + cfg = config.r6d.config-generator; + computers = config.r6d.computers; + profiles = config.r6d.profiles; + +in mkIf cfg.laptop { + # Paquets spécifiques pour un ordinateur portable + + ## Activation d'un gestionnaire de réseau + networking.networkmanager.enable = true; + + hardware.bluetooth.enable = true; + + environment.systemPackages = with pkgs; [ + networkmanagerapplet + ]; + + services.xserver.synaptics = { + enable = true; + twoFingerScroll = true; + }; +} diff --git a/desktop/activation-manuelle/xmonad.nix b/desktop/activation-manuelle/xmonad.nix new file mode 100644 index 0000000..bb46a15 --- /dev/null +++ b/desktop/activation-manuelle/xmonad.nix @@ -0,0 +1,24 @@ +{ config, lib, pkgs, ... }: + +let + inherit (lib) mkIf; + cfg = config.r6d.config-generator; + computers = config.r6d.computers; + profiles = config.r6d.profiles; + +in mkIf cfg.xmonad { + # Paquets spécifiques pour xmonad + + environment.systemPackages = with pkgs;[ + dmenu + haskellPackages.xmobar + ]; + + services.xserver.windowManager.xmonad = { + enable = true; + enableContribAndExtras = true; + extraPackages = haskellPackages: [ + haskellPackages.xmobar + ]; + }; +} diff --git a/desktop/app-adminsys.nix b/desktop/app-adminsys.nix new file mode 100644 index 0000000..359384d --- /dev/null +++ b/desktop/app-adminsys.nix @@ -0,0 +1,41 @@ +{ config, libs, pkgs, ... }: + +{ + imports = [ + ]; + + environment.systemPackages = with pkgs; [ + # Adminsys + iotop + lm_sensors + lshw + lsof + ntp + powerline-fonts + powertop + python27Packages.ansible2 + python27Packages.glances + usbutils + + # DNS + unbound + + # Compression + lz4 + lzop + + # Mail + postfix + + # Système de fichier + curlftpfs + gparted + inotify-tools + nfs-utils + ntfs3g + sshfsFuse + + # + unetbootin # création de clefs USB bootables + ]; +} diff --git a/desktop/app-bureautique.nix b/desktop/app-bureautique.nix new file mode 100644 index 0000000..50caa8a --- /dev/null +++ b/desktop/app-bureautique.nix @@ -0,0 +1,38 @@ +{ config, libs, pkgs, ... }: + +{ + imports = [ + ]; + + environment.systemPackages = with pkgs; [ + # Bureautique + aspell aspellDicts.fr + dia + gnumeric + + ## Cartes mentales + freemind + + ## Editeur de texte + lyx # surcouche WISIWIM à LaTeX + textadept # un éditeur de texte facile pour copier-coller graphique + zim # outil de prise de notes, wiki de bureau + + ## Visionneuse + kde5.okular # pdf + mcomix # livres (cbr, liste d'images), gestion d'une bibliothèque + pdfpc # pdf + qpdfview # pdf + gqview # visionneuse image & gestion basique de collection + + ## Convertisseurs (texte -> ) + gnuplot # générateur de graphes à partir de données numériques + graphviz # dot, neato : traçage de graphes (carré, rond) + jekyll # générateur statique de site web + pandoc + #texLiveFull # distribution LaTeX + texLive # distribution LaTeX de base + texLiveBeamer # paquets et extensions pour Beamer + texLiveModerncv # paquets pour la classe Modern CV + ]; +} diff --git a/desktop/app-cao.nix b/desktop/app-cao.nix new file mode 100644 index 0000000..8519a89 --- /dev/null +++ b/desktop/app-cao.nix @@ -0,0 +1,18 @@ +{ config, libs, pkgs, ... }: + +{ + imports = [ + ]; + + 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 + ]; +} diff --git a/desktop/app-client-internet.nix b/desktop/app-client-internet.nix new file mode 100644 index 0000000..3698f98 --- /dev/null +++ b/desktop/app-client-internet.nix @@ -0,0 +1,28 @@ +{ config, libs, pkgs, ... }: + +{ + imports = [ + ]; + + environment.systemPackages = with pkgs; [ + # Clients Internet + + ## Navigateur & Réseaux sociaux + chromium + firefox + python27Packages.turses # client twitter en ncurse + + ## Mail & Discussion (texte, audio) + clawsMail + kde5.quasselClient + mumble + mutt + pidgin + thunderbird + + # Transfert de fichier + filezilla + transmission_gtk + transmission_remote_gtk + ]; +} diff --git a/desktop/app-dev.nix b/desktop/app-dev.nix new file mode 100644 index 0000000..4c4a2d0 --- /dev/null +++ b/desktop/app-dev.nix @@ -0,0 +1,39 @@ +{ config, libs, pkgs, ... }: + +{ + imports = [ + ]; + + environment.systemPackages = with pkgs; [ + # Base de données + pgadmin + sqlitebrowser + + # Développement + cloc + idea.idea-community + gcc # pour les appels depuis les scripts + + # Documentation + zeal + + ## Gestion des sources + # git # déjà présent dans "base" + git-cola + mercurial + subversion + + ## Haskell + ghc + stack + + ## Rust + cargo # récupération des dépendances + compilation projet rust + rustPlatform.rustc + + ## Visualisation & outils de diff + gource + meld + vbindiff # diff de fichier hexadecimaux avec vim + ]; +} diff --git a/desktop/app-geo.nix b/desktop/app-geo.nix new file mode 100644 index 0000000..89d600d --- /dev/null +++ b/desktop/app-geo.nix @@ -0,0 +1,12 @@ +{ config, libs, pkgs, ... }: + +{ + imports = [ + ]; + + environment.systemPackages = with pkgs; [ + # Gestion de données géographiques + josm # outil de contribution à OpenStreetMap + viking # analyse de topo, gestion de données GPS + ]; +} diff --git a/desktop/app-multimedia.nix b/desktop/app-multimedia.nix new file mode 100644 index 0000000..7090b75 --- /dev/null +++ b/desktop/app-multimedia.nix @@ -0,0 +1,37 @@ +{ config, libs, pkgs, ... }: + +{ + imports = [ + ]; + + environment.systemPackages = with pkgs; [ + # Multimedia + picard # gestion des métadonnées des fichiers musicaux + + ## Audio + audacity # montage audio + beep + cmus # lecteur audio console + easytag # 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 + ]; +} diff --git a/desktop/app-network.nix b/desktop/app-network.nix new file mode 100644 index 0000000..6c98a49 --- /dev/null +++ b/desktop/app-network.nix @@ -0,0 +1,30 @@ +{ config, libs, pkgs, ... }: + +{ + imports = [ + ]; + + environment.systemPackages = with pkgs; [ + # Outils réseau + iperf + iptraf-ng + nload + telnet + vsftpd + + ## Diagnostic + arp-scan + wireshark + whois + + ## Routage + quagga + + ## Tunnel + openvpn + tinc + ]; + + networking.firewall.allowedTCPPorts = [5201]; # iperf + networking.firewall.allowedUDPPorts = [5201]; # iperf +} diff --git a/desktop/app-securite.nix b/desktop/app-securite.nix new file mode 100644 index 0000000..4fe7ebd --- /dev/null +++ b/desktop/app-securite.nix @@ -0,0 +1,15 @@ +{ config, libs, pkgs, ... }: + +{ + imports = [ + ]; + + environment.systemPackages = with pkgs; [ + # Securité + gnome3.seahorse # gestionnaire graphique de clef GPG + pass # gestionnaire de mots de passe + pwgen # générateur de mots de passe + slock # vérouiller l''écran. "cannot disable the out-of-memory killer for this process (make sure to suid or sgid slock)" --> en root + yubikey-personalization-gui # utilisation de la clef Yubikey + ]; +} diff --git a/desktop/desktop.nix b/desktop/desktop.nix new file mode 100644 index 0000000..3f135e4 --- /dev/null +++ b/desktop/desktop.nix @@ -0,0 +1,97 @@ +{ config, libs, pkgs, ... }: + +{ + imports = [ # applications : + # commandées par config-generator + ./activation-manuelle/app-awesome.nix # pour les profils awesome + ./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 + ./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-cao.nix # de conception assisté par ordinateur & modélisation + ./app-client-internet.nix # pour accéder & utiliser des ressources par le réseau + ./app-dev.nix # utilisée pour développer des programmes/scripts + ./app-geo.nix # utilisée pour manipuler les données géographiques + ./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, ...) + ]; + + environment.systemPackages = with pkgs; [ + # Environement de bureau + wmname # pour définir le nom du gestionnaire de fenêtre (utile pour java) + kde4.ksnapshot# capture d'écran + xorg.xbacklight # pour gérer la luminosité de l'écran + xorg.xev # pour repérer les codes + noms standard des actions clavier/souris + xorg.xkill # pour 'tuer une application' + + ## Gestionnaire de fenêtre & Thème + gnome.gnome_icon_theme # thème d'icone - semble fonctionner avec spaceFM + + ## Manipulation de fichier + pcmanfm # gestionnaire de fichiers graphique + spaceFM # gestionnaire de fichiers graphique + vifm # gestionnaire de fichiers basé sur VIM (console) + + ## Terminal + sakura # terminal + + # A trier + cowsay + fgallery # générateur de gallerie statique http://www.thregr.org/~wavexx/software/fgallery/ + samba + taskwarrior # gestionnaire de tâches en console + udevil # pour le montage des media amovibles + xclip # manipulation du clipboard X depuis la console + ]; + + nixpkgs.config.packageOverrides = pkgs: { + clawsMail = pkgs.clawsMail.override { enablePluginFancy = true; }; + mumble = pkgs.mumble.override { pulseSupport = true; }; + }; + + # Enable the X11 windowing system. + services.xserver = { + enable = true; + layout = "fr"; + xkbOptions = "eurosign:e"; + displayManager.lightdm.enable = true; + windowManager.awesome.enable = true; + startGnuPGAgent = true; + startOpenSSHAgent = false; # pas compatible avec l'agent GnuPG + inputClassSections = ['' + Identifier "Marble Mouse" + MatchProduct "Logitech USB Trackball" + MatchIsPointer "on" + MatchDevicePath "/dev/input/event*" + Driver "evdev" + # Physical button #s: A b D - - - - B C b = A & D simultaneously; - = no button + #Option "ButtonMapping" "1 8 3 4 5 6 7 2 2" # For right-hand placement + #Option "ButtonMapping" "3 8 1 4 5 6 7 2 2" # For left-hand placement + + # EmulateWheel refers to emulating a mouse wheel using Marble Mouse trackball. + Option "EmulateWheel" "true" + Option "EmulateWheelButton" "8" # Factory default; use "9" for left-side placement. + + # EmulateWheelInertia specifies how far (in pixels) the pointer must move to + # generate button press/release events in wheel emulation mode. + Option "EmulateWheelInertia" "10" # Factory default: 50 + + Option "ZAxisMapping" "4 5" + Option "XAxisMapping" "6 7" # Disable this for vertical-only scrolling. + # Emulate3Buttons refers to the act of pressing buttons A and D + # simultaneously to emulate a middle-click or wheel click. + Option "Emulate3Buttons" "true" # Factory default. + '']; + }; + + hardware.pulseaudio = { + enable = true; + support32Bit = true; + }; + environment.etc."pulse/daemon.conf".text = "flat-volumes = no"; +}