nix-config/flake.in.nix
2024-05-07 03:24:10 -04:00

75 lines
2 KiB
Nix

{
inputs = let
mkInput = url: {
url = "github:${url}";
};
mkFollowingNixpkgs = url: {
url = "github:${url}";
inputs.nixpkgs.follows = "nixpkgs";
};
in {
agenix = mkInput "ryantm/agenix";
chaotic = mkInput "chaotic-cx/nyx/nyxpkgs-unstable";
flakegen = mkInput "jorsn/flakegen";
impermanence = mkInput "nix-community/impermanence";
nixpkgs = mkInput "nixos/nixpkgs/nixos-unstable";
nixvim = mkInput "pupbrained/nixvim";
sops-nix = mkInput "Mic92/sops-nix";
treefmt-nix = mkInput "numtide/treefmt-nix";
home-manager = mkFollowingNixpkgs "nix-community/home-manager";
kwin-effects-forceblur = mkFollowingNixpkgs "taj-ny/kwin-effects-forceblur";
nix-index-database = mkFollowingNixpkgs "nix-community/nix-index-database";
snowfall-lib = mkFollowingNixpkgs "snowfallorg/lib/dev";
};
outputs = inputs: let
pkgs = import inputs.nixpkgs {inherit system;};
system = "x86_64-linux";
in
with inputs;
inputs.snowfall-lib.mkFlake {
inherit inputs;
src = ./.;
formatter.${system} = treefmt-nix.lib.mkWrapper pkgs {
projectRootFile = "flake.nix";
programs = {
alejandra.enable = true;
deadnix.enable = true;
};
};
channels-config = {
allowUnfree = true;
};
homes.modules = [
chaotic.homeManagerModules.default
nix-index-database.hmModules.nix-index
];
systems.modules.nixos = [
agenix.nixosModules.default
chaotic.nixosModules.default
impermanence.nixosModules.impermanence
];
devShells.${system}.default = with pkgs;
mkShellNoCC {
packages = [
alejandra
git
statix
(writeScriptBin "build" ''
nix fmt
nh os switch
nh home switch
'')
(writeScriptBin "up" "nix flake update")
];
};
};
}