nixos-configs/flake.nix

565 lines
11 KiB
Nix
Raw Normal View History

2023-09-29 23:46:34 -04:00
{
2023-12-03 04:50:17 -05:00
outputs = inputs @ {
self,
nixpkgs,
2023-12-08 14:59:44 -05:00
nix-on-droid,
secrets,
...
2023-12-03 04:50:17 -05:00
}: let
supportedSystems = ["x86_64-linux" "aarch64-linux"];
2023-12-03 02:24:11 -05:00
2023-12-03 04:50:17 -05:00
perSystem = attrs:
nixpkgs.lib.genAttrs supportedSystems (system: let
pkgs = nixpkgs.legacyPackages.${system};
in
attrs system pkgs);
2023-12-03 02:24:11 -05:00
2023-12-03 04:50:17 -05:00
# Default system
mkNixOS = mods:
nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = inputs;
modules =
[
{home-manager.extraSpecialArgs = inputs;}
./common
]
++ mods;
};
# Nix-On-Droid
inherit (nix-on-droid.lib) nixOnDroidConfiguration;
in {
nixosConfigurations = {
wim = mkNixOS [
./devices/wim
secrets.nixosModules.default
];
binto = mkNixOS [./devices/binto];
2023-12-06 13:59:14 -05:00
2024-03-02 02:59:40 -05:00
nos = mkNixOS [
./devices/nos
secrets.nixosModules.nos
];
servivi = mkNixOS [
./devices/servivi
secrets.nixosModules.servivi
];
# Cluster
thingone = mkNixOS [
(import ./devices/cluster "thingone")
2024-01-21 22:11:38 -05:00
secrets.nixosModules.thingy
];
thingtwo = mkNixOS [
(import ./devices/cluster "thingtwo")
2024-01-21 22:11:38 -05:00
secrets.nixosModules.thingy
];
live-image = mkNixOS [
("${nixpkgs}/nixos/modules/installer/"
+ "cd-dvd/installation-cd-minimal.nix")
2024-01-06 11:35:45 -05:00
{home-manager.users.nixos.home.stateVersion = "24.05";}
{
vars = {
mainUser = "nixos";
hostName = "nixos";
};
}
];
};
nixOnDroidConfigurations.default = nixOnDroidConfiguration (
import ./devices/android inputs
);
2023-12-08 14:59:44 -05:00
formatter = perSystem (_: pkgs: pkgs.alejandra);
# CI: https://github.com/Mic92/dotfiles/blob/c2f538934d67417941f83d8bb65b8263c43d32ca/flake.nix#L168
checks = perSystem (system: pkgs: let
inherit (pkgs.lib) filterAttrs mapAttrs' nameValuePair;
nixosMachines = mapAttrs' (
name: config: nameValuePair "nixos-${name}" config.config.system.build.toplevel
) ((filterAttrs (_: config: config.pkgs.system == system)) self.nixosConfigurations);
devShells = mapAttrs' (n: nameValuePair "devShell-${n}") self.devShells;
in
nixosMachines // devShells);
devShells = perSystem (_: pkgs: {
default = pkgs.mkShell {
packages = with pkgs; [
alejandra
git
(writeShellScriptBin "mkIso" (lib.concatStrings [
"nix build $(realpath /etc/nixos)#nixosConfigurations."
"live-image.config.system.build.isoImage"
]))
];
};
2024-03-01 01:34:42 -05:00
ags = pkgs.mkShell {
packages = with pkgs; [
nodejs_latest
2024-03-01 01:34:42 -05:00
];
};
2024-03-26 11:44:41 -04:00
node-dev = pkgs.mkShell {
packages = with pkgs;
[
nodejs_latest
ffmpeg
2024-03-26 11:44:41 -04:00
typescript
]
++ (with nodePackages; [
ts-node
]);
};
});
};
2023-09-29 23:46:34 -04:00
inputs = {
# Main inputs
nixpkgs = {
type = "github";
owner = "NixOS";
repo = "nixpkgs";
ref = "nixos-unstable";
};
home-manager = {
type = "github";
2024-03-12 19:44:05 -04:00
owner = "nix-community";
repo = "home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-04-22 11:40:48 -04:00
nix-on-droid = {
type = "github";
owner = "nix-community";
repo = "nix-on-droid";
2024-04-10 14:56:34 -04:00
inputs = {
nixpkgs.follows = "nixpkgs";
2024-04-22 11:40:48 -04:00
home-manager.follows = "home-manager";
2024-04-10 14:56:34 -04:00
};
};
2024-04-22 11:40:48 -04:00
sops-nix = {
type = "github";
2024-04-22 11:40:48 -04:00
owner = "Mic92";
repo = "sops-nix";
2024-04-22 11:40:48 -04:00
inputs.nixpkgs.follows = "nixpkgs";
};
secrets = {
type = "git";
url = "ssh://git@git.nelim.org/matt1432/nixos-secrets";
inputs = {
nixpkgs.follows = "nixpkgs";
2024-04-22 11:40:48 -04:00
sops-nix.follows = "sops-nix";
};
2023-12-08 14:59:44 -05:00
};
2024-04-22 11:40:48 -04:00
#
2023-12-08 14:59:44 -05:00
# Overlays
nixpkgs-wayland = {
type = "github";
owner = "nix-community";
repo = "nixpkgs-wayland";
};
nur = {
type = "github";
owner = "nix-community";
repo = "NUR";
};
nix-gaming = {
type = "github";
2024-03-12 19:44:05 -04:00
owner = "fufexan";
repo = "nix-gaming";
2023-11-28 21:43:26 -05:00
};
2024-04-22 11:40:48 -04:00
#
2023-11-28 21:43:26 -05:00
# Cluster Inputs
2024-02-01 11:48:38 -05:00
pcsd = {
type = "github";
owner = "matt1432";
2024-02-01 11:48:38 -05:00
repo = "nixos-pcsd";
};
2023-11-28 21:43:26 -05:00
headscale = {
type = "github";
owner = "juanfont";
repo = "headscale";
# FIXME: doesn't work on latest
rev = "fef8261339899fe526777a7aa42df57ca02021c5";
2023-11-28 21:43:26 -05:00
inputs.nixpkgs.follows = "nixpkgs";
2023-11-29 22:15:31 -05:00
};
2023-11-29 22:15:31 -05:00
caddy-plugins = {
type = "github";
owner = "matt1432";
repo = "nixos-caddy-cloudflare";
2023-11-29 22:15:31 -05:00
inputs.nixpkgs.follows = "nixpkgs";
2023-09-29 23:46:34 -04:00
};
2024-04-22 11:40:48 -04:00
#
2023-09-29 23:46:34 -04:00
# Servivi inputs
nms = {
type = "github";
owner = "matt1432";
repo = "nixos-minecraft-servers";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-04-22 11:40:48 -04:00
#
# Nos inputs
arion = {
type = "github";
owner = "hercules-ci";
repo = "arion";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-04-04 08:57:19 -04:00
jellyfin-flake = {
type = "github";
owner = "matt1432";
repo = "nixos-jellyfin";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-04-04 08:57:19 -04:00
subsync = {
type = "github";
owner = "matt1432";
repo = "subsync";
# Keep version that uses Sphinxbase
rev = "ee9e1592ae4ec7c694d8857aa72be079d81ea209";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-04-22 11:40:48 -04:00
#
2024-04-04 08:57:19 -04:00
# Desktop inputs
2024-04-22 11:40:48 -04:00
## Hyprland
hyprland = {
2024-05-07 22:50:49 -04:00
type = "git";
2024-05-10 14:18:50 -04:00
# FIXME: wait for https://github.com/hyprwm/Hyprland/pull/5952
url = "https://github.com/andresilva/Hyprland";
ref = "nix-build-improvements";
2024-05-07 22:50:49 -04:00
submodules = true;
inputs.nixpkgs.follows = "nixpkgs";
};
2024-04-13 00:55:18 -04:00
2024-05-07 22:50:49 -04:00
hypr-official-plugins = {
type = "github";
owner = "hyprwm";
2024-05-07 22:50:49 -04:00
repo = "hyprland-plugins";
2024-05-07 22:50:49 -04:00
inputs.hyprland.follows = "hyprland";
};
2024-04-13 00:55:18 -04:00
2024-05-07 22:50:49 -04:00
Hyprspace = {
type = "github";
2024-05-07 22:50:49 -04:00
owner = "KZDKM";
repo = "Hyprspace";
inputs.hyprland.follows = "hyprland";
};
2024-05-05 22:43:03 -04:00
2024-05-07 22:50:49 -04:00
hypridle = {
type = "github";
owner = "hyprwm";
repo = "hypridle";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-05-05 22:43:03 -04:00
grim-hyprland = {
type = "github";
owner = "eriedaberrie";
repo = "grim-hyprland";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-04-22 11:40:48 -04:00
##
2023-09-29 23:46:34 -04:00
2024-04-22 11:40:48 -04:00
## Wayland
2024-04-21 14:57:38 -04:00
wpaperd = {
type = "github";
owner = "danyspin97";
repo = "wpaperd";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-04-22 11:40:48 -04:00
##
2024-04-21 14:57:38 -04:00
2024-04-22 11:40:48 -04:00
## AGS
ags = {
type = "github";
2024-05-01 10:21:28 -04:00
owner = "Aylur";
repo = "ags";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-04-13 00:55:18 -04:00
astal = {
type = "github";
owner = "Aylur";
repo = "Astal";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-04-19 10:38:54 -04:00
gtk-session-lock = {
type = "github";
owner = "Cu3PO42";
repo = "gtk-session-lock";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-04-22 11:40:48 -04:00
##
#
2024-04-19 10:38:54 -04:00
2024-04-22 11:40:48 -04:00
# Neovim inputs
2024-05-09 15:36:57 -04:00
stylelint-lsp = {
type = "github";
owner = "matt1432";
2024-05-09 15:36:57 -04:00
repo = "stylelint-lsp";
inputs.nixpkgs.follows = "nixpkgs";
};
2023-11-19 15:09:57 -05:00
2024-04-22 11:40:48 -04:00
nixd = {
type = "github";
owner = "nix-community";
repo = "nixd";
};
vimplugin-easytables-src = {
type = "github";
owner = "Myzel394";
repo = "easytables.nvim";
flake = false;
};
vimplugin-ts-error-translator-src = {
type = "github";
owner = "dmmulroy";
repo = "ts-error-translator.nvim";
flake = false;
};
2024-04-22 11:40:48 -04:00
#
# Nix tools
nurl = {
type = "github";
owner = "nix-community";
repo = "nurl";
};
2023-11-22 14:36:42 -05:00
nix-index-db = {
type = "github";
owner = "Mic92";
repo = "nix-index-database";
2023-11-22 14:36:42 -05:00
inputs.nixpkgs.follows = "nixpkgs";
};
nh = {
type = "github";
owner = "viperML";
repo = "nh";
};
nix-melt = {
type = "github";
owner = "nix-community";
repo = "nix-melt";
};
nix-eval-jobs = {
type = "github";
owner = "nix-community";
repo = "nix-eval-jobs";
2024-05-10 14:18:50 -04:00
ref = "release-2.21";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-fast-build = {
type = "github";
owner = "Mic92";
repo = "nix-fast-build";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-04-22 11:40:48 -04:00
#
# -= Non-flake inputs =-
## Custom packages
trash-d-src = {
type = "github";
owner = "rushsteve1";
repo = "trash-d";
flake = false;
};
pam-fprint-grosshack-src = {
type = "gitlab";
owner = "mishakmak";
repo = "pam-fprint-grosshack";
flake = false;
};
pokemon-colorscripts-src = {
type = "gitlab";
owner = "phoneybadger";
repo = "pokemon-colorscripts";
flake = false;
};
2024-01-30 21:04:11 -05:00
curseforge-server-downloader-src = {
type = "github";
owner = "Malpiszonekx4";
repo = "curseforge-server-downloader";
flake = false;
};
2024-04-22 11:40:48 -04:00
##
2024-04-20 19:20:49 -04:00
## Overlays
gpu-screen-recorder-src = {
type = "git";
url = "https://repo.dec05eba.com/gpu-screen-recorder";
flake = false;
};
libratbag-src = {
type = "github";
owner = "libratbag";
repo = "libratbag";
flake = false;
};
piper-src = {
type = "github";
owner = "libratbag";
repo = "piper";
flake = false;
};
2024-04-22 11:40:48 -04:00
##
2024-04-22 11:40:48 -04:00
## MPV scripts
modernx-src = {
type = "github";
owner = "cyl0";
repo = "ModernX";
flake = false;
};
persist-properties-src = {
type = "github";
owner = "d87";
repo = "mpv-persist-properties";
flake = false;
};
pointer-event-src = {
type = "github";
owner = "christoph-heinrich";
repo = "mpv-pointer-event";
flake = false;
};
touch-gestures-src = {
type = "github";
owner = "christoph-heinrich";
repo = "mpv-touch-gestures";
flake = false;
};
eisa-scripts-src = {
type = "github";
owner = "Eisa01";
repo = "mpv-scripts";
flake = false;
};
2024-04-22 11:40:48 -04:00
##
2024-04-22 11:40:48 -04:00
## Theme sources
2024-03-05 10:26:39 -05:00
jellyfin-ultrachromic-src = {
type = "github";
owner = "CTalvio";
repo = "Ultrachromic";
flake = false;
};
bat-theme-src = {
type = "github";
owner = "matt1432";
repo = "bat";
flake = false;
};
firefox-gx-src = {
type = "github";
owner = "Godiesc";
repo = "firefox-gx";
ref = "v.9.0";
flake = false;
};
git-theme-src = {
type = "github";
owner = "dracula";
repo = "git";
flake = false;
};
gtk-theme-src = {
type = "github";
owner = "dracula";
repo = "gtk";
flake = false;
};
nvim-theme-src = {
type = "github";
owner = "Mofiqul";
repo = "dracula.nvim";
flake = false;
};
plymouth-theme-src = {
type = "github";
owner = "matt1432";
repo = "dracula-plymouth";
flake = false;
};
xresources-theme-src = {
type = "github";
owner = "dracula";
repo = "xresources";
flake = false;
};
2024-04-22 11:40:48 -04:00
##
#
2023-09-29 23:46:34 -04:00
};
}