Compare commits

...

148 Commits

Author SHA1 Message Date
bc18255229
Update 2024-09-09 15:53:28 +02:00
91a32bfdeb
docker root mode 2024-09-05 11:56:46 +02:00
d2bd664f4e
docker 2024-09-05 10:43:53 +02:00
73b02b4589
network 2024-08-31 12:52:53 +02:00
075237ed6f
kaiser 2024-08-28 17:00:07 +02:00
c213f82d04
network 2024-08-28 12:53:47 +02:00
3ed2aa4cc1
add chromium 2024-08-22 13:07:57 +02:00
dc86d80a3a
update 2024-08-21 15:01:08 +02:00
7df0351721
wg 2024-08-19 12:44:18 +02:00
eaaf415299
fixing wg 2024-08-19 12:27:22 +02:00
80daeb3ba5
wifi 2024-08-18 17:13:48 +02:00
c9b5cb9b52
wifi 2024-08-10 17:34:22 +02:00
67279849d7
statix fix 2024-08-07 20:38:52 +02:00
dec199a870
dead code removal 2024-08-07 18:44:14 +02:00
06dea9ce71
alejandra format 2024-08-07 17:41:33 +02:00
1a4be3cb75
use official telegram app 2024-08-06 12:21:04 +02:00
d89757afb9
rest of mailserver 2024-08-05 18:57:10 +02:00
0b8e88f09d
firewall module 2024-08-05 18:54:30 +02:00
9ee0b504b1
anonymous dns module 2024-08-05 18:46:10 +02:00
3afeaa8934
wireguard-output module 2024-08-05 18:40:34 +02:00
7d7c00de4f
nginx module 2024-08-05 18:25:15 +02:00
1bd5b467ae
add restrict to vpn on mailserver module 2024-08-05 18:15:50 +02:00
a10568d5ac
mailserver module 2024-08-05 18:12:02 +02:00
eac0e79ca3
remove unused home config 2024-08-05 17:49:30 +02:00
f1b2a18a1d
add telegram 2024-08-05 11:12:19 +02:00
07512362f8
add stara to wg 2024-08-04 22:11:14 +02:00
c36b061ce9
add services to intranet 2024-08-04 21:24:32 +02:00
d0caeb0b57
add ssh to wg for intranet 2024-08-04 20:07:52 +02:00
00d0aff6f8
grub and wireless to miner 2024-08-04 20:00:51 +02:00
793790226b
adding hardware to miner 2024-08-04 19:08:59 +02:00
76266ac03e
add monero miner 2024-08-04 15:11:01 +02:00
0bf31f6699
add just generate recipe 2024-08-04 14:54:06 +02:00
2d99617d89
justfile with params 2024-08-04 14:49:20 +02:00
12466783f7
add justfile syntax 2024-08-04 14:31:30 +02:00
0bd094330d
default host platform 2024-08-04 14:10:03 +02:00
13ca2bc6c5
add doas to vps 2024-08-04 13:41:00 +02:00
d94928d1cf
change lid switch behaviour 2024-08-04 13:33:34 +02:00
bac787e1d7
add shell and wireless to iso 2024-08-04 12:18:25 +02:00
b7a673f537
add tshark 2024-08-04 10:29:28 +02:00
89c45a9e8f
anon dns 2024-08-03 22:41:33 +02:00
764bf2d3e7
dnscrypt enable o/doh servers 2024-08-03 22:01:37 +02:00
ea537f647e
add realtime group 2024-08-03 20:19:53 +02:00
e2e10b3f0a
refactoring vps 2024-08-03 20:16:58 +02:00
b432efdd0f
spaces for README 2024-08-03 17:45:01 +02:00
ae75c299cb
README 2024-08-03 17:43:30 +02:00
b99de1d61f
ssh hosts 2024-08-03 17:22:31 +02:00
3a301ddce5
successful merge 2024-08-03 17:09:52 +02:00
1d438b291d
nice root shell 2024-08-03 15:41:51 +02:00
6ea6fbaa9c
generate installer iso 2024-08-03 15:14:13 +02:00
6631b11382
mimeapps for media 2024-08-03 13:32:47 +02:00
e3eb263108
add nixos-install-tools to base nixos 2024-08-03 12:54:52 +02:00
ab4d05ae3c
firefox config 2024-08-03 12:48:52 +02:00
76f954a335
remove gpgme from firefox 2024-08-03 11:59:41 +02:00
69b444e3e7
add nix-index 2024-08-03 11:43:25 +02:00
aec13e232b
move hardware configs into file 2024-08-03 10:57:26 +02:00
579259b156
nixos config refactor 2024-08-03 10:49:41 +02:00
fa2081dab1
let nixos modules handle deps 2024-08-03 10:37:55 +02:00
c09e7674f4
bugfixes 2024-08-02 22:43:08 +02:00
cc7382ac20
music realtime kernel 2024-08-02 21:54:57 +02:00
c6000ae94f
justfile fix 2024-08-02 20:11:33 +02:00
09f0ab478d
use home-manager as nixos module 2024-08-02 20:04:50 +02:00
1b2bbc3a31
nixos configs refactor 2024-08-02 19:47:54 +02:00
e1a429bdec
overlays to module 2024-08-02 19:27:41 +02:00
7e03c3f3f1
logind stuff 2024-08-02 18:46:46 +02:00
8f57211bf5
enable just monero 2024-08-02 18:25:12 +02:00
09c083c5e4
block social 2024-08-02 11:54:02 +02:00
91acd7e216
make base smaller 2024-08-02 11:37:59 +02:00
09dbf066f8
disable realtime kernel by default 2024-08-02 11:26:29 +02:00
98fec7c447
bat catppuccin themes 2024-08-02 09:29:07 +02:00
38b4664e6f
more utils 2024-08-02 08:52:43 +02:00
f05e8968d8
uutils in util 2024-08-02 08:48:38 +02:00
32a46bf0c7
speedtest in util 2024-08-02 08:41:41 +02:00
be21318ed1
cleanup and styles 2024-08-02 08:39:36 +02:00
5cb70e464a
enable fzf 2024-08-02 07:51:14 +02:00
3ad76bcd69
remove unused alias 2024-08-02 07:31:14 +02:00
e3da8e7072
more refactor 2024-08-02 07:19:45 +02:00
a1d0ca2d65
refactoring and cleanup 2024-08-02 06:54:15 +02:00
588190e7b6
media config 2024-08-02 06:40:39 +02:00
776e4cd49c
remove clock tooltip 2024-08-01 23:29:30 +02:00
0f4d3087f6
fix systemd env for wpd 2024-08-01 23:24:07 +02:00
096d73470d
wpd script that changes wp every min 2024-08-01 22:54:56 +02:00
a32a8e3777
update 2024-08-01 20:20:13 +02:00
59b83495fc
add rpc user 2024-07-31 11:11:48 +02:00
60538957a4
screenshot but in bash 2024-07-30 18:58:07 +02:00
243c6232d6
add phone hotstop 2024-07-30 10:01:43 +02:00
c5ee685ed8
lt ignore git 2024-07-29 11:33:39 +02:00
bae652bf97
eza list long 2024-07-26 17:02:56 +02:00
9ec183549d
ssh config 2024-07-24 22:08:37 +02:00
7127c71d1c
remove tooltips from waybar 2024-07-24 18:13:45 +02:00
7872a7b3a7
pushall git alias 2024-07-24 15:27:53 +02:00
6efeb73394
add bitcoind 2024-07-24 10:05:13 +02:00
9ed0dbb95c
update 2024-07-23 13:34:06 +02:00
108604c457
update 2024-07-21 22:39:52 +02:00
fe7a23ecbc
sound controls 2024-07-18 19:58:22 +02:00
f228bc6962
volume keys 2024-07-17 09:15:31 +02:00
96fa7ddfb1
just ai 2024-07-11 10:23:29 +02:00
fccce59c0d
use just instead of make 2024-07-11 10:22:34 +02:00
b6b7835cc9
ai config 2024-07-11 10:17:40 +02:00
1168e46fb6
separate git into own mod 2024-07-10 11:17:08 +02:00
50d8c40057
use uutils instead of coreutils 2024-07-10 11:07:49 +02:00
ae2d09475f
refactor mods 2024-07-09 13:22:30 +02:00
e50c532a6d
use configured eza 2024-07-08 21:34:03 +02:00
c8ce02fe2d
eza ls config 2024-07-08 21:32:14 +02:00
754c20868d
better ls 2024-07-08 20:32:02 +02:00
1d0aeced87
remove otter-nvim 2024-07-08 15:27:28 +02:00
62397ced8d
this plugin doesnt work 2024-07-07 23:46:46 +02:00
55533888e9
add vim-gnupg to vim 2024-07-07 23:34:34 +02:00
51edd5bbb7
readme update 2024-07-07 23:32:52 +02:00
095e7531cb
update 2024-07-07 23:29:57 +02:00
84169072de
make ss have normal name 2024-07-07 21:26:56 +02:00
ce8b986fd2
overwrite every time 2024-07-07 19:36:13 +02:00
21e17fefa2
fetch from server 2024-07-07 19:35:01 +02:00
e6313d810d
remove common aliases from nushell 2024-07-07 19:10:46 +02:00
e521af0b12
reformating 2024-07-07 16:01:23 +02:00
9f44008493
fix catppuccin cursors 2024-07-07 13:39:48 +02:00
82c4bfe778
use light cursor 2024-07-07 12:39:35 +02:00
6a4d3f96e7
cleanup 2024-07-07 10:42:36 +02:00
b1ee621d91
nonya business 2024-07-06 22:58:14 +02:00
e79c4a0081
remove vm 2024-07-06 19:47:30 +02:00
a66f628805
grub theme background 2024-07-06 17:19:11 +02:00
99afb06b2f
grub theme 2024-07-06 17:10:57 +02:00
696c3b0e3c
make boot absolute path 2024-07-06 16:52:29 +02:00
0fdd976815
don't update microcode 2024-07-06 13:11:49 +02:00
1ffb9d6db5
again 2024-07-06 13:08:22 +02:00
6d0aefdc94
cleanup hardware 2024-07-06 13:07:59 +02:00
c6d1daba13
cleanup 2024-07-06 12:58:22 +02:00
9286ff5044
move scripts to self-contained packages 2024-07-05 22:27:12 +02:00
a1ed6a69fa
create packages for overlays 2024-07-05 22:07:52 +02:00
ffceb60bb8
extract music to different config 2024-07-05 20:03:30 +02:00
876a3f631e
add more time to clean 2024-07-05 19:35:16 +02:00
0178ba7e33
add colors back in waybar 2024-07-05 19:33:03 +02:00
16444f4ea9
kitty transparency 2024-07-05 18:43:22 +02:00
3349451235
zsh colors 2024-07-05 18:35:52 +02:00
ca57494834
use config to get home 2024-07-05 18:32:04 +02:00
9d672f7832
fixing 2024-07-05 18:19:34 +02:00
853ffca7cc
remove catppuccin 2024-07-05 18:13:53 +02:00
ac766f8b01
mor 2024-07-05 18:12:26 +02:00
d2b68866d0
MOOOOOOOOOOOOOOOOOOOOOORE 2024-07-05 18:05:15 +02:00
01ff1fff57
mooooore 2024-07-05 17:36:34 +02:00
37f0d1df20
cleanup 2024-07-05 16:40:04 +02:00
a29de4f7ca
set stateVersion in toplevel 2024-07-05 13:29:07 +02:00
c3887fdf8b
enable jack in music mod 2024-07-05 11:53:58 +02:00
335c20346c
music pipewire jack low latency 2024-07-05 11:52:45 +02:00
33437e8eab
jack pipewire 2024-07-05 10:02:23 +02:00
85575729e2
delete older than when clean 2024-07-05 09:41:27 +02:00
41692c2972
use pwvucontrol 2024-07-05 09:32:10 +02:00
3f8562de4e
lower jackd latency and realtime 2024-07-05 00:33:25 +02:00
e7bc95e70a
realtime musio production module 2024-07-05 00:10:36 +02:00
55 changed files with 2127 additions and 1366 deletions

24
Justfile Normal file
View File

@ -0,0 +1,24 @@
default: nova
all: nova (nova "music")
nova config="nova":
#!/usr/bin/env sh
cfg={{config}}
if [ "$cfg" != "nova" ]; then
cfg="nova-{{config}}"
fi
doas nixos-rebuild switch --flake ./#"$cfg"
update:
nix flake update
clean:
nix-collect-garbage --delete-older-than 90d
doas nix-collect-garbage --delete-older-than 90d
generate format="install-iso" config="install-iso":
nix shell nixpkgs#nixos-generators --command nixos-generate -f {{format}} --flake ./#{{config}}
vps:
nixos-rebuild switch --flake ./#vps --target-host root@37.205.13.29

View File

