Files
dotnet-nix-testing/flake.nix
2025-11-11 11:27:13 +01:00

83 lines
2.4 KiB
Nix

{
description = "Description for the project";
inputs = {
flake-parts.url = "github:hercules-ci/flake-parts";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = inputs @ {flake-parts, ...}:
flake-parts.lib.mkFlake {inherit inputs;} {
imports = [
# To import an internal flake module: ./other.nix
# To import an external flake module:
# 1. Add foo to inputs
# 2. Add foo as a parameter to the outputs function
# 3. Add here: foo.flakeModule
];
systems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin"];
perSystem = {
config,
self',
inputs',
pkgs,
system,
...
}: rec {
# Per-system attributes can be defined here. The self' and inputs'
# module parameters provide easy access to attributes of the same
# system.
packages.default = packages.console;
packages.console = with pkgs;
buildDotnetModule {
pname = "dotnet-nix-testing";
version = "0.1";
src = ./.;
projectFile = "dotnet-nix-testing.sln";
nugetDeps = ./deps.json;
# buildInputs = [
# referencedProject
# ]; # `referencedProject` must contain `nupkg` in the folder structure.
dotnet-sdk = dotnetCorePackages.sdk_9_0;
dotnet-runtime = dotnetCorePackages.runtime_9_0;
executables = ["console"]; # This wraps "$out/lib/$pname/foo" to `$out/bin/foo`.
# executables = []; # Don't install any executables.
# packNupkg = true; # This packs the project as "foo-0.1.nupkg" at `$out/share`.
# runtimeDeps = [ffmpeg]; # This will wrap ffmpeg's library path into `LD_LIBRARY_PATH`.
meta.mainProgram = "console";
};
devShells.default = with pkgs;
mkShell
{
name = "dotnet-env";
packages = [
just
nuget-to-json
(
with dotnetCorePackages;
combinePackages [
sdk_9_0
]
)
];
};
};
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.
};
};
}