rss email digests over ssh because you're a cool kid
herald.dunkirk.sh
go
rss
rss-reader
ssh
charm
1{
2 description = "Herald - RSS feed aggregator";
3
4 inputs = {
5 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6 };
7
8 outputs =
9 { self, nixpkgs }:
10 let
11 allSystems = [
12 "x86_64-linux" # 64-bit Intel/AMD Linux
13 "aarch64-linux" # 64-bit ARM Linux
14 "x86_64-darwin" # 64-bit Intel macOS
15 "aarch64-darwin" # 64-bit ARM macOS
16 ];
17 forAllSystems =
18 f:
19 nixpkgs.lib.genAttrs allSystems (
20 system:
21 f {
22 pkgs = import nixpkgs { inherit system; };
23 }
24 );
25 in
26 {
27 packages = forAllSystems (
28 { pkgs }:
29 {
30 default = pkgs.buildGoModule {
31 pname = "herald";
32 version = "0.1.1";
33 subPackages = [ "." ];
34 src = self;
35 vendorHash = "sha256-SjxTy/ecSUYaJJ8dpfQFLF7WgVEpnKcu5qWcqyw611Q=";
36 proxyVendor = true;
37 ldflags = [
38 "-X main.commitHash=${self.rev or self.dirtyRev or "dev"}"
39 "-X main.version=0.1.1"
40 ];
41 };
42 }
43 );
44
45 devShells = forAllSystems (
46 { pkgs }:
47 {
48 default = pkgs.mkShell {
49 buildInputs = with pkgs; [
50 go_1_24
51 gopls
52 gotools
53 go-tools
54 golangci-lint
55 delve
56 goreleaser
57 ];
58
59 shellHook = ''
60 echo "Herald development environment"
61 echo "Go version: $(go version)"
62 echo "golangci-lint version: $(golangci-lint version)"
63 '';
64 };
65 }
66 );
67
68 apps = forAllSystems (
69 { pkgs }:
70 {
71 default = {
72 type = "app";
73 program = "${self.packages.${pkgs.system}.default}/bin/herald";
74 };
75 }
76 );
77 };
78}