| 9 Jan 2024 |
symys | Hi folks, I am trying to understand how to actually build a module with buildGoModule. I have tried, for example:
nix-build '<nixpkgs>' ./shell.nix result:
nix-build '<nixpkgs>' ./shell.nix
error: Please be informed that this pseudo-package is not the only part of
Nixpkgs that fails to evaluate. You should not evaluate entire Nixpkgs
without some special measures to handle failing packages, like those taken
by Hydra.
| 23:55:11 |
symys | where shell.nix is:
1 {·lib↵
2 ,·buildGoModule↵
3 ,·fetchFromGitHub↵
4 }:↵
5 ↵
6 buildGoModule·rec·{↵
7 ··pname·=·"signASLbot";↵
8 ··#version·=·"1.1.6";↵
9 ↵
10 ··src·=·fetchFromGitHub·{↵
11 ····owner·=·"mplsbugbounty";↵
12 ····repo·=·pname;↵
13 ···#·rev·=·"v${version}";↵
14 ···#·sha256·=·"sha256-1EnKheHaS1kxw0cjxCahT3rUWBXiqxjKefrDBI2xIvY=";↵
15 ··};↵
16 ↵
17 ··#vendorHash·=·"sha256-egjjSEZH8F6UMbnkz3xytIzdW/oITB3RL1ddxrmvSZM=";↵
18 ↵
19 ··#·tests·require·internet·access·and·API·keys↵
20 ··doCheck·=·false;↵
21 ↵
22 ··meta·=·with·lib;·{↵
23 ····description·=·"";↵
24 ····longDescription·=·''↵
25 → It's·a·pretty·basic·little·bot·really!↵
26 ····'';↵
27 ····homepage·=·"https://github.com/mplsbugbounty/signASLBot";↵
28 ····#license·=·licenses.mit;↵
29 ····#maintainers·=·with·maintainers;·[·fab·];↵
30 ··};↵
31 }↵
| 23:55:53 |
symys | ( That's not the right info for my repo, but I haven't gotten to that step yet, because I can't get the build to even start. I assume I'm doing something wrong with the '<nixpkgs>' part, trying to build all of nixpkgs or something, but I don't know what I need to supply it with instead ) | 23:58:22 |
| 10 Jan 2024 |
symys | And what exactly is the lib argument suppose to be? | 00:03:24 |
@qbit:tapenet.org | i think you need --attr signASLbot | 01:05:30 |
@qbit:tapenet.org | not sure what lib argument you mean | 01:05:46 |
symys | In reply to @qbit:tapenet.org i think you need --attr signASLbot thanks, I'll give it a shot once I get a chance | 01:46:28 |
symys | In reply to @qbit:tapenet.org not sure what lib argument you mean Like from here:
meta = with lib; {
description = "Neutron node";
longDescription = ''
Neutron node to interact with neutron blockchain
'';
homepage = "https://github.com/neutron-org/neutron";
license = licenses.asl20; # Apache license
maintainers = with maintainers; [
pr0n00gler
foxpy
];
platforms = platforms.all;
};
| 01:47:34 |
symys | And
1 {·lib↵
2 ,·buildGoModule↵
3 ,·fetchFromGitHub↵
4 }:↵
| 01:48:16 |
symys | It's a function argument right? | 01:48:38 |
@qbit:tapenet.org | oh, lib is the "nixpkgs" library | 02:12:15 |
@qbit:tapenet.org | https://teu5us.github.io/nix-lib.html | 02:12:36 |
@qbit:tapenet.org | the "with lib" is effectively exposing the stuff in lib to the attrs that follow - so you don't have to type lib.maintainers.foxpy or lib.licenses.... | 02:13:53 |
symys | Ohhhhh okay thank you!! | 02:15:37 |
@qbit:tapenet.org | np | 02:16:25 |
| 11 Jan 2024 |
symys | Okay so I updated my shell.nix to:
1 let↵
2 ··lib·=·import·<nixpkgs>·{};↵
3 in↵
4 ↵
5 lib.buildGoModule·rec·{↵
6 ··pname·=·"signASLbot";↵
7 ··version·=·"";↵
8 ↵
9 ··src·=·lib.fetchFromGitHub·{↵
10 ····url·=·"https://github.com/mplsbugbounty/signASLBot/archive/refs/heads/main.zip";↵
11 ····owner·=·"mplsbugbounty";↵
12 ····repo·=·pname;↵
13 ····rev·=·"794245ee556b3ce80991872b5a59e9a810250c7d";↵
14 ····sha256·=·"0s5qqmzp793012ynxyrlibi6g4xacvgs59z56dfh4ll4z2gv41md";↵
15 ··};↵
16 ↵
17 ··vendorHash·=·"sha256-9OY34TlxbvqNfGbDqQyovk+HWCCIUZOorbrH/5rhO3M";↵
18 ↵
19 ··meta·=·with·lib;·{↵
20 ····description·=·"";↵
21 ····longDescription·=·''↵
22 → It's·a·pretty·basic·little·bot·really!↵
23 ····'';↵
24 ····homepage·=·"https://github.com/mplsbugbounty/signASLBot";↵
25 ····license·=·"";↵
26 ····maintainers·=·with·maintainers;·[·symys·];↵
27 ··};↵
28 }↵
I get:
error: builder for '/nix/store/45ql7689gpqdqj2ylwhzhgi9khi5l7ly-signASLbot-.drv' failed with exit code 1;
...
> Running phase: buildPhase
> Building subPackage .
> main.go:26:5: package signaslbot/errUtils is not in std (/nix/store/6qd8p8gilzgplpk2ni3109m0k71r21s7-go-1.21.5/share/go/src/signaslbot/errUtils)
For full logs, run 'nix-store -l /nix/store/45ql7689gpqdqj2ylwhzhgi9khi5l7ly-signASLbot-.drv'.
| 05:42:06 |
symys | signaslbot/errUtils is a custom package in the same repo | 05:43:08 |
symys | * signaslbot/errUtils is a custom package in the same repo. How can I make it available to the nix store before it gets to this build step? | 05:45:16 |
@qbit:tapenet.org | if you want it to be a shell you need to use mkShell, no? | 13:31:30 |
@qbit:tapenet.org | https://github.com/mplsbugbounty/signASLBot/blob/main/go.mod#L1 ah, i see you have a second go.mod in the errUtils dir | 13:32:54 |
@qbit:tapenet.org | that can't be ref'd as "signaslbot/errUtils" | 13:33:17 |
@qbit:tapenet.org | in go | 13:33:19 |
@qbit:tapenet.org | because your "sub" module is literally called "errUtils" | 13:33:43 |
@qbit:tapenet.org | remote the errUtils/go.* files and things might work | 13:34:18 |
@qbit:tapenet.org | https://go.dev/ref/mod#modules-overview | 13:35:14 |
@qbit:tapenet.org | your errUtils is a package in the signaslbot module | 13:35:50 |
@qbit:tapenet.org |
Each package within a module is a collection of source files in the same directory that are compiled together. A package path is the module path joined with the subdirectory containing the package (relative to the module root). For example, the module "golang.org/x/net" contains a package in the directory "html". That package’s path is "golang.org/x/net/html".
| 13:35:51 |
@qbit:tapenet.org | doing sub-modules is .. tricky and probably not what you want for a project of this size | 13:43:21 |
symys | In reply to @qbit:tapenet.org doing sub-modules is .. tricky and probably not what you want for a project of this size Yeah I really just did that because I wanted to get more experience structuring projects this way | 16:03:46 |
@qbit:tapenet.org | i think to do sub-modules you need to use the "full" path of the module | 16:05:34 |