From ac792fdd750d88684fed7ae3c9703c289d44331d Mon Sep 17 00:00:00 2001 From: nelind Date: Tue, 23 Dec 2025 01:40:51 +0100 Subject: [PATCH] add nix package, devshell and an .envrc --- .envrc | 1 + .gitignore | 2 ++ default.nix | 37 +++++++++++++++++++++++++++++++++++++ flake.lock | 27 +++++++++++++++++++++++++++ flake.nix | 19 +++++++++++++++++++ shell.nix | 38 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 124 insertions(+) create mode 100644 .envrc create mode 100644 default.nix create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 shell.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..44610e5 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake; diff --git a/.gitignore b/.gitignore index 03d3f1d..cc26a7e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ /target .env +.direnv +.result reference-pds-hailey/ reference-pds-bsky/ reference-relay-indigo/ diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..47d891b --- /dev/null +++ b/default.nix @@ -0,0 +1,37 @@ +{ + lib, + rustPlatform, + pkg-config, + openssl, +}: let + toml = (lib.importTOML ./Cargo.toml).package; +in rustPlatform.buildRustPackage { + pname = "tranquil-pds"; + inherit (toml) version; + + src = lib.fileset.toSource { + root = ./.; + fileset = lib.fileset.intersection (lib.fileset.fromSource (lib.sources.cleanSource ./.)) ( + lib.fileset.unions [ + ./Cargo.toml + ./Cargo.lock + ./src + ./.sqlx + ./migrations + ./frontend + ] + ); + }; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + openssl + ]; + + cargoLock.lockFile = ./Cargo.lock; + + doCheck = false; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..1c499aa --- /dev/null +++ b/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1766314097, + "narHash": "sha256-laJftWbghBehazn/zxVJ8NdENVgjccsWAdAqKXhErrM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "306ea70f9eb0fb4e040f8540e2deab32ed7e2055", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..5dd1449 --- /dev/null +++ b/flake.nix @@ -0,0 +1,19 @@ +{ + inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; + outputs = { self, nixpkgs, ... }: let + forAllSystems = + function: + nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed ( + system: function nixpkgs.legacyPackages.${system} + ); + in { + packages = forAllSystems (pkgs: { + tranquil-pds = pkgs.callPackage ./default.nix { }; + default = self.packages.${pkgs.stdenv.hostPlatform.system}.tranquil-pds; + }); + + devShells = forAllSystems (pkgs: { + default = pkgs.callPackage ./shell.nix { }; + }); + }; +} diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..8a94893 --- /dev/null +++ b/shell.nix @@ -0,0 +1,38 @@ +{ + mkShell, + callPackage, + rustPlatform, + + # repo tooling + just, + podman, + podman-compose, + + # rust tooling + clippy, + rustfmt, + rust-analyzer, + + # frontend tooling + deno, +}: let + defaultPackage = callPackage ./default.nix { }; +in mkShell { + inputsFrom = [ defaultPackage ]; + + env = { + RUST_SRC_PATH = rustPlatform.rustLibSrc; + }; + + packages = [ + just + podman + podman-compose + + clippy + rustfmt + rust-analyzer + + deno + ]; +} \ No newline at end of file