63 lines
1.2 KiB
Nix
63 lines
1.2 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
|
|
export DB="''${INFINSWEEPER_DB:-/var/lib/infinsweeper.db}"
|
|
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
|
|
];
|
|
|
|
env.INFINSWEEPER_DB = "./infinsweeper.db";
|
|
};
|
|
};
|
|
}
|