From a3cf0b75233b659ed2076d73c69e7699d98375a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Jane=C5=BEi=C4=8D?= Date: Sat, 21 Feb 2026 12:56:24 +0100 Subject: [PATCH] feat: extract tuigreet and workstation modules --- hosts/matej-nixos/configuration.nix | 33 ++++++------------------ hosts/matej-tower/configuration.nix | 31 +++++++---------------- modules/nixos/tuigreet.nix | 39 +++++++++++++++++++++++++++++ modules/nixos/workstation.nix | 32 +++++++++++++++++++++++ 4 files changed, 87 insertions(+), 48 deletions(-) create mode 100644 modules/nixos/tuigreet.nix create mode 100644 modules/nixos/workstation.nix diff --git a/hosts/matej-nixos/configuration.nix b/hosts/matej-nixos/configuration.nix index 7ff6620..ebb72c9 100644 --- a/hosts/matej-nixos/configuration.nix +++ b/hosts/matej-nixos/configuration.nix @@ -21,6 +21,8 @@ in inputs.self.nixosModules.printing inputs.self.nixosModules.zsh inputs.self.nixosModules.gnupg + inputs.self.nixosModules.tuigreet + inputs.self.nixosModules.workstation ]; # Modules @@ -30,6 +32,11 @@ in printing.enable = true; zsh.enable = true; gnupg.enable = true; + workstation.enable = true; + tuigreet = { + enable = true; + command = "sway"; + }; sway = { enable = true; @@ -53,12 +60,6 @@ in environment.variables.TZ = "America/New_York"; i18n.defaultLocale = "en_US.UTF-8"; - # Docker - virtualisation.docker = { - enable = true; - logDriver = "json-file"; - }; - # nix-ld for pip-installed binaries # WARN:(matej) probably want to drop this in the future programs.nix-ld.enable = true; @@ -70,21 +71,6 @@ in # Services services.teamviewer.enable = true; - services.tailscale = { - enable = true; - useRoutingFeatures = "both"; - }; - - # Greetd - services.greetd = { - enable = true; - settings = { - default_session = { - command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd sway"; - user = "greeter"; - }; - }; - }; # Programs programs.thunderbird.enable = true; @@ -102,11 +88,6 @@ in hardware.keyboard.zsa.enable = true; hardware.ledger.enable = true; - # System packages - environment.systemPackages = with pkgs; [ - smartmontools - ]; - # XDG xdg.mime.defaultApplications = { "application/pdf" = "org.pwmt.zathura.desktop"; diff --git a/hosts/matej-tower/configuration.nix b/hosts/matej-tower/configuration.nix index ddfd8f8..7ec5aa3 100644 --- a/hosts/matej-tower/configuration.nix +++ b/hosts/matej-tower/configuration.nix @@ -8,9 +8,11 @@ }: { + networking.hostName = "matej-tower"; imports = [ inputs.stylix.nixosModules.stylix inputs.lanzaboote.nixosModules.lanzaboote + inputs.self.nixosModules.yubikey inputs.self.nixosModules.sway inputs.self.nixosModules.openssh @@ -18,6 +20,8 @@ inputs.self.nixosModules.printing inputs.self.nixosModules.zsh inputs.self.nixosModules.gnupg + inputs.self.nixosModules.tuigreet + inputs.self.nixosModules.workstation ]; # Modules @@ -27,6 +31,11 @@ printing.enable = true; zsh.enable = true; gnupg.enable = true; + workstation.enable = true; + tuigreet = { + enable = true; + command = "sway"; + }; sway.enable = true; # Stylix theming @@ -49,30 +58,9 @@ time.timeZone = "Europe/Ljubljana"; environment.variables.TZ = "Europe/Ljubljana"; - # Docker - virtualisation.docker = { - enable = true; - logDriver = "json-file"; - }; - # Services - services.tailscale = { - enable = true; - useRoutingFeatures = "both"; - }; services.udisks2.enable = true; - # Greetd - services.greetd = { - enable = true; - settings = { - default_session = { - command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd sway"; - user = "greeter"; - }; - }; - }; - # Programs programs._1password.enable = true; programs._1password-gui.enable = true; @@ -87,7 +75,6 @@ # System packages environment.systemPackages = with pkgs; [ - smartmontools easyeffects ]; diff --git a/modules/nixos/tuigreet.nix b/modules/nixos/tuigreet.nix new file mode 100644 index 0000000..a022d5c --- /dev/null +++ b/modules/nixos/tuigreet.nix @@ -0,0 +1,39 @@ +{ + lib, + config, + pkgs, + ... +}: +let + cfg = config.tuigreet; +in +{ + options = { + tuigreet = { + enable = lib.mkEnableOption "greetd with tuigreet"; + + command = lib.mkOption { + type = lib.types.str; + description = "Session command to launch"; + }; + }; + }; + + config = lib.mkIf cfg.enable { + services.greetd = { + enable = true; + useTextGreeter = true; + settings = { + default_session = { + command = builtins.toString ( + pkgs.writeShellScript "tuigreet-session" '' + ${pkgs.util-linux}/bin/setterm --blank 1 --powersave powerdown --powerdown 1 + exec ${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd ${cfg.command} + '' + ); + user = "greeter"; + }; + }; + }; + }; +} diff --git a/modules/nixos/workstation.nix b/modules/nixos/workstation.nix new file mode 100644 index 0000000..6ac1315 --- /dev/null +++ b/modules/nixos/workstation.nix @@ -0,0 +1,32 @@ +{ + lib, + config, + pkgs, + ... +}: +let + cfg = config.workstation; +in +{ + options = { + workstation = { + enable = lib.mkEnableOption "workstation utilities"; + }; + }; + + config = lib.mkIf cfg.enable { + virtualisation.docker = { + enable = true; + logDriver = "json-file"; + }; + + services.tailscale = { + enable = true; + useRoutingFeatures = "both"; + }; + + environment.systemPackages = with pkgs; [ + smartmontools + ]; + }; +}