{
  description = "Environnement de développement pour des modules noyaux Linux";

  inputs = {
    nixpkgs.url = "nixpkgs";
    flake-utils.url = "github:numtide/flake-utils";
  };

  outputs = {
    nixpkgs,
    flake-utils,
    ...
  }: flake-utils.lib.eachSystem flake-utils.lib.allSystems (system:
    let
      pkgs = import nixpkgs { inherit system; };

      linux = pkgs.linuxKernel.kernels.linux_zen;

      packages = with pkgs; [
        clang-tools
      ];
    in {
      devShells = rec {
        default = nixos;

        nixos = pkgs.mkShell {
          packages = [ linux.moduleBuildDependencies ] ++ packages;

          LINUX_MODULES_FOLDER = "${linux.dev}/lib/modules/${linux.modDirVersion}";

          shellHook = ''
            echo "Current Linux Kernel used : ${linux.version}"
          '';
        };

        other = pkgs.mkShell {
          inherit packages;

          shellHook = ''
            export LINUX_MODULES_FOLDER=/lib/modules/$(uname -r)
            echo "Current Linux Kernel used : $(uname -r)"
          '';
        };
      };
    }
  );
}