selfprivacy-nixos-config/flake.nix

48 lines
1.4 KiB
Nix
Raw Normal View History

2023-07-15 15:52:46 +03:00
{
description = "Selfprivacy NixOS configuration flake";
inputs = {
2023-07-17 03:58:26 +03:00
nixpkgs.url = "github:nixos/nixpkgs";
selfprivacy-overlay.url =
2023-07-17 03:58:26 +03:00
"git+https://git.selfprivacy.org/SelfPrivacy/selfprivacy-nix-repo.git";
# the /etc/nixos folder input is expected to be set by the caller
# for example, upon nix build using --override-input
etc-nixos.flake = false;
2023-07-15 15:52:46 +03:00
};
outputs =
{ self
, etc-nixos
, nixpkgs
, selfprivacy-overlay
2023-11-08 16:32:30 +02:00
} @ inputs:
2023-07-15 15:52:46 +03:00
let
system = "x86_64-linux";
userdata =
builtins.fromJSON (builtins.readFile "${etc-nixos}/userdata.json");
2023-11-08 18:52:01 +02:00
sp-extensions =
builtins.fromJSON (builtins.readFile "${etc-nixos}/sp-extensions.json");
2023-11-08 16:32:30 +02:00
lib = nixpkgs.legacyPackages.${system}.lib;
2023-07-15 15:52:46 +03:00
in
{
2023-11-08 16:32:30 +02:00
nixosConfigurations.just-nixos = nixpkgs.lib.nixosSystem {
specialArgs = { inherit system userdata; };
modules = [
# SelfPrivacy overlay
{
2023-11-08 18:52:01 +02:00
nixpkgs.overlays = builtins.trace (sp-extensions.mailserver) [ selfprivacy-overlay.overlay ];
2023-11-08 16:32:30 +02:00
environment.etc.selfprivacy-nixos-config-source.source =
etc-nixos.outPath;
nix.registry = lib.mapAttrs (_n: flake: { inherit flake; }) inputs;
}
# machine specifics
"${etc-nixos}/hardware-configuration.nix"
# main configuration part
./configuration.nix
];
2023-07-15 15:52:46 +03:00
};
};
}