@ -1,28 +0,0 @@
.PHONY: default all home nixos vm update clean
default: all
all: home nixos
home:
home-manager switch --flake ./. -b $$(mktemp -u XXXX)
nixos:
doas nixos-rebuild switch --flake ./.
vm:
nixos-rebuild build-vm --flake ./.#vm
update:
nix flake update
clean: cleanRoot cleanHome
cleanHome:
nix-collect-garbage -d
cleanRoot:
doas nix-collect-garbage -d
news:
home-manager news --flake ./.

View File

@ -1,39 +1,26 @@
# My personal nixos config. # NixOS configurations
### Usage This repository aims to configure everything I use for all my machines.
To build the base system for my craptop: ### Goals
- Provide me with something that I personally can use.
- Make it modular so that it can be reused by other people or me on other people's machines (my company's workstation).
### How to use
[Check the home-manager modules](./home/modules/default.nix)
[Check the NixOS modules](./nixos/modules/default.nix)
These are exposed in the following way
`<this-flake>.homeManagerModules.<module>`
`<this-flake>.nixosModules.<module>`
Run the following for more info:
```bash ```bash
sudo nixos-rebuild switch --flake github:ivandimitrov8080/configuration.nix#laptop nix flake show github:ivandimitrov8080/configuration.nix
```
To build ivand home:
```bash
home-manager switch --flake github:ivandimitrov8080/configuration.nix#ivand
```
To reuse modules:
in your flake.nix:
```nix
inputs.ivan-mods = {
url = "github:ivandimitrov8080/configuration.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
outputs = {self, nixpkgs, ivan-mods, ...}:{
...
homeConfigurations = {
my-user = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = with ivan-mods.modules.home; [
programs.nvim
programs.zsh
];
};
};
...
};
``` ```

View File

