introduce treefmt-nix
This commit is contained in:
parent
2bc86a4912
commit
200063fcb1
4 changed files with 340 additions and 310 deletions
23
flake.lock
23
flake.lock
|
@ -843,7 +843,8 @@
|
||||||
"retiolum": "retiolum",
|
"retiolum": "retiolum",
|
||||||
"srvos": "srvos",
|
"srvos": "srvos",
|
||||||
"stylix": "stylix",
|
"stylix": "stylix",
|
||||||
"taskshell": "taskshell"
|
"taskshell": "taskshell",
|
||||||
|
"treefmt-nix": "treefmt-nix_3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sops-nix": {
|
"sops-nix": {
|
||||||
|
@ -1029,6 +1030,26 @@
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix_3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1724833132,
|
||||||
|
"narHash": "sha256-F4djBvyNRAXGusJiNYInqR6zIMI3rvlp6WiKwsRISos=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "3ffd842a5f50f435d3e603312eefa4790db46af5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
129
flake.nix
129
flake.nix
|
@ -58,6 +58,11 @@
|
||||||
|
|
||||||
srvos.url = "github:nix-community/srvos";
|
srvos.url = "github:nix-community/srvos";
|
||||||
|
|
||||||
|
treefmt-nix = {
|
||||||
|
url = "github:numtide/treefmt-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
landingpage = {
|
landingpage = {
|
||||||
#url = "git+file:///home/palo/dev/landingpage";
|
#url = "git+file:///home/palo/dev/landingpage";
|
||||||
url = "github:mrVanDalo/landingpage";
|
url = "github:mrVanDalo/landingpage";
|
||||||
|
@ -91,28 +96,30 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
inputs@{ self
|
inputs@{
|
||||||
, clan-core
|
self,
|
||||||
, clan-fact-generators
|
clan-core,
|
||||||
, flake-parts
|
clan-fact-generators,
|
||||||
, home-manager
|
flake-parts,
|
||||||
, home-manager-utils
|
home-manager,
|
||||||
, kmonad
|
home-manager-utils,
|
||||||
, landingpage
|
kmonad,
|
||||||
, nixos-anywhere
|
landingpage,
|
||||||
, nixos-hardware
|
nixos-anywhere,
|
||||||
, nixpkgs
|
nixos-hardware,
|
||||||
, nixpkgs-legacy_2211
|
nixpkgs,
|
||||||
, nixpkgs-legacy_2311
|
nixpkgs-legacy_2211,
|
||||||
, nixpkgs-legacy_2405
|
nixpkgs-legacy_2311,
|
||||||
, nixpkgs-unstable-small
|
nixpkgs-legacy_2405,
|
||||||
, permown
|
nixpkgs-unstable-small,
|
||||||
, polygon-art
|
permown,
|
||||||
, private_assets
|
polygon-art,
|
||||||
, retiolum
|
private_assets,
|
||||||
, srvos
|
retiolum,
|
||||||
, stylix
|
srvos,
|
||||||
, taskshell
|
stylix,
|
||||||
|
taskshell,
|
||||||
|
treefmt-nix,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
@ -165,7 +172,10 @@
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
assets = ./assets;
|
assets = ./assets;
|
||||||
factsGenerator = clan-fact-generators.lib { inherit pkgs; };
|
factsGenerator = clan-fact-generators.lib { inherit pkgs; };
|
||||||
clanLib = import ./lib/clanlib.nix { inherit (pkgs) lib; machineDir = ./machines; };
|
clanLib = import ./lib/clanlib.nix {
|
||||||
|
inherit (pkgs) lib;
|
||||||
|
machineDir = ./machines;
|
||||||
|
};
|
||||||
zerotierDeviceName = "ztbn67ogn2";
|
zerotierDeviceName = "ztbn67ogn2";
|
||||||
components = ./components;
|
components = ./components;
|
||||||
features = ./features;
|
features = ./features;
|
||||||
|
@ -173,30 +183,36 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
clanSetup =
|
clanSetup =
|
||||||
{ name
|
{
|
||||||
, host
|
name,
|
||||||
, modules
|
host,
|
||||||
}: {
|
modules,
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
|
||||||
clan.core.networking.targetHost = lib.mkDefault "root@${host}";
|
clan.core.networking.targetHost = lib.mkDefault "root@${host}";
|
||||||
nixpkgs.pkgs = meta.pkgs;
|
nixpkgs.pkgs = meta.pkgs;
|
||||||
nixpkgs.hostPlatform = meta.system;
|
nixpkgs.hostPlatform = meta.system;
|
||||||
clan.core.facts.secretStore = "password-store";
|
clan.core.facts.secretStore = "password-store";
|
||||||
|
|
||||||
imports = modules ++ defaultModules ++ [
|
imports =
|
||||||
|
modules
|
||||||
|
++ defaultModules
|
||||||
|
++ [
|
||||||
./machines/${name}/configuration.nix
|
./machines/${name}/configuration.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
zerotierControllerModule =
|
zerotierControllerModule = {
|
||||||
{
|
|
||||||
clan.core.networking.zerotier.controller = {
|
clan.core.networking.zerotier.controller = {
|
||||||
enable = true;
|
enable = true;
|
||||||
public = false;
|
public = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
zerotierModules = { pkgs, ... }: {
|
zerotierModules =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
|
||||||
# this magically adds all my machines in the zero tier network
|
# this magically adds all my machines in the zero tier network
|
||||||
|
@ -231,7 +247,9 @@
|
||||||
_module.args.inputs = self.inputs;
|
_module.args.inputs = self.inputs;
|
||||||
}
|
}
|
||||||
# ssh keys
|
# ssh keys
|
||||||
({ config, ... }: {
|
(
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
users.users.root.openssh.authorizedKeys.keyFiles = [
|
users.users.root.openssh.authorizedKeys.keyFiles = [
|
||||||
# master key
|
# master key
|
||||||
./assets/mrvandalo_rsa.pub
|
./assets/mrvandalo_rsa.pub
|
||||||
|
@ -239,7 +257,8 @@
|
||||||
"${config.clan.core.clanDir}/machines/chungus/facts/ssh.syncoid.id_ed25519.pub"
|
"${config.clan.core.clanDir}/machines/chungus/facts/ssh.syncoid.id_ed25519.pub"
|
||||||
"${config.clan.core.clanDir}/machines/chungus/facts/ssh.rbackup.id_ed25519.pub"
|
"${config.clan.core.clanDir}/machines/chungus/facts/ssh.rbackup.id_ed25519.pub"
|
||||||
];
|
];
|
||||||
})
|
}
|
||||||
|
)
|
||||||
{
|
{
|
||||||
# disable emergency mode everywhere, although it might be needed on laptops
|
# disable emergency mode everywhere, although it might be needed on laptops
|
||||||
boot.initrd.systemd.emergencyAccess = false;
|
boot.initrd.systemd.emergencyAccess = false;
|
||||||
|
@ -250,11 +269,20 @@
|
||||||
systemd.enableEmergencyMode = false;
|
systemd.enableEmergencyMode = false;
|
||||||
}
|
}
|
||||||
# configure nix
|
# configure nix
|
||||||
({ pkgs, lib, clanLib, ... }:
|
(
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
clanLib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
nix.settings.substituters = [ "http://cache.orbi.wg0" ];
|
nix.settings.substituters = [ "http://cache.orbi.wg0" ];
|
||||||
nix.settings.trusted-public-keys = [ (clanLib.readFact "nix-serve.pub" "orbi") ];
|
nix.settings.trusted-public-keys = [ (clanLib.readFact "nix-serve.pub" "orbi") ];
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
nix.settings.experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
nix.settings.max-jobs = 1;
|
nix.settings.max-jobs = 1;
|
||||||
# no channesl needed this way
|
# no channesl needed this way
|
||||||
nix.nixPath = [ "nixpkgs=${pkgs.path}" ];
|
nix.nixPath = [ "nixpkgs=${pkgs.path}" ];
|
||||||
|
@ -282,7 +310,8 @@
|
||||||
boot.loader.systemd-boot.configurationLimit = lib.mkDefault 10;
|
boot.loader.systemd-boot.configurationLimit = lib.mkDefault 10;
|
||||||
boot.loader.generic-extlinux-compatible.configurationLimit = lib.mkDefault 10;
|
boot.loader.generic-extlinux-compatible.configurationLimit = lib.mkDefault 10;
|
||||||
boot.loader.grub.configurationLimit = lib.mkDefault 10;
|
boot.loader.grub.configurationLimit = lib.mkDefault 10;
|
||||||
})
|
}
|
||||||
|
)
|
||||||
# My Structure
|
# My Structure
|
||||||
./components
|
./components
|
||||||
./features
|
./features
|
||||||
|
@ -293,15 +322,20 @@
|
||||||
permown.nixosModules.permown
|
permown.nixosModules.permown
|
||||||
kmonad.nixosModules.default
|
kmonad.nixosModules.default
|
||||||
# some default things I always want
|
# some default things I always want
|
||||||
({ pkgs, ... }: {
|
(
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
boot.tmp.useTmpfs = lib.mkDefault true;
|
boot.tmp.useTmpfs = lib.mkDefault true;
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.nixpkgs-fmt
|
pkgs.nixpkgs-fmt
|
||||||
];
|
];
|
||||||
})
|
}
|
||||||
|
)
|
||||||
];
|
];
|
||||||
|
|
||||||
stylixModules = { pkgs, config, ... }: {
|
stylixModules =
|
||||||
|
{ pkgs, config, ... }:
|
||||||
|
{
|
||||||
imports = [ stylix.nixosModules.stylix ];
|
imports = [ stylix.nixosModules.stylix ];
|
||||||
stylix.enable = true;
|
stylix.enable = true;
|
||||||
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-light-medium.yaml";
|
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-light-medium.yaml";
|
||||||
|
@ -327,7 +361,9 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
homeManagerModules = { pkgs, config, ... }: {
|
homeManagerModules =
|
||||||
|
{ pkgs, config, ... }:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
];
|
];
|
||||||
|
@ -345,7 +381,9 @@
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
flake-parts.lib.mkFlake { inherit inputs; } ({ self, pkgs, ... }: {
|
flake-parts.lib.mkFlake { inherit inputs; } (
|
||||||
|
{ self, pkgs, ... }:
|
||||||
|
{
|
||||||
# We define our own systems below. you can still use this to add system specific outputs to your flake.
|
# We define our own systems below. you can still use this to add system specific outputs to your flake.
|
||||||
# See: https://flake.parts/getting-started
|
# See: https://flake.parts/getting-started
|
||||||
systems = [ "x86_64-linux" ];
|
systems = [ "x86_64-linux" ];
|
||||||
|
@ -353,9 +391,12 @@
|
||||||
# import clan-core modules
|
# import clan-core modules
|
||||||
imports = [
|
imports = [
|
||||||
clan-core.flakeModules.default
|
clan-core.flakeModules.default
|
||||||
|
./nix/formatter.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
perSystem = { pkgs, ... }: {
|
perSystem =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
packages.pkl = pkgs.callPackage ./pkgs/pkl { };
|
packages.pkl = pkgs.callPackage ./pkgs/pkl { };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -496,7 +537,7 @@
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
16
nix/formatter.nix
Normal file
16
nix/formatter.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{ inputs, ... }:
|
||||||
|
{
|
||||||
|
imports = [ inputs.treefmt-nix.flakeModule ];
|
||||||
|
|
||||||
|
perSystem = _: {
|
||||||
|
treefmt = {
|
||||||
|
projectRootFile = ".git/config";
|
||||||
|
programs.nixfmt.enable = true;
|
||||||
|
programs.terraform.enable = true;
|
||||||
|
programs.hclfmt.enable = true;
|
||||||
|
programs.jsonfmt.enable = true;
|
||||||
|
programs.yamlfmt.enable = true;
|
||||||
|
programs.black.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
48
treefmt.toml
48
treefmt.toml
|
@ -1,48 +0,0 @@
|
||||||
# One CLI to format the code tree - https://github.com/numtide/treefmt
|
|
||||||
|
|
||||||
[formatter.nix]
|
|
||||||
command = "nixpkgs-fmt"
|
|
||||||
includes = [ "*.nix"]
|
|
||||||
|
|
||||||
[formatter.shell]
|
|
||||||
command = "shfmt"
|
|
||||||
options = [
|
|
||||||
"-i",
|
|
||||||
"2", # indent 2
|
|
||||||
"-s", # simplify the code
|
|
||||||
"-w", # write back to the file
|
|
||||||
]
|
|
||||||
includes = ["*.sh"]
|
|
||||||
excludes = ["scripts/hetzner-dedicated-wipe-and-install-nixos.sh"]
|
|
||||||
|
|
||||||
#[formatter.shellcheck]
|
|
||||||
#command = "shellcheck"
|
|
||||||
#includes = ["*.sh"]
|
|
||||||
#excludes = ["./scripts/hetzner-dedicated-wipe-and-install-nixos.sh"]
|
|
||||||
|
|
||||||
[formatter.python]
|
|
||||||
command = "black"
|
|
||||||
includes = ["*.py"]
|
|
||||||
|
|
||||||
[formatter.media]
|
|
||||||
command = "prettier"
|
|
||||||
options = ["--write"]
|
|
||||||
includes = [
|
|
||||||
"*.json",
|
|
||||||
"*.md",
|
|
||||||
"*.yaml",
|
|
||||||
"*.yml",
|
|
||||||
]
|
|
||||||
|
|
||||||
[formatter.terragrunt]
|
|
||||||
command = "terragrunt"
|
|
||||||
options = [ "hclfmt" ]
|
|
||||||
includes = [ "*.hcl" ]
|
|
||||||
excludes = [ "*/.terraform" ]
|
|
||||||
|
|
||||||
[formatter.terraform]
|
|
||||||
command = "terraform"
|
|
||||||
options = [ "fmt" ]
|
|
||||||
includes = [ "*.tf" ]
|
|
||||||
excludes = [ "*/.terraform" ]
|
|
||||||
|
|
Loading…
Reference in a new issue