diff --git a/README.md b/README.md index 68fba23..3686e13 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ My dotfiles managed with [home manager](https://github.com/nix-community/home-ma * Hyprlauncher * Hyprlock * Hyprsunset +* Hyprtoolkit * Kitty * Mako * Nixvim @@ -44,15 +45,21 @@ As of today I'm using this repo with home manager. I'm still trying stuff out, b # How to use this? You need to have [home manager](https://nix-community.github.io/home-manager/index.xhtml#sec-install-standalone) installed. Install needs to be **standalone**. It may not work as NixOS module. -## Arch Linux +## Settings +You need to edit `flake.nix` to match your preferences. +- If you want to use git, login with `gh auth login`, generate ssh key and put the pub key in the flake. +- You also need to set your git credentials there +- You can change the path of wallpaper dir. + +### Arch Linux 0. If you're extra lazy you can use `install_nix_and_home_manager_on_arch.sh` script to install nix and home-manager. Just run it with `chmod +x ./install_nix_and_home_manager_on_arch.sh && ./install_nix_and_home_manager_on_arch.sh` 1. Copy this repo to `~/.config/home-manager` or somewhere else. 2. Make sure to change variable to your liking inside `flake.nix`. Especially your username and home path! -3. Download all the dependencies `sudo yay -Syu --needed - < arch_packages.txt`. You can use any other aur helper if you want to, but be aware that regular pacman most likely won't work as `ashell` is not in regular repos yet. +3. Download all the dependencies `yay -Syu --needed - < arch_packages.txt`. You can use any other aur helper if you want to, but be aware that regular pacman most likely won't work as `ashell` is not in regular repos yet. 4. Run this command to apply all the configurations for the first time `home-manager switch --flake .#arch -b backup`. Make sure to be in the repo root. All your existing files will be backed up with `.backup` extension. 5. Enjoy! Now you can use [nh](https://github.com/nix-community/nh). So for example to switch use `nh home switch . -c arch --backup-extension backup` -## NixOS +### NixOS 1. Copy this repo to `~/.config/home-manager` or somewhere else. 2. Make sure to change variable to your liking inside `flake.nix`. Especially your username and home path! 3. Run this command to apply all the configurations for the first time `home-manager switch --flake .#nixos -b backup`. Make sure to be in the repo root. All your existing files will be backed up with `.backup` extension. diff --git a/flake.lock b/flake.lock index edb609c..4b4a786 100644 --- a/flake.lock +++ b/flake.lock @@ -117,11 +117,11 @@ ] }, "locked": { - "lastModified": 1771683283, - "narHash": "sha256-WxAEkAbo8dP7qiyPM6VN4ZGAxfuBVlNBNPkrqkrXVEc=", + "lastModified": 1771851181, + "narHash": "sha256-gFgE6mGUftwseV3DUENMb0k0EiHd739lZexPo5O/sdQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "c6ed3eab64d23520bcbb858aa53fe2b533725d4a", + "rev": "9a4b494b1aa1b93d8edf167f46dc8e0c0011280c", "type": "github" }, "original": { @@ -546,9 +546,15 @@ "inputs": { "catppuccin": "catppuccin", "home-manager": "home-manager", +<<<<<<< HEAD "hyprland": "hyprland", "nixpkgs": "nixpkgs_3", "nixvim": "nixvim" +======= + "nixpkgs": "nixpkgs_2", + "nixvim": "nixvim", + "wallpapers": "wallpapers" +>>>>>>> c77553344515b404d765c04e1e472dac1cf4bb94 } }, "systems": { @@ -581,6 +587,7 @@ "type": "github" } }, +<<<<<<< HEAD "xdph": { "inputs": { "hyprland-protocols": [ @@ -619,6 +626,21 @@ "original": { "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", +======= + "wallpapers": { + "flake": false, + "locked": { + "lastModified": 1762937381, + "narHash": "sha256-N+MZHSRcwOldS5Ai8B3YfKquKs9oeUW/GkV1iKM5+i8=", + "owner": "orangci", + "repo": "walls-catppuccin-mocha", + "rev": "7bfdf10d16ad3a689f9f0cf3a0930da3d1a245a8", + "type": "github" + }, + "original": { + "owner": "orangci", + "repo": "walls-catppuccin-mocha", +>>>>>>> c77553344515b404d765c04e1e472dac1cf4bb94 "type": "github" } } diff --git a/flake.nix b/flake.nix index f01744b..a03a494 100644 --- a/flake.nix +++ b/flake.nix @@ -8,7 +8,13 @@ url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; + catppuccin.url = "github:catppuccin/nix"; + wallpapers = { + url = "github:orangci/walls-catppuccin-mocha"; + flake = false; + }; + nixvim = { url = "github:nix-community/nixvim"; inputs.nixpkgs.follows = "nixpkgs"; @@ -21,14 +27,27 @@ home-manager, catppuccin, nixvim, + wallpapers, ... }@inputs: let - username = "szymon"; - # for git - email = "szymon_jozef@proton.me"; - full_name = "Szymon P"; + userConfig = { + username = "szymon"; + # for git + email = "szymon_jozef@proton.me"; + fullName = "Szymon P"; + # your public ssh key + signingKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKxyiqawA95AlLjXGd99sQCVR2rDq2/D7PG/vz7sZv5G"; + + mainMonitor = "DP-1"; # only for some applications: you still need to set hyprland monitors yourself! + statusBar = "ashell"; # available: ashell|waybar + + pathConfig = { + wallpaper = "Obrazy/tapety/catppuccin"; + }; + + }; in { homeConfigurations = { @@ -36,10 +55,15 @@ pkgs = import nixpkgs { system = "x86_64-linux"; }; extraSpecialArgs = { inherit +<<<<<<< HEAD username email full_name inputs +======= + inputs + userConfig +>>>>>>> c77553344515b404d765c04e1e472dac1cf4bb94 ; isNixOS = false; }; @@ -54,17 +78,22 @@ pkgs = import nixpkgs { system = "x86_64-linux"; }; extraSpecialArgs = { inherit +<<<<<<< HEAD username email full_name inputs +======= + inputs + userConfig +>>>>>>> c77553344515b404d765c04e1e472dac1cf4bb94 ; isNixOS = true; }; modules = [ ./home.nix catppuccin.homeModules.catppuccin - nixvim.homeManagerModules.nixvim + nixvim.homeModules.nixvim ]; }; }; diff --git a/home.nix b/home.nix index df54922..7baca10 100644 --- a/home.nix +++ b/home.nix @@ -1,12 +1,13 @@ { pkgs, - username, + inputs, + userConfig, ... }: { - home.username = username; - home.homeDirectory = "/home/${username}"; + home.username = userConfig.username; + home.homeDirectory = "/home/${userConfig.username}"; nix = { package = pkgs.nix; @@ -40,11 +41,13 @@ ./modules/cli/bat.nix ./modules/cli/git.nix ./modules/cli/fastfetch.nix + ./modules/cli/kdeconnect.nix # gui tools ./modules/gui/kitty.nix ./modules/gui/satty.nix ./modules/gui/mako.nix ./modules/gui/mangohud.nix + ./modules/gui/browsers.nix # status bars ./modules/bars/ashell.nix ./modules/bars/waybar.nix @@ -60,6 +63,7 @@ # === SCRIPTS IMPORT === home.file = { ".local/bin".source = ./scripts; + ${userConfig.pathConfig.wallpaper}.source = inputs.wallpapers; }; # === VARS === diff --git a/modules/bars/ashell.nix b/modules/bars/ashell.nix index 260bca5..d6e1815 100644 --- a/modules/bars/ashell.nix +++ b/modules/bars/ashell.nix @@ -1,4 +1,10 @@ -{ lib, isNixOS, ... }: +{ + lib, + isNixOS, + userConfig, + pkgs, + ... +}: { programs.ashell = { @@ -6,7 +12,7 @@ package = lib.mkIf (!isNixOS) null; settings = { outputs = { - Targets = [ "DP-1" ]; + Targets = [ userConfig.mainMonitor ]; }; position = "Bottom"; modules = { @@ -21,12 +27,46 @@ "MediaPlayer" "SystemInfo" [ + "CustomNotifications" "Tray" "Settings" ] ]; }; + CustomModule = [ + { + name = "CustomNotifications"; + icon = ""; + command = "${pkgs.writeShellScript "dnd-toggle" '' + if makoctl mode | grep -q do-not-disturb; then + makoctl mode -r do-not-disturb > /dev/null + else + makoctl mode -a do-not-disturb > /dev/null + fi + pkill -USR1 -f dnd-check + ''}"; + listen_cmd = "${pkgs.writeShellScript "dnd-check" '' + print_state() { + if makoctl mode | grep -q do-not-disturb; then + echo '{"alt":"dnd"}' + else + echo '{"alt":"none"}' + fi + } + + trap print_state USR1 + + print_state + + while true; do + sleep infinity & wait $! + done + ''}"; + icons.dnd = ""; + } + ]; + clock = { format = "%H:%M | %e.%m "; }; diff --git a/modules/bars/waybar.nix b/modules/bars/waybar.nix index 61d8e44..a5ed65f 100644 --- a/modules/bars/waybar.nix +++ b/modules/bars/waybar.nix @@ -1,6 +1,7 @@ { pkgs, isNixOS, + userConfig, ... }: @@ -22,9 +23,7 @@ reload_style_on_change = true; width = 70; output = [ - "DP-1" - "eDP-1" - "LVDS-1" + userConfig.mainMonitor ]; modules-left = [ diff --git a/modules/cli/fish.nix b/modules/cli/fish.nix index 837e20c..06a555b 100644 --- a/modules/cli/fish.nix +++ b/modules/cli/fish.nix @@ -3,105 +3,112 @@ { programs.fish = { enable = true; - loginShellInit = '' - fish_add_path --move --prepend --path "$HOME/.nix-profile/bin" /nix/var/nix/profiles/default/bin /run/current-system/sw/bin - ''; + loginShellInit = # fish + '' + fish_add_path --move --prepend --path "$HOME/.nix-profile/bin" /nix/var/nix/profiles/default/bin /run/current-system/sw/bin + ''; - interactiveShellInit = '' - # no dum greeting - set fish_greeting "" + interactiveShellInit = # fish + '' + # no dum greeting + set fish_greeting "" - set -gx GPG_TTY (tty) + set -gx GPG_TTY (tty) - fish_vi_key_bindings + fish_vi_key_bindings - fastfetch --config ~/.config/fastfetch/startup.jsonc - ''; + fastfetch --config ~/.config/fastfetch/startup.jsonc + ''; functions = { edit_dotfile = { description = "Edit config file, reload, commit and push"; - body = '' - set -l config_dir "$HOME/.config/home-manager" - set -l file + body = # fish + '' + set -l config_dir "$HOME/.config/home-manager" + set -l file - if test (count $argv) -gt 0 - set file $argv[1] - else - set file (fd . $config_dir --type f --exclude ".git" | fzf) - end + if test (count $argv) -gt 0 + set file $argv[1] + else + set file (fd . $config_dir --type f --exclude ".git" | fzf) + end - if test -n "$file" - set -l md5_before (md5sum $file) - pushd $config_dir - - nvim $file + if test -n "$file" + set -l md5_before (md5sum $file) + pushd $config_dir + + nvim $file - if test "$md5_before" != (md5sum $file) - echo "Changes made. Preparing commit..." - - set -l rel_file (realpath --relative-to=$config_dir $file) - - if home-manager switch --flake "$config_dir#${ - if isNixOS then "nixos" else "arch" - }" -b backup - git add -A - set commit_msg "update: $rel_file" - git commit -m "$commit_msg" - git push - end - else - echo "No changes made" - end - popd - end - ''; + if test "$md5_before" != (md5sum $file) + echo "Changes made. Preparing commit..." + + set -l rel_file (realpath --relative-to=$config_dir $file) + + if home-manager switch --flake "$config_dir#${ + if isNixOS then "nixos" else "arch" + }" -b backup + git add -A + set commit_msg "update: $rel_file" + git commit -m "$commit_msg" + git push + end + else + echo "No changes made" + end + popd + end + ''; }; ls = { - body = "eza --long --icons --group-directories-first --git $argv"; + body = # fish + "eza --long --icons --group-directories-first --git $argv"; }; lst = { - body = "eza --long --icons --color --git --tree $argv"; + body = # fish + "eza --long --icons --color --git --tree $argv"; }; cp_mail = { - body = "pandoc $argv -t html |wl-copy -t text/html"; + body = # fish + "pandoc $argv -t html |wl-copy -t text/html"; }; update = { - body = '' - echo "===System update===" + body = # fish + '' + echo "===System update===" - if not type -q yay - echo "Yay not found… Is this Arch? If yes, then please consider installing it!" - else - yay - end + if not type -q yay + echo "Yay not found… Is this Arch? If yes, then please consider installing it!" + else + yay + end - if type -q pacman - echo "===Remove orphans===" - set orphans (pacman -Qtdq) - if test (count $orphans) -gt 0 - sudo pacman -Rns $orphans - end - end + if type -q pacman + echo "===Remove orphans===" + set orphans (pacman -Qtdq) + if test (count $orphans) -gt 0 + sudo pacman -Rns $orphans + end + end - if type -q flatpak - echo "===Flatpak update===" - flatpak update --noninteractive - echo "===Flatpak remove unused===" - flatpak uninstall --unused - end + if type -q flatpak + echo "===Flatpak update===" + flatpak update --noninteractive + echo "===Flatpak remove unused===" + flatpak uninstall --unused + end - if type -q nix-channel - echo "===Nix update===" - nix-channel --update - echo "===Nix garbage collection===" - home-manager expire-generations "-7 days" - end - ''; + if type -q nix-channel + echo "===Nix update===" + nix-channel --update + echo "===Nix garbage collection===" + home-manager expire-generations "-7 days" + end + ''; }; rm = { diff --git a/modules/cli/git.nix b/modules/cli/git.nix index d2bd091..d67a0f3 100644 --- a/modules/cli/git.nix +++ b/modules/cli/git.nix @@ -1,7 +1,6 @@ { pkgs, - full_name, - email, + userConfig, ... }: @@ -14,17 +13,30 @@ enable = true; settings = { user = { - name = full_name; - email = email; + name = userConfig.fullName; + email = userConfig.email; }; init.defaultBranch = "master"; push.autoSetupRemote = true; - core.editor = "nvim"; + + gpg.ssh.allowedSignersFile = "~/.ssh/allowed_signers"; + + pull.rebase = false; + + merge.tool = "nvimdiff"; + mergetool.prompt = false; + mergetool.keepBackup = false; }; signing = { +<<<<<<< HEAD key = email; signByDefault = false; +======= + key = userConfig.signingKey; + signByDefault = true; + format = "ssh"; +>>>>>>> c77553344515b404d765c04e1e472dac1cf4bb94 }; ignores = [ @@ -38,6 +50,15 @@ }; + programs.gh = { + enable = true; + settings.git_protocol = "ssh"; + }; + + home.file.".ssh/allowed_signers".text = '' + ${userConfig.email} ${userConfig.signingKey} + ''; + programs.delta = { enable = true; enableGitIntegration = true; diff --git a/modules/cli/kdeconnect.nix b/modules/cli/kdeconnect.nix new file mode 100644 index 0000000..e615178 --- /dev/null +++ b/modules/cli/kdeconnect.nix @@ -0,0 +1,8 @@ +{ ... }: + +{ + services.kdeconnect = { + enable = true; + indicator = true; + }; +} diff --git a/modules/cli/ssh.nix b/modules/cli/ssh.nix index 5a8e017..7acac8b 100644 --- a/modules/cli/ssh.nix +++ b/modules/cli/ssh.nix @@ -1,4 +1,4 @@ -{ username, ... }: +{ userConfig, ... }: { services.ssh-agent.enable = true; @@ -10,13 +10,13 @@ matchBlocks = { "dmowski" = { hostname = "192.168.0.30"; - user = username; + user = userConfig.username; port = 22; identityFile = "~/.ssh/dmowski"; }; "aur.archlinux.org" = { - user = username; + user = userConfig.username; identityFile = "~/.ssh/aur"; }; diff --git a/modules/gui/browsers.nix b/modules/gui/browsers.nix new file mode 100644 index 0000000..a81d79f --- /dev/null +++ b/modules/gui/browsers.nix @@ -0,0 +1,8 @@ +{ isNixOS, lib, ... }: + +{ + programs.chromium = { + enable = true; + package = lib.mkIf (!isNixOS) null; + }; +} diff --git a/modules/gui/satty.nix b/modules/gui/satty.nix index 9a8e3d7..c177d5e 100644 --- a/modules/gui/satty.nix +++ b/modules/gui/satty.nix @@ -1,7 +1,7 @@ { lib, isNixOS, - username, + userConfig, ... }: @@ -14,7 +14,7 @@ fullscreen = true; early-exit = true; initial-tool = "crop"; - output-filename = "/home/${username}/Obrazy/zrzuty/%d-%m-%Y_%H:%M:%S.png"; + output-filename = "/home/${userConfig.username}/Obrazy/zrzuty/%d-%m-%Y_%H:%M:%S.png"; save-after-copy = true; copy-command = "wl-copy"; disable-notifications = false; diff --git a/modules/hypr/hyprland.nix b/modules/hypr/hyprland.nix index d0c97de..5a99205 100644 --- a/modules/hypr/hyprland.nix +++ b/modules/hypr/hyprland.nix @@ -1,8 +1,14 @@ { +<<<<<<< HEAD inputs, pkgs, isNixOS, lib, +======= + isNixOS, + lib, + userConfig, +>>>>>>> c77553344515b404d765c04e1e472dac1cf4bb94 ... }: @@ -151,8 +157,7 @@ "exec-once" = [ "wl-paste --type text --watch cliphist store" "wl-paste --type image --watch cliphist store" - "uwsm app -- kdeconnect-indicator" - "uwsm app -- ashell" + "uwsm app -- ${userConfig.statusBar}" "swww-daemon" "openrgb -c $openrgb_color" ]; diff --git a/modules/hypr/hyprsunset.nix b/modules/hypr/hyprsunset.nix index cd5e941..0e6cc6a 100644 --- a/modules/hypr/hyprsunset.nix +++ b/modules/hypr/hyprsunset.nix @@ -22,7 +22,7 @@ identity = true; } { - time = "21:00"; + time = "21:30"; identity = false; temperature = 4500; gamma = 0.8;