Skip to content

Commit

Permalink
Merge pull request #511 from nix-community/joerg-ci
Browse files Browse the repository at this point in the history
replace nixpkgs-fmt with nixfmt-rfc-style
  • Loading branch information
Mic92 authored Aug 15, 2024
2 parents 104a507 + 5f8bbf7 commit cff4f3c
Show file tree
Hide file tree
Showing 15 changed files with 147 additions and 111 deletions.
3 changes: 2 additions & 1 deletion .envrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# shellcheck shell=bash
strict_env
source ./direnvrc
watch_file direnvrc *.nix
watch_file direnvrc ./*.nix
use flake
19 changes: 9 additions & 10 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,16 @@ jobs:
tests:
strategy:
matrix:
os: [ ubuntu-latest ]
os: [ubuntu-latest]
# FIXME macos garbage currently collect also nix-shell that runs the test
#os: [ ubuntu-latest, macos-latest ]
variants: [ stable, latest, bash4 ]
variants: [stable, latest, bash4]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@V27
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
extra_nix_config: |
experimental-features = nix-command flakes
- run:
"nix run --accept-flake-config .#test-runner-${{ matrix.variants }}"
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@V27
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
extra_nix_config: |
experimental-features = nix-command flakes
- run: "nix run --accept-flake-config .#test-runner-${{ matrix.variants }}"
2 changes: 1 addition & 1 deletion .github/workflows/update-flake-lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@ jobs:
```
{{ env.GIT_COMMIT_MESSAGE }}
```
pr-labels: | # Labels to be set on the PR
pr-labels: | # Labels to be set on the PR
merge-queue
13 changes: 11 additions & 2 deletions default.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
{ resholve, lib, coreutils, direnv, nix }:
{
resholve,
lib,
coreutils,
direnv,
nix,
}:

# resholve does not yet support `finalAttrs` call pattern hence `rec`
# https://github.com/abathur/resholve/issues/107
Expand All @@ -24,7 +30,10 @@ resholve.mkDerivation rec {
default = {
scripts = [ "share/${pname}/direnvrc" ];
interpreter = "none";
inputs = [ coreutils nix ];
inputs = [
coreutils
nix
];
fake = {
builtin = [
"PATH_add"
Expand Down
12 changes: 6 additions & 6 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

63 changes: 36 additions & 27 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
description = "A faster, persistent implementation of `direnv`'s `use_nix`, to replace the built-in one.";

nixConfig.extra-substituters = [ "https://cache.thalheim.io" ];
nixConfig.extra-trusted-public-keys = [ "cache.thalheim.io-1:R7msbosLEZKrxk/lKxf9BTjOOH7Ax3H0Qj0/6wiHOgc=" ];
nixConfig.extra-trusted-public-keys = [
"cache.thalheim.io-1:R7msbosLEZKrxk/lKxf9BTjOOH7Ax3H0Qj0/6wiHOgc="
];

inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
Expand All @@ -16,9 +18,11 @@
};
};

outputs = inputs @ { flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; }
({ lib, ... }: {
outputs =
inputs@{ flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; } (
{ lib, ... }:
{
imports = [
./treefmt.nix
./pkgs/bash4/flake-module.nix
Expand All @@ -30,37 +34,42 @@
"x86_64-darwin"
"aarch64-darwin"
];
perSystem = { config, pkgs, self', ... }: {
packages = {
nix-direnv = pkgs.callPackage ./default.nix { };
default = config.packages.nix-direnv;
test-runner-stable = pkgs.callPackage ./test-runner.nix {
nixVersion = "stable";
perSystem =
{
config,
pkgs,
self',
...
}:
{
packages = {
nix-direnv = pkgs.callPackage ./default.nix { };
default = config.packages.nix-direnv;
test-runner-stable = pkgs.callPackage ./test-runner.nix { nixVersion = "stable"; };
test-runner-latest = pkgs.callPackage ./test-runner.nix { nixVersion = "latest"; };
};
test-runner-latest = pkgs.callPackage ./test-runner.nix {
nixVersion = "latest";

devShells.default = pkgs.callPackage ./shell.nix {
packages = [
config.treefmt.build.wrapper
pkgs.shellcheck
];
};
};

devShells.default = pkgs.callPackage ./shell.nix {
packages = [ config.treefmt.build.wrapper pkgs.shellcheck ];
checks =
let
packages = lib.mapAttrs' (n: lib.nameValuePair "package-${n}") self'.packages;
devShells = lib.mapAttrs' (n: lib.nameValuePair "devShell-${n}") self'.devShells;
in
packages // devShells;
};

checks =
let
packages = lib.mapAttrs' (n: lib.nameValuePair "package-${n}") self'.packages;
devShells = lib.mapAttrs' (n: lib.nameValuePair "devShell-${n}") self'.devShells;
in
packages // devShells;
};
flake = {
overlays.default = final: _prev: {
nix-direnv = final.callPackage ./default.nix { };
};
overlays.default = final: _prev: { nix-direnv = final.callPackage ./default.nix { }; };
templates.default = {
path = ./templates/flake;
description = "nix flake new -t github:Mic92/nix-direnv .";
};
};
});
}
);
}
11 changes: 7 additions & 4 deletions pkgs/bash4/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ bash.overrideAttrs (_old: {
};

# generated with update-patch-set.sh from nixpkgs/pkgs/shells/bash
patches = import ./bash-4.4-patches.nix (nr: sha256: fetchurl {
url = "mirror://gnu/bash/bash-4.4-patches/bash44-${nr}";
inherit sha256;
});
patches = import ./bash-4.4-patches.nix (
nr: sha256:
fetchurl {
url = "mirror://gnu/bash/bash-4.4-patches/bash44-${nr}";
inherit sha256;
}
);
})
15 changes: 8 additions & 7 deletions pkgs/bash4/flake-module.nix
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
{ self, withSystem, ... }: {
flake.packages.x86_64-linux = withSystem "x86_64-linux"
({ pkgs, ... }: {
{ self, withSystem, ... }:
{
flake.packages.x86_64-linux = withSystem "x86_64-linux" (
{ pkgs, ... }:
{
bash4 = pkgs.callPackage ./. { };
direnv-bash4 = pkgs.direnv.override {
bash = self.packages.x86_64-linux.bash4;
};
direnv-bash4 = pkgs.direnv.override { bash = self.packages.x86_64-linux.bash4; };
test-runner-bash4 = pkgs.callPackage ../../test-runner.nix {
nixVersion = "stable";
direnv = self.packages.x86_64-linux.direnv-bash4;
};
});
}
);
}
5 changes: 4 additions & 1 deletion shell.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{ pkgs ? import <nixpkgs> { }, packages ? [ ] }:
{
pkgs ? import <nixpkgs> { },
packages ? [ ],
}:

with pkgs;
mkShell {
Expand Down
3 changes: 2 additions & 1 deletion templates/flake/.envrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# shellcheck shell=bash
if ! has nix_direnv_version || ! nix_direnv_version 3.0.5; then
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.5/direnvrc" "sha256-RuwIS+QKFj/T9M2TFXScjBsLR6V3A17YVoEW/Q6AZ1w="
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.5/direnvrc" "sha256-RuwIS+QKFj/T9M2TFXScjBsLR6V3A17YVoEW/Q6AZ1w="
fi
use flake
13 changes: 7 additions & 6 deletions templates/flake/flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
inputs.flake-utils.url = "github:numtide/flake-utils";

outputs = { nixpkgs, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
outputs =
{ nixpkgs, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
devShells.default = pkgs.mkShell {
packages = [ pkgs.bashInteractive ];
};
});
devShells.default = pkgs.mkShell { packages = [ pkgs.bashInteractive ]; };
}
);
}
26 changes: 17 additions & 9 deletions test-runner.nix
Original file line number Diff line number Diff line change
@@ -1,15 +1,23 @@
{ writeShellScriptBin
, direnv
, python3
, lib
, coreutils
, gnugrep
, nixVersions
, nixVersion
{
writeShellScriptBin,
direnv,
python3,
lib,
coreutils,
gnugrep,
nixVersions,
nixVersion,
}:
writeShellScriptBin "test-runner-${nixVersion}" ''
set -e
export PATH=${lib.makeBinPath [ direnv nixVersions.${nixVersion} coreutils gnugrep ]}
export PATH=${
lib.makeBinPath [
direnv
nixVersions.${nixVersion}
coreutils
gnugrep
]
}
echo run unittest
${lib.getExe' python3.pkgs.pytest "pytest"} .
Expand Down
7 changes: 3 additions & 4 deletions tests/testenv/flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@
inputs.flake-utils.url = "github:numtide/flake-utils";

# deadnix: skip
outputs = { self, nixpkgs, flake-utils }:
outputs =
{ nixpkgs, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system: {
devShell = import ./shell.nix {
pkgs = nixpkgs.legacyPackages.${system};
};
devShell = import ./shell.nix { pkgs = nixpkgs.legacyPackages.${system}; };
});
}
13 changes: 8 additions & 5 deletions tests/testenv/shell.nix
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
{ pkgs ? import (builtins.getFlake (toString ./.)).inputs.nixpkgs { }
, someArg ? null
, shellHook ? ''
{
pkgs ? import (builtins.getFlake (toString ./.)).inputs.nixpkgs { },
someArg ? null,
shellHook ? ''
echo "Executing shellHook."
''
'',
}:
pkgs.mkShellNoCC {
inherit shellHook;

nativeBuildInputs = [ pkgs.hello ];
SHOULD_BE_SET = someArg;

passthru = { subshell = pkgs.mkShellNoCC { THIS_IS_A_SUBSHELL = "OK"; }; };
passthru = {
subshell = pkgs.mkShellNoCC { THIS_IS_A_SUBSHELL = "OK"; };
};
}
53 changes: 26 additions & 27 deletions treefmt.nix
Original file line number Diff line number Diff line change
@@ -1,33 +1,32 @@
{ inputs, ... }: {
imports = [
inputs.treefmt-nix.flakeModule
];
{ inputs, ... }:
{
imports = [ inputs.treefmt-nix.flakeModule ];

perSystem = {
treefmt = {
# Used to find the project root
projectRootFile = ".git/config";
perSystem =
{ pkgs, ... }:
{
treefmt = {
# Used to find the project root
projectRootFile = ".git/config";

programs = {
deadnix.enable = true;
deno.enable = true;
mypy.enable = true;
ruff.check = true;
ruff.format = true;
nixpkgs-fmt.enable = true;
shellcheck.enable = true;
shfmt.enable = true;
statix.enable = true;
};
programs = {
deadnix.enable = true;
deno.enable = true;
mypy.enable = true;
ruff.check = true;
ruff.format = true;
nixfmt.enable = true;
nixfmt.package = pkgs.nixfmt-rfc-style;
shellcheck.enable = true;
shfmt.enable = true;
statix.enable = true;
yamlfmt.enable = true;
};

settings.formatter =
let
shellIncludes = [ "*.sh" "direnvrc" ];
in
{
shellcheck.includes = shellIncludes;
shfmt.includes = shellIncludes;
settings.formatter = {
shellcheck.includes = [ "direnvrc" ];
shfmt.includes = [ "direnvrc" ];
};
};
};
};
}

0 comments on commit cff4f3c

Please sign in to comment.