Files
nixcfg/flake.nix
2025-10-26 18:29:58 +00:00

193 lines
4.2 KiB
Nix

{
description = "My System Configs";
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
agenix.url = "github:ryantm/agenix";
agenix.inputs.nixpkgs.follows = "nixpkgs";
copyparty.url = "github:9001/copyparty";
copyparty.inputs.nixpkgs.follows = "nixpkgs";
devenv.url = "github:cachix/devenv";
devenv.inputs.nixpkgs.follows = "nixpkgs";
golink.url = "github:tailscale/golink";
golink.inputs.nixpkgs.follows = "nixpkgs";
home-manager.url = "github:nix-community/home-manager/master";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
i3utils.url = "git+https://git.sr.ht/~dpatterbee/i3utils?ref=main";
i3utils.inputs.nixpkgs.follows = "nixpkgs";
nixgl.url = "github:/guibou/nixGL";
nixgl.inputs.nixpkgs.follows = "nixpkgs";
zen-browser.url = "github:0xc000022070/zen-browser-flake";
zen-browser.inputs.nixpkgs.follows = "nixpkgs";
zig.url = "github:mitchellh/zig-overlay";
};
outputs = {
nixpkgs,
nixpkgs-stable,
agenix,
copyparty,
devenv,
golink,
home-manager,
i3utils,
nixgl,
zen-browser,
zig,
...
} @ inputs: let
system = "x86_64-linux";
overlays = [
copyparty.overlays.default
golink.overlays.default
nixgl.overlay
zig.overlays.default
];
pkgs =
(import nixpkgs {
inherit system;
config.allowUnfree = true;
overlays = overlays;
config.permittedInsecurePackages = [
"electron-25.9.0"
];
})
// {
i3utils = i3utils.packages.${system}.default;
};
lib = nixpkgs.lib;
deckSystem = {hostname}:
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
./users/deck
];
extraSpecialArgs = {
inherit hostname;
};
};
hostSystem = {
hostname,
headless,
np,
}:
np.lib.nixosSystem {
inherit system;
pkgs = import np {
inherit system;
config.allowUnfree = true;
overlays = overlays;
config.permittedInsecurePackages = [
"electron-25.9.0"
"jujutsu-0.23.0"
];
};
modules = [
{nixpkgs.overlays = overlays;}
./hosts/${hostname}/configuration.nix
agenix.nixosModules.default
copyparty.nixosModules.default
golink.nixosModules.default
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
users = import ./users;
extraSpecialArgs = {
inherit hostname;
inherit headless;
inherit inputs;
};
};
}
];
};
in {
nixosConfigurations = {
dingbox = hostSystem {
hostname = "dingbox";
headless = false;
np = nixpkgs;
};
elderbug = hostSystem {
hostname = "elderbug";
headless = false;
np = nixpkgs;
};
miniding = hostSystem {
hostname = "miniding";
headless = false;
np = nixpkgs;
};
pingbox = hostSystem {
hostname = "pingbox";
headless = false;
np = nixpkgs;
};
dingserver = hostSystem {
hostname = "dingserver";
headless = true;
np = nixpkgs;
};
bigding = hostSystem {
hostname = "bigding";
headless = true;
np = nixpkgs;
};
sidon = hostSystem {
hostname = "sidon";
headless = false;
np = nixpkgs;
};
ranni = hostSystem {
hostname = "ranni";
headless = false;
np = nixpkgs;
};
leviathan = hostSystem {
hostname = "leviathan";
headless = true;
np = nixpkgs;
};
};
homeConfigurations = {
"deck" = deckSystem {
hostname = "deck";
};
};
devShell.${system} = pkgs.mkShell {
packages = [
pkgs.alejandra
(
pkgs.writeScriptBin "tidy" ''
alejandra .
''
)
];
};
};
}