@ -1,35 +0,0 @@
#!/usr/bin/env nu
let today = (date now | format date '%Y-%m-%d')
let pic_dir = (xdg-user-dir PICTURES)
let bg_dir = $pic_dir | path join "bg"
let today_img_file = $bg_dir | path join ( [ $today, ".png" ] | str join )
let is_new = ((date now | format date "%H" | into int) >= 10)
mkdir $bg_dir
def exists [file: path] {
return ($file | path exists)
}
def is_empty [file: path] {
return ((exists $file) and ((ls $file | get size | first | into int) == 0))
}
def fetch [] {
http get ("https://bing.com" + ((http get https://www.bing.com/HPImageArchive.aspx?format=js&n=1).images.0.url)) | save $today_img_file
}
def cleanup [] {
if (is_empty $today_img_file) {
rm -rf $today_img_file
}
}
cleanup
if $is_new and (not (exists $today_img_file)) {
fetch
/run/current-system/sw/bin/ln -sf $today_img_file ( $pic_dir | path join "bg.png" )
}
cleanup

View File

@ -1,3 +0,0 @@
#!/usr/bin/env bash
chromium --proxy-server=127.0.0.1:4444

22
bin/ks
View File

@ -1,22 +0,0 @@
#!/usr/bin/env bash
doc_dir=$(xdg-user-dir DOCUMENTS)
ks_dir="$doc_dir/ks"
name="$1"
full_path="$ks_dir/$name.md.gpg"
tmpfile="/tmp/$name.md"
mkdir -p "$ks_dir"
cd "$ks_dir"
if [ -f "$full_path" ]; then
gpg --decrypt -o "$tmpfile" "$full_path"
else
touch "$tmpfile"
fi
$EDITOR "$tmpfile"
gpg --encrypt -r ivan@idimitrov.dev -o "$full_path" "$tmpfile"
git add . && git commit -m "editing $name" && git push --set-upstream origin HEAD

View File

@ -1,5 +0,0 @@
#!/usr/bin/env bash
cd "$HOME"
rm -rf .visualvm .bin .npm .cache .cargo .librewolf .mupdf.history .ollama .psql_history .python_history .sbt .tldrc .zcompdump .viminfo .wireguard

View File

@ -1,30 +0,0 @@
#!/usr/bin/env nu
let tmp_img = "/tmp/screen.png" | path join
let ss_dir = ((xdg-user-dir PICTURES | str trim) | path join "ss")
let pic_dir = ($ss_dir | path join ((date now | format date) | str join ".png"))
mkdir $ss_dir
def copy_image [] {
open $pic_dir | wl-copy
}
def prepare_screen [] {
let grim_id = pueue add -i -p grim $tmp_img
let imv_id = pueue add -a $grim_id -p imv -f $tmp_img
grim -g $"(slurp -b '#FFFFFF00' -c '#FF0000FF')" $pic_dir
pueue kill $imv_id $grim_id
pueue wait
pueue remove $imv_id $grim_id
}
def "main area" [] {
prepare_screen
copy_image
}
def main [] {
grim $pic_dir
copy_image
}

View File

@ -1,3 +0,0 @@
#!/usr/bin/env bash
ssh -n vpsfree-root 'cat /var/log/nginx/access.log' | goaccess --datetime-format='%d/%b/%Y:%H:%M:%S %z' --log-format='COMBINED'

View File

@ -1,21 +1,13 @@
top@{ inputs, ... }: { top @ { inputs, ... }: {
imports = [ ./nixos ./home ]; imports = [ ./nixos ./home ./packages ./overlays ./hardware-configurations ];
systems = [ "x86_64-linux" ]; systems = [ "x86_64-linux" ];
perSystem = perSystem@{ system, ... }: { flake.stateVersion = "24.05";
perSystem = { system, ... }: {
config._module.args = { config._module.args = {
pkgs = import inputs.nixpkgs { pkgs = import inputs.nixpkgs {
inherit system; inherit system;
overlays = [ overlays = [
(final: prev: { top.config.flake.overlays.default
nvim = inputs.ide.nvim.${system}.standalone.default {
plugins.lsp.servers = {
bashls.enable = true;
nushell.enable = true;
};
};
scripts = (prev.buildEnv { name = "scripts"; paths = [ ./. ]; });
})
inputs.sal.overlays.default
]; ];
}; };
}; };

View File

@ -1,29 +1,53 @@
{ {
"nodes": { "nodes": {
"catppuccin": { "blobs": {
"flake": false,
"locked": { "locked": {
"lastModified": 1719758387, "lastModified": 1604995301,
"narHash": "sha256-bMaI1jJNzIZar4TP/hhoPQROqqcbD6zT6O+sqIJdp8c=", "narHash": "sha256-wcLzgLec6SGJA8fx1OEN1yV/Py5b+U5iyYpksUY/yLw=",
"owner": "catppuccin", "owner": "simple-nixos-mailserver",
"repo": "nix", "repo": "blobs",
"rev": "9eb0610d48dd0e1fecf772bbdacf9050d7b82d7c", "rev": "2cccdf1ca48316f2cfd1c9a0017e8de5a7156265",
"type": "github" "type": "gitlab"
}, },
"original": { "original": {
"owner": "catppuccin", "owner": "simple-nixos-mailserver",
"repo": "nix", "repo": "blobs",
"type": "github" "type": "gitlab"
} }
}, },
"devshell": { "devshell": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [ "nixpkgs": [
"ide", "ide",
"nixvim", "nixvim",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": {
"lastModified": 1722113426,
"narHash": "sha256-Yo/3loq572A8Su6aY5GP56knpuKYRvM2a1meP9oJZCw=",
"owner": "numtide",
"repo": "devshell",
"rev": "67cce7359e4cd3c45296fb4aaf6a19e2a9c757ae",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"devshell_2": {
"inputs": {
"flake-utils": "flake-utils_4",
"nixpkgs": [
"webshite",
"ide",
"nixvim",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1717408969, "lastModified": 1717408969,
"narHash": "sha256-Q0OEFqe35fZbbRPPRdrjTUUChKVhhWXz3T9ZSKmaoVY=", "narHash": "sha256-Q0OEFqe35fZbbRPPRdrjTUUChKVhhWXz3T9ZSKmaoVY=",
@ -100,6 +124,68 @@
"type": "github" "type": "github"
} }
}, },
"flake-compat_5": {
"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-compat_6": {
"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-compat_7": {
"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_8": {
"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": { "flake-parts": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
@ -109,11 +195,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1717285511, "lastModified": 1719994518,
"narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -152,6 +238,75 @@
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": {
"lastModified": 1719994518,
"narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_4": {
"inputs": {
"nixpkgs-lib": [
"webshite",
"ide",
"neovim-nightly-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1717285511,
"narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_5": {
"inputs": {
"nixpkgs-lib": [
"webshite",
"ide",
"neovim-nightly-overlay",
"hercules-ci-effects",
"nixpkgs"
]
},
"locked": {
"lastModified": 1712014858,
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
"type": "github"
},
"original": {
"id": "flake-parts",
"type": "indirect"
}
},
"flake-parts_6": {
"inputs": {
"nixpkgs-lib": [
"webshite",
"ide",
"nixvim",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1717285511, "lastModified": 1717285511,
"narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=",
@ -191,6 +346,46 @@
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"
}, },
"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"
}
},
"flake-utils_3": {
"inputs": {
"systems": [
"webshite",
"ide",
"systems"
]
},
"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"
}
},
"flake-utils_4": {
"inputs": {
"systems": "systems_3"
},
"locked": { "locked": {
"lastModified": 1701680307, "lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
@ -220,6 +415,70 @@
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": {
"lastModified": 1721042469,
"narHash": "sha256-6FPUl7HVtvRHCCBQne7Ylp4p+dpP3P/OYuzjztZ4s70=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "f451c19376071a90d8c58ab1a953c6e9840527fd",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"git-hooks_2": {
"inputs": {
"flake-compat": [
"ide",
"nixvim",
"flake-compat"
],
"gitignore": "gitignore_2",
"nixpkgs": [
"ide",
"nixvim",
"nixpkgs"
],
"nixpkgs-stable": [
"ide",
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1721042469,
"narHash": "sha256-6FPUl7HVtvRHCCBQne7Ylp4p+dpP3P/OYuzjztZ4s70=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "f451c19376071a90d8c58ab1a953c6e9840527fd",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"git-hooks_3": {
"inputs": {
"flake-compat": "flake-compat_6",
"gitignore": "gitignore_3",
"nixpkgs": [
"webshite",
"ide",
"neovim-nightly-overlay",
"nixpkgs"
],
"nixpkgs-stable": [
"webshite",
"ide",
"neovim-nightly-overlay",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1718879355, "lastModified": 1718879355,
"narHash": "sha256-RTyqP4fBX2MdhNuMP+fnR3lIwbdtXhyj7w7fwtvgspc=", "narHash": "sha256-RTyqP4fBX2MdhNuMP+fnR3lIwbdtXhyj7w7fwtvgspc=",
@ -234,16 +493,18 @@
"type": "github" "type": "github"
} }
}, },
"git-hooks_2": { "git-hooks_4": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_4", "flake-compat": "flake-compat_8",
"gitignore": "gitignore_2", "gitignore": "gitignore_4",
"nixpkgs": [ "nixpkgs": [
"webshite",
"ide", "ide",
"nixvim", "nixvim",
"nixpkgs" "nixpkgs"
], ],
"nixpkgs-stable": [ "nixpkgs-stable": [
"webshite",
"ide", "ide",
"nixvim", "nixvim",
"nixpkgs" "nixpkgs"
@ -309,6 +570,54 @@
"type": "github" "type": "github"
} }
}, },
"gitignore_3": {
"inputs": {
"nixpkgs": [
"webshite",
"ide",
"neovim-nightly-overlay",
"git-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"
}
},
"gitignore_4": {
"inputs": {
"nixpkgs": [
"webshite",
"ide",
"nixvim",
"git-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"
}
},
"hercules-ci-effects": { "hercules-ci-effects": {
"inputs": { "inputs": {
"flake-parts": "flake-parts_2", "flake-parts": "flake-parts_2",
@ -318,6 +627,30 @@
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": {
"lastModified": 1719226092,
"narHash": "sha256-YNkUMcCUCpnULp40g+svYsaH1RbSEj6s4WdZY/SHe38=",
"owner": "hercules-ci",
"repo": "hercules-ci-effects",
"rev": "11e4b8dc112e2f485d7c97e1cee77f9958f498f5",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "hercules-ci-effects",
"type": "github"
}
},
"hercules-ci-effects_2": {
"inputs": {
"flake-parts": "flake-parts_5",
"nixpkgs": [
"webshite",
"ide",
"neovim-nightly-overlay",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1718018037, "lastModified": 1718018037,
"narHash": "sha256-03rLBd/lKecgaKz0j5ESUf9lDn5R0SJatZTKLL5unWE=", "narHash": "sha256-03rLBd/lKecgaKz0j5ESUf9lDn5R0SJatZTKLL5unWE=",
@ -339,11 +672,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1719827439, "lastModified": 1725863684,
"narHash": "sha256-tneHOIv1lEavZ0vQ+rgz67LPNCgOZVByYki3OkSshFU=", "narHash": "sha256-HmdTBpuCsw35Ii35JUKO6AE6nae+kJliQb0XGd4hoLE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "59ce796b2563e19821361abbe2067c3bb4143a7d", "rev": "be47a2bdf278c57c2d05e747a13ed31cef54a037",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -360,6 +693,29 @@
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": {
"lastModified": 1722407237,
"narHash": "sha256-wcpVHUc2nBSSgOM7UJSpcRbyus4duREF31xlzHV5T+A=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "58cef3796271aaeabaed98884d4abaab5d9d162d",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_3": {
"inputs": {
"nixpkgs": [
"webshite",
"ide",
"nixvim",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1719037157, "lastModified": 1719037157,
"narHash": "sha256-aOKd8+mhBsLQChCu1mn/W5ww79ta5cXVE59aJFrifM8=", "narHash": "sha256-aOKd8+mhBsLQChCu1mn/W5ww79ta5cXVE59aJFrifM8=",
@ -381,11 +737,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1719456570, "lastModified": 1725674607,
"narHash": "sha256-FS9+w+9QPBd6hCtX7C5x/xm4nGCA0lOtYgjefkQNbbg=", "narHash": "sha256-vTaoz2yRd9g3NZNKYufZeB8UJ381aBPmRV91lEmV37o=",
"owner": "StevenBlack", "owner": "StevenBlack",
"repo": "hosts", "repo": "hosts",
"rev": "0f8be09978187ba0e4eab2a9e0dcde88f358f1dc", "rev": "10b187280ec15374e4d2b28e7705046e7d535d91",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -405,11 +761,11 @@
"systems": "systems_2" "systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1719498174, "lastModified": 1722691995,
"narHash": "sha256-TZHKHP2P8FmbzTnQ1CII8MN6L/yigMsSRok8ShVglOg=", "narHash": "sha256-TWpmjsNJN75sHfAfsFTlhSl2t5ZQtoRTthu2XfaFnpw=",
"owner": "ivandimitrov8080", "owner": "ivandimitrov8080",
"repo": "flake-ide", "repo": "flake-ide",
"rev": "953b69dde6f3798eeb36892540267bb338a4d241", "rev": "c3a2cc3f24a854ad91513f1692607764ee9e6b8e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -418,6 +774,51 @@
"type": "github" "type": "github"
} }
}, },
"ide_2": {
"inputs": {
"flake-utils": "flake-utils_3",
"neovim-nightly-overlay": "neovim-nightly-overlay_2",
"nixpkgs": [
"webshite",
"nixpkgs"
],
"nixvim": "nixvim_2",
"systems": "systems_4"
},
"locked": {
"lastModified": 1720387774,
"narHash": "sha256-vbdLOPW2s5HZ/aRJl2GtcL1d4racetoPRn6W7dGVl+E=",
"owner": "ivandimitrov8080",
"repo": "flake-ide",
"rev": "7194c89a92430d755aabd11d2eae25d13b6e8f00",
"type": "github"
},
"original": {
"owner": "ivandimitrov8080",
"repo": "flake-ide",
"type": "github"
}
},
"musnix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1725237485,
"narHash": "sha256-POpzmA7+ecCUEZsu2a5fgwYhJ60POzve+lMhxebmTz4=",
"owner": "musnix",
"repo": "musnix",
"rev": "b5f3a47fd74193cb98c85cfeb6a25358150bdd90",
"type": "github"
},
"original": {
"owner": "musnix",
"repo": "musnix",
"type": "github"
}
},
"neovim-nightly-overlay": { "neovim-nightly-overlay": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
@ -430,6 +831,33 @@
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": {
"lastModified": 1722471252,
"narHash": "sha256-rgNPBiWN+y2jBiXIEgV/McBfkPeZax80eol0FBoupCk=",
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
"rev": "fe7178b41d84add25c63a695620629050fb35bbd",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
"type": "github"
}
},
"neovim-nightly-overlay_2": {
"inputs": {
"flake-compat": "flake-compat_5",
"flake-parts": "flake-parts_4",
"git-hooks": "git-hooks_3",
"hercules-ci-effects": "hercules-ci-effects_2",
"neovim-src": "neovim-src_2",
"nixpkgs": [
"webshite",
"ide",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1719211247, "lastModified": 1719211247,
"narHash": "sha256-GaEckCf2RaHzoEDj/j07BIV6eyDOT5wCFVSdbbkZ87U=", "narHash": "sha256-GaEckCf2RaHzoEDj/j07BIV6eyDOT5wCFVSdbbkZ87U=",
@ -445,6 +873,22 @@
} }
}, },
"neovim-src": { "neovim-src": {
"flake": false,
"locked": {
"lastModified": 1722463651,
"narHash": "sha256-3YorBqxT1RpL3Z2rLDCJhG+1HnBsgjrW8AOlTkFWlbA=",
"owner": "neovim",
"repo": "neovim",
"rev": "e820474cde09273608be5f57e1032aab21e3c97d",
"type": "github"
},
"original": {
"owner": "neovim",
"repo": "neovim",
"type": "github"
}
},
"neovim-src_2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1719138008, "lastModified": 1719138008,
@ -460,29 +904,32 @@
"type": "github" "type": "github"
} }
}, },
"nid": { "nix-darwin": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"ide",
"nixvim",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1719832725, "lastModified": 1722082646,
"narHash": "sha256-dr8DkeS74KVNTgi8BE0BiUKALb+EKlMIV86G2xPYO64=", "narHash": "sha256-od8dBWVP/ngg0cuoyEl/w9D+TCNDj6Kh4tr151Aax7w=",
"owner": "nix-community", "owner": "lnl7",
"repo": "nix-index-database", "repo": "nix-darwin",
"rev": "2917972ed34ce292309b3a4976286f8b5c08db27", "rev": "0413754b3cdb879ba14f6e96915e5fdf06c6aab6",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "lnl7",
"repo": "nix-index-database", "repo": "nix-darwin",
"type": "github" "type": "github"
} }
}, },
"nix-darwin": { "nix-darwin_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"webshite",
"ide", "ide",
"nixvim", "nixvim",
"nixpkgs" "nixpkgs"
@ -504,11 +951,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1719690277, "lastModified": 1725634671,
"narHash": "sha256-0xSej1g7eP2kaUF+JQp8jdyNmpmCJKRpO12mKl/36Kc=", "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "2741b4b489b55df32afac57bc4bfd220e8bf617e", "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -518,6 +965,21 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-24_05": {
"locked": {
"lastModified": 1717144377,
"narHash": "sha256-F/TKWETwB5RaR8owkPPi+SPJh83AQsm6KrQAlJ8v/uA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "805a384895c696f802a9bf5bf4720f37385df547",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-24.05",
"type": "indirect"
}
},
"nixvim": { "nixvim": {
"inputs": { "inputs": {
"devshell": "devshell", "devshell": "devshell",
@ -530,8 +992,38 @@
"ide", "ide",
"nixpkgs" "nixpkgs"
], ],
"nuschtosSearch": "nuschtosSearch",
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": {
"lastModified": 1722492816,
"narHash": "sha256-aZe7oSm/+GM1whS6bxZy+DJgbcy8rDIkygBA0owCvmU=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "820f8d58eafd7121989fea3ae9e71f29699d856b",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixvim",
"type": "github"
}
},
"nixvim_2": {
"inputs": {
"devshell": "devshell_2",
"flake-compat": "flake-compat_7",
"flake-parts": "flake-parts_6",
"git-hooks": "git-hooks_4",
"home-manager": "home-manager_3",
"nix-darwin": "nix-darwin_2",
"nixpkgs": [
"webshite",
"ide",
"nixpkgs"
],
"treefmt-nix": "treefmt-nix_2"
},
"locked": { "locked": {
"lastModified": 1719228487, "lastModified": 1719228487,
"narHash": "sha256-eJUcZAjOcGAoh97ZRsy+ls8IkHPMpDuh0IpRKSmoWs4=", "narHash": "sha256-eJUcZAjOcGAoh97ZRsy+ls8IkHPMpDuh0IpRKSmoWs4=",
@ -546,6 +1038,29 @@
"type": "github" "type": "github"
} }
}, },
"nuschtosSearch": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"ide",
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1722144272,
"narHash": "sha256-olZbfaEdd+zNPuuyYcYGaRzymA9rOmth8yXOlVm+LUs=",
"owner": "NuschtOS",
"repo": "search",
"rev": "16565307c267ec219c2b5d3494ba66df08e7d403",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"repo": "search",
"type": "github"
}
},
"parts": { "parts": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
@ -553,11 +1068,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1719745305, "lastModified": 1725234343,
"narHash": "sha256-xwgjVUpqSviudEkpQnioeez1Uo2wzrsMaJKJClh+Bls=", "narHash": "sha256-+ebgonl3NbiKD2UD0x4BszCZQ6sTfL4xioaM49o5B3Y=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "c3c5ecc05edc7dafba779c6c1a61cd08ac6583e9", "rev": "567b938d64d4b4112ee253b9274472dc3a346eb6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -568,14 +1083,16 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"catppuccin": "catppuccin",
"home-manager": "home-manager", "home-manager": "home-manager",
"hosts": "hosts", "hosts": "hosts",
"ide": "ide", "ide": "ide",
"nid": "nid", "musnix": "musnix",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"parts": "parts", "parts": "parts",
"sal": "sal" "sal": "sal",
"simple-nixos-mailserver": "simple-nixos-mailserver",
"vpsadminos": "vpsadminos",
"webshite": "webshite"
} }
}, },
"sal": { "sal": {
@ -601,6 +1118,29 @@
"type": "github" "type": "github"
} }
}, },
"simple-nixos-mailserver": {
"inputs": {
"blobs": "blobs",
"flake-compat": "flake-compat_4",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-24_05": "nixpkgs-24_05"
},
"locked": {
"lastModified": 1722877200,
"narHash": "sha256-qgKDNJXs+od+1UbRy62uk7dYal3h98I4WojfIqMoGcg=",
"owner": "simple-nixos-mailserver",
"repo": "nixos-mailserver",
"rev": "af7d3bf5daeba3fc28089b015c0dd43f06b176f2",
"type": "gitlab"
},
"original": {
"owner": "simple-nixos-mailserver",
"repo": "nixos-mailserver",
"type": "gitlab"
}
},
"systems": { "systems": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1681028828,
@ -631,6 +1171,36 @@
"type": "github" "type": "github"
} }
}, },
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1680978846,
"narHash": "sha256-Gtqg8b/v49BFDpDetjclCYXm8mAnTrUzR0JnE2nv5aw=",
"owner": "nix-systems",
"repo": "x86_64-linux",
"rev": "2ecfcac5e15790ba6ce360ceccddb15ad16d08a8",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "x86_64-linux",
"type": "github"
}
},
"treefmt-nix": { "treefmt-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -639,6 +1209,29 @@
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": {
"lastModified": 1722330636,
"narHash": "sha256-uru7JzOa33YlSRwf9sfXpJG+UAV+bnBEYMjrzKrQZFw=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "768acdb06968e53aa1ee8de207fd955335c754b7",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"treefmt-nix_2": {
"inputs": {
"nixpkgs": [
"webshite",
"ide",
"nixvim",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1718522839, "lastModified": 1718522839,
"narHash": "sha256-ULzoKzEaBOiLRtjeY3YoGFJMwWSKRYOic6VNw2UyTls=", "narHash": "sha256-ULzoKzEaBOiLRtjeY3YoGFJMwWSKRYOic6VNw2UyTls=",
@ -652,6 +1245,42 @@
"repo": "treefmt-nix", "repo": "treefmt-nix",
"type": "github" "type": "github"
} }
},
"vpsadminos": {
"locked": {
"lastModified": 1725810385,
"narHash": "sha256-+6UULi05KMHmLfhlrNGhMdLZUoQeC5Dc1nLFdINyeyI=",
"owner": "vpsfreecz",
"repo": "vpsadminos",
"rev": "37c5eb47ca3f11deac83e4ada20a6c21d5487f29",
"type": "github"
},
"original": {
"owner": "vpsfreecz",
"repo": "vpsadminos",
"type": "github"
}
},
"webshite": {
"inputs": {
"ide": "ide_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1722604181,
"narHash": "sha256-lbli+H6fgQlVyXX4qtU8SfvncDB+HZOUd53Rj23pyv0=",
"owner": "ivandimitrov8080",
"repo": "idimitrov.dev",
"rev": "4d1b71bf30bcf24b0ef5e347026d2c5369cad8eb",
"type": "github"
},
"original": {
"owner": "ivandimitrov8080",
"repo": "idimitrov.dev",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View File

@ -1,6 +1,7 @@
{ {
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
vpsadminos.url = "github:vpsfreecz/vpsadminos";
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -19,13 +20,23 @@
}; };
sal = { sal = {
url = "github:ivandimitrov8080/sal"; url = "github:ivandimitrov8080/sal";
inputs = { nixpkgs.follows = "nixpkgs"; ide.follows = "ide"; }; inputs = {
nixpkgs.follows = "nixpkgs";
ide.follows = "ide";
};
}; };
nid = { musnix = {
url = "github:nix-community/nix-index-database"; url = "github:musnix/musnix";
inputs.nixpkgs.follows = "nixpkgs";
};
simple-nixos-mailserver = {
url = "gitlab:simple-nixos-mailserver/nixos-mailserver";
inputs.nixpkgs.follows = "nixpkgs";
};
webshite = {
url = "github:ivandimitrov8080/idimitrov.dev";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
catppuccin.url = "github:catppuccin/nix";
}; };
outputs = inputs: inputs.parts.lib.mkFlake { inherit inputs; } { imports = [ ./. ]; }; outputs = inputs: inputs.parts.lib.mkFlake {inherit inputs;} {imports = [./.];};
} }

View File

@ -0,0 +1,30 @@
_: {
flake.hardwareConfigurations = {
nova = { lib, modulesPath, ... }: {
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = {
initrd = {
availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" "sdhci_pci" ];
kernelModules = [ ];
luks.devices."nixos".device = "/dev/disk/by-uuid/712dd8ba-d5b4-438a-9a77-663b8c935cfe";
};
kernelModules = [ "kvm-intel" ];
extraModulePackages = [ ];
};
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/47536cbe-7265-493b-a2e3-bbd376a6f9af";
fsType = "btrfs";
};
"/boot" = {
device = "/dev/disk/by-uuid/4C3C-993A";
fsType = "vfat";
};
};
swapDevices = [ ];
networking.useDHCP = lib.mkForce true;
nixpkgs.hostPlatform = lib.mkForce "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkForce false;
};
};
}

View File

@ -1,3 +0,0 @@
{
imports = [ ./ivand ];
}

View File

@ -1,23 +0,0 @@
toplevel@{ inputs, withSystem, ... }:
{
flake.homeConfigurations.ivand = withSystem "x86_64-linux" (ctx@{ pkgs, ... }:
inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules =
let
mods = toplevel.config.flake.homeManagerModules;
in
[
{
home.stateVersion = "24.05";
}
inputs.nid.hmModules.nix-index
inputs.catppuccin.homeManagerModules.catppuccin
mods.all
mods.dev
mods.essential
mods.random
mods.reminders
];
});
}

View File

@ -1,3 +1,3 @@
{ {
imports = [ ./modules ./configs ]; imports = [./modules];
} }

View File

@ -1,3 +1,722 @@
{ toplevel @ { moduleWithSystem, ... }: {
imports = [ ./packages ]; flake.homeManagerModules = {
base = moduleWithSystem (
_: { config, ... }: {
programs.home-manager.enable = true;
home.stateVersion = toplevel.config.flake.stateVersion;
xdg = {
enable = true;
userDirs = with config; {
enable = true;
createDirectories = true;
desktop = "${home.homeDirectory}/dt";
documents = "${home.homeDirectory}/doc";
download = "${home.homeDirectory}/dl";
pictures = "${home.homeDirectory}/pic";
videos = "${home.homeDirectory}/vid";
templates = "${home.homeDirectory}/tpl";
publicShare = "${home.homeDirectory}/pub";
music = "${home.homeDirectory}/mus";
};
mimeApps.enable = true;
};
}
);
ivand = moduleWithSystem (
_: { pkgs, ... }: {
home = {
username = "ivand";
homeDirectory = "/home/ivand";
sessionVariables = { EDITOR = "nvim"; };
packages = with pkgs; [ nvim ];
};
programs = {
git = with pkgs.lib; {
userName = mkForce "Ivan Kirilov Dimitrov";
userEmail = mkForce "ivan@idimitrov.dev";
signing = mkForce {
signByDefault = true;
key = "ivan@idimitrov.dev";
};
};
ssh = {
matchBlocks = {
vpsfree-ivand = {
hostname = "10.0.0.1";
user = "ivand";
};
vpsfree-root = {
hostname = "10.0.0.1";
user = "root";
};
};
};
};
}
);
util = moduleWithSystem (
_: { pkgs
, config
, ...
}: {
home = {
packages = with pkgs; [ openssl mlocate uutils-coreutils-noprefix speedtest-cli ];
sessionVariables = {
PAGER = "bat";
BAT_THEME = "catppuccin-mocha";
};
};
programs = {
password-store = {
enable = true;
package = pkgs.pass.withExtensions (e: with e; [ pass-otp pass-file ]);
settings = { PASSWORD_STORE_DIR = "${config.home.homeDirectory}/.password-store"; };
};
git = {
enable = true;
delta.enable = true;
extraConfig = {
color.ui = "auto";
pull.rebase = true;
push.autoSetupRemote = true;
};
aliases = {
a = "add .";
c = "commit";
d = "diff --cached";
p = "push";
pa = "!git remote | xargs -L1 git push --all";
};
};
tealdeer = {
enable = true;
settings = {
display = { compact = true; };
updates = { auto_update = true; };
};
};
bottom = {
enable = true;
settings = {
flags = { rate = "250ms"; };
row = [
{
ratio = 40;
child = [{ type = "cpu"; } { type = "mem"; } { type = "net"; }];
}
{
ratio = 35;
child = [{ type = "temp"; } { type = "disk"; }];
}
{
ratio = 40;
child = [
{
type = "proc";
default = true;
}
];
}
];
};
};
fzf = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
};
nix-index = {
enable = true;
enableZshIntegration = false;
enableBashIntegration = false;
};
bat = {
enable = true;
themes =
let
catppuccin = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "bat";
rev = "82e7ca555f805b53d2b377390e4ab38c20282e83";
sha256 = "sha256-/Ob9iCVyjJDBCXlss9KwFQTuxybmSSzYRBZxOT10PZg=";
};
in
{
catppuccin-mocha = {
src = catppuccin;
file = "themes/Catppuccin Mocha.tmTheme";
};
catppuccin-macchiato = {
src = catppuccin;
file = "themes/Catppuccin Macchiato.tmTheme";
};
catppuccin-frappe = {
src = catppuccin;
file = "themes/Catppuccin Frappe.tmTheme";
};
catppuccin-latte = {
src = catppuccin;
file = "themes/Catppuccin Latte.tmTheme";
};
};
};
ssh.enable = true;
gpg.enable = true;
};
services = {
gpg-agent = {
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
enableNushellIntegration = true;
pinentryPackage = pkgs.pinentry-qt;
};
};
}
);
shell = moduleWithSystem (
_: { pkgs, ... }: {
programs =
let
shellAliases = {
cal = "cal $(date +%Y)";
GG = "git add . && git commit -m 'GG' && git push --set-upstream origin HEAD";
gad = "git add . && git diff --cached";
gac = "ga && gc";
ga = "git add .";
gc = "git commit";
dev = "nix develop --command $SHELL";
ls = "eza";
la = "eza --all";
lt = "eza --git-ignore --all --tree --level=10";
sc = "systemctl";
neofetch = "${pkgs.fastfetch}/bin/fastfetch -c all.jsonc";
};
sessionVariables = { };
in
{
bash = {
inherit shellAliases sessionVariables;
enable = true;
enableVteIntegration = true;
historyControl = [ "erasedups" ];
historyIgnore = [ "ls" "cd" "exit" ];
};
zsh = {
inherit shellAliases sessionVariables;
enable = true;
dotDir = ".config/zsh";
defaultKeymap = "viins";
enableVteIntegration = true;
syntaxHighlighting.enable = true;
autosuggestion.enable = true;
history.expireDuplicatesFirst = true;
historySubstringSearch.enable = true;
};
nushell = {
enable = true;
environmentVariables = { config = ''{ show_banner: false, completions: { quick: false partial: false algorithm: "prefix" } } ''; };
shellAliases = {
gcal = ''bash -c "cal $(date +%Y)" '';
la = "ls -al";
dev = "nix develop --command $env.SHELL";
};
};
kitty.shellIntegration = {
enableBashIntegration = true;
enableZshIntegration = true;
};
tmux = {
enable = true;
clock24 = true;
baseIndex = 1;
escapeTime = 0;
keyMode = "vi";
shell = "\${SHELL}";
terminal = "screen-256color";
plugins = with pkgs.tmuxPlugins; [ tilish catppuccin ];
extraConfig = ''
set-option -a terminal-features 'screen-256color:RGB'
'';
};
starship = {
enable = true;
enableNushellIntegration = true;
enableZshIntegration = true;
enableBashIntegration = true;
};
eza = {
enable = true;
enableZshIntegration = true;
enableBashIntegration = true;
extraOptions = [
"--long"
"--header"
"--icons"
"--smart-group"
"--mounts"
"--octal-permissions"
"--git"
];
};
};
}
);
swayland = moduleWithSystem (
_: { pkgs
, config
, ...
}: {
home = {
packages = with pkgs; [ audacity gimp grim libnotify libreoffice-qt mupdf slurp transmission_4 wl-clipboard xdg-user-dirs xdg-utils xwayland telegram-desktop ];
pointerCursor = with pkgs; {
name = "catppuccin-mocha-green-cursors";
package = catppuccin-cursors.mochaGreen;
size = 24;
gtk.enable = true;
};
};
wayland.windowManager.sway = {
enable = true;
systemd.enable = true;
config = rec {
menu = "rofi -show run";
terminal = "kitty";
modifier = "Mod4";
startup = [
{ command = "swaymsg 'workspace 2; exec firefox'"; }
{ command = "swaymsg 'workspace 1; exec kitty'"; }
];
bars = [ ];
window.titlebar = false;
keybindings = pkgs.lib.mkOptionDefault {
"F1" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle";
"Shift+F1" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle";
"F2" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%";
"Shift+F2" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-volume @DEFAULT_SOURCE@ -5%";
"F3" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%";
"Shift+F3" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-volume @DEFAULT_SOURCE@ +5%";
"F9" = "exec doas ${pkgs.light}/bin/light -A 10";
"F8" = "exec doas ${pkgs.light}/bin/light -U 10";
"Alt+Shift+l" = "exec ${pkgs.swaylock}/bin/swaylock";
"${modifier}+p" = "exec ${menu}";
"${modifier}+Shift+s" = "exec ${pkgs.screenshot}/bin/screenshot";
"${modifier}+c" = "exec ${pkgs.sal}/bin/sal";
"End" = "exec rofi -show calc";
"${modifier}+Shift+r" = "reload";
"${modifier}+Shift+c" = "kill";
"${modifier}+Shift+q" = "exit";
};
input = {
"*" = {
xkb_layout = "us,bg";
xkb_options = "grp:win_space_toggle";
xkb_variant = ",phonetic";
};
};
};
swaynag = { inherit (config.wayland.windowManager.sway) enable; };
};
programs = {
waybar = {
enable = true;
settings = {
mainBar =
{
layer = "top";
position = "top";
height = 30;
output = [ "eDP-1" "HDMI-A-1" "*" ];
modules-left = [ "sway/workspaces" "sway/mode" ];
modules-center = [ "clock#week" "clock#year" "clock#time" ];
modules-right = [ "network" "pulseaudio" "memory" "cpu" "battery" ];
"clock#time" = {
format = "{:%H:%M:%S}";
interval = 1;
tooltip = false;
};
"clock#week" = {
format = "{:%a}";
tooltip = false;
};
"clock#year" = {
format = "{:%Y-%m-%d}";
tooltip = false;
};
battery = {
format = "{icon} <span color='#cdd6f4'>{capacity}% {time}</span>";
format-time = " {H} h {M} m";
format-icons = [ "" "" "" "" "" ];
states = {
warning = 30;
critical = 15;
};
tooltip = false;
};
cpu = { format = "<span color='#74c7ec'></span> {usage}%"; };
memory = {
format = "<span color='#89b4fa'></span> {percentage}%";
interval = 5;
};
pulseaudio = {
format = "<span color='#a6e3a1'>{icon}</span> {volume}% | {format_source}";
format-muted = "<span color='#f38ba8'>󰝟</span> {volume}% | {format_source}";
format-source = "{volume}% <span color='#a6e3a1'></span>";
format-source-muted = "{volume}% <span color='#f38ba8'></span>";
format-icons = {
headphone = "";
default = [ "" "" "" ];
};
tooltip = false;
};
network = {
format-ethernet = "<span color='#89dceb'>󰈁</span> | <span color='#fab387'></span> {bandwidthUpBytes} <span color='#fab387'></span> {bandwidthDownBytes}";
format-wifi = "<span color='#06b6d4'>{icon}</span> | <span color='#fab387'></span> {bandwidthUpBytes} <span color='#fab387'></span> {bandwidthDownBytes}";
format-disconnected = "<span color='#eba0ac'>󰈂 no connection</span>";
format-icons = [ "󰤟" "󰤢" "󰤥" "󰤨" ];
interval = 5;
tooltip = false;
};
"sway/workspaces" = {
disable-scroll = true;
all-outputs = true;
};
};
};
systemd = {
enable = true;
target = "sway-session.target";
};
style = ''
@define-color rosewater #f5e0dc;
@define-color flamingo #f2cdcd;
@define-color pink #f5c2e7;
@define-color mauve #cba6f7;
@define-color red #f38ba8;
@define-color maroon #eba0ac;
@define-color peach #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color teal #94e2d5;
@define-color sky #89dceb;
@define-color sapphire #74c7ec;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color text #cdd6f4;
@define-color subtext1 #bac2de;
@define-color subtext0 #a6adc8;
@define-color overlay2 #9399b2;
@define-color overlay1 #7f849c;
@define-color overlay0 #6c7086;
@define-color surface2 #585b70;
@define-color surface1 #45475a;
@define-color surface0 #313244;
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;
* {
font-family: FontAwesome, 'Fira Code';
font-size: 13px;
}
window#waybar {
background-color: rgba(43, 48, 59, 0.1);
border-bottom: 2px solid rgba(100, 114, 125, 0.5);
color: @rosewater;
}
#workspaces button {
padding: 0 5px;
background-color: @base;
color: @text;
border-radius: 6px;
}
#workspaces button:hover {
background: @mantle;
}
#workspaces button.focused {
background-color: @crust;
box-shadow: inset 0 -2px @sky;
}
#workspaces button.urgent {
background-color: @red;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
padding: 0 10px;
color: @text;
background-color: @base;
margin: 0 .5em;
border-radius: 9999px;
}
#clock.week {
margin-right: 0px;
color: @peach;
border-radius: 9999px 0px 0px 9999px;
}
#clock.year {
margin: 0px;
padding: 0px;
color: @pink;
border-radius: 0px;
}
#clock.time {
margin-left: 0px;
color: @sky;
border-radius: 0px 9999px 9999px 0px;
}
#battery.charging, #battery.plugged {
color: @green;
}
#battery.discharging {
color: @yellow;
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
#battery.warning:not(.charging) {
background-color: @red;
}
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) {
background-color: @red;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
'';
};
swaylock = {
enable = true;
settings = {
show-failed-attempts = true;
image = config.home.homeDirectory + "/pic/bg.png";
};
};
rofi = {
enable = true;
package = pkgs.rofi-wayland.override {
plugins = with pkgs; [
(
rofi-calc.override
{
rofi-unwrapped = rofi-wayland-unwrapped;
}
)
];
};
extraConfig = {
modi = "window,drun,run,ssh,calc";
};
};
kitty = {
enable = true;
font = {
package = pkgs.fira-code;
name = "FiraCodeNFM-Reg";
};
settings = {
background_opacity = "0.90";
cursor_shape = "beam";
};
};
imv = {
enable = true;
settings = { options.fullscreen = true; };
};
mpv = {
enable = true;
scripts = with pkgs.mpvScripts; [ uosc thumbfast ];
};
bash.profileExtra = ''[ "$(tty)" = "/dev/tty1" ] && exec sway '';
zsh.loginExtra = ''[ "$(tty)" = "/dev/tty1" ] && exec sway '';
nushell.loginFile.text = ''if (tty) == "/dev/tty1" { sway } '';
};
services = {
mako.enable = true;
cliphist = {
enable = true;
systemdTarget = "sway-session.target";
};
};
systemd.user = {
timers = {
rbingwp = {
Timer = {
OnCalendar = "*-*-* 10:00:00";
Persistent = true;
};
Install = { WantedBy = [ "timers.target" ]; };
};
};
services = {
wpd = {
Install = { WantedBy = [ "sway-session.target" ]; };
Unit = {
Description = "Switch background every x minutes";
After = "graphical-session-pre.target";
PartOf = "graphical-session.target";
};
Service = {
ExecStart = [ "${pkgs.wpd}/bin/wpd" ];
};
};
};
};
xdg.mimeApps.defaultApplications = {
"image/jpg" = "imv.desktop";
"image/jpeg" = "imv.desktop";
"image/png" = "imv.desktop";
"image/webp" = "imv.desktop";
"image/gif" = "imv.desktop";
"image/svg+xml" = "imv.desktop";
"video/mp4" = "mpv.desktop";
"video/mpeg" = "mpv.desktop";
"video/ogg" = "mpv.desktop";
"video/webm" = "mpv.desktop";
"video/x-msvideo" = "mpv.desktop";
};
}
);
web = moduleWithSystem (
_: _: {
programs = {
browserpass.enable = true;
firefox = {
enable = true;
profiles.ivand = {
id = 0;
search = {
default = "DuckDuckGo";
privateDefault = "DuckDuckGo";
force = true;
};
bookmarks = [
{
name = "home-options";
url = "https://nix-community.github.io/home-manager/options.xhtml";
}
{
name = "nixvim-docs";
url = "https://nix-community.github.io/nixvim/";
}
];
settings = {
"general.smoothScroll" = true;
"signon.rememberSignons" = false;
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
"layout.frame_rate" = 60;
};
};
policies = {
CaptivePortal = false;
DisableFirefoxStudies = true;
DisablePocket = true;
DisableTelemetry = true;
DisableFirefoxAccounts = true;
OfferToSaveLogins = false;
OfferToSaveLoginsDefault = false;
PasswordManagerEnabled = false;
NoDefaultBookmarks = true;
PopupBlocking.Default = false;
PromptForDownloadLocation = false;
TranslateEnabled = false;
SearchBar = "unified";
SearchSuggestEnabled = false;
SanitizeOnShutdown = {
Cache = true;
FormData = true;
Locked = true;
Cookies = false;
Downloads = false;
History = false;
Sessions = false;
SiteSettings = false;
OfflineApps = true;
};
FirefoxHome = {
Search = true;
Pocket = false;
Snippets = false;
TopSites = false;
Highlights = false;
};
UserMessaging = {
ExtensionRecommendations = false;
FeatureRecommendations = false;
UrlbarInterventions = false;
MoreFromMozilla = false;
SkipOnboarding = true;
};
Handlers = {
schemes = {
mailto = {
action = "useHelperApp";
ask = false;
handlers = [
{
name = "RoundCube";
uriTemplate = "https://mail.idimitrov.dev/?_task=mail&_action=compose&_to=%s";
}
];
};
};
};
};
};
chromium = {
enable = true;
};
};
xdg.mimeApps.defaultApplications = {
"text/html" = "firefox.desktop";
"x-scheme-handler/http" = "firefox.desktop";
"x-scheme-handler/https" = "firefox.desktop";
"x-scheme-handler/about" = "firefox.desktop";
"x-scheme-handler/unknown" = "firefox.desktop";
};
}
);
};
} }

