Files
nixcfg/flake.nix

182 lines
4.1 KiB
Nix

{
description = "My System Configs";
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
agenix.url = "github:ryantm/agenix";
agenix.inputs.nixpkgs.follows = "nixpkgs";
alejandra.url = "github:kamadorueda/alejandra/3.0.0";
alejandra.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";
hyprland.url = "github:hyprwm/Hyprland";
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";
};
outputs = {
nixpkgs,
agenix,
alejandra,
devenv,
golink,
home-manager,
hyprland,
i3utils,
nixgl,
...
} @ inputs: let
system = "x86_64-linux";
pkgs =
(import nixpkgs {
inherit system;
config.allowUnfree = true;
overlays = [
golink.overlay
hyprland.overlays.default
nixgl.overlay
];
config.permittedInsecurePackages = [
"electron-25.9.0"
];
})
// {
i3utils = i3utils.packages.${system}.default;
hyprland = hyprland.packages."x86_64-linux".default.overrideAttrs (finalAttrs: previousAttrs: {
buildInputs = previousAttrs.buildInputs ++ [pkgs.makeWrapper];
postInstall = ''
ls -lar $out
wrapProgram $out/bin/Hyprland \
--set LIBVA_DRIVER_NAME nvidia \
--set XDG_SESSION_TYPE wayland \
--set __GLX_VENDOR_LIBRARY_NAME nvidia \
--set WLR_NO_HARDWARE_CURSORS 1
'';
});
};
lib = nixpkgs.lib;
deckSystem = {hostname}:
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
./users/deck
];
extraSpecialArgs = {
inherit hostname;
};
};
hostSystem = {
hostname,
headless,
}:
lib.nixosSystem {
inherit system;
inherit pkgs;
modules = [
./hosts/${hostname}/configuration.nix
agenix.nixosModules.default
hyprland.nixosModules.default
{
programs.hyprland = {
enable = !headless;
};
}
golink.nixosModules.default
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
users = import ./users;
extraSpecialArgs = {
inherit hostname;
inherit headless;
};
sharedModules = [
hyprland.homeManagerModules.default
];
};
}
];
};
in {
nixosConfigurations = {
dingbox = hostSystem {
hostname = "dingbox";
headless = false;
};
elderbug = hostSystem {
hostname = "elderbug";
headless = false;
};
miniding = hostSystem {
hostname = "miniding";
headless = false;
};
pingbox = hostSystem {
hostname = "pingbox";
headless = false;
};
dingserver = hostSystem {
hostname = "dingserver";
headless = true;
};
bigding = hostSystem {
hostname = "bigding";
headless = true;
};
};
homeConfigurations = {
"deck" = deckSystem {
hostname = "deck";
};
};
devShell.${system} = devenv.lib.mkShell {
inherit inputs pkgs;
modules = [
{
# https://devenv.sh/reference/options/
packages = with pkgs; [
alejandra.packages.${system}.default
];
enterShell = ''
'';
env = {
};
scripts = {
tidy.exec = ''
alejandra -e ./users/configs/desktop/hyprland/default.nix .
'';
};
}
];
};
};
}