2025-02-25 16:19:10 +01:00
{
inputs ,
lib ,
. . .
} : {
2023-06-12 12:02:01 +02:00
# debug = true;
# We only define machines config in this flake yet, so we only include
# the module that builds these. This file might get fuller, if we need to
# build our own packages, that are not flakes.
2023-11-08 00:46:02 +01:00
imports = [
./nixos/flake-module.nix
inputs . pre-commit-hooks . flakeModule
# To import a flake module
# 1. Add foo to inputs
# 2. Add foo as a parameter to the outputs function
# 3. Add here: foo.flakeModule
2023-06-12 08:34:47 +02:00
] ;
2023-11-08 00:46:02 +01:00
systems = [ " x 8 6 _ 6 4 - l i n u x " ] ;
perSystem = {
config ,
pkgs ,
2024-09-27 18:33:58 +02:00
system ,
2023-11-08 00:46:02 +01:00
. . .
} : {
devShells . default = config . pre-commit . devShell ;
pre-commit = let
generatedFiles = [
" h a r d w a r e - c o n f i g u r a t i o n \\ . n i x "
] ;
in {
check . enable = true ;
settings = {
hooks = {
nil . enable = true ;
2024-04-20 12:28:29 +02:00
statix = {
enable = true ;
settings = {
format = " s t d e r r " ;
ignore = generatedFiles ;
} ;
} ;
2023-11-08 00:46:02 +01:00
deadnix = {
enable = true ;
excludes = generatedFiles ;
} ;
alejandra . enable = true ;
} ;
} ;
} ;
formatter = pkgs . alejandra ;
# Per-system attributes can be defined here. The self' and inputs'
# module parameters provide easy access to attributes of the same
# system.
2024-09-27 18:33:58 +02:00
_module . args . pkgs = import inputs . nixpkgs {
inherit system ;
config . permittedInsecurePackages = [ " j i t s i - m e e t - 1 . 0 . 8 0 4 3 " ] ;
2025-02-25 16:09:44 +01:00
overlays = [
2025-02-25 16:19:10 +01:00
( _ : prev : {
2025-02-25 16:09:44 +01:00
alias-to-sieve = inputs . alias-to-sieve . packages . x86_64-linux . default ; # add custom package to convert alias files to sieve scripts on the stalwart machine
2025-02-25 16:19:10 +01:00
stalwart-mail = assert lib . assertMsg ( prev . stalwart-mail . version = = " 0 . 1 1 . 6 - u n s t a b l e - 2 0 2 5 - 0 2 - 0 4 " ) ''
1 . If the bug https://github.com/stalwartlabs/sieve/issues/11 is resolved to our satisfaction , try to remove this overlay .
2 . Check whether sieve-rs recieved new updates that our patch needs to be rebased upon .
3 . Check whether the sieve-rs patch below that exchanges the dependency needs updates .
4 . Then update the version comparison in this assert statement .
5 . Update the ` cargoHash ` by setting it to ` lib . fakeHash ` and then inserting the result .
6 . Check if we can get rid of alias-to-sieve when stalwart-mail has a builtin mail-forwarding feature .
'' ;
# This override encapsulates the buildRustPackage function in a function that takes the arguments given by the nixpkgs-version of stalwart-mail
# and adds our patch to the arguments before handing the new arguments to buildRustPackage.
prev . stalwart-mail . override (
let
rp = pkgs . rustPlatform ;
in {
rustPlatform =
rp
// {
buildRustPackage = args :
rp . buildRustPackage (
args
// rec {
cargoPatches = [
# Let stalwart-mail depend on our own version of the sieve crate that does not have some “loop prevention” that disables redirects to the original sender.
# We want to redirect to sender if we simulate alias files and not doing so barely prevents loops in my opinion.
./patches/sieve-rs.patch
] ;
# Replace the string with `lib.fakeHash` after version changes in order to get the new hash value.
cargoHash = " s h a 2 5 6 - g b 2 o F l V A / v E 6 D o W W W 8 S C F A 3 l 7 r t V 2 R u o s P U Y + 6 I c K N M = " ;
}
) ;
} ;
}
) ;
2025-02-25 16:09:44 +01:00
} )
] ;
2024-09-27 18:33:58 +02:00
} ;
2023-11-08 00:46:02 +01:00
} ;
2023-06-12 08:34:47 +02:00
# Equivalent to inputs'.nixpkgs.legacyPackages.hello;
2023-11-08 00:46:02 +01:00
# flake = {
# The usual flake attributes can be defined here, including system-
# agnostic ones like nixosModule and system-enumerating ones, although
# those are more easily expressed in perSystem.
2023-06-12 08:34:47 +02:00
2023-11-08 00:46:02 +01:00
# };
2023-06-12 08:34:47 +02:00
}