Files
docki/flake.nix

147 lines
3.8 KiB
Nix

{
description = "Asist Development Flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
systems.url = "github:nix-systems/default";
naersk.url = "github:nix-community/naersk";
};
outputs =
{
nixpkgs,
systems,
naersk,
self,
...
}:
let
eachSystem = f: nixpkgs.lib.genAttrs (import systems) (system: f nixpkgs.legacyPackages.${system});
build_asciidoctor_revealjs =
pkgs:
pkgs.buildRubyGem {
gemName = "asciidoctor-revealjs";
version = "5.2.0";
source = {
type = "git";
url = "https://rubygems.org/downloads/asciidoctor-revealjs-5.2.0.gem";
sha256 = "sha256-NQSl5+ryyR3jf5YYkxT/sea/lNrZ1kbVyaJMZpG/auI=";
};
};
build_asciidoctor =
pkgs:
pkgs.buildRubyGem {
gemName = "asciidoctor";
version = "2.0.25";
source = {
type = "git";
url = "https://rubygems.org/downloads/asciidoctor-2.0.25.gem";
sha256 = "sha256-sG/oIrCRDU4l6g9WL+z8eUjpRuIi79lJSEnSfaQmfRk=";
};
};
build_docki =
{ naerskLib, pkgs }:
let
runtimeDeps = with pkgs; [
(ruby.withPackages (
p: with p; [
(build_asciidoctor_revealjs pkgs)
(build_asciidoctor pkgs)
bundler
]
))
];
in
naerskLib.buildPackage {
src = ./.;
buildInputs = [
];
nativeBuildInputs = with pkgs; [
pkg-config
openssl.dev
libiconv
makeWrapper
];
postInstall = ''
mkdir -p $out/share/bash-completion/completions
mkdir -p $out/share/zsh/site-functions
mkdir -p $out/share/fish/vendor_completions.d
$out/bin/docki completions bash > $out/share/bash-completion/completions/docki
$out/bin/docki completions zsh > $out/share/zsh/site-functions/_docki
$out/bin/docki completions fish > $out/share/fish/vendor_completions.d/docki.fish
wrapProgram $out/bin/docki --prefix PATH : ${pkgs.lib.makeBinPath runtimeDeps}
'';
};
in
{
devShells = eachSystem (pkgs: {
default = pkgs.mkShell {
name = "docki";
buildInputs = with pkgs; [
gcc
openssl.dev
pkg-config
libiconv
rustc
cargo
(ruby.withPackages (
p: with p; [
(build_asciidoctor_revealjs pkgs)
(build_asciidoctor pkgs)
bundler
]
))
];
};
preview = pkgs.mkShell {
name = "docki-preview";
buildInputs = [
pkgs.zsh
pkgs.fish
pkgs.bash
self.packages.${pkgs.system}.default
];
};
});
packages = eachSystem (
pkgs:
let
naerskLib = pkgs.callPackage naersk { };
in
{
default = build_docki {
naerskLib = naerskLib;
pkgs = pkgs;
};
docker = pkgs.dockerTools.buildImage {
name = "docki";
tag = "latest";
config = {
WorkingDir = "/app";
};
copyToRoot = pkgs.buildEnv {
name = "docki-docker";
paths = [
pkgs.coreutils
pkgs.bash
pkgs.cacert
(build_docki {
naerskLib = naerskLib;
pkgs = pkgs;
})
];
};
};
}
);
};
}