Initial Pile Of Files
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
# flake.nix
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
}: {
|
||||
templates = {
|
||||
default = {
|
||||
description = ".NET dev environment (FHS) with SDK, EF Core, and optional Rider support";
|
||||
welcomeText = ''
|
||||
.NET skeletal project created.
|
||||
- Build: dotnet build
|
||||
- Run: dotnet run
|
||||
- Rider: rider . (inside nix develop)
|
||||
'';
|
||||
path = ./.;
|
||||
};
|
||||
};
|
||||
|
||||
devShells = let
|
||||
supportedSystems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
];
|
||||
in
|
||||
nixpkgs.lib.genAttrs supportedSystems (
|
||||
system: let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
fhs = pkgs.buildFHSEnv {
|
||||
name = "dotnet-fhs-shell";
|
||||
targetPkgs = pkgs: [
|
||||
pkgs.dotnet-sdk
|
||||
pkgs.dotnet-ef
|
||||
pkgs.dotnet-aspnetcore
|
||||
pkgs.csharpier
|
||||
pkgs.icu
|
||||
pkgs.openssl
|
||||
pkgs.krb5
|
||||
pkgs.zlib
|
||||
pkgs.git
|
||||
pkgs.gnumake
|
||||
];
|
||||
runScript = "bash";
|
||||
profile = ''
|
||||
export DOTNET_ROOT=${pkgs.dotnet-sdk}
|
||||
export DOTNET_CLI_HOME=$HOME/.dotnet
|
||||
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||
export PATH=${pkgs.dotnet-sdk}/bin:$PATH
|
||||
'';
|
||||
};
|
||||
in {
|
||||
default = fhs.env.overrideAttrs (_: {
|
||||
shellHook = ''
|
||||
# Initialize git repository if not already present
|
||||
if [ ! -d .git ]; then
|
||||
git init
|
||||
echo "✓ Initialized git repository"
|
||||
fi
|
||||
|
||||
export DOTNET_ROOT=${pkgs.dotnet-sdk}
|
||||
export DOTNET_CLI_HOME=$HOME/.dotnet
|
||||
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||
export PATH=${pkgs.dotnet-sdk}/bin:$PATH
|
||||
echo "FHS shell for .NET development"
|
||||
echo "DOTNET_ROOT=$DOTNET_ROOT"
|
||||
'';
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
packages = let
|
||||
supportedSystems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
];
|
||||
in
|
||||
nixpkgs.lib.genAttrs supportedSystems (
|
||||
system: let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
in {
|
||||
default = pkgs.buildDotnetModule {
|
||||
pname = "sample-dotnet-app";
|
||||
version = "0.1.0";
|
||||
src = ./.;
|
||||
projectFile = "SampleApp.csproj";
|
||||
nugetDeps = ./deps.nix;
|
||||
selfContainedBuild = false;
|
||||
meta.mainProgram = "SampleApp";
|
||||
};
|
||||
|
||||
devHelper = pkgs.writeShellScriptBin "dev-helper" ''
|
||||
echo ".NET dev environment"
|
||||
command -v dotnet >/dev/null 2>&1 && dotnet --version || true
|
||||
echo "This binary is built by Nix (packages.devHelper)."
|
||||
'';
|
||||
}
|
||||
);
|
||||
|
||||
apps = let
|
||||
supportedSystems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
];
|
||||
in
|
||||
nixpkgs.lib.genAttrs supportedSystems (
|
||||
system: let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in {
|
||||
default = {
|
||||
type = "app";
|
||||
program = pkgs.lib.getExe self.packages.${system}.default;
|
||||
};
|
||||
dev-helper = {
|
||||
type = "app";
|
||||
program = pkgs.lib.getExe self.packages.${system}.devHelper;
|
||||
};
|
||||
}
|
||||
);
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user