configuration.nix/nixos/modules/default.nix

227 lines
7.9 KiB
Nix
Raw Normal View History

2024-08-03 10:37:55 +02:00
top@{ inputs, moduleWithSystem, ... }: {
flake.nixosModules = {
2024-07-06 17:10:57 +02:00
grub = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }: {
boot = {
loader = {
2024-07-06 17:19:11 +02:00
grub =
let
2024-07-07 10:42:36 +02:00
theme = pkgs.sleek-grub-theme.override { withBanner = "Hello Ivan"; withStyle = "bigSur"; };
2024-07-06 17:19:11 +02:00
in
2024-08-03 15:14:13 +02:00
{ enable = pkgs.lib.mkDefault true; useOSProber = true; efiSupport = true; device = "nodev"; theme = theme; splashImage = "${theme}/background.png"; };
2024-07-07 10:42:36 +02:00
efi = { canTouchEfiVariables = true; };
};
};
2024-07-06 17:10:57 +02:00
});
2024-07-04 08:38:33 +02:00
base = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }: {
2024-08-03 10:37:55 +02:00
imports = [ inputs.hosts.nixosModule ];
2024-07-05 13:29:07 +02:00
system.stateVersion = top.config.flake.stateVersion;
2024-07-07 10:42:36 +02:00
nix = { extraOptions = ''experimental-features = nix-command flakes''; };
2024-07-04 08:38:33 +02:00
i18n.supportedLocales = [ "all" ];
time.timeZone = "Europe/Prague";
environment = {
2024-08-03 12:54:52 +02:00
systemPackages = with pkgs; [ cmatrix uutils-coreutils-noprefix cryptsetup fd file git glibc gnumake mlocate openssh openssl procs ripgrep srm unzip vim zip just nixos-install-tools ];
2024-08-02 08:39:36 +02:00
sessionVariables = { MAKEFLAGS = "-j 4"; };
2024-08-02 11:37:59 +02:00
shells = with pkgs; [ bash zsh nushell ];
2024-08-03 20:16:58 +02:00
enableAllTerminfo = true;
2024-07-04 08:38:33 +02:00
};
2024-08-02 11:37:59 +02:00
users.defaultUserShell = pkgs.zsh;
programs = { zsh.enable = true; nix-ld.enable = true; };
2024-08-02 18:46:46 +02:00
services = {
dbus.enable = true;
logind = { lidSwitch = "lock"; lidSwitchDocked = "lock"; killUserProcesses = true; powerKeyLongPress = "reboot"; };
};
2024-08-02 11:54:02 +02:00
networking = { stevenBlackHosts = { enable = true; blockFakenews = true; blockGambling = true; blockSocial = true; }; };
2024-07-04 08:38:33 +02:00
});
2024-08-03 15:41:51 +02:00
shell = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }: {
programs = {
starship.enable = true;
zsh = {
enableBashCompletion = true;
syntaxHighlighting.enable = true;
autosuggestions = {
enable = true;
strategy = [ "completion" ];
};
shellAliases = {
cal = "cal $(date +%Y)";
GG = "git add . && git commit -m 'GG' && git push --set-upstream origin HEAD";
gad = "git add . && git diff --cached";
gac = "ga && gc";
ga = "git add .";
gc = "git commit";
dev = "nix develop --command $SHELL";
eza = "${pkgs.eza}/bin/eza '--long' '--header' '--icons' '--smart-group' '--mounts' '--octal-permissions' '--git'";
ls = "eza";
la = "eza --all";
lt = "eza --git-ignore --all --tree --level=10";
sc = "systemctl";
neofetch = "${pkgs.fastfetch}/bin/fastfetch -c all.jsonc";
};
};
};
});
2024-07-05 09:32:10 +02:00
sound = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }: {
2024-07-07 10:42:36 +02:00
services = { pipewire = { enable = true; alsa.enable = true; pulse.enable = true; }; };
environment.systemPackages = with pkgs; [ pwvucontrol ];
2024-07-04 08:38:33 +02:00
});
2024-07-05 00:10:36 +02:00
music = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }: {
2024-08-03 10:37:55 +02:00
imports = [ inputs.musnix.nixosModules.musnix ];
2024-07-07 10:42:36 +02:00
environment.systemPackages = with pkgs; [ guitarix ];
2024-07-05 11:53:58 +02:00
services.pipewire = {
jack.enable = true;
2024-07-07 10:42:36 +02:00
extraConfig = { jack."69-low-latency" = { "jack.properties" = { "node.latency" = "64/48000"; }; }; };
2024-07-05 11:52:45 +02:00
};
2024-07-05 00:10:36 +02:00
musnix = {
enable = true;
rtcqs.enable = true;
soundcardPciId = "00:1f.3";
2024-08-02 21:54:57 +02:00
kernel = { realtime = true; packages = pkgs.linuxPackages-rt; };
2024-07-05 00:10:36 +02:00
};
});
2024-08-02 22:43:08 +02:00
wayland = moduleWithSystem (toplevel@{ ... }: perSystem@{ ... }: {
hardware.graphics.enable = true;
security.pam.services.swaylock = { };
xdg.portal = {
enable = true;
xdgOpenUsePortal = true;
wlr = { enable = true; settings = { screencast = { output_name = "HDMI-A-1"; max_fps = 60; }; }; };
config.common.default = "*";
};
});
2024-07-04 08:38:33 +02:00
security = moduleWithSystem (toplevel@{ ... }: perSystem@{ ... }: {
security = {
2024-07-07 10:42:36 +02:00
sudo = { enable = false; execWheelOnly = true; extraRules = [{ groups = [ "wheel" ]; }]; };
2024-07-07 16:01:23 +02:00
doas = { enable = true; extraRules = [{ groups = [ "wheel" ]; noPass = true; keepEnv = true; }]; };
polkit.enable = true;
rtkit.enable = true;
};
});
2024-07-04 08:38:33 +02:00
wireguard = {
networking.wg-quick.interfaces = {
wg0 = {
2024-08-03 20:16:58 +02:00
address = [ "10.0.0.2/32" ];
2024-07-04 08:38:33 +02:00
privateKeyFile = "/etc/wireguard/privatekey";
peers = [
{
publicKey = "5FiTLnzbgcbgQLlyVyYeESEd+2DtwM1JHCGz/32UcEU=";
allowedIPs = [ "0.0.0.0/0" "::/0" ];
endpoint = "37.205.13.29:51820";
persistentKeepalive = 25;
}
];
};
};
};
2024-07-04 08:38:33 +02:00
wireless = {
networking = {
wireless = {
enable = true;
networks = {
"Smart-Hostel-2.4" = {
psk = "smarttrans.bg";
};
"Yohohostel2.4G" = {
psk = "kaskamaska";
};
"Nomado_Guest" = {
psk = "welcomehome";
};
"HostelMusala Uni" = {
psk = "mhostelm";
};
"BOUTIQUE APARTMENTS" = {
psk = "boutique26";
};
"Safestay" = {
psk = "AlldayrooftopBAR";
};
"HOSTEL JASMIN 2" = {
psk = "Jasmin2024";
};
"HOME" = {
psk = "iloveprague";
};
"Vodafone-B925" = {
psk = "7aGh3FE6pN4p4cu6";
};
"O2WIFIZ_EXT" = {
psk = "iloveprague";
};
2024-06-23 15:35:19 +02:00
"KOTEKLAN_GUEST" = {
psk = "koteklankotek";
};
2024-07-30 10:01:43 +02:00
"3G" = {
hidden = true;
};
};
};
};
};
2024-08-02 20:04:50 +02:00
ivand = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }:
let homeMods = top.config.flake.homeManagerModules; in {
2024-08-03 10:37:55 +02:00
imports = [ inputs.home-manager.nixosModules.default ];
2024-08-02 20:04:50 +02:00
home-manager = {
2024-08-02 21:54:57 +02:00
backupFileExtension = "bak";
2024-08-02 20:04:50 +02:00
useUserPackages = true;
useGlobalPkgs = true;
users.ivand = { ... }: {
imports = with homeMods; [
base
ivand
shell
util
swayland
web
];
};
};
2024-08-02 20:04:50 +02:00
fonts.packages = with pkgs; [ (nerdfonts.override { fonts = [ "FiraCode" ]; }) noto-fonts noto-fonts-emoji noto-fonts-lgc-plus ];
users = {
users = {
ivand = {
isNormalUser = true;
createHome = true;
extraGroups = [
"adbusers"
"adm"
"audio"
"bluetooth"
"dialout"
"flatpak"
"kvm"
"mlocate"
"realtime"
"render"
"video"
"wheel"
];
};
};
extraGroups = { mlocate = { }; };
};
programs.dconf.enable = true;
});
2024-07-04 08:38:33 +02:00
flatpak = {
2024-07-07 10:42:36 +02:00
xdg = { portal = { enable = true; wlr.enable = true; config.common.default = "*"; }; };
2024-07-04 08:38:33 +02:00
services.flatpak.enable = true;
};
2024-07-04 08:38:33 +02:00
ai = moduleWithSystem (toplevel@{ ... }: perSystem@{ ... }: {
2024-07-07 10:42:36 +02:00
services = { ollama.enable = true; };
});
2024-07-24 10:05:13 +02:00
anon = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }: {
environment.systemPackages = with pkgs; [ tor-browser ];
});
cryptocurrency = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }: {
environment.systemPackages = with pkgs; [ monero-cli ];
2024-08-02 18:25:12 +02:00
services = { monero.enable = true; };
2024-07-06 22:58:14 +02:00
});
2024-08-03 17:09:52 +02:00
vps = moduleWithSystem (toplevel@{ ... }: perSystem@{ ... }: {
imports = [
inputs.vpsadminos.nixosConfigurations.container
inputs.simple-nixos-mailserver.nixosModule
../../hosts/vps/mailserver
];
});
};
}