Compare commits
4 commits
36ccd9db6e
...
8590b38d0f
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8590b38d0f | ||
![]() |
85b3954c35 | ||
![]() |
c74ae70bd8 | ||
![]() |
05d9ea1042 |
14
README.md
14
README.md
|
@ -23,7 +23,19 @@ Without nix: check out this repository and use `cargo run --release`.
|
||||||
|
|
||||||
## Command line arguments
|
## Command line arguments
|
||||||
|
|
||||||
The application binds to `0.0.0.0:2342` by default (`./servicepoint-simulator --bind host:port` to change this).
|
```
|
||||||
|
Usage: servicepoint-simulator [OPTIONS]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--bind <BIND> address and port to bind to [default: 0.0.0.0:2342]
|
||||||
|
-f, --font <FONT> The name of the font family to use. This defaults to the system monospace font.
|
||||||
|
-s, --spacers add spacers between tile rows to simulate gaps in real display
|
||||||
|
-r, --red Use the red color channel
|
||||||
|
-g, --green Use the green color channel
|
||||||
|
-b, --blue Use the blue color channel
|
||||||
|
-v, --verbose Set default log level lower. You can also change this via the RUST_LOG environment variable.
|
||||||
|
-h, --help Print help
|
||||||
|
```
|
||||||
|
|
||||||
See [env_logger](https://docs.rs/env_logger/latest/env_logger/) to configure logging.
|
See [env_logger](https://docs.rs/env_logger/latest/env_logger/) to configure logging.
|
||||||
|
|
||||||
|
|
|
@ -37,11 +37,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1737672001,
|
"lastModified": 1736200483,
|
||||||
"narHash": "sha256-YnHJJ19wqmibLQdUeq9xzE6CjrMA568KN/lFPuSVs4I=",
|
"narHash": "sha256-JO+lFN2HsCwSLMUWXHeOad6QUxOuwe9UOAF/iSl1J4I=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "035f8c0853c2977b24ffc4d0a42c74f00b182cd8",
|
"rev": "3f0a8ac25fb674611b98089ca3a5dd6480175751",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
131
flake.nix
131
flake.nix
|
@ -25,99 +25,24 @@
|
||||||
"aarch64-darwin"
|
"aarch64-darwin"
|
||||||
"x86_64-darwin"
|
"x86_64-darwin"
|
||||||
];
|
];
|
||||||
forAllSystems = lib.genAttrs supported-systems;
|
forAllSystems =
|
||||||
make-rust-toolchain-core =
|
f:
|
||||||
pkgs:
|
lib.genAttrs supported-systems (
|
||||||
pkgs.symlinkJoin {
|
system:
|
||||||
name = "rust-toolchain-core";
|
f rec {
|
||||||
paths = with pkgs; [
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
rustc
|
inherit system;
|
||||||
cargo
|
}
|
||||||
rustPlatform.rustcSrc
|
);
|
||||||
];
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
rec {
|
rec {
|
||||||
packages = forAllSystems (
|
packages = forAllSystems (
|
||||||
system:
|
{ pkgs, ... }:
|
||||||
let
|
|
||||||
pkgs = nixpkgs.legacyPackages."${system}";
|
|
||||||
rust-toolchain-core = make-rust-toolchain-core pkgs;
|
|
||||||
naersk' = pkgs.callPackage naersk {
|
|
||||||
cargo = rust-toolchain-core;
|
|
||||||
rustc = rust-toolchain-core;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
rec {
|
rec {
|
||||||
servicepoint-simulator = naersk'.buildPackage rec {
|
servicepoint-simulator = import ./servicepoint-simulator.nix {
|
||||||
src = nix-filter.lib.filter {
|
inherit nix-filter pkgs;
|
||||||
root = ./.;
|
naersk' = pkgs.callPackage naersk { };
|
||||||
include = [
|
|
||||||
./Cargo.toml
|
|
||||||
./Cargo.lock
|
|
||||||
./src
|
|
||||||
./Web437_IBM_BIOS.woff
|
|
||||||
./README.md
|
|
||||||
./LICENSE
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
nativeBuildInputs = with pkgs; [
|
|
||||||
pkg-config
|
|
||||||
makeWrapper
|
|
||||||
];
|
|
||||||
strictDeps = true;
|
|
||||||
buildInputs =
|
|
||||||
with pkgs;
|
|
||||||
[
|
|
||||||
xe
|
|
||||||
xz
|
|
||||||
|
|
||||||
roboto
|
|
||||||
]
|
|
||||||
++ lib.optionals pkgs.stdenv.isLinux (
|
|
||||||
with pkgs;
|
|
||||||
[
|
|
||||||
# gpu
|
|
||||||
libGL
|
|
||||||
vulkan-headers
|
|
||||||
vulkan-loader
|
|
||||||
vulkan-tools vulkan-tools-lunarg
|
|
||||||
vulkan-extension-layer
|
|
||||||
vulkan-validation-layers
|
|
||||||
|
|
||||||
# keyboard
|
|
||||||
libxkbcommon
|
|
||||||
|
|
||||||
# font loading
|
|
||||||
fontconfig
|
|
||||||
freetype
|
|
||||||
|
|
||||||
# WINIT_UNIX_BACKEND=wayland
|
|
||||||
wayland
|
|
||||||
|
|
||||||
# WINIT_UNIX_BACKEND=x11
|
|
||||||
xorg.libXcursor
|
|
||||||
xorg.libXrandr
|
|
||||||
xorg.libXi
|
|
||||||
xorg.libX11
|
|
||||||
xorg.libX11.dev
|
|
||||||
]
|
|
||||||
)
|
|
||||||
++ lib.optionals pkgs.stdenv.isDarwin (
|
|
||||||
with pkgs.darwin.apple_sdk.frameworks;
|
|
||||||
[
|
|
||||||
Carbon
|
|
||||||
QuartzCore
|
|
||||||
AppKit
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
wrapProgram $out/bin/servicepoint-simulator \
|
|
||||||
--suffix LD_LIBRARY_PATH : ${lib.makeLibraryPath buildInputs}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
default = servicepoint-simulator;
|
default = servicepoint-simulator;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -125,29 +50,35 @@
|
||||||
legacyPackages = packages;
|
legacyPackages = packages;
|
||||||
|
|
||||||
devShells = forAllSystems (
|
devShells = forAllSystems (
|
||||||
system:
|
{
|
||||||
let
|
pkgs,
|
||||||
pkgs = nixpkgs.legacyPackages."${system}";
|
system,
|
||||||
rust-toolchain = pkgs.symlinkJoin {
|
}:
|
||||||
|
{
|
||||||
|
default = pkgs.mkShell rec {
|
||||||
|
inputsFrom = [ self.packages.${system}.default ];
|
||||||
|
packages = [
|
||||||
|
pkgs.gdb
|
||||||
|
(pkgs.symlinkJoin {
|
||||||
name = "rust-toolchain";
|
name = "rust-toolchain";
|
||||||
paths = with pkgs; [
|
paths = with pkgs; [
|
||||||
(make-rust-toolchain-core pkgs)
|
rustc
|
||||||
|
cargo
|
||||||
|
rustPlatform.rustcSrc
|
||||||
rustfmt
|
rustfmt
|
||||||
clippy
|
clippy
|
||||||
cargo-expand
|
cargo-expand
|
||||||
];
|
];
|
||||||
};
|
})
|
||||||
in
|
];
|
||||||
{
|
|
||||||
default = pkgs.mkShell rec {
|
|
||||||
inputsFrom = [ self.packages.${system}.default ];
|
|
||||||
packages = [ rust-toolchain pkgs.gdb ];
|
|
||||||
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath (builtins.concatMap (d: d.buildInputs) inputsFrom)}";
|
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath (builtins.concatMap (d: d.buildInputs) inputsFrom)}";
|
||||||
|
NIX_LD_LIBRARY_PATH = LD_LIBRARY_PATH;
|
||||||
|
NIX_LD = pkgs.stdenv.cc.bintools.dynamicLinker;
|
||||||
RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}";
|
RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
formatter = forAllSystems (system: nixpkgs.legacyPackages."${system}".nixfmt-rfc-style);
|
formatter = forAllSystems ({ pkgs, ... }: pkgs.nixfmt-rfc-style);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
74
servicepoint-simulator.nix
Normal file
74
servicepoint-simulator.nix
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
{
|
||||||
|
naersk',
|
||||||
|
pkgs,
|
||||||
|
nix-filter,
|
||||||
|
}:
|
||||||
|
naersk'.buildPackage rec {
|
||||||
|
src = nix-filter.lib.filter {
|
||||||
|
root = ./.;
|
||||||
|
include = [
|
||||||
|
./Cargo.toml
|
||||||
|
./Cargo.lock
|
||||||
|
./src
|
||||||
|
./Web437_IBM_BIOS.woff
|
||||||
|
./README.md
|
||||||
|
./LICENSE
|
||||||
|
];
|
||||||
|
};
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
pkg-config
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
|
strictDeps = true;
|
||||||
|
buildInputs =
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
xe
|
||||||
|
xz
|
||||||
|
|
||||||
|
roboto
|
||||||
|
]
|
||||||
|
++ lib.optionals pkgs.stdenv.isLinux (
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
# gpu
|
||||||
|
libGL
|
||||||
|
vulkan-headers
|
||||||
|
vulkan-loader
|
||||||
|
vulkan-tools
|
||||||
|
vulkan-tools-lunarg
|
||||||
|
vulkan-extension-layer
|
||||||
|
vulkan-validation-layers
|
||||||
|
|
||||||
|
# keyboard
|
||||||
|
libxkbcommon
|
||||||
|
|
||||||
|
# font loading
|
||||||
|
fontconfig
|
||||||
|
freetype
|
||||||
|
|
||||||
|
# WINIT_UNIX_BACKEND=wayland
|
||||||
|
wayland
|
||||||
|
|
||||||
|
# WINIT_UNIX_BACKEND=x11
|
||||||
|
xorg.libXcursor
|
||||||
|
xorg.libXrandr
|
||||||
|
xorg.libXi
|
||||||
|
xorg.libX11
|
||||||
|
xorg.libX11.dev
|
||||||
|
]
|
||||||
|
)
|
||||||
|
++ lib.optionals pkgs.stdenv.isDarwin (
|
||||||
|
with pkgs.darwin.apple_sdk.frameworks;
|
||||||
|
[
|
||||||
|
Carbon
|
||||||
|
QuartzCore
|
||||||
|
AppKit
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
wrapProgram $out/bin/servicepoint-simulator \
|
||||||
|
--suffix LD_LIBRARY_PATH : ${pkgs.lib.makeLibraryPath buildInputs}
|
||||||
|
'';
|
||||||
|
}
|
26
src/cli.rs
26
src/cli.rs
|
@ -8,12 +8,6 @@ pub struct Cli {
|
||||||
help = "address and port to bind to"
|
help = "address and port to bind to"
|
||||||
)]
|
)]
|
||||||
pub bind: String,
|
pub bind: String,
|
||||||
#[arg(
|
|
||||||
short,
|
|
||||||
long,
|
|
||||||
help = "Set default log level lower. You can also change this via the RUST_LOG environment variable."
|
|
||||||
)]
|
|
||||||
pub debug: bool,
|
|
||||||
#[arg(
|
#[arg(
|
||||||
short,
|
short,
|
||||||
long,
|
long,
|
||||||
|
@ -22,10 +16,23 @@ pub struct Cli {
|
||||||
pub font: Option<String>,
|
pub font: Option<String>,
|
||||||
#[clap(flatten)]
|
#[clap(flatten)]
|
||||||
pub gui: GuiOptions,
|
pub gui: GuiOptions,
|
||||||
|
#[arg(
|
||||||
|
short,
|
||||||
|
long,
|
||||||
|
help = "Set default log level lower. You can also change this via the RUST_LOG environment variable."
|
||||||
|
)]
|
||||||
|
pub verbose: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Parser, Debug)]
|
#[derive(Parser, Debug)]
|
||||||
pub struct GuiOptions {
|
pub struct GuiOptions {
|
||||||
|
#[arg(
|
||||||
|
short,
|
||||||
|
long,
|
||||||
|
default_value_t = false,
|
||||||
|
help = "add spacers between tile rows to simulate gaps in real display"
|
||||||
|
)]
|
||||||
|
pub spacers: bool,
|
||||||
#[arg(
|
#[arg(
|
||||||
short,
|
short,
|
||||||
long,
|
long,
|
||||||
|
@ -47,11 +54,4 @@ pub struct GuiOptions {
|
||||||
help = "Use the blue color channel"
|
help = "Use the blue color channel"
|
||||||
)]
|
)]
|
||||||
pub blue: bool,
|
pub blue: bool,
|
||||||
#[arg(
|
|
||||||
short,
|
|
||||||
long,
|
|
||||||
default_value_t = false,
|
|
||||||
help = "add spacers between tile rows to simulate gaps in real display"
|
|
||||||
)]
|
|
||||||
pub spacers: bool,
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ fn main() {
|
||||||
cli.gui.green = true;
|
cli.gui.green = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
init_logging(cli.debug);
|
init_logging(cli.verbose);
|
||||||
info!("starting with args: {:?}", &cli);
|
info!("starting with args: {:?}", &cli);
|
||||||
|
|
||||||
let socket = UdpSocket::bind(&cli.bind).expect("could not bind socket");
|
let socket = UdpSocket::bind(&cli.bind).expect("could not bind socket");
|
||||||
|
|
Loading…
Reference in a new issue