summaryrefslogtreecommitdiff
path: root/README.md
blob: 3d2ee270ad11f5f0094ab00bf1638ccab2c087c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# Linux Kernel Development Environment via Nix

Welcome to a streamlined Linux kernel development setup using Nix
flakes. This project simplifies the process of setting up a
development environment for the Linux kernel, ensuring that you have
all the necessary dependencies, including specific versions of Rust
and bindgen, preinstalled in a devShell.

## Quick Start

Getting started with your kernel development environment is incredibly
simple. If you're aiming to develop for Linux version 6.8, all you
need is a single command:

```shell
linux$ nix develop github:blitz/kernel-dev#linux_6_8
```

This will drop you into a shell with all the dependencies required for
working on the Linux 6.8 kernel preinstalled.

### Features

- **Simplicity**: Forget about the hassle of managing multiple
  dependencies and their versions. One command is all it takes.
- **Reproducibility**: With Nix flakes, your development environment
  is reproducible, ensuring that your setup is always consistent and
  predictable.
- **Version-specific environments**: Tailored development environments
  for specific Linux kernel versions, starting with Linux 6.8.
- **Rust and LLVM-enabled**: Ready for the future of kernel development!

### Requirements

- Nix package manager with flake support enabled.

## Usage

To start developing for a different version of the Linux kernel, use
the following pattern, replacing linux_6_8 with the target version
(note: versions are added based on community contributions and
demand):

```shell
$ nix develop github:blitz/kernel-dev#linux_<major_version>_<minor_version>
```

This will drop you in a shell with `clang` and `rustc` matching the
kernel version. If you need a `gcc`-based environment, use:

```shell
$ nix develop github:blitz/kernel-dev#linux_<major_version>_<minor_version>_gcc
```

If you don't find the exact version that you need, one that is close
_might_ work as well.

## Contributing

Contributions are welcome! Whether it's adding support for new kernel
versions, improving the setup process, or documentation - feel free to
fork the project and submit a pull request.

## License

This project is open source and available under the MIT License.