#
# Specific system configuration settings for desktop
#
# flake.nix
# ├─ ./hosts
# │ └─ ./laptop
# │ ├─ default.nix *
# │ └─ hardware-configuration.nix
# └─ ./modules
# ├─ ./desktop
# │ ├─ ./bspwm
# │ │ └─ default.nix
# │ └─ ./virtualisation
# │ └─ docker.nix
# └─ ./hardware
# └─ default.nix
#
{ config, pkgs, user, ... }:
{
imports = # For now, if applying to other system, swap files
[(import ./hardware-configuration.nix)] ++ # Current system hardware config @ /etc/nixos/hardware-configuration.nix
[(import ../../modules/desktop/bspwm/default.nix)] ++ # Window Manager
[(import ../../modules/desktop/virtualisation/docker.nix)] ++ # Docker
(import ../../modules/hardware); # Hardware devices
boot = { # Boot options
kernelPackages = pkgs.linuxPackages_latest;
loader = { # EFI Boot
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot";
};
grub = { # Most of grub is set up for dual boot
enable = true;
devices = [ "nodev" ];
efiSupport = true;
useOSProber = true; # Find all boot options
configurationLimit = 2;
};
timeout = 1; # Grub auto select time
};
};
hardware.sane = { # Used for scanning with Xsane
enable = true;
extraBackends = [ pkgs.sane-airscan ];
};
environment = {
systemPackages = with pkgs; [
simple-scan
];
};
programs = { # No xbacklight, this is the alterantive
dconf.enable = true;
light.enable = true;
};
services = {
tlp.enable = true; # TLP and auto-cpufreq for power management
#logind.lidSwitch = "ignore"; # Laptop does not go to sleep when lid is closed
auto-cpufreq.enable = true;
blueman.enable = true;
printing = { # Printing and drivers for TS5300
enable = true;
drivers = [ pkgs.cnijfilter2 ];
};
avahi = { # Needed to find wireless printer
enable = true;
nssmdns = true;
publish = { # Needed for detecting the scanner
enable = true;
addresses = true;
userServices = true;
};
};
samba = {
enable = true;
shares = {
share = {
"path" = "/home/${user}";
"guest ok" = "no";
"read only" = "no";
};
};
openFirewall = true;
};
};
#temporary bluetooth fix
systemd.tmpfiles.rules = [
"d /var/lib/bluetooth 700 root root - -"
];
systemd.targets."bluetooth".after = ["systemd-tmpfiles-setup.service"];
}