diff --git a/README.md b/README.md index c6c8116..ce48083 100644 --- a/README.md +++ b/README.md @@ -23,19 +23,7 @@ Without nix: check out this repository and use `cargo run --release`. ## Command line arguments -``` -Usage: servicepoint-simulator [OPTIONS] - -Options: - --bind address and port to bind to [default: 0.0.0.0:2342] - -f, --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 -``` +The application binds to `0.0.0.0:2342` by default (`./servicepoint-simulator --bind host:port` to change this). See [env_logger](https://docs.rs/env_logger/latest/env_logger/) to configure logging. diff --git a/flake.lock b/flake.lock index dfb3db6..cdd30be 100644 --- a/flake.lock +++ b/flake.lock @@ -37,11 +37,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1736200483, - "narHash": "sha256-JO+lFN2HsCwSLMUWXHeOad6QUxOuwe9UOAF/iSl1J4I=", + "lastModified": 1737672001, + "narHash": "sha256-YnHJJ19wqmibLQdUeq9xzE6CjrMA568KN/lFPuSVs4I=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3f0a8ac25fb674611b98089ca3a5dd6480175751", + "rev": "035f8c0853c2977b24ffc4d0a42c74f00b182cd8", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 96cbeaa..6254f4e 100644 --- a/flake.nix +++ b/flake.nix @@ -25,24 +25,99 @@ "aarch64-darwin" "x86_64-darwin" ]; - forAllSystems = - f: - lib.genAttrs supported-systems ( - system: - f rec { - pkgs = nixpkgs.legacyPackages.${system}; - inherit system; - } - ); + forAllSystems = lib.genAttrs supported-systems; + make-rust-toolchain-core = + pkgs: + pkgs.symlinkJoin { + name = "rust-toolchain-core"; + paths = with pkgs; [ + rustc + cargo + rustPlatform.rustcSrc + ]; + }; in rec { packages = forAllSystems ( - { pkgs, ... }: - rec { - servicepoint-simulator = import ./servicepoint-simulator.nix { - inherit nix-filter pkgs; - naersk' = pkgs.callPackage naersk { }; + 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 + 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 + ]; + }; + 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; } ); @@ -50,35 +125,29 @@ legacyPackages = packages; devShells = forAllSystems ( - { - pkgs, - system, - }: + system: + let + pkgs = nixpkgs.legacyPackages."${system}"; + rust-toolchain = pkgs.symlinkJoin { + name = "rust-toolchain"; + paths = with pkgs; [ + (make-rust-toolchain-core pkgs) + rustfmt + clippy + cargo-expand + ]; + }; + in { default = pkgs.mkShell rec { inputsFrom = [ self.packages.${system}.default ]; - packages = [ - pkgs.gdb - (pkgs.symlinkJoin { - name = "rust-toolchain"; - paths = with pkgs; [ - rustc - cargo - rustPlatform.rustcSrc - rustfmt - clippy - cargo-expand - ]; - }) - ]; + 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 ({ pkgs, ... }: pkgs.nixfmt-rfc-style); + formatter = forAllSystems (system: nixpkgs.legacyPackages."${system}".nixfmt-rfc-style); }; } diff --git a/servicepoint-simulator.nix b/servicepoint-simulator.nix deleted file mode 100644 index efb8fd4..0000000 --- a/servicepoint-simulator.nix +++ /dev/null @@ -1,74 +0,0 @@ -{ - 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} - ''; -} diff --git a/src/cli.rs b/src/cli.rs index 5d7adf0..0e82f74 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -8,6 +8,12 @@ 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, @@ -16,23 +22,10 @@ pub struct Cli { pub font: Option, #[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, @@ -54,4 +47,11 @@ 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, } diff --git a/src/main.rs b/src/main.rs index fa0b127..4ea5b7b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -29,7 +29,7 @@ fn main() { cli.gui.green = true; } - init_logging(cli.verbose); + init_logging(cli.debug); info!("starting with args: {:?}", &cli); let socket = UdpSocket::bind(&cli.bind).expect("could not bind socket");