A fork of attic a self-hostable Nix Binary Cache server
at main 114 lines 2.4 kB view raw
1# Development shells 2 3toplevel @ { lib, flake-parts-lib, ... }: 4let 5 inherit (lib) 6 mkOption 7 types 8 ; 9 inherit (flake-parts-lib) 10 mkPerSystemOption 11 ; 12in 13{ 14 options = { 15 perSystem = mkPerSystemOption { 16 options.attic.devshell = { 17 packageSets = mkOption { 18 type = types.attrsOf (types.listOf types.package); 19 default = {}; 20 }; 21 extraPackages = mkOption { 22 type = types.listOf types.package; 23 default = []; 24 }; 25 extraArgs = mkOption { 26 type = types.attrsOf types.unspecified; 27 default = {}; 28 }; 29 }; 30 }; 31 }; 32 33 config = { 34 perSystem = { self', pkgs, config, ... }: let 35 cfg = config.attic.devshell; 36 in { 37 attic.devshell.packageSets = with pkgs; { 38 rustc = lib.optionals (config.attic.toolchain == null) [ 39 rustc 40 ]; 41 42 rust = [ 43 cargo-audit 44 cargo-expand 45 cargo-outdated 46 cargo-edit 47 cargo-udeps 48 tokio-console 49 ]; 50 51 linters = [ 52 clippy 53 rustfmt 54 55 editorconfig-checker 56 ]; 57 58 utils = [ 59 jq 60 just 61 ]; 62 63 ops = [ 64 postgresql 65 sqlite-interactive 66 67 skopeo 68 manifest-tool 69 ]; 70 71 bench = [ 72 wrk 73 ] ++ lib.optionals pkgs.stdenv.isLinux [ 74 linuxPackages.perf 75 ]; 76 77 wasm = [ 78 llvmPackages_latest.bintools 79 worker-build wasm-pack wasm-bindgen-cli 80 ]; 81 }; 82 83 devShells.default = pkgs.mkShell (lib.recursiveUpdate { 84 inputsFrom = [ 85 self'.packages.attic 86 self'.packages.book 87 ]; 88 89 packages = lib.flatten (lib.attrValues cfg.packageSets); 90 91 env = { 92 ATTIC_DISTRIBUTOR = toplevel.config.attic.distributor; 93 94 RUST_SRC_PATH = pkgs.rustPlatform.rustLibSrc; 95 96 NIX_PATH = "nixpkgs=${pkgs.path}"; 97 98 # Used by `just with-nix` to build/test with alternative Nix versions. 99 NIX_VERSIONS = config.attic.nix-versions.manifestFile; 100 }; 101 } cfg.extraArgs); 102 103 devShells.demo = pkgs.mkShell { 104 packages = [ self'.packages.default ]; 105 106 shellHook = '' 107 >&2 echo 108 >&2 echo '🚀 Run `atticd` to get started!' 109 >&2 echo 110 ''; 111 }; 112 }; 113 }; 114}