move flake-parts into pkgs or toplevel
All checks were successful
build / test (push) Successful in 8s
All checks were successful
build / test (push) Successful in 8s
This commit is contained in:
parent
5ac5e32214
commit
b8fd28af2f
|
@ -1,11 +0,0 @@
|
||||||
# export some of our flake moduels for re-use in other projects
|
|
||||||
{ lib
|
|
||||||
, self
|
|
||||||
, ...
|
|
||||||
}: {
|
|
||||||
flake.modules.flake-parts = {
|
|
||||||
writers = ./writers;
|
|
||||||
};
|
|
||||||
flake.nixosModules = lib.mapAttrs (_: nix: { imports = [ nix ]; }) (self.lib.findNixFiles ../nixosModules);
|
|
||||||
flake.clanModules = lib.mapAttrs (_: nix: { imports = [ nix ]; }) (self.lib.findNixFiles ../clanModules);
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
{ flake-parts-lib, ... }: {
|
|
||||||
options.perSystem = flake-parts-lib.mkPerSystemOption (
|
|
||||||
{ config
|
|
||||||
, lib
|
|
||||||
, pkgs
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
writers = pkgs.callPackage ./writers.nix { };
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.writers = {
|
|
||||||
writePureShellScript = lib.mkOption {
|
|
||||||
type = lib.types.functionTo (lib.types.functionTo lib.types.package);
|
|
||||||
description = ''
|
|
||||||
Create a script that runs in a `pure` environment, in the sense that:
|
|
||||||
- the behavior is similar to `nix-shell --pure`
|
|
||||||
- `PATH` only contains exactly the packages passed via the `PATH` arg
|
|
||||||
- `NIX_PATH` is set to the path of the current `pkgs`
|
|
||||||
- `TMPDIR` is set up and cleaned up even if the script fails
|
|
||||||
- out, if set, is kept as-is
|
|
||||||
- all environment variables are unset, except:
|
|
||||||
- the ones listed in `keepVars` defined in ./default.nix
|
|
||||||
- the ones listed via the `KEEP_VARS` variable
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
writePureShellScriptBin = lib.mkOption {
|
|
||||||
type = lib.types.functionTo (lib.types.functionTo (lib.types.functionTo lib.types.package));
|
|
||||||
description = ''
|
|
||||||
Creates a script in a `bin/` directory in the output; suitable for use with `lib.makeBinPath`, etc.
|
|
||||||
See {option}`writers.writePureShellScript`
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config.writers = {
|
|
||||||
inherit
|
|
||||||
(writers)
|
|
||||||
writePureShellScript
|
|
||||||
writePureShellScriptBin
|
|
||||||
;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
|
@ -1,89 +0,0 @@
|
||||||
{ lib
|
|
||||||
, bash
|
|
||||||
, coreutils
|
|
||||||
, gawk
|
|
||||||
, path
|
|
||||||
, # nixpkgs path
|
|
||||||
writeScript
|
|
||||||
, writeScriptBin
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
# Docs at modules/flake-parts/writers.nix
|
|
||||||
writePureShellScript = PATH: script:
|
|
||||||
writeScript "script.sh" (mkScript PATH script);
|
|
||||||
|
|
||||||
# Docs at modules/flake-parts/writers.nix
|
|
||||||
writePureShellScriptBin = binName: PATH: script:
|
|
||||||
writeScriptBin binName (mkScript PATH script);
|
|
||||||
|
|
||||||
mkScript = PATH: scriptText: ''
|
|
||||||
#!${bash}/bin/bash
|
|
||||||
set -Eeuo pipefail
|
|
||||||
|
|
||||||
export PATH="${lib.makeBinPath PATH}"
|
|
||||||
export NIX_PATH=nixpkgs=${path}
|
|
||||||
|
|
||||||
export TMPDIR=$(${coreutils}/bin/mktemp -d)
|
|
||||||
|
|
||||||
trap "${coreutils}/bin/chmod -R +w '$TMPDIR'; ${coreutils}/bin/rm -rf '$TMPDIR'" EXIT
|
|
||||||
|
|
||||||
if [ -z "''${IMPURE:-}" ]; then
|
|
||||||
${cleanEnv}
|
|
||||||
fi
|
|
||||||
|
|
||||||
${scriptText}
|
|
||||||
'';
|
|
||||||
|
|
||||||
# list taken from nix source: src/nix-build/nix-build.cc
|
|
||||||
keepVars = lib.concatStringsSep " " [
|
|
||||||
"HOME"
|
|
||||||
"XDG_RUNTIME_DIR"
|
|
||||||
"USER"
|
|
||||||
"LOGNAME"
|
|
||||||
"DISPLAY"
|
|
||||||
"WAYLAND_DISPLAY"
|
|
||||||
"WAYLAND_SOCKET"
|
|
||||||
"PATH"
|
|
||||||
"TERM"
|
|
||||||
"IN_NIX_SHELL"
|
|
||||||
"NIX_SHELL_PRESERVE_PROMPT"
|
|
||||||
"TZ"
|
|
||||||
"PAGER"
|
|
||||||
"NIX_BUILD_SHELL"
|
|
||||||
"SHLVL"
|
|
||||||
"http_proxy"
|
|
||||||
"https_proxy"
|
|
||||||
"ftp_proxy"
|
|
||||||
"all_proxy"
|
|
||||||
"no_proxy"
|
|
||||||
|
|
||||||
# We want to keep our own variables as well
|
|
||||||
"out"
|
|
||||||
"IMPURE"
|
|
||||||
"KEEP_VARS"
|
|
||||||
"NIX_PATH"
|
|
||||||
"TMPDIR"
|
|
||||||
];
|
|
||||||
|
|
||||||
cleanEnv = ''
|
|
||||||
|
|
||||||
KEEP_VARS="''${KEEP_VARS:-}"
|
|
||||||
|
|
||||||
unsetVars=$(
|
|
||||||
${coreutils}/bin/comm \
|
|
||||||
<(${gawk}/bin/awk 'BEGIN{for(v in ENVIRON) print v}' | ${coreutils}/bin/cut -d = -f 1 | ${coreutils}/bin/sort) \
|
|
||||||
<(echo "${keepVars} $KEEP_VARS" | ${coreutils}/bin/tr " " "\n" | ${coreutils}/bin/sort) \
|
|
||||||
-2 \
|
|
||||||
-3
|
|
||||||
)
|
|
||||||
|
|
||||||
unset $unsetVars
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit
|
|
||||||
writePureShellScript
|
|
||||||
writePureShellScriptBin
|
|
||||||
;
|
|
||||||
}
|
|
16
flake.nix
16
flake.nix
|
@ -20,18 +20,20 @@
|
||||||
"aarch64-linux"
|
"aarch64-linux"
|
||||||
];
|
];
|
||||||
imports = [
|
imports = [
|
||||||
./flake-parts/devShells
|
./devShell.nix
|
||||||
./flake-parts/formatting.nix
|
./formatter.nix
|
||||||
./flake-parts/merge-after-ci
|
|
||||||
./flake-parts/modules.nix
|
|
||||||
./flake-parts/installer.nix
|
|
||||||
./flake-parts/tea-create-pr
|
|
||||||
./flake-parts/writers
|
|
||||||
./templates/flake-module.nix
|
./templates/flake-module.nix
|
||||||
./templates/python-project/flake-module.nix
|
./templates/python-project/flake-module.nix
|
||||||
./pkgs/clan-cli/flake-module.nix
|
./pkgs/clan-cli/flake-module.nix
|
||||||
./pkgs/nix-unit/flake-module.nix
|
./pkgs/nix-unit/flake-module.nix
|
||||||
|
./pkgs/installer/flake-module.nix
|
||||||
|
./pkgs/tea-create-pr
|
||||||
|
./pkgs/merge-after-ci
|
||||||
./lib/flake-module.nix
|
./lib/flake-module.nix
|
||||||
|
({ self, lib, ... }: {
|
||||||
|
flake.nixosModules = lib.mapAttrs (_: nix: { imports = [ nix ]; }) (self.lib.findNixFiles ./nixosModules);
|
||||||
|
flake.clanModules = lib.mapAttrs (_: nix: { imports = [ nix ]; }) (self.lib.findNixFiles ./clanModules);
|
||||||
|
})
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,3 +38,4 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user