From 7f6f6281cc39e8ca92f41b32ca2285cb502b7d99 Mon Sep 17 00:00:00 2001 From: clerie Date: Tue, 29 Jul 2025 23:03:58 +0200 Subject: [PATCH] profiles/desktop: Migrate from configuration --- configuration/desktop/audio.nix | 26 ----------- configuration/desktop/default.nix | 19 -------- configuration/desktop/firmware.nix | 7 --- configuration/desktop/fonts.nix | 13 ------ configuration/desktop/gnome.nix | 61 ------------------------ configuration/desktop/inputs.nix | 43 ----------------- configuration/desktop/networking.nix | 14 ------ configuration/desktop/polkit.nix | 7 --- configuration/desktop/power.nix | 42 ----------------- configuration/desktop/printing.nix | 7 --- configuration/desktop/ssh.nix | 33 ------------- configuration/desktop/xserver.nix | 11 ----- hosts/krypton/configuration.nix | 4 +- hosts/zinc/configuration.nix | 4 +- profiles/default.nix | 1 + profiles/desktop/audio.nix | 31 +++++++++++++ profiles/desktop/default.nix | 30 ++++++++++++ profiles/desktop/firmware.nix | 13 ++++++ profiles/desktop/fonts.nix | 20 ++++++++ profiles/desktop/gnome.nix | 69 ++++++++++++++++++++++++++++ profiles/desktop/inputs.nix | 51 ++++++++++++++++++++ profiles/desktop/networking.nix | 20 ++++++++ profiles/desktop/polkit.nix | 13 ++++++ profiles/desktop/power.nix | 50 ++++++++++++++++++++ profiles/desktop/printing.nix | 14 ++++++ profiles/desktop/ssh.nix | 39 ++++++++++++++++ profiles/desktop/xserver.nix | 18 ++++++++ 27 files changed, 373 insertions(+), 287 deletions(-) delete mode 100644 configuration/desktop/audio.nix delete mode 100644 configuration/desktop/default.nix delete mode 100644 configuration/desktop/firmware.nix delete mode 100644 configuration/desktop/fonts.nix delete mode 100644 configuration/desktop/gnome.nix delete mode 100644 configuration/desktop/inputs.nix delete mode 100644 configuration/desktop/networking.nix delete mode 100644 configuration/desktop/polkit.nix delete mode 100644 configuration/desktop/power.nix delete mode 100644 configuration/desktop/printing.nix delete mode 100644 configuration/desktop/ssh.nix delete mode 100644 configuration/desktop/xserver.nix create mode 100644 profiles/desktop/audio.nix create mode 100644 profiles/desktop/default.nix create mode 100644 profiles/desktop/firmware.nix create mode 100644 profiles/desktop/fonts.nix create mode 100644 profiles/desktop/gnome.nix create mode 100644 profiles/desktop/inputs.nix create mode 100644 profiles/desktop/networking.nix create mode 100644 profiles/desktop/polkit.nix create mode 100644 profiles/desktop/power.nix create mode 100644 profiles/desktop/printing.nix create mode 100644 profiles/desktop/ssh.nix create mode 100644 profiles/desktop/xserver.nix diff --git a/configuration/desktop/audio.nix b/configuration/desktop/audio.nix deleted file mode 100644 index f344089..0000000 --- a/configuration/desktop/audio.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ pkgs, ... }: - -{ - - services.pulseaudio.enable = false; - - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa = { - enable = true; - support32Bit = true; - }; - pulse = { - enable = true; - }; - configPackages = [ - pkgs.pipewire-all-bluetooth - ]; - }; - - environment.systemPackages = with pkgs; [ - helvum # pipewire routing gui - ]; - -} diff --git a/configuration/desktop/default.nix b/configuration/desktop/default.nix deleted file mode 100644 index 470910c..0000000 --- a/configuration/desktop/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ ... }: - -{ - imports = [ - ./audio.nix - ./firmware.nix - ./fonts.nix - ./gnome.nix - ./inputs.nix - ./networking.nix - ./polkit.nix - ./power.nix - ./printing.nix - ./ssh.nix - ./xserver.nix - ]; - - security.sudo.wheelNeedsPassword = true; -} diff --git a/configuration/desktop/firmware.nix b/configuration/desktop/firmware.nix deleted file mode 100644 index 72331e5..0000000 --- a/configuration/desktop/firmware.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ ... }: - -{ - - services.fwupd.enable = true; - -} diff --git a/configuration/desktop/fonts.nix b/configuration/desktop/fonts.nix deleted file mode 100644 index 0003233..0000000 --- a/configuration/desktop/fonts.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ pkgs, ... }: - -{ - - fonts.enableDefaultPackages = true; - fonts.packages = with pkgs; [ - roboto - roboto-mono - noto-fonts - noto-fonts-emoji - comfortaa - ] ++ (if pkgs ? "noto-fonts-cjk-sans" then [ pkgs.noto-fonts-cjk-sans ] else [ pkgs.noto-fonts-cjk ]); -} diff --git a/configuration/desktop/gnome.nix b/configuration/desktop/gnome.nix deleted file mode 100644 index 38924c3..0000000 --- a/configuration/desktop/gnome.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ pkgs, ... }: - -{ - services.gnome = { - localsearch.enable = false; - tinysparql.enable = false; - }; - - environment.gnome.excludePackages = with pkgs; [ - baobab - epiphany - gnome-calendar - gnome-clocks - gnome-console - gnome-contacts - gnome-logs - gnome-maps - gnome-music - gnome-tour - gnome-photos - gnome-weather - gnome-connections - simple-scan - yelp - geary - ]; - - environment.systemPackages = with pkgs; [ - evolution - gnome-terminal - gnome-tweaks - ]; - - services.gnome.evolution-data-server.enable = true; - - programs.dconf.profiles = { - user.databases = [ - { - settings = { - "org/gnome/desktop/calendar" = { - show-weekdate = true; - }; - "org/gnome/desktop/interface" = { - enable-hot-corners = false; - show-battery-percentage = true; - }; - "org/gnome/desktop/notifications" = { - show-in-lock-screen = false; - }; - "org/gnome/desktop/sound" = { - event-sounds = false; - }; - "org/gnome/gnome-system-monitor" = { - network-in-bits = true; - network-total-in-bits = true; - }; - }; - } - ]; - }; -} diff --git a/configuration/desktop/inputs.nix b/configuration/desktop/inputs.nix deleted file mode 100644 index cf1b137..0000000 --- a/configuration/desktop/inputs.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ ... }: - -{ - programs.dconf.profiles = { - user.databases = [ - { - settings = { - "org/gnome/desktop/peripherals/touchpad" = { - disable-while-typing = false; - edge-scrolling-enabled = false; - natural-scroll = true; - tap-to-click = true; - two-finger-scrolling-enabled = true; - }; - "org/gnome/settings-daemon/plugins/media-keys" = { - custom-keybindings = [ - "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal/" - ]; - mic-mute = [ "Print" ]; - }; - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal" = { - name = "Terminal"; - binding = "t"; - command = "gnome-terminal"; - }; - }; - } - ]; - gdm.databases = [ - { - settings = { - "org/gnome/desktop/peripherals/touchpad" = { - disable-while-typing = false; - edge-scrolling-enabled = false; - natural-scroll = true; - tap-to-click = true; - two-finger-scrolling-enabled = true; - }; - }; - } - ]; - }; -} diff --git a/configuration/desktop/networking.nix b/configuration/desktop/networking.nix deleted file mode 100644 index 5d3704e..0000000 --- a/configuration/desktop/networking.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ ... }: - -{ - - networking.networkmanager.settings = { - connectivity = { - uri = "http://ping.clerie.de/nm-check.txt"; - }; - global-dns = { - searches = "net.clerie.de"; - }; - }; - -} diff --git a/configuration/desktop/polkit.nix b/configuration/desktop/polkit.nix deleted file mode 100644 index c1fabf1..0000000 --- a/configuration/desktop/polkit.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ ... }: - -{ - - security.polkit.enable = true; - -} diff --git a/configuration/desktop/power.nix b/configuration/desktop/power.nix deleted file mode 100644 index 6f8bd5a..0000000 --- a/configuration/desktop/power.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ lib, config, ... }: - -{ - boot.resumeDevice = lib.optionalString ((lib.length config.swapDevices) > 0) (lib.head config.swapDevices).device; - services.logind = { - lidSwitch = "suspend-then-hibernate"; - }; - systemd.sleep.extraConfig = '' - HibernateDelaySec=30m - ''; - - services.upower = { - percentageLow = 20; - percentageCritical = 10; - percentageAction = 8; - }; - - programs.dconf.profiles = { - user.databases = [ - { - settings = { - "org/gnome/settings-daemon/plugins/power" = { - power-button-action = "hibernate"; - power-saver-profile-on-low-battery = false; - sleep-inactive-ac-type = "nothing"; - }; - }; - } - ]; - gdm.databases = [ - { - settings = { - "org/gnome/settings-daemon/plugins/power" = { - power-button-action = "hibernate"; - power-saver-profile-on-low-battery = false; - sleep-inactive-ac-type = "nothing"; - }; - }; - } - ]; - }; -} diff --git a/configuration/desktop/printing.nix b/configuration/desktop/printing.nix deleted file mode 100644 index aebff31..0000000 --- a/configuration/desktop/printing.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ ... }: - -{ - services.printing.enable = true; - services.avahi.enable = true; - services.avahi.nssmdns4 = true; -} diff --git a/configuration/desktop/ssh.nix b/configuration/desktop/ssh.nix deleted file mode 100644 index ca528bc..0000000 --- a/configuration/desktop/ssh.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ pkgs, ... }: - -{ - - profiles.clerie.gpg-ssh.enable = true; - - programs.gnupg.agent = { - pinentryPackage = pkgs.pinentry-gtk2; - }; - - # Do not disable ssh-agent of gnome-keyring, because - # gnupg ssh-agent can't handle normal SSH keys properly - /* - # Disable ssh-agent of gnome-keyring - nixpkgs.overlays = [ - (final: prev: { - gnome = prev.gnome // { - gnome-keyring = prev.runCommand "gnome-keyring-ssh-disabled-autostart" {} '' - mkdir -p $out - - # Symlink all gnome-keyring binaries - ${final.xorg.lndir}/bin/lndir -silent ${prev.gnome.gnome-keyring} $out - - # Disable autostart for ssh - rm $out/etc/xdg/autostart/gnome-keyring-ssh.desktop - cat ${prev.gnome.gnome-keyring}/etc/xdg/autostart/gnome-keyring-ssh.desktop > $out/etc/xdg/autostart/gnome-keyring-ssh.desktop - echo "Hidden=true" >> $out/etc/xdg/autostart/gnome-keyring-ssh.desktop - ''; - }; - }) - ]; - */ -} diff --git a/configuration/desktop/xserver.nix b/configuration/desktop/xserver.nix deleted file mode 100644 index 61afcb9..0000000 --- a/configuration/desktop/xserver.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ pkgs, ... }: - -{ - services.xserver.enable = true; - services.displayManager.gdm.enable = true; - services.desktopManager.gnome.enable = true; - - services.xserver.excludePackages = with pkgs; [ - xterm - ]; -} diff --git a/hosts/krypton/configuration.nix b/hosts/krypton/configuration.nix index 64a0390..2881e1b 100644 --- a/hosts/krypton/configuration.nix +++ b/hosts/krypton/configuration.nix @@ -5,8 +5,6 @@ [ ./hardware-configuration.nix - ../../configuration/desktop - ./android.nix ./backup.nix ./etesync-dav.nix @@ -15,6 +13,8 @@ ./programs.nix ]; + profiles.clerie.desktop.enable = true; + # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; diff --git a/hosts/zinc/configuration.nix b/hosts/zinc/configuration.nix index 4567591..7c070d1 100644 --- a/hosts/zinc/configuration.nix +++ b/hosts/zinc/configuration.nix @@ -5,12 +5,12 @@ [ ./hardware-configuration.nix - ../../configuration/desktop - ./initrd.nix ./programs.nix ]; + profiles.clerie.desktop.enable = true; + # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; diff --git a/profiles/default.nix b/profiles/default.nix index b385ca1..3e12719 100644 --- a/profiles/default.nix +++ b/profiles/default.nix @@ -9,6 +9,7 @@ ./common-nix ./common-webserver ./cybercluster-vm + ./desktop ./dn42-router ./fem-net ./firefox diff --git a/profiles/desktop/audio.nix b/profiles/desktop/audio.nix new file mode 100644 index 0000000..f7e6c3b --- /dev/null +++ b/profiles/desktop/audio.nix @@ -0,0 +1,31 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + + config = mkIf config.profiles.clerie.desktop.enable { + + services.pulseaudio.enable = false; + + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa = { + enable = true; + support32Bit = true; + }; + pulse = { + enable = true; + }; + configPackages = [ + pkgs.pipewire-all-bluetooth + ]; + }; + + environment.systemPackages = with pkgs; [ + helvum # pipewire routing gui + ]; + + }; +} diff --git a/profiles/desktop/default.nix b/profiles/desktop/default.nix new file mode 100644 index 0000000..d5a99c6 --- /dev/null +++ b/profiles/desktop/default.nix @@ -0,0 +1,30 @@ +{ config, lib, ... }: + +with lib; + +{ + + options.profiles.clerie.desktop = { + enable = mkEnableOption "clerie Desktop Config"; + }; + + imports = [ + ./audio.nix + ./firmware.nix + ./fonts.nix + ./gnome.nix + ./inputs.nix + ./networking.nix + ./polkit.nix + ./power.nix + ./printing.nix + ./ssh.nix + ./xserver.nix + ]; + + config = mkIf config.profiles.clerie.desktop.enable { + + security.sudo.wheelNeedsPassword = true; + + }; +} diff --git a/profiles/desktop/firmware.nix b/profiles/desktop/firmware.nix new file mode 100644 index 0000000..1278ec2 --- /dev/null +++ b/profiles/desktop/firmware.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: + +with lib; + +{ + + config = mkIf config.profiles.clerie.desktop.enable { + + services.fwupd.enable = true; + + }; + +} diff --git a/profiles/desktop/fonts.nix b/profiles/desktop/fonts.nix new file mode 100644 index 0000000..0563dcc --- /dev/null +++ b/profiles/desktop/fonts.nix @@ -0,0 +1,20 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + + config = mkIf config.profiles.clerie.desktop.enable { + + fonts.enableDefaultPackages = true; + fonts.packages = with pkgs; [ + roboto + roboto-mono + noto-fonts + noto-fonts-emoji + comfortaa + ] ++ (if pkgs ? "noto-fonts-cjk-sans" then [ pkgs.noto-fonts-cjk-sans ] else [ pkgs.noto-fonts-cjk ]); + + }; + +} diff --git a/profiles/desktop/gnome.nix b/profiles/desktop/gnome.nix new file mode 100644 index 0000000..bc7b90c --- /dev/null +++ b/profiles/desktop/gnome.nix @@ -0,0 +1,69 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + + config = mkIf config.profiles.clerie.desktop.enable { + + services.gnome = { + localsearch.enable = false; + tinysparql.enable = false; + }; + + environment.gnome.excludePackages = with pkgs; [ + baobab + epiphany + gnome-calendar + gnome-clocks + gnome-console + gnome-contacts + gnome-logs + gnome-maps + gnome-music + gnome-tour + gnome-photos + gnome-weather + gnome-connections + simple-scan + yelp + geary + ]; + + environment.systemPackages = with pkgs; [ + evolution + gnome-terminal + gnome-tweaks + ]; + + services.gnome.evolution-data-server.enable = true; + + programs.dconf.profiles = { + user.databases = [ + { + settings = { + "org/gnome/desktop/calendar" = { + show-weekdate = true; + }; + "org/gnome/desktop/interface" = { + enable-hot-corners = false; + show-battery-percentage = true; + }; + "org/gnome/desktop/notifications" = { + show-in-lock-screen = false; + }; + "org/gnome/desktop/sound" = { + event-sounds = false; + }; + "org/gnome/gnome-system-monitor" = { + network-in-bits = true; + network-total-in-bits = true; + }; + }; + } + ]; + }; + + }; + +} diff --git a/profiles/desktop/inputs.nix b/profiles/desktop/inputs.nix new file mode 100644 index 0000000..f75b810 --- /dev/null +++ b/profiles/desktop/inputs.nix @@ -0,0 +1,51 @@ +{ config, lib, ... }: + +with lib; + +{ + + config = mkIf config.profiles.clerie.desktop.enable { + + programs.dconf.profiles = { + user.databases = [ + { + settings = { + "org/gnome/desktop/peripherals/touchpad" = { + disable-while-typing = false; + edge-scrolling-enabled = false; + natural-scroll = true; + tap-to-click = true; + two-finger-scrolling-enabled = true; + }; + "org/gnome/settings-daemon/plugins/media-keys" = { + custom-keybindings = [ + "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal/" + ]; + mic-mute = [ "Print" ]; + }; + "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal" = { + name = "Terminal"; + binding = "t"; + command = "gnome-terminal"; + }; + }; + } + ]; + gdm.databases = [ + { + settings = { + "org/gnome/desktop/peripherals/touchpad" = { + disable-while-typing = false; + edge-scrolling-enabled = false; + natural-scroll = true; + tap-to-click = true; + two-finger-scrolling-enabled = true; + }; + }; + } + ]; + }; + + }; + +} diff --git a/profiles/desktop/networking.nix b/profiles/desktop/networking.nix new file mode 100644 index 0000000..2af95f5 --- /dev/null +++ b/profiles/desktop/networking.nix @@ -0,0 +1,20 @@ +{ config, lib, ... }: + +with lib; + +{ + + config = mkIf config.profiles.clerie.desktop.enable { + + networking.networkmanager.settings = { + connectivity = { + uri = "http://ping.clerie.de/nm-check.txt"; + }; + global-dns = { + searches = "net.clerie.de"; + }; + }; + + }; + +} diff --git a/profiles/desktop/polkit.nix b/profiles/desktop/polkit.nix new file mode 100644 index 0000000..14dc145 --- /dev/null +++ b/profiles/desktop/polkit.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: + +with lib; + +{ + + config = mkIf config.profiles.clerie.desktop.enable { + + security.polkit.enable = true; + + }; + +} diff --git a/profiles/desktop/power.nix b/profiles/desktop/power.nix new file mode 100644 index 0000000..e7fca11 --- /dev/null +++ b/profiles/desktop/power.nix @@ -0,0 +1,50 @@ +{ config, lib, ... }: + +with lib; + +{ + + config = mkIf config.profiles.clerie.desktop.enable { + + boot.resumeDevice = lib.optionalString ((lib.length config.swapDevices) > 0) (lib.head config.swapDevices).device; + services.logind = { + lidSwitch = "suspend-then-hibernate"; + }; + systemd.sleep.extraConfig = '' + HibernateDelaySec=30m + ''; + + services.upower = { + percentageLow = 20; + percentageCritical = 10; + percentageAction = 8; + }; + + programs.dconf.profiles = { + user.databases = [ + { + settings = { + "org/gnome/settings-daemon/plugins/power" = { + power-button-action = "hibernate"; + power-saver-profile-on-low-battery = false; + sleep-inactive-ac-type = "nothing"; + }; + }; + } + ]; + gdm.databases = [ + { + settings = { + "org/gnome/settings-daemon/plugins/power" = { + power-button-action = "hibernate"; + power-saver-profile-on-low-battery = false; + sleep-inactive-ac-type = "nothing"; + }; + }; + } + ]; + }; + + }; + +} diff --git a/profiles/desktop/printing.nix b/profiles/desktop/printing.nix new file mode 100644 index 0000000..66b9a03 --- /dev/null +++ b/profiles/desktop/printing.nix @@ -0,0 +1,14 @@ +{ config, lib, ... }: + +with lib; + +{ + + config = mkIf config.profiles.clerie.desktop.enable { + + services.printing.enable = true; + services.avahi.enable = true; + services.avahi.nssmdns4 = true; + + }; +} diff --git a/profiles/desktop/ssh.nix b/profiles/desktop/ssh.nix new file mode 100644 index 0000000..84e408e --- /dev/null +++ b/profiles/desktop/ssh.nix @@ -0,0 +1,39 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + + config = mkIf config.profiles.clerie.desktop.enable { + + profiles.clerie.gpg-ssh.enable = true; + + programs.gnupg.agent = { + pinentryPackage = pkgs.pinentry-gtk2; + }; + + # Do not disable ssh-agent of gnome-keyring, because + # gnupg ssh-agent can't handle normal SSH keys properly + /* + # Disable ssh-agent of gnome-keyring + nixpkgs.overlays = [ + (final: prev: { + gnome = prev.gnome // { + gnome-keyring = prev.runCommand "gnome-keyring-ssh-disabled-autostart" {} '' + mkdir -p $out + + # Symlink all gnome-keyring binaries + ${final.xorg.lndir}/bin/lndir -silent ${prev.gnome.gnome-keyring} $out + + # Disable autostart for ssh + rm $out/etc/xdg/autostart/gnome-keyring-ssh.desktop + cat ${prev.gnome.gnome-keyring}/etc/xdg/autostart/gnome-keyring-ssh.desktop > $out/etc/xdg/autostart/gnome-keyring-ssh.desktop + echo "Hidden=true" >> $out/etc/xdg/autostart/gnome-keyring-ssh.desktop + ''; + }; + }) + ]; + */ + + }; +} diff --git a/profiles/desktop/xserver.nix b/profiles/desktop/xserver.nix new file mode 100644 index 0000000..687be96 --- /dev/null +++ b/profiles/desktop/xserver.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + + config = mkIf config.profiles.clerie.desktop.enable { + + services.xserver.enable = true; + services.displayManager.gdm.enable = true; + services.desktopManager.gnome.enable = true; + + services.xserver.excludePackages = with pkgs; [ + xterm + ]; + + }; +}