282 lines
8.3 KiB
Nix
282 lines
8.3 KiB
Nix
![]() |
{
|
||
|
# 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="
|
||
|
];
|
||
|
};
|
||
|
}
|