cleanup, make checks pass
Some checks are pending
use nix / build (push) Waiting to run

This commit is contained in:
Cyryl Płotnicki 2024-04-27 11:33:38 +01:00
parent c6cb14a14b
commit 635f5902aa
28 changed files with 515 additions and 443 deletions

View file

@ -36,11 +36,13 @@
]; ];
specialArgs = {inherit inputs system;}; specialArgs = {inherit inputs system;};
}; };
mkRaspi = pkgs: hostname: mkRaspi = pkgs: hostname: let
pkgs.lib.nixosSystem {
system = "aarch64-linux"; system = "aarch64-linux";
in
pkgs.lib.nixosSystem {
inherit system;
modules = [(./. + "/nixos/boxes/${hostname}") sops.nixosModules.sops]; modules = [(./. + "/nixos/boxes/${hostname}") sops.nixosModules.sops];
specialArgs = {inherit inputs;}; specialArgs = {inherit inputs system;};
}; };
mkKiosk = pkgs: system: hostname: mkKiosk = pkgs: system: hostname:
pkgs.lib.nixosSystem { pkgs.lib.nixosSystem {
@ -52,13 +54,15 @@
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager.useGlobalPkgs = true; home-manager = {
home-manager.useUserPackages = true; useGlobalPkgs = true;
home-manager.users.cyryl = { useUserPackages = true;
users.cyryl = {
imports = [./nixos/home-manager ./nixos/home-manager/linux.nix]; imports = [./nixos/home-manager ./nixos/home-manager/linux.nix];
_module.args.inputs = inputs; _module.args.inputs = inputs;
_module.args.system = system; _module.args.system = system;
}; };
};
} }
]; ];
specialArgs = { specialArgs = {
@ -86,13 +90,15 @@
{programs.nix-ld.dev.enable = true;} {programs.nix-ld.dev.enable = true;}
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager.useGlobalPkgs = true; home-manager = {
home-manager.useUserPackages = true; useGlobalPkgs = true;
home-manager.users.cyryl = { useUserPackages = true;
users.cyryl = {
imports = [./nixos/home-manager ./nixos/home-manager/linux.nix]; imports = [./nixos/home-manager ./nixos/home-manager/linux.nix];
_module.args.inputs = inputs; _module.args.inputs = inputs;
_module.args.system = system; _module.args.system = system;
}; };
};
} }
]; ];
specialArgs = { specialArgs = {
@ -138,13 +144,15 @@
(./. + "/nixos/boxes/form3") (./. + "/nixos/boxes/form3")
home-manager.darwinModules.home-manager home-manager.darwinModules.home-manager
{ {
home-manager.useGlobalPkgs = true; home-manager = {
home-manager.useUserPackages = true; useGlobalPkgs = true;
home-manager.users.cyryl = { useUserPackages = true;
users.cyryl = {
imports = [./nixos/home-manager]; imports = [./nixos/home-manager];
_module.args.inputs = inputs; _module.args.inputs = inputs;
_module.args.system = system; _module.args.system = system;
}; };
};
} }
]; ];
}; };
@ -154,7 +162,6 @@
foryog = mkWorkstation nixpkgs-nixos-unstable "x86_64-linux" "foryog"; foryog = mkWorkstation nixpkgs-nixos-unstable "x86_64-linux" "foryog";
thinky = mkWorkstation nixpkgs-stable "x86_64-linux" "thinky"; thinky = mkWorkstation nixpkgs-stable "x86_64-linux" "thinky";
bolty = mkServer nixpkgs-stable "x86_64-linux" "bolty"; bolty = mkServer nixpkgs-stable "x86_64-linux" "bolty";
vpsfree1 = mkServer nixpkgs-stable "x86_64-linux" "vpsfree1";
cupsnet = mkServer nixpkgs-stable "aarch64-linux" "cupsnet"; cupsnet = mkServer nixpkgs-stable "aarch64-linux" "cupsnet";
mb1 = mkServer nixpkgs-stable "x86_64-linux" "mb1"; mb1 = mkServer nixpkgs-stable "x86_64-linux" "mb1";
homescreen = mkRaspi nixpkgs-stable "homescreen"; homescreen = mkRaspi nixpkgs-stable "homescreen";

View file

@ -15,10 +15,13 @@
zfs.forceImportRoot = false; zfs.forceImportRoot = false;
}; };
services.btrfs.autoScrub.enable = true; services = {
services.zfs.autoScrub.enable = true; btrfs.autoScrub.enable = true;
services.zfs.trim.enable = true; zfs = {
autoScrub.enable = true;
trim.enable = true;
};
};
boot.kernelParams = ["zfs.zfs_arc_max=17179869184"]; boot.kernelParams = ["zfs.zfs_arc_max=17179869184"];
boot.zfs.extraPools = ["data"]; boot.zfs.extraPools = ["data"];