View File

@ -1,191 +0,0 @@
{ moduleWithSystem, ... }: {
flake.homeManagerModules = {
dev = moduleWithSystem (
top@{ ... }:
perSystem@{ pkgs, ... }: {
home.packages = with pkgs; [
openssh
procs
ripgrep
fswatch
nvim
];
}
);
essential = moduleWithSystem (
top@{ ... }:
perSystem@{ pkgs, ... }: {
home.packages = with pkgs; [
gopass
ffmpeg
transmission_4
speedtest-cli
];
}
);
random = moduleWithSystem (
top@{ ... }:
perSystem@{ pkgs, ... }: {
home.packages = with pkgs; [
xonotic
tor-browser
electrum
bisq-desktop
];
}
);
all = moduleWithSystem
(
top@{ ... }:
perSystem@{ pkgs, ... }:
rec {
imports = [ ../programs ];
programs.home-manager.enable = true;
catppuccin = {
enable = true;
flavor = "mocha";
};
gtk = {
enable = true;
};
home = rec {
username = "ivand";
homeDirectory = "/home/ivand";
sessionPath = [
"$HOME/.local/bin"
];
sessionVariables = {
PASSWORD_STORE_DIR = "${homeDirectory}/.password-store";
EDITOR = "nvim";
PAGER = "bat";
TERM = "screen-256color";
MAKEFLAGS = "-j 4";
};
pointerCursor = with pkgs; {
name = lib.mkForce "BreezeX-RosePine-Linux";
package = lib.mkForce rose-pine-cursor;
size = 24;
gtk.enable = true;
};
};
systemd.user = {
timers = {
rbingwp = {
Timer = {
OnCalendar = "*-*-* 10:00:00";
Persistent = true;
};
Install = {
WantedBy = [ "timers.target" ];
};
};
};
services = {
wpd = {
Service = {
Environment = [
"PATH=${pkgs.xdg-user-dirs}/bin:${pkgs.swaybg}/bin"
];
ExecStart = [ "${pkgs.nushell}/bin/nu -c 'swaybg -i ((xdg-user-dir PICTURES) | path split | path join bg.png)'" ];
};
};
bingwp = {
Service = {
Type = "oneshot";
Environment = [
"PATH=${pkgs.xdg-user-dirs}/bin:${pkgs.nushell}/bin"
];
ExecStart = [ "${pkgs.scripts}/bin/bingwp" ];
};
};
rbingwp = {
Install = {
WantedBy = [ "sway-session.target" ];
};
Unit = {
Description = "Restart bingwp and wpd services";
After = "graphical-session-pre.target";
PartOf = "graphical-session.target";
};
Service = {
Type = "oneshot";
ExecStart = [ "${pkgs.nushell}/bin/nu -c '${pkgs.systemd}/bin/systemctl --user restart bingwp.service; ${pkgs.systemd}/bin/systemctl --user restart wpd.service'" ];
};
};
};
};
xdg = {
enable = true;
userDirs = {
enable = true;
createDirectories = true;
desktop = "${home.homeDirectory}/dt";
documents = "${home.homeDirectory}/doc";
download = "${home.homeDirectory}/dl";
pictures = "${home.homeDirectory}/pic";
videos = "${home.homeDirectory}/vid";
templates = "${home.homeDirectory}/tpl";
publicShare = "${home.homeDirectory}/pub";
music = "${home.homeDirectory}/mus";
};
mimeApps = {
enable = true;
defaultApplications = {
"text/html" = "firefox.desktop";
"x-scheme-handler/http" = "firefox.desktop";
"x-scheme-handler/https" = "firefox.desktop";
"x-scheme-handler/about" = "firefox.desktop";
"x-scheme-handler/unknown" = "firefox.desktop";
"x-scheme-handler/mailto" = "userapp-Thunderbird-LDALA2.desktop";
"message/rfc822" = "userapp-Thunderbird-LDALA2.desktop";
"x-scheme-handler/mid" = "userapp-Thunderbird-LDALA2.desktop";
};
};
};
}
);
reminders =
moduleWithSystem (
top@{ ... }:
perSystem@{ pkgs, ... }: {
systemd.user = {
timers = {
track-time = {
Timer = {
OnCalendar = "Mon..Fri *-*-* 16:00:*";
Persistent = true;
};
Install = {
WantedBy = [ "timers.target" ];
};
};
};
services = {
track-time = {
Service = {
Type = "oneshot";
ExecStart = [ "${pkgs.libnotify}/bin/notify-send -u critical 'Reminder: Track time'" ];
};
};
};
};
}
);
cust = moduleWithSystem (
top@{ ... }:
perSystem@{ pkgs, ... }: {
imports = [ ../programs/zsh ../programs/nushell ../programs/starship ../programs/carapace ../programs/bottom ../programs/firefox ];
home.packages = with pkgs; [
openssh
procs
ripgrep
fswatch
];
}
);
};
}

