From 38ce94f0f3f51277d0772c9995a1dc955f704c0e Mon Sep 17 00:00:00 2001 From: Frantisek Bohacek Date: Thu, 6 Jun 2024 19:58:05 +0200 Subject: [PATCH] feat: add dwl iso image It's broken now, but so what --- nixos/isos/common/default.nix | 12 +++- nixos/isos/common/users.nix | 6 +- nixos/isos/default.nix | 14 ++--- nixos/isos/dwl-installation.nix | 101 ++++++++++++++++++++++++++++++++ 4 files changed, 123 insertions(+), 10 deletions(-) create mode 100644 nixos/isos/dwl-installation.nix diff --git a/nixos/isos/common/default.nix b/nixos/isos/common/default.nix index 5837ee0..f682446 100644 --- a/nixos/isos/common/default.nix +++ b/nixos/isos/common/default.nix @@ -13,10 +13,20 @@ fonts.packages = [ (pkgs.nerdfonts.override { - fonts = [ "FiraCode" ]; + fonts = [ "FiraCode" "Ubuntu" ]; }) + pkgs.font-awesome + pkgs.ubuntu_font_family ]; + fonts.fontconfig = { + defaultFonts = { + serif = [ "Ubuntu" ]; + sansSerif = [ "Ubuntu" ]; + monospace = [ "Ubuntu Mono" ]; + }; + }; + environment.systemPackages = [ pkgs.foot ]; diff --git a/nixos/isos/common/users.nix b/nixos/isos/common/users.nix index b500ebb..62258e0 100644 --- a/nixos/isos/common/users.nix +++ b/nixos/isos/common/users.nix @@ -1,4 +1,4 @@ -{ lib, ... }: +{ config, lib, ... }: { options.usersList = lib.mkOption { @@ -7,9 +7,11 @@ config = { usersList = [ "root" "nixos" "ruther" ]; - # usersList = lib.attrNames config.users.users? infrec? users.users = lib.mkMerge [ + (lib.genAttrs config.usersList (name: { + extraGroups = [ "input" ]; + })) { ruther = { isNormalUser = true; diff --git a/nixos/isos/default.nix b/nixos/isos/default.nix index 0a1dbcc..1eab610 100644 --- a/nixos/isos/default.nix +++ b/nixos/isos/default.nix @@ -18,13 +18,13 @@ let ]; }; - # dwl-install-iso = system: lib.nixosSystem { - # modules = [ - # ./dwl-installation.nix - # depsInjectModule - # (systemModule system) - # ]; - # }; + dwl-install-iso = system: lib.nixosSystem { + modules = [ + ./dwl-installation.nix + depsInjectModule + (systemModule system) + ]; + }; }; systems = [ "x86_64-linux" "aarch64-linux" ]; in lib.genAttrs systems (system: diff --git a/nixos/isos/dwl-installation.nix b/nixos/isos/dwl-installation.nix new file mode 100644 index 0000000..0e6b7df --- /dev/null +++ b/nixos/isos/dwl-installation.nix @@ -0,0 +1,101 @@ +{ config, lib, pkgs, modulesPath, ... }: + +let + inherit (config.deps-inject.inputs) self; + + dwl-startup = pkgs.writeShellScript "dwl-startup" '' + exec &<- + dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP DISPLAY + systemctl start --user dwl-session.target + ''; + + dwl-start = pkgs.writeShellScript "dwl-start" '' + export XDG_CURRENT_DESKTOP=wlroots XDG_BACKEND=wayland QT_QPA_PLATFORM=wayland MOZ_ENABLE_WAYLAND=1 _JAVA_AWT_WM_NONREPARENTING=1 + @dwl@ -s "${dwl-startup}" + systemctl stop --user dwl-session.target + ''; +in { + imports = [ + (modulesPath + "/installer/cd-dvd/installation-cd-graphical-base.nix") + ./common + ]; + + services.xserver.enable = lib.mkForce false; + + environment.systemPackages = [ + # Clipboard + pkgs.cliphist + pkgs.wl-clipboard + # PrintScreening + pkgs.grim + pkgs.slurp + # pkgs.wldash + pkgs.imv + # DWL control + self.packages.${pkgs.system}.dwlb + self.packages.${pkgs.system}.dwlmsg + pkgs.wlr-randr + pkgs.wlrctl + pkgs.wlopm + + pkgs.rofi-wayland + + ( + pkgs.symlinkJoin { + name = "dwl"; + paths = [ self.packages.${pkgs.system}.dwl ]; + postBuild = '' + dwlPath=$(readlink $out/bin/dwl) + cp -f ${dwl-start} $out/bin/dwl + substituteInPlace $out/bin/dwl \ + --replace-fail "@dwl@" "$dwlPath" + ''; + } + ) + ]; + + boot.plymouth.enable = lib.mkForce false; + hardware.bluetooth.enable = true; + services.blueman.enable = true; + services.power-profiles-daemon.enable = true; + programs.nm-applet.enable = true; + + systemd.user.targets.dwl-session = { + requires = [ "graphical-session.target" ]; + partOf = [ "graphical-session.target" ]; + }; + + xdg.portal = { + enable = true; + extraPortals = [ + pkgs.xdg-desktop-portal-wlr + pkgs.xdg-desktop-portal-gtk + ]; + config = { + wlroots = { + default = [ "gtk" "wlr" ]; + "org.freedesktop.impl.portal.ScreenCast" = "wlr"; + "org.freedesktop.impl.portal.Screenshot" = "wlr"; + # https://github.com/labwc/labwc/discussions/1503 + "org.freedesktop.impl.portal.Inhibit" = "none"; + }; + }; + }; + + programs.waybar = { + enable = true; + package = pkgs.waybar.overrideAttrs (oldAttrs: { + patches = (oldAttrs.patches or []) ++ [ + (pkgs.fetchpatch { + url = "https://github.com/Rutherther/Waybar/commit/98b08880409cfd1277dc491b2f89de39a5107e50.patch"; + hash = "sha256-qnMnjL8ejGEO9SeIEclez1OISY7poKimr4Hu+ngKnxA="; + }) + ]; + }); + }; + + systemd.user.tmpfiles.rules = [ + "L+ %h/.config/waybar/style.css - - - - ${self + "/home/modules/profiles/desktop/dwl/waybar/style.css"}" + "L+ %h/.config/waybar/config.jsonc - - - - ${self + "/home/modules/profiles/desktop/dwl/waybar/config.jsonc"}" + ]; +} -- 2.48.1