/ flake.nix
flake.nix
 1  {
 2    description = "HomeTUI - A TUI client for Home Assistant";
 3  
 4    inputs = {
 5      nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
 6      flake-parts.url = "github:hercules-ci/flake-parts";
 7    };
 8  
 9    outputs =
10      inputs@{ flake-parts, ... }:
11      flake-parts.lib.mkFlake { inherit inputs; } {
12        systems = [
13          "x86_64-linux"
14          "aarch64-linux"
15          "x86_64-darwin"
16          "aarch64-darwin"
17        ];
18  
19        perSystem =
20          {
21            config,
22            self',
23            inputs',
24            pkgs,
25            system,
26            ...
27          }:
28          {
29            packages.default = pkgs.buildGoModule {
30              pname = "hometui";
31              version = "0.1.0";
32              src = ./.;
33              vendorHash = "sha256-eLCeRdRQPfp5cOX/PDM8xsfMgA/zAfWAfB/EXBc6bIg=";
34              subPackages = [ "cmd/hometui" ];
35              ldflags = [
36                "-s"
37                "-w"
38              ];
39            };
40  
41            apps.default = {
42              type = "app";
43              program = "${self'.packages.default}/bin/hometui";
44              meta.description = "TUI client for Home Assistant";
45            };
46  
47            formatter = pkgs.nixpkgs-fmt;
48  
49            devShells.default = pkgs.mkShell {
50              buildInputs = with pkgs; [
51                go
52                gopls
53                gotools
54                go-tools
55              ];
56  
57              shellHook = ''
58                echo "HomeTUI development environment"
59                echo "Run: go build -o hometui ./cmd/hometui"
60              '';
61            };
62          };
63      };
64  }