aboutsummaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix114
1 files changed, 59 insertions, 55 deletions
diff --git a/flake.nix b/flake.nix
index 4846772..43721fe 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,6 +2,7 @@
description = "Cynerd's personal flake";
inputs = {
+ nixpkgs.url = "flake:nixpkgs/nixos-unstable";
nixos-hardware.url = "nixos-hardware";
nixosdeploy.url = "gitlab:cynerd/nixosdeploy";
personal-secret.url = "git+ssh://git@cynerd.cz/nixos-personal-secret";
@@ -9,10 +10,7 @@
agenix.url = "github:ryantm/agenix";
shvcli.url = "github:silicon-heaven/shvcli";
- shvcli-ell = {
- url = "gitlab:elektroline-predator/shvcli-ell";
- inputs.shvcli.follows = "shvcli";
- };
+ shvcli-ell.url = "gitlab:elektroline-predator/shvcli-ell";
usbkey.url = "gitlab:cynerd/usbkey";
@@ -22,69 +20,75 @@
outputs = {
self,
- flake-utils,
+ systems,
nixpkgs,
nixosdeploy,
personal-secret,
shellrc,
agenix,
+ shvcli,
shvcli-ell,
usbkey,
nixturris,
...
}: let
- inherit (flake-utils.lib) eachDefaultSystem filterPackages;
- inherit (nixpkgs.lib) mapAttrs' nameValuePair filterAttrs;
- in
- {
- overlays = {
- lib = final: prev: import ./lib final prev;
- pkgs = final: prev: import ./pkgs final prev;
- default = nixpkgs.lib.composeManyExtensions [
- agenix.overlays.default
- nixosdeploy.overlays.default
- self.overlays.pkgs
- shellrc.overlays.default
- shvcli-ell.overlays.default
- usbkey.overlays.default
- ];
- };
+ inherit (nixpkgs.lib) genAttrs mapAttrs' nameValuePair filterAttrs;
+ forSystems = genAttrs (import systems);
+ withPkgs = func: forSystems (system: func self.legacyPackages.${system});
+
+ osFilterMap = system: attr:
+ mapAttrs' (n: v: let
+ os =
+ if v.config.nixpkgs.hostPlatform.system == system
+ then v
+ else (v.extendModules {modules = [{nixpkgs.buildPlatform.system = system;}];});
+ in
+ nameValuePair "${attr}-${n}" os.config.system.build."${attr}")
+ (filterAttrs (_: v: v.config.system.build ? "${attr}")
+ self.nixosConfigurations);
+ in {
+ overlays = {
+ lib = final: prev: import ./lib final prev;
+ pkgs = final: prev: import ./pkgs final prev;
+ default = nixpkgs.lib.composeManyExtensions [
+ agenix.overlays.default
+ nixosdeploy.overlays.default
+ self.overlays.pkgs
+ shellrc.overlays.default
+ shvcli.overlays.default
+ shvcli-ell.overlays.packages
+ usbkey.overlays.default
+ ];
+ };
+
+ nixosModules = import ./nixos/modules {
+ inherit (nixpkgs) lib;
+ default_modules = [
+ nixosdeploy.nixosModules.default
+ nixturris.nixosModules.default
+ personal-secret.nixosModules.default
+ shellrc.nixosModules.default
+ usbkey.nixosModules.default
+ ];
+ };
- nixosModules = import ./nixos/modules {
- inherit (nixpkgs) lib;
- default_modules = [
- nixosdeploy.nixosModules.default
- nixturris.nixosModules.default
- personal-secret.nixosModules.default
- shellrc.nixosModules.default
- usbkey.nixosModules.default
- ];
- };
+ nixosConfigurations = import ./nixos/configurations self;
+ lib = import ./lib nixpkgs.lib;
- nixosConfigurations = import ./nixos/configurations self;
- lib = import ./lib nixpkgs.lib;
- }
- // eachDefaultSystem (system: let
- pkgs = nixpkgs.legacyPackages."${system}".extend self.overlays.default;
+ legacyPackages =
+ forSystems (system:
+ nixpkgs.legacyPackages.${system}.extend self.overlays.default);
- osFilterMap = attr:
- mapAttrs' (n: v: let
- os =
- if v.config.nixpkgs.hostPlatform.system == system
- then v
- else (v.extendModules {modules = [{nixpkgs.buildPlatform.system = system;}];});
- in
- nameValuePair "${attr}-${n}" os.config.system.build."${attr}")
- (filterAttrs (_: v: v.config.system.build ? "${attr}")
- self.nixosConfigurations);
- in {
- packages =
+ packages = forSystems (
+ system:
{inherit (nixosdeploy.packages.${system}) default;}
- // (osFilterMap "toplevel")
- // (osFilterMap "tarball")
- // (osFilterMap "firmware");
- legacyPackages = pkgs;
- devShells = filterPackages system (import ./devShells pkgs);
- formatter = pkgs.alejandra;
- });
+ // (osFilterMap system "toplevel")
+ // (osFilterMap system "tarball")
+ // (osFilterMap system "firmware")
+ );
+
+ devShells = withPkgs (import ./devShells);
+
+ formatter = withPkgs (pkgs: pkgs.alejandra);
+ };
}