nom-nom-nix-gc/machines/trantor.nix

395 lines
10 KiB
Nix
Raw Normal View History

2021-03-19 18:19:55 +01:00
{ config, pkgs, lib, ... }:
2019-12-18 09:38:49 +01:00
let
2020-12-12 15:06:35 +01:00
myusers = import ../users.nix { inherit pkgs; };
mypkgs = import ../packages.nix { inherit pkgs; };
i3 = import ../modules/software-config/i3.nix { inherit pkgs; };
vimInit = import ../modules/software-config/neovim.nix { inherit pkgs; };
2020-12-12 15:06:35 +01:00
sources = import ../nix/sources.nix { };
2023-03-21 11:59:13 +01:00
keys = import ../keys.nix { inherit lib; };
2019-12-18 09:38:49 +01:00
2020-12-12 15:06:35 +01:00
nixos-hardware = sources.nixos-hardware;
temp-probe = pkgs.callPackage ../custom-pkgs/temp-probe.nix { };
desktop-status-bar = pkgs.callPackage ../custom-pkgs/desktop-status-bar.nix {
temp-probe = temp-probe;
};
pomodoro = pkgs.writers.writeBashBin "pomodoro" ''
sleep 1500
2022-09-28 19:05:18 +02:00
${pkgs.alsa-utils}/bin/aplay ~/Musique/bell.wav &
${pkgs.libnotify}/bin/notify-send "Pomodoro: " "TIME'S UP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"'';
2019-12-18 09:38:49 +01:00
in {
2020-12-12 15:06:35 +01:00
imports = [
../modules/core.nix
../modules/core-graphical-computers.nix
../modules/dev-services.nix
2023-09-25 14:25:30 +02:00
../modules/gitea-runner.nix
2023-10-24 18:16:55 +02:00
# ../modules/sockburp.nix
2020-12-12 15:06:35 +01:00
"${nixos-hardware}/common/pc/ssd/default.nix"
"${nixos-hardware}/common/cpu/amd/default.nix"
2023-01-17 11:16:03 +01:00
"${nixos-hardware}/common/gpu/amd/default.nix"
2023-09-25 14:25:30 +02:00
"${sources.sops-nix}/modules/sops"
2020-12-12 15:06:35 +01:00
./trantor-hardware.nix
];
2023-09-25 14:25:30 +02:00
sops = {
defaultSopsFile = ../secrets/trantor.yaml;
gnupg.sshKeyPaths = [ ];
age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
secrets = {
gitea-token = {
mode = "0400";
};
};
};
2022-12-18 08:54:10 +01:00
2023-11-06 18:17:08 +01:00
programs.firefox = {
nativeMessagingHosts.ff2mpv = true;
};
2022-12-18 08:54:10 +01:00
hardware.nvidia.nvidiaSettings = false;
2022-01-21 11:51:02 +01:00
services.xserver = {
2022-04-04 10:30:04 +02:00
enable = true;
2022-12-18 08:54:10 +01:00
videoDrivers = [ "amdgpu" ];
2023-09-02 22:01:48 +02:00
displayManager = {
sddm.enable = true;
defaultSession = "plasmawayland";
};
2022-04-04 10:30:04 +02:00
desktopManager = {
xterm.enable = false;
2023-05-15 21:57:35 +02:00
plasma5.enable = true;
2022-04-04 10:30:04 +02:00
};
2022-01-21 11:51:02 +01:00
windowManager.i3 = {
enable = true;
configFile = builtins.toPath (pkgs.writeText "desktop-i3-config" (i3.desktop-config desktop-status-bar));
};
};
2022-09-04 09:38:18 +02:00
services.usbmuxd.enable = true;
2022-12-30 10:32:04 +01:00
services.nscd.enableNsncd = true;
2022-09-04 09:38:18 +02:00
2022-01-21 11:51:02 +01:00
hardware.opengl = {
enable = true;
driSupport = true;
};
2022-09-04 09:38:18 +02:00
hardware.rtl-sdr.enable = true;
2023-10-24 18:16:55 +02:00
fonts.packages = with pkgs; [
2022-09-28 19:05:18 +02:00
2020-11-15 18:08:38 +01:00
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
liberation_ttf
fira-code
fira-code-symbols
dina-font
proggyfonts
];
2022-12-18 08:54:10 +01:00
boot = {
initrd.kernelModules = [ "amdgpu" ];
loader.systemd-boot = {
enable = true;
memtest86.enable = true;
};
loader.systemd-boot.configurationLimit = 10;
initrd.systemd.enable = true;
};
2019-12-18 09:38:49 +01:00
2022-09-28 19:05:18 +02:00
programs.bcc.enable = true;
2023-08-26 14:05:24 +02:00
programs.kdeconnect.enable = true;
2022-09-28 19:05:18 +02:00
2022-06-15 09:24:31 +02:00
services.printing = {
enable = true;
drivers = [ pkgs.cups-brother-hll2350dw ];
};
2022-09-28 19:05:18 +02:00
2021-05-13 10:51:11 +02:00
services.openssh= {
enable = true;
2023-04-20 10:20:39 +02:00
settings = {
PasswordAuthentication = false;
KbdInteractiveAuthentication = false;
PermitRootLogin = "no";
};
};
2021-05-13 10:51:11 +02:00
2023-09-25 14:25:30 +02:00
boot.initrd.systemd.network.wait-online.enable = false;
home-manager.users.ninjatrappeur = {
2022-10-07 07:28:49 +02:00
home.stateVersion = "18.09";
2022-09-28 19:05:18 +02:00
home.file = {
".config/msmtp/config".source = ../raw-conf-files/email/msmtp;
".notmuch-config".source = ../raw-conf-files/email/notmuch-config;
2020-11-21 17:53:53 +01:00
".config/waybar".source = ../raw-conf-files/waybar-trantor;
};
systemd.user = {
services = {
sync-mail = {
2020-06-22 19:30:51 +02:00
Unit = { Description = "Synchronize notmuch mailboxes"; };
Service = {
Type = "oneshot";
ExecStart = "${pkgs.ninjatrappeur-pkgs.sync-mail}/bin/sync-mail";
};
};
2022-01-21 11:51:02 +01:00
# multimedia-sshfs-fuse-mount = {
# Unit = {
# Description = "Home multimedia network share";
# After = [ "network.target" "nss-lookup.target" "graphical-session.target" ];
# };
# Install = {
# WantedBy = [ "default.target" ];
# };
# Service = {
# Type = "simple";
# ExecStart = ''${pkgs.sshfs}/bin/sshfs -f -oIdentityFile=/home/ninjatrappeur/.ssh/id_ed25519 "sftpUser@home.alternativebit.fr:/" /home/ninjatrappeur/multimedia-sshfs'';
# ExecStop = ''${pkgs.fuse}/bin/fusermount -u /home/ninjatrappeur/multimedia-sshfs'';
# # Race condition: The service will fail to resolve the DNS name at login.
# # We restart it on failure as a workaround.
# Restart="on-failure";
# RestartSec="10s";
# };
# };
};
timers = {
sync-mail = {
2020-06-22 19:30:51 +02:00
Unit = { Description = "Syncs the mailboxes"; };
Timer = {
2020-06-22 19:30:51 +02:00
OnBootSec = "3m";
OnUnitActiveSec = "30m";
Unit = "sync-mail.service";
};
2020-06-22 19:30:51 +02:00
Install = { WantedBy = [ "timers.target" ]; };
};
};
};
};
2019-12-18 09:38:49 +01:00
networking = {
extraHosts = ''
2023-06-12 20:32:21 +02:00
#127.0.0.1 youtube.com youtu.be www.youtube.com
10.25.3.41 gitlab.clearpath.ai gitlab.clearpathrobotics.com
2023-03-21 11:59:13 +01:00
10.25.3.105 hydra.clearpath.ai
2023-03-02 10:36:45 +01:00
10.25.11.150 prod-vm-hydra-02.clearpath.ai
#10.25.11.168 prod-vm-hydra-worker-01.clearpath.ai
10.25.3.105 prod-vm-hydra-main-01.clearpath.ai
10.25.3.241 prod-vm-hydra-worker-01.clearpath.ai
#10.25.11.167 prod-vm-hydra-worker-02.clearpath.ai
10.25.3.242 prod-vm-hydra-worker-02.clearpath.ai
2023-04-20 10:20:39 +02:00
10.26.3.91 prod-vm-devops-monitoring-01.clearpath.ai devops.clearpath.ai
10.25.0.169 jira.clearpathrobotics.com wiki.clearpathrobotics.com
10.25.3.101 jfrog.clearpathrobotics.com
2023-01-17 11:16:03 +01:00
10.25.0.224 reset.clearpath.ai
2023-04-27 15:10:05 +02:00
10.25.3.191 prod-vm-docker-registry-01.clearpathrobotics.com
10.25.3.191 harbor.clearpathrobotics.com
2023-05-22 19:56:14 +02:00
10.25.3.60 bundles.clearpath.ai
2023-06-30 16:14:13 +02:00
10.25.20.15 vsphere.clearpath.ai
2023-11-22 15:37:32 +01:00
# Framework via local VPN
192.168.166.3 framework
'';
2019-12-18 09:38:49 +01:00
hosts = {
#"127.0.0.1" = [ "www.youtube.com" "youtube.com" "youtu.be" "twitter.com" ];
2019-12-18 09:38:49 +01:00
};
hostName = "trantor";
2023-10-24 18:16:55 +02:00
domain = "alternativebit.fr";
2019-12-18 09:38:49 +01:00
firewall = {
2022-11-08 15:37:40 +01:00
enable = false;
2019-12-18 09:38:49 +01:00
allowedTCPPorts = [
# Random HTTP stuff
8000
# Patchwork
2020-12-12 15:06:35 +01:00
8008
8989
2019-12-18 09:38:49 +01:00
# Syncthing
22000
2022-11-08 15:37:40 +01:00
# VNC
5900
2019-12-18 09:38:49 +01:00
];
allowedUDPPorts = [
# Patchwork local discovery
8008
# Syncthing
21027
2023-05-13 00:10:48 +02:00
# Avahi
5353
2019-12-18 09:38:49 +01:00
];
};
};
2023-05-13 00:10:48 +02:00
services.avahi.enable = true;
2020-12-12 15:06:35 +01:00
services.resolved = { enable = false; };
2020-09-21 12:02:51 +02:00
services.emacs = {
enable = true;
defaultEditor = true;
package = pkgs.ninjatrappeur-pkgs.configured-emacs;
};
security.pam.loginLimits = [
{
domain = "*";
type = "-";
item = "nofile";
value = "9192";
}
];
2023-05-15 21:57:35 +02:00
# services.gnome = {
# core-utilities.enable = true;
# core-shell.enable = true;
# gnome-keyring.enable = true;
# };
2020-11-15 18:08:38 +01:00
2020-10-25 15:09:21 +01:00
services.udev.packages = [ pkgs.yubikey-personalization ];
services.pcscd.enable = true;
2019-12-18 09:38:49 +01:00
services.syncthing = {
user = "ninjatrappeur";
dataDir = "/home/ninjatrappeur/.config/syncthing";
};
users = {
2020-11-15 16:50:27 +01:00
groups.nfs.gid = 8;
2019-12-18 09:38:49 +01:00
extraUsers.ninjatrappeur = {
isNormalUser = true;
2020-12-12 15:06:35 +01:00
home = myusers.ninjatrappeur.home;
2022-09-04 09:38:18 +02:00
extraGroups = myusers.ninjatrappeur.extraGroups ++ [ "nfs" "libvirtd" "plugdev" ];
2020-12-12 15:06:35 +01:00
shell = myusers.ninjatrappeur.shell;
2021-06-24 18:53:29 +02:00
openssh.authorizedKeys.keys = pkgs.lib.attrsets.attrValues keys.ninjatrappeur;
2019-12-18 09:38:49 +01:00
};
2020-10-08 22:04:52 +02:00
extraGroups.vboxusers.members = [ "ninjatrappeur" ];
2020-11-15 16:50:27 +01:00
extraUsers.nfs = {
2021-05-13 08:51:17 +02:00
isSystemUser = true;
2020-11-15 16:50:27 +01:00
uid = 7;
2021-10-13 11:10:50 +02:00
group = "nfs";
2020-11-15 16:50:27 +01:00
};
2019-12-18 09:38:49 +01:00
};
2021-05-13 08:51:17 +02:00
2021-03-19 18:19:55 +01:00
services.dbus.packages = [ pkgs.gcr ];
2020-11-21 17:34:13 +01:00
programs.wireshark.enable = true;
2021-03-19 18:19:55 +01:00
programs.gnupg.agent = {
enable = true;
2021-08-17 13:45:32 +02:00
pinentryFlavor = "qt";
2021-03-19 18:19:55 +01:00
};
2023-07-26 08:57:26 +02:00
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
2020-12-12 15:06:35 +01:00
environment.etc."sway/config".source = builtins.toPath
(pkgs.writeText "desktop-sway-config"
(i3.desktop-config desktop-status-bar));
2020-09-21 12:02:51 +02:00
2019-12-18 09:38:49 +01:00
systemd.network = {
enable = true;
networks = {
"98-nope" = {
matchConfig = { Name = "enp*"; };
linkConfig.Unmanaged = true;
};
"80-lan" = {
matchConfig = { Name = "enp8s0"; };
DHCP = "yes";
2020-12-12 15:06:35 +01:00
networkConfig = {
IPv6AcceptRA = true;
IPv6PrivacyExtensions = "yes";
};
2019-12-18 09:38:49 +01:00
};
};
};
2022-03-25 16:29:09 +01:00
services.gvfs.enable = true;
2020-12-12 15:06:35 +01:00
environment.systemPackages = mypkgs.common ++ mypkgs.dev ++ mypkgs.media
2021-10-30 15:38:34 +02:00
++ mypkgs.graphic-apps ++ [
pomodoro
temp-probe
(pkgs.wrapOBS { plugins = [ pkgs.obs-studio-plugins.wlrobs ];})
pkgs.virt-manager
2022-09-28 19:05:18 +02:00
pkgs.gnome.nautilus
pkgs.gnome.eog
pkgs.gnome.gvfs
2022-07-08 12:19:53 +02:00
pkgs.cambalache
2022-01-21 11:51:02 +01:00
pkgs.jmtpfs
2022-04-16 08:42:00 +02:00
pkgs.element-desktop
2022-06-15 09:24:31 +02:00
pkgs.gpsbabel
pkgs.josm
2022-09-28 19:05:18 +02:00
pkgs.gnome.polari
2022-09-04 09:38:18 +02:00
pkgs.libimobiledevice
pkgs.ifuse
2023-04-20 10:20:39 +02:00
pkgs.gh
2023-06-30 16:14:13 +02:00
pkgs.strawberry
2023-08-26 14:05:24 +02:00
pkgs.ninjatrappeur-pkgs.picobak
pkgs.ninjatrappeur-pkgs.backup-iphone
2023-12-01 10:09:25 +01:00
pkgs.file
2023-03-21 11:59:13 +01:00
2023-05-15 21:57:35 +02:00
# KDE
pkgs.korganizer
2023-05-22 19:56:23 +02:00
pkgs.kalendar
pkgs.akonadi
pkgs.plasma5Packages.kdepim-runtime
pkgs.plasma5Packages.kdepim-addons
pkgs.plasma5Packages.akonadi-calendar
pkgs.plasma5Packages.akonadi-calendar-tools
pkgs.plasma5Packages.akonadi-contacts
pkgs.plasma5Packages.akonadi-import-wizard
pkgs.plasma5Packages.akonadi-mime
pkgs.plasma5Packages.akonadi-notes
pkgs.plasma5Packages.akonadi-search
pkgs.plasma5Packages.akonadiconsole
pkgs.plasma5Packages.akonadiconsole
2023-05-15 21:57:35 +02:00
2023-03-21 11:59:13 +01:00
# Rust
pkgs.cargo
pkgs.rustc
pkgs.rust-analyzer
2023-05-22 19:56:23 +02:00
pkgs.gcc
pkgs.valgrind
pkgs.gdb
2021-10-30 15:38:34 +02:00
];
2019-12-18 09:38:49 +01:00
2023-10-24 18:16:55 +02:00
2020-12-12 15:06:35 +01:00
system = { stateVersion = "19.09"; };
2023-10-24 18:16:55 +02:00
2019-12-18 09:38:49 +01:00
nix = {
2022-03-01 16:50:54 +01:00
settings = {
trusted-users = [ "root" "${myusers.ninjatrappeur.name}" ];
2023-05-13 00:10:48 +02:00
sandbox = "relaxed";
2022-12-18 08:54:10 +01:00
substituters = [
2023-11-14 11:57:13 +01:00
# "http://hydra.clearpath.ai"
2023-03-02 10:36:45 +01:00
"https://cache.nixos.org"
2022-12-18 08:54:10 +01:00
];
trusted-public-keys = [
2023-11-14 11:57:13 +01:00
# "hydra.clearpath.ai:VkmY4UV6HIDct2ZwjlvJniEQNZ1C7ZLglQweQpt6vE4="
2022-12-18 08:54:10 +01:00
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
];
2023-09-18 09:19:09 +02:00
experimental-features = [
"flakes"
"nix-command"
"repl-flake"
];
2022-06-15 09:24:31 +02:00
# substituters = [
# "http://seldon.alternativebit.fr:5555?priority=30"
# ];
2022-03-28 10:09:12 +02:00
# Seldon pubkey
2022-06-15 09:24:31 +02:00
# trusted-public-keys = [ "binarycache.example.com:GjvB/hNEEYW+Gzlz1zJHxQQpk+EYUUu0WNYxbxhbmzs=" ];
2022-03-01 16:50:54 +01:00
};
2019-12-18 09:38:49 +01:00
nixPath = [
"nixpkgs=${sources.nixpkgs}"
2019-12-18 09:38:49 +01:00
"nixos-config=/etc/nixos/configuration.nix"
];
};
2022-09-28 19:05:18 +02:00
virtualisation = {
2020-12-12 15:06:35 +01:00
libvirtd = { enable = true; };
2023-03-30 11:08:26 +02:00
podman = {
enable = true;
2023-09-26 17:00:23 +02:00
extraPackages = [ pkgs.zfs ];
2023-03-30 11:08:26 +02:00
};
};
2019-12-18 09:38:49 +01:00
}