Skip Navigation

Search

Nix / NixOS @programming.dev

[solved] Is there a way to automatically import all .nix files in a directory?

My solution:

 nix
    
let

  nixFilesInDirectory = directory:
    (
      map (file: "${directory}/${file}")
      (
        builtins.filter
          (
            nodeName:
              (builtins.isList (builtins.match ".+\.nix$" nodeName)) &&
              # checking that it is NOT a directory by seeing
              # if the node name forcefully used as a directory is an invalid path
              (!builtins.pathExists "${directory}/${nodeName}/.")
          )
          (builtins.attrNames (builtins.readDir directory))
      )
    );

  nixFilesInDirectories = directoryList:
    (
      builtins.concatMap
        (directory: nixFilesInDirectory directory)
        (directoryList)
    );
  # ...
in {
  imports = nixFilesInDirectories ([
      "${./programs}"
      "${./programs/terminal-niceties}"
  ]);
  # ...
}


  

snippet from the full source code: [quazar-omega/home-manager-config (L5-L26)](https://codeberg.org/quazar-omega/home-manager-config/src/commit/7afabf08c04d0d9ce48e06091