blob: d10c736558daff3fe882a7904a335d84b7a49c1e (
plain) (
tree)
|
|
{
description = "personal NixOS configurations";
inputs = {
# Nixpkgs, NixOS's official repo
nixpkgs.url = "github:nixos/nixpkgs/release-22.05";
futils.url = "github:numtide/flake-utils";
# We use the unstable nixpkgs repo for some packages.
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
emacs-overlay.url = "github:nix-community/emacs-overlay";
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
};
nur.url = "github:nix-community/NUR";
home-manager = {
url = "github:nix-community/home-manager/release-22.05";
# We want home-manager to use the same set of nixpkgs as our system.
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";
};
};
};
# Output config, or config for NixOS system
outputs = { self, ... }@inputs:
let
inherit (inputs.futils.lib) eachSystem system;
mySystems = [
system.x86_64-linux
];
eachMySystem = eachSystem mySystems;
lib = import ./nix { inherit inputs; };
in
eachMySystem
(system:
let
pkgs = import inputs.nixpkgs { inherit system; };
home-manager = inputs.home-manager.defaultPackage."${system}";
pre-commit-golang = pkgs.callPackage
({ stdenv, fetchFromGitHub }:
stdenv.mkDerivation rec {
pname = "pre-commit-golang";
version = "0.5.0-96221dc";
src = fetchFromGitHub {
owner = "dnephin";
repo = pname;
rev = "96221dc741cb30cc0136999083dc6bd0e2113000";
sha256 = "sha256-lIQBoT+UIlVGnFaaGBgXag0Lm1UhGj/pIGlCCz91L4I=";
};
dontBuild = true;
dontConfigure = true;
installPhase = ''
runHook preInstall
install -d $out
find . -type f -name 'run-*.sh' \
| sed -E 's:^\./run-(.*)\.sh:\1:' \
| xargs -I {} install ./run-{}.sh $out/{}
runHook postInstall
'';
})
{ };
pre-commit-golang-hook = name: {
"${name}" = {
inherit name;
enable = true;
entry = "${pre-commit-golang}/${name}";
files = "\\.go$";
};
};
in
rec
{
packages = pkgs // {
inherit home-manager;
tools = import ./tools { inherit pkgs; };
ops = import ./ops { inherit pkgs; };
users.fcuny = import ./users/fcuny { inherit pkgs; };
};
checks = {
pre-commit = inputs.pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks = {
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" ];
};
nixpkgs-fmt = {
enable = true;
};
terraform-format = {
enable = true;
};
shellcheck = {
enable = true;
files = "\\.sh$";
types_or = [ "file" ];
};
}
// (pre-commit-golang-hook "go-fmt")
// (pre-commit-golang-hook "go-mod-tidy");
};
};
devShells = {
default = pkgs.mkShell {
name = "NixOS-config";
buildInputs = with pkgs; [
gitAndTools.pre-commit
nixUnstable
nixfmt
nixpkgs-fmt
rnix-lsp
home-manager
git
go
gopls
];
inherit (self.checks.${system}.pre-commit) shellHook;
};
};
}) // {
nixosConfigurations = {
carmel = lib.mkSystem { hostname = "carmel"; };
aptos = lib.mkSystem { hostname = "aptos"; };
tahoe = lib.mkSystem { hostname = "tahoe"; };
};
};
}
|