307 lines
10 KiB
Nix
307 lines
10 KiB
Nix
{
|
|
inputs,
|
|
...
|
|
}:
|
|
{
|
|
flake.modules = {
|
|
nixos.desktop-desktop =
|
|
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
{
|
|
imports = [
|
|
inputs.niri-flake.nixosModules.niri
|
|
inputs.nix-flatpak.nixosModules.nix-flatpak
|
|
];
|
|
|
|
environment = {
|
|
sessionVariables = {
|
|
KDEHOME = "$XDG_CONFIG_HOME/kde4"; # Stops kde from placing a .kde4 folder in the home dir
|
|
NIXOS_OZONE_WL = "1"; # Forces chromium and most electron apps to run in wayland
|
|
};
|
|
systemPackages = with pkgs; [
|
|
### Web ###
|
|
bitwarden-desktop
|
|
fragments
|
|
nextcloud-client
|
|
tor-browser
|
|
vesktop
|
|
inputs.zen-browser.packages."${system}".default
|
|
### Office & Productivity ###
|
|
aspell
|
|
aspellDicts.de
|
|
aspellDicts.en
|
|
aspellDicts.en-computers
|
|
aspellDicts.pt_BR
|
|
papers
|
|
presenterm
|
|
rnote
|
|
### Graphics & Design ###
|
|
gimp
|
|
inkscape
|
|
plasticity
|
|
### System Utilities ###
|
|
adwaita-icon-theme
|
|
ghostty
|
|
gnome-disk-utility
|
|
junction
|
|
libfido2
|
|
mission-center
|
|
nautilus
|
|
p7zip
|
|
rclone
|
|
toggleaudiosink
|
|
unrar
|
|
### Media ###
|
|
decibels
|
|
loupe
|
|
obs-studio
|
|
showtime
|
|
];
|
|
};
|
|
|
|
services = {
|
|
pipewire = {
|
|
enable = true;
|
|
alsa.enable = true;
|
|
alsa.support32Bit = true;
|
|
pulse.enable = true;
|
|
jack.enable = true;
|
|
wireplumber.enable = true;
|
|
};
|
|
greetd = {
|
|
enable = true;
|
|
settings = {
|
|
default_session = {
|
|
command = "${lib.getExe pkgs.tuigreet} --user-menu --time --remember --asterisks --cmd ${config.programs.niri.package}/bin/niri-session";
|
|
user = "greeter";
|
|
};
|
|
}
|
|
// lib.optionalAttrs (config.networking.hostName == "io") {
|
|
initial_session = {
|
|
command = "${config.programs.niri.package}/bin/niri-session";
|
|
user = "user";
|
|
};
|
|
};
|
|
};
|
|
flatpak = {
|
|
enable = true;
|
|
packages = [
|
|
### Office & Productivity ###
|
|
"com.collabora.Office"
|
|
### Graphics & Design ###
|
|
"com.boxy_svg.BoxySVG"
|
|
rec {
|
|
appId = "io.github.softfever.OrcaSlicer";
|
|
sha256 = "0hdx5sg6fknj1pfnfxvlfwb5h6y1vjr6fyajbsnjph5gkp97c6p1";
|
|
bundle = "${pkgs.fetchurl {
|
|
url = "https://github.com/SoftFever/OrcaSlicer/releases/download/v2.3.0/OrcaSlicer-Linux-flatpak_V2.3.0_x86_64.flatpak";
|
|
inherit sha256;
|
|
}}";
|
|
}
|
|
### System Utilities ###
|
|
"com.github.tchx84.Flatseal"
|
|
"com.rustdesk.RustDesk"
|
|
];
|
|
uninstallUnmanaged = true;
|
|
update.auto.enable = true;
|
|
};
|
|
gvfs.enable = true;
|
|
};
|
|
|
|
security.rtkit.enable = true; # Needed for pipewire to acquire realtime priority
|
|
|
|
users = {
|
|
users.greeter = {
|
|
isSystemUser = true;
|
|
group = "greeter";
|
|
};
|
|
groups.greeter = { };
|
|
};
|
|
|
|
programs = {
|
|
niri = {
|
|
enable = true;
|
|
package = inputs.niri.packages.${pkgs.system}.niri;
|
|
};
|
|
kdeconnect = {
|
|
enable = true;
|
|
package = pkgs.valent;
|
|
};
|
|
dconf.enable = true;
|
|
appimage = {
|
|
enable = true;
|
|
binfmt = true;
|
|
};
|
|
};
|
|
|
|
niri-flake.cache.enable = false;
|
|
|
|
fonts = {
|
|
fontDir.enable = true;
|
|
packages = with pkgs; [
|
|
corefonts
|
|
inter
|
|
nerd-fonts.fira-code
|
|
noto-fonts-cjk-sans
|
|
noto-fonts-color-emoji
|
|
roboto
|
|
];
|
|
};
|
|
|
|
xdg.portal = {
|
|
extraPortals = with pkgs; [
|
|
xdg-desktop-portal-gnome
|
|
xdg-desktop-portal-gtk
|
|
];
|
|
config = {
|
|
common.default = "*";
|
|
niri.default = [
|
|
"gtk"
|
|
"gnome"
|
|
];
|
|
};
|
|
};
|
|
};
|
|
|
|
homeManager.desktop-desktop =
|
|
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
inputs,
|
|
...
|
|
}:
|
|
{
|
|
imports = [ inputs.vicinae.homeManagerModules.default ];
|
|
|
|
fonts.fontconfig.enable = true;
|
|
|
|
home.packages = with pkgs; [ xwayland-satellite ];
|
|
|
|
services.vicinae = {
|
|
enable = true;
|
|
systemd = {
|
|
enable = true;
|
|
autoStart = true;
|
|
};
|
|
};
|
|
|
|
programs = {
|
|
ghostty = {
|
|
enable = true;
|
|
settings = {
|
|
cursor-style = "block";
|
|
shell-integration-features = "no-cursor";
|
|
cursor-style-blink = false;
|
|
custom-shader = "${builtins.fetchurl {
|
|
url = "https://raw.githubusercontent.com/hackr-sh/ghostty-shaders/cb6eb4b0d1a3101c869c62e458b25a826f9dcde3/cursor_blaze.glsl";
|
|
sha256 = "sha256:0g2lgqjdrn3c51glry7x2z30y7ml0y61arl5ykmf4yj0p85s5f41";
|
|
}}";
|
|
bell-features = "";
|
|
gtk-titlebar-style = "tabs";
|
|
keybind = [ "shift+enter=text:\\x1b\\r" ];
|
|
};
|
|
};
|
|
|
|
password-store = {
|
|
enable = true;
|
|
package = pkgs.pass-wayland;
|
|
};
|
|
};
|
|
|
|
xdg = {
|
|
enable = true;
|
|
userDirs.enable = true;
|
|
mimeApps = {
|
|
enable = true;
|
|
defaultApplications = {
|
|
"text/html" = [
|
|
"re.sonny.Junction.desktop"
|
|
"zen-browser.desktop"
|
|
"torbrowser.desktop"
|
|
];
|
|
"x-scheme-handler/http" = [
|
|
"re.sonny.Junction.desktop"
|
|
"zen-browser.desktop"
|
|
"torbrowser.desktop"
|
|
];
|
|
"x-scheme-handler/https" = [
|
|
"re.sonny.Junction.desktop"
|
|
"zen-browser.desktop"
|
|
"torbrowser.desktop"
|
|
];
|
|
"x-scheme-handler/about" = [
|
|
"re.sonny.Junction.desktop"
|
|
"zen-browser.desktop"
|
|
"torbrowser.desktop"
|
|
];
|
|
"x-scheme-handler/unknown" = [
|
|
"re.sonny.Junction.desktop"
|
|
"zen-browser.desktop"
|
|
"torbrowser.desktop"
|
|
];
|
|
"image/jpeg" = "org.gnome.Loupe.desktop";
|
|
"image/png" = "org.gnome.Loupe.desktop";
|
|
"image/gif" = "org.gnome.Loupe.desktop";
|
|
"image/webp" = "org.gnome.Loupe.desktop";
|
|
"image/bmp" = "org.gnome.Loupe.desktop";
|
|
"image/svg+xml" = "org.gnome.Loupe.desktop";
|
|
"image/tiff" = "org.gnome.Loupe.desktop";
|
|
"video/mp4" = "io.bassi.Showtime.desktop";
|
|
"video/x-matroska" = "io.bassi.Showtime.desktop";
|
|
"video/webm" = "io.bassi.Showtime.desktop";
|
|
"video/mpeg" = "io.bassi.Showtime.desktop";
|
|
"video/x-msvideo" = "io.bassi.Showtime.desktop";
|
|
"video/quicktime" = "io.bassi.Showtime.desktop";
|
|
"video/x-flv" = "io.bassi.Showtime.desktop";
|
|
"audio/mpeg" = "io.bassi.Showtime.desktop";
|
|
"audio/flac" = "io.bassi.Showtime.desktop";
|
|
"audio/ogg" = "io.bassi.Showtime.desktop";
|
|
"audio/wav" = "io.bassi.Showtime.desktop";
|
|
"audio/mp4" = "io.bassi.Showtime.desktop";
|
|
"audio/x-opus+ogg" = "io.bassi.Showtime.desktop";
|
|
"application/pdf" = [
|
|
"org.gnome.Papers.desktop"
|
|
"zen-browser.desktop"
|
|
];
|
|
"text/plain" = "Helix.desktop";
|
|
"text/markdown" = "Helix.desktop";
|
|
"text/x-log" = "Helix.desktop";
|
|
"application/x-shellscript" = "Helix.desktop";
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" =
|
|
"com.collabora.Office.desktop"; # DOCX
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" =
|
|
"com.collabora.Office.desktop"; # XLSX
|
|
"application/vnd.openxmlformats-officedocument.presentationml.presentation" =
|
|
"com.collabora.Office.desktop"; # PPTX
|
|
"application/vnd.oasis.opendocument.text" = "com.collabora.Office.desktop"; # ODT
|
|
"application/vnd.oasis.opendocument.spreadsheet" = "com.collabora.Office.desktop"; # ODS
|
|
"application/vnd.oasis.opendocument.presentation" = "com.collabora.Office.desktop"; # ODP
|
|
"application/msword" = "com.collabora.Office.desktop"; # DOC
|
|
"application/vnd.ms-excel" = "com.collabora.Office.desktop"; # XLS
|
|
"application/vnd.ms-powerpoint" = "com.collabora.Office.desktop"; # PPT
|
|
"application/zip" = "org.gnome.FileRoller.desktop";
|
|
"application/x-tar" = "org.gnome.FileRoller.desktop";
|
|
"application/x-compressed-tar" = "org.gnome.FileRoller.desktop";
|
|
"application/x-bzip-compressed-tar" = "org.gnome.FileRoller.desktop";
|
|
"application/x-xz-compressed-tar" = "org.gnome.FileRoller.desktop";
|
|
"application/x-7z-compressed" = "org.gnome.FileRoller.desktop";
|
|
"application/x-rar" = "org.gnome.FileRoller.desktop";
|
|
"application/gzip" = "org.gnome.FileRoller.desktop";
|
|
"application/x-bzip" = "org.gnome.FileRoller.desktop";
|
|
"inode/directory" = "org.gnome.Nautilus.desktop";
|
|
};
|
|
};
|
|
};
|
|
|
|
# Set Ghostty as default terminal
|
|
home.sessionVariables = {
|
|
TERMINAL = "ghostty";
|
|
};
|
|
};
|
|
};
|
|
}
|