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
|
||||
|
||||
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.
|
||||
|
||||
|
|
|
@ -37,11 +37,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1737672001,
|
||||
"narHash": "sha256-YnHJJ19wqmibLQdUeq9xzE6CjrMA568KN/lFPuSVs4I=",
|
||||
"lastModified": 1736200483,
|
||||
"narHash": "sha256-JO+lFN2HsCwSLMUWXHeOad6QUxOuwe9UOAF/iSl1J4I=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "035f8c0853c2977b24ffc4d0a42c74f00b182cd8",
|
||||
"rev": "3f0a8ac25fb674611b98089ca3a5dd6480175751",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
131
flake.nix
131
flake.nix
|
@ -25,99 +25,24 @@
|
|||
"aarch64-darwin"
|
||||
"x86_64-darwin"
|
||||
];
|
||||
forAllSystems = lib.genAttrs supported-systems;
|
||||
make-rust-toolchain-core =
|
||||
pkgs:
|
||||
pkgs.symlinkJoin {
|
||||
name = "rust-toolchain-core";
|
||||
paths = with pkgs; [
|
||||
rustc
|
||||
cargo
|
||||
rustPlatform.rustcSrc
|
||||
];
|
||||
};
|
||||
forAllSystems =
|
||||
f:
|
||||
lib.genAttrs supported-systems (
|
||||
system:
|
||||
f rec {
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
inherit system;
|
||||
}
|
||||
);
|
||||
in
|
||||
rec {
|
||||
packages = forAllSystems (
|
||||
system:
|
||||
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
|
||||
{ pkgs, ... }:
|
||||
rec {
|
||||
servicepoint-simulator = naersk'.buildPackage rec {
|
||||
src = nix-filter.lib.filter {
|
||||
root = ./.;
|
||||
include = [
|
||||
./Cargo.toml
|
||||
./Cargo.lock
|
||||
./src
|
||||
./Web437_IBM_BIOS.woff
|
||||
./README.md
|
||||
./LICENSE
|
||||
];
|
||||
servicepoint-simulator = import ./servicepoint-simulator.nix {
|
||||
inherit nix-filter pkgs;
|
||||
naersk' = pkgs.callPackage naersk { };
|
||||
};
|
||||
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;
|
||||
}
|
||||
);
|
||||
|
@ -125,29 +50,35 @@
|
|||
legacyPackages = packages;
|
||||
|
||||
devShells = forAllSystems (
|
||||
system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages."${system}";
|
||||
rust-toolchain = pkgs.symlinkJoin {
|
||||
{
|
||||
pkgs,
|
||||
system,
|
||||
}:
|
||||
{
|
||||
default = pkgs.mkShell rec {
|
||||
inputsFrom = [ self.packages.${system}.default ];
|
||||
packages = [
|
||||
pkgs.gdb
|
||||
(pkgs.symlinkJoin {
|
||||
name = "rust-toolchain";
|
||||
paths = with pkgs; [
|
||||
(make-rust-toolchain-core pkgs)
|
||||
rustc
|
||||
cargo
|
||||
rustPlatform.rustcSrc
|
||||
rustfmt
|
||||
clippy
|
||||
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)}";
|
||||
NIX_LD_LIBRARY_PATH = LD_LIBRARY_PATH;
|
||||
NIX_LD = pkgs.stdenv.cc.bintools.dynamicLinker;
|
||||
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"
|
||||
)]
|
||||
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(
|
||||
short,
|
||||
long,
|
||||
|
@ -22,10 +16,23 @@ pub struct Cli {
|
|||
pub font: Option<String>,
|
||||
#[clap(flatten)]
|
||||
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)]
|
||||
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(
|
||||
short,
|
||||
long,
|
||||
|
@ -47,11 +54,4 @@ pub struct GuiOptions {
|
|||
help = "Use the blue color channel"
|
||||
)]
|
||||
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;
|
||||
}
|
||||
|
||||
init_logging(cli.debug);
|
||||
init_logging(cli.verbose);
|
||||
info!("starting with args: {:?}", &cli);
|
||||
|
||||
let socket = UdpSocket::bind(&cli.bind).expect("could not bind socket");
|
||||
|
|
Loading…
Reference in a new issue