Switch to alejandra for formatting
Use treefmt For context, see upstream PR: https://github.com/divnix/digga/pull/491
This commit is contained in:
parent
ab603a9708
commit
5ad5c9bae6
|
@ -1,13 +1,16 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
psCfg = config.pub-solar;
|
||||
cfg = config.pub-solar.core;
|
||||
in
|
||||
{
|
||||
in {
|
||||
environment = {
|
||||
systemPackages = with pkgs; [
|
||||
systemPackages = with pkgs;
|
||||
[
|
||||
# Core unix utility packages
|
||||
coreutils-full
|
||||
dnsutils
|
||||
|
@ -34,7 +37,6 @@ in
|
|||
croc
|
||||
jq
|
||||
]
|
||||
|
||||
++ lib.optionals (!cfg.lite) [
|
||||
mtr
|
||||
|
||||
|
@ -58,6 +60,7 @@ in
|
|||
exfat
|
||||
|
||||
# Nix specific utilities
|
||||
alejandra
|
||||
niv
|
||||
manix
|
||||
nix-index
|
||||
|
|
|
@ -1,25 +1,23 @@
|
|||
channels: final: prev: {
|
||||
|
||||
__dontExport = true; # overrides clutter up actual creations
|
||||
|
||||
inherit (channels.latest)
|
||||
inherit
|
||||
(channels.latest)
|
||||
cachix
|
||||
dhall
|
||||
discord
|
||||
element-desktop
|
||||
rage
|
||||
nix-index
|
||||
nixpkgs-fmt
|
||||
qutebrowser
|
||||
alejandra
|
||||
signal-desktop
|
||||
starship
|
||||
deploy-rs
|
||||
nix
|
||||
|
||||
tdesktop
|
||||
arduino
|
||||
arduino-cli
|
||||
|
||||
gurk-rs
|
||||
thunderbird
|
||||
swaynotificationcenter
|
||||
|
@ -32,15 +30,17 @@ channels: final: prev: {
|
|||
#inherit (channels.fork)
|
||||
# ;
|
||||
|
||||
haskellPackages = prev.haskellPackages.override
|
||||
haskellPackages =
|
||||
prev.haskellPackages.override
|
||||
(old: {
|
||||
overrides = prev.lib.composeExtensions (old.overrides or (_: _: { })) (hfinal: hprev:
|
||||
let version = prev.lib.replaceChars [ "." ] [ "" ] prev.ghc.version;
|
||||
in
|
||||
{
|
||||
overrides = prev.lib.composeExtensions (old.overrides or (_: _: {})) (hfinal: hprev: let
|
||||
version = prev.lib.replaceChars ["."] [""] prev.ghc.version;
|
||||
in {
|
||||
# same for haskell packages, matching ghc versions
|
||||
inherit (channels.latest.haskell.packages."ghc${version}")
|
||||
haskell-language-server;
|
||||
inherit
|
||||
(channels.latest.haskell.packages."ghc${version}")
|
||||
haskell-language-server
|
||||
;
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -1,14 +1,27 @@
|
|||
{ pkgs, extraModulesPath, inputs, lib, ... }:
|
||||
let
|
||||
|
||||
inherit (pkgs)
|
||||
{
|
||||
pkgs,
|
||||
extraModulesPath,
|
||||
inputs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit
|
||||
(pkgs)
|
||||
agenix
|
||||
cachix
|
||||
editorconfig-checker
|
||||
mdbook
|
||||
nix
|
||||
nixpkgs-fmt
|
||||
alejandra
|
||||
nvfetcher
|
||||
shellcheck
|
||||
shfmt
|
||||
treefmt
|
||||
;
|
||||
|
||||
inherit
|
||||
(pkgs.nodePackages)
|
||||
prettier
|
||||
;
|
||||
|
||||
hooks = import ./hooks;
|
||||
|
@ -17,9 +30,7 @@ let
|
|||
devos = pkgWithCategory "devos";
|
||||
linter = pkgWithCategory "linter";
|
||||
docs = pkgWithCategory "docs";
|
||||
|
||||
in
|
||||
{
|
||||
in {
|
||||
_file = toString ./.;
|
||||
|
||||
imports = ["${extraModulesPath}/git/hooks.nix"];
|
||||
|
@ -43,7 +54,8 @@ in
|
|||
unset _PATH
|
||||
'');
|
||||
|
||||
commands = with pkgs; [
|
||||
commands = with pkgs;
|
||||
[
|
||||
(devos nix)
|
||||
(devos agenix)
|
||||
{
|
||||
|
@ -52,8 +64,12 @@ in
|
|||
help = pkgs.nvfetcher.meta.description;
|
||||
command = "cd $PRJ_ROOT/pkgs; ${pkgs.nvfetcher}/bin/nvfetcher -c ./sources.toml $@";
|
||||
}
|
||||
(linter nixpkgs-fmt)
|
||||
(linter alejandra)
|
||||
(linter editorconfig-checker)
|
||||
(linter nodePackages.prettier)
|
||||
(linter shfmt)
|
||||
(linter shellcheck)
|
||||
(linter treefmt)
|
||||
|
||||
(docs mdbook)
|
||||
]
|
||||
|
@ -63,6 +79,5 @@ in
|
|||
++ lib.optionals (pkgs.stdenv.hostPlatform.isLinux && !pkgs.stdenv.buildPlatform.isDarwin) [
|
||||
(devos inputs.nixos-generators.defaultPackage.${pkgs.system})
|
||||
(devos deploy-rs)
|
||||
]
|
||||
;
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,43 +1,28 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1; then
|
||||
against=HEAD
|
||||
else
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=$(git hash-object -t tree /dev/null)
|
||||
against=$(${git}/bin/git hash-object -t tree /dev/null)
|
||||
fi
|
||||
|
||||
diff="git diff-index --name-only --cached $against --diff-filter d"
|
||||
|
||||
mapfile -t nix_files < <($diff -- '*.nix')
|
||||
mapfile -t all_files < <($diff)
|
||||
all_files=($($diff))
|
||||
|
||||
# Format staged nix files
|
||||
if (( ${#nix_files[@]} != 0 )); then
|
||||
# Stash only unstaged changes, keeping staged changes
|
||||
old_stash=$(git rev-parse --quiet --verify refs/stash)
|
||||
git stash push --quiet --keep-index -m 'Unstaged changes before pre-commit hook'
|
||||
new_stash=$(git rev-parse --quiet --verify refs/stash)
|
||||
|
||||
# Format staged changes
|
||||
nixpkgs-fmt "${nix_files[@]}" \
|
||||
&& git add "${nix_files[@]}"
|
||||
|
||||
# If unstaged changes were stashed re-apply to working tree
|
||||
if [ "$old_stash" != "$new_stash" ]; then
|
||||
git stash pop --quiet
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check editorconfig
|
||||
# Format staged files.
|
||||
if ((${#all_files[@]} != 0)); then
|
||||
editorconfig-checker -- "${all_files[@]}"
|
||||
treefmt "${all_files[@]}" &&
|
||||
git add "${all_files[@]}"
|
||||
fi
|
||||
|
||||
if [[ $? != '0' ]]; then
|
||||
# check editorconfig
|
||||
if ((${#all_files[@]} != 0)); then
|
||||
if ! editorconfig-checker -- "${all_files[@]}"; then
|
||||
printf "%b\n" \
|
||||
"\nCode is not aligned with .editorconfig" \
|
||||
"Review the output and commit your fixes" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
|
22
treefmt.toml
Normal file
22
treefmt.toml
Normal file
|
@ -0,0 +1,22 @@
|
|||
[formatter.nix]
|
||||
command = "alejandra"
|
||||
includes = ["*.nix"]
|
||||
|
||||
[formatter.prettier]
|
||||
command = "prettier"
|
||||
options = ["--write"]
|
||||
includes = [
|
||||
"*.json",
|
||||
"*.yaml",
|
||||
"*.md",
|
||||
]
|
||||
|
||||
[formatter.shell]
|
||||
command = "shfmt"
|
||||
options = [
|
||||
"-s",
|
||||
"-w",
|
||||
"-i",
|
||||
"2",
|
||||
]
|
||||
includes = ["*.sh"]
|
Loading…
Reference in a new issue