{ 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 ]; }; }; }