Add linting, formatting, and CI with fixes for all warnings

Infrastructure:
- Add deadnix, nixfmt, and statix to flake inputs
- Add formatter output to flake for nix fmt support
- Add deadnix, nixfmt, statix to Home Manager packages
- Add GitHub Actions workflow for CI validation
- Add .pre-commit-config.yaml with hooks for nixfmt, deadnix, and statix
- Support x86_64-darwin in formatter

Statix fixes (W10/W20 warnings):
- Remove unused lambda argument from nixpkgs-settings.nix
- Merge repeated keys in hardware-configuration.nix files (boot.initrd, boot, fileSystems)
- Merge repeated keys in nixnuc/default.nix (services, virtualisation)
- Merge repeated keys in rainbow-planet/default.nix (desktopManager)
- Merge repeated keys in home/general/default.nix (home)

Deadnix fixes (unused declarations):
- Remove unused pkgs/lib/username/http_port arguments from various files
- Fix unused final parameter in overlay functions (final -> _final)

CI/pre-commit fixes:
- Fix pre-commit statix config: add pass_filenames: false
- Fix CI workflow: use nix run nixpkgs# prefix and --ci flag for nixfmt
This commit is contained in:
Gene Liverman 2026-03-20 22:11:58 -04:00
parent 5047d93b86
commit 9b3c078319
No known key found for this signature in database
78 changed files with 1662 additions and 955 deletions

View file

