1+ {
2+ description = "Godon CLI - Nim-based CLI for Godon API" ;
3+
4+ inputs = {
5+ nixpkgs . url = "github:NixOS/nixpkgs/nixos-25.11" ;
6+ flake-utils . url = "github:numtide/flake-utils" ;
7+ } ;
8+
9+ outputs = { self , nixpkgs , flake-utils } :
10+ flake-utils . lib . eachDefaultSystem ( system :
11+ let
12+ pkgs = nixpkgs . legacyPackages . ${ system } ;
13+
14+ # Build using nimble following the godon-api pattern
15+ godon-cli = { version ? "DEV_BUILD" } : pkgs . stdenv . mkDerivation {
16+ pname = "godon-cli" ;
17+ inherit version ;
18+ src = ./. ;
19+
20+ nativeBuildInputs = with pkgs ; [
21+ cacert
22+ nim2
23+ nimble
24+ git
25+ openssl . dev
26+ ] ;
27+
28+ env = {
29+ SSL_CERT_FILE = "${ pkgs . cacert } /etc/ssl/certs/ca-bundle.crt" ;
30+ NIX_SSL_CERT_FILE = "${ pkgs . cacert } /etc/ssl/certs/ca-bundle.crt" ;
31+ CURL_CA_BUNDLE = "${ pkgs . cacert } /etc/ssl/certs/ca-bundle.crt" ;
32+ } ;
33+
34+ configurePhase = ''
35+ export HOME=$TMPDIR
36+ '' ;
37+
38+ buildPhase = ''
39+ echo "Building godon-cli version: ${ version } "
40+
41+ # Refresh package list and build
42+ nimble refresh
43+
44+ # Build the CLI
45+ mkdir -p bin
46+ nim c --hints:on --path:src -d:release -d:VERSION="${ version } " -o:bin/godon_cli src/godon_cli.nim || {
47+ echo "Compilation failed"
48+ exit 1
49+ }
50+
51+ echo "Build completed successfully!"
52+ '' ;
53+
54+ installPhase = ''
55+ mkdir -p $out/bin
56+
57+ # Install the binary
58+ cp bin/godon_cli $out/bin/godon_cli
59+ chmod +x $out/bin/godon_cli
60+ '' ;
61+
62+ meta = with pkgs . lib ; {
63+ description = "CLI for the Godon API" ;
64+ license = licenses . agpl3Only ;
65+ platforms = platforms . all ;
66+ } ;
67+ } ;
68+
69+ in {
70+ packages . default = godon-cli { } ;
71+ packages . godon-cli = godon-cli ;
72+
73+ # Allow building with custom version
74+ packages . godon-cli-custom = version : godon-cli { inherit version ; } ;
75+
76+ # Development shell with Nim and build tools
77+ devShells . default = pkgs . mkShell {
78+ buildInputs = with pkgs ; [
79+ nim2
80+ nimble
81+ git
82+ ] ;
83+
84+ shellHook = ''
85+ echo "Godon CLI development environment"
86+ echo "Nim: $(nim --version | head -n1)"
87+ echo "Nimble: $(nimble --version | head -n1)"
88+ '' ;
89+ } ;
90+ } ) ;
91+ }
0 commit comments