View File

@ -1,6 +0,0 @@
{
programs.bat = {
enable = true;
catppuccin.enable = true;
};
}

View File

@ -1,34 +0,0 @@
{
programs.bottom = {
enable = true;
catppuccin.enable = true;
settings = {
flags = {
rate = "250ms";
};
row = [
{
ratio = 40;
child = [
{ type = "cpu"; }
{ type = "mem"; }
{ type = "net"; }
];
}
{
ratio = 35;
child = [
{ type = "temp"; }
{ type = "disk"; }
];
}
{
ratio = 40;
child = [
{ type = "proc"; default = true; }
];
}
];
};
};
}

View File

@ -1,7 +0,0 @@
{
programs.carapace = {
enable = true;
enableNushellIntegration = true;
enableZshIntegration = true;
};
}

View File

@ -1,6 +0,0 @@
{ pkgs, ... }: {
programs.chromium = {
enable = true;
package = pkgs.ungoogled-chromium;
};
}

View File

@ -1,6 +0,0 @@
{
services.cliphist = {
enable = true;
systemdTarget = "sway-session.target";
};
}

View File

@ -1,6 +0,0 @@
{
programs = {
nix-index-database.comma.enable = true;
nix-index.enable = true;
};
}

View File

@ -1,30 +0,0 @@
{ ... }: {
imports = [
./bat
./bottom
./carapace
./chromium
./cliphist
./comma
./firefox
./git
./gpg
./imv
./mako
./kitty
./lf
./mpv
./nushell
./obs-studio
./pueue
./rofi
./starship
./sway
./swaylock
./tealdeer
./tmux
./waybar
./zsh
];
programs.browserpass.enable = true;
}

View File

