129 lines
3.5 KiB
Nix
129 lines
3.5 KiB
Nix
{
|
|
description = "pagedMov's NixOS configuration";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
nur.url = "github:nix-community/NUR";
|
|
hypr-contrib.url = "github:hyprwm/contrib";
|
|
hyprpicker.url = "github:hyprwm/hyprpicker";
|
|
stylix.url = "github:danth/stylix";
|
|
|
|
nixvim = {
|
|
url = "github:nix-community/nixvim";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
home-manager = {
|
|
url = "github:nix-community/home-manager";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
hyprland = {
|
|
type = "git";
|
|
url = "https://github.com/hyprwm/Hyprland";
|
|
submodules = true;
|
|
};
|
|
|
|
spicetify-nix = {
|
|
url = "github:gerg-l/spicetify-nix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
outputs = {
|
|
nixpkgs,
|
|
nur,
|
|
home-manager,
|
|
self,
|
|
nixvim,
|
|
stylix,
|
|
...
|
|
} @ inputs: let
|
|
system = "x86_64-linux";
|
|
username = "pagedmov";
|
|
wallpaper = "${self}/assets/wallpapers/sleeping.png";
|
|
base16scheme = "nord"; # can be easily changed with the chscheme script
|
|
|
|
# Map colors from yaml to attribute set
|
|
# Extracting colors into a set here allows them to be propagated across the entire config, with or without stylix
|
|
lib = nixpkgs.lib;
|
|
pkgs = import nixpkgs {system = "x86_64-linux";};
|
|
scheme_path = "${pkgs.base16-schemes}/share/themes/${base16scheme}.yaml";
|
|
scheme_string = builtins.readFile scheme_path;
|
|
scheme_list = lib.splitString "\n" "${scheme_string}";
|
|
colors = lib.filter (line: builtins.match "^ *base[0-9A-F]{2}: .*" line != null) scheme_list;
|
|
scheme =
|
|
lib.lists.foldl' (
|
|
acc: line: let
|
|
splitLine = lib.splitString ": " line;
|
|
key = builtins.elemAt splitLine 0;
|
|
value = builtins.elemAt splitLine 1;
|
|
trimmedKey = lib.trim key;
|
|
cleanValue_step1 = lib.splitString " " value;
|
|
cleanValue_step2 = builtins.elemAt cleanValue_step1 0;
|
|
cleanValue_final = builtins.substring 1 (builtins.stringLength cleanValue_step2 - 2) cleanValue_step2;
|
|
in
|
|
acc // {"${trimmedKey}" = cleanValue_final;}
|
|
) {}
|
|
colors;
|
|
in {
|
|
homeManagerModules.default = ./modules/home;
|
|
|
|
nixosConfigurations = {
|
|
oganesson = nixpkgs.lib.nixosSystem {
|
|
specialArgs = {
|
|
host = "oganesson";
|
|
inherit self inputs scheme wallpaper username;
|
|
};
|
|
inherit system;
|
|
modules = [
|
|
./hosts/desktop/config.nix
|
|
./modules/sys
|
|
stylix.nixosModules.stylix
|
|
nixvim.nixosModules.nixvim
|
|
nur.nixosModules.nur
|
|
];
|
|
};
|
|
|
|
mercury = nixpkgs.lib.nixosSystem {
|
|
specialArgs = {
|
|
host = "mercury";
|
|
inherit self inputs scheme wallpaper username;
|
|
};
|
|
modules = [
|
|
./hosts/laptop/config.nix
|
|
./modules/sys
|
|
stylix.nixosModules.stylix
|
|
nixvim.nixosModules.nixvim
|
|
nur.nixosModules.nur
|
|
];
|
|
};
|
|
|
|
xenon = nixpkgs.lib.nixosSystem {
|
|
specialArgs = {
|
|
host = "xenon";
|
|
inherit self inputs scheme wallpaper username;
|
|
};
|
|
modules = [
|
|
./hosts/server
|
|
./modules
|
|
stylix.nixosModules.stylix
|
|
nixvim.nixosModules.nixvim
|
|
nur.nixosModules.nur
|
|
];
|
|
};
|
|
|
|
installer = nixpkgs.lib.nixosSystem {
|
|
specialArgs = {
|
|
host = "installer";
|
|
inherit self inputs;
|
|
};
|
|
modules = [
|
|
./hosts/installer
|
|
nixvim.nixosModules.nixvim
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|