summaryrefslogtreecommitdiff
path: root/system
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-09-17 22:07:16 -0400
committerFreya Murphy <freya@freyacat.org>2025-09-17 22:07:16 -0400
commit68d03fe362b7e0df11662d8d6a1e01eac0bfae77 (patch)
treea76abd05f662f73b4083ddb0d8bf0d72c29e5a74 /system
parentupdate commits (diff)
downloaddotfiles-nix-68d03fe362b7e0df11662d8d6a1e01eac0bfae77.tar.gz
dotfiles-nix-68d03fe362b7e0df11662d8d6a1e01eac0bfae77.tar.bz2
dotfiles-nix-68d03fe362b7e0df11662d8d6a1e01eac0bfae77.zip
refactor: remove modules folder, fully split home and system modules
Diffstat (limited to 'system')
-rw-r--r--system/default.nix34
-rw-r--r--system/desktops/default.nix8
-rw-r--r--system/desktops/hyprland.nix29
-rw-r--r--system/desktops/ly.nix59
-rw-r--r--system/desktops/sway.nix33
-rw-r--r--system/desktops/wayland.nix24
-rw-r--r--system/fingerprint.nix6
-rw-r--r--system/gaming/default.nix5
-rw-r--r--system/gaming/steam.nix34
-rw-r--r--system/sshd.nix4
-rw-r--r--system/virt/default.nix6
-rw-r--r--system/virt/docker.nix15
-rw-r--r--system/virt/qemu.nix21
13 files changed, 270 insertions, 8 deletions
diff --git a/system/default.nix b/system/default.nix
index e3b7c66..824c99f 100644
--- a/system/default.nix
+++ b/system/default.nix
@@ -1,10 +1,15 @@
{
+ lib,
config,
pkgs,
- self,
+ inputs,
...
}: {
imports = [
+ inputs.home-manager.nixosModules.home-manager
+ ./desktops
+ ./gaming
+ ./virt
./battery.nix
./bluetooth.nix
./desktop.nix
@@ -27,6 +32,27 @@
# enable nixos-rebuild-ng
system.rebuild.enableNg = true;
+ # use system packages in home manager
+ home-manager.useGlobalPkgs = true;
+
+ # install user packages to /etc/profiles and not home directory
+ home-manager.useUserPackages = true;
+
+ # root user home
+ home-manager.users.root = {
+ home.stateVersion = config.stateVersion;
+ };
+
+ # main user home
+ home-manager.extraSpecialArgs = {inherit inputs;};
+ home-manager.users.${config.user} = {
+ imports = [
+ ../home
+ ../options.nix
+ (inputs.self.lib.customConfig config)
+ ];
+ };
+
# hostname
networking.hostName = config.hostName;
@@ -40,7 +66,6 @@
shared-mime-info
# shell
bash
- zsh
# utility
curl
dig
@@ -60,6 +85,9 @@
wget
];
+ # system shell
+ programs.zsh.enable = true;
+
# use the latest kernel
boot.kernelPackages = pkgs.linuxPackages_latest;
@@ -92,5 +120,5 @@
};
# certs
- security.pki.certificateFiles = self.lib.certs;
+ security.pki.certificateFiles = inputs.self.lib.certs;
}
diff --git a/system/desktops/default.nix b/system/desktops/default.nix
new file mode 100644
index 0000000..8f9270f
--- /dev/null
+++ b/system/desktops/default.nix
@@ -0,0 +1,8 @@
+{...}: {
+ imports = [
+ ./hyprland.nix
+ ./ly.nix
+ ./sway.nix
+ ./wayland.nix
+ ];
+}
diff --git a/system/desktops/hyprland.nix b/system/desktops/hyprland.nix
new file mode 100644
index 0000000..91170bd
--- /dev/null
+++ b/system/desktops/hyprland.nix
@@ -0,0 +1,29 @@
+{
+ inputs,
+ config,
+ pkgs,
+ lib,
+ ...
+}: let
+ inherit (lib) mkIf mkDefault;
+ cfg = config.desktops.hyprland;
+in {
+ config = mkIf cfg.enable {
+ desktops.wayland.enable = true;
+
+ xdg.portal = {
+ extraPortals = [
+ inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland
+ ];
+ config = {
+ hyprland.common = ["gtk" "hyprland"];
+ };
+ };
+
+ programs.hyprland = {
+ enable = true;
+ package = inputs.hyprland.packages.${pkgs.system}.hyprland;
+ portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
+ };
+ };
+}
diff --git a/system/desktops/ly.nix b/system/desktops/ly.nix
new file mode 100644
index 0000000..ac53495
--- /dev/null
+++ b/system/desktops/ly.nix
@@ -0,0 +1,59 @@
+{
+ lib,
+ config,
+ pkgs,
+ inputs,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.desktops.ly;
+in {
+ config = mkIf cfg.enable {
+ # display manager
+ services.displayManager.ly = {
+ enable = true;
+ package = inputs.self.packages.${pkgs.system}.ly;
+
+ settings = let
+ base = "0x00${config.theme.colors.base}";
+ text = "0x00${config.theme.colors.text}";
+ bold = "0x01${config.theme.colors.text}";
+ error = "0x00${config.theme.colors.error}";
+ save_file = pkgs.writeText "ly-prefs" ''
+ ${config.user}
+ 1
+ '';
+ in {
+ # general
+ clear_password = true;
+ default_input = "password";
+ xinitrc = "null";
+ hide_version_string = true;
+ hide_key_hints = true;
+ session_log = "/dev/null";
+ # state (evil)
+ tty = 1;
+ save = false;
+ load = true;
+ save_file = toString save_file;
+ # background
+ bg = base;
+ error_bg = base;
+ blank_box = true;
+ # foreground
+ fg = text;
+ error_fg = error;
+ border_fg = bold;
+ };
+ };
+
+ # disable default login on tty 1
+ systemd.services."autovt@tty1".enable = false;
+ systemd.services."getty@tty1".enable = false;
+
+ # fix env not being set
+ systemd.services.display-manager = {
+ environment.XDG_CURRENT_DESKTOP = "X-NIXOS-SYSTEMD-AWARE";
+ };
+ };
+}
diff --git a/system/desktops/sway.nix b/system/desktops/sway.nix
new file mode 100644
index 0000000..622d54c
--- /dev/null
+++ b/system/desktops/sway.nix
@@ -0,0 +1,33 @@
+{
+ lib,
+ config,
+ pkgs,
+ ...
+}: let
+ inherit (lib) mkIf mkDefault;
+ cfg = config.desktops.sway;
+in {
+ config = mkIf cfg.enable {
+ desktops.wayland.enable = true;
+
+ # TODO: set NIXOS_OZONE_WL env var
+
+ xdg.portal = {
+ config = {
+ sway.common = ["gtk" "wlr"];
+ };
+ extraPortals = with pkgs; [
+ xdg-desktop-portal-wlr
+ ];
+ };
+
+ programs.sway = {
+ enable = true;
+ package = pkgs.swayfx;
+ wrapperFeatures = {
+ base = false;
+ gtk = false;
+ };
+ };
+ };
+}
diff --git a/system/desktops/wayland.nix b/system/desktops/wayland.nix
new file mode 100644
index 0000000..8a81fdf
--- /dev/null
+++ b/system/desktops/wayland.nix
@@ -0,0 +1,24 @@
+{
+ lib,
+ config,
+ pkgs,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.desktops.wayland;
+in {
+ config = mkIf cfg.enable {
+ xdg.portal = {
+ enable = true;
+ xdgOpenUsePortal = true;
+ extraPortals = with pkgs; [
+ xdg-desktop-portal-gtk
+ ];
+ config = {
+ default.common = ["gtk"];
+ };
+ };
+
+ programs.xwayland.enable = true;
+ };
+}
diff --git a/system/fingerprint.nix b/system/fingerprint.nix
index d95e929..cbf8f24 100644
--- a/system/fingerprint.nix
+++ b/system/fingerprint.nix
@@ -1,8 +1,8 @@
{
lib,
+ pkgs,
config,
- self,
- system,
+ inputs,
...
}: let
inherit (lib) mkIf;
@@ -11,7 +11,7 @@ in {
services.fprintd = {
enable = true;
tod.enable = true;
- tod.driver = self.packages.${system}.libfprint-2-tod1-vfs0090;
+ tod.driver = inputs.self.packages.${pkgs.system}.libfprint-2-tod1-vfs0090;
};
};
}
diff --git a/system/gaming/default.nix b/system/gaming/default.nix
new file mode 100644
index 0000000..acb0a1f
--- /dev/null
+++ b/system/gaming/default.nix
@@ -0,0 +1,5 @@
+{...}: {
+ imports = [
+ ./steam.nix
+ ];
+}
diff --git a/system/gaming/steam.nix b/system/gaming/steam.nix
new file mode 100644
index 0000000..cd243e5
--- /dev/null
+++ b/system/gaming/steam.nix
@@ -0,0 +1,34 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.gaming.steam;
+in {
+ config = mkIf cfg.enable {
+ nixpkgs.config.allowUnfreePredicate = pkg:
+ builtins.elem (lib.getName pkg) [
+ "steam"
+ "steam-original"
+ "steam-runtime"
+ ];
+
+ programs.gamescope = {
+ enable = true;
+ capSysNice = true;
+ };
+
+ programs.steam = {
+ enable = true;
+ remotePlay.openFirewall = true;
+ dedicatedServer.openFirewall = true;
+ localNetworkGameTransfers.openFirewall = true;
+ gamescopeSession.enable = true;
+ };
+
+ # controllers
+ hardware.xone.enable = true;
+ hardware.steam-hardware.enable = true;
+ };
+}
diff --git a/system/sshd.nix b/system/sshd.nix
index a1ca2f2..e7f64d8 100644
--- a/system/sshd.nix
+++ b/system/sshd.nix
@@ -1,7 +1,7 @@
{
lib,
config,
- self,
+ inputs,
...
}: let
inherit (lib) mkIf;
@@ -34,7 +34,7 @@ in {
# add authorized keys
users.users.${config.user} = {
- openssh.authorizedKeys.keyFiles = self.lib.sshKeys;
+ openssh.authorizedKeys.keyFiles = inputs.self.lib.sshKeys;
};
};
}
diff --git a/system/virt/default.nix b/system/virt/default.nix
new file mode 100644
index 0000000..18be703
--- /dev/null
+++ b/system/virt/default.nix
@@ -0,0 +1,6 @@
+{...}: {
+ imports = [
+ ./docker.nix
+ ./qemu.nix
+ ];
+}
diff --git a/system/virt/docker.nix b/system/virt/docker.nix
new file mode 100644
index 0000000..2505df4
--- /dev/null
+++ b/system/virt/docker.nix
@@ -0,0 +1,15 @@
+{
+ lib,
+ config,
+ pkgs,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.virt.docker;
+in {
+ config = mkIf cfg.enable {
+ virtualisation.docker.enable = true;
+ virtualisation.docker.storageDriver = "btrfs";
+ users.groups.docker.members = [config.user];
+ };
+}
diff --git a/system/virt/qemu.nix b/system/virt/qemu.nix
new file mode 100644
index 0000000..6c068e4
--- /dev/null
+++ b/system/virt/qemu.nix
@@ -0,0 +1,21 @@
+{
+ lib,
+ config,
+ pkgs,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.virt.qemu;
+in {
+ config = mkIf cfg.enable {
+ programs.virt-manager.enable = true;
+ users.groups.kvm.members = [config.user];
+ users.groups.libvirtd.members = [config.user];
+ virtualisation.libvirtd.enable = true;
+ virtualisation.spiceUSBRedirection.enable = true;
+
+ environment.systemPackages = with pkgs; [
+ qemu
+ ];
+ };
+}