{ description = "Job Queues is a library"; inputs = { nixpkgs = {url = "github:nixos/nixpkgs/nixos-24.05";}; nixpkgsUnstable = {url = "github:nixos/nixpkgs/nixos-unstable";}; flakeUtils = {url = "github:numtide/flake-utils";}; commonFlake = { url = "git+https://gitlab.schukai.com/schukai/entwicklung/nix-flakes.git?dir=common"; flake = true; }; versionFlake = { url = "git+https://gitlab.schukai.com/oss/utilities/version.git"; flake = true; }; }; outputs = { self, nixpkgs, nixpkgsUnstable, flake-utils, versionFlake, commonFlake, ... } @ inputs: flake-utils.lib.eachDefaultSystem (system: let inherit (nixpkgs.lib) optional; commonPck = commonFlake.packages.${system}.common; versionPck = versionFlake.packages.${system}.version; pkgs' = import nixpkgs { inherit system; overlays = [ (final: prev: { common = commonPck; }) (final: prev: { version = versionPck; }) (final: prev: { dolt = (import nixpkgsUnstable { inherit system; }) .dolt; }) ]; }; in { packages = rec { manual = pkgs'.callPackage ./nix/packages/manual.nix {inherit self pkgs';}; }; devShells = { default = let commonPck = commonFlake.packages.${system}.common; commonScript = commonPck + "/bin/common"; versionPck = versionFlake.packages.${system}.version; versionBin = versionPck + "/bin/version"; scriptGoTask = import ./nix/scripts/go-task.nix {inherit self pkgs' system;}; commonPackages = import ./nix/config/common-packages.nix {inherit pkgs';}; extendedPackages = [ scriptGoTask ]; scriptPackages = [ versionPck ]; shellPackages = commonPackages ++ extendedPackages ++ scriptPackages; in pkgs'.mkShell { nativeBuildInputs = shellPackages; shellHook = '' source ${commonScript} if [ -n "$CI_JOB_TOKEN" ]; then echo_fail "You are in a CI environment, this shell is not intended for CI, but for local development" exit 1 fi echo_header "Job Queues Lib development shell" readonly worktree=$(get_working_dir) echo_hint "Working directory: ''${worktree}" currentVersion=$(${versionBin} print -g) if [ -z "''${currentVersion}" ]; then echo_fail "No version found, check your git tags" else echo_hint "Current version: ''${currentVersion}" fi currentGitBranch=$(git rev-parse --abbrev-ref HEAD) echo_hint "Current branch: ''${currentGitBranch}" echo_hint "You can run the task command to see the available tasks" echo_section "Happy hacking!" ''; }; gitlab = let commonPck = commonFlake.packages.${system}.common; commonScript = commonPck + "/bin/common"; versionPck = versionFlake.packages.${system}.version; scriptCleanUp = pkgs'.callPackage ./nix/scripts/clean-up.nix {inherit pkgs';}; scriptRunCITests = pkgs'.callPackage ./nix/scripts/run-ci-tests.nix {inherit pkgs';}; scriptRelease = pkgs'.callPackage ./nix/scripts/release.nix {inherit pkgs';}; commonPackages = import ./nix/config/common-packages.nix {inherit pkgs';}; extendedPackages = [ scriptCleanUp scriptRunCITests scriptRelease ]; scriptPackages = [ versionPck ]; shellPackages = commonPackages ++ extendedPackages ++ scriptPackages; in pkgs'.mkShell { nativeBuildInputs = shellPackages; shellHook = '' source ${commonScript} if [ -z "$CI_JOB_TOKEN" ]; then echo_fail "You are not in a CI environment, this shell is intended for CI, but for local development" exit 1 fi cd ''${CI_PROJECT_DIR} || exit 1 ''; }; }; }); }