This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

meta: add override mechanism (#27)

now if you run `just eject linux`, you can edit the kernel source code
in overrides/linux/src, then run `just build linux run` to incrementally
rebuild the kernel then boot the system.

+95 -22
+2 -1
.gitignore
··· 1 1 .* 2 2 !.gitignore 3 3 !.github 4 - result* 4 + result* 5 + /overrides
+28 -1
all-packages.nix
··· 5 5 }: 6 6 7 7 let 8 + inherit (lib) filterAttrs pipe; 9 + inherit (builtins) mapAttrs readDir; 8 10 pkgs = 9 11 { 10 12 inherit lib currentSystem; ··· 15 17 // lib.packagesFromDirectoryRecursive { 16 18 callPackage = lib.callPackageWith (pkgs // hostpkgs); 17 19 directory = ./packages; 18 - }; 20 + } 21 + // ( 22 + let 23 + isImpure = builtins ? currentSystem; 24 + overrides = builtins.getEnv "DISTRO_OVERRIDES"; 25 + in 26 + if isImpure && overrides != "" then 27 + pipe overrides [ 28 + readDir 29 + (filterAttrs (_name: type: type == "directory")) 30 + (mapAttrs (name: _: /${overrides}/${name}/outputs)) 31 + (mapAttrs ( 32 + name: dir: 33 + let 34 + pkg = (mapAttrs (output: _: /${dir}/${output}) (readDir dir)) // { 35 + type = "derivation"; 36 + src = /${overrides}/${name}/src; 37 + outPath = pkg.out; 38 + }; 39 + in 40 + pkg 41 + )) 42 + ] 43 + else 44 + { } 45 + ); 19 46 in 20 47 pkgs
-9
flake/apps.nix
··· 5 5 { 6 6 pkgs, 7 7 self', 8 - config, 9 8 ... 10 9 }: 11 10 let ··· 22 21 --header Cross-Origin-Embedder-Policy:require-corp \ 23 22 --header Cross-Origin-Resource-Policy:cross-origin "$@" 24 23 ''; 25 - 26 - make-shells.default.packages = [ 27 - (pkgs.runCommand "dev-commands" { } '' 28 - mkdir -p $out/bin 29 - ln -s ${config.apps.runner.program} $out/bin/run 30 - ln -s ${config.apps.serve.program} $out/bin/serve 31 - '') 32 - ]; 33 24 }; 34 25 }
+1
flake/format.nix
··· 14 14 # keep-sorted start 15 15 actionlint.enable = true; 16 16 deadnix.enable = true; 17 + just.enable = true; 17 18 keep-sorted.enable = true; 18 19 nixfmt.enable = true; 19 20 shellcheck.enable = true;
+3
flake/shell.nix
··· 7 7 { 8 8 make-shells.default = { 9 9 stdenv = pkgs.stdenvNoCC; 10 + packages = with pkgs; [ 11 + just 12 + ]; 10 13 }; 11 14 12 15 make-shells.ci = {
+43
justfile
··· 1 + _help: 2 + @just --list 3 + 4 + eject pkg: 5 + #!/usr/bin/env bash 6 + set -e 7 + if [ -d "overrides/{{ pkg }}" ]; then 8 + echo "override for {{ pkg }} already exists" 9 + exit 1 10 + fi 11 + 12 + src=$(nix build .#{{ pkg }}.src --print-out-paths) 13 + mkdir -p overrides/{{ pkg }} 14 + cp -r $src overrides/{{ pkg }}/src 15 + chmod -R u+w overrides/{{ pkg }}/src 16 + echo "override for {{ pkg }} created in overrides/{{ pkg }}" 17 + 18 + _nix cmd *args: 19 + DISTRO_OVERRIDES=$PWD/overrides exec nix {{ cmd }} --impure --print-build-logs {{ args }} 20 + 21 + build pkg: 22 + #!/usr/bin/env bash 23 + set -e 24 + if [ ! -d "overrides/{{ pkg }}" ]; then 25 + exec just _nix build .#{{ pkg }} 26 + fi 27 + 28 + redirects=() 29 + for package in $(ls overrides); do 30 + for output in $(ls overrides/$package/outputs); do 31 + redirects+=(--redirect .#$package.$output $PWD/overrides/$package/outputs/$output) 32 + done 33 + done 34 + 35 + cd overrides/{{ pkg }} 36 + rm -rf outputs 37 + mkdir outputs 38 + 39 + exec nix develop .#{{ pkg }} --build "${redirects[@]}" 40 + 41 + run *args: (_nix "run" ".#runner" args) 42 + 43 + serve *args: (_nix "run" ".#serve" args)
+18 -2
packages/run/package.nix
··· 23 23 '' 24 24 if [[ -v stdenv ]]; then 25 25 source $stdenv/setup 26 - build 26 + buildPhase 27 27 else 28 28 source $commandPath 29 29 fi ··· 57 57 fi 58 58 59 59 eval "_build() { $(cat $commandPath); }" 60 - build() { 60 + buildPhase() { 61 + if [[ "$name" =~ -env$ ]]; then 62 + name="${"$"}{name%-env}" 63 + if [ ! -d "overrides/$name/src" ]; then 64 + echo "error: no override found for $name" 65 + return 1 66 + fi 67 + cd overrides/$name/src 68 + unset src 69 + _build 70 + return 71 + fi 72 + 61 73 if [[ -v src ]]; then 62 74 cp -r $src src 63 75 cd src ··· 65 77 unset src 66 78 fi 67 79 _build 80 + } 81 + 82 + runHook() { 83 + "$1" 68 84 } 69 85 ''; 70 86 passAsFile = [ "setup" ];
-9
treefmt.nix
··· 1 - { 2 - projectRootFile = "flake.nix"; 3 - 4 - # keep-sorted start 5 - programs.actionlint.enable = true; 6 - programs.keep-sorted.enable = true; 7 - programs.nixfmt.enable = true; 8 - # keep-sorted end 9 - }