Merge remote-tracking branch 'ni/master'
This commit is contained in:
commit
b79f5ab97d
@ -80,9 +80,9 @@ let
|
|||||||
description = ''
|
description = ''
|
||||||
The zone configuration head which is being used to create the
|
The zone configuration head which is being used to create the
|
||||||
zone files. The string for each key is pre-pended to the zone file.
|
zone files. The string for each key is pre-pended to the zone file.
|
||||||
'';
|
'';
|
||||||
# TODO: configure the default somewhere else,
|
# TODO: configure the default somewhere else,
|
||||||
# maybe use krebs.dns.providers
|
# maybe use krebs.dns.providers
|
||||||
default = {
|
default = {
|
||||||
|
|
||||||
# github.io -> 192.30.252.154
|
# github.io -> 192.30.252.154
|
||||||
@ -96,7 +96,7 @@ let
|
|||||||
IN A 185.199.110.153
|
IN A 185.199.110.153
|
||||||
IN A 185.199.111.153
|
IN A 185.199.111.153
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
1
krebs/3modules/external/default.nix
vendored
1
krebs/3modules/external/default.nix
vendored
@ -151,6 +151,7 @@ in {
|
|||||||
"makanek.kmein.r"
|
"makanek.kmein.r"
|
||||||
"grafana.kmein.r"
|
"grafana.kmein.r"
|
||||||
"names.kmein.r"
|
"names.kmein.r"
|
||||||
|
"graph.r"
|
||||||
];
|
];
|
||||||
tinc.pubkey = ''
|
tinc.pubkey = ''
|
||||||
-----BEGIN RSA PUBLIC KEY-----
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
@ -221,7 +221,7 @@ in {
|
|||||||
"cgit.gum.r"
|
"cgit.gum.r"
|
||||||
"dcpp.gum.r"
|
"dcpp.gum.r"
|
||||||
"dcpp.nextgum.r"
|
"dcpp.nextgum.r"
|
||||||
"graph.r"
|
"graph.makefu.r"
|
||||||
"logs.makefu.r"
|
"logs.makefu.r"
|
||||||
"netdata.makefu.r"
|
"netdata.makefu.r"
|
||||||
"nextgum.r"
|
"nextgum.r"
|
||||||
|
34
krebs/5pkgs/haskell/purebred-email/default.nix
Normal file
34
krebs/5pkgs/haskell/purebred-email/default.nix
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
{ mkDerivation, attoparsec, base, base64-bytestring, bytestring
|
||||||
|
, case-insensitive, concise, deepseq, fetchgit, hedgehog, lens, lib
|
||||||
|
, QuickCheck, quickcheck-instances, semigroupoids, semigroups
|
||||||
|
, stringsearch, tasty, tasty-golden, tasty-hedgehog, tasty-hunit
|
||||||
|
, tasty-quickcheck, text, time
|
||||||
|
}:
|
||||||
|
mkDerivation {
|
||||||
|
pname = "purebred-email";
|
||||||
|
version = "0.4.3";
|
||||||
|
src = fetchgit {
|
||||||
|
url = "https://github.com/purebred-mua/purebred-email";
|
||||||
|
sha256 = "06xhccavrdzfsvg65mzdnp0a7b1ilk2rqpnyvkr171ir6mqdpb19";
|
||||||
|
rev = "769b360643f699c0a8cd6f1c3a3de36cf0479834";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
};
|
||||||
|
patches = [
|
||||||
|
./untweak-mime-version-header.patch
|
||||||
|
];
|
||||||
|
isLibrary = true;
|
||||||
|
isExecutable = true;
|
||||||
|
libraryHaskellDepends = [
|
||||||
|
attoparsec base base64-bytestring bytestring case-insensitive
|
||||||
|
concise deepseq lens semigroupoids semigroups stringsearch text
|
||||||
|
time
|
||||||
|
];
|
||||||
|
testHaskellDepends = [
|
||||||
|
attoparsec base bytestring case-insensitive hedgehog lens
|
||||||
|
QuickCheck quickcheck-instances semigroups tasty tasty-golden
|
||||||
|
tasty-hedgehog tasty-hunit tasty-quickcheck text time
|
||||||
|
];
|
||||||
|
homepage = "https://github.com/purebred-mua/purebred-email";
|
||||||
|
description = "types and parser for email messages (including MIME)";
|
||||||
|
license = lib.licenses.agpl3Plus;
|
||||||
|
}
|
@ -0,0 +1,65 @@
|
|||||||
|
diff --git a/src/Data/MIME.hs b/src/Data/MIME.hs
|
||||||
|
index 19af53e..be8cbd4 100644
|
||||||
|
--- a/src/Data/MIME.hs
|
||||||
|
+++ b/src/Data/MIME.hs
|
||||||
|
@@ -810,7 +810,6 @@ multipart takeTillEnd boundary =
|
||||||
|
-- | Sets the @MIME-Version: 1.0@ header.
|
||||||
|
--
|
||||||
|
instance RenderMessage MIME where
|
||||||
|
- tweakHeaders = set (headers . at "MIME-Version") (Just "1.0")
|
||||||
|
buildBody h z = Just $ case z of
|
||||||
|
Part partbody -> Builder.byteString partbody
|
||||||
|
Encapsulated msg -> buildMessage msg
|
||||||
|
diff --git a/tests/Generator.hs b/tests/Generator.hs
|
||||||
|
index 9e1f166..23bd122 100644
|
||||||
|
--- a/tests/Generator.hs
|
||||||
|
+++ b/tests/Generator.hs
|
||||||
|
@@ -64,7 +64,7 @@ exampleMailsParseSuccessfully =
|
||||||
|
textPlain7bit :: MIMEMessage
|
||||||
|
textPlain7bit =
|
||||||
|
let m = createTextPlainMessage "This is a simple mail."
|
||||||
|
- in over headers (\(Headers xs) -> Headers $ (CI.mk "Subject", "Hello there") : xs) m
|
||||||
|
+ in over headers (\(Headers xs) -> Headers $ (CI.mk "MIME-Version", "1.0") : (CI.mk "Subject", "Hello there") : xs) m
|
||||||
|
|
||||||
|
multiPartMail :: MIMEMessage
|
||||||
|
multiPartMail =
|
||||||
|
@@ -72,13 +72,16 @@ multiPartMail =
|
||||||
|
to' = Single $ Mailbox Nothing (AddrSpec "bar" (DomainDotAtom $ pure "bar.com"))
|
||||||
|
subject = "Hello there"
|
||||||
|
p = createTextPlainMessage "This is a simple mail."
|
||||||
|
+ & set (headers . at "MIME-Version") (Just "1.0")
|
||||||
|
a = createAttachment
|
||||||
|
contentTypeApplicationOctetStream
|
||||||
|
(Just "foo.bin")
|
||||||
|
"fileContentsASDF"
|
||||||
|
+ & set (headers . at "MIME-Version") (Just "1.0")
|
||||||
|
now = UTCTime (ModifiedJulianDay 123) (secondsToDiffTime 123)
|
||||||
|
in createMultipartMixedMessage "asdf" (fromList [p, a])
|
||||||
|
- & set (headers . at "From") (Just $ renderMailboxes [from'])
|
||||||
|
+ & set (headers . at "MIME-Version") (Just "1.0")
|
||||||
|
+ . set (headers . at "From") (Just $ renderMailboxes [from'])
|
||||||
|
. set (headers . at "To") (Just $ renderAddresses [to'])
|
||||||
|
. set (headers . at "Date") (Just $ renderRFC5422Date now)
|
||||||
|
. set (headers . at "Subject") (Just $ T.encodeUtf8 subject)
|
||||||
|
diff --git a/tests/Message.hs b/tests/Message.hs
|
||||||
|
index 6711519..3e40397 100644
|
||||||
|
--- a/tests/Message.hs
|
||||||
|
+++ b/tests/Message.hs
|
||||||
|
@@ -29,7 +29,7 @@ import Data.Char (isPrint)
|
||||||
|
import Data.Foldable (fold)
|
||||||
|
import Data.List.NonEmpty (NonEmpty(..), intersperse)
|
||||||
|
|
||||||
|
-import Control.Lens (set, view)
|
||||||
|
+import Control.Lens ((&), at, set, view)
|
||||||
|
import qualified Data.ByteString as B
|
||||||
|
import qualified Data.Text as T
|
||||||
|
|
||||||
|
@@ -99,7 +99,7 @@ genMessage = Gen.choice [ genTextPlain, genMultipart, encapsulate <$> genMessage
|
||||||
|
prop_messageRoundTrip :: Property
|
||||||
|
prop_messageRoundTrip = property $ do
|
||||||
|
msg <- forAll genMessage
|
||||||
|
- parse (message mime) (renderMessage msg) === Right msg
|
||||||
|
+ parse (message mime) (renderMessage $ msg & set (headers . at "MIME-Version") (Just "1.0")) === Right msg
|
||||||
|
|
||||||
|
prop_messageFromRoundTrip :: Property
|
||||||
|
prop_messageFromRoundTrip = property $ do
|
@ -18,7 +18,7 @@ in {
|
|||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
serverAliases = [
|
serverAliases = [
|
||||||
"graph.r"
|
"graph.makefu.r"
|
||||||
"graph.${hn}" "graph.${hn}.r"
|
"graph.${hn}" "graph.${hn}.r"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 05f0d3b5c1d38fbbd53142362a7821cc8bc1150a
|
Subproject commit 13ae434b140035e7e2664bd5a8ef4c475413b2e0
|
@ -33,5 +33,11 @@ with import <stockholm/lib>;
|
|||||||
};
|
};
|
||||||
|
|
||||||
networking.wireless.enable = true;
|
networking.wireless.enable = true;
|
||||||
|
networking.wireless.interfaces = [
|
||||||
|
"wlp3s0"
|
||||||
|
];
|
||||||
|
networking.interfaces.enp4s0f2.useDHCP = true;
|
||||||
|
networking.interfaces.wlp3s0.useDHCP = true;
|
||||||
|
networking.useDHCP = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
with import <stockholm/lib>;
|
with import <stockholm/lib>;
|
||||||
{ config, pkgs, ... }: {
|
{ config, pkgs, ... }: {
|
||||||
|
|
||||||
boot.kernelPackages = mkDefault pkgs.linuxPackages_latest;
|
|
||||||
|
|
||||||
boot.tmpOnTmpfs = true;
|
boot.tmpOnTmpfs = true;
|
||||||
|
|
||||||
krebs.enable = true;
|
krebs.enable = true;
|
||||||
|
@ -65,6 +65,9 @@ let {
|
|||||||
|
|
||||||
public-repos = mapAttrs make-public-repo ({
|
public-repos = mapAttrs make-public-repo ({
|
||||||
} // mapAttrs (_: recursiveUpdate { cgit.section = "1. miscellaneous"; }) {
|
} // mapAttrs (_: recursiveUpdate { cgit.section = "1. miscellaneous"; }) {
|
||||||
|
couchfs = {
|
||||||
|
cgit.desc = "filesystem (in userspace) on top of CouchDB";
|
||||||
|
};
|
||||||
crx = {
|
crx = {
|
||||||
cgit.desc = "utilities for working with Chrome extensions";
|
cgit.desc = "utilities for working with Chrome extensions";
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user