nixos/modules/hosts/crow/configuration.nix

169 lines
3.9 KiB
Nix
Raw Normal View History

2026-04-26 16:09:24 +00:00
{ self, inputs, ... }: {
2026-05-20 01:37:16 +00:00
flake.nixosModules.crowConfiguration = { pkgs, ... }: {
2026-04-26 16:09:24 +00:00
imports = [
self.nixosModules.crowHardware
self.nixosModules.nest
2026-04-26 16:09:24 +00:00
self.nixosModules.niri
self.nixosModules.git
2026-05-22 22:12:51 +00:00
self.nixosModules.sddm
self.nixosModules.hsr
self.nixosModules.zsh
2026-05-22 22:04:09 -04:00
self.nixosModules.vesktop
2026-05-23 11:25:52 -04:00
self.nixosModules.fuzzel
2026-06-18 18:41:34 -04:00
self.nixosModules.flameshot
];
2026-04-26 16:09:24 +00:00
environment.systemPackages = with pkgs; [
pavucontrol
bolt-launcher
wine
usbutils
virt-manager
prismlauncher
kubectl
kompose
2026-05-20 01:37:16 +00:00
lens
htop
zip
unzip
dig
traceroute
neovim
wget
pciutils
2026-05-20 01:37:16 +00:00
alacritty
brave
lutris
steam
2026-05-27 16:36:39 -04:00
easyeffects
openssl
jq
2026-06-21 11:44:11 -04:00
# Wrap Element so it knows where gnome-libsecret is
# Additionally, override the config to disable legacy call protocol
(let
elementConfig = pkgs.writeText "element-config.json" (builtins.toJSON {
default_server_config = {
"m.homeserver" = {
base_url = "https://starling.mynest.love";
server_name = "starling.mynest.love";
};
};
features = {
"feature_group_calls" = true;
"feature_video_rooms" = true;
"feature_element_call_video_rooms" = true;
};
element_call = {
url = null;
use_exclusively = true;
};
jitsi = {
preferred_domain = null;
};
});
in symlinkJoin {
2026-06-21 11:44:11 -04:00
name = "element-desktop";
paths = [ element-desktop ];
nativeBuildInputs = [ makeWrapper ];
postBuild = ''
wrapProgram $out/bin/element-desktop \
--add-flags "--password-store=gnome-libsecret" \
--set ELEMENT_DESKTOP_CONFIG_JSON "${elementConfig}"
2026-06-21 11:44:11 -04:00
'';
})
];
2026-05-20 01:37:16 +00:00
nixpkgs.overlays = [
# Open LDAP currently has a problem
# with one of the tests. Just disable it
(final: prev: {
openldap = prev.openldap.overrideAttrs (oldAttrs: {
doCheck = false;
});
})
];
networking.networkmanager.enable = true;
networking.hostName = "crow";
fonts.packages = with pkgs; [
nerd-fonts.fira-code
nerd-fonts.droid-sans-mono
noto-fonts
2026-04-26 16:09:24 +00:00
];
services = {
openssh.enable = true;
blueman.enable = true;
};
2026-06-28 11:35:08 -04:00
services.ollama = {
enable = true;
package = pkgs.ollama-rocm;
environmentVariables = {
HSA_OVERRIDE_GFX_VERSION = "10.3.0";
};
loadModels = [ "deepseek-r1:32b" "qwen3.5:14b" ];
};
2026-06-28 11:55:37 -04:00
services.open-webui = {
enable = true;
host = "127.0.0.1";
port = 8080;
environment = {
OLLAMA_API_BASE_URL = "http://127.0.0.1:11434";
# Keep telemetry disabled to ensure complete privacy
ANONYMIZED_TELEMETRY = "False";
DO_NOT_TRACK = "True";
SCARF_NO_ANALYTICS = "True";
};
};
boot = {
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
timeout = 1;
};
kernelPackages = pkgs.linuxPackages_latest;
kernelModules = [ "amdgpu" ];
# "Silent" boot
initrd.verbose = false;
kernelParams = [
"quiet"
"splash"
"boot.shell_on_fail"
"loglevel=3"
"rd.systemd.show_status=false"
"rd.udev.log_level=3"
"udev.log_priority=3"
];
};
2026-05-22 20:44:44 -04:00
time.timeZone = "America/New_York";
time.hardwareClockInLocalTime = false;
2026-05-23 11:31:50 -04:00
hardware.graphics = {
enable = true;
enable32Bit = true;
};
2026-05-20 01:37:16 +00:00
nix.settings.experimental-features = [ "nix-command" "flakes" ];
nix.settings.auto-optimise-store = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
2026-05-20 01:37:16 +00:00
nixpkgs.config.allowUnfree = true;
system.stateVersion = "26.05";
2026-04-26 16:09:24 +00:00
};
}