@ -1,8 +1,10 @@
{ inputs, ... }: let
{ inputs, ... }:
let
mkDarwinHost = import ./mkDarwinHost.nix { inherit inputs; };
mkHomeConfig = import ./mkHomeConfig.nix { inherit inputs; };
mkNixosHost = import ./mkNixosHost.nix { inherit inputs; };
in {
in
{
inherit (mkDarwinHost) mkDarwinHost;
inherit (mkHomeConfig) mkHomeConfig;
inherit (mkNixosHost) mkNixosHost;

View file

@ -1,41 +1,50 @@
{ inputs, ... }: {
mkDarwinHost = {
system ? "aarch64-darwin",
hostname,
username ? "gene",
additionalModules ? [],
additionalSpecialArgs ? {}
}: inputs.nix-darwin.lib.darwinSystem {
inherit system;
specialArgs = { inherit inputs hostname username; } // additionalSpecialArgs;
modules = [
./nixpkgs-settings.nix
inputs.nix-homebrew.darwinModules.nix-homebrew {
nix-homebrew = {
enable = true; # Install Homebrew under the default prefix
user = "${username}"; # User owning the Homebrew prefix
autoMigrate = true; # Automatically migrate existing Homebrew installations
};
{ inputs, ... }:
{
mkDarwinHost =
{
system ? "aarch64-darwin",
hostname,
username ? "gene",
additionalModules ? [ ],
additionalSpecialArgs ? { },
}:
inputs.nix-darwin.lib.darwinSystem {
inherit system;
specialArgs = {
inherit inputs hostname username;
}
// additionalSpecialArgs;
modules = [
./nixpkgs-settings.nix
inputs.home-manager.darwinModules.home-manager {
home-manager = {
extraSpecialArgs = { inherit inputs username; };
useGlobalPkgs = true;
useUserPackages = true;
users.${username}.imports = [
inputs.sops-nix.homeManagerModule # user-level secrets management
../modules/shared/home/general
../modules/shared/home/general/all-gui.nix
../modules/hosts/darwin/home.nix
../modules/hosts/darwin/${hostname}/home-${username}.nix
];
};
}
inputs.nix-homebrew.darwinModules.nix-homebrew
{
nix-homebrew = {
enable = true; # Install Homebrew under the default prefix
user = "${username}"; # User owning the Homebrew prefix
autoMigrate = true; # Automatically migrate existing Homebrew installations
};
}
../modules/hosts/darwin # system-wide stuff
../modules/hosts/darwin/${hostname} # host specific stuff
] ++ additionalModules; # end modules
}; # end darwinSystem
inputs.home-manager.darwinModules.home-manager
{
home-manager = {
extraSpecialArgs = { inherit inputs username; };
useGlobalPkgs = true;
useUserPackages = true;
users.${username}.imports = [
inputs.sops-nix.homeManagerModule # user-level secrets management
../modules/shared/home/general
../modules/shared/home/general/all-gui.nix
../modules/hosts/darwin/home.nix
../modules/hosts/darwin/${hostname}/home-${username}.nix
];
};
}
../modules/hosts/darwin # system-wide stuff
../modules/hosts/darwin/${hostname} # host specific stuff
]
++ additionalModules; # end modules
}; # end darwinSystem
}

View file

@ -1,29 +1,39 @@
{ inputs, ... }: {
mkHomeConfig = {
homeDirectory,
system,
username,
}: inputs.home-manager.lib.homeManagerConfiguration {
extraSpecialArgs = { inherit inputs homeDirectory system username; };
{ inputs, ... }:
{
mkHomeConfig =
{
homeDirectory,
system,
username,
}:
inputs.home-manager.lib.homeManagerConfiguration {
extraSpecialArgs = {
inherit
inputs
homeDirectory
system
username
;
};
pkgs = inputs.nixpkgs.legacyPackages.${system};
pkgs = inputs.nixpkgs.legacyPackages.${system};
# Specify your home configuration modules here, for example,
# the path to your home.nix.
modules = [
./nixpkgs-settings.nix
../modules/shared/home/general
../modules/hosts/home-manager-only
../modules/hosts/home-manager-only/home-${username}.nix
# Specify your home configuration modules here, for example,
# the path to your home.nix.
modules = [
./nixpkgs-settings.nix
../modules/shared/home/general
../modules/hosts/home-manager-only
../modules/hosts/home-manager-only/home-${username}.nix
{
home = {
username = "${username}";
homeDirectory = "${homeDirectory}";
};
}
{
home = {
username = "${username}";
homeDirectory = "${homeDirectory}";
};
}
inputs.sops-nix.homeManagerModules.sops
];
};
}
inputs.sops-nix.homeManagerModules.sops
];
};
}

View file

@ -1,36 +1,44 @@
{ inputs, ... }: {
mkNixosHost = {
system ? "x86_64-linux",
hostname,
username ? "gene",
additionalModules ? [],
additionalSpecialArgs ? {}
}: inputs.nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs hostname username; } // additionalSpecialArgs;
modules = [
./nixpkgs-settings.nix
inputs.disko.nixosModules.disko
inputs.home-manager.nixosModules.home-manager {
home-manager = {
extraSpecialArgs = { inherit inputs hostname username; };
useGlobalPkgs = true;
useUserPackages = true;
users.${username}.imports = [
../modules/shared/home/general
../modules/shared/home/linux
../modules/hosts/nixos/${hostname}/home-${username}.nix
];
};
{ inputs, ... }:
{
mkNixosHost =
{
system ? "x86_64-linux",
hostname,
username ? "gene",
additionalModules ? [ ],
additionalSpecialArgs ? { },
}:
inputs.nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit inputs hostname username;
}
// additionalSpecialArgs;
modules = [
./nixpkgs-settings.nix
inputs.nix-flatpak.nixosModules.nix-flatpak
inputs.private-flake.nixosModules.private.ssh-keys
inputs.sops-nix.nixosModules.sops # system wide secrets management
../modules/hosts/nixos # system-wide stuff
../modules/hosts/nixos/${hostname} # host specific stuff
] ++ additionalModules;
};
inputs.disko.nixosModules.disko
inputs.home-manager.nixosModules.home-manager
{
home-manager = {
extraSpecialArgs = { inherit inputs hostname username; };
useGlobalPkgs = true;
useUserPackages = true;
users.${username}.imports = [
../modules/shared/home/general
../modules/shared/home/linux
../modules/hosts/nixos/${hostname}/home-${username}.nix
];
};
}
inputs.nix-flatpak.nixosModules.nix-flatpak
inputs.private-flake.nixosModules.private.ssh-keys
inputs.sops-nix.nixosModules.sops # system wide secrets management
../modules/hosts/nixos # system-wide stuff
../modules/hosts/nixos/${hostname} # host specific stuff
]
++ additionalModules;
};
}

View file

@ -1,4 +1,4 @@
{ inputs, ... }: {
{
nixpkgs = {
config = {
allowUnfree = true;