From 3a701f454d188889b6ebff18042721cca6e27be5 Mon Sep 17 00:00:00 2001 From: Julien Malka Date: Tue, 7 Dec 2021 13:47:55 +0100 Subject: [PATCH] Added utils function to clean code --- flake.nix | 36 +++--------------------------------- utils.nix | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 33 deletions(-) create mode 100644 utils.nix diff --git a/flake.nix b/flake.nix index 0244546..1b00ba9 100644 --- a/flake.nix +++ b/flake.nix @@ -20,38 +20,8 @@ outputs = { self, home-manager, nixpkgs, neovim-nightly-overlay, nur, ... }@inputs: let - importDir = dir: pipe dir [ - builtins.readDir - (mapAttrsToList (name: type: - if type == "regular" && hasSuffix ".nix" name && name != "default.nix" then - [{ name = removeSuffix ".nix" name; value = import (dir + "/${name}"); }] - else if type == "directory" && pathExists (dir + "/${name}/default.nix") then - [{ inherit name; value = import (dir + "/${name}"); }] - else - [ ] - )) - concatLists - listToAttrs - ]; - mkMachine = host: host-config: modules: { - lisa = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = builtins.attrValues modules ++ [ - ./configuration.nix - host-config - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.julien = import ./config/home/home-lisa.nix; - nixpkgs.overlays = [ - inputs.neovim-nightly-overlay.overlay - ]; - } - ]; - }; - }; - in + utils = import ./utils.nix { inherit nixpkgs home-manager inputs; }; + in with utils; { nixosModules = builtins.listToAttrs (map (x: { @@ -60,7 +30,7 @@ }) (builtins.attrNames (builtins.readDir ./modules))); - nixosConfigurations = mapAttrs (name: value: (mkMachine name value nixosModules)) (importDir ./machines); + nixosConfigurations = builtins.mapAttrs (name: value: (mkMachine name value self.nixosModules)) (importConfig ./machines); diff --git a/utils.nix b/utils.nix new file mode 100644 index 0000000..2d583c5 --- /dev/null +++ b/utils.nix @@ -0,0 +1,33 @@ +{ nixpkgs, home-manager, inputs }: +with builtins; + +let mapAttrNames = f: set: + listToAttrs (map (attr: { name = f attr; value = set.${attr}; }) (attrNames set)); +in +{ + + mkMachine = host: host-config: modules: nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit inputs; + }; + modules = builtins.attrValues modules ++ [ + ./configuration.nix + host-config + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.julien = import ./config/home/home-lisa.nix; + nixpkgs.overlays = [ + inputs.neovim-nightly-overlay.overlay + ]; + } + ]; + }; + + + importConfig = path: (mapAttrNames (name: nixpkgs.lib.removeSuffix ".nix" name)) ((builtins.mapAttrs (name: value: import (path + "/${name}")) (builtins.readDir path))); + + +}