diff options
Diffstat (limited to 'share')
| -rw-r--r-- | share/cfg/default.nix | 17 | ||||
| -rw-r--r-- | share/cfg/firefox/default.nix (renamed from share/home/firefox/default.nix) | 1 | ||||
| -rw-r--r-- | share/cfg/firefox/usercss/compact-about-config.css (renamed from share/home/firefox/usercss/compact-about-config.css) | 0 | ||||
| -rw-r--r-- | share/cfg/firefox/usercss/context-menu.css (renamed from share/home/firefox/usercss/context-menu.css) | 0 | ||||
| -rw-r--r-- | share/cfg/firefox/usercss/tab-separator-lines.css (renamed from share/home/firefox/usercss/tab-separator-lines.css) | 0 | ||||
| -rw-r--r-- | share/cfg/firefox/usercss/unified-extensions-view.css (renamed from share/home/firefox/usercss/unified-extensions-view.css) | 0 | ||||
| -rw-r--r-- | share/cfg/fish.nix (renamed from share/home/fish.nix) | 4 | ||||
| -rw-r--r-- | share/cfg/gallery-dl.nix (renamed from share/home/gallery-dl.nix) | 1 | ||||
| -rw-r--r-- | share/cfg/git.nix (renamed from share/home/git.nix) | 1 | ||||
| -rw-r--r-- | share/cfg/helix.nix (renamed from share/home/helix.nix) | 5 | ||||
| -rw-r--r-- | share/cfg/kitty.nix (renamed from share/home/kitty.nix) | 1 | ||||
| -rw-r--r-- | share/cfg/mpv.nix (renamed from share/home/mpv.nix) | 11 | ||||
| -rw-r--r-- | share/cfg/shellenv.nix (renamed from share/home/shellenv.nix) | 5 | ||||
| -rw-r--r-- | share/cfg/tofi.nix (renamed from share/home/tofi.nix) | 1 | ||||
| -rw-r--r-- | share/cfg/waybar.css (renamed from share/home/waybar.css) | 0 | ||||
| -rw-r--r-- | share/cfg/waybar.nix | 50 | ||||
| -rw-r--r-- | share/cfg/wpaperd.nix (renamed from share/home/wpaperd.nix) | 1 | ||||
| -rw-r--r-- | share/hm-modules/default.nix | 7 | ||||
| -rw-r--r-- | share/hm-modules/hyprdesktop.nix | 189 | ||||
| -rw-r--r-- | share/home/hyprdesktop.nix | 224 | ||||
| -rw-r--r-- | share/home/offpunk.nix | 24 | ||||
| -rw-r--r-- | share/home/waybar.nix | 51 | ||||
| -rw-r--r-- | share/home/zsh.nix | 16 |
23 files changed, 265 insertions, 344 deletions
diff --git a/share/cfg/default.nix b/share/cfg/default.nix new file mode 100644 index 0000000..1415377 --- /dev/null +++ b/share/cfg/default.nix @@ -0,0 +1,17 @@ +{ ... }: { + imports = [ + ../hm-modules + + ./wpaperd.nix + ./tofi.nix + ./waybar.nix + ./git.nix + ./mpv.nix + ./kitty.nix + ./firefox + ./helix.nix + ./gallery-dl.nix + ./fish.nix + ./shellenv.nix + ]; +} diff --git a/share/home/firefox/default.nix b/share/cfg/firefox/default.nix index f47f955..07281ec 100644 --- a/share/home/firefox/default.nix +++ b/share/cfg/firefox/default.nix @@ -9,7 +9,6 @@ in home.sessionVariables.BROWSER = "firefox"; programs.firefox = { - enable = true; profiles = { alice = { name = "alice"; diff --git a/share/home/firefox/usercss/compact-about-config.css b/share/cfg/firefox/usercss/compact-about-config.css index 55e30f7..55e30f7 100644 --- a/share/home/firefox/usercss/compact-about-config.css +++ b/share/cfg/firefox/usercss/compact-about-config.css diff --git a/share/home/firefox/usercss/context-menu.css b/share/cfg/firefox/usercss/context-menu.css index 0bf5749..0bf5749 100644 --- a/share/home/firefox/usercss/context-menu.css +++ b/share/cfg/firefox/usercss/context-menu.css diff --git a/share/home/firefox/usercss/tab-separator-lines.css b/share/cfg/firefox/usercss/tab-separator-lines.css index 2f77db4..2f77db4 100644 --- a/share/home/firefox/usercss/tab-separator-lines.css +++ b/share/cfg/firefox/usercss/tab-separator-lines.css diff --git a/share/home/firefox/usercss/unified-extensions-view.css b/share/cfg/firefox/usercss/unified-extensions-view.css index 876a7d0..876a7d0 100644 --- a/share/home/firefox/usercss/unified-extensions-view.css +++ b/share/cfg/firefox/usercss/unified-extensions-view.css diff --git a/share/home/fish.nix b/share/cfg/fish.nix index 8d499a3..d697942 100644 --- a/share/home/fish.nix +++ b/share/cfg/fish.nix @@ -1,10 +1,6 @@ { ... }: { imports = [ ./shellenv.nix ]; - programs.fish = { - enable = true; - }; - programs.starship.enableFishIntegration = true; programs.atuin.enableFishIntegration = true; programs.nix-index.enableFishIntegration = true; diff --git a/share/home/gallery-dl.nix b/share/cfg/gallery-dl.nix index 9231208..320061b 100644 --- a/share/home/gallery-dl.nix +++ b/share/cfg/gallery-dl.nix @@ -1,6 +1,5 @@ { config, ... }: { programs.gallery-dl = { - enable = true; settings.extractor = { base-directory = "${config.xdg.userDirs.download}/gallery-dl"; diff --git a/share/home/git.nix b/share/cfg/git.nix index 98cafa2..67170a0 100644 --- a/share/home/git.nix +++ b/share/cfg/git.nix @@ -1,6 +1,5 @@ { ... }: { programs.git = { - enable = true; userEmail = "miran.bastaja04@gmail.com"; userName = "Miran Bastaja"; signing = { diff --git a/share/home/helix.nix b/share/cfg/helix.nix index d557d7d..55b6f76 100644 --- a/share/home/helix.nix +++ b/share/cfg/helix.nix @@ -1,13 +1,10 @@ { pkgs, ... }: { programs.helix = { - enable = true; - defaultEditor = true; - extraPackages = with pkgs; [ rust-analyzer rustfmt nil - nixfmt + nixfmt-rfc-style python311Packages.python-lsp-server clang-tools black diff --git a/share/home/kitty.nix b/share/cfg/kitty.nix index 3cdc18b..efe01e0 100644 --- a/share/home/kitty.nix +++ b/share/cfg/kitty.nix @@ -1,6 +1,5 @@ { pkgs, ... }: { programs.kitty = { - enable = true; theme = "Mayukai"; font = { diff --git a/share/home/mpv.nix b/share/cfg/mpv.nix index 077f7e6..427ed33 100644 --- a/share/home/mpv.nix +++ b/share/cfg/mpv.nix @@ -1,14 +1,7 @@ -{ config, pkgs, ... }: { +{ config, ... }: { programs.mpv = { - enable = true; - package = pkgs.wrapMpv - (pkgs.mpv-unwrapped.override { - ffmpeg = pkgs.ffmpeg_5-full; - }) - { youtubeSupport = true; }; config = { - screenshot-format = "avif"; - # The format is '<Filename without extension> [<screenshot number>].avif' + # The format is '<Filename without extension> [<screenshot number>].<ext>' # Read more about it at: https://mpv.io/manual/master/#screenshot screenshot-template = "%F [%n]"; screenshot-directory = "${config.xdg.userDirs.pictures}/Screenshots/mpv"; diff --git a/share/home/shellenv.nix b/share/cfg/shellenv.nix index a7853f8..16b28ac 100644 --- a/share/home/shellenv.nix +++ b/share/cfg/shellenv.nix @@ -4,13 +4,11 @@ ltgi = "ltg --git-ignore"; }; programs.eza = { - enable = true; icons = true; extraOptions = [ "--header" "--group-directories-first" "--long" ]; }; programs.starship = { - enable = true; # settings = let # lightblue-bg = "bg:#769ff0"; # lightblue-fg = "fg:#e3e5e5"; @@ -47,7 +45,4 @@ # }; # }; # end of settings }; # end of programs.starship - - programs.atuin.enable = true; - programs.nix-index.enable = true; } diff --git a/share/home/tofi.nix b/share/cfg/tofi.nix index b0a7a89..e4f2ff9 100644 --- a/share/home/tofi.nix +++ b/share/cfg/tofi.nix @@ -14,7 +14,6 @@ }; programs.tofi = { - enable = true; settings = { anchor = "top"; width = "100%"; diff --git a/share/home/waybar.css b/share/cfg/waybar.css index c2213cb..c2213cb 100644 --- a/share/home/waybar.css +++ b/share/cfg/waybar.css diff --git a/share/cfg/waybar.nix b/share/cfg/waybar.nix new file mode 100644 index 0000000..9df08b2 --- /dev/null +++ b/share/cfg/waybar.nix @@ -0,0 +1,50 @@ +{ ... }: { + programs.waybar = { + systemd = { + enable = true; + target = "hyprland-session.target"; + }; + # settings.mainBar = { + # layer = "top"; + # position = "right"; + # width = 40; + # reload_style_on_change = true; + # + # modules-left = [ "hyprland/workspaces" ]; + # modules-right = [ + # "battery" + # "network" + # "cpu" + # "memory" + # "temperature" + # "backlight" + # "clock" + # "tray" + # ]; + # + # clock = { + # format = "{:%H:%m\n%b}"; + # }; + # + # battery = { + # format = lib.concatStringsSep "\n" [ + # "{icon} {capacity}%" + # " {power:4.1f} W" + # ]; + # interval = 2; + # format-icons = [ "" "" "" "" "" "" "" "" "" "" ]; + # }; + # + # keyboard-state = { + # numlock = true; + # capslock = true; + # format = "{name} {icon}"; + # format-icons = { + # locked = ""; + # unlocked = ""; + # }; + # }; + # }; # end of settings.mainBar + # style = builtins.readFile ./waybar.css; + }; +} diff --git a/share/home/wpaperd.nix b/share/cfg/wpaperd.nix index 447a9d2..f5e58b4 100644 --- a/share/home/wpaperd.nix +++ b/share/cfg/wpaperd.nix @@ -5,7 +5,6 @@ let wallpapers-dir = "${config.xdg.userDirs.pictures}/Wallpapers"; in { services.wpaperd = { - enable = true; settings.default = { path = wallpapers-dir; duration = "10m"; diff --git a/share/hm-modules/default.nix b/share/hm-modules/default.nix new file mode 100644 index 0000000..834d9ea --- /dev/null +++ b/share/hm-modules/default.nix @@ -0,0 +1,7 @@ +{ ... }: { + imports = [ + ./hyprdesktop.nix + ./tofi.nix + ./wpaperd.nix + ]; +} diff --git a/share/hm-modules/hyprdesktop.nix b/share/hm-modules/hyprdesktop.nix index ffcd441..1b6fe96 100644 --- a/share/hm-modules/hyprdesktop.nix +++ b/share/hm-modules/hyprdesktop.nix @@ -1 +1,188 @@ -{ } +{ config, pkgs, lib, ... }: +let + inherit (lib) mkIf mkOption mkEnableOption types mdDoc lists; + cfg = config.custom.hyprdesktop; +in +{ + imports = [ ../home/minimal.nix ]; + + options.custom.hyprdesktop = { + enable = mkEnableOption "Enable hyprdesktop"; + + mainUser = mkOption { + type = types.str; + example = "alice"; + description = mdDoc "Main superuser's username."; + }; + + hasBluetooth = mkOption { + type = types.bool; + default = false; + example = "true"; + }; + hasBrightnessCtl = mkOption { + type = types.bool; + default = false; + example = "true"; + }; + hasBattery = mkOption { + type = types.bool; + default = false; + example = "true"; + }; + + enableGaming = mkOption { + type = types.bool; + default = false; + example = "true"; + }; + enableWindowsCompat = mkOption { + type = types.bool; + default = false; + example = "true"; + }; + enableGitAnnex = mkOption { + type = types.bool; + default = true; + example = "false"; + }; + }; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + xh # Nice to use HTTP client + bc # CLI calculator + amfora # Gemini CLI browser + trashy # Trash CLI + tokei # counts lines of code + btop # modern top + wireplumber # session & policy manager for pipewire + grim # screenshot utility for wayland + slurp # region selection UI for wayland + wl-clipboard # clipboard utility + nushell # next-generation shell + ffmpeg + imagemagick + exiftool + sl + jaq # json query tool + mullvad + # tools for dealing with all sorts archives + atool + unzip + gnutar + unrar-wrapper + # Useful nix tooling + nix-tree + fzf + + # TUI/GUI programs + cmus # music player + calibre # Document organisation/reading program + libreoffice-qt + beekeeper-studio # SQL database client + thunderbird # email client + nsxiv # image viewer + discord + signal-desktop + tdesktop # Telegram desktop + fluffychat # matrix client + qbittorrent # bittorrent client + zathura # document reader + bitwarden # password manager + heroic # FOSS game launcher for GOG & Epic + foliate + + # Other + # It seems that not all gtk icon themes contain all icons? At least the + # Flat-Remix icon themes don't contain all the icons that Foliate uses, + # so I'm bringing in the adwaita icons as a fallback. + gnome3.adwaita-icon-theme + ] ++ lists.optionals cfg.hasBluetooth [ overskride ] + ++ lists.optionals cfg.enableGaming [ + jdk17_headless + superTuxKart + wineWowPackages.full + winetricks + ] + ++ lists.optionals (cfg.enableWindowsCompat || cfg.enableGaming) [ + wineWowPackages.full + winetricks + qemu_kvm + ] + ++ lists.optionals cfg.hasBrightnessCtl [ + brightnessctl + ] + ++ lists.optionals cfg.enableGitAnnex [ + git-annex + git-remote-gcrypt + ]; + + home.shellAliases = { + sl = "sl -awFc5"; + }; + + services.dunst.enable = true; + services.wpaperd.enable = true; + services.poweralertd.enable = cfg.hasBattery; + + programs.mpv.enable = true; + programs.git.enable = true; + programs.kitty.enable = true; + programs.waybar.enable = true; + programs.firefox.enable = true; + programs.tofi.enable = true; + + programs.gallery-dl.enable = true; + + programs.fish.enable = true; + programs.eza.enable = true; + programs.starship.enable = true; + programs.atuin.enable = true; + programs.nix-index.enable = true; + + programs.direnv = { + enable = true; + nix-direnv.enable = true; + }; + programs.helix = { + enable = true; + defaultEditor = true; + }; + + xdg = { + systemDirs.data = + let + gds = pkgs.gsettings-desktop-schemas; + gtk3 = pkgs.gtk3; + in + [ + "${gds}/share/gsettings-schemas/${gds.name}" + "${gtk3}/share/gsettings-schemas/${gtk3.name}" + ]; + userDirs = + let + annex = "${config.home.homeDirectory}/Annex"; + in + { + enable = true; + createDirectories = true; + } // mkIf cfg.enableGitAnnex { + pictures = "${annex}/Pictures"; + music = "${annex}/Music"; + documents = "${annex}/Documents"; + }; + }; + + gtk = { + theme = { + package = pkgs.flat-remix-gtk; + name = "Flat-Remix-GTK-Blue-Darkest"; + }; + iconTheme = { + package = pkgs.flat-remix-icon-theme; + name = "Flat-Remix-Blue-Dark"; + }; + }; + }; +} diff --git a/share/home/hyprdesktop.nix b/share/home/hyprdesktop.nix deleted file mode 100644 index 0adaf43..0000000 --- a/share/home/hyprdesktop.nix +++ /dev/null @@ -1,224 +0,0 @@ -# Module containing a bunch of things that make up a `desktop environment` built -# off of hyprland. I install this on all my desktop/laptop machines. -# IMPORTANT: this module requires the system to already have `programs.hyprland` -# enabled. -{ pkgs, config, ... }: { - imports = [ - # Custom home manager modules - ../hm-modules/wpaperd.nix - ../hm-modules/tofi.nix - - # Config - ./minimal.nix - ./wpaperd.nix - ./tofi.nix - ./waybar.nix - ./git.nix - ./mpv.nix - ./kitty.nix - ./offpunk.nix - ./firefox - ./helix.nix - ]; - - wayland.windowManager.hyprland = - let - programs = { - audio = { - increase = "wpctl set-volume @DEFAULT_AUDIO_SINK@ --limit 1.0 5%+"; - decrease = "wpctl set-volume @DEFAULT_AUDIO_SINK@ --limit 1.0 5%-"; - toggle-mute = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; - }; - screenshot = ''grim -g "$(slurp)" -t png - | wl-copy --type image/png''; - cmd = { - run = "tofi-run"; - drun = "tofi-drun"; - }; - brightness = { - increase = "brightnessctl set +5%"; - decrease = "brightnessctl set 5%-"; - }; - terminal = "kitty"; - }; - in - { - enable = true; - extraConfig = '' - $mod = SUPER - - bind = $mod SHIFT, Return, exec, ${programs.terminal} - - general { - layout = master - } - - master { - mfact = 0.5 - new_is_master = false - } - - # workspaces - # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} - ${builtins.concatStringsSep "\n" (builtins.genList (x: - let ws = let c = (x + 1) / 10; in builtins.toString (x + 1 - (c * 10)); - in '' - bind = $mod, ${ws}, workspace, ${toString (x + 1)} - bind = $mod SHIFT, ${ws}, movetoworkspacesilent, ${toString (x + 1)} - '') 10)} - - bind = $mod SHIFT, C, killactive - bind = $mod SHIFT, F, togglefloating - bind = $mod SHIFT, Q, exit - bind = $mod, P, exec, ${programs.cmd.drun} - bind = $mod SHIFT, P, exec, ${programs.cmd.run} - - bind = $mod, H, cyclenext, prev - bind = $mod, L, cyclenext - bind = $mod SHIFT, H, swapnext, prev - bind = $mod SHIFT, L, swapnext - - # audio control - binde =, XF86AudioRaiseVolume, exec, ${programs.audio.increase} - binde =, XF86AudioLowerVolume, exec, ${programs.audio.decrease} - bind =, XF86AudioMute, exec, ${programs.audio.toggle-mute} - - # monitor brightness control - binde =, XF86MonBrightnessUp, exec, ${programs.brightness.increase} - binde =, XF86MonBrightnessDown, exec, ${programs.brightness.decrease} - - # Screenshotting - # My stupid laptop outputs these three key codes when the PrtSc key is - # pressed instead of using just one code like any sane device would - bind = SUPER SHIFT, S, exec, ${programs.screenshot} - - input { - # focus change on cursor move - follow_mouse = 1 - accel_profile = flat - } - monitor=,preferred,auto,1 - - # set opacity to 0.9 active and 0.5 inactive for kitty - windowrule = opacity 0.9 override 0.5 override,^(kitty)$ - - # Move windows to their designated workspaces - windowrulev2 = workspace 3,class:(firefox) - windowrulev2 = workspace 4,class:(fluffychat) - windowrulev2 = workspace 4,class:(org.telegram.desktop) - windowrulev2 = workspace 4,class:(Signal) - windowrulev2 = workspace 5,class:(Bitwarden) - - # workaround for https://github.com/hyprwm/Hyprland/issues/2661 - windowrulev2 = stayfocused, title:^()$,class:^(steam)$ - windowrulev2 = minsize 1 1, title:^()$,class:^(steam)$ - - # No fade-in animation for the lanucher - layerrule = noanim, launcher - ''; - }; - - home.packages = with pkgs; [ - xh # Nice to use HTTP client - bc # CLI calculator - amfora # Gemini CLI browser - trashy # Trash CLI - tokei # counts lines of code - btop # modern top - brightnessctl - wineWowPackages.full - winetricks - qemu_kvm - wireplumber # session & policy manager for pipewire - grim # screenshot utility for wayland - slurp # region selection UI for wayland - wl-clipboard # clipboard utility - nushell # next-generation shell - ffmpeg - imagemagick - exiftool - sl - jaq # json query tool - git-annex - git-remote-gcrypt - # tools for dealing with all sorts archives - atool - unzip - gnutar - unrar-wrapper - # Useful nix tooling - nix-tree - fzf - - # TUI/GUI programs - cmus # music player - calibre # Document organisation/reading program - libreoffice-qt - beekeeper-studio # SQL database client - thunderbird # email client - nsxiv # image viewer - discord - signal-desktop - tdesktop # Telegram desktop - fluffychat # matrix client - qbittorrent # bittorrent client - zathura # document reader - bitwarden # password manager - heroic # FOSS game launcher for GOG & Epic - foliate - - # Gaming - jdk17_headless - superTuxKart - - # Other - # It seems that not all gtk icon themes contain all icons? At least the - # Flat-Remix icon themes don't contain all the icons that Foliate uses, - # so I'm bringing in the adwaita icons as a fallback. - gnome3.adwaita-icon-theme - ]; - - home.shellAliases = { - sl = "sl -awFc5"; - }; - - services.dunst.enable = true; - - programs.direnv = { - enable = true; - nix-direnv.enable = true; - }; - - xdg = { - systemDirs.data = - let - gds = pkgs.gsettings-desktop-schemas; - gtk3 = pkgs.gtk3; - in - [ - "${gds}/share/gsettings-schemas/${gds.name}" - "${gtk3}/share/gsettings-schemas/${gtk3.name}" - ]; - userDirs = - let - annex = "${config.home.homeDirectory}/Annex"; - in - { - enable = true; - createDirectories = true; - pictures = "${annex}/Pictures"; - music = "${annex}/Music"; - documents = "${annex}/Documents"; - }; - }; - - gtk = { - theme = { - package = pkgs.flat-remix-gtk; - name = "Flat-Remix-GTK-Blue-Darkest"; - }; - iconTheme = { - package = pkgs.flat-remix-icon-theme; - name = "Flat-Remix-Blue-Dark"; - }; - }; -} diff --git a/share/home/offpunk.nix b/share/home/offpunk.nix deleted file mode 100644 index 7dbd03c..0000000 --- a/share/home/offpunk.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ pkgs, ... }: { - home.packages = [ pkgs.offpunk ]; - systemd.user = { - timers.offpunk-sync = { - Unit = { - Description = "Offpunk sync command timer"; - }; - Timer = { - Persistent = true; - OnCalendar = "weekly"; - }; - }; - services.offpunk-sync = { - Unit = { - Description = "Offpunk sync command timer"; - }; - Service = { - Type = "oneshot"; - KillMode = "process"; - ExecStart = "${pkgs.offpunk}/bin/offpunk --sync"; - }; - }; - }; -} diff --git a/share/home/waybar.nix b/share/home/waybar.nix deleted file mode 100644 index 8830e78..0000000 --- a/share/home/waybar.nix +++ /dev/null @@ -1,51 +0,0 @@ -{ lib, ... }: { - programs.waybar = { - enable = true; - systemd = { - enable = true; - target = "hyprland-session.target"; - }; - settings.mainBar = { - layer = "top"; - position = "right"; - width = 40; - reload_style_on_change = true; - - modules-left = [ "hyprland/workspaces" ]; - modules-right = [ - "battery" - "network" - "cpu" - "memory" - "temperature" - "backlight" - "clock" - "tray" - ]; - - clock = { - format = "{:%H:%m\n%b}"; - }; - - battery = { - format = lib.concatStringsSep "\n" [ - "{icon} {capacity}%" - " {power:4.1f} W" - ]; - interval = 2; - format-icons = [ "" "" "" "" "" "" "" "" "" "" ]; - }; - - keyboard-state = { - numlock = true; - capslock = true; - format = "{name} {icon}"; - format-icons = { - locked = ""; - unlocked = ""; - }; - }; - }; # end of settings.mainBar - style = builtins.readFile ./waybar.css; - }; -} diff --git a/share/home/zsh.nix b/share/home/zsh.nix deleted file mode 100644 index d7950eb..0000000 --- a/share/home/zsh.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ ... }: { - imports = [ ./shellenv.nix ]; - - programs.zsh = { - enable = true; - enableAutosuggestions = true; - enableCompletion = true; - syntaxHighlighting.enable = true; - enableVteIntegration = true; - autocd = true; - dotDir = ".config/zsh"; - }; - - programs.starship.enableZshIntegration = true; - programs.atuin.enableZshIntegration = true; -} |
