{ description = "someone flake configuration based on hjem"; outputs = inputs: inputs.flake-parts.lib.mkFlake {inherit inputs;} { systems = ["x86_64-linux" "aarch64-linux"]; imports = [./hosts ./pkgs inputs.git-hooks-nix.flakeModule]; perSystem = { config, pkgs, ... }: { devShells = { default = pkgs.mkShell { packages = [pkgs.alejandra pkgs.git config.packages.repl]; name = "someone"; DIRENV_LOG_FORMAT = ""; }; }; # Nix Formatter formatter = pkgs.alejandra; # Pre-commit hooks (flake-parts module from cachix/git-hooks.nix). # `nix build .#checks..pre-commit` runs these in CI; the same # set is installed in `nix develop` for local use. # alejandra.settings.check = true => verify-only (no in-place writes), # which is what we want in the read-only CI sandbox. pre-commit.settings.hooks = { alejandra = { enable = true; settings.check = true; }; statix = { enable = true; # hardware-configuration.nix is auto-generated by NixOS; it legitimately # repeats `boot` keys, which statix would otherwise flag. Exclude it here. settings.ignore = ["hardware-configuration.nix"]; # Lint config (statix.toml at repo root). Disables `empty_pattern`, which # flags the standard NixOS `{ ... }:` module pattern that nixpkgs likewise # permits. settings.config = "./statix.toml"; }; deadnix.enable = true; actionlint.enable = true; trim-trailing-whitespace.enable = true; end-of-file-fixer.enable = true; check-yaml.enable = true; check-toml.enable = true; check-added-large-files.enable = true; check-merge-conflicts.enable = true; detect-private-keys.enable = true; }; }; }; inputs = { # global, so they can be `.follow`ed systems.url = "github:nix-systems/default-linux"; flake-compat.url = "github:edolstra/flake-compat"; flake-utils = { url = "github:numtide/flake-utils"; inputs.systems.follows = "systems"; }; flake-parts = { url = "github:hercules-ci/flake-parts"; inputs.nixpkgs-lib.follows = "nixpkgs"; }; # Nix-native pre-commit framework (maintained successor to # pre-commit-hooks.nix). Follows our nixpkgs to avoid version skew # with the rest of the flake. git-hooks-nix = { url = "github:cachix/git-hooks.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # rest of inputs, alphabetical order import-tree.url = "github:vic/import-tree"; zen-browser = { url = "github:youwen5/zen-browser-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; helium = { url = "github:schembriaiden/helium-browser-nix-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; himmelblau = { url = "github:himmelblau-idm/himmelblau/main"; inputs.nixpkgs.follows = "nixpkgs"; }; mdatp = { url = "github:epetousis/nix-mdatp"; inputs.nixpkgs.follows = "nixpkgs"; }; rustlock = { url = "github:JorySeverijnse/rustlock"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-index-db = { url = "github:Mic92/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs"; }; # --- Server (hetzner) inputs --- # Pinned to 24.05 to match the deployed Hetzner server exactly. nixos-24-05 = { url = "github:NixOS/nixpkgs/nixos-24.05"; }; nixpkgs-unstable = { url = "github:NixOS/nixpkgs/nixos-unstable"; }; disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixos-24-05"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixos-24-05"; }; }; }