···
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
8
-
outputs = { self, nixpkgs }:
"x86_64-linux" # 64-bit Intel/AMD Linux
···
"x86_64-darwin" # 64-bit Intel macOS
"aarch64-darwin" # 64-bit ARM macOS
16
-
forAllSystems = f: nixpkgs.lib.genAttrs allSystems (system: f {
17
-
pkgs = import nixpkgs { inherit system; };
19
+
nixpkgs.lib.genAttrs allSystems (
22
+
pkgs = import nixpkgs { inherit system; };
21
-
packages = forAllSystems ({ pkgs }: {
22
-
default = pkgs.buildGoModule {
25
-
subPackages = [ "." ]; # Build from root directory
27
-
vendorHash = "sha256-9gO00c3D846SJl5dbtfj0qasmONLNxU/7V1TG6QEaxM=";
27
+
packages = forAllSystems (
30
+
akami = pkgs.buildGoModule {
33
+
subPackages = [ "." ]; # Build from root directory
35
+
vendorHash = "sha256-9gO00c3D846SJl5dbtfj0qasmONLNxU/7V1TG6QEaxM=";
37
+
nativeBuildInputs = [ pkgs.installShellFiles ];
40
+
installShellCompletion --cmd crush \
41
+
--bash <($out/bin/crush completion bash) \
42
+
--fish <($out/bin/crush completion fish) \
43
+
--zsh <($out/bin/crush completion zsh)
45
+
# Generate and install man page
46
+
$out/bin/crush man > crush.1
47
+
installManPage crush.1
50
+
meta = with pkgs.lib; {
51
+
description = "🌷 the cutsie hackatime helper";
52
+
homepage = "https://github.com/taciturnaxolotl/akami";
53
+
license = licenses.mit;
54
+
maintainers = with maintainers; [ taciturnaxolotl ];
55
+
platforms = platforms.linux ++ platforms.darwin;
64
+
devShells = forAllSystems (
67
+
default = pkgs.mkShell {
68
+
buildInputs = with pkgs; [
73
+
(pkgs.writeShellScriptBin "akami-dev" ''
74
+
go build -o ./bin/akami ./main.go
75
+
./bin/akami "$@" || true
77
+
(pkgs.writeShellScriptBin "akami-build" ''
78
+
echo "Building akami binaries for all platforms..."
31
-
devShells = forAllSystems ({ pkgs }: {
32
-
default = pkgs.mkShell {
33
-
buildInputs = with pkgs; [
38
-
(pkgs.writeShellScriptBin "akami-dev" ''
39
-
go build -o ./bin/akami ./main.go
40
-
./bin/akami "$@" || true
42
-
(pkgs.writeShellScriptBin "akami-build" ''
43
-
echo "Building akami binaries for all platforms..."
81
+
# Build for Linux (64-bit)
82
+
echo "Building for Linux (x86_64)..."
83
+
GOOS=linux GOARCH=amd64 go build -o $PWD/bin/akami-linux-amd64 ./main.go
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
85
+
# Build for Linux ARM (64-bit)
86
+
echo "Building for Linux (aarch64)..."
87
+
GOOS=linux GOARCH=arm64 go build -o $PWD/bin/akami-linux-arm64 ./main.go
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
89
+
# Build for macOS (64-bit Intel)
90
+
echo "Building for macOS (x86_64)..."
91
+
GOOS=darwin GOARCH=amd64 go build -o $PWD/bin/akami-darwin-amd64 ./main.go
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
93
+
# Build for macOS ARM (64-bit)
94
+
echo "Building for macOS (aarch64)..."
95
+
GOOS=darwin GOARCH=arm64 go build -o $PWD/bin/akami-darwin-arm64 ./main.go
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
97
+
# Build for Windows (64-bit)
98
+
echo "Building for Windows (x86_64)..."
99
+
GOOS=windows GOARCH=amd64 go build -o $PWD/bin/akami-windows-amd64.exe ./main.go
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
101
+
echo "All binaries built successfully in $PWD/bin/"
66
-
echo "All binaries built successfully in $PWD/bin/"
107
+
export PATH=$PATH:$PWD/bin
72
-
export PATH=$PATH:$PWD/bin
114
+
apps = forAllSystems (
119
+
program = "${self.packages.${pkgs.system}.default}/bin/akami";
123
+
program = toString (
124
+
pkgs.writeShellScript "akami-dev" ''
125
+
go build -o ./bin/akami ./main.go
126
+
./bin/akami $* || true
132
+
program = "${self.devShells.${pkgs.system}.default.inputDerivation}/bin/akami-build";
78
-
apps = forAllSystems ({ pkgs }: {
81
-
program = "${self.packages.${pkgs.system}.default}/bin/akami";
85
-
program = toString (pkgs.writeShellScript "akami-dev" ''
86
-
go build -o ./bin/akami ./main.go
87
-
./bin/akami $* || true
92
-
program = "${self.devShells.${pkgs.system}.default.inputDerivation}/bin/akami-build";
137
+
formatter = forAllSystems ({ pkgs }: pkgs.nixfmt-tree);