dotfiles/flake.nix

205 lines
5.3 KiB
Nix
Raw Normal View History

2021-12-06 22:35:29 +00:00
{
inputs = {
2023-06-13 08:22:57 +00:00
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
2023-10-05 16:24:59 +00:00
nixos-unstable.url = "github:nixos/nixpkgs/nixos-unstable-small";
2024-02-17 15:20:34 +00:00
# nixpkgs-master.url = "github:nixos/nixpkgs/master";
2023-07-07 08:53:05 +00:00
2023-07-13 14:10:44 +00:00
# Tools
flake-parts.url = "github:hercules-ci/flake-parts";
2023-07-13 17:57:12 +00:00
flake-root.url = "github:srid/flake-root";
2023-07-13 14:10:44 +00:00
treefmt-nix = {
url = "github:numtide/treefmt-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
2023-07-16 22:17:50 +00:00
pre-commit-hooks-nix = {
url = "github:cachix/pre-commit-hooks.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
2023-07-13 14:10:44 +00:00
# Overlays
disko = {
2024-02-18 12:41:02 +00:00
url = "github:nix-community/disko?ref=refs/tags/v1.3.0";
2023-09-12 13:18:09 +00:00
inputs.nixpkgs.follows = "nixos-unstable";
};
2021-12-06 22:35:29 +00:00
2023-07-13 10:02:14 +00:00
nix-darwin = {
2022-02-03 22:35:52 +00:00
url = "github:lnl7/nix-darwin";
2022-07-30 16:18:04 +00:00
inputs.nixpkgs.follows = "nixpkgs";
2022-02-03 22:35:52 +00:00
};
2021-12-10 21:15:13 +00:00
home-manager = {
url = "github:nix-community/home-manager";
2023-09-12 13:18:09 +00:00
inputs.nixpkgs.follows = "nixos-unstable";
2021-12-10 21:15:13 +00:00
};
2021-12-06 22:35:29 +00:00
2023-06-07 18:40:27 +00:00
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
2023-04-14 08:23:54 +00:00
agenix = {
url = "github:ryantm/agenix";
2023-09-12 13:18:09 +00:00
inputs = {
nixpkgs.follows = "nixos-unstable";
darwin.follows = "nix-darwin";
home-manager.follows = "home-manager";
};
2023-02-05 16:51:04 +00:00
};
2023-04-04 18:31:35 +00:00
attic = {
url = "github:zhaofengli/attic";
2023-08-13 15:21:19 +00:00
inputs.nixpkgs.follows = "nixpkgs";
2023-04-04 18:31:35 +00:00
};
2023-04-04 15:20:09 +00:00
2021-12-17 20:41:54 +00:00
nifoc-overlay = {
2023-09-16 16:58:14 +00:00
url = "git+https://git.kempkens.io/daniel/nix-overlay";
2023-10-02 10:18:22 +00:00
inputs = {
nixpkgs.follows = "nixpkgs";
flake-parts.follows = "flake-parts";
};
2021-12-17 20:41:54 +00:00
};
2023-05-12 15:39:09 +00:00
2023-10-01 15:34:28 +00:00
mkalias = {
url = "github:reckenrode/mkalias";
inputs.nixpkgs.follows = "nixpkgs";
};
2021-12-06 22:35:29 +00:00
};
outputs = inputs@{ self, flake-parts, ... }:
2023-07-13 14:10:44 +00:00
flake-parts.lib.mkFlake { inherit inputs; } {
flake =
let
Styx = import ./system/flakes/Styx.nix {
2023-09-24 16:10:08 +00:00
inherit (inputs) nixpkgs home-manager nix-darwin agenix;
2023-07-13 14:10:44 +00:00
inherit inputs;
};
tanker = import ./system/flakes/tanker.nix {
2023-09-12 13:18:09 +00:00
nixpkgs = inputs.nixos-unstable;
inherit (inputs) disko home-manager agenix attic;
2023-07-13 14:10:44 +00:00
inherit inputs;
};
mediaserver = import ./system/flakes/mediaserver.nix {
2023-09-12 13:18:09 +00:00
nixpkgs = inputs.nixos-unstable;
inherit (inputs) home-manager agenix;
2023-07-13 14:10:44 +00:00
inherit inputs;
};
argon = import ./system/flakes/argon.nix {
2023-09-12 13:18:09 +00:00
nixpkgs = inputs.nixos-unstable;
inherit (inputs) nixos-hardware home-manager agenix;
2023-07-13 14:10:44 +00:00
inherit inputs;
};
weather-sdr = import ./system/flakes/weather-sdr.nix {
2023-09-12 13:18:09 +00:00
nixpkgs = inputs.nixos-unstable;
inherit (inputs) home-manager agenix;
2023-07-13 14:10:44 +00:00
inherit inputs;
};
adsb-antenna = import ./system/flakes/adsb-antenna.nix {
2023-09-12 13:18:09 +00:00
nixpkgs = inputs.nixos-unstable;
inherit (inputs) nixos-hardware home-manager;
2023-07-13 14:10:44 +00:00
inherit inputs;
};
in
{
darwinConfigurations = {
"Styx" = Styx.system;
};
nixosConfigurations = {
tanker = tanker.system;
mediaserver = mediaserver.system;
argon = argon.system;
weather-sdr = weather-sdr.system;
adsb-antenna = adsb-antenna.system;
};
colmena =
let
nixosConf = self.nixosConfigurations;
in
{
meta = {
# Since I'm only deploying from Styx ...
nixpkgs = import inputs.nixpkgs {
system = "aarch64-darwin";
};
nodeNixpkgs = builtins.mapAttrs (_name: value: value.pkgs) nixosConf;
nodeSpecialArgs = builtins.mapAttrs (_name: value: value._module.specialArgs) nixosConf;
};
tanker = tanker.colmena;
mediaserver = mediaserver.colmena;
argon = argon.colmena;
weather-sdr = weather-sdr.colmena;
adsb-antenna = adsb-antenna.colmena;
};
2023-07-13 14:10:44 +00:00
};
imports = [
2023-07-13 17:57:12 +00:00
inputs.flake-root.flakeModule
2023-07-13 14:10:44 +00:00
inputs.treefmt-nix.flakeModule
2023-07-16 22:17:50 +00:00
inputs.pre-commit-hooks-nix.flakeModule
2023-07-13 14:10:44 +00:00
];
systems = [
"aarch64-darwin"
"x86_64-linux"
"aarch64-linux"
];
2023-07-28 23:59:23 +00:00
perSystem = { config, pkgs, inputs', ... }: {
2023-07-13 14:10:44 +00:00
treefmt = {
2023-07-13 17:57:12 +00:00
inherit (config.flake-root) projectRootFile;
2023-07-13 14:10:44 +00:00
programs = {
fnlfmt.enable = true;
nixpkgs-fmt.enable = true;
shfmt.enable = true;
2023-07-13 17:57:12 +00:00
yamlfmt.enable = true;
2023-07-13 14:10:44 +00:00
};
};
2023-07-16 22:17:50 +00:00
pre-commit = {
settings = {
hooks = {
deadnix.enable = true;
2023-07-16 22:41:03 +00:00
shellcheck.enable = true;
2023-09-10 15:30:22 +00:00
# statix.enable = true;
2023-07-16 22:17:50 +00:00
treefmt.enable = true;
};
};
};
2023-07-13 14:10:44 +00:00
devShells.default = pkgs.mkShell {
name = "dotfiles";
inputsFrom = [
2023-07-13 17:57:12 +00:00
config.flake-root.devShell
2023-07-13 14:10:44 +00:00
config.treefmt.build.devShell
2023-07-16 22:17:50 +00:00
config.pre-commit.devShell
2023-07-13 14:10:44 +00:00
];
2023-07-21 10:29:50 +00:00
2023-07-28 23:59:23 +00:00
packages = [
inputs'.agenix.packages.agenix
pkgs.colmena
pkgs.nix-output-monitor
2023-07-28 23:59:23 +00:00
];
2023-07-21 10:29:50 +00:00
TREEFMT_CONFIG_FILE = config.treefmt.build.configFile;
2023-07-13 14:10:44 +00:00
};
2023-05-12 15:39:09 +00:00
};
2022-08-01 20:39:14 +00:00
};
2021-12-06 22:35:29 +00:00
}