diff --git a/config/base.nix b/config/base.nix index c8d7313..dfec957 100644 --- a/config/base.nix +++ b/config/base.nix @@ -131,6 +131,7 @@ }; console.keyMap = "sv-latin1"; + environment.systemPackages = with pkgs; [ waypipe (st.overrideAttrs (oldAttrs: rec { diff --git a/config/home.nix b/config/home.nix index 37f93dd..6bc0d06 100644 --- a/config/home.nix +++ b/config/home.nix @@ -1,5 +1,3 @@ -# This is your home-manager configuration file -# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix) { inputs, lib, @@ -9,45 +7,34 @@ ... }: { - imports = [ - ../shared/dwm.nix - ../shared/tmux.nix - ../shared/fish.nix - ../shared/git.nix - ../shared/kitty.nix - ../shared/dunst.nix - ../shared/nixpkgs.nix - ../shared/firefox.nix - ../shared/zathura.nix - ../shared/lazygit.nix - ../shared/ssh.nix - ../shared/aerc.nix - ../shared/oh-my-posh.nix - ../shared/gtk.nix - ../shared/neovim.nix - ../shared/k9s.nix - # ../shared/hyprland.nix - ]; + imports = [ + ../shared/dwm.nix + ../shared/tmux.nix + ../shared/fish.nix + ../shared/git.nix + ../shared/kitty.nix + ../shared/dunst.nix + ../shared/nixpkgs.nix + ../shared/firefox.nix + ../shared/zathura.nix + ../shared/lazygit.nix + ../shared/ssh.nix + ../shared/aerc.nix + ../shared/oh-my-posh.nix + ../shared/gtk.nix + ../shared/neovim.nix + ../shared/k9s.nix + ]; - nixpkgs = { - overlays = [ ]; - config = { - allowUnfree = true; - allowUnfreePredicate = _: true; - }; - }; + programs.home-manager.enable = true; + programs.fish.enable = true; + programs.man.generateCaches = false; - programs.home-manager.enable = true; - programs.fish.enable = true; - programs.man.generateCaches = false; - # xsession.enable = true; - # xsession.windowManager.command = "xrandr --output eDP-1 --mode 1920x1080 --pos 0x1080 --rotate normal --output DP-1 --off --output HDMI-1 --primary --mode 3840x2160 --pos 1920x0 --rotate normal --output DP-2 --off --output HDMI-2 --off"; + home.username = "fw"; + home.homeDirectory = "/home/fw"; - home.username = "fw"; - home.homeDirectory = "/home/fw"; + home.stateVersion = "25.05"; # Did you read the comment? - home.stateVersion = "23.11"; # Did you read the comment? - - systemd.user.startServices = "sd-switch"; + systemd.user.startServices = "sd-switch"; } diff --git a/config/hyprland.nix b/config/hyprland.nix new file mode 100644 index 0000000..87a54c5 --- /dev/null +++ b/config/hyprland.nix @@ -0,0 +1,234 @@ +{ host +, config +, pkgs +, inputs +, ... +}: +let +in +{ + environment.systemPackages = with pkgs; [ + swww + grim + slurp + wl-clipboard + swappy + ydotool + hyprpolkitagent + hyprland-qtutils # needed for banners and ANR messages + ]; + nix.settings = { + substituters = ["https://hyprland.cachix.org"]; + trusted-substituters = ["https://hyprland.cachix.org"]; + trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="]; + }; + programs.hyprland = { + enable = true; + # set the flake package + package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + # make sure to also set the portal package, so that they are in sync + portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; + }; + home-manager.users.fw = + { pkgs, ... }: + { + services = { + cliphist = { + enable = true; + }; + }; + + wayland.windowManager.hyprland = { + enable = true; + xwayland = { + enable = true; + }; + + settings = { + "$terminal" = "kitty"; + "$mod" = "ALT"; + + monitor = [ + "DP-1, 1920x1080@144, 0x0, 1" + ",prefered,auto,1" + ]; + + xwayland = { + force_zero_scaling = true; + }; + + general = { + gaps_in = 6; + gaps_out = 6; + border_size = 2; + layout = "dwindle"; + allow_tearing = true; + }; + + input = { + kb_layout = "se"; + kb_options = [ + "caps:escape" + ]; + + follow_mouse = true; + touchpad = { + natural_scroll = true; + }; + accel_profile = "flat"; + sensitivity = 0; + }; + + decoration = { + rounding = 15; + active_opacity = 0.9; + inactive_opacity = 0.8; + fullscreen_opacity = 0.9; + + blur = { + enabled = true; + xray = true; + special = false; + new_optimizations = true; + size = 14; + passes = 4; + brightness = 1; + noise = 0.01; + contrast = 1; + popups = true; + popups_ignorealpha = 0.6; + ignore_opacity = false; + }; + }; + + animations = { + enabled = true; + bezier = [ + "linear, 0, 0, 1, 1" + "md3_standard, 0.2, 0, 0, 1" + "md3_decel, 0.05, 0.7, 0.1, 1" + "md3_accel, 0.3, 0, 0.8, 0.15" + "overshot, 0.05, 0.9, 0.1, 1.1" + "crazyshot, 0.1, 1.5, 0.76, 0.92" + "hyprnostretch, 0.05, 0.9, 0.1, 1.0" + "menu_decel, 0.1, 1, 0, 1" + "menu_accel, 0.38, 0.04, 1, 0.07" + "easeInOutCirc, 0.85, 0, 0.15, 1" + "easeOutCirc, 0, 0.55, 0.45, 1" + "easeOutExpo, 0.16, 1, 0.3, 1" + "softAcDecel, 0.26, 0.26, 0.15, 1" + "md2, 0.4, 0, 0.2, 1" + ]; + animation = [ + "windows, 1, 3, md3_decel, popin 60%" + "windowsIn, 1, 3, md3_decel, popin 60%" + "windowsOut, 1, 3, md3_accel, popin 60%" + "border, 1, 10, default" + "fade, 1, 3, md3_decel" + "layersIn, 1, 3, menu_decel, slide" + "layersOut, 1, 1.6, menu_accel" + "fadeLayersIn, 1, 2, menu_decel" + "fadeLayersOut, 1, 4.5, menu_accel" + "workspaces, 1, 7, menu_decel, slide" + "specialWorkspace, 1, 3, md3_decel, slidevert" + ]; + }; + + cursor = { + enable_hyprcursor = true; + }; + + dwindle = { + pseudotile = true; + preserve_split = true; + smart_split = false; + smart_resizing = false; + }; + + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + }; + + bind = [ + # General + "$mod, return, exec, $terminal" + "$mod SHIFT, q, killactive" + "$mod SHIFT, e, exit" + "$mod SHIFT, x, exec, ${pkgs.hyprlock}/bin/hyprlock" + + # Screen focus + "$mod, v, togglefloating" + "$mod, u, focusurgentorlast" + "$mod, tab, focuscurrentorlast" + "$mod, f, fullscreen" + + # Screen resize + "$mod CTRL, h, resizeactive, -20 0" + "$mod CTRL, l, resizeactive, 20 0" + "$mod CTRL, k, resizeactive, 0 -20" + "$mod CTRL, j, resizeactive, 0 20" + + # Workspaces + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + "$mod, 7, workspace, 7" + "$mod, 8, workspace, 8" + "$mod, 9, workspace, 9" + "$mod, 0, workspace, 10" + + # Move to workspaces + "$mod SHIFT, 1, movetoworkspace,1" + "$mod SHIFT, 2, movetoworkspace,2" + "$mod SHIFT, 3, movetoworkspace,3" + "$mod SHIFT, 4, movetoworkspace,4" + "$mod SHIFT, 5, movetoworkspace,5" + "$mod SHIFT, 6, movetoworkspace,6" + "$mod SHIFT, 7, movetoworkspace,7" + "$mod SHIFT, 8, movetoworkspace,8" + "$mod SHIFT, 9, movetoworkspace,9" + "$mod SHIFT, 0, movetoworkspace,10" + + # Navigation + "$mod, h, movefocus, l" + "$mod, l, movefocus, r" + "$mod, k, movefocus, u" + "$mod, j, movefocus, d" + + # Applications + "$mod, q, exec, ${pkgs.firefox}/bin/firefox" + "$mod, d, exec, ${pkgs.wmenu}/bin/wmenu-run" + + + # Screencapture + "$mod, S, exec, ${pkgs.grim}/bin/grim | wl-copy" + "$mod SHIFT+ALT, S, exec, ${pkgs.grim}/bin/grim -g \"$(slurp)\" - | ${pkgs.swappy}/bin/swappy -f -" + ]; + + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; + + env = [ + "NIXOS_OZONE_WL,1" + "_JAVA_AWT_WM_NONREPARENTING,1" + "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" + "QT_QPA_PLATFORM,wayland" + "SDL_VIDEODRIVER,wayland" + "GDK_BACKEND,wayland" + "XDG_SESSION_TYPE,wayland" + "XDG_SESSION_DESKTOP,Hyprland" + "XDG_CURRENT_DESKTOP,Hyprland" + ]; + }; + systemd = { + enable = true; + }; + }; + }; +} diff --git a/config/system.nix b/config/system.nix index f487947..4f606ec 100644 --- a/config/system.nix +++ b/config/system.nix @@ -15,6 +15,13 @@ enableSSHSupport = true; }; + programs.nh = { + enable = true; + clean.enable = true; + clean.extraArgs = "--keep-since 4d --keep 3"; + flake = "/home/fw/nix"; + }; + environment.systemPackages = with pkgs; [ # System diff --git a/config/users.nix b/config/users.nix index 24da468..97b308e 100644 --- a/config/users.nix +++ b/config/users.nix @@ -4,7 +4,6 @@ ... }: { - # TODO: Configure your system-wide user settings (groups, etc), add more users as needed. users = { defaultUserShell = pkgs.bash; users = { diff --git a/flake.lock b/flake.lock index 0f84b91..50b0412 100644 --- a/flake.lock +++ b/flake.lock @@ -1,18 +1,35 @@ { "nodes": { - "btusb-mt7925": { - "flake": false, + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, "locked": { - "lastModified": 1756988929, - "narHash": "sha256-JBLlF5+4F/cRhG9NEXHRuRnpUjZ2lXvrZbcxgID46Jc=", - "owner": "fwastring", - "repo": "btusb-mt7925", - "rev": "0dc5d50b767db061c69efd805c28ebf86bb2776c", + "lastModified": 1755946532, + "narHash": "sha256-POePremlUY5GyA1zfbtic6XLxDaQcqHN6l+bIxdT5gc=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "81584dae2df6ac79f6b6dae0ecb7705e95129ada", "type": "github" }, "original": { - "owner": "fwastring", - "repo": "btusb-mt7925", + "owner": "hyprwm", + "repo": "aquamarine", "type": "github" } }, @@ -48,6 +65,22 @@ "type": "github" } }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -56,11 +89,11 @@ ] }, "locked": { - "lastModified": 1754487366, - "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", + "rev": "4524271976b625a4a605beefd893f270620fd751", "type": "github" }, "original": { @@ -78,11 +111,11 @@ ] }, "locked": { - "lastModified": 1751413152, - "narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=", + "lastModified": 1754487366, + "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "77826244401ea9de6e3bac47c2db46005e1f30b5", + "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", "type": "github" }, "original": { @@ -108,19 +141,19 @@ }, "git-hooks": { "inputs": { - "flake-compat": "flake-compat_2", - "gitignore": "gitignore", + "flake-compat": "flake-compat_3", + "gitignore": "gitignore_2", "nixpkgs": [ "neovim-nightly-overlay", "nixpkgs" ] }, "locked": { - "lastModified": 1754416808, - "narHash": "sha256-c6yg0EQ9xVESx6HGDOCMcyRSjaTpNJP10ef+6fRcofA=", + "lastModified": 1755960406, + "narHash": "sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "9c52372878df6911f9afc1e2a1391f55e4dfc864", + "rev": "e891a93b193fcaf2fc8012d890dc7f0befe86ec2", "type": "github" }, "original": { @@ -130,6 +163,28 @@ } }, "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_2": { "inputs": { "nixpkgs": [ "neovim-nightly-overlay", @@ -160,11 +215,11 @@ ] }, "locked": { - "lastModified": 1752595130, - "narHash": "sha256-CNBgr4OZSuklGtNOa9CnTNo9+Xceqn/EDAC1Tc43fH8=", + "lastModified": 1755233722, + "narHash": "sha256-AavrbMltJKcC2Fx0lfJoZfmy7g87ebXU0ddVenhajLA=", "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "5f2e09654b2e70ba643e41609d9f9b6640f22113", + "rev": "99e03e72e3f7e13506f80ef9ebaedccb929d84d0", "type": "github" }, "original": { @@ -180,11 +235,11 @@ ] }, "locked": { - "lastModified": 1753592768, - "narHash": "sha256-oV695RvbAE4+R9pcsT9shmp6zE/+IZe6evHWX63f2Qg=", + "lastModified": 1756679287, + "narHash": "sha256-Xd1vOeY9ccDf5VtVK12yM0FS6qqvfUop8UQlxEB+gTQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "fc3add429f21450359369af74c2375cb34a2d204", + "rev": "07fc025fe10487dd80f2ec694f1cd790e752d0e8", "type": "github" }, "original": { @@ -194,6 +249,265 @@ "type": "github" } }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1753964049, + "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1755678602, + "narHash": "sha256-uEC5O/NIUNs1zmc1aH1+G3GRACbODjk2iS0ET5hXtuk=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "157cc52065a104fc3b8fa542ae648b992421d1c7", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-protocols": "hyprland-protocols", + "hyprland-qtutils": "hyprland-qtutils", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1756977414, + "narHash": "sha256-Hz5S4fILpYd1smWDZ+uLYjHgW22v6JS/04j15I4cFZE=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "4e785d12a91117cd5b255052799d1a051d9976c0", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1749046714, + "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprland-qt-support": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprland-qtutils", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "systems" + ] + }, + "locked": { + "lastModified": 1749154592, + "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "type": "github" + } + }, + "hyprland-qtutils": { + "inputs": { + "hyprland-qt-support": "hyprland-qt-support", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-qtutils", + "hyprlang", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1753819801, + "narHash": "sha256-tHe6XeNeVeKapkNM3tcjW4RuD+tB2iwwoogWJOtsqTI=", + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "rev": "b308a818b9dcaa7ab8ccab891c1b84ebde2152bc", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1753622892, + "narHash": "sha256-0K+A+gmOI8IklSg5It1nyRNv0kCNL51duwnhUO/B8JA=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "23f0debd2003f17bd65f851cd3f930cff8a8c809", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1756117388, + "narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1755184602, + "narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "k9s-config": { "flake": false, "locked": { @@ -212,20 +526,20 @@ }, "neovim-nightly-overlay": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "flake-parts": "flake-parts", "git-hooks": "git-hooks", "hercules-ci-effects": "hercules-ci-effects", "neovim-src": "neovim-src", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1755166568, - "narHash": "sha256-nDvZQVXBumUvxJpSCFvYvwroxev0VVLo3o1O1lOsRL0=", + "lastModified": 1757117124, + "narHash": "sha256-ZUnJehqxYrhfvIdLrFC3l/w8pX4ObEIWZYqL1UpgvRE=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "5839a314cfaccc12235b7f6adf280074a332916b", + "rev": "b447e494cafb7adaf396714a285245e4d1536a6a", "type": "github" }, "original": { @@ -237,11 +551,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1755127085, - "narHash": "sha256-fax8+y7ggHjps+HLa/Yz2cA7yACyu4CoaNsvuFUI2HQ=", + "lastModified": 1757081548, + "narHash": "sha256-24Jg5pMGTofEJ6Pz6OBDAMH6hc9gbMqgZhhVe+uZF3M=", "owner": "neovim", "repo": "neovim", - "rev": "9843573a61f42b7f9ea5ded0f5221320ac1925c5", + "rev": "069be911064d0e64f1efc13348dbb878afaf347f", "type": "github" }, "original": { @@ -252,27 +566,27 @@ }, "nixpkgs": { "locked": { - "lastModified": 1755082269, - "narHash": "sha256-Ix7ALeaxv9tW4uBKWeJnaKpYZtZiX4H4Q/MhEmj4XYA=", + "lastModified": 1756266583, + "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d74de548348c46cf25cb1fcc4b74f38103a4590d", + "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-unstable": { "locked": { - "lastModified": 1755027561, - "narHash": "sha256-IVft239Bc8p8Dtvf7UAACMG5P3ZV+3/aO28gXpGtMXI=", + "lastModified": 1756787288, + "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "005433b926e16227259a1843015b5b2b7f7d1fc3", + "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", "type": "github" }, "original": { @@ -284,11 +598,27 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1755078291, - "narHash": "sha256-Hu/gTDoi4uy6TAKISPHQusSMy8U6xUbLSDjKBYdhDIY=", + "lastModified": 1756911493, + "narHash": "sha256-6n/n1GZQ/vi+LhFXMSyoseKdNfc2QQaSBXJdgamrbkE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3385ca0cd7e14c1a1eb80401fe011705ff012323", + "rev": "c6a788f552b7b7af703b1a29802a7233c0067908", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1757020766, + "narHash": "sha256-PLoSjHRa2bUbi1x9HoXgTx2AiuzNXs54c8omhadyvp0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fe83bbdde2ccdc2cb9573aa846abe8363f79a97a", "type": "github" }, "original": { @@ -314,18 +644,56 @@ "type": "github" } }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1755960406, + "narHash": "sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "e891a93b193fcaf2fc8012d890dc7f0befe86ec2", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { - "btusb-mt7925": "btusb-mt7925", "fw-pkgs": "fw-pkgs", "home-manager": "home-manager", + "hyprland": "hyprland", "k9s-config": "k9s-config", "neovim-nightly-overlay": "neovim-nightly-overlay", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "nixpkgs-unstable": "nixpkgs-unstable", "nvim-config": "nvim-config" } }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, "treefmt-nix": { "inputs": { "nixpkgs": [ @@ -334,11 +702,11 @@ ] }, "locked": { - "lastModified": 1754847726, - "narHash": "sha256-2vX8QjO5lRsDbNYvN9hVHXLU6oMl+V/PsmIiJREG4rE=", + "lastModified": 1756662192, + "narHash": "sha256-F1oFfV51AE259I85av+MAia221XwMHCOtZCMcZLK2Jk=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "7d81f6fb2e19bf84f1c65135d1060d829fae2408", + "rev": "1aabc6c05ccbcbf4a635fb7a90400e44282f61c4", "type": "github" }, "original": { @@ -346,6 +714,47 @@ "repo": "treefmt-nix", "type": "github" } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1755354946, + "narHash": "sha256-zdov5f/GcoLQc9qYIS1dUTqtJMeDqmBmo59PAxze6e4=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "a10726d6a8d0ef1a0c645378f983b6278c42eaa0", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 7ea6bb3..6e43330 100644 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,7 @@ # Home manager home-manager.url = "github:nix-community/home-manager/release-25.05"; + hyprland.url = "github:hyprwm/Hyprland"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; nvim-config = { url = "github:fwastring/nvim?exportIgnore=1"; @@ -91,7 +92,7 @@ ( { nixpkgs, ... }: { - nixpkgs.overlays = [ overlay-unstable ]; + nixpkgs.overlays = [ overlay-unstable overlay-fw-pkgs ]; } ) ./maskiner/jobb/configuration.nix @@ -120,101 +121,5 @@ modules = [ ./maskiner/macmini/configuration.nix ]; }; }; - - # Standalone home-manager configuration entrypoint - # Available through 'home-manager --flake .#your-username@your-hostname' - homeConfigurations = { - "fw@laptop" = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux; - extraSpecialArgs = { - inherit inputs outputs; - myhostname = "laptop"; - }; - modules = [ - ./config/home.nix - ( - { nixpkgs, ... }: - { - nixpkgs.overlays = [ overlay-unstable ]; - } - ) - ( - { nixpkgs, ... }: - { - nixpkgs.overlays = [ overlay-fw-pkgs ]; - } - ) - ]; - }; - "fw@desktop" = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux; - extraSpecialArgs = { - inherit inputs outputs; - myhostname = "desktop"; - }; - # > Our main home-manager configuration file < - modules = [ - ./config/home.nix - ( - { nixpkgs, ... }: - { - nixpkgs.overlays = [ overlay-unstable ]; - } - ) - ( - { nixpkgs, ... }: - { - nixpkgs.overlays = [ overlay-fw-pkgs ]; - } - ) - ]; - }; - "fw@jobb" = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux; - extraSpecialArgs = { - inherit inputs outputs; - myhostname = "jobb"; - }; - # > Our main home-manager configuration file < - modules = [ - ./config/home.nix - ( - { nixpkgs, ... }: - { - nixpkgs.overlays = [ overlay-unstable ]; - } - ) - ( - { nixpkgs, ... }: - { - nixpkgs.overlays = [ overlay-fw-pkgs ]; - } - ) - ]; - }; - "fw@work-desktop" = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux; - extraSpecialArgs = { - inherit inputs outputs; - myhostname = "work-desktop"; - }; - # > Our main home-manager configuration file < - modules = [ - ./config/headless-home.nix - ( - { nixpkgs, ... }: - { - nixpkgs.overlays = [ overlay-unstable ]; - } - ) - ( - { nixpkgs, ... }: - { - nixpkgs.overlays = [ overlay-fw-pkgs ]; - } - ) - ]; - }; - }; }; } diff --git a/maskiner/jobb/configuration.nix b/maskiner/jobb/configuration.nix index 8cdebd8..88a531e 100644 --- a/maskiner/jobb/configuration.nix +++ b/maskiner/jobb/configuration.nix @@ -17,6 +17,7 @@ in imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix + inputs.home-manager.nixosModules.home-manager ../../config/users.nix ../../config/network.nix ../../config/programs.nix @@ -24,8 +25,16 @@ in ../../config/dev.nix ../../config/lsp.nix ../../config/sway.nix + ../../config/hyprland.nix ]; +home-manager.extraSpecialArgs = { inherit inputs; }; + home-manager.users.fw = { + imports = [ + ./../../config/home.nix + ]; + }; + # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; @@ -56,6 +65,11 @@ fonts.packages = with pkgs; [ }; }; + environment.sessionVariables = { + EDITOR = "nvim"; + VISUAL = "nvim"; + }; + nix.registry = (lib.mapAttrs (_: flake: { inherit flake; })) ( diff --git a/shared/hyprland.nix b/shared/hyprland.nix deleted file mode 100644 index a0845dc..0000000 --- a/shared/hyprland.nix +++ /dev/null @@ -1,144 +0,0 @@ -{ host -, config -, pkgs -, ... -}: -let -in -{ - home.packages = with pkgs; [ - swww - grim - slurp - wl-clipboard - swappy - ydotool - hyprpolkitagent - hyprland-qtutils # needed for banners and ANR messages - ]; - systemd.user.targets.hyprland-session.Unit.Wants = [ - "xdg-desktop-autostart.target" - ]; - wayland.windowManager.hyprland = { - enable = true; - package = pkgs.hyprland; - systemd = { - enable = true; - enableXdgAutostart = true; - variables = [ "--all" ]; - }; - xwayland = { - enable = true; - }; - settings = { - input = { - kb_layout = "se"; - kb_options = [ - "caps:esc" - ]; - numlock_by_default = true; - repeat_delay = 300; - follow_mouse = 1; - float_switch_override_focus = 0; - sensitivity = 0; - touchpad = { - natural_scroll = true; - disable_while_typing = true; - scroll_factor = 0.8; - }; - }; - - gestures = { - workspace_swipe = 1; - workspace_swipe_fingers = 3; - workspace_swipe_distance = 500; - workspace_swipe_invert = 1; - workspace_swipe_min_speed_to_force = 30; - workspace_swipe_cancel_ratio = 0.5; - workspace_swipe_create_new = 1; - workspace_swipe_forever = 1; - }; - - general = { - "$modifier" = "SUPER"; - layout = "dwindle"; - gaps_in = 6; - gaps_out = 8; - border_size = 2; - resize_on_border = true; - }; - - misc = { - layers_hog_keyboard_focus = true; - initial_workspace_tracking = 0; - mouse_move_enables_dpms = true; - key_press_enables_dpms = false; - disable_hyprland_logo = true; - disable_splash_rendering = true; - enable_swallow = false; - vfr = true; # Variable Frame Rate - vrr = 2; #Variable Refresh Rate Might need to set to 0 for NVIDIA/AQ_DRM_DEVICES - # Screen flashing to black momentarily or going black when app is fullscreen - # Try setting vrr to 0 - - # Application not responding (ANR) settings - enable_anr_dialog = true; - anr_missed_pings = 15; - }; - - dwindle = { - pseudotile = true; - preserve_split = true; - force_split = 2; - }; - - decoration = { - rounding = 10; - blur = { - enabled = true; - size = 5; - passes = 3; - ignore_opacity = false; - new_optimizations = true; - }; - shadow = { - enabled = true; - range = 4; - render_power = 3; - color = "rgba(1a1a1aee)"; - }; - }; - - ecosystem = { - no_donation_nag = true; - no_update_news = false; - }; - - cursor = { - sync_gsettings_theme = true; - no_hardware_cursors = 2; # change to 1 if want to disable - enable_hyprcursor = false; - warp_on_change_workspace = 2; - no_warps = true; - }; - - render = { - # Disabling as no longer supported - #explicit_sync = 1; # Change to 1 to disable - #explicit_sync_kms = 1; - direct_scanout = 0; - }; - - master = { - new_status = "master"; - new_on_top = 1; - mfact = 0.5; - }; - - # Ensure Xwayland windows render at integer scale; compositor scales them - xwayland = { - force_zero_scaling = true; - }; - }; - }; -} diff --git a/shared/tmux.nix b/shared/tmux.nix index 1360981..f815da0 100644 --- a/shared/tmux.nix +++ b/shared/tmux.nix @@ -12,12 +12,12 @@ tmuxPlugins.sensible tmuxPlugins.pain-control tmuxPlugins.sessionist - { - plugin = fw-pkgs.tmuxPlugins.minimal; - extraConfig = '' - bind-key b set-option status - ''; - } + # { + # plugin = pkgs.fw-pkgs.tmuxPlugins.minimal; + # extraConfig = '' + # bind-key b set-option status + # ''; + # } ]; extraConfig = ''