nix/flake.nix

193 lines
5 KiB
Nix

{
description = "flake for nixos-pulse";
nixConfig = {
extra-trusted-substituters = [
"https://nix-community.cachix.org"
];
extra-trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
};
inputs = {
nixpkgs-unstable = {
url = "github:NixOS/nixpkgs/nixpkgs-unstable";
};
nixos-unstable = {
url = "github:NixOS/nixpkgs/nixos-unstable";
};
nixpkgs = {
url = "github:NixOS/nixpkgs/nixos-23.05";
};
tuxedo-nixos = {
url = "github:blitz/tuxedo-nixos";
};
home-manager = {
url = "github:nix-community/home-manager/release-23.05";
inputs.nixpkgs.follows = "nixpkgs";
};
emacs-overlay = {
url = "github:nix-community/emacs-overlay";
inputs.nixpkgs-stable.follows = "nixpkgs";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
nur = {
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-wallpaper = {
url = "github:lunik1/nix-wallpaper";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-index-database = {
url = "github:Mic92/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
plasma-manager = {
url = "github:pjones/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
nix-ld = {
url = "github:Mic92/nix-ld";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{ self
, nixpkgs
, nixpkgs-unstable
, nixos-unstable
, home-manager
, emacs-overlay
, nur
, nix-index-database
, disko
, ...
} @ inputs:
let
system = "x86_64-linux";
unstable-os = import nixos-unstable pkgs-args;
unstable-os-overlay = _final: _prev: {
unstable-os = unstable-os.pkgs;
};
unstable-pkgs = import nixpkgs-unstable pkgs-args;
unstable-pkgs-overlay = _final: _prev: {
unstable-pkgs = unstable-pkgs.pkgs;
};
overlays = [
unstable-os-overlay
unstable-pkgs-overlay
emacs-overlay.overlay
];
pkgs-args = {
inherit system;
inherit overlays;
config = {
allowUnfree = true;
permittedInsecurePackages = [
"electron-22.3.27"
"electron-24.8.6"
];
};
};
pkgs = import nixpkgs pkgs-args;
hmModules = [
nix-index-database.hmModules.nix-index
nur.hmModules.nur
inputs.plasma-manager.homeManagerModules.plasma-manager
];
osModules = [
disko.nixosModules.disko
home-manager.nixosModules.home-manager
nix-index-database.nixosModules.nix-index
nur.nixosModules.nur
inputs.nix-ld.nixosModules.nix-ld
inputs.tuxedo-nixos.nixosModules.default
];
args = {
inherit self;
inherit inputs;
inherit system;
};
in
{
formatter = {
${system} = pkgs.nixpkgs-fmt;
};
diskoConfigurations = {
nixos-pulse = import ./systems/nixos-pulse/disko.nix;
};
homeConfigurations = {
"tester@tristan-desk-arch" = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules =
[
./users/tester.nix
{
_module = { inherit args; };
targets.genericLinux.enable = true;
programs = {
bash.enable = true;
zsh.enable = true;
home-manager.enable = true;
};
}
]
++ hmModules;
};
"tristand" = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules =
[
./users/tristand.nix
{
_module = { inherit args; };
xsession.enable = true;
}
]
++ hmModules;
};
};
nixosConfigurations = {
nixos-pulse = nixpkgs.lib.nixosSystem {
modules =
[
./systems/nixos-pulse
{
_module = { inherit args; };
nix.registry.nixpkgs.flake = nixpkgs;
nixpkgs.pkgs = pkgs;
home-manager.sharedModules = hmModules;
home-manager.extraSpecialArgs = args;
}
]
++ osModules;
};
nixos-desk = nixpkgs.lib.nixosSystem {
modules =
[
./systems/nixos-desk
{
_module.args = args;
nixpkgs.pkgs = pkgs;
nix.registry.nixpkgs.flake = nixpkgs;
home-manager.sharedModules = hmModules;
home-manager.extraSpecialArgs = args;
}
]
++ osModules;
};
};
};
}