nichts/nyx/flake.nix

282 lines
8.3 KiB
Nix
Raw Normal View History

2024-04-09 23:11:33 +02:00
{
# https://github.com/notashelf/nyx
description = "My NixOS configuration with *very* questionable stability";
outputs = {
self,
flake-parts,
...
} @ inputs:
flake-parts.lib.mkFlake {inherit inputs;} ({withSystem, ...}: {
# systems for which the `perSystem` attributes will be built
systems = [
"x86_64-linux"
"aarch64-linux"
# and more if they can be supported ...
];
imports = [
# add self back to inputs to use as `inputs.self`
# I depend on inputs.self *at least* once
{config._module.args._inputs = inputs // {inherit (inputs) self;};}
# parts and modules from inputs
inputs.flake-parts.flakeModules.easyOverlay
inputs.treefmt-nix.flakeModule
# parts of the flake
./flake/modules # nixos and home-manager modules provided by this flake
./flake/pkgs # packages exposed by the flake
./flake/templates # flake templates
./flake/args.nix # args that are passed to the flake, moved away from the main file
./flake/deployments.nix # deploy-rs configurations for active hosts
./flake/fmt.nix # various formatter configurations for this flake
./flake/iso-images.nix # local installation media
./flake/pre-commit.nix # pre-commit hooks, performed before each commit inside the devShell
./flake/shell.nix # devShells exposed by the flake
];
flake = {
# entry-point for nixos configurations
nixosConfigurations = import ./hosts {inherit inputs withSystem;};
};
});
inputs = {
# Feature-rich and convenient fork of the Nix package manager
nix-super.url = "github:privatevoid-net/nix-super";
# We build against nixos unstable, because stable takes way too long to get things into
# more versions with or without pinned branches can be added if deemed necessary
# stable? never heard of her
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-small.url = "github:NixOS/nixpkgs/nixos-unstable-small"; # moves faster, has less packages
# sometimes nixpkgs breaks something I need, pin a working commit when that occurs
# nixpkgs-pinned.url = "github:NixOS/nixpkgs/b610c60e23e0583cdc1997c54badfd32592d3d3e";
# Powered by
flake-parts = {
url = "github:hercules-ci/flake-parts";
inputs.nixpkgs-lib.follows = "nixpkgs";
};
# Home Manager
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
# Ever wanted nix error messages to be even more cryptic?
# Try flake-utils today! (Devs I beg you please stop)
flake-utils.url = "github:numtide/flake-utils";
# Repo for hardware-specific NixOS modules
nixos-hardware.url = "github:nixos/nixos-hardware";
# Nix wrapper for building and testing my system
nh = {
url = "github:viperML/nh";
inputs.nixpkgs.follows = "nixpkgs";
};
# multi-profile Nix-flake deploy
deploy-rs.url = "github:serokell/deploy-rs";
# A tree-wide formatter
treefmt-nix = {
url = "github:numtide/treefmt-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
nixfmt = {
url = "github:nixos/nixfmt";
flake = false;
};
# Project shells
devshell = {
url = "github:numtide/devshell";
inputs.nixpkgs.follows = "nixpkgs";
};
# guess what this does
# come on, try
pre-commit-hooks = {
url = "github:cachix/pre-commit-hooks.nix";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
};
};
# sandbox wrappers for programs
nixpak = {
url = "github:nixpak/nixpak";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-parts.follows = "flake-parts";
};
# This exists, I guess
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
# Impermanence
# doesn't offer much above properly used symlinks
# but it *is* convenient
impermanence.url = "github:nix-community/impermanence";
# Secure-boot support on nixos
# the interface iss still shaky and I would recommend
# avoiding on production systems for now
lanzaboote = {
url = "github:nix-community/lanzaboote";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
flake-compat.follows = "flake-compat";
};
};
# nix-index database
nix-index-db = {
url = "github:nix-community/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
atticd = {
url = "github:zhaofengli/attic";
inputs.nixpkgs.follows = "nixpkgs-small";
};
# Secrets management
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
# Rust overlay
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
};
};
# Nix Language server
nil = {
url = "github:oxalica/nil";
inputs.nixpkgs.follows = "nixpkgs";
inputs.rust-overlay.follows = "rust-overlay";
};
# neovim nightly packages for nix
neovim-nightly = {
url = "github:nix-community/neovim-nightly-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
# Personal package overlay
nyxpkgs.url = "github:NotAShelf/nyxpkgs";
# Personal neovim-flake
neovim-flake = {
url = "github:NotAShelf/neovim-flake/v0.6";
inputs = {
nixpkgs.follows = "nixpkgs-small";
nil.follows = "nil";
flake-utils.follows = "flake-utils";
flake-parts.follows = "flake-parts";
};
};
air-quality-monitor = {
url = "github:NotAShelf/air-quality-monitor";
inputs.nixpkgs.follows = "nixpkgs-small";
};
# use my own wallpapers repository to provide various wallpapers as nix packages
wallpkgs = {
url = "github:NotAShelf/wallpkgs";
inputs.nixpkgs.follows = "nixpkgs-small";
};
# anyrun program launcher
anyrun.url = "github:Kirottu/anyrun";
anyrun-nixos-options = {
url = "github:n3oney/anyrun-nixos-options";
inputs = {
flake-parts.follows = "flake-parts";
};
};
# aylur's gtk shell (ags)
ags.url = "github:Aylur/ags";
# spicetify for theming spotify
spicetify = {
url = "github:the-argus/spicetify-nix";
inputs.nixpkgs.follows = "nixpkgs-small";
};
# schizophrenic firefox configuration
schizofox = {
url = "github:schizofox/schizofox";
inputs = {
nixpkgs.follows = "nixpkgs-small";
flake-parts.follows = "flake-parts";
nixpak.follows = "nixpak";
};
};
# mailserver on nixos
simple-nixos-mailserver = {
url = "gitlab:simple-nixos-mailserver/nixos-mailserver/master";
inputs.nixpkgs.follows = "nixpkgs-small";
};
# Hyprland & Hyprland Contrib repos
# broken: b0f98a3d3e9e5f5f7f89fa4e855dbeb860e7a0c4
# works: 2ed032a7fd140ee85483a891fa63c16668019577
hyprland.url = "github:hyprwm/Hyprland";
xdg-portal-hyprland.url = "github:hyprwm/xdg-desktop-portal-hyprland";
hyprpicker.url = "github:hyprwm/hyprpicker";
hyprpaper.url = "github:hyprwm/hyprpaper";
hyprland-contrib = {
url = "github:hyprwm/contrib";
inputs.nixpkgs.follows = "nixpkgs-small";
};
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs = {
hyprland.follows = "hyprland";
};
};
};
nixConfig = {
extra-substituters = [
"https://nix-community.cachix.org"
"https://nix-gaming.cachix.org"
"https://hyprland.cachix.org"
"https://cache.privatevoid.net"
"https://nyx.cachix.org"
];
extra-trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"cache.privatevoid.net:SErQ8bvNWANeAvtsOESUwVYr2VJynfuc9JRwlzTTkVg="
"notashelf.cachix.org-1:VTTBFNQWbfyLuRzgm2I7AWSDJdqAa11ytLXHBhrprZk="
"nyx.cachix.org-1:xH6G0MO9PrpeGe7mHBtj1WbNzmnXr7jId2mCiq6hipE="
];
};
}