Merge pull request #29 from jetcookies/build/nix-flake

Add nix flake and update documentation
This commit is contained in:
Lab-8916100448256
2026-01-23 09:26:17 +01:00
committed by GitHub
5 changed files with 163 additions and 13 deletions
+1
View File
@@ -0,0 +1 @@
use flake
+4
View File
@@ -12,3 +12,7 @@ vite.config.ts.timestamp-*
# IDE:
.vscode
# Nix
result
.direnv
+28 -13
View File
@@ -144,33 +144,48 @@ The compiled binaries will be available in:
- **macOS**: `src-tauri/target/release/bundle/dmg/`
- **Windows**: `src-tauri/target/release/bundle/`
## Building with Nix
## Building and Development with Nix
[Nix](https://nixos.org/) is a powerful package manager that provides clean, reproducible builds. You can use Nix to build picoforge painlessly.
[Nix](https://nixos.org/) provides developers with a complete and consistent development environment.
You can use Nix to build and develop picoforge painlessly.
### 1. Install Nix
Follow the [official installation guide](https://nixos.org/download/#download-nix).
Follow the [Installation Guide](https://nixos.org/download/#download-nix) and [NixOS Wiki](https://wiki.nixos.org/wiki/Flakes#Setup) to install Nix and enable Flakes.
### 2. Download the package definition
### 2. Build & Run
You can build and run PicoForge with a single command:
```bash
curl -O https://raw.githubusercontent.com/librekeys/picoforge/main/package.nix
nix run github:librekeys/picoforge
```
### 3. Build the project
Run the following command in the directory containing `package.nix`:
Or simply build it and link to the current directory:
```bash
nix-build -E 'with import <nixpkgs> {}; callPackage ./package.nix { }'
nix build github:librekeys/picoforge
```
The compiled binary will be available at: `result/bin/picoforge`
### 3. Develop
Alternatively, you can enter a developement environement with all the required dependencies by running:
### 4. Nix-shell developement environment
Alternatively, you can use the shell.nix file that is at the root of the repository to enter a developement environement with all the required dependencies by simply running `nix-shell`
Then you can build from source and run the application with `deno task tauri dev`.
```bash
nix develop github:librekeys/picoforge
```
Or use the shell.nix file that is at the root of the repository:
```bash
nix-shell
```
Then you can build from source and run the application with:
```bash
deno task tauri dev
```
## Project Structure
Generated
+113
View File
@@ -0,0 +1,113 @@
{
"nodes": {
"fenix": {
"inputs": {
"nixpkgs": "nixpkgs",
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1769064677,
"narHash": "sha256-Upa108vGOlaOBGQTmmLEKuWekBm519u42A/oYSjTs+4=",
"owner": "nix-community",
"repo": "fenix",
"rev": "439e81e0b40781e16c444ca1c7fcd1cf8c5c406c",
"type": "github"
},
"original": {
"id": "fenix",
"type": "indirect"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1768135262,
"narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1768886240,
"narHash": "sha256-C2TjvwYZ2VDxYWeqvvJ5XPPp6U7H66zeJlRaErJKoEM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "80e4adbcf8992d3fd27ad4964fbb84907f9478b0",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1765674936,
"narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1769018530,
"narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "88d3861acdd3d2f0e361767018218e51810df8a1",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"fenix": "fenix",
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_2"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1768996281,
"narHash": "sha256-s+TolkG0f98fR6RtBEmymBb8RHmZ04U3SL8cjoqog2k=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "2d124215693f13dcf6ad097a02acdd473c80e447",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
}
},
"root": "root",
"version": 7
}
+17
View File
@@ -0,0 +1,17 @@
{
description = "PicoForge Dev Flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
};
outputs = inputs@{ flake-parts, fenix, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ "x86_64-linux" "x86_64-darwin" ];
perSystem = { config, self', inputs', pkgs, system, ... }: {
packages.default = pkgs.callPackage ./package.nix { };
devShells.default = import ./shell.nix { inherit pkgs; };
};
};
}