🌷 the cutsie hackatime helper

feat: update flake to be fancy

dunkirk.sh f1fcd352 a668bdd9

verified
+112 -69
+112 -69
flake.nix
··· 5 5 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 6 6 }; 7 7 8 - outputs = { self, nixpkgs }: 8 + outputs = 9 + { self, nixpkgs }: 9 10 let 10 11 allSystems = [ 11 12 "x86_64-linux" # 64-bit Intel/AMD Linux ··· 13 14 "x86_64-darwin" # 64-bit Intel macOS 14 15 "aarch64-darwin" # 64-bit ARM macOS 15 16 ]; 16 - forAllSystems = f: nixpkgs.lib.genAttrs allSystems (system: f { 17 - pkgs = import nixpkgs { inherit system; }; 18 - }); 17 + forAllSystems = 18 + f: 19 + nixpkgs.lib.genAttrs allSystems ( 20 + system: 21 + f { 22 + pkgs = import nixpkgs { inherit system; }; 23 + } 24 + ); 19 25 in 20 26 { 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 - }); 27 + packages = forAllSystems ( 28 + { pkgs }: 29 + let 30 + akami = pkgs.buildGoModule { 31 + pname = "akami"; 32 + version = "0.0.1"; 33 + subPackages = [ "." ]; # Build from root directory 34 + src = self; 35 + vendorHash = "sha256-9gO00c3D846SJl5dbtfj0qasmONLNxU/7V1TG6QEaxM="; 36 + 37 + nativeBuildInputs = [ pkgs.installShellFiles ]; 38 + 39 + postInstall = '' 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) 44 + 45 + # Generate and install man page 46 + $out/bin/crush man > crush.1 47 + installManPage crush.1 48 + ''; 49 + 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; 56 + }; 57 + }; 58 + in 59 + { 60 + default = akami; 61 + } 62 + ); 63 + 64 + devShells = forAllSystems ( 65 + { pkgs }: 66 + { 67 + default = pkgs.mkShell { 68 + buildInputs = with pkgs; [ 69 + go 70 + gopls 71 + gotools 72 + go-tools 73 + (pkgs.writeShellScriptBin "akami-dev" '' 74 + go build -o ./bin/akami ./main.go 75 + ./bin/akami "$@" || true 76 + '') 77 + (pkgs.writeShellScriptBin "akami-build" '' 78 + echo "Building akami binaries for all platforms..." 79 + mkdir -p $PWD/bin 30 80 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 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 45 84 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 49 88 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 53 92 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 57 96 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 61 100 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/" 102 + ls -la $PWD/bin/ 103 + '') 104 + ]; 65 105 66 - echo "All binaries built successfully in $PWD/bin/" 67 - ls -la $PWD/bin/ 68 - '') 69 - ]; 106 + shellHook = '' 107 + export PATH=$PATH:$PWD/bin 108 + mkdir -p $PWD/bin 109 + ''; 110 + }; 111 + } 112 + ); 70 113 71 - shellHook = '' 72 - export PATH=$PATH:$PWD/bin 73 - mkdir -p $PWD/bin 74 - ''; 75 - }; 76 - }); 114 + apps = forAllSystems ( 115 + { pkgs }: 116 + { 117 + default = { 118 + type = "app"; 119 + program = "${self.packages.${pkgs.system}.default}/bin/akami"; 120 + }; 121 + akami-dev = { 122 + type = "app"; 123 + program = toString ( 124 + pkgs.writeShellScript "akami-dev" '' 125 + go build -o ./bin/akami ./main.go 126 + ./bin/akami $* || true 127 + '' 128 + ); 129 + }; 130 + akami-build = { 131 + type = "app"; 132 + program = "${self.devShells.${pkgs.system}.default.inputDerivation}/bin/akami-build"; 133 + }; 134 + } 135 + ); 77 136 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 - }); 137 + formatter = forAllSystems ({ pkgs }: pkgs.nixfmt-tree); 95 138 }; 96 139 }