diff --git a/flake.lock b/flake.lock index 46527c1..0d6b375 100644 --- a/flake.lock +++ b/flake.lock @@ -77,11 +77,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1710821046, - "narHash": "sha256-MgXYQjFu21qc2LcB6EGaiLc6HeBNnVuzml2kese1A0o=", + "lastModified": 1711500952, + "narHash": "sha256-YEF6ycTwkcuZq1ocon+JahHgwuQLQtpH2js1j+gN8K8=", "owner": "rycee", "repo": "nur-expressions", - "rev": "319f4424a6e8e66e8776c06b9c75e564a351348b", + "rev": "d0df0c83bfe2e7ed6e26259a289d7056c4001ced", "type": "gitlab" }, "original": { @@ -280,11 +280,11 @@ }, "hardware": { "locked": { - "lastModified": 1710783728, - "narHash": "sha256-eIsfu3c9JUBgm3cURSKTXLEI9Dlk1azo+MWKZVqrmkc=", + "lastModified": 1711352745, + "narHash": "sha256-luvqik+i3HTvCbXQZgB6uggvEcxI9uae0nmrgtXJ17U=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "1e679b9a9970780cd5d4dfe755a74a8f96d33388", + "rev": "9a763a7acc4cfbb8603bb0231fec3eda864f81c0", "type": "github" }, "original": { @@ -382,11 +382,11 @@ ] }, "locked": { - "lastModified": 1710820906, - "narHash": "sha256-2bNMraoRB4pdw/HtxgYTFeMhEekBZeQ53/a8xkqpbZc=", + "lastModified": 1711625603, + "narHash": "sha256-W+9dfqA9bqUIBV5u7jaIARAzMe3kTq/Hp2SpSVXKRQw=", "owner": "nix-community", "repo": "home-manager", - "rev": "022464438a85450abb23d93b91aa82e0addd71fb", + "rev": "c0ef0dab55611c676ad7539bf4e41b3ec6fa87d2", "type": "github" }, "original": { @@ -404,11 +404,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1710670771, - "narHash": "sha256-c81N1hjI8yYAjo9Lp3UimC0OLibwTk6FP/TFHmdfjo0=", + "lastModified": 1712089776, + "narHash": "sha256-OBCZeC++pKx5JjJ9ikpTW5vnDTcJAXXmzgybcsY/oQc=", "owner": "xunuwu", "repo": "neovim-config", - "rev": "13825e147cf1d2703bf54c32e559305cf66e4e84", + "rev": "a1e6bd192ec5be356f12fee40d904ab6ee062491", "type": "github" }, "original": { @@ -471,11 +471,11 @@ ] }, "locked": { - "lastModified": 1710644923, - "narHash": "sha256-0fjbN5GYYDKPyPay0l8gYoH+tFfNqPPwP5sxxBreeA4=", + "lastModified": 1711249705, + "narHash": "sha256-h/NQECj6mIzF4XR6AQoSpkCnwqAM+ol4+qOdYi2ykmQ=", "owner": "Mic92", "repo": "nix-index-database", - "rev": "e25efda85e39fcdc845e371971ac4384989c4295", + "rev": "34519f3bb678a5abbddf7b200ac5347263ee781b", "type": "github" }, "original": { @@ -491,11 +491,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1710811024, - "narHash": "sha256-A2s6Mx1oXZFFjZGrPIJpOGfZnQpKlBEEADIjLe1dPqY=", + "lastModified": 1711761168, + "narHash": "sha256-w7GgKhBcrg1B72Ymb24rDeAoHsNwZdF8OghR4VxGYHk=", "owner": "nix-community", "repo": "nix-vscode-extensions", - "rev": "ebf9b6e2c3252dfcd375a06b69723e0065091568", + "rev": "5fae7231f16bd5467660c50e7d6a3732559443a0", "type": "github" }, "original": { @@ -540,11 +540,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1710628718, - "narHash": "sha256-y+l3eH53UlENaYa1lmnCBHusZb1kxBEFd2/c7lDsGpw=", + "lastModified": 1711233294, + "narHash": "sha256-eEu5y4J145BYDw9o/YEmeJyqh8blgnZwuz9k234zuWc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6dc11d9859d6a18ab0c5e5829a5b8e4810658de3", + "rev": "ac6bdf6181666ebb4f90dd20f31e2fa66ede6b68", "type": "github" }, "original": { @@ -572,11 +572,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1710806803, - "narHash": "sha256-qrxvLS888pNJFwJdK+hf1wpRCSQcqA6W5+Ox202NDa0=", + "lastModified": 1711703276, + "narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b06025f1533a1e07b6db3e75151caa155d1c7eb3", + "rev": "d8fe5e6c92d0d190646fb9f1056741a229980089", "type": "github" }, "original": { @@ -588,11 +588,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1710534455, - "narHash": "sha256-huQT4Xs0y4EeFKn2BTBVYgEwJSv8SDlm82uWgMnCMmI=", + "lastModified": 1711200738, + "narHash": "sha256-dkJmk/ET/tRV4007O6kU101UEg1svUwiyk/zEEX9Tdg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9af9c1c87ed3e3ed271934cb896e0cdd33dae212", + "rev": "20bc93ca7b2158ebc99b8cef987a2173a81cde35", "type": "github" }, "original": { @@ -623,11 +623,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1710644594, - "narHash": "sha256-RquCuzxfy4Nr8DPbdp3D/AsbYep21JgQzG8aMH9jJ4A=", + "lastModified": 1711249319, + "narHash": "sha256-N+Pp3/8H+rd7cO71VNV/ovV/Kwt+XNeUHNhsmyTabdM=", "owner": "Mic92", "repo": "sops-nix", - "rev": "83b68a0e8c94b72cdd0a6e547a14ca7eb1c03616", + "rev": "405987a66cce9a4a82f321f11b205982a7127c88", "type": "github" }, "original": { diff --git a/home/editors/vscode.nix b/home/editors/vscode.nix index ee7dc3a..73e0ad2 100644 --- a/home/editors/vscode.nix +++ b/home/editors/vscode.nix @@ -14,13 +14,13 @@ in { package = pkgs.vscodium; mutableExtensionsDir = true; - extensions = [ - ovsx.vadimcn.vscode-lldb - ovsx.mkhl.direnv - ovsx.editorconfig.editorconfig - ovsx.pkief.material-icon-theme - ovsx.eamodio.gitlens - vsce.hediet.debug-visualizer + extensions = with vsce; [ + vadimcn.vscode-lldb + mkhl.direnv + editorconfig.editorconfig + pkief.material-icon-theme + eamodio.gitlens + hediet.debug-visualizer ]; }; } diff --git a/home/profiles/hopper/default.nix b/home/profiles/hopper/default.nix index c9dae7b..b4b86a1 100644 --- a/home/profiles/hopper/default.nix +++ b/home/profiles/hopper/default.nix @@ -6,6 +6,7 @@ ../../programs/browsers/firefox.nix + ../../programs/desktop ../../programs/desktop/awesome ../../programs/media diff --git a/home/profiles/nixdesk/default.nix b/home/profiles/nixdesk/default.nix index 00b3935..b90d252 100644 --- a/home/profiles/nixdesk/default.nix +++ b/home/profiles/nixdesk/default.nix @@ -1,5 +1,6 @@ {...}: { imports = [ + ./kanshi.nix ../../terminal ../../editors/nvim.nix ../../editors/emacs.nix @@ -8,7 +9,9 @@ ../../terminal/emulator/wezterm.nix # desktop + ../../programs/desktop ../../programs/desktop/awesome + ../../programs/desktop/hyprland # development ../../develop @@ -16,6 +19,7 @@ # programs ../../programs/misc/keepassxc.nix ../../programs/misc/discord.nix + ../../programs/misc/obsidian.nix ../../programs/misc/thunderbird.nix ../../programs/music ../../programs/music/yams.nix @@ -24,6 +28,7 @@ ../../programs/media/jellyfin.nix # gaming ../../programs/games + ../../programs/games/ludusavi.nix # media services ../../services/media/playerctl.nix diff --git a/home/profiles/nixdesk/kanshi.nix b/home/profiles/nixdesk/kanshi.nix new file mode 100644 index 0000000..eac0d0a --- /dev/null +++ b/home/profiles/nixdesk/kanshi.nix @@ -0,0 +1,20 @@ +{ + services.kanshi = { + enable = true; + systemdTarget = "hyprland-session.target"; + profiles."default" = { + outputs = [ + { + # criteria = "AOC 27G2G3"; + criteria = "DP-3"; + mode = "1920x1080@165Hz"; + } + { + # criteria = "AOC 24B1W"; + criteria = "HDMI-A-1"; + position = "1920,0"; + } + ]; + }; + }; +} diff --git a/home/programs/browsers/firefox.nix b/home/programs/browsers/firefox.nix index fef8b1f..ec402e9 100644 --- a/home/programs/browsers/firefox.nix +++ b/home/programs/browsers/firefox.nix @@ -14,12 +14,16 @@ sponsorblock tridactyl translate-web-pages + cookie-quick-manager + istilldontcareaboutcookies (lib.mkIf (builtins.elem pkgs.keepassxc config.home.packages) keepassxc-browser) ]; bookmarks = {}; settings = { + "browser.tabs.inTitleBar" = "0"; # use system title bar (if you have one :)) "browser.newtabpage.enabled" = false; "browser.newtab.url" = "about:blank"; + "general.autoScroll" = "true"; # mmb scroll mode "browser.newtabpage.enhanced" = false; "browser.newtabpage.introShown" = true; diff --git a/home/programs/desktop/awesome/config/rc.lua b/home/programs/desktop/awesome/config/rc.lua index 33206f0..055ef4a 100644 --- a/home/programs/desktop/awesome/config/rc.lua +++ b/home/programs/desktop/awesome/config/rc.lua @@ -144,7 +144,7 @@ awful.screen.connect_for_each_screen(function(s) set_wallpaper(s) -- Each screen has its own tag table. - awful.tag({ "1", "2", "3", "4", "5" }, s, awful.layout.layouts[1]) + awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1]) -- Create a promptbox for each screen s.mypromptbox = awful.widget.prompt() diff --git a/home/programs/desktop/awesome/default.nix b/home/programs/desktop/awesome/default.nix index e66913c..01f8198 100644 --- a/home/programs/desktop/awesome/default.nix +++ b/home/programs/desktop/awesome/default.nix @@ -1,4 +1,9 @@ {pkgs, ...}: { + services.picom = { + enable = true; + vSync = true; + }; + xsession.windowManager.awesome = { enable = true; noArgb = true; diff --git a/home/programs/desktop/default.nix b/home/programs/desktop/default.nix new file mode 100644 index 0000000..3fc4d83 --- /dev/null +++ b/home/programs/desktop/default.nix @@ -0,0 +1,48 @@ +{pkgs, ...}: { + home.pointerCursor = { + gtk.enable = true; + x11.enable = true; + package = pkgs.apple-cursor; + name = "macOS-BigSur"; + size = 16; + }; + + gtk = { + enable = true; + theme = { + package = pkgs.flat-remix-gtk; + name = "Flat-Remix-GTK-Grey-Darkest"; + }; + iconTheme = { + package = pkgs.gnome.adwaita-icon-theme; + name = "Adwaita"; + }; + font = { + name = "Sans"; + size = 11; + }; + }; + + qt = { + enable = true; + platformTheme = "gtk3"; + style = { + name = "adwaita-dark"; + package = pkgs.adwaita-qt; + }; + }; + + xdg.portal = { + enable = true; + extraPortals = with pkgs; [ + xdg-desktop-portal-hyprland + xdg-desktop-portal-kde + ]; + config = { + preferred = { + default = "hyprland;gtk"; + "org.freedesktop.impl.portal.FileChooser" = "kde"; + }; + }; + }; +} diff --git a/home/programs/desktop/hyprland/default.nix b/home/programs/desktop/hyprland/default.nix new file mode 100644 index 0000000..651cfcd --- /dev/null +++ b/home/programs/desktop/hyprland/default.nix @@ -0,0 +1,111 @@ +{ + pkgs, + lib, + inputs, + config, + ... +}: { + wayland.windowManager.hyprland = { + enable = true; + settings = { + exec-once = [ + "${lib.getExe pkgs.waybar}" + "${lib.getExe pkgs.xwaylandvideobridge}" + "${lib.getExe pkgs.swaybg} -i ${config.xdg.userDirs.pictures}/wallpaper.png" + ]; + input = { + kb_layout = "eu"; + }; + env = [ + "NIXOS_OZONE_WL,1" # for any ozone-based browser & electron apps to run on wayland + "MOZ_ENABLE_WAYLAND,1" # for firefox to run on wayland + "MOZ_WEBRENDER,1" + # misc + "_JAVA_AWT_WM_NONREPARENTING,1" + "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" + "QT_QPA_PLATFORM,wayland" + "SDL_VIDEODRIVER,wayland" + "GDK_BACKEND,wayland" + ]; + + "$mainMod" = "SUPER"; + bind = [ + "$mainMod, RETURN, exec, ${lib.getExe pkgs.foot}" + "$mainMod, Q, killactive" + "$mainMod, SPACE, togglefloating" + "$mainMod, F, fullscreen" + "$mainMod, M, fullscreen, 1" + "$mainMod SHIFT, F, fakefullscreen" + "$mainMod, P, exec, ${pkgs.bemenu}/bin/bemenu-run" + + "$mainMod SHIFT, E, exec, ${lib.getExe pkgs.wlogout}" + # focus with vim keys + "$mainMod, h, movefocus, l" + "$mainMod, j, movefocus, d" + "$mainMod, k, movefocus, u" + "$mainMod, l, movefocus, r" + # window move with vim keys + "$mainMod SHIFT, h, movewindow, l" + "$mainMod SHIFT, j, movewindow, d" + "$mainMod SHIFT, k, movewindow, u" + "$mainMod SHIFT, l, movewindow, r" + + # switch workspace with mod+[0-9] + "$mainMod, 1, workspace, 1" + "$mainMod, 2, workspace, 2" + "$mainMod, 3, workspace, 3" + "$mainMod, 4, workspace, 4" + "$mainMod, 5, workspace, 5" + "$mainMod, 6, workspace, 6" + "$mainMod, 7, workspace, 7" + "$mainMod, 8, workspace, 8" + "$mainMod, 9, workspace, 9" + "$mainMod, 0, workspace, 10" + + # move window to workspace with mod+shift+[0-9] + "$mainMod SHIFT, 1, movetoworkspace, 1" + "$mainMod SHIFT, 2, movetoworkspace, 2" + "$mainMod SHIFT, 3, movetoworkspace, 3" + "$mainMod SHIFT, 4, movetoworkspace, 4" + "$mainMod SHIFT, 5, movetoworkspace, 5" + "$mainMod SHIFT, 6, movetoworkspace, 6" + "$mainMod SHIFT, 7, movetoworkspace, 7" + "$mainMod SHIFT, 8, movetoworkspace, 8" + "$mainMod SHIFT, 9, movetoworkspace, 9" + "$mainMod SHIFT, 0, movetoworkspace, 10" + + # scroll through workspaces with mod+scroll + "$mainMod, mouse_down, workspace, e+1" + "$mainMod, mouse_up, workspace, e-1" + ", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} play-pause" + ", XF86AudioStop, exec, ${lib.getExe pkgs.playerctl} stop" + ", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} next" + ", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} previous" + ]; + bindm = [ + # mod+lbm/rmb for move/resize + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + binde = [ + ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 3%+" + ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 3%-" + ]; + windowrulev2 = [ + # Allow hiding xwaylandvideobridge window correctly + "opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$" + "noanim,class:^(xwaylandvideobridge)$" + "noinitialfocus,class:^(xwaylandvideobridge)$" + "maxsize 1 1,class:^(xwaylandvideobridge)$" + "noblur,class:^(xwaylandvideobridge)$" + + #"stayfocused,title:^(XtMapper)$" + "noanim,title:^(XtMapper)$" + "noblur,title:^(XtMapper)$" + "float,title:^(XtMapper)$" + "move 0% 0%,title:^(XtMapper)$" + "size 100%,title:^(XtMapper)$" + ]; + }; + }; +} diff --git a/home/programs/games/ludusavi.nix b/home/programs/games/ludusavi.nix new file mode 100644 index 0000000..0eed13d --- /dev/null +++ b/home/programs/games/ludusavi.nix @@ -0,0 +1,6 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + ludusavi + rclone + ]; +} diff --git a/home/programs/misc/obsidian.nix b/home/programs/misc/obsidian.nix new file mode 100644 index 0000000..b521c22 --- /dev/null +++ b/home/programs/misc/obsidian.nix @@ -0,0 +1,3 @@ +{pkgs, ...}: { + home.packages = with pkgs; [obsidian]; +} diff --git a/home/terminal/emulator/wezterm.nix b/home/terminal/emulator/wezterm.nix index 5867a12..e69eb0e 100644 --- a/home/terminal/emulator/wezterm.nix +++ b/home/terminal/emulator/wezterm.nix @@ -21,16 +21,6 @@ -- Keys c.leader = { key = 'j', mods = 'CTRL', timeout_milliseconds = 1000 } c.keys = { - { - key = 'v', - mods = 'LEADER', - action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' }, - }, - { - key = 's', - mods = 'LEADER', - action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' }, - }, { key = 'q', mods = 'LEADER', @@ -41,6 +31,60 @@ mods = 'LEADER', action = wezterm.action.TogglePaneZoomState, }, + { + key = 'h', + mods = 'LEADER', + action = wezterm.action.ActivatePaneDirection('Left'), + }, + { + key = 'j', + mods = 'LEADER', + action = wezterm.action.ActivatePaneDirection('Down'), + }, + { + key = 'k', + mods = 'LEADER', + action = wezterm.action.ActivatePaneDirection('Up'), + }, + { + key = 'l', + mods = 'LEADER', + action = wezterm.action.ActivatePaneDirection('Right'), + }, + { + key = 'H', + mods = 'LEADER', + action = wezterm.action.SplitPane { direction = 'Left' }, + }, + { + key = 'J', + mods = 'LEADER', + action = wezterm.action.SplitPane { direction = 'Down' }, + }, + { + key = 'K', + mods = 'LEADER', + action = wezterm.action.SplitPane { direction = 'Up' }, + }, + { + key = 'L', + mods = 'LEADER', + action = wezterm.action.SplitPane { direction = 'Right' }, + }, + { + key = 's', + mods = 'LEADER', + action = wezterm.action.PaneSelect { + mode = "Activate" + }, + }, + { + key = ';', + mods = 'LEADER', + action = wezterm.action.PaneSelect { + mode = "SwapWithActive" + }, + }, } return c diff --git a/home/terminal/programs/default.nix b/home/terminal/programs/default.nix index 0624b50..5c326d7 100644 --- a/home/terminal/programs/default.nix +++ b/home/terminal/programs/default.nix @@ -1,6 +1,7 @@ { imports = [ ./git.nix + ./github.nix ./direnv.nix ./xdg.nix ./comma.nix diff --git a/home/terminal/programs/github.nix b/home/terminal/programs/github.nix new file mode 100644 index 0000000..b8959e4 --- /dev/null +++ b/home/terminal/programs/github.nix @@ -0,0 +1,4 @@ +{ + programs.gh.enable = true; + programs.gh-dash.enable = true; +} diff --git a/home/terminal/programs/tmux.nix b/home/terminal/programs/tmux.nix index 3b86201..a33dd34 100644 --- a/home/terminal/programs/tmux.nix +++ b/home/terminal/programs/tmux.nix @@ -5,5 +5,10 @@ clock24 = true; mouse = true; escapeTime = 0; + extraConfig = '' + bind '"' split-window -c "#{pane_current_path}" + bind % split-window -h -c "#{pane_current_path}" + bind c new-window -c "#{pane_current_path}"; + ''; }; } diff --git a/home/terminal/shell/zsh.nix b/home/terminal/shell/zsh.nix index 54ee433..775b2fd 100644 --- a/home/terminal/shell/zsh.nix +++ b/home/terminal/shell/zsh.nix @@ -5,7 +5,7 @@ enable = true; autocd = true; enableCompletion = true; - enableAutosuggestions = true; + autosuggestion.enable = true; dotDir = ".config/zsh"; defaultKeymap = "emacs"; diff --git a/hosts/default.nix b/hosts/default.nix index 5da2e7d..e514b45 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -34,6 +34,10 @@ in { "${self}/secrets/nixdesk" "${mod}/services/syncthing.nix" + "${mod}/services/virt/podman.nix" + "${mod}/services/virt/waydroid.nix" + "${mod}/services/virt/distrobox.nix" + "${mod}/services/ollama.nix" "${mod}/desktop/x11/nosleep.nix" "${mod}/programs/gamemode.nix" diff --git a/hosts/liveiso/default.nix b/hosts/liveiso/default.nix index 4df65cd..83878b3 100644 --- a/hosts/liveiso/default.nix +++ b/hosts/liveiso/default.nix @@ -1,9 +1,13 @@ -{...}: { +{pkgs, ...}: { imports = [ ./tools.nix ./sway.nix ]; + environment.systemPackages = with pkgs; [ + firefox + ]; + isoImage.edition = "sway-custom"; networking.hostName = "liveiso"; diff --git a/hosts/liveiso/tools.nix b/hosts/liveiso/tools.nix index 4b5fccd..992d228 100644 --- a/hosts/liveiso/tools.nix +++ b/hosts/liveiso/tools.nix @@ -2,5 +2,6 @@ environment.systemPackages = with pkgs; [ neovim parted + gparted ]; } diff --git a/hosts/nixdesk/default.nix b/hosts/nixdesk/default.nix index 51d4c09..805bae0 100644 --- a/hosts/nixdesk/default.nix +++ b/hosts/nixdesk/default.nix @@ -18,7 +18,6 @@ swapDevices = [ { device = "/var/lib/swapfile"; - randomEncryption.enable = true; size = 16 * 1024; } ]; diff --git a/hosts/nixdesk/hardware.nix b/hosts/nixdesk/hardware.nix index 9b31f8b..fbd1de2 100644 --- a/hosts/nixdesk/hardware.nix +++ b/hosts/nixdesk/hardware.nix @@ -29,11 +29,22 @@ fileSystems = { "/" = { - device = "/dev/disk/by-uuid/0c080ce8-26f0-454b-a100-1ca9d5308931"; - fsType = "ext4"; + device = "/dev/disk/by-uuid/d87276c0-ef9c-422e-b2de-effc1b47c654"; + fsType = "btrfs"; + options = ["subvol=root" "compress=zstd"]; + }; + "/home" = { + device = "/dev/disk/by-uuid/d87276c0-ef9c-422e-b2de-effc1b47c654"; + fsType = "btrfs"; + options = ["subvol=home" "compress=zstd"]; + }; + "/nix" = { + device = "/dev/disk/by-uuid/d87276c0-ef9c-422e-b2de-effc1b47c654"; + fsType = "btrfs"; + options = ["subvol=nix" "compress=zstd" "noatime"]; }; "/boot" = { - device = "/dev/disk/by-uuid/D23A-89BF"; + device = "/dev/disk/by-uuid/588B-CB97"; fsType = "vfat"; }; }; diff --git a/pkgs/jdnbtexplorer/default.nix b/pkgs/jdnbtexplorer/default.nix index d234ca0..99644bc 100644 --- a/pkgs/jdnbtexplorer/default.nix +++ b/pkgs/jdnbtexplorer/default.nix @@ -43,7 +43,6 @@ in preFixup = '' qtWrapperArgs+=("''${gappsWrapperArgs[@]}") - # You can manually patch scripts using: wrapQtApp "$out/bin/myapp". TODO: check when it's required. ''; meta = with lib; { diff --git a/system/core/compat.nix b/system/core/compat.nix index 6f72213..854b2e2 100644 --- a/system/core/compat.nix +++ b/system/core/compat.nix @@ -1,5 +1,5 @@ {pkgs, ...}: { - environment.systemPackages = [pkgs.steam-run]; + #environment.systemPackages = [pkgs.steam-run]; programs.nix-ld.enable = true; programs.nix-ld.libraries = with pkgs; [ @@ -55,6 +55,4 @@ xorg.libxshmfence zlib ]; - # symlinks binaries to /bin, fixes hard coded shebangs - services.envfs.enable = true; } diff --git a/system/core/gvfs.nix b/system/core/gvfs.nix new file mode 100644 index 0000000..b045ed2 --- /dev/null +++ b/system/core/gvfs.nix @@ -0,0 +1,3 @@ +{ + services.gvfs.enable = true; +} diff --git a/system/core/users.nix b/system/core/users.nix index d1b93ab..83f126f 100644 --- a/system/core/users.nix +++ b/system/core/users.nix @@ -5,7 +5,10 @@ shell = pkgs.zsh; extraGroups = [ "wheel" + "input" "video" + "render" + "audio" ]; }; } diff --git a/system/default.nix b/system/default.nix index 40cd5c4..1ef0895 100644 --- a/system/default.nix +++ b/system/default.nix @@ -2,9 +2,12 @@ let desktop = [ ./core ./core/boot.nix + ./core/gvfs.nix ./hardware/opengl.nix + ./hardware/steam-hardware.nix ./hardware/bluetooth.nix + ./hardware/qmk.nix ./network/networkd.nix ./network/avahi.nix @@ -12,6 +15,8 @@ let ./desktop ./desktop/awesome.nix + ./desktop/sway.nix + ./desktop/hyprland.nix ./programs diff --git a/system/desktop/default.nix b/system/desktop/default.nix index 9b19967..0967ef4 100644 --- a/system/desktop/default.nix +++ b/system/desktop/default.nix @@ -1,14 +1 @@ -{pkgs, ...}: { - xdg = { - portal = { - enable = true; - config = { - common.default = ["gtk"]; - }; - extraPortals = with pkgs; [ - xdg-desktop-portal-wlr - xdg-desktop-portal-gtk - ]; - }; - }; -} +{} diff --git a/system/desktop/hyprland.nix b/system/desktop/hyprland.nix new file mode 100644 index 0000000..daa1aa6 --- /dev/null +++ b/system/desktop/hyprland.nix @@ -0,0 +1,5 @@ +{ + programs.hyprland = { + enable = true; + }; +} diff --git a/system/desktop/sway.nix b/system/desktop/sway.nix new file mode 100644 index 0000000..2b78eaa --- /dev/null +++ b/system/desktop/sway.nix @@ -0,0 +1,9 @@ +{ + programs.sway = { + enable = true; + wrapperFeatures = { + base = true; + gtk = true; + }; + }; +} diff --git a/system/network/avahi.nix b/system/network/avahi.nix index c885e9c..aad6cf7 100644 --- a/system/network/avahi.nix +++ b/system/network/avahi.nix @@ -8,5 +8,6 @@ domain = true; userServices = true; }; + openFirewall = true; }; } diff --git a/system/programs/steam.nix b/system/programs/steam.nix index fdd9ac3..cad28b2 100644 --- a/system/programs/steam.nix +++ b/system/programs/steam.nix @@ -6,7 +6,22 @@ extraCompatPackages = with pkgs; [ proton-ge-bin ]; - extest.enable = true; gamescopeSession.enable = true; + ## Fixes gamescope + package = pkgs.steam.override { + extraPkgs = pkgs: + with pkgs; [ + xorg.libXcursor + xorg.libXi + xorg.libXinerama + xorg.libXScrnSaver + libpng + libpulseaudio + libvorbis + stdenv.cc.cc.lib + libkrb5 + keyutils + ]; + }; }; } diff --git a/system/services/containers/server/default.nix b/system/services/containers/server/default.nix index 5171e92..06f12bb 100644 --- a/system/services/containers/server/default.nix +++ b/system/services/containers/server/default.nix @@ -6,6 +6,34 @@ imports = [ #./statistics ]; + + services.samba = { + enable = true; + package = pkgs.samba4Full; + openFirewall = true; + shares."torrent-downloads" = { + path = "/media/downloads/complete"; + browseable = "yes"; + "read only" = "yes"; + "guest ok" = "no"; + }; + #shares."decky-cloud-save" = { + # path = "/media/gamesaves"; + # browseable = "yes"; + # "read only" = "no"; + # "guest ok" = "no"; + #}; + extraConfig = '' + server smb encrypt = required + server min protocol = SMB3_00 + ''; + }; + services.samba-wsdd = { + # This enables autodiscovery on windows since SMB1 (and thus netbios) support was discontinued + enable = true; + openFirewall = true; + }; + #virtualisation.docker = { # enable = true; # enableOnBoot = true; diff --git a/system/services/ollama.nix b/system/services/ollama.nix new file mode 100644 index 0000000..0880562 --- /dev/null +++ b/system/services/ollama.nix @@ -0,0 +1,10 @@ +{ + services.ollama = { + enable = true; + environmentVariables = { + HSA_OVERRIDE_GFX_VERSION = "10.3.0"; + }; + acceleration = "rocm"; + listenAddress = "127.0.0.1:11434"; + }; +} diff --git a/system/services/syncthing.nix b/system/services/syncthing.nix index 066be8d..3df65ad 100644 --- a/system/services/syncthing.nix +++ b/system/services/syncthing.nix @@ -1,4 +1,4 @@ -{ +{config, ...}: { services.syncthing = { enable = true; openDefaultPorts = true; @@ -11,11 +11,11 @@ settings = { devices = { "nixdesk" = { - id = "2WCEQPF-2J4U7IK-XRT25FV-NFT2JEM-AVOMDEK-FIJNZ24-7WCBZC2-57CX2AP"; + id = "DZEIXRH-WBIEUUW-FFP2SLJ-BTIUPBE-YURLPN7-MUFOR6L-HS27D6G-I25XHQ3"; autoAcceptFolders = true; }; "redmi-note-10-pro" = { - id = "U6YYTHR-2ZXIEXQ-RNDERSF-CTVSP67-W24VK4Y-5EQRIV5-T7JJW2N-33L7XQV"; + id = "MRAHIKH-TNHAKEG-OHMEFXI-BO54SXR-6IL2Y3B-3HVOWZF-ZGTS2OX-YSWTPQF"; autoAcceptFolders = true; }; "hopper" = { @@ -25,13 +25,13 @@ }; folders = { "~/secrets" = { - devices = [ - "nixdesk" - "redmi-note-10-pro" - "hopper" - ]; + devices = builtins.attrNames config.services.syncthing.settings.devices; id = "sfw9y-yusup"; }; + "~/docs/xun-megavault" = { + devices = builtins.attrNames config.services.syncthing.settings.devices; + id = "1zkf-wf5r"; + }; }; }; diff --git a/system/services/virt/distrobox.nix b/system/services/virt/distrobox.nix new file mode 100644 index 0000000..8c69856 --- /dev/null +++ b/system/services/virt/distrobox.nix @@ -0,0 +1,3 @@ +{pkgs, ...}: { + environment.systemPackages = with pkgs; [distrobox]; +} diff --git a/system/services/virt/docker.nix b/system/services/virt/docker.nix new file mode 100644 index 0000000..cc05b97 --- /dev/null +++ b/system/services/virt/docker.nix @@ -0,0 +1,6 @@ +{pkgs, ...}: { + environment.systemPackages = with pkgs; [docker-compose]; + virtualisation.docker = { + enable = true; + }; +} diff --git a/system/services/virt/podman.nix b/system/services/virt/podman.nix new file mode 100644 index 0000000..821b419 --- /dev/null +++ b/system/services/virt/podman.nix @@ -0,0 +1,7 @@ +{ + virtualisation.podman = { + enable = true; + autoPrune.enable = true; + dockerSocket.enable = true; + }; +} diff --git a/system/services/virt/waydroid.nix b/system/services/virt/waydroid.nix new file mode 100644 index 0000000..00ff0d9 --- /dev/null +++ b/system/services/virt/waydroid.nix @@ -0,0 +1,3 @@ +{ + virtualisation.waydroid.enable = true; +}