nix-config/flake.in.nix

144 lines
4.5 KiB
Nix
Raw Normal View History

2024-05-07 03:23:55 -04:00
{
inputs = let
2024-05-28 04:08:06 -04:00
mkCustomUrl = url: {inherit url;};
2024-05-16 02:40:39 -04:00
2024-05-28 04:08:06 -04:00
mkInput = url: {url = "github:${url}";};
2024-05-07 03:23:55 -04:00
mkFollowingNixpkgs = url: {
url = "github:${url}";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-05-28 04:08:06 -04:00
mkFollowing = url: input: {
url = "github:${url}";
inputs.${input}.follows = input;
};
mkWithSubmodules = url: {
inherit url;
submodules = true;
type = "git";
};
2024-05-07 03:23:55 -04:00
in {
agenix = mkInput "ryantm/agenix";
2024-05-16 02:40:39 -04:00
catppuccin = mkInput "catppuccin/nix";
2024-05-07 03:23:55 -04:00
chaotic = mkInput "chaotic-cx/nyx/nyxpkgs-unstable";
2024-05-28 04:08:06 -04:00
hyprland = mkWithSubmodules "https://github.com/hyprwm/Hyprland";
hyprland-plugins = mkFollowing "hyprwm/hyprland-plugins" "hyprland";
2024-05-07 03:23:55 -04:00
impermanence = mkInput "nix-community/impermanence";
2024-05-28 04:08:06 -04:00
nix-colors = mkInput "Misterio77/nix-colors";
nixpkgs = mkInput "NixOS/nixpkgs/nixos-unstable";
2024-05-16 02:42:33 -04:00
nix-super = mkCustomUrl "git+https://git.privatevoid.net/max/nix-super.git";
2024-05-07 03:23:55 -04:00
nixvim = mkInput "pupbrained/nixvim";
2024-05-16 02:40:39 -04:00
schizofox = mkInput "schizofox/schizofox";
2024-05-07 03:23:55 -04:00
sops-nix = mkInput "Mic92/sops-nix";
treefmt-nix = mkInput "numtide/treefmt-nix";
home-manager = mkFollowingNixpkgs "nix-community/home-manager";
nix-index-database = mkFollowingNixpkgs "nix-community/nix-index-database";
2024-05-16 02:40:39 -04:00
snowfall-flake = mkFollowingNixpkgs "snowfallorg/flake";
2024-05-07 03:23:55 -04:00
snowfall-lib = mkFollowingNixpkgs "snowfallorg/lib/dev";
};
2024-05-16 02:40:39 -04:00
outputs = {...} @ inputs:
with inputs; let
pkgs = import nixpkgs {inherit system;};
system = "x86_64-linux";
in
snowfall-lib.mkFlake {
2024-05-07 03:23:55 -04:00
inherit inputs;
src = ./.;
formatter.${system} = treefmt-nix.lib.mkWrapper pkgs {
projectRootFile = "flake.nix";
programs = {
alejandra.enable = true;
deadnix.enable = true;
};
};
2024-05-16 02:40:39 -04:00
overlays = [
snowfall-flake.overlays.default
2024-05-28 04:08:06 -04:00
(_final: prev: {
2024-05-16 02:40:39 -04:00
nixSuper = nix-super.packages.${system}.default;
2024-05-28 04:08:06 -04:00
ccacheWrapper = prev.ccacheWrapper.override {
extraConfig = ''
export CCACHE_COMPRESS=1
export CCACHE_DIR="${config.programs.ccache.cacheDir}"
export CCACHE_UMASK=007
if [ ! -d "$CCACHE_DIR" ]; then
echo "====="
echo "Directory '$CCACHE_DIR' does not exist"
echo "Please create it with:"
echo " sudo mkdir -m0770 '$CCACHE_DIR'"
echo " sudo chown root:nixbld '$CCACHE_DIR'"
echo "====="
exit 1
fi
if [ ! -w "$CCACHE_DIR" ]; then
echo "====="
echo "Directory '$CCACHE_DIR' is not accessible for user $(whoami)"
echo "Please verify its access permissions"
echo "====="
exit 1
fi
'';
};
picom = prev.picom.overrideAttrs {
src = prev.fetchFromGitHub {
owner = "yshui";
repo = "picom";
rev = "94faacbd4ac917cca5abac3ac5c539f5fe1dc61d";
hash = "sha256-KfMy8lV3FMS+AWDozlpPRkXX1eZCWsj39Y5T8q+c9Bs=";
fetchSubmodules = true;
};
};
2024-05-16 02:40:39 -04:00
})
];
2024-05-07 03:23:55 -04:00
channels-config = {
2024-05-16 02:40:39 -04:00
allowAliases = true;
2024-05-07 03:23:55 -04:00
allowUnfree = true;
2024-05-16 02:40:39 -04:00
allowUnsupportedSystem = true;
cudaSupport = true;
permittedInsecurePackages = ["freeimage-unstable-2021-11-01"];
home-manager.useGlobalPkgs = true;
2024-05-07 03:23:55 -04:00
};
homes.modules = [
2024-05-16 02:40:39 -04:00
catppuccin.homeManagerModules.catppuccin
2024-05-28 04:08:06 -04:00
chaotic.homeManagerModules.default
hyprland.homeManagerModules.default
nix-colors.homeManagerModules.default
2024-05-07 03:23:55 -04:00
nix-index-database.hmModules.nix-index
2024-05-16 02:40:39 -04:00
schizofox.homeManagerModules.default
2024-05-07 03:23:55 -04:00
];
2024-05-28 04:08:06 -04:00
systems.modules.nixos = [
agenix.nixosModules.default
catppuccin.nixosModules.catppuccin
chaotic.nixosModules.default
impermanence.nixosModules.impermanence
];
2024-05-07 03:23:55 -04:00
devShells.${system}.default = with pkgs;
mkShellNoCC {
packages = [
alejandra
git
2024-05-16 02:40:39 -04:00
nvfetcher
2024-05-07 03:23:55 -04:00
statix
(writeScriptBin "build" ''
nix fmt
2024-05-16 02:40:39 -04:00
nh os switch . -- --impure
2024-05-07 03:23:55 -04:00
nh home switch
'')
(writeScriptBin "up" "nix flake update")
];
};
};
}