207 lines
4.6 KiB
Nix
207 lines
4.6 KiB
Nix
# This is your system's configuration file.
|
|
# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix)
|
|
{
|
|
inputs,
|
|
lib,
|
|
config,
|
|
pkgs,
|
|
...
|
|
}: {
|
|
# You can import other NixOS modules here
|
|
imports = [
|
|
./hardware-configuration.nix
|
|
];
|
|
|
|
services.xserver = {
|
|
enable = true;
|
|
xkb.layout = "us";
|
|
libinput.enable = true;
|
|
};
|
|
|
|
services.tailscale.enable = true;
|
|
|
|
hardware.opengl = {
|
|
enable = true;
|
|
driSupport = true;
|
|
driSupport32Bit = true;
|
|
};
|
|
|
|
nixpkgs = {
|
|
# Configure your nixpkgs instance
|
|
config = {
|
|
# Disable if you don't want unfree packages
|
|
allowUnfree = true;
|
|
};
|
|
};
|
|
|
|
nix = {
|
|
# This will add each flake input as a registry
|
|
# To make nix3 commands consistent with your flake
|
|
registry = lib.mapAttrs (_: value: {flake = value;}) inputs;
|
|
|
|
# This will additionally add your inputs to the system's legacy channels
|
|
# Making legacy nix commands consistent as well, awesome!
|
|
nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
|
|
|
|
settings = {
|
|
# Enable flakes and new 'nix' command
|
|
experimental-features = "nix-command flakes";
|
|
# Deduplicate and optimize nix store
|
|
auto-optimise-store = true;
|
|
};
|
|
};
|
|
|
|
# the configuration (pain)
|
|
programs = {
|
|
gnupg.agent = {
|
|
enable = true;
|
|
enableSSHSupport = true;
|
|
};
|
|
hyprland = {
|
|
enable = true;
|
|
xwayland.enable = true;
|
|
};
|
|
zsh.enable = true;
|
|
};
|
|
|
|
security.rtkit.enable = true;
|
|
services.pipewire = {
|
|
enable = true;
|
|
alsa.enable = true;
|
|
alsa.support32Bit = true;
|
|
pulse.enable = true;
|
|
};
|
|
|
|
security.polkit.enable = true;
|
|
|
|
systemd = {
|
|
user.services.polkit-lxqt = {
|
|
description = "polkit-lxqt";
|
|
wantedBy = ["graphical-session.target"];
|
|
wants = ["graphical-session.target"];
|
|
after = ["graphical-session.target"];
|
|
serviceConfig = {
|
|
Type = "simple";
|
|
ExecStart = "${pkgs.lxqt.lxqt-policykit}/bin/lxqt-policykit-agent";
|
|
Restart = "on-failure";
|
|
RestartSec = 1;
|
|
TimeoutStopSec = 10;
|
|
};
|
|
};
|
|
};
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
lxqt.lxqt-policykit
|
|
gcc
|
|
git
|
|
grim
|
|
lxqt.lxqt-policykit
|
|
pavucontrol
|
|
pciutils
|
|
pulseaudio
|
|
screen
|
|
slurp
|
|
usbutils
|
|
wget
|
|
wl-clipboard
|
|
xdg-utils
|
|
swaynotificationcenter
|
|
swayidle
|
|
wofi
|
|
swaylock
|
|
gnome.gnome-keyring
|
|
gtklock
|
|
fprintd
|
|
tailscale
|
|
];
|
|
|
|
services.fprintd = {
|
|
enable = true;
|
|
};
|
|
services.printing.enable = true;
|
|
|
|
fonts.packages = with pkgs; [
|
|
font-awesome
|
|
nerdfonts
|
|
jetbrains-mono
|
|
winePackages.fonts
|
|
];
|
|
|
|
networking.hostName = "watermelon";
|
|
networking.networkmanager.enable = true;
|
|
|
|
boot.loader.systemd-boot.enable = true;
|
|
boot.loader.efi.canTouchEfiVariables = true;
|
|
boot.initrd.systemd.enable = true;
|
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
|
|
|
# Set a time zone, idiot
|
|
time.timeZone = "Europe/London";
|
|
|
|
# Fun internationalisation stuffs (AAAAAAAA)
|
|
i18n.defaultLocale = "en_GB.UTF-8";
|
|
|
|
i18n.extraLocaleSettings = {
|
|
LC_ADDRESS = "en_GB.UTF-8";
|
|
LC_IDENTIFICATION = "en_GB.UTF-8";
|
|
LC_MEASUREMENT = "en_GB.UTF-8";
|
|
LC_MONETARY = "en_GB.UTF-8";
|
|
LC_NAME = "en_GB.UTF-8";
|
|
LC_NUMERIC = "en_GB.UTF-8";
|
|
LC_PAPER = "en_GB.UTF-8";
|
|
LC_TELEPHONE = "en_GB.UTF-8";
|
|
LC_TIME = "en_GB.UTF-8";
|
|
};
|
|
|
|
# define user acc
|
|
users.users.floppydisk = {
|
|
isNormalUser = true;
|
|
description = "Frankie B.";
|
|
extraGroups = ["networkmanager" "wheel"];
|
|
openssh.authorizedKeys.keys = [
|
|
# TODO: Add your SSH public key(s) here, if you plan on using SSH to connect
|
|
];
|
|
shell = pkgs.zsh;
|
|
};
|
|
|
|
nix.gc = {
|
|
automatic = true;
|
|
dates = "weekly";
|
|
options = "--delete-older-than 30d";
|
|
};
|
|
|
|
# This setups a SSH server. Very important if you're setting up a headless system.
|
|
# Feel free to remove if you don't need it.
|
|
|
|
services.openssh.enable = true;
|
|
|
|
services.greetd = {
|
|
enable = true;
|
|
restart = true;
|
|
settings = {
|
|
default_session = {
|
|
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd Hyprland";
|
|
user = "greeter";
|
|
};
|
|
};
|
|
};
|
|
|
|
systemd.services.greetd.serviceConfig = {
|
|
Type = "idle";
|
|
StandardInput = "tty";
|
|
StandardOutput = "tty";
|
|
StandardError = "journal";
|
|
TTYReset = "true";
|
|
TTYHangup = "true";
|
|
TTYVTDisallocate = true;
|
|
};
|
|
|
|
systemd.services.NetworkManager-wait-online.enable = lib.mkForce false;
|
|
|
|
security.pam.services.gtklock.text = lib.readFile "${pkgs.gtklock}/etc/pam.d/gtklock";
|
|
|
|
networking.firewall.enable = false;
|
|
|
|
system.stateVersion = "24.05";
|
|
}
|