Fixes for shell.nix
This commit is contained in:
parent
89f21f577d
commit
d6cf762181
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
"rust-analyzer.cargo.target": "x86_64-unknown-none",
|
"rust-analyzer.cargo.target": "x86_64-unknown-none",
|
||||||
"rust-analyzer.check.allTargets": false
|
"rust-analyzer.check.allTargets": false,
|
||||||
|
"makefile.configureOnOpen": false
|
||||||
}
|
}
|
||||||
|
13
Makefile
13
Makefile
@ -2,7 +2,7 @@
|
|||||||
# Default target is x86_64-unknown-none
|
# Default target is x86_64-unknown-none
|
||||||
TARGET ?= "x86_64-unknown-none"
|
TARGET ?= "x86_64-unknown-none"
|
||||||
# Limine BIOS file directory
|
# Limine BIOS file directory
|
||||||
LIMINE-DIR ?= "/usr/share/limine"
|
LIMINEDIR ?= "/usr/share/limine"
|
||||||
|
|
||||||
# QEMU system is set accordingly and automatically
|
# QEMU system is set accordingly and automatically
|
||||||
qemu = "qemu-system-x86_64"
|
qemu = "qemu-system-x86_64"
|
||||||
@ -28,8 +28,9 @@ all: gila iso run
|
|||||||
|
|
||||||
checkenv:
|
checkenv:
|
||||||
|
|
||||||
|
$(info "Limine directory: $(LIMINEDIR)")
|
||||||
$(foreach file,$(limine-files),\
|
$(foreach file,$(limine-files),\
|
||||||
$(if $(shell test -f $(LIMINE-DIR)/$(file) | echo "it exists"),$(info "Found $(file)"),$(error "No $(file) in $(LIMINE-DIR)")))
|
$(if $(shell test -f $(LIMINEDIR)/$(file) | echo "it exists"),$(info "Found $(file)"),$(error "No $(file) in $(LIMINEDIR)")))
|
||||||
|
|
||||||
$(foreach exec,$(executables),\
|
$(foreach exec,$(executables),\
|
||||||
$(if $(shell which $(exec)),$(info "Found $(exec)"),$(error "No $(exec) in PATH")))
|
$(if $(shell which $(exec)),$(info "Found $(exec)"),$(error "No $(exec) in PATH")))
|
||||||
@ -60,9 +61,9 @@ iso: build/iso/gila limine.conf
|
|||||||
mkdir -p build/iso/EFI/BOOT
|
mkdir -p build/iso/EFI/BOOT
|
||||||
|
|
||||||
cp ./limine.conf build/iso/
|
cp ./limine.conf build/iso/
|
||||||
cp $(LIMINE-DIR)/limine-bios.sys build/iso/limine/
|
cp $(LIMINEDIR)/limine-bios.sys build/iso/limine/
|
||||||
cp $(LIMINE-DIR)/limine-bios-cd.bin build/iso/limine/
|
cp $(LIMINEDIR)/limine-bios-cd.bin build/iso/limine/
|
||||||
cp $(LIMINE-DIR)/limine-uefi-cd.bin build/iso/limine/
|
cp $(LIMINEDIR)/limine-uefi-cd.bin build/iso/limine/
|
||||||
|
|
||||||
tree build/iso/
|
tree build/iso/
|
||||||
|
|
||||||
@ -74,4 +75,4 @@ iso: build/iso/gila limine.conf
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf build
|
rm -rf build
|
||||||
cargo clean
|
cargo clean
|
||||||
|
12
README.md
12
README.md
@ -61,7 +61,7 @@ To build an ISO image that you can boot, there are several prerequisites:
|
|||||||
- `limine` command installed
|
- `limine` command installed
|
||||||
- `xorriso` command installed
|
- `xorriso` command installed
|
||||||
- `make` command installed
|
- `make` command installed
|
||||||
- `qemu-system-(your target architecture)` command installed (for running)
|
- `qemu-system-{your target architecture}` command installed (for running)
|
||||||
|
|
||||||
Then run `make` to invoke the [Makefile](Makefile).
|
Then run `make` to invoke the [Makefile](Makefile).
|
||||||
|
|
||||||
@ -72,12 +72,14 @@ Then run `make` to invoke the [Makefile](Makefile).
|
|||||||
- `make iso`: Builds the bootable ISO with Limine installed.
|
- `make iso`: Builds the bootable ISO with Limine installed.
|
||||||
- `make run`: Builds the ISO and boots it in QEMU.
|
- `make run`: Builds the ISO and boots it in QEMU.
|
||||||
|
|
||||||
By supplying `TARGET=(rustc target triple)` as an additional argument, you can change the architecture that gila will be compiled & run for. The default is `x86_64-unknown-none`.
|
To change the target gila will be compiled or run for, supply `TARGET={valid-rustc-targettriple}` either as an argument to `make` or as an environment variable. The default is `x86_64-unknown-none`.
|
||||||
|
|
||||||
The default limine BIOS file search directory is `/usr/share/limine`. You can change this by supplying a path (no trailing slash) like so: `LIMINE-DIR=/home/user/Downloads/limine`.
|
To change the search path for limine's binaries, supply `LIMINEDIR=/some/valid/path/no/trailing/slash` either as an argument to `make` or as an environment variable. The default is `/usr/share/limine`.
|
||||||
|
|
||||||
You can install all these dependencies automatically by using `nix-shell` and
|
If you use Nix, you can install all these dependencies automatically by running `nix-shell`. This will also automatically set the correct directory for the limine BIOS files.
|
||||||
supplying [shell.nix](shell.nix) as an argument.
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> **I do not, and cannot, currently recommend using `nix` for dependency management.** `nixpkgs` ships an outdated version of Limine which is incompatible and contains none of the necessary files.
|
||||||
|
|
||||||
## Kernel Parameters
|
## Kernel Parameters
|
||||||
|
|
||||||
|
10
shell.nix
10
shell.nix
@ -1,28 +1,28 @@
|
|||||||
let
|
let
|
||||||
|
|
||||||
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.05";
|
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/25.05-pre";
|
||||||
|
|
||||||
pkgs = import nixpkgs { config = {}; overlays = []; };
|
pkgs = import nixpkgs { config = {}; overlays = []; };
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
|
|
||||||
pkgs.mkShell {
|
pkgs.mkShell {
|
||||||
|
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
|
|
||||||
bash
|
bash
|
||||||
limine
|
limine.dev
|
||||||
xorriso
|
xorriso
|
||||||
rustup
|
rustup
|
||||||
qemu
|
qemu
|
||||||
make
|
gnumake
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
rustup default nightly;
|
rustup default nightly;
|
||||||
rustup target add x86_64-unknown-none
|
rustup target add x86_64-unknown-none
|
||||||
|
export LIMINEDIR="${pkgs.limine}/share/limine"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user