Migrating origin from GitHub to a private Forgejo repo at forg.gregersen.it/rope/nixos. Each host needs the PAT in /root/.git-credentials (host-local state, set up manually since the repo isn't publicly readable). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
99 lines
3 KiB
Nix
99 lines
3 KiB
Nix
# Common.nix
|
|
{ config, pkgs, lib, inputs, ... }:
|
|
|
|
{
|
|
imports = [
|
|
# Hosts #
|
|
./hosts/FredOS-Gaming.nix
|
|
./hosts/FredOS-Macbook.nix
|
|
./hosts/FredOS-Mediaserver.nix
|
|
|
|
# Generic settings #
|
|
./settings/gnome.nix
|
|
./settings/locale.nix
|
|
./settings/audio.nix
|
|
./settings/users.nix
|
|
./settings/shell.nix
|
|
./apps/zen.nix
|
|
|
|
# Services #
|
|
./services/server-permissions.nix
|
|
./services/game-servers.nix
|
|
./services/qbittorrent-nox.nix
|
|
./services/nginx.nix
|
|
./services/go2rtc.nix
|
|
./services/sonarr.nix
|
|
./services/radarr.nix
|
|
./services/prowlarr.nix
|
|
./services/jellyfin.nix
|
|
./services/bazarr.nix
|
|
./services/cloudflare-ddns.nix
|
|
./services/authelia.nix
|
|
./services/homepage.nix
|
|
./services/arr-interconnect.nix
|
|
./services/profilarr.nix
|
|
./services/adguard.nix
|
|
./services/router.nix
|
|
./services/crowdsec.nix
|
|
];
|
|
|
|
### Make build time quicker
|
|
documentation.nixos.enable = false;
|
|
|
|
# Home Manager #
|
|
home-manager.useGlobalPkgs = true;
|
|
home-manager.useUserPackages = true;
|
|
home-manager.extraSpecialArgs = { inherit inputs; };
|
|
home-manager.users.fred = import ./home-manager/fred.nix;
|
|
|
|
#############################################################################
|
|
# Make boot time quicker
|
|
boot.loader.timeout = lib.mkDefault 5;
|
|
systemd.services.NetworkManager-wait-online.enable = false;
|
|
systemd.services.systemd-udev-settle.enable = false;
|
|
systemd.services.firewall = {
|
|
wantedBy = lib.mkForce [ ];
|
|
after = [ "multi-user.target" ];
|
|
};
|
|
|
|
boot.initrd.verbose = false;
|
|
#############################################################################
|
|
|
|
# Compressed in-memory swap as a safety net during local build storms.
|
|
# Cheap when idle; without it a transient OOM during an uncached build
|
|
# can stall AdGuard/Jellyfin to the point of freezing the box.
|
|
zramSwap = {
|
|
enable = true;
|
|
memoryPercent = 50;
|
|
};
|
|
|
|
# Use latest kernel
|
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
|
|
|
# Allow unfree packages
|
|
nixpkgs.config.allowUnfree = true;
|
|
|
|
# Enable network-manager
|
|
networking.networkmanager.enable = true;
|
|
|
|
# Fish shell
|
|
programs.fish.enable = true;
|
|
users.defaultUserShell = pkgs.fish;
|
|
|
|
# Shell aliases (work in both bash and fish)
|
|
environment.shellAliases = {
|
|
update = "bash -c 'OLD_SYSTEM=$(readlink /run/current-system) && sudo nixos-rebuild build $@ --impure --flake git+https://forg.gregersen.it/rope/nixos && sudo nixos-rebuild switch $@ --impure --flake git+https://forg.gregersen.it/rope/nixos && nvd diff $OLD_SYSTEM /run/current-system && (command -v record-update &>/dev/null && record-update $OLD_SYSTEM /run/current-system || true) && command -v matugen &>/dev/null && matugen image ~/.local/share/backgrounds/wallpaper.png -m dark || true' --";
|
|
clean = "sudo nix-collect-garbage -d";
|
|
ll = "ls -alh";
|
|
clear = "command clear";
|
|
reboot = "sudo systemctl reboot";
|
|
};
|
|
|
|
# Add packages
|
|
environment.systemPackages = with pkgs; [
|
|
git
|
|
localsend
|
|
nvd
|
|
busybox
|
|
];
|
|
}
|