63 lines
1.3 KiB
Nix
63 lines
1.3 KiB
Nix
{
|
|
description = "Infinsweeper";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
};
|
|
|
|
outputs =
|
|
{ nixpkgs, ... }:
|
|
let
|
|
system = "x86_64-linux";
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
|
|
ruby = pkgs.ruby.withPackages (
|
|
p: with p; [
|
|
sqlite3
|
|
sequel
|
|
rackup
|
|
puma
|
|
sinatra
|
|
]
|
|
);
|
|
|
|
app = pkgs.stdenv.mkDerivation {
|
|
pname = "infinsweeper";
|
|
version = "0.1.0";
|
|
src = ./.;
|
|
buildInputs = [ ruby ];
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp -r . $out/
|
|
'';
|
|
};
|
|
|
|
server = pkgs.writeShellApplication {
|
|
name = "infinsweeper";
|
|
runtimeInputs = [ ruby ];
|
|
text = ''
|
|
set -euo pipefail
|
|
data_dir="''${INFINSWEEPER_DATA_DIR:-/var/lib/infinsweeper}"
|
|
DB="$data_dir/infinsweeper.db"
|
|
mkdir -p "$data_dir"
|
|
exec ruby ${app}/main.rb
|
|
'';
|
|
};
|
|
in
|
|
{
|
|
packages.${system}.default = app;
|
|
|
|
apps.${system}.default = {
|
|
type = "app";
|
|
program = "${server}/bin/infinsweeper";
|
|
};
|
|
|
|
devShells.${system}.default = pkgs.mkShell {
|
|
packages = [
|
|
ruby
|
|
pkgs.sqlite
|
|
];
|
|
};
|
|
};
|
|
}
|