nixos-config/flake.nix

155 lines
3.6 KiB
Nix
Raw Normal View History

2021-02-06 03:09:11 +01:00
{
description = "Nixos configuration with flakes";
inputs = {
2021-04-19 12:49:30 +02:00
nixpkgs = {
type = "github";
owner = "NixOS";
repo = "nixpkgs";
ref = "nixos-unstable";
2021-04-19 12:49:30 +02:00
};
nixpkgs-unstable-small = {
2021-05-27 20:16:14 +02:00
type = "github";
owner = "NixOS";
repo = "nixpkgs";
ref = "nixos-unstable-small";
};
2022-01-17 21:56:41 +01:00
agenix = {
type = "github";
owner = "ryantm";
repo = "agenix";
};
2021-04-19 12:49:30 +02:00
emacs-overlay = {
type = "github";
owner = "nix-community";
repo = "emacs-overlay";
ref = "master";
};
2021-04-19 13:42:29 +02:00
home-manager = {
type = "github";
owner = "nix-community";
repo = "home-manager";
ref = "master";
inputs.nixpkgs.follows = "nixpkgs";
2021-04-19 13:42:29 +02:00
};
2021-07-14 19:40:35 +02:00
flake-utils = {
type = "github";
owner = "numtide";
repo = "flake-utils";
ref = "master";
};
nixos-hardware = {
type = "github";
owner = "NixOS";
repo = "nixos-hardware";
ref = "master";
};
2021-02-06 03:09:11 +01:00
};
2022-01-17 21:56:41 +01:00
outputs = { self, nixpkgs, home-manager, agenix, ... } @inputs: {
2021-07-14 18:20:11 +02:00
nixosModules = {
home = {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.alarsyo = import ./home;
home-manager.verbose = true;
};
2021-08-25 21:39:05 +02:00
nix-path = {
nix.nixPath = [
"nixpkgs=${inputs.nixpkgs}"
];
};
2021-07-14 18:20:11 +02:00
};
2021-07-14 18:05:36 +02:00
overlays = import ./overlays;
2021-07-14 18:06:52 +02:00
nixosConfigurations =
let
2021-07-14 18:05:36 +02:00
system = "x86_64-linux";
2021-07-14 18:06:52 +02:00
shared_overlays = [
(self: super: {
packages = import ./pkgs { pkgs = super; };
# packages accessible through pkgs.unstable.package
unstable = import inputs.nixpkgs-unstable-small {
2021-07-14 18:06:52 +02:00
inherit system;
config.allowUnfree = true;
};
2022-01-17 21:56:41 +01:00
2021-07-14 18:06:52 +02:00
})
2022-01-17 21:56:41 +01:00
agenix.overlay
] ++ builtins.attrValues self.overlays;
2021-08-25 21:56:42 +02:00
sharedModules = [
2022-03-11 13:56:47 +01:00
agenix.nixosModule
2021-08-25 21:56:42 +02:00
home-manager.nixosModule
{ nixpkgs.overlays = shared_overlays; }
] ++ (nixpkgs.lib.attrValues self.nixosModules);
2021-07-14 18:06:52 +02:00
in {
poseidon = nixpkgs.lib.nixosSystem rec {
inherit system;
modules = [
./poseidon.nix
2021-08-25 21:56:42 +02:00
] ++ sharedModules;
2021-07-14 18:06:52 +02:00
};
boreal = nixpkgs.lib.nixosSystem rec {
inherit system;
modules = [
./boreal.nix
{
nixpkgs.overlays = [
inputs.emacs-overlay.overlay
# uncomment this to build everything from scratch, fun but takes a
# while
#
# (self: super: {
# stdenv = super.impureUseNativeOptimizations super.stdenv;
# })
2021-08-25 21:56:42 +02:00
];
2021-07-14 18:06:52 +02:00
}
2021-08-25 21:56:42 +02:00
] ++ sharedModules;
2021-07-14 18:06:52 +02:00
};
2021-07-14 18:05:36 +02:00
2021-07-23 18:47:53 +02:00
zephyrus = nixpkgs.lib.nixosSystem rec {
inherit system;
modules = [
./zephyrus.nix
inputs.nixos-hardware.nixosModules.common-cpu-intel
inputs.nixos-hardware.nixosModules.common-pc-laptop
inputs.nixos-hardware.nixosModules.common-pc-ssd
2021-07-23 18:47:53 +02:00
{
nixpkgs.overlays = [
inputs.emacs-overlay.overlay
2021-08-25 21:56:42 +02:00
];
2021-07-23 18:47:53 +02:00
}
2021-08-25 21:56:42 +02:00
] ++ sharedModules;
2021-07-23 18:47:53 +02:00
};
2021-07-14 18:05:36 +02:00
};
2021-07-14 19:40:35 +02:00
} // inputs.flake-utils.lib.eachDefaultSystem (system: {
packages =
(
inputs.flake-utils.lib.flattenTree
(import ./pkgs { pkgs = import nixpkgs { inherit system; }; })
) // {
emacsPgtkGcc = (
import nixpkgs {
inherit system;
overlays = [ inputs.emacs-overlay.overlay ];
}
).emacsPgtkGcc;
};
2021-07-14 19:40:35 +02:00
});
2021-02-06 03:09:11 +01:00
}