nix-config/flake.nix

305 lines
9.4 KiB
Nix

{
nixConfig = {
experimental-features = "nix-command flakes";
substitute = "true";
extra-substituters = [
# Main NixOS Cache
"https://cache.nixos.org"
# Colmena Cache
"https://colmena.cachix.org"
# Crane Cache
"https://crane.cachix.org"
# A bunch of nix community projects
"https://isabelroses.cachix.org"
# A bunch of nix community projects
"https://nix-community.cachix.org"
# Nightly wayland packages
"https://nixpkgs-wayland.cachix.org"
# For nh
"https://viperml.cachix.org"
# Lix
"https://cache.lix.systems"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"colmena.cachix.org-1:7BzpDnjjH8ki2CT3f6GdOk7QAzPOl+1t3LvTLXqYcSg="
"crane.cachix.org-1:8Scfpmn9w+hGdXH/Q9tTLiYAE/2dnJYRJP7kl80GuRk="
"isabelroses.cachix.org-1:mXdV/CMcPDaiTmkQ7/4+MzChpOe6Cb97njKmBQQmLPM="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
"viperml.cachix.org-1:qZhKBMTfmcLL+OG6fj/hzsMEedgKvZVFRRAhq7j8Vh8="
"cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
];
cores = 0;
max-jobs = 8;
netrc-file = "/home/thehedgehog/.netrc";
};
description = "PyroNet machines and services";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nixpkgs-jellyfin.url = "github:minijackson/nixpkgs/jellyfin-10.9.0";
# Override certain inputs for other repos to reduce lockfile size and increase code sharing.
flake-compat.url = "github:edolstra/flake-compat";
systems.url = "github:nix-systems/default";
flake-parts = {
url = "github:hercules-ci/flake-parts";
inputs.nixpkgs-lib.follows = "nixpkgs-lib";
};
flake-utils = {
url = "github:numtide/flake-utils";
inputs.systems.follows = "systems";
};
nixpkgs-lib.url = "github:nix-community/nixpkgs.lib";
# Actual inputs
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
inputs.home-manager.follows = "home-manager";
};
alejandra = {
url = "github:kamadorueda/alejandra";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flakeCompat.follows = "flake-compat";
};
buildbot-nix = {
url = "github:Mic92/buildbot-nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-parts.follows = "flake-parts";
};
conduit = {
url = "gitlab:famedly/conduit";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-compat.follows = "flake-compat";
inputs.attic.inputs.flake-utils.follows = "flake-utils";
inputs.attic.inputs.flake-compat.follows = "flake-compat";
inputs.attic.inputs.nixpkgs.follows = "nixpkgs";
inputs.attic.inputs.nixpkgs-stable.follows = "nixpkgs";
};
ctp = {
url = "github:catppuccin/nix";
};
dns = {
url = "github:kirelagin/dns.nix";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
golink = {
url = "github:tailscale/golink";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
hardware = {
url = "github:nixos/nixos-hardware";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
iceshrimp = {
url = "git+https://iceshrimp.dev/pyrox/packaging";
inputs.nixpkgs.follows = "nixpkgs";
};
# lanzaboote = {
# url = "github:nix-community/lanzaboote/11e293475de0c010f86060f0ed74aafe5f593e8b";
# inputs.flake-compat.follows = "flake-compat";
# inputs.flake-utils.follows = "flake-utils";
# };
lix = {
url = "git+https://git.lix.systems/lix-project/lix";
flake = false;
};
lix-module = {
url = "git+https://git.lix.systems/lix-project/nixos-module";
inputs.lix.follows = "lix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
};
mailserver = {
url = "gitlab:simple-nixos-mailserver/nixos-mailserver/master";
inputs.flake-compat.follows = "flake-compat";
inputs.utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
mkshell-minimal = {
url = "github:viperML/mkshell-minimal";
};
neovim = {
url = "github:neovim/neovim/v0.9.5?dir=contrib";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
};
nh = {
url = "github:viperML/nh";
inputs.nixpkgs.follows = "nixpkgs";
};
nixd = {
url = "github:nix-community/nixd";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-parts.follows = "flake-parts";
};
nix-index = {
url = "github:nix-community/nix-index";
inputs.flake-compat.follows = "flake-compat";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-index-database = {
url = "github:Mic92/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
nur.url = "github:nix-community/nur";
prismlauncher = {
url = "github:PrismLauncher/PrismLauncher";
inputs.flake-compat.follows = "flake-compat";
inputs.flake-parts.follows = "flake-parts";
inputs.nixpkgs.follows = "nixpkgs";
inputs.pre-commit-hooks.inputs.flake-utils.follows = "flake-utils";
inputs.pre-commit-hooks.inputs.flake-compat.follows = "flake-compat";
inputs.pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs";
inputs.pre-commit-hooks.inputs.nixpkgs-stable.follows = "nixpkgs";
};
my-pkgs = {
url = "git+https://git.pyrox.dev/pyrox/pkgs";
inputs.nixpkgs.follows = "nixpkgs";
};
wayland = {
url = "github:nix-community/nixpkgs-wayland";
inputs.flake-compat.follows = "flake-compat";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nix-eval-jobs.inputs.flake-parts.follows = "flake-parts";
inputs.nix-eval-jobs.inputs.nixpkgs.follows = "nixpkgs";
inputs.lib-aggregate.inputs.flake-utils.follows = "flake-utils";
inputs.lib-aggregate.inputs.nixpkgs-lib.follows = "nixpkgs-lib";
};
};
outputs = inputs @ {
self,
nixpkgs,
nixpkgs-jellyfin,
alejandra,
buildbot-nix,
ctp,
golink,
hardware,
iceshrimp,
# lanzaboote,
lix-module,
mailserver,
mkshell-minimal,
neovim,
nix-index,
nix-index-database,
nixd,
nur,
my-pkgs,
prismlauncher,
wayland,
...
}: let
alejandra-overlay = final: prev: {
alejandra = alejandra.defaultPackage.${prev.system};
};
my-pkgs2 = final: prev: {my-pkgs = self.packages."${prev.system}";};
nix-index-overlay = final: prev: {
inherit (nix-index.packages.${system}) nix-index;
};
jellyfin-overlay = final: prev: {
inherit (nixpkgs-jellyfin.legacyPackages.${prev.system}) jellyfin jellyfin-web;
};
system = "x86_64-linux";
overlays = [
jellyfin-overlay
my-pkgs.overlays.cinny
my-pkgs2
alejandra-overlay
golink.overlay
# lanzaboote.overlays.default
lix-module.overlays.default
neovim.overlay
nixd.overlays.default
nix-index-overlay
nur.overlay
prismlauncher.overlays.default
wayland.overlays.default
];
pkgs = import nixpkgs {
inherit overlays;
localSystem = "x86_64-linux";
config = {
allowUnfree = true;
joypixels.acceptLicense = true;
permittedInsecurePackages = ["electron-19.0.7" "openssl-1.1.1t" "nodejs-16.20.0"];
};
};
mkShell = mkshell-minimal pkgs;
lib = nixpkgs.lib;
data = import ./data;
inherit (import ./lib { inherit self lib pkgs inputs data; }) myLib;
in rec {
packages.${system} = {
"caddy" = pkgs.callPackage ./pkgs/caddyBin.nix {};
"go-jamming" = pkgs.callPackage ./pkgs/go-jamming.nix {};
"nerdfont-symbols" = pkgs.callPackage ./pkgs/nerdfont-symbols.nix {};
"olympus" = pkgs.callPackage ./pkgs/olympus.nix {};
};
nixosModules = {
default = import ./modules/pyrox.nix;
dn42-pingfinder = import ./modules/dn42-pingfinder.nix;
};
nixosConfigurations.marvin = myLib.hosts.mkHost {
hostname = "marvin";
coreCount = 12;
extraModules = [
iceshrimp.nixosModules.default
golink.nixosModules.default
buildbot-nix.nixosModules.buildbot-master
buildbot-nix.nixosModules.buildbot-worker
nixosModules.default
];
};
nixosConfigurations.prefect = myLib.hosts.mkHost {
hostname = "prefect";
coreCount = 4;
extraModules = [
mailserver.nixosModule
self.nixosModules.dn42-pingfinder
];
};
nixosConfigurations.thought = myLib.hosts.mkHost {
hostname = "thought";
coreCount = 3;
extraModules = [
self.nixosModules.dn42-pingfinder
];
users = ["pyrox"];
};
nixosConfigurations.zaphod = myLib.hosts.mkHost {
hostname = "zaphod";
profile = "desktop";
coreCount = 8;
extraModules = [
hardware.nixosModules.framework-16-7040-amd
];
users = ["thehedgehog"];
};
devShells.${system}.default = mkShell {
buildInputs = [
# deploy-rs.packages.${system}.default
# colmena.packages.${system}.colmena
];
};
};
}