mirror of
				https://github.com/lelgenio/maildir-notify-daemon.git
				synced 2025-11-03 15:57:37 -03:00 
			
		
		
		
	Build the project with nix
This commit is contained in:
		
							parent
							
								
									e4d7cbee89
								
							
						
					
					
						commit
						f609cbd6dd
					
				
					 6 changed files with 982 additions and 344 deletions
				
			
		
							
								
								
									
										1
									
								
								.envrc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.envrc
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					use_flake
 | 
				
			||||||
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1 +1,2 @@
 | 
				
			||||||
/target
 | 
					/target
 | 
				
			||||||
 | 
					.direnv/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1032
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										1032
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
					@ -6,8 +6,8 @@ edition = "2021"
 | 
				
			||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 | 
					# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[dependencies]
 | 
					[dependencies]
 | 
				
			||||||
hotwatch = "0.4.6"
 | 
					hotwatch = "0.4"
 | 
				
			||||||
mailparse = "0.13.8"
 | 
					mailparse = "0.13"
 | 
				
			||||||
notify-rust = "4.5.6"
 | 
					notify-rust = "4.8"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[features]
 | 
					[features]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										176
									
								
								flake.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										176
									
								
								flake.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,176 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "nodes": {
 | 
				
			||||||
 | 
					    "advisory-db": {
 | 
				
			||||||
 | 
					      "flake": false,
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1683272394,
 | 
				
			||||||
 | 
					        "narHash": "sha256-4XQZbSZ8XYAeASpr0Er8mNPnjbYLJwvaB+VyH+bt6DE=",
 | 
				
			||||||
 | 
					        "owner": "rustsec",
 | 
				
			||||||
 | 
					        "repo": "advisory-db",
 | 
				
			||||||
 | 
					        "rev": "50bed3ba4066e6255dab434dc845e7f655812ce1",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "rustsec",
 | 
				
			||||||
 | 
					        "repo": "advisory-db",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "crane": {
 | 
				
			||||||
 | 
					      "inputs": {
 | 
				
			||||||
 | 
					        "flake-compat": "flake-compat",
 | 
				
			||||||
 | 
					        "flake-utils": "flake-utils",
 | 
				
			||||||
 | 
					        "nixpkgs": [
 | 
				
			||||||
 | 
					          "nixpkgs"
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "rust-overlay": "rust-overlay"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1683505101,
 | 
				
			||||||
 | 
					        "narHash": "sha256-VBU64Jfu2V4sUR5+tuQS9erBRAe/QEYUxdVMcJGMZZs=",
 | 
				
			||||||
 | 
					        "owner": "ipetkov",
 | 
				
			||||||
 | 
					        "repo": "crane",
 | 
				
			||||||
 | 
					        "rev": "7b5bd9e5acb2bb0cfba2d65f34d8568a894cdb6c",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "ipetkov",
 | 
				
			||||||
 | 
					        "repo": "crane",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "flake-compat": {
 | 
				
			||||||
 | 
					      "flake": false,
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1673956053,
 | 
				
			||||||
 | 
					        "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
 | 
				
			||||||
 | 
					        "owner": "edolstra",
 | 
				
			||||||
 | 
					        "repo": "flake-compat",
 | 
				
			||||||
 | 
					        "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "edolstra",
 | 
				
			||||||
 | 
					        "repo": "flake-compat",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "flake-utils": {
 | 
				
			||||||
 | 
					      "inputs": {
 | 
				
			||||||
 | 
					        "systems": "systems"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1681202837,
 | 
				
			||||||
 | 
					        "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
 | 
				
			||||||
 | 
					        "owner": "numtide",
 | 
				
			||||||
 | 
					        "repo": "flake-utils",
 | 
				
			||||||
 | 
					        "rev": "cfacdce06f30d2b68473a46042957675eebb3401",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "numtide",
 | 
				
			||||||
 | 
					        "repo": "flake-utils",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "flake-utils_2": {
 | 
				
			||||||
 | 
					      "inputs": {
 | 
				
			||||||
 | 
					        "systems": "systems_2"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1681202837,
 | 
				
			||||||
 | 
					        "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
 | 
				
			||||||
 | 
					        "owner": "numtide",
 | 
				
			||||||
 | 
					        "repo": "flake-utils",
 | 
				
			||||||
 | 
					        "rev": "cfacdce06f30d2b68473a46042957675eebb3401",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "numtide",
 | 
				
			||||||
 | 
					        "repo": "flake-utils",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "nixpkgs": {
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1683777345,
 | 
				
			||||||
 | 
					        "narHash": "sha256-V2p/A4RpEGqEZussOnHYMU6XglxBJGCODdzoyvcwig8=",
 | 
				
			||||||
 | 
					        "owner": "NixOS",
 | 
				
			||||||
 | 
					        "repo": "nixpkgs",
 | 
				
			||||||
 | 
					        "rev": "635a306fc8ede2e34cb3dd0d6d0a5d49362150ed",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "NixOS",
 | 
				
			||||||
 | 
					        "ref": "nixpkgs-unstable",
 | 
				
			||||||
 | 
					        "repo": "nixpkgs",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "root": {
 | 
				
			||||||
 | 
					      "inputs": {
 | 
				
			||||||
 | 
					        "advisory-db": "advisory-db",
 | 
				
			||||||
 | 
					        "crane": "crane",
 | 
				
			||||||
 | 
					        "flake-utils": "flake-utils_2",
 | 
				
			||||||
 | 
					        "nixpkgs": "nixpkgs"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "rust-overlay": {
 | 
				
			||||||
 | 
					      "inputs": {
 | 
				
			||||||
 | 
					        "flake-utils": [
 | 
				
			||||||
 | 
					          "crane",
 | 
				
			||||||
 | 
					          "flake-utils"
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "nixpkgs": [
 | 
				
			||||||
 | 
					          "crane",
 | 
				
			||||||
 | 
					          "nixpkgs"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1683080331,
 | 
				
			||||||
 | 
					        "narHash": "sha256-nGDvJ1DAxZIwdn6ww8IFwzoHb2rqBP4wv/65Wt5vflk=",
 | 
				
			||||||
 | 
					        "owner": "oxalica",
 | 
				
			||||||
 | 
					        "repo": "rust-overlay",
 | 
				
			||||||
 | 
					        "rev": "d59c3fa0cba8336e115b376c2d9e91053aa59e56",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "oxalica",
 | 
				
			||||||
 | 
					        "repo": "rust-overlay",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "systems": {
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1681028828,
 | 
				
			||||||
 | 
					        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
 | 
				
			||||||
 | 
					        "owner": "nix-systems",
 | 
				
			||||||
 | 
					        "repo": "default",
 | 
				
			||||||
 | 
					        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "nix-systems",
 | 
				
			||||||
 | 
					        "repo": "default",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "systems_2": {
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1681028828,
 | 
				
			||||||
 | 
					        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
 | 
				
			||||||
 | 
					        "owner": "nix-systems",
 | 
				
			||||||
 | 
					        "repo": "default",
 | 
				
			||||||
 | 
					        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "nix-systems",
 | 
				
			||||||
 | 
					        "repo": "default",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "root": "root",
 | 
				
			||||||
 | 
					  "version": 7
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										110
									
								
								flake.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								flake.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,110 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  description = "Build a cargo project";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  inputs = {
 | 
				
			||||||
 | 
					    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    crane = {
 | 
				
			||||||
 | 
					      url = "github:ipetkov/crane";
 | 
				
			||||||
 | 
					      inputs.nixpkgs.follows = "nixpkgs";
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    flake-utils.url = "github:numtide/flake-utils";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    advisory-db = {
 | 
				
			||||||
 | 
					      url = "github:rustsec/advisory-db";
 | 
				
			||||||
 | 
					      flake = false;
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  outputs = { self, nixpkgs, crane, flake-utils, advisory-db, ... }:
 | 
				
			||||||
 | 
					    flake-utils.lib.eachDefaultSystem (system:
 | 
				
			||||||
 | 
					      let
 | 
				
			||||||
 | 
					        pkgs = import nixpkgs {
 | 
				
			||||||
 | 
					          inherit system;
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        inherit (pkgs) lib;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        craneLib = crane.lib.${system};
 | 
				
			||||||
 | 
					        src = craneLib.cleanCargoSource ./.;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        buildInputs = [
 | 
				
			||||||
 | 
					          # Add additional build inputs here
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Build *just* the cargo dependencies, so we can reuse
 | 
				
			||||||
 | 
					        # all of that work (e.g. via cachix) when running in CI
 | 
				
			||||||
 | 
					        cargoArtifacts = craneLib.buildDepsOnly {
 | 
				
			||||||
 | 
					          inherit src buildInputs;
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Build the actual crate itself, reusing the dependency
 | 
				
			||||||
 | 
					        # artifacts from above.
 | 
				
			||||||
 | 
					        my-crate = craneLib.buildPackage {
 | 
				
			||||||
 | 
					          inherit cargoArtifacts src buildInputs;
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      in
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        checks = {
 | 
				
			||||||
 | 
					          # Build the crate as part of `nix flake check` for convenience
 | 
				
			||||||
 | 
					          inherit my-crate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          # Run clippy (and deny all warnings) on the crate source,
 | 
				
			||||||
 | 
					          # again, resuing the dependency artifacts from above.
 | 
				
			||||||
 | 
					          #
 | 
				
			||||||
 | 
					          # Note that this is done as a separate derivation so that
 | 
				
			||||||
 | 
					          # we can block the CI if there are issues here, but not
 | 
				
			||||||
 | 
					          # prevent downstream consumers from building our crate by itself.
 | 
				
			||||||
 | 
					          my-crate-clippy = craneLib.cargoClippy {
 | 
				
			||||||
 | 
					            inherit cargoArtifacts src buildInputs;
 | 
				
			||||||
 | 
					            cargoClippyExtraArgs = "--all-targets -- --deny warnings";
 | 
				
			||||||
 | 
					          };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          my-crate-doc = craneLib.cargoDoc {
 | 
				
			||||||
 | 
					            inherit cargoArtifacts src buildInputs;
 | 
				
			||||||
 | 
					          };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          # Check formatting
 | 
				
			||||||
 | 
					          my-crate-fmt = craneLib.cargoFmt {
 | 
				
			||||||
 | 
					            inherit src;
 | 
				
			||||||
 | 
					          };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          # Audit dependencies
 | 
				
			||||||
 | 
					          my-crate-audit = craneLib.cargoAudit {
 | 
				
			||||||
 | 
					            inherit src advisory-db;
 | 
				
			||||||
 | 
					          };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          # Run tests with cargo-nextest
 | 
				
			||||||
 | 
					          # Consider setting `doCheck = false` on `my-crate` if you do not want
 | 
				
			||||||
 | 
					          # the tests to run twice
 | 
				
			||||||
 | 
					          my-crate-nextest = craneLib.cargoNextest {
 | 
				
			||||||
 | 
					            inherit cargoArtifacts src buildInputs;
 | 
				
			||||||
 | 
					            partitions = 1;
 | 
				
			||||||
 | 
					            partitionType = "count";
 | 
				
			||||||
 | 
					          };
 | 
				
			||||||
 | 
					        } // lib.optionalAttrs (system == "x86_64-linux") {
 | 
				
			||||||
 | 
					          # NB: cargo-tarpaulin only supports x86_64 systems
 | 
				
			||||||
 | 
					          # Check code coverage (note: this will not upload coverage anywhere)
 | 
				
			||||||
 | 
					          my-crate-coverage = craneLib.cargoTarpaulin {
 | 
				
			||||||
 | 
					            inherit cargoArtifacts src;
 | 
				
			||||||
 | 
					          };
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        packages.default = my-crate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        apps.default = flake-utils.lib.mkApp {
 | 
				
			||||||
 | 
					          drv = my-crate;
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        devShells.default = pkgs.mkShell {
 | 
				
			||||||
 | 
					          inputsFrom = builtins.attrValues self.checks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          # Extra inputs can be added here
 | 
				
			||||||
 | 
					          nativeBuildInputs = with pkgs; [
 | 
				
			||||||
 | 
					            cargo
 | 
				
			||||||
 | 
					            rustc
 | 
				
			||||||
 | 
					          ];
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue