Add flake.nix to allow running from tangled CI #7

open
opened by oeiuwq.com targeting main from oeiuwq.com/tangled-cli: flake
+18
README.md
··· 60 60 61 61 The binary will be available at `target/release/tangled-cli`. 62 62 63 + ### Using with Nix 64 + 65 + This repo provides a runnable flake: 66 + 67 + ```sh 68 + nix run git+https://tangled.org/vitorpy.com/tangled-cli 69 + ``` 70 + 71 + #### On Tangled CI Pipelines 72 + 73 + Register a [Spindle dependency](https://tangled.org/tangled.org/core/blob/master/docs/spindle/pipeline.md#dependencies) on your workflow: 74 + 75 + ```yaml 76 + dependencies: 77 + git+https://tangled.org/victorpy.com/tangled-cli: 78 + - tangled-cli 79 + ``` 80 + 63 81 ### Install from AUR (Arch Linux) 64 82 65 83 Community-maintained package:
+27
flake.lock
··· 1 + { 2 + "nodes": { 3 + "nixpkgs": { 4 + "locked": { 5 + "lastModified": 1764242076, 6 + "narHash": "sha256-sKoIWfnijJ0+9e4wRvIgm/HgE27bzwQxcEmo2J/gNpI=", 7 + "owner": "NixOS", 8 + "repo": "nixpkgs", 9 + "rev": "2fad6eac6077f03fe109c4d4eb171cf96791faa4", 10 + "type": "github" 11 + }, 12 + "original": { 13 + "owner": "NixOS", 14 + "ref": "nixos-unstable", 15 + "repo": "nixpkgs", 16 + "type": "github" 17 + } 18 + }, 19 + "root": { 20 + "inputs": { 21 + "nixpkgs": "nixpkgs" 22 + } 23 + } 24 + }, 25 + "root": "root", 26 + "version": 7 27 + }
+5
flake.nix
··· 1 + { 2 + description = "Tangled CLI"; 3 + outputs = inputs: import ./nix inputs; 4 + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 5 + }
+47
nix/default.nix
··· 1 + inputs: 2 + let 3 + inherit (inputs) self nixpkgs; 4 + forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed; 5 + 6 + cliToml = builtins.fromTOML (builtins.readFile ../crates/tangled-cli/Cargo.toml); 7 + 8 + tangled-cli = 9 + { 10 + lib, 11 + rustPlatform, 12 + pkg-config, 13 + openssl, 14 + ... 15 + }: 16 + rustPlatform.buildRustPackage (finalAttrs: { 17 + pname = cliToml.package.name; 18 + version = cliToml.package.version; 19 + src = ./..; 20 + cargoDepsName = finalAttrs.pname; 21 + cargoLock.lockFile = ../Cargo.lock; 22 + 23 + nativeBuildInputs = [ pkg-config ]; 24 + buildInputs = [ openssl ]; 25 + 26 + meta = { 27 + description = cliToml.package.description; 28 + license = lib.licenses.mit; 29 + }; 30 + }); 31 + 32 + packages = forAllSystems ( 33 + system: 34 + let 35 + pkgs = import nixpkgs { inherit system; }; 36 + default = pkgs.callPackage tangled-cli { }; 37 + in 38 + { 39 + inherit default; 40 + tangled-cli = default; 41 + } 42 + ); 43 + 44 + in 45 + { 46 + inherit packages; 47 + }