Files
danbooru/flake.nix

72 lines
1.8 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 { 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 =
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
'';
};
};
}