View file

@ -7,13 +7,11 @@
../cli.nix ../cli.nix
../send-logs.nix ../send-logs.nix
./bolty-boot.nix ./bolty-boot.nix
./gitea-runner.nix
./grafana.nix ./grafana.nix
./home-assistant.nix ./home-assistant.nix
./home-security.nix ./home-security.nix
./influxdb.nix ./influxdb.nix
./logs.nix ./logs.nix
./mastodon.nix
./nas.nix ./nas.nix
./networking.nix ./networking.nix
./nix-store-server.nix ./nix-store-server.nix

View file

@ -14,7 +14,9 @@ in {
imports = [../nginx.nix ./virtualisation.nix]; imports = [../nginx.nix ./virtualisation.nix];
networking.firewall.allowedTCPPorts = [port 1883 8089]; networking.firewall.allowedTCPPorts = [port 1883 8089];
services.mosquitto = {
services = {
mosquitto = {
enable = true; enable = true;
package = inputs.nixpkgs-nixos-unstable.legacyPackages."${system}".mosquitto; package = inputs.nixpkgs-nixos-unstable.legacyPackages."${system}".mosquitto;
dataDir = "/data/mosquitto"; dataDir = "/data/mosquitto";
@ -30,7 +32,7 @@ in {
} }
]; ];
}; };
services.zigbee2mqtt = { zigbee2mqtt = {
enable = true; enable = true;
package = inputs.nixpkgs-master.legacyPackages."${system}".zigbee2mqtt; package = inputs.nixpkgs-master.legacyPackages."${system}".zigbee2mqtt;
settings = { settings = {
@ -46,7 +48,7 @@ in {
}; };
}; };
}; };
services.nginx = { nginx = {
virtualHosts = { virtualHosts = {
"bolty.raptor-carp.ts.net" = { "bolty.raptor-carp.ts.net" = {
forceSSL = true; forceSSL = true;
@ -60,6 +62,7 @@ in {
}; };
}; };
}; };
};
systemd.services.nginx-tailscale-certs = { systemd.services.nginx-tailscale-certs = {
script = '' script = ''

View file

@ -6,23 +6,25 @@
... ...
}: { }: {
networking.hostName = "bolty"; networking.hostName = "bolty";
systemd.network.enable = true;
networking.networkmanager.enable = false; networking.networkmanager.enable = false;
systemd.network.netdevs."br0".netdevConfig = {
systemd.network = {
enable = true;
netdevs."br0".netdevConfig = {
Name = "br0"; Name = "br0";
Kind = "bridge"; Kind = "bridge";
}; };
systemd.network.networks."br0" = { networks."br0" = {
name = "br0"; name = "br0";
address = ["10.0.0.8/24"]; address = ["10.0.0.8/24"];
gateway = ["10.0.0.1"]; gateway = ["10.0.0.1"];
DHCP = "no"; DHCP = "no";
dns = ["100.100.100.100" "9.9.9.9"]; dns = ["100.100.100.100" "9.9.9.9"];
}; };
networks."eth" = {
systemd.network.networks."eth" = {
name = "enp4s0"; name = "enp4s0";
networkConfig.Bridge = "br0"; networkConfig.Bridge = "br0";
DHCP = "no"; DHCP = "no";
}; };
};
} }

View file

@ -4,10 +4,13 @@
lib, lib,
... ...
}: { }: {
networking.firewall.enable = true; networking.firewall = {
networking.firewall.allowedTCPPorts = [631 6566]; enable = true;
networking.firewall.allowedUDPPorts = [631 6566]; allowedTCPPorts = [631 6566];
services.printing = { allowedUDPPorts = [631 6566];
};
services = {
printing = {
enable = true; enable = true;
drivers = with pkgs; [epson-escpr]; drivers = with pkgs; [epson-escpr];
listenAddresses = ["*:631"]; listenAddresses = ["*:631"];
@ -19,6 +22,19 @@
DefaultEncryption Never DefaultEncryption Never
''; '';
}; };
udev.packages = [];
saned = {
enable = true;
extraConfig = ''
100.69.222.80
10.0.24.0/24
10.0.0.1/24
foureighty
hagath
'';
};
};
hardware.printers.ensurePrinters = [ hardware.printers.ensurePrinters = [
{ {
@ -37,17 +53,5 @@
snapshot = true; snapshot = true;
}; };
services.udev.packages = [];
environment.systemPackages = with pkgs; [gawk]; environment.systemPackages = with pkgs; [gawk];
services.saned = {
enable = true;
extraConfig = ''
100.69.222.80
10.0.24.0/24
10.0.0.1/24
foureighty
hagath
'';
};
} }

View file

@ -4,11 +4,13 @@
lib, lib,
... ...
}: { }: {
hardware.enableRedistributableFirmware = true;
services.smartd.enable = true;
services.fstrim.enable = true;
environment.systemPackages = with pkgs; [smartmontools]; environment.systemPackages = with pkgs; [smartmontools];
services.fwupd.enable = true; hardware.enableRedistributableFirmware = true;
services.thermald.enable = true; services = {
services.haveged.enable = true; smartd.enable = true;
fstrim.enable = true;
fwupd.enable = true;
thermald.enable = true;
haveged.enable = true;
};
} }