@ -1,74 +0,0 @@
{ pkgs, ... }: {
programs.firefox = {
enable = true;
profiles.ivand = {
id = 0;
search.default = "DuckDuckGo";
bookmarks = [
{
name = "home-options";
url = "https://nix-community.github.io/home-manager/options.xhtml";
}
{
name = "nixvim-docs";
url = "https://nix-community.github.io/nixvim/";
}
];
settings = {
"general.smoothScroll" = true;
"signon.rememberSignons" = false;
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
"layout.frame_rate" = 120;
};
};
policies = {
CaptivePortal = false;
DisableFirefoxStudies = true;
DisablePocket = true;
DisableTelemetry = true;
DisableFirefoxAccounts = true;
OfferToSaveLogins = false;
OfferToSaveLoginsDefault = false;
PasswordManagerEnabled = false;
FirefoxHome = {
Search = true;
Pocket = false;
Snippets = false;
TopSites = false;
Highlights = false;
};
UserMessaging = {
ExtensionRecommendations = false;
SkipOnboarding = true;
};
Handlers = {
schemes = {
mailto = {
action = "useHelperApp";
ask = false;
handlers = [
{
name = "RoundCube";
uriTemplate = "https://mail.idimitrov.dev/?_task=mail&_action=compose&_to=%s";
}
];
};
};
};
};
};
home = {
file.".mozilla/native-messaging-hosts/gpgmejson.json".text = builtins.toJSON {
name = "gpgmejson";
description = "Integration with GnuPG";
path = "${pkgs.gpgme.dev}/bin/gpgme-json";
type = "stdio";
allowed_extensions = [
"jid1-AQqSMBYb0a8ADg@jetpack"
];
};
};
}

View File

@ -1,23 +0,0 @@
{
programs.git = {
enable = true;
delta.enable = true;
userName = "Ivan Kirilov Dimitrov";
userEmail = "ivan@idimitrov.dev";
signing = {
signByDefault = true;
key = "ivan@idimitrov.dev";
};
extraConfig = {
color.ui = "auto";
pull.rebase = true;
push.autoSetupRemote = true;
};
aliases = {
a = "add .";
c = "commit";
d = "diff --cached";
p = "push";
};
};
}

View File

@ -1,11 +0,0 @@
{ pkgs, ... }: {
programs.gpg = {
enable = true;
};
services.gpg-agent = {
enable = true;
enableZshIntegration = true;
enableNushellIntegration = true;
pinentryPackage = pkgs.pinentry-qt;
};
}

View File

@ -1,6 +0,0 @@
{
programs.imv = {
enable = true;
catppuccin.enable = true;
};
}

View File

@ -1,19 +0,0 @@
{ pkgs, ... }: {
programs.kitty = {
enable = true;
catppuccin.enable = true;
font = {
package = pkgs.fira-code;
name = "FiraCodeNFM-Reg";
};
shellIntegration = {
enableBashIntegration = true;
enableZshIntegration = true;
};
settings = {
background_opacity = "0.96";
cursor_shape = "beam";
term = "screen-256color";
};
};
}

View File

@ -1,12 +0,0 @@
{
programs.lf = {
enable = true;
extraConfig = builtins.readFile ./lfrc;
keybindings = {
D = "trash";
T = "touch";
M = "mkdir";
R = "mv";
};
};
}

View File

@ -1,39 +0,0 @@
# Basic Settings
set hidden true
set ignorecase true
set icons true
# Custom Functions
cmd trash ${{
files=$(printf "$fx" | tr '\n' ';')
while [ "$files" ]; do
file=${files%%;*}
rm -rf "$(basename "$file")"
if [ "$files" = "$file" ]; then
files=''
else
files="${files#*;}"
fi
done
}}
cmd mkdir ${{
printf "Directory Name: "
read ans
mkdir "$ans"
}}
cmd touch ${{
printf "File Name: "
read ans
touch "$ans"
}}
cmd mv ${{
printf "Move to: "
read ans
mv "$f" "$ans"
}}

View File

@ -1,6 +0,0 @@
{
services.mako = {
enable = true;
catppuccin.enable = true;
};
}

View File

@ -1,6 +0,0 @@
{
programs.mpv = {
enable = true;
catppuccin.enable = true;
};
}

View File

@ -1,34 +0,0 @@
{ pkgs, ... }: {
programs.nushell = {
enable = true;
environmentVariables = {
config = ''
{
show_banner: false,
completions: {
quick: false
partial: false
algorithm: "prefix"
}
}
'';
PATH = "($env.PATH | split row (char esep) | append ($env.HOME | path join .local bin))";
};
shellAliases = {
gcal = ''
bash -c "cal $(date +%Y)"
'';
la = "ls -al";
dev = "nix develop --command $env.SHELL";
torrent = "transmission-remote";
vi = "nvim";
sc = "systemctl";
neofetch = "${pkgs.fastfetch}/bin/fastfetch -c all.jsonc";
};
loginFile.text = ''
if (tty) == "/dev/tty1" {
sway
}
'';
};
}

View File

@ -1,6 +0,0 @@
{ pkgs, ... }: {
programs.obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [ wlrobs ];
};
}

View File

@ -1,5 +0,0 @@
{
services.pueue = {
enable = true;
};
}

View File

@ -1,19 +0,0 @@
{ pkgs, ... }: {
programs.rofi = {
enable = true;
catppuccin.enable = true;
package = pkgs.rofi-wayland.override {
plugins = with pkgs; [
(
rofi-calc.override
{
rofi-unwrapped = rofi-wayland-unwrapped;
}
)
];
};
extraConfig = {
modi = "window,drun,run,ssh,calc";
};
};
}

View File

@ -1,8 +0,0 @@
{
programs.starship = {
enable = true;
catppuccin.enable = true;
enableNushellIntegration = true;
enableZshIntegration = true;
};
}

View File

@ -1,66 +0,0 @@
{ pkgs, ... }: {
wayland.windowManager.sway = {
enable = true;
catppuccin.enable = true;
systemd.enable = true;
config = rec {
menu = "rofi -show run";
terminal = "kitty";
modifier = "Mod4";
startup = [
{ command = "swaymsg 'workspace 1; exec kitty'"; }
{ command = "swaymsg 'workspace 2; exec firefox'"; }
];
bars = [ ];
window.titlebar = false;
keybindings = pkgs.lib.mkOptionDefault {
# Audio
"XF86AudioMicMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle";
"XF86AudioRaiseVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%";
"XF86AudioLowerVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%";
"Alt+XF86AudioRaiseVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-volume @DEFAULT_SOURCE@ +5%";
"Alt+XF86AudioLowerVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-volume @DEFAULT_SOURCE@ -5%";
"XF86AudioMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle";
# Display
"Alt+Shift+l" = "exec ${pkgs.swaylock}/bin/swaylock"; # Lock screen
"XF86ScreenSaver" = "output 'eDP-1' toggle"; # Turn screen off
"XF86MonBrightnessUp" = "exec doas ${pkgs.light}/bin/light -A 10";
"XF86MonBrightnessDown" = "exec doas ${pkgs.light}/bin/light -U 10";
# Programs
"${modifier}+p" = "exec ${menu}";
"${modifier}+Shift+a" = "exec screenshot area";
"${modifier}+Shift+s" = "exec screenshot";
"${modifier}+c" = "exec ${pkgs.sal}/bin/sal";
"End" = "exec rofi -show calc";
# sway commands
"${modifier}+Shift+r" = "reload";
"${modifier}+Shift+c" = "kill";
"${modifier}+Shift+q" = "exit";
};
input = {
"*" = {
xkb_layout = "us,bg";
xkb_options = "grp:win_space_toggle";
xkb_variant = ",phonetic";
};
};
};
swaynag = {
enable = true;
};
};
home.packages = with pkgs; [
audacity
gimp
grim
libnotify
libreoffice-qt
mupdf
pavucontrol
slurp
wl-clipboard
xdg-user-dirs
xdg-utils
xwayland
];
}

View File

@ -1,10 +0,0 @@
{ config, ... }: {
programs.swaylock = {
enable = true;
catppuccin.enable = true;
settings = {
show-failed-attempts = true;
image = config.home.homeDirectory + "/pic/bg.png";
};
};
}

View File

@ -1,13 +0,0 @@
{
programs.tealdeer = {
enable = true;
settings = {
display = {
compact = true;
};
updates = {
auto_update = true;
};
};
};
}

View File

@ -1,15 +0,0 @@
{ pkgs, ... }: {
programs.tmux = {
enable = true;
clock24 = true;
baseIndex = 1;
escapeTime = 0;
keyMode = "vi";
shell = "\${SHELL}";
terminal = "screen-256color";
plugins = with pkgs.tmuxPlugins; [ tilish catppuccin ];
extraConfig = ''
set-option -a terminal-features 'screen-256color:RGB'
'';
};
}

View File

@ -1,84 +0,0 @@
{
programs.waybar = {
enable = true;
catppuccin.enable = true;
settings = {
mainBar =
let
in
{
layer = "top";
position = "top";
height = 30;
output = [
"eDP-1"
"HDMI-A-1"
];
modules-left = [ "sway/workspaces" ];
modules-center = [ "clock#week" "clock#year" "clock#time" ];
modules-right = [ "network" "pulseaudio" "memory" "cpu" "battery" ];
"clock#time" = {
format = "{:%H:%M:%S}";
interval = 1;
};
"clock#week" = {
format = "{:%a}";
};
"clock#year" = {
format = "{:%Y-%m-%d}";
};
battery = {
format = "{icon} <span color='#cdd6f4'>{capacity}% {time}</span>";
format-time = " {H} h {M} m";
format-icons = [ "" "" "" "" "" ];
states = {
warning = 30;
critical = 15;
};
};
cpu = {
format = "<span color='#74c7ec'></span> {usage}%";
};
memory = {
format = "<span color='#89b4fa'></span> {percentage}%";
interval = 5;
};
pulseaudio = {
format = "<span color='#a6e3a1'>{icon}</span> {volume}% | {format_source}";
format-muted = "<span color='#f38ba8'>󰝟</span> {volume}% | {format_source}";
format-source = "{volume}% <span color='#a6e3a1'></span>";
format-source-muted = "{volume}% <span color='#f38ba8'></span>";
format-icons = {
headphone = "";
default = [ "" "" "" ];
};
};
network = {
format-ethernet = "<span color='#89dceb'>󰈁</span> | <span color='#fab387'></span> {bandwidthUpBytes} <span color='#fab387'></span> {bandwidthDownBytes}";
format-wifi = "<span color='#06b6d4'>{icon}</span> | <span color='#fab387'></span> {bandwidthUpBytes} <span color='#fab387'></span> {bandwidthDownBytes}";
format-disconnected = "<span color='#eba0ac'>󰈂 no connection</span>";
format-icons = [ "󰤟" "󰤢" "󰤥" "󰤨" ];
interval = 5;
};
"sway/workspaces" = {
disable-scroll = true;
all-outputs = true;
};
};
};
systemd = {
enable = true;
target = "sway-session.target";
};
style = builtins.readFile ./style.css;
};
}

View File

@ -1,102 +0,0 @@
* {
font-family: FontAwesome, 'Fira Code';
font-size: 13px;
}
window#waybar {
background-color: rgba(43, 48, 59, 0.1);
border-bottom: 2px solid rgba(100, 114, 125, 0.5);
color: @rosewater;
}
#workspaces button {
padding: 0 5px;
background-color: @base;
color: @text;
border-radius: 6px;
}
#workspaces button:hover {
background: @mantle;
}
#workspaces button.focused {
background-color: @crust;
box-shadow: inset 0 -2px @sky;
}
#workspaces button.urgent {
background-color: @red;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
padding: 0 10px;
color: @text;
background-color: @base;
margin: 0 .5em;
border-radius: 9999px;
}
#clock.week {
margin-right: 0px;
color: @peach;
border-radius: 9999px 0px 0px 9999px;
}
#clock.year {
margin: 0px;
padding: 0px;
color: @pink;
border-radius: 0px;
}
#clock.time {
margin-left: 0px;
color: @sky;
border-radius: 0px 9999px 9999px 0px;
}
#battery.charging, #battery.plugged {
color: @green;
}
#battery.discharging {
color: @yellow;
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
#battery.warning:not(.charging) {
background-color: @red;
}
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) {
background-color: @red;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}

View File

@ -1,35 +0,0 @@
{ pkgs, ... }:
{
programs.zsh = {
enable = true;
dotDir = ".config/zsh";
defaultKeymap = "viins";
enableVteIntegration = true;
syntaxHighlighting.enable = true;
autosuggestion.enable = true;
loginExtra = ''
[ "$(tty)" = "/dev/tty1" ] && exec sway
'';
sessionVariables = {
TERM = "screen-256color";
};
shellAliases = {
cal = "cal $(date +%Y)";
GG = "git add . && git commit -m 'GG' && git push --set-upstream origin HEAD";
gad = "git add . && git diff --cached";
gac = "ga && gc";
gach = "gac -C HEAD";
ga = "git add .";
gc = "git commit";
dev = "nix develop --command $SHELL";
ls = "${pkgs.nushell}/bin/nu -c 'ls'";
la = "${pkgs.nushell}/bin/nu -c 'ls -al'";
torrent = "transmission-remote";
vi = "nvim";
sc = "systemctl";
};
shellGlobalAliases.comp = "-vcodec libx265 -crf 28";
history.expireDuplicatesFirst = true;
historySubstringSearch.enable = true;
};
}

