From 3aa8aefaa9ab90130724a0016e69a908fff16072 Mon Sep 17 00:00:00 2001 From: Nickiel12 Date: Mon, 25 Mar 2024 17:37:30 -0700 Subject: [PATCH] added basic flake --- .envrc | 1 + flake.nix | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 .envrc create mode 100644 flake.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..2baf3dc --- /dev/null +++ b/flake.nix @@ -0,0 +1,111 @@ +/* +TODO +1. Find and replace "joystick-controller-client" with your package name for **ALL FILES IN REPOSITORY** +2. Add a flake description that describes the workspace on line 27 +3. Add a package description on line 70 +4. (optional) uncomment `nativeBuildInputs` and `buildInputs` on lines 43 and 44 if you need openssl +5. (optional) set your project homepage, license, and maintainers list on lines 48-51 +6. (optional) uncomment the NixOS module and update it for your needs +7. Delete this comment block +*/ + +/* +Some utility commands: +- `nix flake update --commit-lock-file` +- `nix flake lock update-input ` +- `nix build .#joystick-controller-client` or `nix build .` +- `nix run .#joystick-controller-client` or `nix run .` +*/ + +{ + description = ""; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + rust-overlay.url = "github:oxalica/rust-overlay"; + }; + + outputs = { self, nixpkgs, rust-overlay }: + let + overlays = [ (import rust-overlay) ]; + system = "x86_64-linux"; + pkgs = import nixpkgs { + inherit system overlays; + }; + rustSettings = with pkgs; { + src = ./.; + #nativeBuildInputs = [ pkg-config ]; + #buildInputs = [ openssl ]; + cargoHash = nixpkgs.lib.fakeHash; + }; + meta = with nixpkgs.lib; { + #homepage = "https://example.com"; + #license = [ licenses.gpl3 ]; + platforms = [ system ]; + #maintainers = with maintainers; [ ]; + }; + in { + devShells.${system}.default = with pkgs; mkShell { + packages = [ + (pkgs.rust-bin.stable.latest.default.override { + extensions = [ "rust-src" ]; + }) + cargo-edit + bacon + ]; + inputsFrom = with self.packages.${system}; [ joystick-controller-client ]; + }; + packages.${system} = { + default = self.packages.${system}.joystick-controller-client; + joystick-controller-client = pkgs.rustPlatform.buildRustPackage (rustSettings // { + pname = "joystick-controller-client"; + version = "0.1.0"; + buildAndTestSubdir = "joystick-controller-client"; + cargoHash = "sha256-+TaGIiKf+Pz2bTABeG8aCZz0/ZTCKl5398+qbas4Nvo="; + meta = meta // { + description = ""; + }; + }); + }; + /* + nixosModules.default = { config, ... }: let + lib = nixpkgs.lib; + in { + options.services.joystick-controller-client = { + enable = lib.mkEnableOption (lib.mdDoc "joystick-controller-client service"); + package = lib.mkOption { + type = lib.types.package; + default = self.packages.${system}.joystick-controller-client; + defaultText = "pkgs.joystick-controller-client"; + description = lib.mdDoc '' + The joystick-controller-client package that should be used. + ''; + }; + port = lib.mkOption { + type = lib.types.port; + default = 8000; + description = lib.mdDoc '' + The port at which to run. + ''; + }; + }; + config.systemd.services.joystick-controller-client = let + cfg = config.services.joystick-controller-client; + pkg = self.packages.${system}.joystick-controller-client; + in lib.mkIf cfg.enable { + description = pkg.meta.description; + after = [ "network.target" ]; + wantedBy = [ "network.target" ]; + serviceConfig = { + ExecStart = '' + ${cfg.package}/bin/joystick-controller-client --port ${builtins.toString cfg.port} + ''; + Restart = "always"; + DynamicUser = true; + }; + }; + }; + */ + }; +} +