Dotfiles/nix/flake.nix

85 lines
2.2 KiB
Nix
Executable File

{
description = "Main configuration on top of nix flakes";
inputs = {
home-manager = {
url = "github:rycee/home-manager/release-21.05";
inputs = {
nixpkgs.follows = "nixpkgs";
};
};
nur.url = "github:nix-community/NUR";
emacs-overlay.url = "github:nix-community/emacs-overlay";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
unstable.url = "github:nixos/nixpkgs/nixos-unstable";
master.url = "github:nixos/nixpkgs/master";
};
outputs = inputs@{ self, home-manager, nur, nixpkgs, ... }:
let
inherit (builtins) listToAttrs attrValues attrNames readDir;
inherit (nixpkgs) lib;
inherit (lib) removeSuffix;
pkgs = (import nixpkgs) {
system = "x86_64-linux";
config = {
allowUnfree = true;
};
overlays = attrValues self.overlays;
};
in
{
overlays =
let
overlayFiles = listToAttrs (map
(name: {
name = removeSuffix ".nix" name;
value = import (./overlays + "/${name}");
})
(attrNames (readDir ./overlays)));
in
overlayFiles // {
nur = final: prev: {
nur = import inputs.nur { nurpkgs = final.unstable; pkgs = final.unstable; };
};
emacs-overlay = inputs.emacs-overlay.overlay;
unstable = final: prev: {
unstable = import inputs.unstable {
system = final.system;
config = {
allowUnfree = true;
};
};
};
master = final: prev: {
master = import inputs.master {
system = final.system;
config = {
allowUnfree = true;
};
};
};
};
nixosConfigurations.lap = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
./hardware-configuration.nix
home-manager.nixosModules.home-manager
({
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.horhik = {
imports = [
./modules/picom.nix
./modules/tmux.nix
];
};
})
];
inherit pkgs;
};
};
}