{ config, pkgs, ... }:

{

  time.timeZone = "Europe/Paris";

  environment.systemPackages = with pkgs; [
    # Editeurs
    (neovim.override {
      viAlias = true;
      vimAlias = true;
      configure = {
        customRC = ''
          set shiftwidth=2
          set softtabstop=2
          set expandtab
          set background=dark
        '';
        packages.myVimPackage = with pkgs.vimPlugins; {
          start = [
            vim-startify  airline             sensible
            polyglot      ale                 fugitive
          ];
          opt = [ ];
        };
      };
    })

    # Gestionnaires de version
    gitFull
    tig
    gitAndTools.hub
    quilt

    # Gestion de paquets
    nix-prefetch-scripts
    nox
    nix-index

    # Système
    smartmontools
    htop
    lshw
    usbutils

    # Réseau
    telnet
    rclone
    lftp
    wireguard
    nfsUtils
    nmap

    # Divers
    fzf
    file
    ncdu
    youtube-dl
    tldr
    starship

    # Audio
    beets

    # Outils
    borgbackup
    binutils
    bat
    molly-guard

    # Développement
    openssl
  ];

  users.defaultUserShell = pkgs.zsh;
  programs = {
    tmux = {
      enable = true;
      clock24 = true;
    };

    zsh = {
      enable = true;
      autosuggestions.enable = true;
      enableCompletion = true;
      syntaxHighlighting.enable = true;
      interactiveShellInit = ''
        source "$(${pkgs.fzf}/bin/fzf-share)/key-bindings.zsh"
        eval "$(starship init zsh)"
      '';
      ohMyZsh = {
        enable = true;
        plugins = [ "git" "colored-man-pages" "command-not-found" "extract" "nix" ];
        customPkgs = with pkgs;[
          nix-zsh-completions
        ];
      };
    };

    bash.interactiveShellInit = ''
      eval "$(starship init bash)"
    '';
  };

  environment.variables = let
    starshipConfToml =
      pkgs.writeText "starship.toml" ''
        [[battery.display]]
        threshold = 50
      '';
  in {
    EDITOR = "nvim";
    STARSHIP_CONFIG = "${starshipConfToml}";
  };

  nix.gc.automatic = true;
  nix.gc.options = "--delete-older-than 15d";
  systemd.timers.nix-gc.timerConfig.Persistent = true;

}