73 lines
1.9 KiB
Nix
73 lines
1.9 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 {
|
|
name = "danbooru";
|
|
inherit ruby;
|
|
gemdir = ./.;
|
|
gemset =
|
|
let gems = import ./gemset.nix;
|
|
in gems // {
|
|
dtext_rb = gems.dtext_rb // {
|
|
buildInputs = [ pkgs.pkg-config pkgs.glib ];
|
|
};
|
|
};
|
|
buildInputs = [ pkgs.pkg-config pkgs.glib ];
|
|
};
|
|
overlay = final: prev: rec {
|
|
ruby = final.${rubyVer};
|
|
bundler = prev.bundler.override { ruby = final.ruby; };
|
|
# Rev with Ruby 3 compat
|
|
bundix = (prev.bundix.override { bundler = final.bundler; }).overrideAttrs (prev: {
|
|
src = final.fetchFromGitHub {
|
|
owner = "nix-community";
|
|
repo = "bundix";
|
|
rev = "3d7820efdd77281234182a9b813c2895ef49ae1f";
|
|
sha256 = "sha256-0CMDJR3xfewNuDthm3fEh6UPeRH9PURYxJ0PI1WPv4U=";
|
|
};
|
|
});
|
|
danbooru = bundlerEnv final final.ruby;
|
|
};
|
|
pkgs = (import nixpkgs {
|
|
inherit system;
|
|
overlays = [ overlay ];
|
|
});
|
|
in {
|
|
devShells.${system} = {
|
|
bundix = pkgs.mkShell {
|
|
NIX_PATH = "nixpkgs=${nixpkgs}";
|
|
buildInputs = let
|
|
bundix = pkgs.writeShellScriptBin "bundix" ''
|
|
exec ${pkgs.bundix}/bin/bundix --ruby=${rubyVer} --gemset=gemset.nix "$@"
|
|
'';
|
|
in [
|
|
pkgs.ruby
|
|
pkgs.bundler
|
|
bundix
|
|
pkgs.postgresql
|
|
pkgs.pkg-config
|
|
pkgs.glib
|
|
];
|
|
shellHook = ''
|
|
PS1="(bundix) $PS1"
|
|
'';
|
|
};
|
|
};
|
|
packages.${system}.default = pkgs.stdenv.mkDerivation {
|
|
name = "danbooru";
|
|
src = ./.;
|
|
buildInputs = [ pkgs.danbooru pkgs.ruby pkgs.pkg-config pkgs.glib ];
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp -r $src $out
|
|
'';
|
|
};
|
|
};
|
|
}
|