BIN
main

Binary file not shown.

BIN
main.keys

Binary file not shown.

View File

@ -1,30 +1,41 @@
toplevel@{ inputs, withSystem, ... }: toplevel @ { inputs
, withSystem
, ...
}:
let let
system = "x86_64-linux"; system = "x86_64-linux";
mods = toplevel.config.flake.nixosModules;
inherit (toplevel.config.flake) hardwareConfigurations;
essential = with mods; [ grub base shell security wireless intranet ];
desktop = with mods; [ sound wayland ];
configWithModules =
{ hardware ? { nixpkgs.hostPlatform = system; }
, modules
,
}:
withSystem system ({ inputs', pkgs, ... }:
inputs.nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs inputs' pkgs;
};
modules = [ hardware ] ++ modules;
});
novaConfig = mods:
configWithModules {
hardware = hardwareConfigurations.nova;
modules = essential ++ desktop ++ mods;
};
in in
{ {
flake.nixosConfigurations = { flake.nixosConfigurations = {
nixos = withSystem system (ctx@{ config, inputs', ... }: nova = novaConfig [ mods.ivand ];
inputs.nixpkgs.lib.nixosSystem { nova-music = novaConfig (with mods; [ ivand music ]);
specialArgs = { nova-crypto = novaConfig (with mods; [ ivand cryptocurrency ]);
inherit inputs inputs'; nova-nonya = novaConfig (with mods; [ ivand anon cryptocurrency ]);
packages = config.packages; nova-ai = novaConfig (with mods; [ ivand ai ]);
}; nova-containers = novaConfig (with mods; [ ivand containers ]);
modules = [ install-iso = configWithModules { modules = with mods; [ grub base shell wireless ]; };
./nova-hardware.nix vps = configWithModules { modules = with mods; [ base shell security vps mailserver nginx wireguard-output anonymous-dns firewall rest ]; };
inputs.hosts.nixosModule stara-miner = configWithModules { modules = essential ++ [ mods.monero-miner ]; };
inputs.catppuccin.nixosModules.catppuccin
] ++ (with toplevel.config.flake.nixosModules; [ grub base sound wayland security ivand wireless wireguard style ]);
});
vm = withSystem system (ctx@{ config, inputs', ... }:
inputs.nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs inputs';
packages = config.packages;
};
modules = [
inputs.hosts.nixosModule
] ++ (with toplevel.config.flake.nixosModules; [ vm base security testUser ]);
});
}; };
} }

View File

@ -1,38 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/sda1";
fsType = "btrfs";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/D76B-0BB3";
fsType = "vfat";
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp2s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -1,41 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/47536cbe-7265-493b-a2e3-bbd376a6f9af";
fsType = "btrfs";
};
boot.initrd.luks.devices."nixos".device = "/dev/disk/by-uuid/712dd8ba-d5b4-438a-9a77-663b8c935cfe";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/4C3C-993A";
fsType = "vfat";
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp0s20f0u6.useDHCP = lib.mkDefault true;
# networking.interfaces.enp47s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp45s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -1,3 +1,3 @@
{ ... }: { {...}: {
imports = [ ./modules ./configs ]; imports = [./modules ./configs];
} }

View File

