This commit is contained in:
2024-03-21 16:29:09 -05:00
parent ceada8a46b
commit 51e7f52bb0
10 changed files with 584 additions and 76 deletions

View File

@@ -0,0 +1,52 @@
{ config, pkgs, lib, ... }:
let
cfg = config.services.xserver.displayManager.cosmic-greeter;
in
{
meta.maintainers = with lib.maintainers; [ nyanbinary ];
options.services.xserver.displayManager.cosmic-greeter = {
enable = lib.mkEnableOption (lib.mdDoc "COSMIC greeter");
};
config = lib.mkIf cfg.enable {
services.greetd = {
enable = true;
settings = {
default_session = {
user = "cosmic-greeter";
command = "${pkgs.coreutils}/bin/env XCURSOR_THEME=Pop systemd-cat -t cosmic-greeter ${pkgs.cosmic-comp}/bin/cosmic-comp ${pkgs.cosmic-greeter}/bin/cosmic-greeter";
};
};
};
systemd.services.cosmic-greeter-daemon = {
wantedBy = [ "multi-user.target" ];
before = [ "greetd.service" ];
serviceConfig = {
ExecStart = "${pkgs.cosmic-greeter}/bin/cosmic-greeter-daemon";
Restart = "on-failure";
};
};
systemd.tmpfiles.rules = [
"d '/var/lib/cosmic-greeter' - cosmic-greeter cosmic-greeter - -"
];
users.users.cosmic-greeter = {
isSystemUser = true;
home = "/var/lib/cosmic-greeter";
group = "cosmic-greeter";
};
users.groups.cosmic-greeter = { };
hardware.opengl.enable = true;
services.xserver.libinput.enable = true;
security.pam.services.cosmic-greeter = {};
services.dbus.packages = with pkgs; [ cosmic-greeter ];
};
}

84
modules/cosmic/cosmic.nix Normal file
View File

@@ -0,0 +1,84 @@
{ config, pkgs, lib, ... }:
let
cfg = config.services.xserver.desktopManager.cosmic;
in
{
meta.maintainers = with lib.maintainers; [ nyanbinary ];
options.services.xserver.desktopManager.cosmic = {
enable = lib.mkEnableOption (lib.mdDoc "COSMIC desktop environment");
};
config = lib.mkIf cfg.enable {
# seed configuration in nixos-generate-config
system.nixos-generate-config.desktopConfiguration = [''
# Enable the COSMIC Desktop Environment.
services.xserver.displayManager.cosmic-greeter.enable = true;
services.xserver.desktopManager.cosmic.enable = true;
''];
# environment packages
environment.pathsToLink = [ "/share/cosmic" ];
environment.systemPackages = with pkgs; [
gnome.adwaita-icon-theme
cosmic-applibrary
cosmic-applets
cosmic-bg
cosmic-comp
cosmic-edit
cosmic-files
cosmic-greeter
cosmic-icons
cosmic-launcher
cosmic-notifications
cosmic-osd
cosmic-panel
cosmic-randr
cosmic-screenshot
cosmic-session
cosmic-settings
cosmic-settings-daemon
cosmic-term
cosmic-workspaces-epoch
hicolor-icon-theme
pop-icon-theme
pop-launcher
];
# xdg portal packages and config
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-cosmic
xdg-desktop-portal-gtk
];
configPackages = with pkgs; [
xdg-desktop-portal-cosmic
];
};
# fonts
fonts.packages = with pkgs; [
fira-mono
];
# required features
hardware.opengl.enable = true;
services.xserver.libinput.enable = true;
# optional features
hardware.pulseaudio.enable = lib.mkDefault true;
# required dbus services
services.upower.enable = true;
security.polkit.enable = true;
# session packages
services.xserver.displayManager.sessionPackages = with pkgs; [ cosmic-session ];
systemd.packages = with pkgs; [ cosmic-session ];
# required for screen locker
security.pam.services.cosmic-greeter = {};
};
}