dotfiles/flake.nix

154 lines
4.3 KiB
Nix

{
description = "toph's system configuration";
inputs = {
# Core
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
master.url = "github:NixOS/nixpkgs/master";
# Flake framework
flake-parts.url = "github:hercules-ci/flake-parts";
easy-hosts.url = "github:tgirlcloud/easy-hosts";
deploy-rs.url = "github:serokell/deploy-rs";
# System management
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
darwin = {
url = "github:lnl7/nix-darwin";
inputs.nixpkgs.follows = "nixpkgs";
};
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
# Secrets management
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
};
agenix-rekey = {
url = "github:oddlama/agenix-rekey";
inputs.nixpkgs.follows = "nixpkgs";
};
# Desktop usage
stylix = {
url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
niri.url = "github:sodiboo/niri-flake";
noctalia = {
url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "unstable";
};
affinity-nix.url = "github:mrshmllow/affinity-nix";
musnix.url = "github:musnix/musnix";
flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0";
git-global-log.url = "github:tophcodes/git-global-log";
nur = {
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs";
};
community-solid-server = {
url = "github:tophcodes/CommunitySolidServer.nix/main";
};
# Custom
ovos = {
url = "git+file:///home/christopher/workspaces/mine/ovos-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
waka-victoriametrics = {
url = "git+file:///home/christopher/workspaces/mine/waka-victoriametrics";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs @ {
flake-parts,
nixpkgs,
...
}:
flake-parts.lib.mkFlake {inherit inputs;} (top @ {
config,
withSystem,
moduleWithSystem,
...
}: {
imports = [
inputs.agenix-rekey.flakeModules.default
./modules/flake
];
});
# (inputs.snowfall.mkFlake {
# inherit inputs;
# src = ./.;
# # Exposes all internal libs and packages as `lib._elements` or `pkgs._elements` respectively
# snowfall.namespace = "_elements";
# # Global system modules to be included for all systems
# systems.modules = with inputs; {
# nixos = [
# disko.nixosModules.default
# ./modules/common
# ];
# darwin = [
# stylix.darwinModules.stylix
# ./modules/common
# ];
# };
# # Add modules only to specific hosts
# systems.hosts = with inputs; {
# cobalt.modules = [
# niri.nixosModules.niri
# stylix.nixosModules.stylix
# musnix.nixosModules.default
# ovos.nixosModules.default
# waka-victoriametrics.nixosModules.default
# ];
# };
# homes.users = {
# # TODO: For some reason this needs to be toggled for agenix to work?
# # "christopher@cobalt".modules = with inputs; [
# # niri.homeModules.niri
# # ];
# };
# # Configure nixpkgs when instantiating the package set
# # TODO: This is already specified elsewhere. Still needed here?
# channels-config = {
# allowUnfree = true;
# permittedInsecurePackages = [];
# };
# overlays = with inputs; [
# niri.overlays.niri
# nur.overlays.default
# ovos.overlays.default
# (final: prev: {
# waka-victoriametrics = waka-victoriametrics.packages.${final.system}.default;
# })
# ];
# outputs-builder = channels: {
# formatter = channels.nixpkgs.alejandra;
# };
# })
# // {
# agenix-rekey = inputs.agenix-rekey.configure {
# userFlake = inputs.self;
# nixosConfigurations = inputs.self.nixosConfigurations // inputs.self.darwinConfigurations;
# homeConfigurations = inputs.self.homeConfigurations;
# };
# };
# }
}