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-IE7JMJ4DehwYxrkh5YCgw7yWdybxtCCxWQO7M/u6bno=";
36 ldflags = [
37 "-X main.commitHash=${self.rev or self.dirtyRev or "dev"}"
38 "-X main.version=0.1.1"
39 ];
40 };
41 }
42 );
43
44 devShells = forAllSystems (
45 { pkgs }:
46 {
47 default = pkgs.mkShell {
48 buildInputs = with pkgs; [
49 go_1_24
50 gopls
51 gotools
52 go-tools
53 golangci-lint
54 delve
55 goreleaser
56 ];
57
58 shellHook = ''
59 echo "Herald development environment"
60 echo "Go version: $(go version)"
61 echo "golangci-lint version: $(golangci-lint version)"
62 '';
63 };
64 }
65 );
66
67 apps = forAllSystems (
68 { pkgs }:
69 {
70 default = {
71 type = "app";
72 program = "${self.packages.${pkgs.system}.default}/bin/herald";
73 };
74 }
75 );
76 };
77}