diff options
author | Raito Bezarius | 2024-04-18 14:34:36 +0200 |
---|---|---|
committer | Raito Bezarius | 2024-04-18 14:34:36 +0200 |
commit | 5289b86a5c14ec99311424022a867872173edce4 (patch) | |
tree | 75da592377a833b2ce7e160019aa34e4ae5b6ffb | |
parent | fb9a1e93c2163b170979523f9a0cae90b472a16c (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-- | .envrc | 1 | ||||
-rw-r--r-- | default.nix | 17 | ||||
-rw-r--r-- | npins/default.nix | 47 | ||||
-rw-r--r-- | npins/sources.json | 23 | ||||
-rw-r--r-- | shell.nix | 1 |
5 files changed, 89 insertions, 0 deletions
@@ -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 |