View file

@ -12,7 +12,8 @@
in { in {
imports = []; imports = [];
systemd.services.tailscale-cert-make-path = { systemd.services = {
tailscale-cert-make-path = {
script = '' script = ''
mkdir -p ${basePath} mkdir -p ${basePath}
''; '';
@ -21,7 +22,7 @@ in {
wantedBy = ["multi-user.target"]; wantedBy = ["multi-user.target"];
}; };
systemd.services.tailscale-cert = { tailscale-cert = {
after = ["network.target" "network-online.target" "tailscaled.service"]; after = ["network.target" "network-online.target" "tailscaled.service"];
wants = ["tailscaled.service"]; wants = ["tailscaled.service"];
wantedBy = ["multi-user.target"]; wantedBy = ["multi-user.target"];
@ -48,7 +49,7 @@ in {
tailscale cert --cert-file ${certPath} --key-file ${keyPath} ${fqdn} tailscale cert --cert-file ${certPath} --key-file ${keyPath} ${fqdn}
''; '';
}; };
};
systemd.timers.tailscale-renew = { systemd.timers.tailscale-renew = {
wantedBy = ["timers.target"]; wantedBy = ["timers.target"];
description = "Renew tailscale server cert"; description = "Renew tailscale server cert";

View file

@ -5,12 +5,14 @@
lib, lib,
... ...
}: { }: {
boot.kernelPackages = pkgs.linuxPackages_latest; boot = {
boot.initrd.availableKernelModules = ["xhci_pci" "virtio_pci" "virtio_scsi" "ahci" "usbhid" "sr_mod"]; kernelPackages = pkgs.linuxPackages_latest;
initrd.availableKernelModules = ["xhci_pci" "virtio_pci" "virtio_scsi" "ahci" "usbhid" "sr_mod"];
boot.loader.grub = { loader.grub = {
devices = ["/dev/vda"]; devices = ["/dev/vda"];
efiSupport = true; efiSupport = true;
efiInstallAsRemovable = true; efiInstallAsRemovable = true;
}; };
};
} }

View file

@ -51,16 +51,18 @@ in {
home-manager.users.cyryl = {...}: { home-manager.users.cyryl = {...}: {
imports = []; imports = [];
home.packages = with pkgs; [awscli kubectl cargo-update]; home.packages = with pkgs; [awscli kubectl cargo-update];
programs.git.userEmail = lib.mkForce "cyryl.plotnicki@form3.tech"; programs = {
programs.git.extraConfig = { git.userEmail = lib.mkForce "cyryl.plotnicki@form3.tech";
git.extraConfig = {
user.signingkey = "6441B1BC81F8FB1561C9AFF5534222210FE423ED"; user.signingkey = "6441B1BC81F8FB1561C9AFF5534222210FE423ED";
commit.gpgsign = true; commit.gpgsign = true;
"url \"git@github.com:\"".insteadOf = "https://github.com/"; "url \"git@github.com:\"".insteadOf = "https://github.com/";
}; };
programs.gpg.enable = true; gpg.enable = true;
programs.gpg.homedir = "/Users/cyryl/.gnupg"; gpg.homedir = "/Users/cyryl/.gnupg";
programs.zsh.loginExtra = '' zsh.loginExtra = ''
eval "$(/opt/homebrew/bin/brew shellenv)" eval "$(/opt/homebrew/bin/brew shellenv)"
''; '';
}; };
};
} }

View file

@ -26,13 +26,16 @@
services.restic.backups.home-to-b2 = { services.restic.backups.home-to-b2 = {
repository = lib.mkForce "b2:cyplo-restic-foureighty:/"; repository = lib.mkForce "b2:cyplo-restic-foureighty:/";
}; };
boot.kernelParams = ["initcall_debug" ''dyndbg="file suspend.c +p"'' "no_console_suspend"];
boot.tmp.cleanOnBoot = true; boot = {
boot.binfmt.emulatedSystems = ["aarch64-linux"]; kernelParams = ["initcall_debug" ''dyndbg="file suspend.c +p"'' "no_console_suspend"];
boot.plymouth = { tmp.cleanOnBoot = true;
binfmt.emulatedSystems = ["aarch64-linux"];
plymouth = {
enable = true; enable = true;
logo = ./boot.png; logo = ./boot.png;
}; };
};
zramSwap = { zramSwap = {
enable = true; enable = true;
@ -42,13 +45,15 @@
time.timeZone = "Europe/London"; time.timeZone = "Europe/London";
hardware.trackpoint.enable = true; hardware = {
hardware.keyboard.qmk.enable = true; trackpoint.enable = true;
keyboard.qmk.enable = true;
opengl.extraPackages = with pkgs; [libva];
};
services.udev.packages = [pkgs.qmk-udev-rules]; services.udev.packages = [pkgs.qmk-udev-rules];
programs.ccache.enable = true; programs.ccache.enable = true;
hardware.opengl.extraPackages = with pkgs; [libva];
programs.steam.enable = true; programs.steam.enable = true;
nixpkgs.config.allowUnfree = true;
home-manager.users.cyryl = {...}: { home-manager.users.cyryl = {...}: {
imports = [ imports = [

View file

@ -45,9 +45,10 @@
device = "0000:00:02.0"; device = "0000:00:02.0";
}; };
hardware.trackpoint.enable = true; hardware.trackpoint.enable = true;
services.hardware.bolt.enable = true; services = {
hardware.bolt.enable = true;
services.xserver = { xserver = {
libinput = { libinput = {
enable = true; enable = true;
touchpad = { touchpad = {
@ -63,7 +64,9 @@
}; };
}; };
}; };
services.fprintd = {enable = true;}; fprintd = {enable = true;};
};
programs.ccache.enable = true; programs.ccache.enable = true;
hardware.opengl.extraPackages = with pkgs; [libva]; hardware.opengl.extraPackages = with pkgs; [libva];
programs.steam.enable = true; programs.steam.enable = true;

View file

@ -13,9 +13,11 @@
availableKernelModules = ["xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod"]; availableKernelModules = ["xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod"];
}; };
loader.systemd-boot.enable = true; loader = {
loader.efi.canTouchEfiVariables = true; systemd-boot.enable = true;
loader.efi.efiSysMountPoint = "/boot/efi"; efi.canTouchEfiVariables = true;
efi.efiSysMountPoint = "/boot/efi";
};
}; };
boot.initrd.secrets = {"/crypto_keyfile.bin" = null;}; boot.initrd.secrets = {"/crypto_keyfile.bin" = null;};

View file

@ -11,23 +11,24 @@
hostName = "homescreen"; hostName = "homescreen";
networkmanager = {enable = true;}; networkmanager = {enable = true;};
}; };
hardware.enableRedistributableFirmware = true;
environment.systemPackages = with pkgs; [neovim htop btop atop]; environment.systemPackages = with pkgs; [neovim htop btop atop];
services.fail2ban.enable = true; hardware = {
raspberry-pi."4".fkms-3d.enable = true;
services.openssh = { enableRedistributableFirmware = true;
deviceTree.filter = lib.mkForce "*rpi-*.dtb";
};
services = {
fail2ban.enable = true;
openssh = {
enable = true; enable = true;
permitRootLogin = "prohibit-password"; permitRootLogin = "prohibit-password";
passwordAuthentication = false; passwordAuthentication = false;
}; };
xserver = {
hardware.raspberry-pi."4".fkms-3d.enable = true;
hardware.deviceTree.filter = lib.mkForce "*rpi-*.dtb";
services.xserver = {
enable = true; enable = true;
displayManager = { displayManager = {
lightdm.enable = true; lightdm.enable = true;
@ -37,14 +38,16 @@
desktopManager.gnome.enable = true; desktopManager.gnome.enable = true;
libinput.enable = true; libinput.enable = true;
}; };
};
users = { users = {
mutableUsers = false; mutableUsers = false;
users.kiosk = {isNormalUser = true;}; users.kiosk = {isNormalUser = true;};
}; extraUsers.root.openssh.authorizedKeys.keys = [
users.extraUsers.root.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEo4R+6J3h6Ix3xWpOMdU7Es1/YxFchHw0c+kcCOJxFb cyryl@foureighty" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEo4R+6J3h6Ix3xWpOMdU7Es1/YxFchHw0c+kcCOJxFb cyryl@foureighty"
]; ];
};
fileSystems = { fileSystems = {
"/" = { "/" = {
device = "/dev/disk/by-label/NIXOS_SD"; device = "/dev/disk/by-label/NIXOS_SD";
@ -57,6 +60,7 @@
options = ["nofail" "noauto"]; options = ["nofail" "noauto"];
}; };
}; };
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
security.allowUserNamespaces = true; security.allowUserNamespaces = true;

View file

@ -19,11 +19,14 @@
../../zsh ../../zsh
]; ];
boot.kernelPackages = pkgs.linuxPackages_latest; boot = {
boot.loader.systemd-boot.enable = true; kernelPackages = pkgs.linuxPackages_latest;
boot.loader.efi.canTouchEfiVariables = true; loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
time.timeZone = "Europe/London"; time.timeZone = "Europe/London";
};
services.thermald.enable = true; services.thermald.enable = true;
home-manager.users.cyryl = {...}: { home-manager.users.cyryl = {...}: {
imports = [../../home-manager/programs/kitty.nix]; imports = [../../home-manager/programs/kitty.nix];

View file

@ -1,12 +1,18 @@
{ config, pkgs, nixpkgs-nixos-unstable-and-unfree, lib, ... }: { {
boot.kernelModules = [ "fuse" ]; config,
services.smartd.enable = true; pkgs,
nixpkgs-nixos-unstable-and-unfree,
lib,
...
}: {
boot.kernelModules = ["fuse"];
sound.enable = true; sound.enable = true;
networking.networkmanager = { networking.networkmanager = {
enable = true; enable = true;
dispatcherScripts = [{ dispatcherScripts = [
{
source = pkgs.writeText "upHook" '' source = pkgs.writeText "upHook" ''
enable_disable_wifi () enable_disable_wifi ()
{ {
@ -27,37 +33,21 @@
fi fi
''; '';
type = "basic"; type = "basic";
}]; }
];
}; };
hardware.enableRedistributableFirmware = true;
hardware.cpu.intel.updateMicrocode = true;
hardware.bluetooth = {
enable = true;
package = pkgs.bluez;
settings = { General = { Enable = "Source,Sink,Media,Socket"; }; };
};
hardware.pulseaudio.enable = false;
security.rtkit.enable = true; security.rtkit.enable = true;
services.pipewire = {
services = {
smartd.enable = true;
pipewire = {
enable = true; enable = true;
alsa.enable = true; alsa.enable = true;
alsa.support32Bit = true; alsa.support32Bit = true;
pulse.enable = true; pulse.enable = true;
extraConfig.pipewire."92-low-latency" = {
context.properties = {
default.clock.rate = 48000;
default.clock.quantum = 32;
default.clock.min-quantum = 32;
default.clock.max-quantum = 32;
}; };
}; printing = {
};
environment.systemPackages = with pkgs; [ ghostscript poppler ];
services.printing = {
enable = true; enable = true;
drivers = with pkgs; [ drivers = with pkgs; [
epson-escpr epson-escpr
@ -69,13 +59,28 @@
''; '';
}; };
hardware.printers.ensurePrinters = [ udev.packages = [];
};
environment.systemPackages = with pkgs; [ghostscript poppler];
hardware = {
enableRedistributableFirmware = true;
cpu.intel.updateMicrocode = true;
bluetooth = {
enable = true;
package = pkgs.bluez;
settings = {General = {Enable = "Source,Sink,Media,Socket";};};
};
pulseaudio.enable = false;
printers.ensurePrinters = [
{ {
description = "Epson XP-540 via bolty"; description = "Epson XP-540 via bolty";
name = "epson_xp540_via_bolty"; name = "epson_xp540_via_bolty";
deviceUri = "ipp://bolty:631/printers/epson_xp540"; deviceUri = "ipp://bolty:631/printers/epson_xp540";
model = model = "epson-inkjet-printer-escpr/Epson-XP-540_Series-epson-escpr-en.ppd";
"epson-inkjet-printer-escpr/Epson-XP-540_Series-epson-escpr-en.ppd";
ppdOptions = { ppdOptions = {
PageSize = "A4"; PageSize = "A4";
Duplex = "DuplexNoTumble"; Duplex = "DuplexNoTumble";
@ -84,8 +89,7 @@
{ {
description = "Samsung SCX-4623 Series"; description = "Samsung SCX-4623 Series";
name = "samsung-SCX-4623"; name = "samsung-SCX-4623";
deviceUri = deviceUri = "usb://Samsung/SCX-4623%20Series?serial=Z2TYBFFZC01007W&interface=1";
"usb://Samsung/SCX-4623%20Series?serial=Z2TYBFFZC01007W&interface=1";
model = "samsung/SCX-4623FW.ppd"; model = "samsung/SCX-4623FW.ppd";
ppdOptions = { ppdOptions = {
PageSize = "A4"; PageSize = "A4";
@ -94,8 +98,7 @@
} }
]; ];
services.udev.packages = [ ]; sane = {
hardware.sane = {
enable = true; enable = true;
snapshot = true; snapshot = true;
extraBackends = with pkgs; [ extraBackends = with pkgs; [
@ -104,7 +107,7 @@
gawk gawk
]; ];
}; };
};
powerManagement = { powerManagement = {
enable = lib.mkForce true; enable = lib.mkForce true;
resumeCommands = '' resumeCommands = ''

View file

@ -20,6 +20,7 @@ in {
boot.supportedFilesystems = ["ntfs"]; boot.supportedFilesystems = ["ntfs"];
environment.enableDebugInfo = true; environment.enableDebugInfo = true;
nixpkgs.config.allowUnfree = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
ccache ccache
curl curl

View file

@ -3,7 +3,8 @@
pkgs, pkgs,
... ...
}: { }: {
nix.buildMachines = [ nix = {
buildMachines = [
{ {
hostName = "bolty"; hostName = "bolty";
sshUser = "nix-builder"; sshUser = "nix-builder";
@ -16,10 +17,11 @@
} }
]; ];
nix.extraOptions = '' extraOptions = ''
builders-use-substitutes = true builders-use-substitutes = true
''; '';
nix.distributedBuilds = true; distributedBuilds = true;
nix.settings.substituters = ["https://cache.nixos.org/" "ssh://nix-ssh@bolty.raptor-carp.ts.net"]; settings.substituters = ["https://cache.nixos.org/" "ssh://nix-ssh@bolty.raptor-carp.ts.net"];
nix.settings.trusted-public-keys = ["cyplodev-store-key:a/+PEufePs7giWqYyRqy+TgUKLMbY+RQuJQu2aUjdl8="]; settings.trusted-public-keys = ["cyplodev-store-key:a/+PEufePs7giWqYyRqy+TgUKLMbY+RQuJQu2aUjdl8="];
};
} }

View file

@ -20,9 +20,11 @@
colour.ui = true; colour.ui = true;
core.fsmonitor = true; core.fsmonitor = true;
credential = {helper = "cache";}; credential = {helper = "cache";};
diff.algorithm = "histogram"; diff = {
diff.renameLimit = 2048; algorithm = "histogram";
diff.renames = "copy"; renameLimit = 2048;
renames = "copy";
};
help.autocorrect = 1; help.autocorrect = 1;
init.defaultBranch = "main"; init.defaultBranch = "main";
merge.renamelimit = 8192; merge.renamelimit = 8192;

View file

@ -22,9 +22,11 @@
imports = []; imports = [];
programs.chromium.enable = true; programs = {
programs.firefox.enable = true; chromium.enable = true;
programs.sioyek.enable = true; firefox.enable = true;
sioyek.enable = true;
};
home.packages = home.packages =
(with pkgs; (with pkgs;
with pkgs.gnome3; with pkgs.gnome3;

View file

@ -7,9 +7,11 @@
programs.vscode = { programs.vscode = {
enable = true; enable = true;
userSettings = { userSettings = {
editor.fontFamily = "'Berkeley Mono', 'Droid Sans Mono', 'monospace', monospace"; editr = {
editor.formatOnType = true; fontFamily = "'Berkeley Mono', 'Droid Sans Mono', 'monospace', monospace";
editor.fontSize = 16; formatOnType = true;
fontSize = 16;
};
files.autoSave = "onFocusChange"; files.autoSave = "onFocusChange";
rust-analyzer.checkOnSave.command = "clippy"; rust-analyzer.checkOnSave.command = "clippy";
platformio-ide = { platformio-ide = {

View file

@ -7,19 +7,20 @@
}: let }: let
username = "cyryl"; username = "cyryl";
in { in {
home.sessionVariables = { home = {
inherit username;
sessionVariables = {
LC_ALL = "en_GB.UTF-8"; LC_ALL = "en_GB.UTF-8";
LANG = "en_GB.UTF-8"; LANG = "en_GB.UTF-8";
PASSWORD_STORE_ENABLE_EXTENSIONS = "true"; PASSWORD_STORE_ENABLE_EXTENSIONS = "true";
}; };
packages = with pkgs; [];
homeDirectory = lib.mkDefault "/home/${username}";
stateVersion = "23.11";
};
news.display = "show"; news.display = "show";
home.packages = with pkgs; [];
home.username = username;
home.homeDirectory = lib.mkDefault "/home/${username}";
home.stateVersion = "23.11";
programs.home-manager.enable = true; programs.home-manager.enable = true;
imports = [ imports = [

View file

@ -3,18 +3,20 @@
pkgs, pkgs,
... ...
}: { }: {
home.file.".config/nixpkgs/config.nix".source = ../shell-config.nix; home.file = {
home.file.".gdbinit".text = '' ".config/nixpkgs/config.nix".source = ../shell-config.nix;
".gdbinit".text = ''
set auto-load python-scripts on set auto-load python-scripts on
add-auto-load-safe-path /home/cyryl/dev/dotfiles/.gdbinit add-auto-load-safe-path /home/cyryl/dev/dotfiles/.gdbinit
set auto-load safe-path / set auto-load safe-path /
source /home/cyryl/dev/dotfiles/.gdbinit source /home/cyryl/dev/dotfiles/.gdbinit
''; '';
home.file.".gdbinit.d/dashboard".text = '' ".gdbinit.d/dashboard".text = ''
dashboard -layout breakpoints source expressions stack threads variables dashboard -layout breakpoints source expressions stack threads variables
dashboard variables -style compact 0 dashboard variables -style compact 0
dashboard source -style height 24 dashboard source -style height 24
dashboard stack -style compact 1 dashboard stack -style compact 1
dashboard stack -style limit 3 dashboard stack -style limit 3
''; '';
};
} }

View file

@ -44,12 +44,15 @@
fractalart.enable = true; fractalart.enable = true;
colord.enable = true; colord.enable = true;
xserver.windowManager.i3.enable = true; xserver = {
xserver.displayManager.sddm = { enable = true;
windowManager.i3.enable = true;
displayManager.sddm = {
enable = true; enable = true;
enableHidpi = true; enableHidpi = true;
}; };
}; };
};
home-manager.users.cyryl = {...}: { home-manager.users.cyryl = {...}: {
imports = [./home.nix]; imports = [./home.nix];
home.packages = with pkgs; []; home.packages = with pkgs; [];

View file

@ -9,21 +9,24 @@
nix.settings.allowed-users = ["@users"]; nix.settings.allowed-users = ["@users"];
security.apparmor.enable = true; security = {
security.apparmor.killUnconfinedConfinables = true; apparmor.enable = true;
security.forcePageTableIsolation = true; apparmor.killUnconfinedConfinables = true;
security.lockKernelModules = false; forcePageTableIsolation = true;
security.protectKernelImage = true; lockKernelModules = false;
security.virtualisation.flushL1DataCache = "always"; protectKernelImage = true;
virtualisation.flushL1DataCache = "always";
};
sops.age = { sops.age = {
keyFile = "/var/lib/sops-nix/key.txt"; keyFile = "/var/lib/sops-nix/key.txt";
generateKey = true; generateKey = true;
}; };
boot.kernelParams = ["slub_debug=FZP" "page_poison=1" "page_alloc.shuffle=1"]; boot = {
kernelParams = ["slub_debug=FZP" "page_poison=1" "page_alloc.shuffle=1"];
boot.blacklistedKernelModules = [ blacklistedKernelModules = [
# Obscure network protocols # Obscure network protocols
"ax25" "ax25"
"netrom" "netrom"
@ -52,40 +55,43 @@
"ufs" "ufs"
]; ];
kernel.sysctl = {
# Restrict ptrace() usage to processes with a pre-defined relationship # Restrict ptrace() usage to processes with a pre-defined relationship
# (e.g., parent/child) # (e.g., parent/child)
boot.kernel.sysctl."kernel.yama.ptrace_scope" = lib.mkOverride 500 1; "kernel.yama.ptrace_scope" = lib.mkOverride 500 1;
# Hide kptrs even for processes with CAP_SYSLOG # Hide kptrs even for processes with CAP_SYSLOG
boot.kernel.sysctl."kernel.kptr_restrict" = lib.mkOverride 500 2; "kernel.kptr_restrict" = lib.mkOverride 500 2;
# Disable bpf() JIT (to eliminate spray attacks) # Disable bpf() JIT (to eliminate spray attacks)
boot.kernel.sysctl."net.core.bpf_jit_enable" = false; "net.core.bpf_jit_enable" = false;
# Disable ftrace debugging # Disable ftrace debugging
boot.kernel.sysctl."kernel.ftrace_enabled" = false; "kernel.ftrace_enabled" = false;
# Enable strict reverse path filtering (that is, do not attempt to route # Enable strict reverse path filtering (that is, do not attempt to route
# packets that "obviously" do not belong to the iface's network; dropped # packets that "obviously" do not belong to the iface's network; dropped
# packets are logged as martians). # packets are logged as martians).
boot.kernel.sysctl."net.ipv4.conf.all.log_martians" = true; "net.ipv4.conf.all.log_martians" = true;
boot.kernel.sysctl."net.ipv4.conf.all.rp_filter" = "1"; "net.ipv4.conf.all.rp_filter" = "1";
boot.kernel.sysctl."net.ipv4.conf.default.log_martians" = true; "net.ipv4.conf.default.log_martians" = true;
boot.kernel.sysctl."net.ipv4.conf.default.rp_filter" = "1"; "net.ipv4.conf.default.rp_filter" = "1";
# Ignore broadcast ICMP (mitigate SMURF) # Ignore broadcast ICMP (mitigate SMURF)
boot.kernel.sysctl."net.ipv4.icmp_echo_ignore_broadcasts" = true; "net.ipv4.icmp_echo_ignore_broadcasts" = true;
# Ignore incoming ICMP redirects (note: default is needed to ensure that the # Ignore incoming ICMP redirects (note: default is needed to ensure that the
# setting is applied to interfaces added after the sysctls are set) # setting is applied to interfaces added after the sysctls are set)
boot.kernel.sysctl."net.ipv4.conf.all.accept_redirects" = false; "net.ipv4.conf.all.accept_redirects" = false;
boot.kernel.sysctl."net.ipv4.conf.all.secure_redirects" = false; "net.ipv4.conf.all.secure_redirects" = false;
boot.kernel.sysctl."net.ipv4.conf.default.accept_redirects" = false; "net.ipv4.conf.default.accept_redirects" = false;
boot.kernel.sysctl."net.ipv4.conf.default.secure_redirects" = false; "net.ipv4.conf.default.secure_redirects" = false;
boot.kernel.sysctl."net.ipv6.conf.all.accept_redirects" = false; "net.ipv6.conf.all.accept_redirects" = false;
boot.kernel.sysctl."net.ipv6.conf.default.accept_redirects" = false; "net.ipv6.conf.default.accept_redirects" = false;
# Ignore outgoing ICMP redirects (this is ipv4 only) # Ignore outgoing ICMP redirects (this is ipv4 only)
boot.kernel.sysctl."net.ipv4.conf.all.send_redirects" = false; "net.ipv4.conf.all.send_redirects" = false;
boot.kernel.sysctl."net.ipv4.conf.default.send_redirects" = false; "net.ipv4.conf.default.send_redirects" = false;
};
};
} }

View file

@ -30,7 +30,9 @@ in {
openssh.authorizedKeys.keys = authorizedKeys; openssh.authorizedKeys.keys = authorizedKeys;
}; };
nix.settings.trusted-users = ["root" "nix-builder"]; nix = {
nix.sshServe.enable = true; settings.trusted-users = ["root" "nix-builder"];
nix.sshServe.keys = authorizedKeys; sshServe.enable = true;
sshServe.keys = authorizedKeys;
};
} }

View file

@ -52,11 +52,13 @@ in {
gsettings-desktop-schemas gsettings-desktop-schemas
lxappearance lxappearance
]; ];
file.".config/wofi/style.css".source = ../../.config/wofi/style.css; file = {
file.".config/waybar/config".source = ../../.config/waybar/config; ".config/wofi/style.css".source = ../../.config/wofi/style.css;
file.".config/waybar/style.css".source = ".config/waybar/config".source = ../../.config/waybar/config;
".config/waybar/style.css".source =
../../.config/waybar/style.css; ../../.config/waybar/style.css;
}; };
};
services.udiskie.enable = true; services.udiskie.enable = true;
xsession.preferStatusNotifierItems = true; xsession.preferStatusNotifierItems = true;

View file

@ -11,12 +11,15 @@
cocPackage = unstablePackages.vimPlugins.coc-nvim; cocPackage = unstablePackages.vimPlugins.coc-nvim;
nvimPackage = unstablePackages.neovim-unwrapped; nvimPackage = unstablePackages.neovim-unwrapped;
in { in {
home.file.".vimrc".source = ../../.vimrc; home = {
home.packages = with pkgs; [ripgrep]; file.".vimrc".source = ../../.vimrc;
home.sessionVariables = { packages = with pkgs; [ripgrep];
sessionVariables = {
EDITOR = "vim"; EDITOR = "vim";
VISUAL = "vim"; VISUAL = "vim";
}; };
};
programs.zsh.sessionVariables = { programs.zsh.sessionVariables = {
EDITOR = "vim"; EDITOR = "vim";
VISUAL = "vim"; VISUAL = "vim";