121 lines
4.4 KiB
Nix
121 lines
4.4 KiB
Nix
{
|
|
inputs.haskell-nix.url = "github:input-output-hk/haskell.nix";
|
|
inputs.nixpkgs.follows = "haskell-nix/nixpkgs-unstable";
|
|
inputs.flake-utils.follows = "haskell-nix/flake-utils";
|
|
|
|
inputs.encoding = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/encoding.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.memcached-binary = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/memcached-binary.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.conduit-resumablesink = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/conduit-resumablesink.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.HaskellNet-SSL = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/HaskellNet-SSL.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.ldap-client = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/ldap-client.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.serversession = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/serversession.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.xss-sanitize = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/xss-sanitize.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.colonnade = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/colonnade.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.minio-hs = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/minio-hs.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.cryptoids = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/cryptoids.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.zip-stream = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/zip-stream.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.yesod = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/yesod.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.cryptonite = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/cryptonite.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.esqueleto = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/esqueleto.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
|
|
inputs.tail-DateTime = {
|
|
url = "git+ssh://git@gitlab2.rz.ifi.lmu.de/uni2work/tail.DateTime.git?ref=uni2work";
|
|
flake = false;
|
|
};
|
|
inputs.fontawesome-token = {
|
|
url = "path:/etc/fontawesome-token";
|
|
flake = false;
|
|
};
|
|
|
|
outputs = inputs@{ self, nixpkgs, flake-utils, haskell-nix, ... }: flake-utils.lib.eachSystem ["x86_64-linux"]
|
|
(system:
|
|
let frontendSource = pkgs.lib.sourceByRegex ./. [
|
|
"^(assets|frontend)(/.*)?$"
|
|
"^config(/(favicon\.json|robots\.txt))?$"
|
|
"^(webpack|postcss)\.config\.js$"
|
|
"^(package|jsconfig)\.json$"
|
|
"^\.babelrc$"
|
|
];
|
|
backendSource = pkgs.lib.sourceByRegex ./. [
|
|
"^(package|stack-flake)\.yaml$"
|
|
"^stack\.yaml\.lock$"
|
|
"^(assets|app|hlint|load|messages|models|src|templates|test|testdata|wflint)(/.*)?$"
|
|
"^config(/(archive-types|mimetypes|personalised-sheet-files-collate|settings\.yml|submission-blacklist|test-settings\.yml|video-types|wordlist\.txt))?$"
|
|
"^routes$"
|
|
];
|
|
|
|
pkgs = import nixpkgs {
|
|
inherit system overlays;
|
|
config.allowUnfree = true;
|
|
};
|
|
overlays = [
|
|
(import ./nix/maildev)
|
|
haskell-nix.overlay
|
|
(import ./nix/uniworx { inherit inputs frontendSource backendSource; })
|
|
(import ./nix/docker-demo { inherit self; })
|
|
];
|
|
haskellFlake = pkgs.uniworx.flake {};
|
|
|
|
pushUniworxDemoDocker = pkgs.writeScriptBin "push-uniworx-demo-docker" ''
|
|
#!${pkgs.zsh}/bin/zsh -xe
|
|
|
|
target=''${1-docker://registry.gitlab.com/fradrive/fradrive/uniworx-demo}
|
|
[[ -n "''${1}" ]] && shift
|
|
${pkgs.skopeo}/bin/skopeo ''${@} --insecure-policy copy docker-archive://${pkgs.uniworxDemoDocker} ''${target}
|
|
'';
|
|
in {
|
|
packages = haskellFlake.packages // { inherit (pkgs) uniworx-node-dependencies uniworx-well-known uniworx-frontend; inherit (pkgs.uniworx.stack-nix.passthru) calculateMaterializedSha; };
|
|
apps = haskellFlake.apps // { push-uniworx-demo-docker = flake-utils.lib.mkApp { drv = pushUniworxDemoDocker; }; };
|
|
inherit (haskellFlake) checks;
|
|
|
|
devShell = import ./shell.nix { inherit pkgs; };
|
|
|
|
legacyPackages = pkgs;
|
|
|
|
defaultPackage = pkgs.uniworxDemoDocker;
|
|
}
|
|
);
|
|
}
|