diff --git a/flake.lock b/flake.lock index 09fe6c1..00ecc7b 100644 --- a/flake.lock +++ b/flake.lock @@ -105,11 +105,11 @@ ] }, "locked": { - "lastModified": 1718243258, - "narHash": "sha256-abBpj2VU8p6qlRzTU8o22q68MmOaZ4v8zZ4UlYl5YRU=", + "lastModified": 1718788307, + "narHash": "sha256-SqiOz0sljM0GjyQEVinPXQxaGcbOXw5OgpCWGPgh/vo=", "owner": "nix-community", "repo": "home-manager", - "rev": "8d5e27b4807d25308dfe369d5a923d87e7dbfda3", + "rev": "d7830d05421d0ced83a0f007900898bdcaf2a2ca", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1718265846, - "narHash": "sha256-h4MnTID6ciFxtTvtl+ibXMKaG6iLMezCtUvKIfFG7r0=", + "lastModified": 1718894893, + "narHash": "sha256-hxQBUtDbFOCCW1CsFZTS9Q5Ov1ZKdJgbBZHSez1M6iA=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "d75003136c0fc94ee60e51806c2801ff572d06a6", + "rev": "083823b7904e43a4fc1c7229781417e875359a42", "type": "github" }, "original": { @@ -162,11 +162,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1718160348, - "narHash": "sha256-9YrUjdztqi4Gz8n3mBuqvCkMo4ojrA6nASwyIKWMpus=", + "lastModified": 1718895438, + "narHash": "sha256-k3JqJrkdoYwE3fHE6xGDY676AYmyh4U2Zw+0Bwe5DLU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "57d6973abba7ea108bac64ae7629e7431e0199b6", + "rev": "d603719ec6e294f034936c0d0dc06f689d91b6c3", "type": "github" }, "original": { diff --git a/home/editor.nix b/home/editor.nix index da6335b..d2f73dc 100644 --- a/home/editor.nix +++ b/home/editor.nix @@ -15,47 +15,157 @@ }; languages = { language-server = { - gopls = { config."formatting.gofumpt" = true; }; + gopls = { + config."formatting.gofumpt" = true; + }; + nil = { + config."nil.nix.flake.autoEvalInputs" = true; + }; }; language = [ - { name = "bash"; auto-format = true; formatter = { command = "${pkgs.shfmt}/bin/shfmt"; }; } - { name = "css"; formatter = { command = "${pkgs.nodePackages.prettier}/bin/prettier"; args = [ "--parser" "css" ]; }; } - { name = "html"; formatter = { command = "${pkgs.nodePackages.prettier}/bin/prettier"; args = [ "--parser" "html" ]; }; } - { name = "javascript"; auto-format = true; formatter = { command = "${pkgs.nodePackages.prettier}/bin/prettier"; args = [ "--parser" "typescript" ]; }; } - { name = "json"; formatter = { command = "${pkgs.nodePackages.prettier}/bin/prettier"; args = [ "--parser" "json" ]; }; } - { name = "markdown"; auto-format = true; formatter = { command = "${pkgs.nodePackages.prettier}/bin/prettier"; args = [ "--parser" "markdown" ]; }; } - { name = "nix"; auto-format = true; formatter = { command = "${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt"; }; } - { name = "python"; auto-format = true; formatter = { command = "${pkgs.black}/bin/black"; args = [ "--quiet" "-" ]; }; } - { name = "svelte"; auto-format = true; formatter = { command = "${pkgs.nodePackages.prettier}/bin/prettier"; args = [ "--parser" "svelte" ]; }; } - { name = "typescript"; auto-format = true; formatter = { command = "${pkgs.nodePackages.prettier}/bin/prettier"; args = [ "--parser" "typescript" ]; }; } - { name = "yaml"; auto-format = true; formatter = { command = "${pkgs.nodePackages.prettier}/bin/prettier"; args = [ "--parser" "yaml" ]; }; } + { + name = "bash"; + auto-format = true; + formatter = { + command = "shfmt"; + }; + } + { + name = "css"; + formatter = { + command = "prettier"; + args = [ + "--parser" + "css" + ]; + }; + } + { + name = "html"; + formatter = { + command = "prettier"; + args = [ + "--parser" + "html" + ]; + }; + } + { + name = "javascript"; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "typescript" + ]; + }; + } + { + name = "json"; + formatter = { + command = "prettier"; + args = [ + "--parser" + "json" + ]; + }; + } + { + name = "markdown"; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "markdown" + ]; + }; + } + { + name = "nix"; + auto-format = true; + formatter = { + command = "nix"; + args = [ + "fmt" + "--" + "-" + ]; + }; + } + { + name = "python"; + auto-format = true; + formatter = { + command = "black"; + args = [ + "--quiet" + "-" + ]; + }; + } + { + name = "svelte"; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "svelte" + ]; + }; + } + { + name = "typescript"; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "typescript" + ]; + }; + } + { + name = "yaml"; + auto-format = true; + formatter = { + command = "prettier"; + args = [ + "--parser" + "yaml" + ]; + }; + } ]; }; - }; - - home.packages = with pkgs; [ - # Language servers - docker-compose-language-service - gopls - golangci-lint-langserver - marksman - nil - nodePackages.bash-language-server - nodePackages.dockerfile-language-server-nodejs - nodePackages.svelte-language-server - nodePackages.typescript-language-server - nodePackages.yaml-language-server - python311Packages.python-lsp-server - rust-analyzer - terraform-ls - vscode-langservers-extracted + extraPackages = with pkgs; [ + # Language servers + docker-compose-language-service + gopls + golangci-lint-langserver + marksman + nil + nodePackages.bash-language-server + nodePackages.dockerfile-language-server-nodejs + nodePackages.svelte-language-server + nodePackages.typescript-language-server + nodePackages.yaml-language-server + python311Packages.python-lsp-server + rust-analyzer + terraform-ls + vscode-langservers-extracted - # Debuggers - delve - lldb + # Debuggers + delve + lldb - # Formatters - nodePackages.prettier - rustfmt - ]; + # Formatters + nodePackages.prettier + rustfmt + black + shfmt + ]; + }; } diff --git a/home/window-manager.nix b/home/window-manager.nix index 844e9f2..4b9cd7f 100644 --- a/home/window-manager.nix +++ b/home/window-manager.nix @@ -10,19 +10,18 @@ enable = true; settings = { "$mod" = "SUPER"; - "$wallpaper" = "${config.xdg.dataHome}/wallpapers/bespinian.png"; "$launcherCmd" = "${pkgs.fuzzel}/bin/fuzzel --prompt '󱉺 '"; general = { border_size = 2; gaps_in = 0; gaps_out = 0; "col.active_border" = "rgb(bb9af7)"; - "cursor_inactive_timeout" = 8; }; input = { kb_options = "caps:escape,compose:ralt"; touchpad.natural_scroll = true; }; + cursor.inactive_timeout = 8; gestures = { workspace_swipe = true; workspace_swipe_min_speed_to_force = 5; @@ -39,7 +38,6 @@ monitor = "eDP-1,preferred,auto,1.5"; exec-once = [ "${pkgs.waybar}/bin/waybar" - "${pkgs.swaybg}/bin/swaybg --image $wallpaper --mode fill" ]; bind = [ # Window manager @@ -55,8 +53,8 @@ "$mod, W, exec, ${pkgs.brave}/bin/brave" "$mod, C, exec, ${pkgs.cliphist}/bin/cliphist list | ${pkgs.fuzzel}/bin/fuzzel --dmenu --prompt '󰆏 ' | ${pkgs.cliphist}/bin/cliphist decode | ${pkgs.wl-clipboard}/bin/wl-copy" "$mod, E, exec, ${pkgs.bemoji}/bin/bemoji -n" - "$mod, P, exec, ${pkgs.hyprpicker}/bin/hyprpicker" - "SUPER_CTRL, Q, exec, ${pkgs.swaylock}/bin/swaylock --daemonize" + "$mod, P, exec, ${pkgs.hyprpicker}/bin/hyprpicker --autocopy" + "SUPER_CTRL, Q, exec, ${pkgs.systemd}/bin/loginctl lock-session" # Media keys ", XF86AudioRaiseVolume, exec, ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" @@ -336,28 +334,59 @@ }; }; - # Lock screen manager - swaylock = { + # Screen lock + hyprlock = { enable = true; settings = { - image = "${config.xdg.dataHome}/wallpapers/bespinian.png"; + general = { + hide_cursor = true; + }; + background = [ + { + path = "${config.xdg.dataHome}/wallpapers/bespinian.png"; + blur_passes = 3; + } + ]; + input-field = [ + { + font_color = "rgb(c0caf5)"; + inner_color = "rgb(1a1b26)"; + outer_color = "rgb(1a1b26)"; + check_color = "rgb(e0af68)"; + fail_color = "rgb(f7768e)"; + } + ]; }; }; }; services = { + # Background image + hyprpaper = { + enable = true; + settings = { + preload = [ "${config.xdg.dataHome}/wallpapers/bespinian.png" ]; + wallpaper = [ ",${config.xdg.dataHome}/wallpapers/bespinian.png" ]; + splash = false; + ipc = false; + }; + }; + # Idle manager - swayidle = { + hypridle = { enable = true; - timeouts = [ - { timeout = 600; command = "${pkgs.swaylock}/bin/swaylock --daemonize"; } - { timeout = 900; command = "${pkgs.hyprland}/bin/hyprctl dispatch dpms off"; resumeCommand = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on"; } - { timeout = 1200; command = "${pkgs.systemd}/bin/systemctl suspend"; } - ]; - events = [ - { event = "before-sleep"; command = "${pkgs.swaylock}/bin/swaylock --daemonize"; } - { event = "lock"; command = "${pkgs.swaylock}/bin/swaylock --daemonize"; } - ]; + settings = { + general = { + lock_cmd = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock"; + before_sleep_cmd = "${pkgs.systemd}/bin/loginctl lock-session"; + after_sleep_cmd = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on"; + }; + listener = [ + { timeout = 600; on-timeout = "${pkgs.systemd}/bin/loginctl lock-session"; } + { timeout = 900; on-timeout = "${pkgs.hyprland}/bin/hyprctl dispatch dpms off"; on-resume = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on"; } + { timeout = 1200; on-timeout = "${pkgs.systemd}/bin/systemctl suspend"; } + ]; + }; }; # Clipboard manager diff --git a/system/default.nix b/system/default.nix index 1a082a8..b436176 100644 --- a/system/default.nix +++ b/system/default.nix @@ -31,9 +31,6 @@ # AppArmor security.apparmor.enable = true; - # Temporary fix for Swaylock issue - security.pam.services.swaylock = { }; - # Containers virtualisation.podman.enable = true;