aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2022-07-19 16:53:55 +0200
committerQuentin Dufour <quentin@deuxfleurs.fr>2022-07-24 09:47:31 +0200
commit0ef8313a67866fc172ed93aa3df5e1fb2e672f86 (patch)
tree32d0191748728361840597d7ad23d2e3bd019840
parent9ce0d22c99472534838c1afe7c6dffdd0aa659a8 (diff)
downloadbottin-0ef8313a67866fc172ed93aa3df5e1fb2e672f86.tar.gz
bottin-0ef8313a67866fc172ed93aa3df5e1fb2e672f86.zip
Add Nix packagingnix
-rw-r--r--README.md11
-rw-r--r--default.nix54
-rw-r--r--gomod2nix.toml153
3 files changed, 218 insertions, 0 deletions
diff --git a/README.md b/README.md
index 2442040..2fcc22d 100644
--- a/README.md
+++ b/README.md
@@ -44,6 +44,17 @@ Bottin requires go 1.13 or later.
To build Bottin, clone this repository outside of your `$GOPATH`.
Then, run `make` in the root of the repo.
+## Releasing
+
+```bash
+nix-build -A bin
+nix-build -A docker
+```
+
+```bash
+docker load < $(nix-build -A docker)
+docker push ???
+```
## Server initialization
diff --git a/default.nix b/default.nix
new file mode 100644
index 0000000..35c8ba1
--- /dev/null
+++ b/default.nix
@@ -0,0 +1,54 @@
+let
+ pkgsSrc = fetchTarball {
+ # As of 2022-07-19
+ url = "https://github.com/NixOS/nixpkgs/archive/d2db10786f27619d5519b12b03fb10dc8ca95e59.tar.gz";
+ sha256 = "0s9gigs3ylnq5b94rfcmxvrmmr3kzhs497gksajf638d5bv7zcl5";
+ };
+ gomod2nix = fetchGit {
+ url = "https://github.com/tweag/gomod2nix.git";
+ ref = "master";
+ rev = "40d32f82fc60d66402eb0972e6e368aeab3faf58";
+ };
+
+ pkgs = import pkgsSrc {
+ overlays = [
+ (self: super: {
+ gomod = super.callPackage "${gomod2nix}/builder/" { };
+ })
+ ];
+ };
+in rec {
+ bin = pkgs.gomod.buildGoApplication {
+ pname = "bottin-bin";
+ version = "0.1.0";
+ src = builtins.filterSource
+ (path: type: (builtins.match ".*/test/.*\\.(go|sum|mod)" path) == null)
+ ./.;
+ modules = ./gomod2nix.toml;
+
+ CGO_ENABLED=0;
+
+ meta = with pkgs.lib; {
+ description = "A cloud-native LDAP server backed by a Consul datastore";
+ homepage = "https://git.deuxfleurs.fr/Deuxfleurs/bottin";
+ license = licenses.gpl3Plus;
+ platforms = platforms.linux;
+ };
+ };
+ pkg = pkgs.stdenv.mkDerivation {
+ pname = "bottin";
+ version = "0.1.0";
+ unpackPhase = "true";
+
+ installPhase = ''
+ mkdir -p $out/
+ cp ${bin}/bin/bottin $out/bottin
+ '';
+ };
+ docker = pkgs.dockerTools.buildImage {
+ name = "dxflrs/bottin";
+ config = {
+ Cmd = [ "${pkg}/bottin" ];
+ };
+ };
+}
diff --git a/gomod2nix.toml b/gomod2nix.toml
new file mode 100644
index 0000000..62a57bf
--- /dev/null
+++ b/gomod2nix.toml
@@ -0,0 +1,153 @@
+schema = 3
+
+[mod]
+ [mod."github.com/armon/circbuf"]
+ version = "v0.0.0-20150827004946-bbbad097214e"
+ hash = "sha256-klQjllsJZqZ2KPNx1mZT9XP+UAJkuBhmTnZdNlAflEM="
+ [mod."github.com/armon/go-metrics"]
+ version = "v0.0.0-20180917152333-f0300d1749da"
+ hash = "sha256-+zqX1hlJgc+IrXRzBQDMhR8GYQdc0Oj6PiIDfctgh44="
+ [mod."github.com/armon/go-radix"]
+ version = "v0.0.0-20180808171621-7fddfc383310"
+ hash = "sha256-ZHU4pyBqHHRuQJuYr2K+LqeAnLX9peX07cmSYK+GDHk="
+ [mod."github.com/bgentry/speakeasy"]
+ version = "v0.1.0"
+ hash = "sha256-Gt1vj6CFovLnO6wX5u2O4UfecY9V2J9WGw1ez4HMrgk="
+ [mod."github.com/davecgh/go-spew"]
+ version = "v1.1.1"
+ hash = "sha256-nhzSUrE1fCkN0+RL04N4h8jWmRFPPPWbCuDc7Ss0akI="
+ [mod."github.com/fatih/color"]
+ version = "v1.7.0"
+ hash = "sha256-4In7ef7it7d+6oGUJ3pkD0V+lsL40hVtYdy2KD2ovn0="
+ [mod."github.com/google/btree"]
+ version = "v0.0.0-20180813153112-4030bb1f1f0c"
+ hash = "sha256-5gr0RMnlvrzCke3kwpkf92WvW3x5nnKZesoulyoYRC0="
+ [mod."github.com/google/uuid"]
+ version = "v1.1.1"
+ hash = "sha256-66PXC/RCPUyhS9PhkIPQFR3tbM2zZYDNPGXN7JJj3UE="
+ [mod."github.com/hashicorp/consul/api"]
+ version = "v1.3.0"
+ hash = "sha256-fMORNFAWK2GkRbBl/KzNHrvtCfwz/7P66HzDaE4GnuE="
+ [mod."github.com/hashicorp/consul/sdk"]
+ version = "v0.3.0"
+ hash = "sha256-lF47JPGfmeGjpuQw9VSNs2Mi+G7FQLKrrHteX3iXfpU="
+ [mod."github.com/hashicorp/errwrap"]
+ version = "v1.0.0"
+ hash = "sha256-LGSLrefkABG1kH1i+GUWiD2/ggJxiZEJ+D2YNbhZjmo="
+ [mod."github.com/hashicorp/go-cleanhttp"]
+ version = "v0.5.1"
+ hash = "sha256-c54zcHr9THj3MQk7hrDQcpjOcQi1MvXZ4Kpin6EbfR4="
+ [mod."github.com/hashicorp/go-immutable-radix"]
+ version = "v1.0.0"
+ hash = "sha256-JmNxdGaJG63Ty/sVnPjqvTyA4/k5wkzZ/QvpMK2uduw="
+ [mod."github.com/hashicorp/go-msgpack"]
+ version = "v0.5.3"
+ hash = "sha256-2OUYjD/Jt12TFBrtH0wRqg+lzRljDxSIhk2CqBLUczo="
+ [mod."github.com/hashicorp/go-multierror"]
+ version = "v1.0.0"
+ hash = "sha256-iXzjerl96o7QDiSwQjbak8R/t+YzZeoUqm59TCmy3gI="
+ [mod."github.com/hashicorp/go-rootcerts"]
+ version = "v1.0.0"
+ hash = "sha256-4NZJAT5/vocyto+dv6FmW4kFiYldmNvewowsYK/LiTI="
+ [mod."github.com/hashicorp/go-sockaddr"]
+ version = "v1.0.0"
+ hash = "sha256-orG+SHVsp5lgNRCErmhMLABVFQ3ZWfYIJ/4LTFzlvao="
+ [mod."github.com/hashicorp/go-syslog"]
+ version = "v1.0.0"
+ hash = "sha256-YRuq6oPMwAFVY7mvwpMDvZqGwNnb5CjBYyKI/x5mbCc="
+ [mod."github.com/hashicorp/go-uuid"]
+ version = "v1.0.1"
+ hash = "sha256-s1wIvBu37z4U3qK9sdUR1CtbD39N6RwfX4HgDCpCa0s="
+ [mod."github.com/hashicorp/go.net"]
+ version = "v0.0.1"
+ hash = "sha256-JKal3E+wPO+Hk838opKV4HHKB4O72Xy+77ncXlLkWRk="
+ [mod."github.com/hashicorp/golang-lru"]
+ version = "v0.5.0"
+ hash = "sha256-Lo0UyOZQ89iK0Ui3Hfk5VkWqxEzLw6Lclq4EM8VlYoo="
+ [mod."github.com/hashicorp/logutils"]
+ version = "v1.0.0"
+ hash = "sha256-e8t8Dm8sp/PzKClN1TOmFcrTAWNh4mZHSW7cAjVx3Bw="
+ [mod."github.com/hashicorp/mdns"]
+ version = "v1.0.0"
+ hash = "sha256-ravx4tklQG43OEjPiJn68iJM9ODZ6hgU0idFCEOiJGM="
+ [mod."github.com/hashicorp/memberlist"]
+ version = "v0.1.3"
+ hash = "sha256-IsxqevYulPt+2VGtlq068Jyq1YfIk4Ohh9TgakIGxnc="
+ [mod."github.com/hashicorp/serf"]
+ version = "v0.8.2"
+ hash = "sha256-diRxWOouFLTO75f2E9NlrKgie/qsT+gOOrrbf4tACHw="
+ [mod."github.com/jsimonetti/pwscheme"]
+ version = "v0.0.0-20220125093853-4d9895f5db73"
+ hash = "sha256-YF3RKU/4CWvLPgGzUd7Hk/2+41OUFuRWZgzQuqcsKg0="
+ [mod."github.com/konsorten/go-windows-terminal-sequences"]
+ version = "v1.0.1"
+ hash = "sha256-Nwp+Cza9dIu3ogVGip6wyOjWwwaq+2hU3eYIe4R7kNE="
+ [mod."github.com/mattn/go-colorable"]
+ version = "v0.0.9"
+ hash = "sha256-fVPF8VxbdggLAZnaexMl6Id1WjXKImzVySxKfa+ukts="
+ [mod."github.com/mattn/go-isatty"]
+ version = "v0.0.3"
+ hash = "sha256-9ogEEd8/kl/dImldzdBmTFdepvB0dVXEzN4o8bEqhBs="
+ [mod."github.com/miekg/dns"]
+ version = "v1.0.14"
+ hash = "sha256-OeijUgBaEmDapclTxfvjIqrjh4qZu3+DQpHelGGI4aA="
+ [mod."github.com/mitchellh/cli"]
+ version = "v1.0.0"
+ hash = "sha256-4nG7AhRcjTRCwUCdnaNaFrAKDxEEoiihaCA4lk+uM8U="
+ [mod."github.com/mitchellh/go-homedir"]
+ version = "v1.0.0"
+ hash = "sha256-eGmBNNTuDSMwicjTNgB54IEJuK1tgOLDJ3NHTpQCHzg="
+ [mod."github.com/mitchellh/go-testing-interface"]
+ version = "v1.0.0"
+ hash = "sha256-/Dpv/4i5xuK8hDH+q8YTdF6Jg6NNtfO4Wqig2JCWgrY="
+ [mod."github.com/mitchellh/gox"]
+ version = "v0.4.0"
+ hash = "sha256-GV3LYxzJt8YVbnSac2orlj2QR3MX/YIDrLkSkPhsjuA="
+ [mod."github.com/mitchellh/iochan"]
+ version = "v1.0.0"
+ hash = "sha256-b5Tp7cw/e8mL++IjsebbmKWXtb9Hrzu4Fc6M4tZKFhU="
+ [mod."github.com/mitchellh/mapstructure"]
+ version = "v1.1.2"
+ hash = "sha256-OU9HZYHtl0qaqMFd84w7snkkRuRY6UMSsfCnL5HYdw0="
+ [mod."github.com/pascaldekloe/goe"]
+ version = "v0.0.0-20180627143212-57f6aae5913c"
+ hash = "sha256-2KUjqrEC/BwkTZRxImazcI/C3H7QmXfNrlt8slwdDbc="
+ [mod."github.com/pkg/errors"]
+ version = "v0.8.1"
+ hash = "sha256-oe3iddfoLRwpC3ki5fifHf2ZFprtg99iNak50shiuDw="
+ [mod."github.com/pmezard/go-difflib"]
+ version = "v1.0.0"
+ hash = "sha256-/FtmHnaGjdvEIKAJtrUfEhV7EVo5A/eYrtdnUkuxLDA="
+ [mod."github.com/posener/complete"]
+ version = "v1.1.1"
+ hash = "sha256-heyPMSBzVlx7ZKgTyzl/xmUfZw3EZCcvGFGrRMIbIr8="
+ [mod."github.com/ryanuber/columnize"]
+ version = "v0.0.0-20160712163229-9b3edd62028f"
+ hash = "sha256-RLUQcU6Z03upKe08v6rjn9/tkyrQsgmpdEmBtWaLQfk="
+ [mod."github.com/sean-/seed"]
+ version = "v0.0.0-20170313163322-e2103e2c3529"
+ hash = "sha256-RQQTjvf8Y91jP5FGOyEnGMFw7zCrcSnUU4eH2CXKkT4="
+ [mod."github.com/sirupsen/logrus"]
+ version = "v1.4.2"
+ hash = "sha256-3QzWUsapCmg3F7JqUuINT3/UG097uzLff6iCcCgQ43o="
+ [mod."github.com/stretchr/objx"]
+ version = "v0.1.1"
+ hash = "sha256-HdGVZCuy7VprC5W9UxGbDmXqsKADMjpEDht7ilGVLco="
+ [mod."github.com/stretchr/testify"]
+ version = "v1.3.0"
+ hash = "sha256-+mSebBNccNcxbY462iKTNTWmd5ZuUkUqFebccn3EtIA="
+ [mod."golang.org/x/crypto"]
+ version = "v0.0.0-20200604202706-70a84ac30bf9"
+ hash = "sha256-I5ov2lV6ubB3H3pn6DFN1VPLyxeLfPUaOx2PJ9K1KH8="
+ [mod."golang.org/x/net"]
+ version = "v0.0.0-20190404232315-eb5bcb51f2a3"
+ hash = "sha256-kwP+BDfPsZEeeceyg4H5LgdTDT8O8YWbkpCkpyuPJJo="
+ [mod."golang.org/x/sync"]
+ version = "v0.0.0-20181221193216-37e7f081c4d4"
+ hash = "sha256-FUpv9bmGLDEjCxXdvR0CRDqOKRY0xrHRPzOsyQyvYK0="
+ [mod."golang.org/x/sys"]
+ version = "v0.0.0-20190422165155-953cdadca894"
+ hash = "sha256-YkQjSZaiVFxrmXYSKmqrGeIO3RZ95fc3dWyCaR+SosY="
+ [mod."golang.org/x/text"]
+ version = "v0.3.0"
+ hash = "sha256-0FFbaxF1ZuAQF3sCcA85e8MO6prFeHint36inija4NY="