diff --git a/Makefile b/Makefile deleted file mode 100644 index ea084b8..0000000 --- a/Makefile +++ /dev/null @@ -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 - diff --git a/Makefile b/Makefile new file mode 120000 index 0000000..abf765e --- /dev/null +++ b/Makefile @@ -0,0 +1 @@ +base/Makefile \ No newline at end of file diff --git a/activation-manuelle/print.nix b/activation-manuelle/print.nix deleted file mode 100644 index 5c0735b..0000000 --- a/activation-manuelle/print.nix +++ /dev/null @@ -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 - ]; - }; -} diff --git a/base.nix b/base.nix index f0397a7..a0743ab 100644 --- a/base.nix +++ b/base.nix @@ -1,14 +1,12 @@ -{ config, pkgs, ... }: +{ ... }: { imports = [ - ./environment.nix - ./localisation.nix - ./monitoring.nix - ./networking.nix - ./services.nix + # recettes + ./base/base.nix + ./desktop/desktop.nix - # inclusion conditionnelle + # moulinette de configuration ./config-generator.nix ]; } diff --git a/base/Makefile b/base/Makefile new file mode 100644 index 0000000..ea084b8 --- /dev/null +++ b/base/Makefile @@ -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 + diff --git a/activation-manuelle/auto-upgrade.nix b/base/activation-manuelle/auto-upgrade.nix similarity index 100% rename from activation-manuelle/auto-upgrade.nix rename to base/activation-manuelle/auto-upgrade.nix diff --git a/activation-manuelle/fail2ban.nix b/base/activation-manuelle/fail2ban.nix similarity index 100% rename from activation-manuelle/fail2ban.nix rename to base/activation-manuelle/fail2ban.nix diff --git a/activation-manuelle/laptop.nix b/base/activation-manuelle/laptop.nix similarity index 100% rename from activation-manuelle/laptop.nix rename to base/activation-manuelle/laptop.nix diff --git a/activation-manuelle/locate.nix b/base/activation-manuelle/locate.nix similarity index 100% rename from activation-manuelle/locate.nix rename to base/activation-manuelle/locate.nix diff --git a/activation-manuelle/nix-serve-client.nix b/base/activation-manuelle/nix-serve-client.nix similarity index 100% rename from activation-manuelle/nix-serve-client.nix rename to base/activation-manuelle/nix-serve-client.nix diff --git a/activation-manuelle/nix-serve-server.nix b/base/activation-manuelle/nix-serve-server.nix similarity index 100% rename from activation-manuelle/nix-serve-server.nix rename to base/activation-manuelle/nix-serve-server.nix diff --git a/base/activation-manuelle/print.nix b/base/activation-manuelle/print.nix new file mode 100644 index 0000000..6a8d3c2 --- /dev/null +++ b/base/activation-manuelle/print.nix @@ -0,0 +1,22 @@ +{ 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 + ]; + # 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 + ''; + }; +} diff --git a/activation-manuelle/swap.nix b/base/activation-manuelle/swap.nix similarity index 100% rename from activation-manuelle/swap.nix rename to base/activation-manuelle/swap.nix diff --git a/activation-manuelle/users.nix b/base/activation-manuelle/users.nix similarity index 59% rename from activation-manuelle/users.nix rename to base/activation-manuelle/users.nix index 33a215c..3da16c2 100644 --- a/activation-manuelle/users.nix +++ b/base/activation-manuelle/users.nix @@ -24,6 +24,8 @@ in { openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQD3Ds2/GqTcw3oROmKMT13jI8y3B3ZzhlOK0zdyvmiHGHVzY/NEqZftSQGb3macIxWvMu2xIE298r8cqWFO1kwoL4U+pb/m2bb9r8KsDGmK0C/cf5FytsxzaVmwk+QrInTJS9t/Bt1tTjpQ3SuM7RPmaiJ+ODrh/my0efsobGQPxIi90HI/qsAI67HDU5swA8xXJIRpYJuqZuafI0772n6vDD+fh9+lMfUxAxH++6gpNfKWbpawHUAmwIB+FqHTKj015iQ0oi5nmKh4SSei5MU5mfGX6UsDRjquU0/gxfNpLh7tt5C8l5YF9xzmO3qjlN0OJbUZrA4XvhmLsYcN6gifgaO+gk07XOJtBNxGI/JAAoh6eQ5Duc8wSFNR9OCqqydeX57npcu8pyPomfBLpAV01h7m5DH1ZpqB6pzk7ndBulgLUhiv3tTEbXDeoDKNNc/2/CxQUCpyOrURbYjSd0wsQklB53vIjKz2st9vG5hH4dqvnNQt9qjW0JkvFGzfa/sBOVIDt6ApzPbiF9x8sABqfm6PKzwDBKpUyGbBgdLo7E/wkqeEXsinWGidOfCok+HRSoo+U3Iq3RynpBe92E6/JsdCIGHiwLqrZNcYLjpJXzciH+brSIVkUeQeljHlu5zfkxYptqCLVHlO4A+kvRcgh0jyzxKw7Dq7IOWxlks/WQ== jpierre03@radx.prunetwork.fr" "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDS9RFWbeHgLIZNBA1gMZygftVElQwyph7t4NiKtoH9Yejj0okoxMfwxveUZMyqRN8bIMm3OTuZ6TXsyGvjcAV1fSaIUEX57/e+QeFRxJ7i08Yv+9rXkS7Xb4bc+gF7ev0/QnhCu/rqqSX2mJWe19IA7anuSfXKvcrDaMd+jYP7w+kdlNQej4TQtiTGV2Dq/exaMGqttCZU4yHoqVB5EHiMGAHN5SS+JgSWHdZctpG7r6ONyhaXeU4HNm1WOKwV2G/lu8N4kNLnLwA74iduqJmEQYySEhG0EmM6MAAsrD1pcvIphTrD2e6BsVTsA3aT7Zu62F7mcJVm7+aVQy0mn589 jpierre03@mbp.home" + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBAgQapQJdUNI37fbwtBrZ8B1GC2h5Ou95rNAlZAwv4c2IQ42RaZjhcRrx6zlq70DCqtHomgjr/xCr42ZTOPEG/PRMUDj+bQxPolpdSC84GTEMh+o6OHzcEEX4Ks7QT4FZ4VjIaR+OTVf+YdPhcEHY+n5MKAqBuVOMQCCriSdVuz5IEL3BXB7kD0rbOkW9kmliup/J9cdXUvibbHWonSqB86Cgpw0VlJQBRETB0g/dXBfDDm8z8S91nQG7nLgqizhgmyicQEo+M46J8l6lS1eGz4rcts5JGW0s71PVt0PEbylWKZlL3ymMggnpdoByDt742PlYMGl5XCZtZd80D1mN root@radx.prunetwork.fr" + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC8Fp2wqq4LOUpt4WppLHB4Mym6Ra5u2yAe2bGtVbUvki0x2ZfL6z8H6itUTybN0nE+50zdhzFoaAIV0wI+OG342kUv+CvHDMHBT+1FTbu27RSQAL6GAgwPJbegwBG6eC6Zq2ZpXUfPpeSS2KXG326FG4ihJ4CSKqAdEN85CJpNCMsr9NLDNE1YWNw795DFeN4sLvnIFoHUtiOqxpc5GFItMflQz26f7Co9fBnWQF0c4npudlhofQviW5X1rZX/vRT4Af6qXbCdsuRx1utQriqHMrf1iSvTB2CjQ/ChC+IeZiwc7nYAkA9+IMrngGaioW8zMclLxiVfb/jlHP8yCU2EVlY7EpAVReNeXVgTNxxy4FhfzIROtvJ5I/T64E1uLUXh90SQNWKgE4BdnJy50E8zxGxuf5xpAReqvdjf1Hnwj08TEfsCvYgBsV6Lh1HCVz6x+MO7twaHO7jxsc7mHBq1naqgpXNF/ICKuDTDgTGrtgp2W+lIw8cigX4K63rmwZ9fY0DDd/UI2Gdkv+eB/HjDRAXZk+TH3aBHrc/f46AIovBvThPPn7hvVcXNVohIDga3xM6TflHnzuvlO/87aWBZspRVdOoASLI/qxuXzecPWasIUVouqKusCttC7NfJshdJ9r75nkcsvLm8OrvfhTQyu2MpcJe30+lrexeLPNFopw== root@ks3273080.kimsufi.com" ]; }; } diff --git a/base/base.nix b/base/base.nix new file mode 100644 index 0000000..803aa0e --- /dev/null +++ b/base/base.nix @@ -0,0 +1,22 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ./environment.nix + ./localisation.nix + ./monitoring.nix + ./networking.nix + ./services.nix + + # inclusion conditionnelle + ./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 + ]; +} diff --git a/bash-interactive-init.sh b/base/bash-interactive-init.sh similarity index 100% rename from bash-interactive-init.sh rename to base/bash-interactive-init.sh diff --git a/bash-prompt.sh b/base/bash-prompt.sh similarity index 100% rename from bash-prompt.sh rename to base/bash-prompt.sh diff --git a/environment.nix b/base/environment.nix similarity index 100% rename from environment.nix rename to base/environment.nix diff --git a/gitconfig b/base/gitconfig similarity index 100% rename from gitconfig rename to base/gitconfig diff --git a/localisation.nix b/base/localisation.nix similarity index 100% rename from localisation.nix rename to base/localisation.nix diff --git a/monitoring.nix b/base/monitoring.nix similarity index 100% rename from monitoring.nix rename to base/monitoring.nix diff --git a/networking.nix b/base/networking.nix similarity index 100% rename from networking.nix rename to base/networking.nix diff --git a/services.nix b/base/services.nix similarity index 100% rename from services.nix rename to base/services.nix diff --git a/vim.nix b/base/vim.nix similarity index 100% rename from vim.nix rename to base/vim.nix diff --git a/vimrc b/base/vimrc similarity index 100% rename from vimrc rename to base/vimrc diff --git a/config-generator.nix b/config-generator.nix index 7ad70b3..1e884cc 100644 --- a/config-generator.nix +++ b/config-generator.nix @@ -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,7 +31,9 @@ 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."; + conception-assistee = mkEnableOption "Profil pour activer les outils de conception électronique & modélisation 3D"; database_postgres=mkEnableOption "Profil pour activer le SGBD PostgreSQL."; + developpement = mkEnableOption "Profil pour activer les outils de développement"; docker = mkEnableOption "Profil pour l'utilisation de Docker."; dns_autorite = mkEnableOption "Profil pour servir les fichiers de zone DNS."; dns_resolveur = mkEnableOption "Profil pour activer un résolveur DNS local."; @@ -128,6 +118,7 @@ in r6d.profiles.isDesktop = true; r6d.config-generator = { + developpement = true; docker = true; }; }) @@ -147,6 +138,7 @@ in }) (mkIf (pfl.isDubronetwork && pfl.isWorkstation) { r6d.config-generator = { + conception-assistee = true; virtualbox = true; xmonad = true; }; @@ -168,6 +160,10 @@ in isPrunetwork = true; isServer = true; }; + + r6d.config-generator = { + docker = true; + }; }) (mkIf comp.isRadx { r6d.profiles = { 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-cao.nix b/desktop/activation-manuelle/app-cao.nix new file mode 100644 index 0000000..995dfc5 --- /dev/null +++ b/desktop/activation-manuelle/app-cao.nix @@ -0,0 +1,23 @@ +{ config, lib, pkgs, ... }: + +let + inherit (lib) mkIf; + cfg = config.r6d.config-generator; + computers = config.r6d.computers; + profiles = config.r6d.profiles; +in + +mkIf cfg.conception-assistee { + +environment.systemPackages = with pkgs; [ + # CAO + ## Modélisation 3D + freecad # modélisation de pièces en 3D + povray # Rendu tracé de rayon, utilisé dans freecad + + ## Électricité & Électronique + fritzing # schéma de câblages "jolis" + kicad # ensemble d'outils de conception électronique + qucs # simulateur de circuits électroniques + ]; +} diff --git a/desktop/activation-manuelle/app-developpement.nix b/desktop/activation-manuelle/app-developpement.nix new file mode 100644 index 0000000..bf0f7f2 --- /dev/null +++ b/desktop/activation-manuelle/app-developpement.nix @@ -0,0 +1,44 @@ +{ config, lib, pkgs, ... }: + +let + inherit (lib) mkIf; + cfg = config.r6d.config-generator; + computers = config.r6d.computers; + profiles = config.r6d.profiles; +in + +mkIf cfg.developpement { + + environment.systemPackages = with pkgs; [ + # Base de données + pgadmin + sqlitebrowser + + # Développement + cloc + idea.idea-community + gcc # pour les appels depuis les scripts + + # Documentation + zeal + + ## Gestion des sources + # git # déjà présent dans "base" + git-cola + mercurial + subversion + + ## Haskell + ghc + stack + + ## Rust + cargo # récupération des dépendances + compilation projet rust + rustPlatform.rustc + + ## Visualisation & outils de diff + gource + meld + vbindiff # diff de fichier hexadecimaux avec vim + ]; +} 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/xmobarrc b/desktop/activation-manuelle/xmonad/xmobarrc new file mode 100644 index 0000000..b3a46ef --- /dev/null +++ b/desktop/activation-manuelle/xmonad/xmobarrc @@ -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: %"] 10 + , Run Battery ["-t", "Batt: %, W -> "] 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% | %date%" + } + diff --git a/desktop/activation-manuelle/xmonad/xmonad.hs b/desktop/activation-manuelle/xmonad/xmonad.hs new file mode 100644 index 0000000..7055c10 --- /dev/null +++ b/desktop/activation-manuelle/xmonad/xmonad.hs @@ -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) + diff --git a/desktop/activation-manuelle/xmonad/xmonad.nix b/desktop/activation-manuelle/xmonad/xmonad.nix new file mode 100644 index 0000000..bb46a15 --- /dev/null +++ b/desktop/activation-manuelle/xmonad/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..12bfb30 --- /dev/null +++ b/desktop/app-adminsys.nix @@ -0,0 +1,46 @@ +{ config, lib, pkgs, ... }: + +let + inherit (lib) mkIf; + cfg = config.r6d.config-generator; + computers = config.r6d.computers; + profiles = config.r6d.profiles; +in + +mkIf profiles.isDesktop { + + environment.systemPackages = with pkgs; [ + # Adminsys + iotop + lm_sensors + lshw + lsof + ntp + powerline-fonts + powertop + python27Packages.ansible2 + python27Packages.glances + usbutils + + # DNS + unbound + + # Compression + lz4 + lzop + + # 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..4b78222 --- /dev/null +++ b/desktop/app-bureautique.nix @@ -0,0 +1,43 @@ +{ config, lib, pkgs, ... }: + +let + inherit (lib) mkIf; + cfg = config.r6d.config-generator; + computers = config.r6d.computers; + profiles = config.r6d.profiles; +in + +mkIf profiles.isDesktop { + + environment.systemPackages = with pkgs; [ + # Bureautique + aspell aspellDicts.fr + dia + gnumeric + + ## Cartes mentales + freemind + + ## Editeur de texte + lyx # surcouche WISIWIM à LaTeX + textadept # un éditeur de texte facile pour copier-coller graphique + zim # outil de prise de notes, wiki de bureau + + ## Visionneuse + kde5.okular # pdf + mcomix # livres (cbr, liste d'images), gestion d'une bibliothèque + pdfpc # pdf + qpdfview # pdf + gqview # visionneuse image & gestion basique de collection + + ## Convertisseurs (texte -> ) + 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-cartographie.nix b/desktop/app-cartographie.nix new file mode 100644 index 0000000..3b2e525 --- /dev/null +++ b/desktop/app-cartographie.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 profiles.isDesktop { + + 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 + ]; +} diff --git a/desktop/app-client-internet.nix b/desktop/app-client-internet.nix new file mode 100644 index 0000000..40baaaa --- /dev/null +++ b/desktop/app-client-internet.nix @@ -0,0 +1,33 @@ +{ config, lib, pkgs, ... }: + +let + inherit (lib) mkIf; + cfg = config.r6d.config-generator; + computers = config.r6d.computers; + profiles = config.r6d.profiles; +in + +mkIf profiles.isDesktop { + +environment.systemPackages = with pkgs; [ + # Clients Internet + + ## Navigateur & 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-multimedia.nix b/desktop/app-multimedia.nix new file mode 100644 index 0000000..c5abbe9 --- /dev/null +++ b/desktop/app-multimedia.nix @@ -0,0 +1,42 @@ +{ 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 + ]; +} diff --git a/desktop/app-network.nix b/desktop/app-network.nix new file mode 100644 index 0000000..1a8a4f3 --- /dev/null +++ b/desktop/app-network.nix @@ -0,0 +1,37 @@ +{ config, lib, pkgs, ... }: + +let + inherit (lib) mkIf; + cfg = config.r6d.config-generator; + computers = config.r6d.computers; + profiles = config.r6d.profiles; +in + +mkIf profiles.isDesktop { + + environment.systemPackages = with pkgs; [ + # Outils réseau + iperf # outil de mesure de la qualité du réseau + iptraf-ng # outil de mesure de la qualité du réseau + nload # affichage de statisques d'utilisation instantannées du réseau + telnet + #vsftpd # serveur FTP + + ## Diagnostic + arp-scan + wireshark + whois + + ## Routage + quagga # daemon de routage + + ## Tunnel + # openvpn + tinc + ]; + + networking.firewall = { + allowedTCPPorts = [5201]; # iperf + allowedUDPPorts = [5201]; # iperf + }; +} diff --git a/desktop/app-securite.nix b/desktop/app-securite.nix new file mode 100644 index 0000000..d4bf5aa --- /dev/null +++ b/desktop/app-securite.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 profiles.isDesktop { + + environment.systemPackages = with pkgs; [ + # Securité + gnome3.seahorse # gestionnaire graphique de clef GPG + pass # gestionnaire de mots de passe + pwgen # générateur de mots de passe + slock # vérouiller l''écran. "cannot disable the out-of-memory killer for this process (make sure to suid or sgid slock)" --> en root + yubikey-personalization-gui # utilisation de la clef Yubikey + ]; +} diff --git a/desktop/desktop-minimal.nix b/desktop/desktop-minimal.nix new file mode 100644 index 0000000..e7bd59b --- /dev/null +++ b/desktop/desktop-minimal.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 profiles.isDesktop { + + environment.systemPackages = with pkgs; [ + + ]; +} diff --git a/desktop/desktop.nix b/desktop/desktop.nix new file mode 100644 index 0000000..4f1f60b --- /dev/null +++ b/desktop/desktop.nix @@ -0,0 +1,107 @@ +{ config, pkgs, ... }: + +let + cfg = config.r6d.config-generator; + computers = config.r6d.computers; + profiles = config.r6d.profiles; + mkIf = pkgs.lib.mkIf; +in + +{ + imports = [ # applications : + # commandées par config-generator + ./activation-manuelle/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/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, ...) + ]; + + environment.systemPackages = with pkgs; mkIf profiles.isDesktop [ + # 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 = 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"; +} diff --git a/logiciel-custom/osm2pgsql.nix b/logiciel-custom/osm2pgsql.nix new file mode 100644 index 0000000..8e001bf --- /dev/null +++ b/logiciel-custom/osm2pgsql.nix @@ -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 ]; + }; + } +