dotfiles/flake.nix

61 lines
1.8 KiB
Nix

{
description = "Home Manager configuration of julian";
inputs = {
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager/release-23.11";
inputs.nixpkgs.follows = "nixpkgs-stable";
};
alacritty-theme = {
url = "github:alacritty/alacritty-theme";
flake = false;
};
};
outputs = { nixpkgs-stable, nixpkgs-unstable, home-manager, ... }@inputs:
let
system = "x86_64-linux";
unstable-overlay = final: prev: {
unstable = import nixpkgs-unstable {
inherit system;
config.allowUnfree = true;
};
};
pkgs = import nixpkgs-stable {
inherit system;
config.allowUnfree = true;
overlays = [ unstable-overlay ];
};
# Does not follow symlinks
listNixFilesRec = dir:
pkgs.lib.lists.flatten (pkgs.lib.attrsets.mapAttrsToList (name: value:
let path = "${toString dir}/${name}";
in if value == "directory" && builtins.pathExists path then
listNixFilesRec path
else if value == "regular" && pkgs.lib.hasSuffix ".nix" name then
path
else
[ ]) (builtins.readDir dir));
in {
homeConfigurations."julian" = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
# Specify your home configuration modules here, for example,
# the path to your home.nix.
modules = [ ./home-manager/home.nix ]
++ listNixFilesRec ./home-manager/modules;
# Optionally use extraSpecialArgs
# to pass through arguments to home.nix
extraSpecialArgs = { inherit inputs; };
};
};
}