Files
danbooru/flake.nix
2022-12-28 00:44:11 +00:00

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
'';
};
};
}