feat: Setup development environment

The environment includes java, maven, IntelliJ and a postgres server.
This commit is contained in:
Alexander Kobjolke 2024-11-08 00:10:09 +01:00
parent 12235acc42
commit 5e1f01e14d
5 changed files with 214 additions and 0 deletions

3
.envrc Normal file
View file

@ -0,0 +1,3 @@
source_url "https://raw.githubusercontent.com/cachix/devenv/82c0147677e510b247d8b9165c54f73d32dfd899/direnvrc" "sha256-7u4iDd1nZpxL4tCzmPG0dQgC5V+/44Ba+tHkPob1v2k="
use devenv

9
.gitignore vendored
View file

@ -29,3 +29,12 @@ replay_pid*
result result
result-* result-*
# Devenv
.devenv*
devenv.local.nix
# direnv
.direnv
# pre-commit
.pre-commit-config.yaml

116
devenv.lock Normal file
View file

@ -0,0 +1,116 @@
{
"nodes": {
"devenv": {
"locked": {
"dir": "src/modules",
"lastModified": 1730890834,
"owner": "cachix",
"repo": "devenv",
"rev": "c5353d1a0483b8f0dc15933de91c6b1b9a892831",
"type": "github"
},
"original": {
"dir": "src/modules",
"owner": "cachix",
"repo": "devenv",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1730958623,
"owner": "nixos",
"repo": "nixpkgs",
"rev": "85f7e662eda4fa3a995556527c87b2524b691933",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1730883749,
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "dba414932936fde69f0606b4f1d87c5bc0003ede",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1730814269,
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "d70155fdc00df4628446352fc58adc640cd705c2",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"devenv": "devenv",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks"
}
}
},
"root": "root",
"version": 7
}

70
devenv.nix Normal file
View file

@ -0,0 +1,70 @@
{
pkgs,
lib,
config,
inputs,
...
}:
{
imports = [ ];
# https://devenv.sh/packages/
packages = [
pkgs.git
pkgs.jetbrains.idea-community-bin
];
languages.java.enable = true;
languages.java.maven.enable = true;
languages.nix.enable = true;
# https://devenv.sh/processes/
# processes.cargo-watch.exec = "cargo-watch";
processes.flexinale-monolith.exec = ''
java -Dspring.datasource.url=jdbc:postgresql://localhost:5432/monolith -jar flex-training-flexinale/flexinale-monolith/target/flexinale-monolith-2024.3.0-spring-boot-fat-jar.jar
'';
# https://devenv.sh/services/
services.postgres = {
enable = true;
listen_addresses = "127.0.0.1";
initialScript =
let
createDB = n: ''
CREATE DATABASE "${n}";
GRANT ALL PRIVILEGES ON DATABASE "${n}" TO "flexinale";
'';
in
''
CREATE USER flexinale WITH SUPERUSER PASSWORD 'flexinale';
''
+ (lib.strings.concatMapStringsSep "\n" createDB [
"monolith"
"modulith-1"
"modulith-2"
"distributed-backoffice"
"distributed-besucherportal"
"distributed-ticketing"
"distributed-test"
]);
};
# https://devenv.sh/scripts/
scripts.monolith-load.exec = ''
cd ${config.env.DEVENV_ROOT}/flex-training-flexinale
mvn test -Dtest=testdata.TestDataLoader -pl flexinale-monolith -am
'';
# https://devenv.sh/tests/
enterTest = ''
echo "Running tests"
git --version | grep --color=auto "${pkgs.git.version}"
'';
# https://devenv.sh/pre-commit-hooks/
pre-commit.hooks.shellcheck.enable = true;
# See full reference at https://devenv.sh/reference/options/
}

16
devenv.yaml Normal file
View file

@ -0,0 +1,16 @@
# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json
inputs:
nixpkgs:
url: github:nixos/nixpkgs/nixpkgs-unstable
#url: github:cachix/devenv-nixpkgs/rolling
# If you're using non-OSS software, you can set allowUnfree to true.
# allowUnfree: true
# If you're willing to use a package that's vulnerable
# permittedInsecurePackages:
# - "openssl-1.1.1w"
# If you have more than one devenv you can merge them
#imports:
# - ./backend