diff options
43 files changed, 1721 insertions, 0 deletions
diff --git a/disko.nix b/disko.nix new file mode 100644 index 0000000..6046c50 --- /dev/null +++ b/disko.nix @@ -0,0 +1,41 @@ +{ + disko.devices = { + disk = { + my-disk = { + device = "/dev/sdb"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + ESP = { + type = "EF00"; + size = "256M"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + + swap = { + size = "8G"; + content = { + type = "swap"; + resumeDevice = true; + }; + }; + + root = { + size = "100%"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..8d18527 --- /dev/null +++ b/flake.lock @@ -0,0 +1,323 @@ +{ + "nodes": { + "devshell": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1711099426, + "narHash": "sha256-HzpgM/wc3aqpnHJJ2oDqPBkNsqWbW0WfWUO8lKu8nGk=", + "owner": "numtide", + "repo": "devshell", + "rev": "2d45b54ca4a183f2fdcf4b19c895b64fbf620ee8", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "flake-compat": { + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "nixvim", + "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" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1713294767, + "narHash": "sha256-LmaabaQZdx52MPGKPRt9Opoc9Gd9RbwvCdysUUYQoXI=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "fa8c16e2452bf092ac76f09ee1fb1e9f7d0796e7", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712989663, + "narHash": "sha256-r2X/DIAyKOLiHoncjcxUk1TENWDTTaigRBaY53Cts/w=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "40ab43ae98cb3e6f07eaeaa3f3ed56d589da21b0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1711763326, + "narHash": "sha256-sXcesZWKXFlEQ8oyGHnfk4xc9f2Ip0X/+YZOq3sKviI=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "36524adc31566655f2f4d55ad6b875fb5c1a4083", + "type": "github" + }, + "original": { + "owner": "lnl7", + "repo": "nix-darwin", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1713248628, + "narHash": "sha256-NLznXB5AOnniUtZsyy/aPWOk8ussTuePp2acb9U+ISA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "5672bc9dbf9d88246ddab5ac454e82318d094bb8", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1713145326, + "narHash": "sha256-m7+IWM6mkWOg22EC5kRUFCycXsXLSU7hWmHdmBfmC3s=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "53a2c32bc66f5ae41a28d7a9a49d321172af621e", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "devshell": "devshell", + "flake-compat": "flake-compat", + "flake-parts": "flake-parts", + "home-manager": "home-manager_2", + "nix-darwin": "nix-darwin", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1713294906, + "narHash": "sha256-xJJZdCBzVFpVppaYyUK4lTTNOnbAxrjhodoJL3Oi91E=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "514a51877df9fe41ffc38c5237e3c4e5327e7607", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "gitignore": "gitignore", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ], + "nixpkgs-stable": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712897695, + "narHash": "sha256-nMirxrGteNAl9sWiOhoN5tIHyjBbVi5e2tgZUgZlK3Y=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "40e6053ecb65fcbf12863338a6dcefb3f55f1bf8", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "nixpkgs-stable": "nixpkgs-stable", + "nixvim": "nixvim" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..70c1df0 --- /dev/null +++ b/flake.nix @@ -0,0 +1,46 @@ +{ + description = "My system configuration"; + + inputs = { + + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11"; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nixvim = { + url = "github:nix-community/nixvim"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { self, nixpkgs, nixpkgs-stable, home-manager, ... }@inputs: + + let + system = "x86_64-linux"; + in { + + # nixos - system hostname + nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { + specialArgs = { + pkgs-stable = import nixpkgs-stable { + inherit system; + config.allowUnfree = true; + }; + inherit inputs system; + }; + modules = [ + ./nixos/configuration.nix + inputs.nixvim.nixosModules.nixvim + ]; + }; + + homeConfigurations.amper = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.${system}; + modules = [ ./home-manager/home.nix ]; + }; + }; +} diff --git a/home-manager/home.nix b/home-manager/home.nix new file mode 100644 index 0000000..e2ea67f --- /dev/null +++ b/home-manager/home.nix @@ -0,0 +1,13 @@ +{ + + imports = [ + ./zsh.nix + ./modules/bundle.nix + ]; + + home = { + username = "amper"; + homeDirectory = "/home/amper"; + stateVersion = "23.11"; + }; +} diff --git a/home-manager/modules/alacritty.nix b/home-manager/modules/alacritty.nix new file mode 100644 index 0000000..4b986c6 --- /dev/null +++ b/home-manager/modules/alacritty.nix @@ -0,0 +1,19 @@ +{ + programs.alacritty = { + enable = true; + settings = { + window.opacity = 0.95; + + font = { + size = 13.0; + # draw_bold_text_with_bright_colors = true; + normal = { + family = "JetBrains Mono"; + style = "Bold"; + }; + }; + + colors.primary.background = "#1d2021"; + }; + }; +} diff --git a/home-manager/modules/bundle.nix b/home-manager/modules/bundle.nix new file mode 100644 index 0000000..3f58742 --- /dev/null +++ b/home-manager/modules/bundle.nix @@ -0,0 +1,12 @@ +{ + imports = [ + ./cursor.nix + ./git.nix + ./htop.nix + ./alacritty.nix + ./qt.nix + + ./wms/hyprland.nix + ./wms/waybar.nix + ]; +} diff --git a/home-manager/modules/cursor.nix b/home-manager/modules/cursor.nix new file mode 100644 index 0000000..85bea31 --- /dev/null +++ b/home-manager/modules/cursor.nix @@ -0,0 +1,14 @@ +{ pkgs, ... }: { + home = { + pointerCursor = { + package = pkgs.vanilla-dmz; + name = "Vanilla-DMZ"; + size = 36; + gtk.enable = true; + x11 = { + enable = true; + defaultCursor = true; + }; + }; + }; +} diff --git a/home-manager/modules/git.nix b/home-manager/modules/git.nix new file mode 100644 index 0000000..c3dbae7 --- /dev/null +++ b/home-manager/modules/git.nix @@ -0,0 +1,7 @@ +{ + programs.git = { + enable = true; + userName = "Andrey0189"; + userEmail = "varnavsky06@gmail.com"; + }; +} diff --git a/home-manager/modules/htop.nix b/home-manager/modules/htop.nix new file mode 100644 index 0000000..a781214 --- /dev/null +++ b/home-manager/modules/htop.nix @@ -0,0 +1,8 @@ +{ + programs.htop = { + enable = true; + settings = { + tree_view = 1; + }; + }; +} diff --git a/home-manager/modules/qt.nix b/home-manager/modules/qt.nix new file mode 100644 index 0000000..795b2d3 --- /dev/null +++ b/home-manager/modules/qt.nix @@ -0,0 +1,16 @@ +{ + qt = { + enable = true; + platformTheme = "qtct"; + style.name = "kvantum"; + }; + + # xdg.configFile = { + # "Kvantum/kvantum.kvconfig".text = '' + # [General] + # theme=GraphiteNordDark + # ''; + # + # "Kvantum/GraphiteNord".source = "${pkgs.graphite-kde-theme}/share/Kvantum/GraphiteNord"; + # }; +} diff --git a/home-manager/modules/wms/hyprland.nix b/home-manager/modules/wms/hyprland.nix new file mode 100644 index 0000000..9f52da2 --- /dev/null +++ b/home-manager/modules/wms/hyprland.nix @@ -0,0 +1,210 @@ +{ + wayland.windowManager.hyprland = { + enable = true; + xwayland.enable = true; + + settings = { + "$mainMod" = "SUPER"; + + monitor = ",preferred,auto,1"; + + env = [ + "XDG_CURRENT_DESKTOP,Hyprland" + "XDG_SESSION_TYPE,wayland" + "XDG_SESSION_DESKTOP,Hyprland" + "XCURSOR_SIZE,36" + "QT_QPA_PLATFORM,wayland" + "XDG_SCREENSHOTS_DIR,~/screens" + ]; + + debug = { + disable_logs = false; + enable_stdout_logs = true; + }; + + input = { + kb_layout = "us,ru"; + kb_variant = "lang"; + kb_options = "grp:caps_toggle"; + + follow_mouse = 1; + + touchpad = { + natural_scroll = false; + }; + + sensitivity = 0; # -1.0 - 1.0, 0 means no modification. + }; + + general = { + gaps_in = 5; + gaps_out = 20; + border_size = 3; + "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; + "col.inactive_border" = "rgba(595959aa)"; + + layout = "dwindle"; + + no_cursor_warps = false; + }; + + decoration = { + rounding = 10; + + blur = { + enabled = true; + size = 16; + passes = 2; + new_optimizations = true; + }; + + drop_shadow = true; + shadow_range = 4; + shadow_render_power = 3; + "col.shadow" = "rgba(1a1a1aee)"; + }; + + animations = { + enabled = true; + + bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; + # bezier = "myBezier, 0.33, 0.82, 0.9, -0.08"; + + animation = [ + "windows, 1, 7, myBezier" + "windowsOut, 1, 7, default, popin 80%" + "border, 1, 10, default" + "borderangle, 1, 8, default" + "fade, 1, 7, default" + "workspaces, 1, 6, default" + ]; + }; + + dwindle = { + pseudotile = true; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true; # you probably want this + }; + + master = { + new_is_master = true; + }; + + gestures = { + workspace_swipe = true; + workspace_swipe_fingers = 3; + workspace_swipe_invert = false; + workspace_swipe_distance = 200; + }; + + misc = { + animate_manual_resizes = true; + animate_mouse_windowdragging = true; + enable_swallow = true; + render_ahead_of_time = false; + disable_hyprland_logo = true; + }; + + windowrule = [ + "float, ^(imv)$" + "float, ^(mpv)$" + ]; + + exec-once = [ + "swww init" + "swww img ~/Downloads/nixos-chan.png" + "waybar" + "wl-paste --type text --watch cliphist store" + "wl-paste --type image --watch cliphist store" + ]; + + bind = [ + "$mainMod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy" + + "$mainMod, Return, exec, alacritty" + "$mainMod, Q, killactive," + "$mainMod, M, exit," + "$mainMod, E, exec, dolphin" + "$mainMod, F, togglefloating," + "$mainMod, D, exec, wofi --show drun" + "$mainMod, P, pseudo, # dwindle" + "$mainMod, J, togglesplit, # dwindle" + + # Move focus with mainMod + arrow keys + "$mainMod, left, movefocus, l" + "$mainMod, right, movefocus, r" + "$mainMod, up, movefocus, u" + "$mainMod, down, movefocus, d" + + # Moving windows + "$mainMod SHIFT, left, swapwindow, l" + "$mainMod SHIFT, right, swapwindow, r" + "$mainMod SHIFT, up, swapwindow, u" + "$mainMod SHIFT, down, swapwindow, d" + + # Window resizing X Y + "$mainMod CTRL, left, resizeactive, -60 0" + "$mainMod CTRL, right, resizeactive, 60 0" + "$mainMod CTRL, up, resizeactive, 0 -60" + "$mainMod CTRL, down, resizeactive, 0 60" + + # Switch workspaces with mainMod + [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 active window to a workspace with mainMod + SHIFT + [0-9] + "$mainMod SHIFT, 1, movetoworkspacesilent, 1" + "$mainMod SHIFT, 2, movetoworkspacesilent, 2" + "$mainMod SHIFT, 3, movetoworkspacesilent, 3" + "$mainMod SHIFT, 4, movetoworkspacesilent, 4" + "$mainMod SHIFT, 5, movetoworkspacesilent, 5" + "$mainMod SHIFT, 6, movetoworkspacesilent, 6" + "$mainMod SHIFT, 7, movetoworkspacesilent, 7" + "$mainMod SHIFT, 8, movetoworkspacesilent, 8" + "$mainMod SHIFT, 9, movetoworkspacesilent, 9" + "$mainMod SHIFT, 0, movetoworkspacesilent, 10" + + # Scroll through existing workspaces with mainMod + scroll + "$mainMod, mouse_down, workspace, e+1" + "$mainMod, mouse_up, workspace, e-1" + + # Keyboard backlight + "$mainMod, F3, exec, brightnessctl -d *::kbd_backlight set +33%" + "$mainMod, F2, exec, brightnessctl -d *::kbd_backlight set 33%-" + + # Volume and Media Control + ", XF86AudioRaiseVolume, exec, pamixer -i 5 " + ", XF86AudioLowerVolume, exec, pamixer -d 5 " + ", XF86AudioMute, exec, pamixer -t" + ", XF86AudioMicMute, exec, pamixer --default-source -m" + + # Configuration files + ''$mainMod SHIFT, N, exec, alacritty -e sh -c "rb"'' + ''$mainMod SHIFT, C, exec, alacritty -e sh -c "conf"'' + ''$mainMod SHIFT, H, exec, alacritty -e sh -c "nvim ~/nix/home-manager/modules/wms/hyprland.nix"'' + ''$mainMod SHIFT, W, exec, alacritty -e sh -c "nvim ~/nix/home-manager/modules/wms/waybar.nix'' + '', Print, exec, grim -g "$(slurp)" - | swappy -f -'' + + # Waybar + "$mainMod, B, exec, pkill -SIGUSR1 waybar" + "$mainMod, W, exec, pkill -SIGUSR2 waybar" + + # Disable all effects + "$mainMod Shift, G, exec, ~/.config/hypr/gamemode.sh " + ]; + + # Move/resize windows with mainMod + LMB/RMB and dragging + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + }; + }; +} diff --git a/home-manager/modules/wms/waybar.nix b/home-manager/modules/wms/waybar.nix new file mode 100644 index 0000000..34e8e43 --- /dev/null +++ b/home-manager/modules/wms/waybar.nix @@ -0,0 +1,345 @@ +{ + programs.waybar = { + enable = true; + settings = { + mainBar = { + layer = "top"; + position = "top"; + margin = "9 13 -10 18"; + + modules-left = ["hyprland/workspaces" "hyprland/language" "keyboard-state" "hyprland/submap"]; + modules-center = ["clock" "custom/weather"]; + modules-right = ["pulseaudio" "custom/mem" "cpu" "backlight" "battery" "tray"]; + + "hyprland/workspaces" = { + disable-scroll = true; + }; + + "hyprland/language" = { + format-en = "US"; + format-ru = "RU"; + min-length = 5; + tooltip = false; + }; + + "keyboard-state" = { + #numlock = true; + capslock = true; + format = "{icon} "; + format-icons = { + locked = " "; + unlocked = ""; + }; + }; + + "clock" = { + # timezone = "America/New_York"; + tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"; + format = "{:%a; %d %b, %I:%M %p}"; + }; + + "custom/weather" = { + format = "{}"; + tooltip = true; + interval = 1800; + exec = "$HOME/.config/waybar/scripts/wttr.py"; + return-type = "json"; + }; + + "pulseaudio" = { + # scroll-step = 1; # %, can be a float + reverse-scrolling = 1; + format = "{volume}% {icon} {format_source}"; + format-bluetooth = "{volume}% {icon} {format_source}"; + format-bluetooth-muted = " {icon} {format_source}"; + format-muted = " {format_source}"; + format-source = "{volume}% "; + format-source-muted = ""; + format-icons = { + headphone = ""; + hands-free = ""; + headset = ""; + phone = ""; + portable = ""; + |