Add dev shell configs

This commit is contained in:
Jaculabilis 2022-02-11 23:44:40 -08:00
parent 60c25e1ae5
commit c0c9ab15d1
3 changed files with 87 additions and 7 deletions

View File

@ -30,4 +30,39 @@ $ git add flake.nix README.md
$ git commit -m "Initial commit" $ git commit -m "Initial commit"
$ git remote add origin gitea@git.alogoulogoi.com:Jaculabilis/5dplomacy.git $ git remote add origin gitea@git.alogoulogoi.com:Jaculabilis/5dplomacy.git
$ git push -u origin master $ git push -u origin master
```
We're doing this in .NET, so we need the .NET SDK. To do that, we're going to delcare a development environment in the flake config.
```
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let pkgs = nixpkgs.legacyPackages.${system};
in rec {
devShell = pkgs.mkShell {
packages = [ pkgs.dotnet-sdk ];
};
}
);
```
Declaring `inputs.flake-utils` adds the `flake-utils` package as a dependency, which just gives us Nix helper functions. What's important here is that the `packages.x86_64-linux.hello` above has been abstracted away behind the `eachDefaultSystem` function: now we define our outputs with the `system` input as context, and flake-utils will define our outputs for each default system.
Basically, stripping the boilerplate, we're just doing this:
```
rec {
devShell = pkgs.mkShell {
packages = [ pkgs.dotnet-sdk ];
};
}
```
`pkgs.mkShell` is the derivation builder that creates shell environments. It takes `packages` as a list of input packages that will be made available in the shell environment it creates. We add `dotnet-sdk` to this, commit the changes to git, and enter our new shell with `nix develop`:
```
$ which dotnet
/nix/store/87s452c8wj2zmy21q8q394f6rzf5y1br-dotnet-sdk-6.0.100/bin/dotnet
``` ```

41
flake.lock Normal file
View File

@ -0,0 +1,41 @@
{
"nodes": {
"flake-utils": {
"locked": {
"lastModified": 1644229661,
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1644486793,
"narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "1882c6b7368fd284ad01b0a5b5601ef136321292",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

View File

@ -1,11 +1,15 @@
{ {
description = "A very basic flake"; description = "5D Diplomacy With Multiversal Time Travel";
outputs = { self, nixpkgs }: { inputs.flake-utils.url = "github:numtide/flake-utils";
packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello; outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello; let pkgs = nixpkgs.legacyPackages.${system};
in rec {
}; devShell = pkgs.mkShell {
packages = [ pkgs.dotnet-sdk ];
};
}
);
} }