70 lines
1.7 KiB
Nix
70 lines
1.7 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs?ref=refs/tags/22.11";
|
|
};
|
|
|
|
outputs = { self, nixpkgs }:
|
|
let
|
|
system = "x86_64-linux";
|
|
rubyVer = "ruby_3_1";
|
|
bundlerEnv = pkgs: ruby: pkgs.bundlerEnv {
|
|
pname = "danbooru";
|
|
inherit ruby;
|
|
gemdir = ./.;
|
|
};
|
|
overlay = final: prev: rec {
|
|
ruby = final.${rubyVer};
|
|
bundler = prev.bundler.override { inherit ruby; };
|
|
# Rev with Ruby 3 compat
|
|
bundix = (prev.bundix.override { inherit bundler; }).overrideAttrs (prev: {
|
|
src = final.fetchFromGitHub {
|
|
owner = "nix-community";
|
|
repo = "bundix";
|
|
rev = "3d7820efdd77281234182a9b813c2895ef49ae1f";
|
|
sha256 = "sha256-0CMDJR3xfewNuDthm3fEh6UPeRH9PURYxJ0PI1WPv4U=";
|
|
};
|
|
});
|
|
danbooru = bundlerEnv final ruby;
|
|
};
|
|
pkgs = (import nixpkgs {
|
|
inherit system;
|
|
overlays = [ overlay ];
|
|
});
|
|
in {
|
|
devShells.${system} = {
|
|
default = pkgs.mkShell {
|
|
buildInputs = with pkgs; [
|
|
ruby_3_1 postgresql git redis curl nginx openssl coreutils ffmpeg gcc exiftool glib pkg-config
|
|
];
|
|
shellHook = ''
|
|
PS1="(deps) $PS1"
|
|
'';
|
|
};
|
|
bundix = pkgs.mkShell {
|
|
buildInputs = with pkgs; [
|
|
bundix postgresql pkg-config
|
|
];
|
|
shellHook = ''
|
|
PS1="(bundix) $PS1"
|
|
'';
|
|
};
|
|
};
|
|
packages.${system}.default =
|
|
let
|
|
gems = pkgs.bundlerEnv {
|
|
name = "danbooru";
|
|
ruby = pkgs.ruby;
|
|
gemdir = ./.;
|
|
};
|
|
in pkgs.stdenv.mkDerivation {
|
|
name = "danbooru";
|
|
src = ./.;
|
|
buildInputs = [ gems pkgs.ruby ];
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp -r $src $out
|
|
'';
|
|
};
|
|
};
|
|
}
|