Skip to content

Commit

Permalink
Initial commit 🎉
Browse files Browse the repository at this point in the history
Initialize with `nix flake init -t github:ipetkov/crane#quick-start` and change a few small things.
  • Loading branch information
Luflosi committed Mar 19, 2024
0 parents commit c62115c
Show file tree
Hide file tree
Showing 7 changed files with 285 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/target/
/result*
7 changes: 7 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[package]
name = "dyndnsd"
version = "0.1.0"
edition = "2021"
license = "AGPL-3.0-only"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
4 changes: 4 additions & 0 deletions deny.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[licenses]
allow = [
"MIT",
]
121 changes: 121 additions & 0 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

139 changes: 139 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
{
description = "Build dyndnsd";

inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";

crane = {
url = "github:ipetkov/crane";
inputs.nixpkgs.follows = "nixpkgs";
};

fenix = {
url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.rust-analyzer-src.follows = "";
};

flake-utils.url = "github:numtide/flake-utils";

advisory-db = {
url = "github:rustsec/advisory-db";
flake = false;
};
};

outputs = { self, nixpkgs, crane, fenix, flake-utils, advisory-db, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};

inherit (pkgs) lib;

craneLib = crane.lib.${system};
src = craneLib.cleanCargoSource (craneLib.path ./.);

# Common arguments can be set here to avoid repeating them later
commonArgs = {
inherit src;
strictDeps = true;

buildInputs = [
# Add additional build inputs here
] ++ lib.optionals pkgs.stdenv.isDarwin [
# Additional darwin specific inputs can be set here
pkgs.libiconv
];

# Additional environment variables can be set directly
# MY_CUSTOM_VAR = "some value";
};

craneLibLLvmTools = craneLib.overrideToolchain
(fenix.packages.${system}.complete.withComponents [
"cargo"
"llvm-tools"
"rustc"
]);

# Build *just* the cargo dependencies, so we can reuse
# all of that work (e.g. via cachix) when running in CI
cargoArtifacts = craneLib.buildDepsOnly commonArgs;

# Build the actual crate itself, reusing the dependency
# artifacts from above.
dyndnsd = craneLib.buildPackage (commonArgs // {
inherit cargoArtifacts;
});
in
{
checks = {
# Build the crate as part of `nix flake check` for convenience
inherit dyndnsd;

# Run clippy (and deny all warnings) on the crate source,
# again, reusing 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.
dyndnsd-clippy = craneLib.cargoClippy (commonArgs // {
inherit cargoArtifacts;
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
});

dyndnsd-doc = craneLib.cargoDoc (commonArgs // {
inherit cargoArtifacts;
});

# Check formatting
dyndnsd-fmt = craneLib.cargoFmt {
inherit src;
};

# Audit dependencies
dyndnsd-audit = craneLib.cargoAudit {
inherit src advisory-db;
};

# Audit licenses
dyndnsd-deny = craneLib.cargoDeny {
inherit src;
};

# Run tests with cargo-nextest
# Consider setting `doCheck = false` on `dyndnsd` if you do not want
# the tests to run twice
dyndnsd-nextest = craneLib.cargoNextest (commonArgs // {
inherit cargoArtifacts;
partitions = 1;
partitionType = "count";
});
};

packages = {
default = dyndnsd;
} // lib.optionalAttrs (!pkgs.stdenv.isDarwin) {
dyndnsd-llvm-coverage = craneLibLLvmTools.cargoLlvmCov (commonArgs // {
inherit cargoArtifacts;
});
};

apps.default = flake-utils.lib.mkApp {
drv = dyndnsd;
};

devShells.default = craneLib.devShell {
# Inherit inputs from checks.
checks = self.checks.${system};

# Additional dev-shell environment variables can be set directly
# MY_CUSTOM_DEVELOPMENT_VAR = "something else";

# Extra inputs can be added here; cargo and rustc are provided by default.
packages = [
# pkgs.ripgrep
];
};
});
}
3 changes: 3 additions & 0 deletions src/main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
fn main() {
println!("Hello, world!");
}

0 comments on commit c62115c

Please sign in to comment.