Skip to content

Commit

Permalink
Merge pull request #80 from rien/nix-flake
Browse files Browse the repository at this point in the history
Add Nix devShell: flake.nix and shell.nix
  • Loading branch information
rien authored Nov 4, 2021
2 parents 989a4f7 + d3422b1 commit 6ceaa5a
Show file tree
Hide file tree
Showing 8 changed files with 153 additions and 15 deletions.
14 changes: 0 additions & 14 deletions .cargo/config

This file was deleted.

16 changes: 16 additions & 0 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,19 @@ jobs:

- name: Shell Formatter
run: docker run -v $GITHUB_WORKSPACE:/mnt -w /mnt mvdan/shfmt -d reStream.sh

build:
# The type of runner that the job will run on
runs-on: ubuntu-latest

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2

- uses: cachix/[email protected]
with:
nix_path: nixpkgs=channel:nixos-unstable

- run: nix-shell
- run: cargo build
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,14 @@ Steps you can try if the script isn't working:
If you want to play with the `restream` code, you will have to [install Rust](https://www.rust-lang.org/learn/get-started).
There are two ways of building the required restream binary for streaming the reMarkable framebuffer. For both approaches, the generated restream binary will be located under `target/armv7-unknown-linux-gnueabihf/release/restream`.
There are three ways of building the required restream binary for streaming the reMarkable framebuffer. For these approaches, the generated restream binary will be located under `target/armv7-unknown-linux-gnueabihf/release/restream`.
- **Using nix flakes**
With [Nix](https://nixos.org/guides/install-nix.html) installed you can
create the development environment with `nix-shell` or (when using
[Nix flakes](https://nixos.wiki/wiki/Flakes#Installing_flakes) `nix-develop`.
After which you can simply run `cargo build --release` to build the restream
binary on your machine.
- **Using docker and the toltec toolchain:**
You can use the [toltec toolchain docker images](https://github.com/toltec-dev/toolchain) to build a restream binary compatible with the reMarkable.
Expand Down
27 changes: 27 additions & 0 deletions default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
devShell = pkgs: with pkgs; mkShell {
buildInputs = [
remarkable-toolchain
(rust-bin.stable.latest.default.override {
targets = [ "armv7-unknown-linux-gnueabihf" ];
extensions = [ "rust-src" ];
})
openssl.dev
pkg-config
cargo-watch
cargo-limit
shellcheck
lz4
];
CARGO_BUILD_TARGET="armv7-unknown-linux-gnueabihf";
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER="${pkgs.remarkable-toolchain}/sysroots/x86_64-codexsdk-linux/usr/bin/arm-remarkable-linux-gnueabi/arm-remarkable-linux-gnueabi-gcc";
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUSTFLAGS=[
"-C link-arg=-march=armv7-a"
"-C link-arg=-marm"
"-C link-arg=-mfpu=neon"
"-C link-arg=-mfloat-abi=hard"
"-C link-arg=-mcpu=cortex-a9"
"-C link-arg=--sysroot=${pkgs.remarkable-toolchain}/sysroots/cortexa9hf-neon-remarkable-linux-gnueabi"
];
};
}
67 changes: 67 additions & 0 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 25 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
description = "Stream the reMarkable screen to your computer";

inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
};
};
outputs = {self, nixpkgs, flake-utils, rust-overlay, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
overlays = [ (import rust-overlay) ];
pkgs = import nixpkgs {
inherit system overlays;
};
in
with pkgs;
{
devShell = (import ./default.nix).devShell pkgs;
});
}
8 changes: 8 additions & 0 deletions shell.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
let
pkgs = import <nixpkgs> {
overlays = [
(import (builtins.fetchTarball "https://github.com/oxalica/rust-overlay/archive/master.tar.gz"))
];
};
reStreamDev = import ./default.nix;
in reStreamDev.devShell pkgs

0 comments on commit 6ceaa5a

Please sign in to comment.