/ devenv.nix
devenv.nix
1 { 2 pkgs, 3 config, 4 ... 5 }: 6 7 { 8 # https://devenv.sh/basics/ 9 env.GREET = "devenv"; 10 env.TEST_ONLY_DO_FILES_PATH = "${config.devenv.root}/backend/src/divinum-officium/web/www/missa"; 11 12 # https://devenv.sh/packages/ 13 packages = [ 14 pkgs.git 15 pkgs.black 16 pkgs.ty 17 pkgs.isort 18 ]; 19 20 # https://devenv.sh/languages/ 21 languages = { 22 python = { 23 enable = true; 24 directory = "./backend"; 25 uv = { 26 enable = true; 27 sync.enable = true; 28 }; 29 # NOTE(shackra): required for ty 30 venv = { 31 enable = true; 32 }; 33 }; 34 35 javascript = { 36 enable = true; 37 directory = "./frontend"; 38 yarn = { 39 enable = true; 40 # install.enable = true; 41 }; 42 }; 43 }; 44 45 # https://devenv.sh/processes/ 46 # processes.cargo-watch.exec = "cargo-watch"; 47 48 # https://devenv.sh/services/ 49 # services.postgres.enable = true; 50 51 # https://devenv.sh/scripts/ 52 scripts.hello.exec = '' 53 echo hello from $GREET 54 ''; 55 56 scripts.format.exec = '' 57 echo "isort" 58 ${pkgs.isort}/bin/isort --sg 'src/divinum-officium/**/*.py' --om ${config.devenv.root}/backend 59 echo "black" 60 ${pkgs.black}/bin/black --exclude 'src/divinum-officium/.*/.*\.py' ${config.devenv.root}/backend 61 ''; 62 63 scripts.check.exec = '' 64 cd ${config.devenv.root}/backend 65 ${pkgs.ty}/bin/ty check 66 ''; 67 68 enterShell = '' 69 hello 70 git --version 71 echo "yarn version `yarn --version`" 72 uv --version 73 ''; 74 75 # https://devenv.sh/tasks/ 76 # tasks = { 77 # "myproj:setup".exec = "mytool build"; 78 # "devenv:enterShell".after = [ "myproj:setup" ]; 79 # }; 80 81 # https://devenv.sh/tests/ 82 enterTest = '' 83 cd ${config.devenv.root}/backend 84 pytest --failed-first . 85 ''; 86 87 # https://devenv.sh/git-hooks/ 88 git-hooks.hooks = { 89 shellcheck.enable = true; 90 black.enable = true; 91 uv-check.enable = true; 92 uv-lock.enable = true; 93 isort.enable = true; 94 mypy = { 95 enable = true; 96 settings = { 97 binPath = "${config.devenv.root}/.devenv/state/venv/bin/mypy"; 98 }; 99 }; 100 biome.enable = true; 101 nil.enable = true; 102 commitizen.enable = true; 103 }; 104 105 # See full reference at https://devenv.sh/reference/options/ 106 }