Nix configurations for my homelab
0

Configure Feed

Select the types of activity you want to include in your feed.

1{ 2 lib, 3 pkgs, 4 roc-lang, 5 yemou-scripts, 6 ... 7}: 8{ 9 nixpkgs.overlays = [ 10 yemou-scripts.overlays.default 11 (final: prev: { 12 nautilus = prev.nautilus.overrideAttrs ( 13 finalAttrs: prevAttrs: { 14 postInstall = (prevAttrs.postInstall or "") + '' 15 mkdir -p $out/share/xdg-desktop-portal/portals 16 cat > $out/share/xdg-desktop-portal/portals/nautilus.portal <<EOF 17 [portal] 18 DBusName=org.gnome.Nautilus 19 Interfaces=org.freedesktop.impl.portal.FileChooser 20 EOF 21 ''; 22 } 23 ); 24 roc = roc-lang.packages.${prev.stdenv.hostPlatform.system}.default; 25 roc-lang-server = roc-lang.packages.${prev.stdenv.hostPlatform.system}.lang-server; 26 xdg-desktop-portal-wlr = prev.xdg-desktop-portal-wlr.overrideAttrs ( 27 finalAttrs: prevAttrs: { 28 version = "896cee82a6f14ee996fb870c0fc5e27533e37907"; 29 30 src = prev.fetchFromGitHub { 31 owner = "emersion"; 32 repo = "xdg-desktop-portal-wlr"; 33 rev = "${finalAttrs.version}"; 34 sha256 = "sha256-uQYXGiMmrMHCygh5IHt90NSZLPbY7uVMyDx8zUTHXaM="; 35 }; 36 37 patches = (prevAttrs.patches or [ ]) ++ [ ../patches/${prevAttrs.pname}/pw-graph-driver.patch ]; 38 } 39 ); 40 }) 41 ]; 42 43 # TODO: Create wrapper scripts to better manage the graphical-session-pre and graphical-session systemd targets 44 # TODO: Make river execute the init.roc file I have instead of just init 45 # TODO: switch to river when 0.4.0 releases 46 programs.river-classic = { 47 enable = true; 48 package = pkgs.river-classic.overrideAttrs ( 49 final: prev: { 50 postInstall = '' 51 substituteInPlace contrib/river.desktop --replace-fail "Exec=river" "Exec=env WLR_RENDERER=vulkan river" 52 echo 'DesktopNames=river;wlroots' >> contrib/river.desktop 53 ${prev.postInstall} 54 ''; 55 } 56 ); 57 # TODO: Move organize these some how 58 extraPackages = with pkgs; [ 59 bemenu 60 chayang 61 ffmpegthumbnailer 62 kanshi 63 lswt 64 mako 65 nautilus 66 # roc 67 # roc-lang-server 68 scr 69 slurp 70 swaybg 71 swayidle 72 swaylock 73 wlopm 74 wlsunset 75 xrandr # Needed to set xwayland primary output 76 ]; 77 }; 78 79 # TODO: make a script that will start river using these targets properly 80 # Will need a Desktop Entry, the script will first call call `river-session-pre` and then once river is started, 81 # `river-session` will be called from inside river. When river terminates, both `river-session` and 82 # `river-session-pre` will be un called 83 systemd.user.targets = { 84 "river-session-pre" = { 85 description = "River compositor session"; 86 bindsTo = [ "graphical-session-pre.target" ]; 87 }; 88 "river-session" = { 89 description = "River compositor session"; 90 bindsTo = [ "graphical-session.target" ]; 91 wants = [ "graphical-session-pre.target" ]; 92 after = [ "graphical-session-pre.target" ]; 93 }; 94 }; 95 96 xdg.portal = { 97 wlr.enable = true; 98 extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; 99 config.river = { 100 default = lib.mkForce "gtk"; 101 "org.freedesktop.impl.portal.FileChooser" = [ "nautilus" ]; 102 "org.freedesktop.impl.portal.ScreenCast" = [ "wlr" ]; 103 "org.freedesktop.impl.portal.Screenshot" = [ "wlr" ]; 104 }; 105 }; 106}