ooknet/modules/nixos/base/nix.nix
2024-11-01 12:43:52 +11:00

79 lines
2.2 KiB
Nix

{
inputs',
inputs,
pkgs,
lib,
config,
...
}: let
inherit (builtins) attrValues;
inherit (lib) mkIf mapAttrsToList;
inherit (config.ooknet.host) role admin;
paths = {
FLAKE = "/home/${admin.name}/.config/ooknet";
WEBSITE = "${paths.FLAKE}/outputs/pkgs/website";
};
in {
environment = {
# disable default nix packages
# these packages are installed by default [ perl rsync strace ]
defaultPackages = [];
systemPackages = attrValues {
inherit (pkgs) git deadnix statix;
inherit (inputs'.agenix.packages) default;
};
# location of the configuration flake
variables = paths;
};
nix = {
package = pkgs.lix;
# collect garbage
gc = {
automatic = true;
dates = "Sun *-*-* 14:00";
options = "--delete-older-than 14d";
};
registry = {
nixpkgs.flake = inputs.nixpkgs;
default.flake = inputs.nixpkgs;
};
nixPath = mapAttrsToList (name: _: "${name}=${name}") config.nix.registry;
settings = {
trusted-users = ["@wheel" "root" "builder"];
experimental-features = ["nix-command" "flakes"];
accept-flake-config = true;
auto-optimise-store = true;
# cache
substituters = [
"https://cache.nixos.org?priority=10"
"https://nix-community.cachix.org"
"https://neovim-flake.cachix.org"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"neovim-flake.cachix.org-1:iyQ6lHFhnB5UkVpxhQqLJbneWBTzM8LBYOFPLNH4qZw="
];
# TODO: setup builders -- builders-use-substitutes = true;
};
};
nixpkgs = {
config.allowUnfree = true;
# why are we doing this
overlays = [
# zellij status bar plugin
(_final: prev: {
zjstatus = inputs.zjstatus.packages.${prev.system}.default;
})
];
};
# nix rebuild utililty
programs.nh = mkIf (role == "workstation") {
enable = true;
# sets an environment variable FLAKE that nh will refer to by default
flake = mkIf admin.homeManager "/home/${admin.name}/.config/ooknet";
};
}