diff --git a/templates/android/flake.nix b/templates/android/flake.nix
index eff18fd..83e255a 100644
--- a/templates/android/flake.nix
+++ b/templates/android/flake.nix
@@ -38,6 +38,7 @@
pkgs,
system,
self',
+ ...
}: {
_module.args.pkgs = import nixpkgs {
config.allowUnfree = true;
diff --git a/templates/dotnet/DotnetApplication/DotnetApplication.csproj b/templates/dotnet/DotnetApplication/DotnetApplication.csproj
new file mode 100644
index 0000000..fd4bd08
--- /dev/null
+++ b/templates/dotnet/DotnetApplication/DotnetApplication.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net9.0
+ enable
+ enable
+
+
+
diff --git a/templates/dotnet/DotnetApplication/Program.cs b/templates/dotnet/DotnetApplication/Program.cs
new file mode 100644
index 0000000..760e08b
--- /dev/null
+++ b/templates/dotnet/DotnetApplication/Program.cs
@@ -0,0 +1,9 @@
+using System;
+
+namespace DotnetApplication {
+ class Program {
+ static void Main(string[] args) {
+ Console.WriteLine("Hello, world!");
+ }
+ }
+}
diff --git a/templates/dotnet/DotnetApplication/obj/JSchlattVideoGame.csproj.nuget.dgspec.json b/templates/dotnet/DotnetApplication/obj/JSchlattVideoGame.csproj.nuget.dgspec.json
new file mode 100644
index 0000000..32bac24
--- /dev/null
+++ b/templates/dotnet/DotnetApplication/obj/JSchlattVideoGame.csproj.nuget.dgspec.json
@@ -0,0 +1,68 @@
+{
+ "format": 1,
+ "restore": {
+ "/home/artur/Projects/C#/JSchlattVideoGame/JSchlattVideoGame.csproj": {}
+ },
+ "projects": {
+ "/home/artur/Projects/C#/JSchlattVideoGame/JSchlattVideoGame.csproj": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "/home/artur/Projects/C#/JSchlattVideoGame/JSchlattVideoGame.csproj",
+ "projectName": "JSchlattVideoGame",
+ "projectPath": "/home/artur/Projects/C#/JSchlattVideoGame/JSchlattVideoGame.csproj",
+ "packagesPath": "/home/artur/.nuget/packages/",
+ "outputPath": "/home/artur/Projects/C#/JSchlattVideoGame/obj/",
+ "projectStyle": "PackageReference",
+ "configFilePaths": [
+ "/home/artur/.nuget/NuGet/NuGet.Config"
+ ],
+ "originalTargetFrameworks": [
+ "net9.0"
+ ],
+ "sources": {
+ "/nix/store/0w5k79zvjzingpnzz07ijqjbgsylcgfa-dotnet-sdk-9.0.100/share/dotnet/library-packs": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "all"
+ },
+ "SdkAnalysisLevel": "9.0.100"
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "/nix/store/0w5k79zvjzingpnzz07ijqjbgsylcgfa-dotnet-sdk-9.0.100/share/dotnet/sdk/9.0.100/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/templates/dotnet/DotnetApplication/obj/JSchlattVideoGame.csproj.nuget.g.props b/templates/dotnet/DotnetApplication/obj/JSchlattVideoGame.csproj.nuget.g.props
new file mode 100644
index 0000000..2cac44f
--- /dev/null
+++ b/templates/dotnet/DotnetApplication/obj/JSchlattVideoGame.csproj.nuget.g.props
@@ -0,0 +1,15 @@
+
+
+
+ True
+ NuGet
+ $(MSBuildThisFileDirectory)project.assets.json
+ /home/artur/.nuget/packages/
+ /home/artur/.nuget/packages/
+ PackageReference
+ 6.12.0
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/dotnet/DotnetApplication/obj/JSchlattVideoGame.csproj.nuget.g.targets b/templates/dotnet/DotnetApplication/obj/JSchlattVideoGame.csproj.nuget.g.targets
new file mode 100644
index 0000000..3dc06ef
--- /dev/null
+++ b/templates/dotnet/DotnetApplication/obj/JSchlattVideoGame.csproj.nuget.g.targets
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/templates/dotnet/DotnetApplication/obj/project.assets.json b/templates/dotnet/DotnetApplication/obj/project.assets.json
new file mode 100644
index 0000000..c348176
--- /dev/null
+++ b/templates/dotnet/DotnetApplication/obj/project.assets.json
@@ -0,0 +1,73 @@
+{
+ "version": 3,
+ "targets": {
+ "net9.0": {}
+ },
+ "libraries": {},
+ "projectFileDependencyGroups": {
+ "net9.0": []
+ },
+ "packageFolders": {
+ "/home/artur/.nuget/packages/": {}
+ },
+ "project": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "/home/artur/Projects/C#/JSchlattVideoGame/JSchlattVideoGame.csproj",
+ "projectName": "JSchlattVideoGame",
+ "projectPath": "/home/artur/Projects/C#/JSchlattVideoGame/JSchlattVideoGame.csproj",
+ "packagesPath": "/home/artur/.nuget/packages/",
+ "outputPath": "/home/artur/Projects/C#/JSchlattVideoGame/obj/",
+ "projectStyle": "PackageReference",
+ "configFilePaths": [
+ "/home/artur/.nuget/NuGet/NuGet.Config"
+ ],
+ "originalTargetFrameworks": [
+ "net9.0"
+ ],
+ "sources": {
+ "/nix/store/0w5k79zvjzingpnzz07ijqjbgsylcgfa-dotnet-sdk-9.0.100/share/dotnet/library-packs": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "all"
+ },
+ "SdkAnalysisLevel": "9.0.100"
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "/nix/store/0w5k79zvjzingpnzz07ijqjbgsylcgfa-dotnet-sdk-9.0.100/share/dotnet/sdk/9.0.100/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/templates/dotnet/DotnetApplication/obj/project.nuget.cache b/templates/dotnet/DotnetApplication/obj/project.nuget.cache
new file mode 100644
index 0000000..f8e1195
--- /dev/null
+++ b/templates/dotnet/DotnetApplication/obj/project.nuget.cache
@@ -0,0 +1,8 @@
+{
+ "version": 2,
+ "dgSpecHash": "1YIpH04Ngl4=",
+ "success": true,
+ "projectFilePath": "/home/artur/Projects/C#/JSchlattVideoGame/JSchlattVideoGame.csproj",
+ "expectedPackageFiles": [],
+ "logs": []
+}
\ No newline at end of file
diff --git a/templates/dotnet/flake.lock b/templates/dotnet/flake.lock
new file mode 100644
index 0000000..7a552b1
--- /dev/null
+++ b/templates/dotnet/flake.lock
@@ -0,0 +1,58 @@
+{
+ "nodes": {
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": "nixpkgs-lib"
+ },
+ "locked": {
+ "lastModified": 1733312601,
+ "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1733212471,
+ "narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "55d15ad12a74eb7d4646254e13638ad0c4128776",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-lib": {
+ "locked": {
+ "lastModified": 1733096140,
+ "narHash": "sha256-1qRH7uAUsyQI7R1Uwl4T+XvdNv778H0Nb5njNrqvylY=",
+ "type": "tarball",
+ "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz"
+ },
+ "original": {
+ "type": "tarball",
+ "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz"
+ }
+ },
+ "root": {
+ "inputs": {
+ "flake-parts": "flake-parts",
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/templates/dotnet/flake.nix b/templates/dotnet/flake.nix
new file mode 100644
index 0000000..249217f
--- /dev/null
+++ b/templates/dotnet/flake.nix
@@ -0,0 +1,42 @@
+{
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ flake-parts.url = "github:hercules-ci/flake-parts";
+ };
+
+ outputs = inputs @ {
+ self,
+ nixpkgs,
+ ...
+ }:
+ inputs.flake-parts.lib.mkFlake {inherit inputs;} {
+ systems = ["x86_64-linux"];
+ flake.overlays.default = final: prev: {
+ dotnet-application = final.callPackage ./nix/derivation.nix {};
+ };
+ perSystem = {
+ pkgs,
+ system,
+ self',
+ ...
+ }: {
+ _module.args.pkgs = import nixpkgs {
+ inherit system;
+ overlays = [
+ self.overlays.default
+ ];
+ };
+
+ packages = {
+ inherit (pkgs) dotnet-application;
+ default = self'.packages.dotnet-application;
+ };
+
+ devShells.default = pkgs.mkShell {
+ packages = [
+ pkgs.dotnetCorePackages.dotnet_9.sdk
+ ];
+ };
+ };
+ };
+}
diff --git a/templates/dotnet/nix/derivation.nix b/templates/dotnet/nix/derivation.nix
new file mode 100644
index 0000000..9cb5f34
--- /dev/null
+++ b/templates/dotnet/nix/derivation.nix
@@ -0,0 +1,13 @@
+{
+ buildDotnetModule,
+ dotnetCorePackages,
+}:
+buildDotnetModule {
+ pname = "DotnetApplication";
+ version = "0.1.0";
+ src = ../.;
+ projectFile = "DotnetApplication/DotnetApplication.csproj";
+ dotnet-sdk = dotnetCorePackages.dotnet_9.sdk;
+ dotnet-runtime = dotnetCorePackages.dotnet_9.runtime;
+ executables = ["DotnetApplication"];
+}
diff --git a/templates/dotnet/nix/shell.nix b/templates/dotnet/nix/shell.nix
new file mode 100644
index 0000000..01e72da
--- /dev/null
+++ b/templates/dotnet/nix/shell.nix
@@ -0,0 +1,9 @@
+{
+ mkShell,
+ dotnetCorePackages,
+}:
+mkShell {
+ packages = [
+ dotnetCorePackages.dotnet_9.sdk
+ ];
+}