blob: ce8d8ab46dd77b5604688e7a9ce76aee260ce977 (
plain) (
tree)
|
|
{
description = "personal NixOS configurations";
inputs = {
nixpkgs = {
type = "github";
owner = "NixOS";
repo = "nixpkgs";
ref = "nixos-22.11";
};
futils.url = "github:numtide/flake-utils";
emacs-overlay.url = "github:nix-community/emacs-overlay";
naersk.url = "github:nix-community/naersk";
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
};
nur.url = "github:nix-community/NUR";
home-manager = {
type = "github";
owner = "nix-community";
repo = "home-manager";
ref = "master";
inputs = {
nixpkgs.follows = "nixpkgs";
utils.follows = "futils";
};
};
homeage = {
url = "github:jordanisaacs/homeage";
inputs.nixpkgs.follows = "nixpkgs";
};
rust = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
pre-commit-hooks = {
type = "github";
owner = "cachix";
repo = "pre-commit-hooks.nix";
ref = "master";
inputs = {
flake-utils.follows = "futils";
nixpkgs.follows = "nixpkgs";
nixpkgs-stable.follows = "nixpkgs";
};
};
sendsms = {
url = "git+https://git.fcuny.net/sendsms?ref=main";
};
};
# Output config, or config for NixOS system
outputs = inputs@{ self, ... }:
let
myLib = import ./nix inputs;
lib = inputs.nixpkgs.lib // builtins;
supportedSystems = [ "x86_64-linux" ];
forAllSystems = lib.genAttrs supportedSystems;
# Nixpkgs instantiated for supported system types.
nixpkgsFor = forAllSystems (system:
import inputs.nixpkgs {
inherit system;
config = { allowUnfree = true; };
});
in
{
templates = import ./templates;
checks = forAllSystems (system:
let pkgs = nixpkgsFor.${system};
in
{
pre-commit-check = inputs.pre-commit-hooks.lib."${system}".run {
src = ./.;
hooks = {
nixpkgs-fmt.enable = true;
trailing-whitespace = {
enable = true;
entry =
"${pkgs.python3Packages.pre-commit-hooks}/bin/trailing-whitespace-fixer";
types = [ "text" ];
};
end-of-file-fixer = {
enable = true;
entry =
"${pkgs.python3Packages.pre-commit-hooks}/bin/end-of-file-fixer";
types = [ "text" ];
};
check-executables-have-shebangs = {
entry =
"${pkgs.python3Packages.pre-commit-hooks}/bin/check-executables-have-shebangs";
types = [ "text" "executable" ];
};
check-json = {
enable = true;
entry = "${pkgs.python3Packages.pre-commit-hooks}/bin/check-json";
types = [ "json" ];
};
check-toml = {
enable = true;
entry = "${pkgs.python3Packages.pre-commit-hooks}/bin/check-toml";
types = [ "toml" ];
};
check-yaml = {
enable = true;
entry = "${pkgs.python3Packages.pre-commit-hooks}/bin/check-yaml --allow-multiple-documents";
types = [ "yaml" ];
};
shellcheck = {
enable = true;
files = "\\.sh$";
types_or = [ "file" ];
};
};
};
});
devShells = forAllSystems (system: {
default = inputs.nixpkgs.legacyPackages.${system}.mkShell {
name = "fcuny-configuration-on-${system}-system";
buildInputs = with inputs.nixpkgs.legacyPackages.${system}.pkgs; [
gitAndTools.pre-commit
nixfmt
nixpkgs-fmt
rnix-lsp
home-manager
git
nixos-rebuild
];
inherit (self.checks.${system}.pre-commit-check) shellHook;
};
});
packages = forAllSystems (system:
let pkgs = nixpkgsFor.${system};
in
{
inherit (inputs.futils.lib) filterPackages flattenTree;
tools = import ./tools { inherit pkgs; };
});
nixosConfigurations = {
aptos = myLib.mkSystem { hostname = "aptos"; };
carmel = myLib.mkSystem { hostname = "carmel"; };
tahoe = myLib.mkSystem { hostname = "tahoe"; };
};
homeConfigurations = {
useGlobalPkgs = true;
useUserPackages = true;
"fcuny@aptos" =
myLib.mkHomeManagerConfiguration { hostname = "aptos"; };
"fcuny@tahoe" =
myLib.mkHomeManagerConfiguration { hostname = "tahoe"; };
};
};
}
|