feat: introduce treefmt and fmt all
This commit is contained in:
parent
80250b0179
commit
27c6c4f9fa
237 changed files with 5440 additions and 5214 deletions
471
flake.nix
471
flake.nix
|
@ -43,10 +43,7 @@
|
|||
url = "github:nix-community/fenix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
crane = {
|
||||
url = "github:ipetkov/crane";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
crane.url = "github:ipetkov/crane";
|
||||
|
||||
sops-nix.url = "github:Mic92/sops-nix";
|
||||
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
@ -129,218 +126,276 @@
|
|||
url = "github:numtide/treefmt-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nixago.url = "github:jmgilman/nixago";
|
||||
nixago.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
outputs = inputs @ {
|
||||
self,
|
||||
flake-parts,
|
||||
nixpkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (nixpkgs) lib;
|
||||
outputs =
|
||||
inputs@{
|
||||
self,
|
||||
flake-parts,
|
||||
nixpkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (nixpkgs) lib;
|
||||
|
||||
systems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
];
|
||||
in
|
||||
flake-parts.lib.mkFlake {inherit inputs;}
|
||||
({withSystem, ...}: {
|
||||
flake.colmena =
|
||||
lib.lists.foldl (sum: cur: lib.attrsets.recursiveUpdate sum cur)
|
||||
{
|
||||
meta.nixpkgs = import inputs.nixpkgs.outPath {
|
||||
system = builtins.elemAt systems 0;
|
||||
};
|
||||
}
|
||||
# FIXME: this doesn't seem to work to apply overlays into a node's nixpkgs import
|
||||
# try this instead: https://github.com/zhaofengli/colmena/issues/60#issuecomment-1510496861
|
||||
(builtins.map
|
||||
(nodeName:
|
||||
import ./nix/os/devices/${nodeName} {
|
||||
inherit nodeName;
|
||||
repoFlake = self;
|
||||
repoFlakeWithSystem = withSystem;
|
||||
nodeFlake = self.inputs.get-flake ./nix/os/devices/${nodeName};
|
||||
}) [
|
||||
"steveej-t14"
|
||||
"steveej-x13s"
|
||||
"steveej-x13s-rmvbl"
|
||||
# "elias-e525"
|
||||
# "justyna-p300"
|
||||
|
||||
# "srv0-dmz0"
|
||||
# "router0-dmz0"
|
||||
"router0-ifog"
|
||||
"router0-hosthatch"
|
||||
|
||||
"sj-srv1"
|
||||
|
||||
"hstk0"
|
||||
]);
|
||||
|
||||
flake.lib = {
|
||||
inherit withSystem;
|
||||
};
|
||||
|
||||
# this makes nixos-anywhere work
|
||||
flake.nixosConfigurations = let
|
||||
colmenaHive = (inputs.colmena.lib.makeHive self.outputs.colmena).nodes;
|
||||
router0-dmz0 = (inputs.get-flake ./nix/os/devices/router0-dmz0).nixosConfigurations;
|
||||
in (
|
||||
colmenaHive
|
||||
// {
|
||||
router0-dmz0 = router0-dmz0.native;
|
||||
|
||||
# for now deploy directly with:
|
||||
# nixos-rebuild switch --flake .\#router0-dmz0_cross --build-host localhost --target-host root@192.168.10.1
|
||||
router0-dmz0_cross = router0-dmz0.cross;
|
||||
|
||||
steveej-x13s_cross = (inputs.get-flake ./nix/os/devices/steveej-x13s).nixosConfigurations.cross;
|
||||
steveej-x13s-rmvbl_cross = (inputs.get-flake ./nix/os/devices/steveej-x13s-rmvbl).nixosConfigurations.cross;
|
||||
}
|
||||
);
|
||||
|
||||
inherit systems;
|
||||
|
||||
perSystem = {
|
||||
self',
|
||||
inputs',
|
||||
system,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./nix/modules/flake-parts/perSystem/default.nix
|
||||
];
|
||||
|
||||
packages = let
|
||||
dcpj4110dw = pkgs.callPackage (self + /nix/pkgs/dcpj4110dw) {};
|
||||
|
||||
craneLibFn = (inputs.crane.mkLib inputs.nixpkgs.legacyPackages.${system}).overrideToolchain;
|
||||
|
||||
craneLib =
|
||||
craneLibFn
|
||||
inputs'.fenix.packages.stable.toolchain;
|
||||
|
||||
craneLibOfiPass =
|
||||
craneLibFn
|
||||
systems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
];
|
||||
in
|
||||
flake-parts.lib.mkFlake { inherit inputs; } (
|
||||
{ withSystem, ... }:
|
||||
{
|
||||
flake.colmena =
|
||||
lib.lists.foldl (sum: cur: lib.attrsets.recursiveUpdate sum cur)
|
||||
{ meta.nixpkgs = import inputs.nixpkgs.outPath { system = builtins.elemAt systems 0; }; }
|
||||
# FIXME: this doesn't seem to work to apply overlays into a node's nixpkgs import
|
||||
# try this instead: https://github.com/zhaofengli/colmena/issues/60#issuecomment-1510496861
|
||||
(
|
||||
inputs'.fenix.packages.stable.toolchain
|
||||
# .override {
|
||||
# date = "1.60.0";
|
||||
# }
|
||||
builtins.map
|
||||
(
|
||||
nodeName:
|
||||
import ./nix/os/devices/${nodeName} {
|
||||
inherit nodeName;
|
||||
repoFlake = self;
|
||||
repoFlakeWithSystem = withSystem;
|
||||
nodeFlake = self.inputs.get-flake ./nix/os/devices/${nodeName};
|
||||
}
|
||||
)
|
||||
[
|
||||
"steveej-t14"
|
||||
"steveej-x13s"
|
||||
"steveej-x13s-rmvbl"
|
||||
# "elias-e525"
|
||||
# "justyna-p300"
|
||||
|
||||
# "srv0-dmz0"
|
||||
# "router0-dmz0"
|
||||
"router0-ifog"
|
||||
"router0-hosthatch"
|
||||
|
||||
"sj-srv1"
|
||||
|
||||
"hstk0"
|
||||
]
|
||||
);
|
||||
in {
|
||||
dcpj4110dwDriver = dcpj4110dw.driver;
|
||||
dcpj4110dwCupswrapper = dcpj4110dw.cupswrapper;
|
||||
|
||||
inherit (inputs'.colmena.packages) colmena;
|
||||
|
||||
prs =
|
||||
pkgs.callPackage
|
||||
({
|
||||
pkgs,
|
||||
dbus,
|
||||
glib,
|
||||
gpgme,
|
||||
gtk3,
|
||||
libxcb,
|
||||
libxkbcommon,
|
||||
installShellFiles,
|
||||
pkg-config,
|
||||
python3,
|
||||
}:
|
||||
craneLib.buildPackage {
|
||||
pname = "prs";
|
||||
version = inputs.prs.shortRev;
|
||||
src = inputs.prs;
|
||||
nativeBuildInputs = [gpgme installShellFiles pkg-config python3];
|
||||
|
||||
buildInputs = [
|
||||
dbus
|
||||
glib
|
||||
gpgme
|
||||
gtk3
|
||||
libxcb
|
||||
libxkbcommon
|
||||
];
|
||||
|
||||
cargoExtraArgs = "--features backend-gpgme";
|
||||
|
||||
postInstall = ''
|
||||
for shell in bash fish zsh; do
|
||||
installShellCompletion --cmd prs --$shell <($out/bin/prs internal completions $shell --stdout)
|
||||
done
|
||||
'';
|
||||
})
|
||||
{};
|
||||
|
||||
nomad = inputs'.nixpkgs-unstable.legacyPackages.nomad_1_6;
|
||||
|
||||
ledger-live-desktop-wrapped = pkgs.writeShellScriptBin "ledger-live-desktop-wrapped" ''
|
||||
set -x
|
||||
pkill -9 wayland-proxy-v
|
||||
export NIXOS_OZONE_WL=""
|
||||
${pkgs.wayland-proxy-virtwl}/bin/wayland-proxy-virtwl \
|
||||
--wayland-display=wayland-3 \
|
||||
--xwayland-binary=${pkgs.xwayland}/bin/Xwayland \
|
||||
--x-display=3 \
|
||||
&
|
||||
# --x-unscale=3 \
|
||||
#--verbose \
|
||||
|
||||
export PROXYPID="$!"
|
||||
|
||||
trap "kill -9 \$PROXYPID" EXIT
|
||||
# trap "pkill -9 wayland-proxy-v" EXIT
|
||||
|
||||
env \
|
||||
WAYLAND_DISPLAY=wayland-3 \
|
||||
DISPLAY=:3 \
|
||||
ledger-live-desktop
|
||||
'';
|
||||
|
||||
syncthing-container-webui = pkgs.writeShellScriptBin "reverse-port-forward-syncthing-container" ''
|
||||
ssh root@${self.colmena.sj-vps-htz0.deployment.targetHost} -L 8385:syncthing.containers:8384
|
||||
'';
|
||||
|
||||
rperf = craneLib.buildPackage {
|
||||
src = inputs.rperf;
|
||||
nativeBuildInputs = [
|
||||
pkgs.pkg-config
|
||||
];
|
||||
buildInputs = [
|
||||
];
|
||||
};
|
||||
|
||||
x13s-bt-firmware = pkgs.runCommand "x13s-bt-firmware" {} ''
|
||||
mkdir -p $out/lib/firmware/qca
|
||||
cp -v ${self}/misc/x13s_bt_firmware/hpnv21g.b8c.crypt.fw $out/lib/firmware/qca/hpnv21.bin
|
||||
cp -v ${inputs.x13s-bt-firmware} $out/lib/firmware/qca//hpbtfw21.tlv
|
||||
'';
|
||||
|
||||
x13s-ath11k-firmware = pkgs.runCommand "x13s-ath11k-firmware-before" {} ''
|
||||
mkdir -p $out/lib/firmware/ath11k/WCN6855/hw2.1/
|
||||
cp -v ${inputs.ath11k-firmware}/WCN6855/hw2.1/{board-2,regdb}.bin $out/lib/firmware/ath11k/WCN6855/hw2.1/
|
||||
cp -v ${inputs.ath11k-firmware}/WCN6855/hw2.1/1.1/WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.41/{amss,m3}.bin $out/lib/firmware/ath11k/WCN6855/hw2.1/
|
||||
'';
|
||||
flake.lib = {
|
||||
inherit withSystem;
|
||||
};
|
||||
|
||||
formatter = inputs.treefmt-nix.formatter.${system};
|
||||
# this makes nixos-anywhere work
|
||||
flake.nixosConfigurations =
|
||||
let
|
||||
colmenaHive = (inputs.colmena.lib.makeHive self.outputs.colmena).nodes;
|
||||
router0-dmz0 = (inputs.get-flake ./nix/os/devices/router0-dmz0).nixosConfigurations;
|
||||
in
|
||||
colmenaHive
|
||||
// {
|
||||
router0-dmz0 = router0-dmz0.native;
|
||||
|
||||
devShells = let
|
||||
all = import ./nix/devShells.nix {
|
||||
inherit
|
||||
self
|
||||
self'
|
||||
inputs'
|
||||
pkgs
|
||||
;
|
||||
# for now deploy directly with:
|
||||
# nixos-rebuild switch --flake .\#router0-dmz0_cross --build-host localhost --target-host root@192.168.10.1
|
||||
router0-dmz0_cross = router0-dmz0.cross;
|
||||
|
||||
steveej-x13s_cross = (inputs.get-flake ./nix/os/devices/steveej-x13s).nixosConfigurations.cross;
|
||||
steveej-x13s-rmvbl_cross =
|
||||
(inputs.get-flake ./nix/os/devices/steveej-x13s-rmvbl).nixosConfigurations.cross;
|
||||
};
|
||||
in (all // {default = all.develop;});
|
||||
};
|
||||
});
|
||||
|
||||
inherit systems;
|
||||
|
||||
perSystem =
|
||||
{
|
||||
self',
|
||||
inputs',
|
||||
system,
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [ ./nix/modules/flake-parts/perSystem/default.nix ];
|
||||
|
||||
packages =
|
||||
let
|
||||
dcpj4110dw = pkgs.callPackage (self + /nix/pkgs/dcpj4110dw) { };
|
||||
|
||||
craneLibFn = (inputs.crane.mkLib inputs.nixpkgs.legacyPackages.${system}).overrideToolchain;
|
||||
|
||||
craneLib = craneLibFn inputs'.fenix.packages.stable.toolchain;
|
||||
in
|
||||
{
|
||||
dcpj4110dwDriver = dcpj4110dw.driver;
|
||||
dcpj4110dwCupswrapper = dcpj4110dw.cupswrapper;
|
||||
|
||||
inherit (inputs'.colmena.packages) colmena;
|
||||
|
||||
prs = pkgs.callPackage (
|
||||
{
|
||||
dbus,
|
||||
glib,
|
||||
gpgme,
|
||||
gtk3,
|
||||
libxcb,
|
||||
libxkbcommon,
|
||||
installShellFiles,
|
||||
pkg-config,
|
||||
python3,
|
||||
}:
|
||||
craneLib.buildPackage {
|
||||
pname = "prs";
|
||||
version = inputs.prs.shortRev;
|
||||
src = inputs.prs;
|
||||
nativeBuildInputs = [
|
||||
gpgme
|
||||
installShellFiles
|
||||
pkg-config
|
||||
python3
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
dbus
|
||||
glib
|
||||
gpgme
|
||||
gtk3
|
||||
libxcb
|
||||
libxkbcommon
|
||||
];
|
||||
|
||||
cargoExtraArgs = "--features backend-gpgme";
|
||||
|
||||
postInstall = ''
|
||||
for shell in bash fish zsh; do
|
||||
installShellCompletion --cmd prs --$shell <($out/bin/prs internal completions $shell --stdout)
|
||||
done
|
||||
'';
|
||||
}
|
||||
) { };
|
||||
|
||||
nomad = inputs'.nixpkgs-unstable.legacyPackages.nomad_1_6;
|
||||
|
||||
ledger-live-desktop-wrapped = pkgs.writeShellScriptBin "ledger-live-desktop-wrapped" ''
|
||||
set -x
|
||||
pkill -9 wayland-proxy-v
|
||||
export NIXOS_OZONE_WL=""
|
||||
${pkgs.wayland-proxy-virtwl}/bin/wayland-proxy-virtwl \
|
||||
--wayland-display=wayland-3 \
|
||||
--xwayland-binary=${pkgs.xwayland}/bin/Xwayland \
|
||||
--x-display=3 \
|
||||
&
|
||||
# --x-unscale=3 \
|
||||
#--verbose \
|
||||
|
||||
export PROXYPID="$!"
|
||||
|
||||
trap "kill -9 \$PROXYPID" EXIT
|
||||
# trap "pkill -9 wayland-proxy-v" EXIT
|
||||
|
||||
env \
|
||||
WAYLAND_DISPLAY=wayland-3 \
|
||||
DISPLAY=:3 \
|
||||
ledger-live-desktop
|
||||
'';
|
||||
|
||||
syncthing-container-webui = pkgs.writeShellScriptBin "reverse-port-forward-syncthing-container" ''
|
||||
ssh root@${self.colmena.sj-vps-htz0.deployment.targetHost} -L 8385:syncthing.containers:8384
|
||||
'';
|
||||
|
||||
rperf = craneLib.buildPackage {
|
||||
src = inputs.rperf;
|
||||
nativeBuildInputs = [ pkgs.pkg-config ];
|
||||
buildInputs = [ ];
|
||||
};
|
||||
|
||||
x13s-bt-firmware = pkgs.runCommand "x13s-bt-firmware" { } ''
|
||||
mkdir -p $out/lib/firmware/qca
|
||||
cp -v ${self}/misc/x13s_bt_firmware/hpnv21g.b8c.crypt.fw $out/lib/firmware/qca/hpnv21.bin
|
||||
cp -v ${inputs.x13s-bt-firmware} $out/lib/firmware/qca//hpbtfw21.tlv
|
||||
'';
|
||||
|
||||
x13s-ath11k-firmware = pkgs.runCommand "x13s-ath11k-firmware-before" { } ''
|
||||
mkdir -p $out/lib/firmware/ath11k/WCN6855/hw2.1/
|
||||
cp -v ${inputs.ath11k-firmware}/WCN6855/hw2.1/{board-2,regdb}.bin $out/lib/firmware/ath11k/WCN6855/hw2.1/
|
||||
cp -v ${inputs.ath11k-firmware}/WCN6855/hw2.1/1.1/WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.41/{amss,m3}.bin $out/lib/firmware/ath11k/WCN6855/hw2.1/
|
||||
'';
|
||||
};
|
||||
|
||||
formatter =
|
||||
let
|
||||
settingsNix = {
|
||||
projectRootFile = ".git/config";
|
||||
|
||||
package = inputs'.nixpkgs-unstable.legacyPackages.treefmt2;
|
||||
|
||||
programs = {
|
||||
nixfmt.enable = true;
|
||||
deadnix.enable = true;
|
||||
statix.enable = true;
|
||||
|
||||
shfmt.enable = true;
|
||||
shellcheck.enable = true;
|
||||
|
||||
prettier.enable = true;
|
||||
} // pkgs.lib.optionalAttrs (pkgs.system != "riscv64-linux") { shellcheck.enable = true; };
|
||||
|
||||
settings = {
|
||||
global.excludes = [
|
||||
"LICENSE"
|
||||
"secrets/"
|
||||
".git-crypt/"
|
||||
|
||||
# unsupported extensions
|
||||
"*.{enc,gif,png,svg,tape,mts,lock,mod,sum,toml,env,envrc,gitignore}"
|
||||
];
|
||||
|
||||
formatter = {
|
||||
deadnix = {
|
||||
priority = 1;
|
||||
};
|
||||
|
||||
nixfmt = {
|
||||
priority = 2;
|
||||
};
|
||||
|
||||
statix = {
|
||||
priority = 3;
|
||||
};
|
||||
|
||||
prettier = {
|
||||
options = [
|
||||
"--tab-width"
|
||||
"2"
|
||||
];
|
||||
includes = [ "*.{css,html,js,json,jsx,md,mdx,scss,ts,yaml}" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
eval = inputs.treefmt-nix.lib.evalModule pkgs settingsNix;
|
||||
in
|
||||
eval.config.build.wrapper.overrideAttrs (_: {
|
||||
passthru = {
|
||||
inherit (eval.config) package settings;
|
||||
};
|
||||
});
|
||||
|
||||
devShells =
|
||||
let
|
||||
all = import ./nix/devShells.nix {
|
||||
inherit
|
||||
self
|
||||
self'
|
||||
inputs'
|
||||
pkgs
|
||||
;
|
||||
};
|
||||
in
|
||||
all // { default = all.develop; };
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue