This commit is contained in:
2026-02-24 23:39:07 +01:00
14 changed files with 254 additions and 104 deletions

View File

@@ -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.

28
flake.lock generated
View File

@@ -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"
}
}

View File

@@ -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
];
};
};

View File

@@ -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 ===

View File

@@ -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 ";
};

View File

@@ -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 = [

View File

@@ -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 = {

View File

@@ -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;

View File

@@ -0,0 +1,8 @@
{ ... }:
{
services.kdeconnect = {
enable = true;
indicator = true;
};
}

View File

@@ -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";
};

8
modules/gui/browsers.nix Normal file
View File

@@ -0,0 +1,8 @@
{ isNixOS, lib, ... }:
{
programs.chromium = {
enable = true;
package = lib.mkIf (!isNixOS) null;
};
}

View File

@@ -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;

View File

@@ -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"
];

View File

@@ -22,7 +22,7 @@
identity = true;
}
{
time = "21:00";
time = "21:30";
identity = false;
temperature = 4500;
gamma = 0.8;