dotfiles/hosts/watermelon/configuration.nix

205 lines
4.6 KiB
Nix
Raw Normal View History

# This is your system's configuration file.
# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix)
2023-04-26 01:16:53 +00:00
{
inputs,
lib,
2023-04-26 01:16:53 +00:00
config,
pkgs,
...
}: {
# You can import other NixOS modules here
2023-04-26 01:16:53 +00:00
imports = [
./hardware-configuration.nix
];
services.xserver = {
enable = true;
xkb.layout = "us";
2023-04-26 01:16:53 +00:00
};
2024-02-16 12:21:48 +00:00
services.tailscale.enable = true;
hardware.graphics = {
2023-08-09 14:05:31 +00:00
enable = true;
enable32Bit = true;
2023-08-09 14:05:31 +00:00
};
nixpkgs = {
# Configure your nixpkgs instance
config = {
# Disable if you don't want unfree packages
allowUnfree = true;
};
2023-04-26 01:16:53 +00:00
};
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;
};
2023-08-26 20:20:21 +00:00
};
# the configuration (pain)
programs = {
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
hyprland = {
enable = true;
xwayland.enable = true;
};
zsh.enable = true;
};
2023-04-26 01:16:53 +00:00
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
2024-05-07 18:46:27 +00:00
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; [
2024-05-07 18:46:27 +00:00
lxqt.lxqt-policykit
2024-02-07 01:42:54 +00:00
gcc
git
grim
lxqt.lxqt-policykit
pavucontrol
pciutils
pulseaudio
screen
slurp
usbutils
wget
wl-clipboard
xdg-utils
swaynotificationcenter
swayidle
wofi
swaylock
gnome-keyring
2024-02-16 12:21:48 +00:00
gtklock
fprintd
tailscale
];
2023-04-26 01:16:53 +00:00
2024-02-16 12:21:48 +00:00
services.fprintd = {
enable = true;
};
services.printing.enable = true;
2023-04-26 01:16:53 +00:00
2023-09-02 19:05:43 +00:00
fonts.packages = with pkgs; [
font-awesome
nerdfonts
jetbrains-mono
2023-09-02 19:05:43 +00:00
winePackages.fonts
];
2024-02-16 12:21:48 +00:00
networking.hostName = "watermelon";
networking.networkmanager.enable = true;
2023-08-09 14:05:31 +00:00
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.systemd.enable = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
2023-04-26 01:16:53 +00:00
# Set a time zone, idiot
time.timeZone = "Europe/London";
2023-08-09 14:05:31 +00:00
# Fun internationalisation stuffs (AAAAAAAA)
i18n.defaultLocale = "en_GB.UTF-8";
2023-08-09 14:05:31 +00:00
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";
};
2023-04-26 01:16:53 +00:00
# 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;
2023-04-26 01:16:53 +00:00
};
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
2023-04-26 01:16:53 +00:00
# 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.
2023-04-26 01:16:53 +00:00
services.openssh.enable = true;
2024-02-07 01:42:54 +00:00
2024-02-16 12:21:48 +00:00
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;
2024-02-16 12:21:48 +00:00
security.pam.services.gtklock.text = lib.readFile "${pkgs.gtklock}/etc/pam.d/gtklock";
2023-04-26 01:16:53 +00:00
networking.firewall.enable = false;
2024-02-07 01:42:54 +00:00
system.stateVersion = "24.05";
2023-04-26 01:16:53 +00:00
}