1
0
Fork 0
mirror of https://github.com/zhaofengli/attic.git synced 2024-12-14 11:57:30 +00:00

flake: Add attic.nix-versions

This commit is contained in:
Zhaofeng Li 2024-08-30 12:32:10 -04:00
parent 3ecea8d07f
commit 09038b7663
2 changed files with 71 additions and 0 deletions

52
flake/nix-versions.nix Normal file
View file

@ -0,0 +1,52 @@
{ lib, flake-parts-lib, ... }:
let
inherit (lib)
mkOption
types
;
inherit (flake-parts-lib)
mkPerSystemOption
;
in
{
options = {
perSystem = mkPerSystemOption {
options.attic.nix-versions = {
versions = mkOption {
type = types.attrsOf types.package;
default = {};
};
manifestFile = mkOption {
type = types.package;
};
};
};
};
config = {
perSystem = { self', pkgs, config, ... }: let
cfg = config.attic.nix-versions;
in {
attic.nix-versions = {
versions = {
default = pkgs.nix;
"2.20" = pkgs.nixVersions.nix_2_20;
"2.24" = pkgs.nixVersions.nix_2_24;
};
manifestFile = let
manifest = lib.mapAttrs (_: nix: {
inherit nix;
shellHook = ''
export NIX_INCLUDE_PATH="${lib.getDev nix}/include"
export NIX_CFLAGS_COMPILE="-isystem $NIX_INCLUDE_PATH $NIX_CFLAGS_COMPILE"
export NIX_LDFLAGS="-L${nix}/lib $NIX_LDFLAGS"
export PKG_CONFIG_PATH="${lib.getDev nix}/lib/pkgconfig:$PKG_CONFIG_PATH"
export PATH="${lib.getBin nix}/bin:$PATH"
'';
}) cfg.versions;
in pkgs.writeText "nix-versions.json" (builtins.toJSON manifest);
};
};
};
}

19
justfile Normal file
View file

@ -0,0 +1,19 @@
set positional-arguments
here := env_var_or_default("JUST_INVOCATION_DIR", invocation_directory())
base := `pwd`
#@echo "here: {{ here }}"
#@echo "base: {{ base }}"
# List available targets
list:
@just --list --unsorted
# Run a command with an alternative Nix version
with-nix version *command:
set -e; \
hook="$(jq -e -r '.[$version].shellHook' --arg version "{{ version }}" < "$NIX_VERSIONS" || (>&2 echo "Version {{ version }} doesn't exist"; exit 1))"; \
eval "$hook"; \
CARGO_TARGET_DIR="{{ base }}/target/nix-{{ version }}" \
{{ command }}