nixos/flake.nix

106 lines
2.7 KiB
Nix

{
description = "nixos system configuration";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
flake-utils.url = "github:gytis-ivaskevicius/flake-utils-plus";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
nh = {
url = "github:viperML/nh";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-inspect.url = "github:bluskript/nix-inspect";
nix-gaming = {
url = "github:fufexan/nix-gaming";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-cosmic = {
url = "github:lilyinstarlight/nixos-cosmic";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
self,
nixpkgs,
home-manager,
flake-utils,
nixos-cosmic,
...
} @ inputs: let
mkApp = flake-utils.lib.mkApp;
mkFlake = flake-utils.lib.mkFlake;
in
mkFlake {
inherit self inputs nixpkgs home-manager;
channelsConfig.allowUnfree = true;
sharedOverlays = [
self.overlays.additions
self.overlays.modifications
self.overlays.unstable-packages
];
# host defaults
hostDefaults.system = "x86_64-linux";
hostDefaults.modules = [
{
nix.settings = {
substituters = ["https://cosmic.cachix.org/"];
trusted-public-keys = ["cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE="];
};
}
nixos-cosmic.nixosModules.default
];
hostDefaults.extraArgs = {inherit flake-utils;};
hostDefaults.specialArgs = {
inherit inputs;
inherit (self) outputs;
};
hosts.waves = {
system = "x86_64-linux";
modules = [
inputs.disko.nixosModules.default
(import ./disko.nix {device = "/dev/disk/by-id/nvme-Samsung_SSD_980_PRO_with_Heatsink_1TB_S6WSNJ0T900943T";})
./system/waves/configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
}
./home/valerie/home.nix
];
output = "nixosConfigurations";
};
overlays = import ./overlays {inherit inputs;};
}
// flake-utils.lib.eachDefaultSystem (system: let
pkgs = nixpkgs.legacyPackages.${system};
inherit (self) outputs;
in {
packages = import ./pkgs pkgs;
apps = {
"disko" = {
type = "app";
program = "${outputs.packages.${system}.disko}/bin/disko";
};
};
formatter = pkgs.alejandra;
});
}