nix-conf/flake.nix
2023-03-01 19:51:03 +01:00

356 lines
11 KiB
Nix

{
inputs = {
# nixpkgs (Packges and modules)
nixpkgs.url = github:NixOS/nixpkgs/nixos-unstable;
# Nix Hardware (Hardware configs)
nixos-hardware.url = github:NixOS/nixos-hardware;
# NUR (User Packges)
nur.url = github:nix-community/NUR;
# Home Manger (Dot files)
home-manager = {
url = github:nix-community/home-manager;
inputs.nixpkgs.follows = "nixpkgs";
inputs.utils.follows = "flake-utils";
};
# Nix Darwin (Mac OS support)
nix-darwin = {
url = github:LnL7/nix-darwin;
inputs.nixpkgs.follows = "nixpkgs";
};
# Image generators
nixos-generators = {
url = github:nix-community/nixos-generators;
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixlib.follows = "nixlib";
};
# PrismLauncher (git version of PrismLauncher)
prismlauncher = {
url = github:PrismLauncher/PrismLauncher;
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-compat.follows = "flake-compat";
inputs.libnbtplusplus.follows = "libnbtplusplus";
};
libnbtplusplus = {
url = github:PrismLauncher/libnbtplusplus;
flake = false;
};
# vscode extensions
nix-vscode-extensions = {
url = github:nix-community/nix-vscode-extensions;
inputs.flake-compat.follows = "flake-compat";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
snowfall-lib = {
url = github:snowfallorg/lib;
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-compat.follows = "flake-compat";
inputs.flake-utils-plus.follows = "flake-utils-plus";
};
snowfall-flake = {
url = github:snowfallorg/flake;
inputs.nixpkgs.follows = "nixpkgs";
inputs.unstable.follows = "nixpkgs";
inputs.flake-compat.follows = "flake-compat";
inputs.snowfall-lib.follows = "snowfall-lib";
};
comma = {
url = github:nix-community/comma;
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-compat.follows = "flake-compat";
inputs.utils.follows = "flake-utils";
inputs.naersk.follows = "naersk";
};
deploy-rs = {
url = github:serokell/deploy-rs;
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-compat.follows = "flake-compat";
inputs.utils.follows = "flake-utils";
};
peerix = {
url = github:cid-chan/peerix;
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-compat.follows = "flake-compat";
inputs.flake-utils.follows = "flake-utils";
};
agenix = {
url = github:ryantm/agenix;
inputs.nixpkgs.follows = "nixpkgs";
inputs.darwin.follows = "nix-darwin";
};
# Dependcies
flake-compat = {
url = github:edolstra/flake-compat;
flake = false;
};
flake-utils.url = github:numtide/flake-utils;
nixlib.url = github:nix-community/nixpkgs.lib;
naersk = {
url = github:nix-community/naersk;
inputs.nixpkgs.follows = "nixpkgs";
};
flake-utils-plus = {
url = github:gytis-ivaskevicius/flake-utils-plus;
inputs.flake-utils.follows = "flake-utils";
};
# Nix registery
agda = {
url = github:agda/agda;
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
arion = {
url = github:hercules-ci/arion;
inputs.flake-parts.follows = "flake-parts";
inputs.nixpkgs.follows = "nixpkgs";
inputs.haskell-flake.follows = "haskell-flake";
};
haskell-flake.url = github:srid/haskell-flake;
blender-bin = {
url = github:edolstra/nix-warez?dir=blender;
inputs.nixpkgs.follows = "nixpkgs";
};
composable = {
url = github:ComposableFi/composable;
inputs.arion-src.follows = "arion";
inputs.bundlers.follows = "bundlers";
inputs.crane.follows = "crane";
inputs.devenv.follows = "devenv";
inputs.flake-parts.follows = "flake-parts";
inputs.helix.follows = "helix";
inputs.nix-std.follows = "nix-std";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-working-nixops.follows = "nixpkgs";
inputs.npm-buildpackage.follows = "npm-buildpackage";
inputs.rust-overlay.follows = "rust-overlay";
};
crane = {
url = github:ipetkov/crane;
inputs.flake-compat.follows = "flake-compat";
inputs.flake-utils.follows = "flake-utils";
inputs.rust-overlay.follows = "rust-overlay";
};
rust-overlay = {
url = github:oxalica/rust-overlay;
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
devenv = {
url = github:cachix/devenv;
inputs.flake-compat.follows = "flake-compat";
inputs.nix.follows = "nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.pre-commit-hooks.follows = "pre-commit-hooks";
};
pre-commit-hooks = {
url = github:cachix/pre-commit-hooks.nix;
inputs.flake-compat.follows = "flake-compat";
inputs.flake-utils.follows = "flake-utils";
inputs.gitignore.follows = "gitignore";
inputs.pre-commit-hooks.follows = "pre-commit-hooks";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-stable.follows = "nixpkgs";
};
gitignore = {
url = github:hercules-ci/gitignore.nix;
inputs.nixpkgs.follows = "nixpkgs";
};
npm-buildpackage = {
url = github:serokell/nix-npm-buildpackage;
inputs.nixpkgs.follows = "nixpkgs";
};
nix-std.url = github:chessai/nix-std;
dreampkgs = {
url = github:nix-community/dreampkgs;
inputs.dream2nix.follows = "dream2nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.src_amber.follows = "amber";
inputs.src_eureka.follows = "eureka";
inputs.src_httpie.follows = "httpie";
inputs.src_labelme.follows = "labelme";
inputs.src_mattermost-desktop.follows = "mattermost-desktop";
inputs.src_mattermost-webapp.follows = "mattermost-webapp";
};
amber = {
url = github:dalance/amber;
flake = false;
};
eureka = {
url = github:simeg/eureka;
flake = false;
};
httpie = {
url = github:httpie/httpie;
flake = false;
};
labelme = {
url = github:wkentaro/labelme;
flake = false;
};
mattermost-desktop = {
url = github:mattermost/desktop;
flake = false;
};
mattermost-webapp = {
url = github:mattermost/mattermost-webapp;
flake = false;
};
dream2nix = {
url = github:nix-community/dream2nix;
inputs.alejandra.follows = "alejandra";
inputs.crane.follows = "crane";
inputs.devshell.follows = "devshell";
inputs.flake-utils-pre-commit.follows = "flake-utils";
inputs.gomod2nix.follows = "gomod2nix";
inputs.mach-nix.follows = "mach-nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.node2nix.follows = "node2nix";
inputs.poetry2nix.follows = "poetry2nix";
inputs.pre-commit-hooks.follows = "pre-commit-hooks";
};
alejandra = {
url = github:kamadorueda/alejandra;
inputs.nixpkgs.follows = "nixpkgs";
inputs.flakeCompat.follows = "flake-compat";
};
devshell.url = github:numtide/devshell;
gomod2nix.url = github:tweag/gomod2nix;
node2nix.url = github:svanderburg/node2nix;
dwarffs.url = github:edolstra/dwarffs;
emacs-overlay.url = github:nix-community/emacs-overlay;
fenix.url = github:nix-community/fenix;
flake-parts.url = github:hercules-ci/flake-parts;
gemini.url = github:nix-community/flake-gemini;
hercules-ci-effects.url = github:hercules-ci/hercules-ci-effects;
hercules-ci-agent.url = github:hercules-ci/hercules-ci-agent;
hydra.url = github:NixOS/hydra;
mach-nix.url = github:DavHau/mach-nix;
nimble.url = github:nix-community/flake-nimble;
nix.url = github:NixOS/nix;
nixops.url = github:NixOS/nixops;
nixos-homepage.url = github:NixOS/nixos-homepage;
nixos-search.url = github:NixOS/nixos-search;
templates.url = github:NixOS/templates;
patchelf.url = github:NixOS/patchelf;
poetry2nix.url = github:nix-community/poetry2nix;
nix-serve.url = github:edolstra/nix-serve;
nickel.url = github:tweag/nickel;
bundlers = {
url = github:NixOS/bundlers;
inputs.nixpkgs.follows = "nixpkgs";
inputs.nix-bundle.follows = "nix-bundle";
inputs.nix-utils.follows = "nix-utils";
};
nix-bundle = {
url = github:matthewbauer/nix-bundle;
inputs.nixpkgs.follows = "nixpkgs";
};
nix-utils = {
url = github:juliosueiras-nix/nix-utils;
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
};
pridefetch.url = github:SpyHoodle/pridefetch;
helix.url = github:helix-editor/helix;
sops-nix.url = github:Mic92/sops-nix;
};
outputs = inputs:
let
lib = inputs.snowfall-lib.mkLib {
inherit inputs;
src = ./.;
};
in
lib.mkFlake {
package-namespace = "custom";
channels-config.allowUnfree = true;
overlays = with inputs; [
nur.overlay
snowfall-flake.overlay
prismlauncher.overlay
];
systems.modules = with inputs; [
home-manager.nixosModules.home-manager
nur.nixosModules.nur
peerix.nixosModules.peerix
agenix.nixosModules.default
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
};
system.stateVersion = "23.05";
nix.registry = {
agda.flake = agda;
arion.flake = arion;
blender-bin.flake = blender-bin;
composable.flake = composable;
dreampkgs.flake = dreampkgs;
dwarffs.flake = dwarffs;
emacs-overlay.flake = emacs-overlay;
fenix.flake = fenix;
flake-parts.flake = flake-parts;
flake-utils.flake = flake-utils;
gemini.flake = gemini;
hercules-ci-effects.flake = hercules-ci-effects;
hercules-ci-agent.flake = hercules-ci-agent;
home-manager.flake = home-manager;
hydra.flake = hydra;
mach-nix.flake = mach-nix;
nimble.flake = nimble;
nix.flake = nix;
nix-darwin.flake = nix-darwin;
nixops.flake = nixops;
nixos-hardware.flake = nixos-hardware;
nixos-homepage.flake = nixos-homepage;
nixos-search.flake = nixos-search;
nur.flake = nur;
nixpkgs.flake = nixpkgs;
templates.flake = templates;
patchelf.flake = patchelf;
poetry2nix.flake = poetry2nix;
nix-serve.flake = nix-serve;
nickel.flake = nickel;
bundlers.flake = bundlers;
pridefetch.flake = pridefetch;
helix.flake = helix;
sops-nix.flake = sops-nix;
};
nix.nixPath = [ "nixpkgs=/etc/channels/nixpkgs" "nixos-config=/etc/nixos/configuration.nix" "/nix/var/nix/profiles/per-user/root/channels" ];
environment.etc."channels/nixpkgs".source = inputs.nixpkgs.outPath;
}
];
systems.hosts.yokai.modules = with inputs; [
nixos-hardware.nixosModules.pine64-pinebook-pro
];
deploy = lib.mkDeploy { inherit (inputs) self; };
checks =
builtins.mapAttrs
(system: deploy-lib:
deploy-lib.deployChecks inputs.self.deploy)
inputs.deploy-rs.lib;
};
}