summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaito Bezarius2024-04-18 14:34:36 +0200
committerRaito Bezarius2024-04-18 14:34:36 +0200
commit5289b86a5c14ec99311424022a867872173edce4 (patch)
tree75da592377a833b2ce7e160019aa34e4ae5b6ffb
parentfb9a1e93c2163b170979523f9a0cae90b472a16c (diff)
chore: nixify the project
So that I stop doing `nix run` one-offs! Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
-rw-r--r--.envrc1
-rw-r--r--default.nix17
-rw-r--r--npins/default.nix47
-rw-r--r--npins/sources.json23
-rw-r--r--shell.nix1
5 files changed, 89 insertions, 0 deletions
diff --git a/.envrc b/.envrc
new file mode 100644
index 0000000..1d953f4
--- /dev/null
+++ b/.envrc
@@ -0,0 +1 @@
+use nix
diff --git a/default.nix b/default.nix
new file mode 100644
index 0000000..db340bb
--- /dev/null
+++ b/default.nix
@@ -0,0 +1,17 @@
+{ sources ? import ./npins
+, pkgs ? import sources.nixpkgs {}
+, lib ? pkgs.lib
+, aeneas-src ? sources.aeneas
+, aeneas ? (import aeneas-src {}).packages.x86_64-linux.aeneas
+, charon ? (import aeneas-src {}).packages.x86_64-linux.charon
+}:
+{
+ shell = pkgs.mkShell {
+ buildInputs = [
+ aeneas
+ charon
+ pkgs.rustup
+ pkgs.npins
+ ];
+ };
+}
diff --git a/npins/default.nix b/npins/default.nix
new file mode 100644
index 0000000..4a7c372
--- /dev/null
+++ b/npins/default.nix
@@ -0,0 +1,47 @@
+# Generated by npins. Do not modify; will be overwritten regularly
+let
+ data = builtins.fromJSON (builtins.readFile ./sources.json);
+ version = data.version;
+
+ mkSource = spec:
+ assert spec ? type; let
+ path =
+ if spec.type == "Git" then mkGitSource spec
+ else if spec.type == "GitRelease" then mkGitSource spec
+ else if spec.type == "PyPi" then mkPyPiSource spec
+ else if spec.type == "Channel" then mkChannelSource spec
+ else builtins.throw "Unknown source type ${spec.type}";
+ in
+ spec // { outPath = path; };
+
+ mkGitSource = { repository, revision, url ? null, hash, ... }:
+ assert repository ? type;
+ # At the moment, either it is a plain git repository (which has an url), or it is a GitHub/GitLab repository
+ # In the latter case, there we will always be an url to the tarball
+ if url != null then
+ (builtins.fetchTarball {
+ inherit url;
+ sha256 = hash; # FIXME: check nix version & use SRI hashes
+ })
+ else assert repository.type == "Git"; builtins.fetchGit {
+ url = repository.url;
+ rev = revision;
+ # hash = hash;
+ };
+
+ mkPyPiSource = { url, hash, ... }:
+ builtins.fetchurl {
+ inherit url;
+ sha256 = hash;
+ };
+
+ mkChannelSource = { url, hash, ... }:
+ builtins.fetchTarball {
+ inherit url;
+ sha256 = hash;
+ };
+in
+if version == 3 then
+ builtins.mapAttrs (_: mkSource) data.pins
+else
+ throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`"
diff --git a/npins/sources.json b/npins/sources.json
new file mode 100644
index 0000000..4564db9
--- /dev/null
+++ b/npins/sources.json
@@ -0,0 +1,23 @@
+{
+ "pins": {
+ "aeneas": {
+ "type": "Git",
+ "repository": {
+ "type": "GitHub",
+ "owner": "RaitoBezarius",
+ "repo": "aeneas"
+ },
+ "branch": "reexport-our-charon",
+ "revision": "d848d314893bdaa2429d809b20d6a27b394e1ce8",
+ "url": "https://github.com/RaitoBezarius/aeneas/archive/d848d314893bdaa2429d809b20d6a27b394e1ce8.tar.gz",
+ "hash": "13nmkxgqnxh2sr9zymx9kc7w15i9jh14dpzzpc4hnc2kqlgvbyav"
+ },
+ "nixpkgs": {
+ "type": "Channel",
+ "name": "nixpkgs-unstable",
+ "url": "https://releases.nixos.org/nixpkgs/nixpkgs-24.05pre612711.2b6ee326ad04/nixexprs.tar.xz",
+ "hash": "1vghd2mmyhzk7nsyi8jcral04nz7zq90lmm8sdspg05cx41wlna5"
+ }
+ },
+ "version": 3
+} \ No newline at end of file
diff --git a/shell.nix b/shell.nix
new file mode 100644
index 0000000..82fb296
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1 @@
+(import ./default.nix {}).shell