diff --git a/.gitignore b/.gitignore index 0f7177f..c911398 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ obj/ bin/ */nupkg .vscode/ -.idea/ \ No newline at end of file +.idea/ +result diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..6c64f2c --- /dev/null +++ b/default.nix @@ -0,0 +1,21 @@ +{ dotnetCorePackages +, buildDotnetModule +}: + +buildDotnetModule rec { + pname = "tabletbot"; + name = pname; + version = "1.0.0.0"; + + src = ./.; + + dotnet-sdk = dotnetCorePackages.sdk_5_0; + dotnet-runtime = dotnetCorePackages.aspnetcore_5_0; + + dotnetInstallFlags = [ "--framework=net5.0" ]; + + nugetDeps = ./deps.nix; + + executables = [ "TabletBot" ]; + projectFile = executables; +} diff --git a/deps.nix b/deps.nix new file mode 100644 index 0000000..cb117d6 --- /dev/null +++ b/deps.nix @@ -0,0 +1,30 @@ +{ fetchNuGet }: [ + (fetchNuGet { pname = "Discord.Net.Labs"; version = "3.6.1"; sha256 = "01ay9020bh2k8bbmhidh98dmp1dapfyfnqgv1qspzlhzqfzdh83k"; }) + (fetchNuGet { pname = "Discord.Net.Labs.Commands"; version = "3.6.1"; sha256 = "0k9f86p6q6pfb6byic69a2ccnh7547bx0hbab1ij68hjhryxl8w8"; }) + (fetchNuGet { pname = "Discord.Net.Labs.Core"; version = "3.6.1"; sha256 = "0522gcz9c8cia9bdr5szx48y6z39784d3b63kxgny107jhjl94id"; }) + (fetchNuGet { pname = "Discord.Net.Labs.Interactions"; version = "3.6.1"; sha256 = "1vyxcr2zmja87h1d75lnyd6s20fhssad184k5khm04sr5ckq7r8k"; }) + (fetchNuGet { pname = "Discord.Net.Labs.Rest"; version = "3.6.1"; sha256 = "1097f3n3pv893lp5v86n90jcig9i5gi24s5z9726xvxqvyasjv2q"; }) + (fetchNuGet { pname = "Discord.Net.Labs.Webhook"; version = "3.6.1"; sha256 = "1g5hdx37mfygb9j5m7wwf9d2l52kqilaxvsv8j605yhily56vy8n"; }) + (fetchNuGet { pname = "Discord.Net.Labs.WebSocket"; version = "3.6.1"; sha256 = "1igl11l7jp742mqrzlxkamv6x0hzpwclkbn96cwwljx2yqyx2z7k"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "5.0.0"; sha256 = "0d7sjr89zwq0wxirf8la05hfalv9nhvlczg1c7a508k8aw79jvfg"; }) + (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.4.1"; sha256 = "0z6d1i6xcf0c00z6rs75rgw4ncs9q2m8amasf6mmbf40fm02ry7g"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "6.0.0"; sha256 = "1wlhb2vygzfdjbdzy7waxblmrx0q3pdcqvpapnpmq9fcx5m8r6w1"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "5.0.0"; sha256 = "17cz6s80va0ch0a6nqa1wbbbp3p8sqxb96lj4qcw67ivkp2yxiyj"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "6.0.0"; sha256 = "1vi67fw7q99gj7jd64gnnfr4d2c0ijpva7g9prps48ja6g91x6a9"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "5.0.12"; sha256 = "19rdkk1aalfqgam6xqflb8pikazv5azmv4j3ia08fbr3qpsbrx33"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "5.0.0"; sha256 = "1p62khf9zk23lh91lvz7plv3g1nzmm3b5szqrcm6mb8w3sjk03wi"; }) + (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.1"; sha256 = "0fijg0w6iwap8gvzyjnndds0q4b8anwxxvik7y8vgq97dram4srb"; }) + (fetchNuGet { pname = "Octokit"; version = "0.50.0"; sha256 = "1ignj5i6a1c19qqrw00wlr9fdjmwrxkxz7gdxj0x653w84gbv7qq"; }) + (fetchNuGet { pname = "System.Collections.Immutable"; version = "5.0.0"; sha256 = "1kvcllagxz2q92g81zkz81djkn2lid25ayjfgjalncyc68i15p0r"; }) + (fetchNuGet { pname = "System.CommandLine.DragonFruit"; version = "0.3.0-alpha.19577.1"; sha256 = "09xv1ii0irr69snc9bjzkdg17ccasc3ib40ydakqqwf50lk5za0x"; }) + (fetchNuGet { pname = "System.CommandLine.Experimental"; version = "0.3.0-alpha.19577.1"; sha256 = "1qrj0pvz5zvw0a12sn8xc9i1bh58dsgkdq8gjinzj10l4aa38g1a"; }) + (fetchNuGet { pname = "System.CommandLine.Rendering"; version = "0.3.0-alpha.19577.1"; sha256 = "0f2pbkyh8ilshba498bvdniz63gkbb3cx8dqvnj6vn1lri6jq3yq"; }) + (fetchNuGet { pname = "System.Interactive.Async"; version = "5.0.0"; sha256 = "00flf80ahpyhrsny2kfl9bsyh1mxmsdsigpq3rzhaps9wgdbmzjz"; }) + (fetchNuGet { pname = "System.Linq.Async"; version = "5.0.0"; sha256 = "1bc1bfnahyk6y31mrxn7nd071436m94p4r9b2j835pghcqawqfbc"; }) + (fetchNuGet { pname = "System.Memory"; version = "4.5.3"; sha256 = "0naqahm3wljxb5a911d37mwjqjdxv9l0b49p5dmfyijvni2ppy8a"; }) + (fetchNuGet { pname = "System.Reactive"; version = "5.0.0"; sha256 = "1lafmpnadhiwxyd543kraxa3jfdpm6ipblxrjlibym9b1ykpr5ik"; }) + (fetchNuGet { pname = "System.Reactive.Core"; version = "5.0.0"; sha256 = "1dx853anp24awwgpw9j91qkgm2ww3n76jxnmg6qkn79vnfnjg0g7"; }) + (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; sha256 = "0qm741kh4rh57wky16sq4m0v05fxmkjjr87krycf5vp9f0zbahbc"; }) + (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; }) + (fetchNuGet { pname = "System.ValueTuple"; version = "4.5.0"; sha256 = "00k8ja51d0f9wrq4vv5z2jhq8hy31kac2rg0rv06prylcybzl8cy"; }) +] diff --git a/nix-update.sh b/nix-update.sh new file mode 100755 index 0000000..0d36228 --- /dev/null +++ b/nix-update.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p dotnet-sdk_6 nuget-to-nix mktemp + +depsFile=$(realpath ./deps.nix) +nugetPkgs=$(mktemp -d) + +dotnet restore TabletBot.sln --packages "$nugetPkgs" + +nuget-to-nix "$nugetPkgs" > "$depsFile" \ No newline at end of file diff --git a/run b/run deleted file mode 100755 index 26d0c0a..0000000 --- a/run +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash -args=($@) - -if [ -n "$DISCORD_TOKEN" ]; then - args+=("-t $DISCORD_TOKEN") -fi - -if [ -n "$GITHUB_TOKEN" ]; then - args+=("--github-token $GITHUB_TOKEN") -fi - -dotnet run -p TabletBot/TabletBot.csproj -- $(echo ${args[*]}) diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..3926d22 --- /dev/null +++ b/shell.nix @@ -0,0 +1,10 @@ +{ pkgs ? import { } }: + +let + tabletbot = pkgs.callPackage ./default.nix {}; +in pkgs.mkShell { + buildInputs = with pkgs; [ + tabletbot + ]; + hardeningDisable = [ "all" ]; +}