{
  description = "Development environment";

  inputs = {
    nixpkgs = {url = "github:nixos/nixpkgs/nixos-23.11";};
    flake-utils = {url = "github:numtide/flake-utils";};
    version = {url = "git+https://gitlab.schukai.com/oss/utilities/version.git/";};
  };

  outputs = {
    self,
    nixpkgs,
    flake-utils,
    version,
  }:
    flake-utils.lib.eachDefaultSystem (system: let
      inherit (nixpkgs.lib) optional;
      pkgs' = import nixpkgs {inherit system;};

      script-task = pkgs'.callPackage ./nix/scripts/go-task.nix {};
      script-run-tests = pkgs'.callPackage ./nix/scripts/run-tests.nix {};
      script-run-extended-tests = pkgs'.callPackage ./nix/scripts/run-extended-tests.nix {};
      script-run-ci-tests = pkgs'.callPackage ./nix/scripts/run-ci-tests.nix {};
      script-check-code = pkgs'.callPackage ./nix/scripts/check-code.nix {};
      script-build-cover-report = pkgs'.callPackage ./nix/scripts/build-cover-report.nix {};

      script-clean-up = pkgs'.callPackage ./nix/scripts/clean-up.nix {};
      script-deploy = pkgs'.callPackage ./nix/scripts/deploy.nix {};

      import-version = version.packages.${system}.version;
    in {
      devShells = {
        default = let
          ciJobToken = builtins.getEnv "CI_JOB_TOKEN";
        in
          pkgs'.mkShell {
            nativeBuildInputs = with pkgs'; [
              script-run-tests
              script-run-extended-tests
              script-run-ci-tests
              script-check-code
              script-build-cover-report
              script-task

              script-clean-up
              script-deploy

              import-version

              alejandra
              blackbox
              blackbox-terminal
              coreutils-full
              delve
              dialog
              drill
              fd
              feh
              gcc12
              gdlv
              git
              glab
              gnugrep
              gnumake
              gnused
              go
              go-licenses
              golangci-lint
              gosec
              gum
              jq
              niv
              libffi
              logrotate
              meld
              memcached
              netcat
              ranger
              unixtools.xxd
              unzip
              util-linux
              vhs
              wget
              zlib
            ];
            shellHook = ''
              echo "Welcome to your development environment."
            '';
          };
      };
    });
}