nixos-config/flake.nix

174 lines
4.6 KiB
Nix

rec {
description = "Lotte's NixOS installation";
# Use NixOS unstable
inputs = {
# Sorted by name
dns = {
url = "github:DarkKirb/dns.nix";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
ema.url = "github:EmaApps/ema";
emanote = {
url = "github:EmaApps/emanote";
inputs.ema.follows = "ema";
inputs.flake-parts.follows = "flake-parts";
inputs.haskell-flake.follows = "haskell-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
flake-parts = {
url = "github:hercules-ci/flake-parts";
inputs.nixpkgs-lib.follows = "nixpkgs";
};
flake-utils.url = "github:numtide/flake-utils";
haskell-flake.url = "github:srid/haskell-flake";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
hosts-list = {
url = "github:StevenBlack/hosts";
flake = false;
};
hydra = {
url = "github:NixOS/hydra";
#inputs.nix.follows = "nix";
#inputs.nixpkgs.follows = "nixpkgs";
};
nix-packages = {
url = "github:DarkKirb/nix-packages";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware.url = "github:NixOS/nixos-hardware";
nixpkgs.url = "github:NixOS/nixpkgs";
nixpkgs-libjxl-update.url = "github:darkkirb/nixpkgs/bump-jxl-0.7.0";
nixpkgs-noto-variable.url = "github:NixOS/nixpkgs/1988f9a17fc1c2ab11f5817adf34a4eb8d06454d";
nur.url = "github:nix-community/NUR";
plasma-manager = {
url = "github:pjones/plasma-manager";
inputs.home-manager.follows = "home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
prismmc = {
url = "github:PrismLauncher/PrismLauncher";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-stable.follows = "nixpkgs";
};
tomlplusplus = {
url = "github:marzer/tomlplusplus";
flake = false;
};
};
outputs = {
self,
nixpkgs,
sops-nix,
home-manager,
nur,
...
} @ args: let
systems = [
{
name = "nixos-8gb-fsn1-1"; # Hetzner Server
system = "x86_64-linux";
}
{
name = "nutty-noon"; # PC
system = "x86_64-linux";
}
{
name = "thinkrac"; # Thinkpad T470
system = "x86_64-linux";
}
{
name = "installer"; # The Installer DVD
system = "x86_64-linux";
}
{
name = "nas"; # My nas
system = "x86_64-linux";
}
#{
# name = "rpi2"; # Raspberry Pi 2
# system = "armv7l-linux";
#}
];
in rec {
nixosConfigurations = builtins.listToAttrs (map
({
name,
system,
}: {
inherit name;
value =
nixpkgs.lib.nixosSystem
{
inherit system;
specialArgs =
args
// {
inherit system;
};
modules = [
(./config + "/${name}.nix")
./config/default.nix
sops-nix.nixosModules.sops
home-manager.nixosModules.home-manager
({pkgs, ...}: {
nixpkgs.overlays = [
nur.overlay
args.prismmc.overlay
];
home-manager.extraSpecialArgs = args // {inherit system;};
})
(import utils/link-input.nix args)
];
};
})
systems);
devShell.x86_64-linux = let
pkgs = import nixpkgs {system = "x86_64-linux";};
in
pkgs.mkShell {
nativeBuildInputs = with pkgs; [
sops
ssh-to-age
nix-prefetch
nix-prefetch-git
jq
bundix
python3
python3Packages.yapf
github-cli
statix
backblaze-b2
];
};
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra;
hydraJobs =
(builtins.listToAttrs (map
({
name,
system,
}: {
inherit name;
value = {
${system} = nixosConfigurations.${name}.config.system.build.toplevel;
};
})
systems))
// {
inherit devShell;
# Uncomment the line to build an installer image
# This is EXTREMELY LARGE and will make builds take forever
# installer.x86_64-linux = nixosConfigurations.installer.config.system.build.isoImage;
};
};
}