diff --git a/data/theme.nix b/data/theme.nix index 4710e84..9f04a0c 100644 --- a/data/theme.nix +++ b/data/theme.nix @@ -18,5 +18,7 @@ in darkerbrown = "#5e454b"; cream = "#fefcf3"; aqua = "#689d6a"; + black = "#282828"; + white = "#ebdbb2"; }; } diff --git a/flake.nix b/flake.nix index 81bc85b..0306e16 100644 --- a/flake.nix +++ b/flake.nix @@ -12,8 +12,8 @@ }; nur.url = "github:nix-community/nur"; emacs-overlay = { - url = "github:nix-community/emacs-overlay"; - inputs.nixpkgs.follows = "nixpkgs"; + url = "github:nix-community/emacs-overlay"; + inputs.nixpkgs.follows = "nixpkgs"; }; }; diff --git a/home/default.nix b/home/default.nix index 31cb84e..eb72c9c 100644 --- a/home/default.nix +++ b/home/default.nix @@ -6,7 +6,11 @@ in { ./alacritty.nix ./firefox.nix ./sway.nix + ./hyprlock_idle.nix + ./wallpapers.nix ./waybar.nix + ./udiskie.nix + ./mako.nix ./zsh.nix ./rofi.nix ./libinput.nix @@ -20,6 +24,8 @@ in { # flake = "/etc/nixos/config#laptop" }; + xdg.systemDirs.data = ["${pkgs.nordvpn}/share"]; + gtk = { enable = true; theme = { diff --git a/home/git-ssh.nix b/home/git-ssh.nix index 7f9499f..c93a564 100644 --- a/home/git-ssh.nix +++ b/home/git-ssh.nix @@ -35,6 +35,12 @@ hostname = "github.com"; identityFile = "~/.ssh/duralumin_janis-github"; }; + "github-janis-bhm" = { + host = "github.com:janis-bhm"; + hostname = "github.com"; + user = "git"; + identityFile = "~/.ssh/id_ed25519_github_janis"; + }; "noonebtw.github.com" = { host = "noonebtw.github.com"; hostname = "github.com"; diff --git a/home/hyprlock_idle.nix b/home/hyprlock_idle.nix new file mode 100644 index 0000000..62fadb4 --- /dev/null +++ b/home/hyprlock_idle.nix @@ -0,0 +1,9 @@ +{pkgs, ...}: { + services.hypridle.enable = true; + services.hyprpolkitagent.enable = true; + programs.hyprlock.enable = true; + + xdg.configFile."hypr" = { + source = "${pkgs.dotfiles}/.config/hypr"; + }; +} diff --git a/home/mako.nix b/home/mako.nix new file mode 100644 index 0000000..beecbe0 --- /dev/null +++ b/home/mako.nix @@ -0,0 +1,19 @@ +{pkgs, lib, config, ...}: let + theme = import ../data/theme.nix {inherit config; }; + utils = import ../utils.nix { inherit lib; }; + in { + services.mako = { + enable = true; + settings = { + default-timeout = 5000; + border-size = 3; + margin = "30"; + padding = "5"; + border-radius = 10; + background-color = utils.rgbToRgba theme.background; + border-color = utils.rgbToRgba theme.bright.blue; + progress-color = utils.rgbToRgba theme.bright.cyan; + text-color = utils.rgbToRgba theme.foreground; + }; + }; +} diff --git a/home/sway.nix b/home/sway.nix index 74c1ab0..803e733 100644 --- a/home/sway.nix +++ b/home/sway.nix @@ -1,4 +1,4 @@ -{pkgs, lib, config, super-config, inputs, ...}: +{pkgs, lib, config, super-config, ...}: let mod = "Mod4"; left = "h"; @@ -20,6 +20,7 @@ in { whitesur-cursors rofi-wayland ]; + wayland = { windowManager = { sway = { diff --git a/home/udiskie.nix b/home/udiskie.nix new file mode 100644 index 0000000..62e474d --- /dev/null +++ b/home/udiskie.nix @@ -0,0 +1,8 @@ +{...}: { + services.udiskie = { + enable = true; + automount = true; + notify = true; + tray = "auto"; + }; +} diff --git a/home/wallpapers.nix b/home/wallpapers.nix new file mode 100644 index 0000000..4f5a371 --- /dev/null +++ b/home/wallpapers.nix @@ -0,0 +1,29 @@ +# home-manager module which installs wallpapers from dotfiles into .local/share/wallpapers +{pkgs, config, ...}: { + xdg.dataFile."wallpapers" = { + source = "${pkgs.dotfiles}/.local/share/wallpapers"; + recursive = true; + }; + + home.packages = with pkgs; [ + wpaperd-patched + ]; + + xdg.dataFile."wallpapers/current" = { + source = config.lib.file.mkOutOfStoreSymlink "${config.xdg.dataHome}/wallpapers/witch1.jpg"; + }; + + xdg.dataFile."wallpapers/current_lock" = { + source = config.lib.file.mkOutOfStoreSymlink "${config.xdg.dataHome}/wallpapers/witch5.jpg"; + }; + + services.wpaperd = { + enable = true; + package = pkgs.wpaperd-patched; + settings = { + default = { + path = "${config.xdg.dataHome}/wallpapers/current"; + }; + }; + }; +} diff --git a/home/waybar.nix b/home/waybar.nix index e06a967..c2869bc 100644 --- a/home/waybar.nix +++ b/home/waybar.nix @@ -8,7 +8,7 @@ in let module-descs = [ { name = "custom/left-most"; - background = theme.background; + background = "transparent"; } { name = "pulseaudio"; @@ -122,7 +122,11 @@ SSID: {essid} {frequency}''; }; background = theme.normal.black; } - {name = "tray"; config = { spacing = 10; }; background = theme.background;} + { + name = "tray"; + config = { spacing = 10; }; + background = theme.normal.white; + } ]; # default style for modules @@ -156,14 +160,12 @@ SSID: {essid} {frequency}''; # modules interlaced with spacers # [ModuleDesc] -> [Module] mkSpacedModules = descs: with builtins; - let - len = length descs; - in lib.lists.flatten - (lib.lists.imap0 + lib.lists.flatten + (let list = utils.windows 2 descs; len = length list; in lib.lists.imap0 (n: descs: let left = elemAt descs 0; right = elemAt descs 1; - in if n == len then [ + in if n == (len - 1) then [ (mkModule left) (mkSpacer n left right) (mkModule right) @@ -171,7 +173,7 @@ SSID: {essid} {frequency}''; (mkModule left) (mkSpacer n left right) ]) - (utils.windows 2 descs) + list ); # Module -> {"name" = setting} @@ -217,6 +219,59 @@ SSID: {essid} {frequency}''; position = "top"; }; }; + workspace-style = '' +/* And now modules themselves in their respective order */ +.rounded_button { + padding-left: 0.3em; + padding-right: 0.3em; + border-radius: 0.5em; + margin-left: 0.2em; + margin-right: 0.2em; + margin-bottom: 0.2em; +} + +/* Workspaces stuff */ +#workspaces button { + color: ${theme.extra.white}; + background: ${theme.background}; + + padding-left: 0.3em; + padding-right: 0.3em; + border-radius: 0.5em; + margin-left: 0.2em; + margin-right: 0.2em; + margin-bottom: 0.2em; +} + +/* Inactive (on unfocused output) */ +#workspaces button.visible { + color: ${theme.extra.white}; + background: ${theme.extra.purple}; +} + +/* Active (on focused output) */ +#workspaces button.focused { + color: ${theme.extra.black}; + background: ${theme.extra.aqua}; +} + +/* Contains an urgent window */ +#workspaces button.urgent { + color: ${theme.extra.black}; + background: ${theme.bright.red}; +} + +/* Style when cursor is on the button */ +#workspaces button:hover { + background: ${theme.extra.black}; + color: ${theme.extra.white}; +} + +#window { + margin-right: 10pt; + margin-left: 10pt; +} +''; in { imports = [ ../options.nix ]; @@ -234,9 +289,23 @@ in { }; style = '' -* {border: none; border-radius: 0; min-height: 0; margin: 0; padding: 0; box-shadow: none; text-shadow: none;} -#waybar { background: rgba(40, 40, 40, 0.3); color: #ffffff; font-family: "sans-serif"; font-size: 12pt; font-weight: 500; } +* { + border: none; + border-radius: 0; + min-height: 0; + margin: 0; + padding: 0; + box-shadow: none; + text-shadow: none; +} +#waybar { + background: rgba(40, 40, 40, 0.3); + color: #ffffff; + font-family: "sans-serif"; + font-size: 12pt; + font-weight: 500; +} '' - + bar.style; + + workspace-style + bar.style; }; } diff --git a/pkgs/dotfiles.nix b/pkgs/dotfiles.nix index 0ace73b..9bacc89 100644 --- a/pkgs/dotfiles.nix +++ b/pkgs/dotfiles.nix @@ -4,7 +4,7 @@ src = builtins.fetchGit { url = "git@git.nirgendwo.xyz:janis/dotfiles.git"; - rev = "56cf6dd4efac92527f465a864b2b155833b364ee"; + rev = "a5fcc6a741eb21e9a729b4c001ce069c485bccc1"; ref = "main"; }; diff --git a/pkgs/nordvpn.nix b/pkgs/nordvpn.nix index 94df44e..37fb7e0 100644 --- a/pkgs/nordvpn.nix +++ b/pkgs/nordvpn.nix @@ -123,7 +123,7 @@ in stdenv.mkDerivation { mkdir -p $out/bin $out/share ln -s ${nordvpn}/bin/nordvpn $out/bin ln -s ${nordvpnd}/bin/nordvpnd $out/bin - ln -s ${nordvpn}/share* $out/share + ln -s ${nordvpn}/share/* $out/share ln -s ${nordvpn}/var $out runHook postInstall ''; diff --git a/pkgs/overlay.nix b/pkgs/overlay.nix index 3594a34..2d94d66 100644 --- a/pkgs/overlay.nix +++ b/pkgs/overlay.nix @@ -4,4 +4,5 @@ final: prev: { screenshot = prev.callPackage ./screenshot.nix {}; dotfiles = prev.callPackage ./dotfiles.nix {}; tree-sitter-slang = prev.callPackage ./tree-sitter-slang.nix {}; + wpaperd-patched = prev.callPackage ./wpaperd.nix {}; } diff --git a/pkgs/wpaperd.nix b/pkgs/wpaperd.nix new file mode 100644 index 0000000..31884ed --- /dev/null +++ b/pkgs/wpaperd.nix @@ -0,0 +1,40 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + pkg-config, + libxkbcommon, + wayland, + libGL, +}: + +rustPlatform.buildRustPackage { + pname = "wpaperd-patched"; + version = "1.2.1"; + + src = fetchFromGitHub { + owner = "janis-bhm"; + repo = "wpaperd"; + rev = "main"; + hash = "sha256-bqsr4tOA2ZOoz8Y7m9A3O+gUIFsJ6gvP2wjUYExyuGI="; + }; + + useFetchCargoVendor = true; + cargoHash = "sha256-Vz5x9V+q5OwRR/GdiM/kEEfENSQ+KyN3DKM35NHuzAk="; + + nativeBuildInputs = [ + pkg-config + ]; + buildInputs = [ + wayland + libGL + libxkbcommon + ]; + + meta = with lib; { + description = "Minimal wallpaper daemon for Wayland"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + mainProgram = "wpaperd"; + }; +} diff --git a/utils.nix b/utils.nix index cd69dfc..0064610 100644 --- a/utils.nix +++ b/utils.nix @@ -17,4 +17,12 @@ num-windows; isEmptySet = set: with builtins; length (attrNames set) == 0; + + # convert an rgb colour string from the form "#rrggbb" to "#rrggbbff" + rgbToRgba = rgb: let + hex = builtins.replaceStrings [ "#" ] [ "" ] rgb; + r = builtins.substring 0 2 hex; + g = builtins.substring 2 2 hex; + b = builtins.substring 4 2 hex; + in "#${r}${g}${b}ff"; }