馃尫 the cutsie hackatime helper
1{
2 description = "馃尫 the cutsie hackatime helper";
3
4 inputs = {
5 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6 };
7
8 outputs = { self, nixpkgs }:
9 let
10 allSystems = [
11 "x86_64-linux" # 64-bit Intel/AMD Linux
12 "aarch64-linux" # 64-bit ARM Linux
13 "x86_64-darwin" # 64-bit Intel macOS
14 "aarch64-darwin" # 64-bit ARM macOS
15 ];
16 forAllSystems = f: nixpkgs.lib.genAttrs allSystems (system: f {
17 pkgs = import nixpkgs { inherit system; };
18 });
19 in
20 {
21 packages = forAllSystems ({ pkgs }: {
22 default = pkgs.buildGoModule {
23 pname = "akami";
24 version = "0.0.1";
25 subPackages = [ "." ]; # Build from root directory
26 src = ./.;
27 vendorHash = "sha256-9gO00c3D846SJl5dbtfj0qasmONLNxU/7V1TG6QEaxM=";
28 };
29 });
30
31 devShells = forAllSystems ({ pkgs }: {
32 default = pkgs.mkShell {
33 buildInputs = with pkgs; [
34 go
35 gopls
36 gotools
37 go-tools
38 (pkgs.writeShellScriptBin "akami-dev" ''
39 go build -o ./bin/akami ./main.go
40 ./bin/akami "$@" || true
41 '')
42 (pkgs.writeShellScriptBin "akami-build" ''
43 echo "Building akami binaries for all platforms..."
44 mkdir -p $PWD/bin
45
46 # Build for Linux (64-bit)
47 echo "Building for Linux (x86_64)..."
48 GOOS=linux GOARCH=amd64 go build -o $PWD/bin/akami-linux-amd64 ./main.go
49
50 # Build for Linux ARM (64-bit)
51 echo "Building for Linux (aarch64)..."
52 GOOS=linux GOARCH=arm64 go build -o $PWD/bin/akami-linux-arm64 ./main.go
53
54 # Build for macOS (64-bit Intel)
55 echo "Building for macOS (x86_64)..."
56 GOOS=darwin GOARCH=amd64 go build -o $PWD/bin/akami-darwin-amd64 ./main.go
57
58 # Build for macOS ARM (64-bit)
59 echo "Building for macOS (aarch64)..."
60 GOOS=darwin GOARCH=arm64 go build -o $PWD/bin/akami-darwin-arm64 ./main.go
61
62 # Build for Windows (64-bit)
63 echo "Building for Windows (x86_64)..."
64 GOOS=windows GOARCH=amd64 go build -o $PWD/bin/akami-windows-amd64.exe ./main.go
65
66 echo "All binaries built successfully in $PWD/bin/"
67 ls -la $PWD/bin/
68 '')
69 ];
70
71 shellHook = ''
72 export PATH=$PATH:$PWD/bin
73 mkdir -p $PWD/bin
74 '';
75 };
76 });
77
78 apps = forAllSystems ({ pkgs }: {
79 default = {
80 type = "app";
81 program = "${self.packages.${pkgs.system}.default}/bin/akami";
82 };
83 akami-dev = {
84 type = "app";
85 program = toString (pkgs.writeShellScript "akami-dev" ''
86 go build -o ./bin/akami ./main.go
87 ./bin/akami $* || true
88 '');
89 };
90 akami-build = {
91 type = "app";
92 program = "${self.devShells.${pkgs.system}.default.inputDerivation}/bin/akami-build";
93 };
94 });
95 };
96}