{
inputs,
nixpkgs,
}: rec {
sshKeys = rec {
chris.thelio = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGaGrbXoVGe5fXpOhG6+pUZw+aYANuiDPvoI82jftpPd chris@thesogu.com";
chris.xps = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPflVyCskMX25z8S3pQLyGbo67zBQyC+eMbCkksRw4o/ chris@thesogu.com";
chris.trap = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO1u2+EqAzFOidZ+b0dixultkTyvIsOXZJsiG+/kDpJm chris@trap";
system.thelio = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDOiCjIMganzY45qiHFEO2NqkXz2mWsSEmq3zIoRJsiA root@nixos";
system.xps = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAy30vzaxmqc08+NcYYA7LflDqoZNdRoyVXVJ2H9p2Xp root@xps-nixos";
system.trap = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBNAyh1GNkiHi8eButk+acXT8E4LiKaLWq0jmJmQjwsk root@trap";
usesRemoteBuilders = {
inherit (system) thelio xps;
};
};
overlays = system:
{
emacs = inputs.emacs-overlay.overlay;
}
// (
if inputs.nixpkgs.legacyPackages.${system}.stdenv.hostPlatform.isLinux
then {
wayland = inputs.wayland-overlay.overlay;
}
else {}
);
specialArgs = system: {
inherit inputs sshKeys;
overlays = overlays system;
input-modules.doom = inputs.nix-doom-emacs.hmModule;
dotfiles_lib.options = with inputs.nixpkgs.legacyPackages.x86_64-linux.lib; {
mkDefaultEnabledOption = description:
mkOption {
type = types.bool;
default = true;
example = false;
description = mdDoc description;
};
};
};
mkHost = system: hostPath: let
fn =
if system == "aarch64-darwin"
then inputs.darwin.lib.darwinSystem
else nixpkgs.lib.nixosSystem;
hmModule =
if system == "aarch64-darwin"
then inputs.home-manager.darwinModules.home-manager
else inputs.home-manager.nixosModules.home-manager;
in
fn {
inherit system;
specialArgs = specialArgs system;
modules =
[
hostPath
hmModule
{
home-manager.extraSpecialArgs = specialArgs system;
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "hm.bak";
}
]
++ (
if system == "aarch64-darwin"
then [inputs.mac-app-util.darwinModules.default]
else []
);
};
mkDeploy = host: {
hostname = host.config.networking.hostName;
profiles.system = {
sshOpts = ["-t"];
user = "root";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos host;
sshUser = "chris";
fastConnection = true;
magicRollback = false;
autoRollback = false;
};
};
mkCommitCheck = system: {
pre-commit = inputs.pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks = {
alejandra.enable = true;
statix.enable = true;
shellcheck.enable = true;
markdown-formatter = {
enable = true;
name = "markdown-formatter";
types = ["markdown"];
language = "system";
pass_filenames = true;
entry = with inputs.nixpkgs.legacyPackages.${system}.python311Packages; "${mdformat}/bin/mdformat";
};
markdown-linter = {
enable = true;
name = "markdown-linter";
types = ["markdown"];
language = "system";
pass_filenames = true;
entry = with inputs.nixpkgs.legacyPackages.${system}; "${mdl}/bin/mdl -g";
};
};
};
};
}