@ -1,57 +1,50 @@
{ moduleWithSystem, ... }: { top @ { inputs, moduleWithSystem, ... }: {
flake.nixosModules = { flake.nixosModules = {
grub = { grub = moduleWithSystem (_: { pkgs, ... }: {
boot = { boot = {
loader = { loader = {
grub = { grub =
enable = true; let
useOSProber = true; theme = pkgs.sleek-grub-theme.override {
efiSupport = true; withBanner = "Hello Ivan";
device = "nodev"; withStyle = "bigSur";
}; };
efi = { in
canTouchEfiVariables = true; {
}; inherit theme;
enable = pkgs.lib.mkDefault true;
useOSProber = true;
efiSupport = true;
device = "nodev";
splashImage = "${theme}/background.png";
};
efi.canTouchEfiVariables = true;
}; };
}; };
}; });
base = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }: { base = moduleWithSystem (_: { pkgs, ... }: {
system.stateVersion = "24.05"; imports = [ inputs.hosts.nixosModule ];
nix = { system.stateVersion = top.config.flake.stateVersion;
extraOptions = '' nix = { extraOptions = ''experimental-features = nix-command flakes''; };
experimental-features = nix-command flakes
'';
};
i18n.supportedLocales = [ "all" ]; i18n.supportedLocales = [ "all" ];
time.timeZone = "Europe/Prague"; time.timeZone = "Europe/Prague";
fonts.packages = with pkgs; [ (nerdfonts.override { fonts = [ "FiraCode" ]; }) noto-fonts noto-fonts-emoji noto-fonts-lgc-plus ];
environment = { environment = {
systemPackages = with pkgs; [ systemPackages = with pkgs; [ cmatrix uutils-coreutils-noprefix cryptsetup fd file git glibc gnumake mlocate openssh openssl procs ripgrep srm unzip vim zip just nixos-install-tools tshark ];
cmatrix sessionVariables = { MAKEFLAGS = "-j 4"; };
coreutils-full shells = with pkgs; [ bash zsh nushell ];
cryptsetup enableAllTerminfo = true;
fd
file
git
glibc
gnumake
mlocate
moreutils
openssl
srm
unzip
vim
zip
];
shells = with pkgs; [ zsh nushell ];
}; };
users.defaultUserShell = pkgs.zsh;
programs = { programs = {
zsh.enable = true; zsh.enable = true;
nix-ld.enable = true; nix-ld.enable = true;
dconf.enable = true;
}; };
services = { services = {
dbus.enable = true; dbus.enable = true;
logind = {
killUserProcesses = true;
powerKeyLongPress = "reboot";
};
}; };
networking = { networking = {
stevenBlackHosts = { stevenBlackHosts = {
@ -61,7 +54,35 @@
}; };
}; };
}); });
sound = moduleWithSystem (toplevel@{ ... }: perSystem@{ ... }: { shell = moduleWithSystem (_: { pkgs, ... }: {
programs = {
starship.enable = true;
zsh = {
enableBashCompletion = true;
syntaxHighlighting.enable = true;
autosuggestions = {
enable = true;
strategy = [ "completion" ];
};
shellAliases = {
cal = "cal $(date +%Y)";
GG = "git add . && git commit -m 'GG' && git push --set-upstream origin HEAD";
gad = "git add . && git diff --cached";
gac = "ga && gc";
ga = "git add .";
gc = "git commit";
dev = "nix develop --command $SHELL";
eza = "${pkgs.eza}/bin/eza '--long' '--header' '--icons' '--smart-group' '--mounts' '--octal-permissions' '--git'";
ls = "eza";
la = "eza --all";
lt = "eza --git-ignore --all --tree --level=10";
sc = "systemctl";
neofetch = "${pkgs.fastfetch}/bin/fastfetch -c all.jsonc";
};
};
};
});
sound = moduleWithSystem (_: { pkgs, ... }: {
services = { services = {
pipewire = { pipewire = {
enable = true; enable = true;
@ -69,37 +90,68 @@
pulse.enable = true; pulse.enable = true;
}; };
}; };
environment.systemPackages = with pkgs; [ pwvucontrol ];
}); });
wayland = moduleWithSystem (toplevel@{ ... }: perSystem@{ ... }: { music = moduleWithSystem (_: { pkgs, ... }: {
imports = [ inputs.musnix.nixosModules.musnix ];
environment.systemPackages = with pkgs; [ guitarix ];
services.pipewire = {
jack.enable = true;
extraConfig = { jack."69-low-latency" = { "jack.properties" = { "node.latency" = "64/48000"; }; }; };
};
musnix = {
enable = true;
rtcqs.enable = true;
soundcardPciId = "00:1f.3";
kernel = {
realtime = true;
packages = pkgs.linuxPackages-rt;
};
};
});
wayland = moduleWithSystem (_: _: {
hardware.graphics.enable = true; hardware.graphics.enable = true;
security.pam.services.swaylock = { }; security.pam.services.swaylock = { };
xdg.portal = {
enable = true;
xdgOpenUsePortal = true;
wlr = {
enable = true;
settings = {
screencast = {
output_name = "HDMI-A-1";
max_fps = 60;
};
};
};
config.common.default = "*";
};
}); });
security = moduleWithSystem (toplevel@{ ... }: perSystem@{ ... }: { security = moduleWithSystem (_: _: {
security = { security = {
sudo = { sudo = {
enable = false; enable = false;
execWheelOnly = true; execWheelOnly = true;
extraRules = [ extraRules = [{ groups = [ "wheel" ]; }];
{
groups = [ "wheel" ];
}
];
}; };
doas = { doas = {
enable = true; enable = true;
extraRules = [ extraRules = [
# Allow wheel to run all commands without password and keep user env. {
{ groups = [ "wheel" ]; noPass = true; keepEnv = true; } groups = [ "wheel" ];
noPass = true;
keepEnv = true;
}
]; ];
}; };
polkit.enable = true; polkit.enable = true;
rtkit.enable = true; rtkit.enable = true;
}; };
}); });
wireguard = { intranet = {
networking.wg-quick.interfaces = { networking.wg-quick.interfaces = {
wg0 = { wg0 = {
address = [ "10.0.0.4/32" ]; address = [ "10.0.0.2/32" ];
privateKeyFile = "/etc/wireguard/privatekey"; privateKeyFile = "/etc/wireguard/privatekey";
peers = [ peers = [
{ {
@ -111,6 +163,12 @@
]; ];
}; };
}; };
services.openssh = {
enable = true;
settings = {
PermitRootLogin = "prohibit-password";
};
};
}; };
wireless = { wireless = {
networking = { networking = {
@ -150,68 +208,76 @@
"KOTEKLAN_GUEST" = { "KOTEKLAN_GUEST" = {
psk = "koteklankotek"; psk = "koteklankotek";
}; };
"TP-Link_BE7A" = {
psk = "84665461";
};
"Post120" = {
psk = "9996663333";
};
"MOONLIGHT2019" = {
psk = "seacrets";
};
"Kaiser Terrasse" = {
psk = "Internet12";
};
"ATHENS-HAWKS" = { };
"3G" = {
hidden = true;
};
}; };
}; };
}; };
}; };
ivand = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }: { ivand = moduleWithSystem (_: { pkgs, ... }:
users = { let
defaultUserShell = pkgs.zsh; homeMods = top.config.flake.homeManagerModules;
users = { in
ivand = { {
isNormalUser = true; imports = [ inputs.home-manager.nixosModules.default ];
createHome = true; home-manager = {
extraGroups = [ backupFileExtension = "bak";
"adbusers" useUserPackages = true;
"adm" useGlobalPkgs = true;
"audio" users.ivand = { ... }: {
"bluetooth" imports = with homeMods; [
"dialout" base
"flatpak" ivand
"kvm" shell
"mlocate" util
"render" swayland
"video" web
"wheel"
]; ];
}; };
}; };
extraGroups = { mlocate = { }; }; fonts.packages = with pkgs; [ (nerdfonts.override { fonts = [ "FiraCode" ]; }) noto-fonts noto-fonts-emoji noto-fonts-lgc-plus ];
};
});
testUser = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }: {
users = {
defaultUserShell = pkgs.zsh;
users = { users = {
test = { users = {
isNormalUser = true; ivand = {
createHome = true; isNormalUser = true;
initialPassword = "test"; createHome = true;
extraGroups = [ extraGroups = [
"adbusers" "adbusers"
"adm" "adm"
"audio" "audio"
"bluetooth" "bluetooth"
"dialout" "dialout"
"flatpak" "flatpak"
"kvm" "kvm"
"mlocate" "mlocate"
"render" "realtime"
"video" "render"
"wheel" "video"
]; "wheel"
];
};
};
extraGroups = {
mlocate = { };
realtime = { };
}; };
}; };
extraGroups = { mlocate = { }; }; programs.dconf.enable = true;
}; });
});
style = {
catppuccin = {
enable = true;
flavor = "mocha";
};
boot.loader.grub.catppuccin.enable = true;
};
flatpak = { flatpak = {
xdg = { xdg = {
portal = { portal = {
@ -222,44 +288,369 @@
}; };
services.flatpak.enable = true; services.flatpak.enable = true;
}; };
ai = moduleWithSystem (toplevel@{ ... }: perSystem@{ ... }: { ai = moduleWithSystem (_: _: {
services = { ollama.enable = true; };
});
containers = moduleWithSystem (_: _: {
virtualisation.docker = {
enable = true;
storageDriver = "btrfs";
};
users.users.ivand.extraGroups = [ "docker" ];
});
anon = moduleWithSystem (_: { pkgs, ... }: {
environment.systemPackages = with pkgs; [ tor-browser ];
});
cryptocurrency = moduleWithSystem (_: { pkgs, ... }: {
environment.systemPackages = with pkgs; [ monero-cli ];
services = { monero.enable = true; };
});
monero-miner = moduleWithSystem (_: _: {
services = { services = {
ollama.enable = true; xmrig = {
enable = true;
settings = {
autosave = true;
cpu = true;
opencl = false;
cuda = false;
pools = [
{
url = "pool.supportxmr.com:443";
user = "48e9t9xvq4M4HBWomz6whiY624YRCPwgJ7LPXngcc8pUHk6hCuR3k6ENpLGDAhPEHWaju8Z4btxkbENpcwaqWcBvLxyh5cn";
keepalive = true;
tls = true;
}
];
};
};
}; };
}); });
vm = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }: { vps = moduleWithSystem (_: { ... }: {
nixpkgs.hostPlatform = "x86_64-linux"; imports = [
virtualisation.vmVariant = { inputs.vpsadminos.nixosConfigurations.container
# following configuration is added only when building VM with build-vm ];
virtualisation = { });
memorySize = 8192; mailserver = moduleWithSystem (_: { config
cores = 4; , pkgs
resolution = { , ...
x = 1920; }: {
y = 1080; imports = [
inputs.simple-nixos-mailserver.nixosModule
];
mailserver = {
enable = true;
localDnsResolver = false;
fqdn = "mail.idimitrov.dev";
domains = [ "idimitrov.dev" "mail.idimitrov.dev" ];
loginAccounts = {
"ivan@idimitrov.dev" = {
hashedPassword = "$2b$05$rTVIQD98ogXeCBKdk/YufulWHqpMCAlb7SHDPlh5y8Xbukoa/uQLm";
aliases = [ "admin@idimitrov.dev" ];
}; };
diskImage = "$HOME/doc/vm.qcow2"; "security@idimitrov.dev" = {
qemu = { hashedPassword = "$2b$05$rTVIQD98ogXeCBKdk/YufulWHqpMCAlb7SHDPlh5y8Xbukoa/uQLm";
options = [ "-vga qxl" "-spice port=5900,addr=127.0.0.1,disable-ticketing=on" ]; };
};
certificateScheme = "acme-nginx";
hierarchySeparator = "/";
};
services = {
dovecot2.sieve.extensions = [ "fileinto" ];
roundcube = {
enable = true;
package = pkgs.roundcube.withPlugins (plugins: [ plugins.persistent_login ]);
plugins = [
"persistent_login"
];
hostName = "${config.mailserver.fqdn}";
extraConfig = ''
$config['smtp_host'] = "tls://${config.mailserver.fqdn}";
$config['smtp_user'] = "%u";
$config['smtp_pass'] = "%p";
'';
};
nginx.virtualHosts =
let
restrictToVpn = ''
allow 10.0.0.2/32;
allow 10.0.0.3/32;
allow 10.0.0.4/32;
deny all;
'';
in
{
"${config.mailserver.fqdn}" = {
extraConfig = restrictToVpn;
};
};
postgresql.enable = true;
};
security = {
acme = {
acceptTerms = true;
defaults.email = "security@idimitrov.dev";
};
};
});
nginx = moduleWithSystem (_: { pkgs, ... }: {
services = {
nginx =
let
webshiteConfig = ''
add_header 'Referrer-Policy' 'origin-when-cross-origin';
add_header X-Content-Type-Options nosniff;
'';
extensions = [ "html" "txt" "png" "jpg" "jpeg" ];
serveStatic = exts: ''
try_files $uri $uri/ ${pkgs.lib.strings.concatStringsSep " " (builtins.map (x: "$uri." + "${x}") exts)} =404;
'';
in
{
enable = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
sslCiphers = "AES256+EECDH:AES256+EDH:!aNULL";
virtualHosts = {
"idimitrov.dev" = {
enableACME = true;
forceSSL = true;
locations."/" = {
root = "${pkgs.webshite}";
extraConfig = serveStatic extensions;
};
extraConfig = webshiteConfig;
};
"www.idimitrov.dev" = {
enableACME = true;
forceSSL = true;
locations."/" = {
root = "${pkgs.webshite}";
extraConfig = serveStatic extensions;
};
extraConfig = webshiteConfig;
};
"src.idimitrov.dev" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:3001";
};
};
"pic.idimitrov.dev" = {
enableACME = true;
forceSSL = true;
locations."/" = {
root = "/var/pic";
extraConfig = ''
autoindex on;
${serveStatic ["png"]}
'';
};
};
};
};
gitea = {
enable = true;
appName = "src";
database = {
type = "postgres";
};
settings = {
server = {
DOMAIN = "src.idimitrov.dev";
ROOT_URL = "https://src.idimitrov.dev/";
HTTP_PORT = 3001;
};
repository = {
DEFAULT_BRANCH = "master";
};
service = {
DISABLE_REGISTRATION = true;
};
};
};
postgresql = {
enable = true;
ensureUsers = [
{
name = "root";
ensureClauses = {
superuser = true;
createrole = true;
createdb = true;
};
}
];
};
};
});
wireguard-output = moduleWithSystem (_: { pkgs, ... }: {
networking = {
nat = {
enable = true;
enableIPv6 = true;
externalInterface = "venet0";
internalInterfaces = [ "wg0" ];
};
wg-quick.interfaces = {
wg0 =
let
iptables = "${pkgs.iptables}/bin/iptables";
ip6tables = "${pkgs.iptables}/bin/ip6tables";
in
{
address = [ "10.0.0.1/32" ];
listenPort = 51820;
privateKeyFile = "/etc/wireguard/privatekey";
postUp = ''
${iptables} -A FORWARD -i wg0 -j ACCEPT
${iptables} -t nat -A POSTROUTING -s 10.0.0.1/24 -o venet0 -j MASQUERADE
${ip6tables} -A FORWARD -i wg0 -j ACCEPT
${ip6tables} -t nat -A POSTROUTING -s fdc9:281f:04d7:9ee9::1/64 -o venet0 -j MASQUERADE
'';
preDown = ''
${iptables} -D FORWARD -i wg0 -j ACCEPT
${iptables} -t nat -D POSTROUTING -s 10.0.0.1/24 -o venet0 -j MASQUERADE
${ip6tables} -D FORWARD -i wg0 -j ACCEPT
${ip6tables} -t nat -D POSTROUTING -s fdc9:281f:04d7:9ee9::1/64 -o venet0 -j MASQUERADE
'';
peers = [
{
publicKey = "kI93V0dVKSqX8hxMJHK5C0c1hEDPQTgPQDU8TKocVgo=";
allowedIPs = [ "10.0.0.2/32" ];
}
{
publicKey = "RqTsFxFCcgYsytcDr+jfEoOA5UNxa1ZzGlpx6iuTpXY=";
allowedIPs = [ "10.0.0.3/32" ];
}
{
publicKey = "1e0mjluqXdLbzv681HlC9B8BfGN8sIXIw3huLyQqwXI=";
allowedIPs = [ "10.0.0.4/32" ];
}
];
};
};
};
});
anonymous-dns = moduleWithSystem (_: _: {
networking = {
nameservers = [ "127.0.0.1" "::1" ];
dhcpcd.extraConfig = "nohook resolv.conf";
};
services = {
dnscrypt-proxy2 = {
enable = true;
settings = {
cache = false;
ipv4_servers = true;
ipv6_servers = true;
dnscrypt_servers = true;
doh_servers = false;
odoh_servers = false;
require_dnssec = true;
require_nolog = true;
require_nofilter = true;
anonymized_dns = {
routes = [
{
server_name = "*";
via = [ "sdns://gQ8yMTcuMTM4LjIyMC4yNDM" ];
}
];
};
sources.public-resolvers = {
urls = [
"https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md"
"https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md"
];
cache_file = "/var/lib/dnscrypt-proxy/public-resolvers.md";
minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3";
};
};
};
};
});
firewall = moduleWithSystem (_: { lib, ... }: {
networking = {
firewall = lib.mkForce {
enable = true;
allowedTCPPorts = [
25 # smtp
465 # smtps
80 # http
443 # https
];
allowedUDPPorts = [
25
465
80
443
51820 # wireguard
];
extraCommands = ''
iptables -N vpn # create a new chain named vpn
iptables -A vpn --src 10.0.0.2 -j ACCEPT # allow
iptables -A vpn --src 10.0.0.3 -j ACCEPT # allow
iptables -A vpn --src 10.0.0.4 -j ACCEPT # allow
iptables -A vpn -j DROP # drop everyone else
iptables -I INPUT -m tcp -p tcp --dport 22 -j vpn
'';
extraStopCommands = ''
iptables -F vpn
iptables -D INPUT -m tcp -p tcp --dport 22 -j vpn
iptables -X vpn
'';
};
};
});
rest = moduleWithSystem (_: { pkgs, ... }: {
fileSystems."/mnt/export1981" = {
device = "172.16.128.47:/nas/5490";
fsType = "nfs";
options = [ "nofail" ];
};
users = {
users.ivand = {
isNormalUser = true;
hashedPassword = "$2b$05$hPrPcewxj4qjLCRQpKBAu.FKvKZdIVlnyn4uYsWE8lc21Jhvc9jWG";
extraGroups = [ "wheel" "adm" "mlocate" ];
openssh.authorizedKeys.keys = [
''
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICcLkzuCoBEg+wq/H+hkrv6pLJ8J5BejaNJVNnymlnlo ivan@idimitrov.dev
''
];
};
extraGroups = { mlocate = { }; };
};
services = {
openssh = {
enable = true;
settings = {
PermitRootLogin = "prohibit-password";
};
};
};
systemd = {
timers = {
bingwp = {
wantedBy = [ "timers.target" ];
timerConfig = {
OnCalendar = "*-*-* 10:00:00";
Persistent = true;
};
}; };
}; };
services = { services = {
displayManager.sddm.enable = true; bingwp = {
xserver = { description = "Download bing image of the day";
enable = true; script = ''
desktopManager.xfce.enable = true; ${pkgs.nushell}/bin/nu -c "http get ('https://bing.com' + ((http get https://www.bing.com/HPImageArchive.aspx?format=js&n=1).images.0.url)) | save ('/var/pic' | path join ( [ (date now | format date '%Y-%m-%d'), '.png' ] | str join ))"
videoDrivers = [ "qxl" ]; ${pkgs.nushell}/bin/nu -c "${pkgs.toybox}/bin/ln -sf (ls /var/pic | where type == file | get name | sort | last) /var/pic/latest.png"
'';
}; };
spice-autorandr.enable = true;
spice-vdagentd.enable = true;
spice-webdavd.enable = true;
};
environment = {
systemPackages = with pkgs; [
xorg.xf86videoqxl
tor-browser
gnupg
];
}; };
}; };
}); });

8
overlays/default.nix Normal file
View File

@ -0,0 +1,8 @@
{ withSystem, ... }: {
flake.overlays.default = _: _:
withSystem "x86_64-linux" (
{ config, ... }: with config.packages; {
inherit nvim bingwp screenshot cursors wpd webshite sal;
}
);
}

69
packages/default.nix Normal file
View File

@ -0,0 +1,69 @@
{ inputs, ... }: {
perSystem =
{ system, pkgs, ... }: {
config.packages = {
nvim = inputs.ide.nvim.${system}.standalone.default {
plugins.lsp.servers = {
bashls.enable = true;
pylsp.enable = true;
lua-ls.enable = true;
};
extraPlugins = with pkgs.vimPlugins; [ vim-just ];
};
wpd = pkgs.writeShellApplication {
name = "wpd";
runtimeInputs = with pkgs; [ swaybg xdg-user-dirs fd uutils-coreutils-noprefix ];
runtimeEnv = { WAYLAND_DISPLAY = "wayland-1"; };
text = ''
random_pic () {
bg_dir="$(xdg-user-dir PICTURES)/bg"
fd . --extension png "$bg_dir" | shuf -n1
}
swaybg -i "$(random_pic)" -m fill &
OLD_PID=$!
while true; do
sleep 60
swaybg -i "$(random_pic)" -m fill &
NEXT_PID=$!
sleep 5
kill -9 $OLD_PID
OLD_PID=$NEXT_PID
done
'';
};
screenshot = pkgs.writeShellApplication {
name = "screenshot";
runtimeInputs = with pkgs; [ wl-clipboard xdg-utils ];
text = ''
ss_dir="$(xdg-user-dir PICTURES)/ss"
pic_dir="$ss_dir/$(date "+%Y-%m-%d_%H-%M-%S").png"
mkdir -p "$ss_dir"
copy_image () {
wl-copy < "$pic_dir"
}
main () {
grim "$pic_dir"
copy_image
}
main
'';
};
cursors = pkgs.catppuccin-cursors.overrideAttrs (prev: rec {
version = "0.3.1";
nativeBuildInputs = prev.nativeBuildInputs ++ [ pkgs.xcur2png ];
src = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "cursors";
rev = "v${version}";
hash = "sha256-CuzD6O/RImFKLWzJoiUv7nlIdoXNvwwl+k5mTeVIY10=";
};
});
webshite = inputs.webshite.packages.${system}.default;
sal = inputs.sal.packages."x86_64-linux".default;
};
};
}