feat(nix): extend wayland with sway setup

This commit is contained in:
steveej 2023-05-23 18:11:30 +02:00
parent 2da1181445
commit 6970b8c7d2
27 changed files with 867 additions and 516 deletions

View file

@ -2,6 +2,7 @@
imports = [
../../profiles/common/configuration.nix
../../profiles/graphical/configuration.nix
../../profiles/graphical-gnome-xorg.nix
../../modules/opinionatedDisk.nix
./system.nix

View file

@ -2,6 +2,7 @@
imports = [
../../profiles/common/configuration.nix
../../profiles/graphical/configuration.nix
../../profiles/graphical-gnome-xorg.nix
./system.nix
./hw.nix

View file

@ -10,6 +10,5 @@
home-manager.users.steveej = import ../../../home-manager/configuration/graphical-fullblown.nix {
inherit pkgs;
};
services.teamviewer.enable = true;
system.stateVersion = "20.09";
}

View file

@ -3,6 +3,7 @@
../../profiles/common/configuration.nix
../../profiles/graphical/configuration.nix
../../modules/opinionatedDisk.nix
../../cachix.nix
./system.nix
./hw.nix

View file

@ -5,18 +5,25 @@
nodeFlake = repoFlake.inputs.get-flake ./.;
in {
meta.nodeSpecialArgs.${nodeName} = {
inherit nodeName nodeFlake;
inherit repoFlake nodeName nodeFlake;
packages' = repoFlake.packages.${system};
};
meta.nodeNixpkgs.${nodeName} = import nodeFlake.inputs.nixpkgs.outPath {
inherit system;
overlays = [
(final: prev: {
# FIXME: why are these not effective in for the configuration.nix below?
xdg-desktop-portal-wlr' = repoFlake.inputs.nixpkgs-wayland.packages.${system}.xdg-desktop-portal-wlr;
xdg-desktop-portal-wlr-gtk' = repoFlake.inputs.nixpkgs-wayland.packages.${system}.xdg-desktop-portal-wlr-gtk;
})
];
};
${nodeName} = {
deployment.targetHost = nodeName;
deployment.replaceUnknownProfiles = false;
# deployment.allowLocalDeployment = true;
deployment.allowLocalDeployment = true;
imports = [
(repoFlake + "/nix/os/devices/${nodeName}/configuration.nix")

View file

@ -37,13 +37,29 @@
"type": "github"
}
},
"nixpkgs-master": {
"nixpkgs-2211": {
"locked": {
"lastModified": 1684756366,
"narHash": "sha256-aua/NybNHOJdZ0whu2qRfFOFqgjVUZ65D4xg3i3nZS0=",
"lastModified": 1684580438,
"narHash": "sha256-LUPswmDn6fXP3lEBJFA2Id8PkcYDgzUilevWackYVvQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "e8d32cbe6678eb66f8def22cce43422c4b64957f",
"rev": "7dc71aef32e8faf065cb171700792cf8a65c152d",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-22.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-master": {
"locked": {
"lastModified": 1684758073,
"narHash": "sha256-LFm53sqiZoWRMNPjIDhqJvXgCcdsmMw7rbSZFhLRuJw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "f491fc656a0b48c40e0312d559380d4ad46c4447",
"type": "github"
},
"original": {
@ -73,6 +89,7 @@
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"nixpkgs-2211": "nixpkgs-2211",
"nixpkgs-master": "nixpkgs-master",
"nixpkgs-unstable": "nixpkgs-unstable"
}

View file

@ -1,4 +1,5 @@
{
inputs.nixpkgs-2211.url = "github:nixos/nixpkgs/nixos-22.11";
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
inputs.nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable-small";
inputs.nixpkgs-master.url = "github:nixos/nixpkgs/master";

View file

@ -1,4 +1,4 @@
{pkgs, lib, ...}: {
{pkgs, lib, repoFlake, nodeFlake, ...}: {
home-manager.users.steveej = _: {
imports = [
../../../home-manager/configuration/graphical-fullblown.nix
@ -11,89 +11,122 @@
];
};
# TODO: delegate graphical session to home-manager config (mostly)
# FIXME: move this to home-manager entirely
# programs.sway.enable = true;
# programs.sway.package = null;
services.xserver = {
enable = lib.mkForce false;
desktopManager = {
gnome.enable = lib.mkForce false;
xterm.enable = lib.mkForce false;
# FIXME: gnome should be moved to user session
# gnome.enable = true;
# xterm.enable = true;
};
displayManager = {
# gdm.enable = lib.mkForce false;
# FIXME: does the home-manager session have an explicit name?
# defaultSession = "xterm";
# autoLogin = {
# enable = true;
# user = "steveej";
# };
# session = [
# {
# manage = "desktop";
# name = "xsession";
# start = "";
# }
# ];
};
};
services.greetd =
let
# exec "${pkgs.greetd.gtkgreet}/bin/gtkgreet -l; swaymsg exit"
swayConfig = pkgs.writeText "greetd-sway-config" ''
# `-l` activates layer-shell mode. Notice that `swaymsg exit` will run after gtkgreet.
exec "dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK; ${pkgs.greetd.regreet}/bin/regreet; swaymsg exit"
bindsym Mod4+shift+e exec swaynag \
-t warning \
-m 'What do you want to do?' \
-b 'Poweroff' 'systemctl poweroff' \
-b 'Reboot' 'systemctl reboot'
'';
in {
enable = true;
settings = {
vt = 1;
default_session = {
command = "${pkgs.sway}/bin/sway --config ${swayConfig}";
# TODO: fix the following errors with regreet
#
# Failed to create /var/empty/.cache for shader cache (Operation not permitted)---disabling.
# amdgpu: amdgpu_cs_ctx_create2 failed. (-13)
# Failed to create /var/empty/.cache for shader cache (Operation not permitted)---disabling.
# ERROR: Couldn't create log file '/var/log/regreet/log': Permission denied (os error 13)
# 2023-05-22T10:31:42.52900769+02:00 WARN regreet::tomlutils: Missing TOML file: /var/cache/regreet/cache.toml
# 2023-05-22T10:31:42.52902325+02:00 WARN regreet::tomlutils: Missing TOML file: /etc/greetd/regreet.toml
#
# (regreet:505614): Gtk-WARNING **: 10:31:42.532: Theme parser warning: <data>:6:17-18: Empty declaration
# Failed to create /var/empty/.cache for shader cache (Operation not permitted)---disabling.
services.greetd =
let
# exec "${pkgs.greetd.gtkgreet}/bin/gtkgreet -l; swaymsg exit"
swayConfig = pkgs.writeText "greetd-sway-config" ''
# `-l` activates layer-shell mode. Notice that `swaymsg exit` will run after gtkgreet.
exec "dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK; ${pkgs.greetd.regreet}/bin/regreet; swaymsg exit"
bindsym Mod4+shift+e exec swaynag \
-t warning \
-m 'What do you want to do?' \
-b 'Poweroff' 'systemctl poweroff' \
-b 'Reboot' 'systemctl reboot'
'';
in {
enable = false;
settings = {
vt = 1;
default_session = {
command = "${pkgs.sway}/bin/sway --config ${swayConfig}";
};
};
};
};
environment.etc."greetd/environments".text = ''
sway
jay
'';
# fonts = let
# prefs.font = rec {
# size = 13;
# default = sans;
# sans = { family = "Noto Sans"; package = pkgs.noto-fonts; };
# serif = { family = "Noto Serif"; package = pkgs.noto-fonts; };
# # monospace = { family = "Iosevka Fixed"; package = pkgs.iosevka-bin; };
# monospace = { family = "Iosevka Comfy Fixed"; package = pkgs.iosevka-comfy.comfy-fixed; };
# # monospace = { family = "Go Mono"; package = pkgs.go-font; };
# # monospace = { family = "Jetbrains Mono"; package = pkgs.jetbrains-mono; };
# fallback = { family = "Font Awesome 5 Free"; package = pkgs.font-awesome; };
# emoji = { family = "Noto Color Emoji"; package = pkgs.noto-fonts-emoji; };
#
# allPackages = (map (p: p.package)
# [
# default
# sans
# serif
# monospace
# fallback
# emoji
# ]) ++
# (with pkgs; [
# liberation_ttf # free corefonts-metric-compatible replacement
# ttf_bitstream_vera
# gelasio # metric-compatible with Georgia
# powerline-symbols
# ]);
# };
# in {
# # fonts = prefs.font.allPackages;
# # fontconfig = {
# # enable = true;
# # defaultFonts = {
# # serif = [ prefs.font.serif.family ];
# # sansSerif = [ prefs.font.sans.family ];
# # monospace = [ prefs.font.monospace.family ];
# # emoji = [ prefs.font.emoji.family ];
# # };
# # };
# };
security.pam.services.getty.enableGnomeKeyring = true;
services.gnome.gnome-keyring.enable = true;
# rtkit is optional but recommended
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
};
# required by swaywm
security.polkit.enable = true;
security.pam.services.swaylock = { };
services.teamviewer.enable = false;
system.stateVersion = "20.09";
# test these on https://mozilla.github.io/webrtc-landing/gum_test.html
xdg.portal = {
enable = true;
# FIXME: `true` breaks xdg-open from alacritty:
# $ xdg-open "https://github.com/"
# Error: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface “org.freedesktop.portal.OpenURI” on object at path /org/freedesktop/portal/desktop
xdgOpenUsePortal = false;
extraPortals = [
pkgs.xdg-desktop-portal-wlr
pkgs.xdg-desktop-portal-gtk
# repoFlake.inputs.nixpkgs-wayland.packages.${pkgs.system}.xdg-desktop-portal-wlr
# (pkgs.xdg-desktop-portal-gtk.override (_: {
# buildPortalsInGnome = false;
# }))
];
};
# TODO: move this into home-manager
environment.systemPackages = with pkgs.gnomeExtensions; [
pop-shell
vitals
soft-brightness
# TODO: currently not compatible
# window-switcher-current-workspace-first
# mmod-panel
];
system.stateVersion = "23.05";
}

View file

@ -7,19 +7,19 @@
}: let
passwords = import ../../../variables/passwords.crypt.nix;
in {
nix = {
binaryCaches = [
nix.settings = {
substituters = [
"https://holochain-ci.cachix.org"
# "https://cache.holo.host/"
];
binaryCachePublicKeys = [
trusted-public-keys = [
"holochain-ci.cachix.org-1:5IUSkZc0aoRS53rfkvH9Kid40NpyjwCMCzwRTXy+QN8="
# "cache.holo.host-1:lNXIXtJgS9Iuw4Cu6X0HINLu9sTfcjEntnrgwMQIMcE="
# "cache.holo.host-2:ZJCkX3AUYZ8soxTLfTb60g+F3MkWD7hkH9y8CgqwhDQ="
];
settings.extra-experimental-features = ["impure-derivations"];
settings.system-features = ["recursive-nix"];
extra-experimental-features = ["impure-derivations"];
system-features = ["recursive-nix"];
};
networking.bridges."virbr1".interfaces = [];