Compare commits
131 Commits
refactor_h
...
master
Author | SHA1 | Date | |
---|---|---|---|
bc18255229 | |||
91a32bfdeb | |||
d2bd664f4e | |||
73b02b4589 | |||
075237ed6f | |||
c213f82d04 | |||
3ed2aa4cc1 | |||
dc86d80a3a | |||
7df0351721 | |||
eaaf415299 | |||
80daeb3ba5 | |||
c9b5cb9b52 | |||
67279849d7 | |||
dec199a870 | |||
06dea9ce71 | |||
1a4be3cb75 | |||
d89757afb9 | |||
0b8e88f09d | |||
9ee0b504b1 | |||
3afeaa8934 | |||
7d7c00de4f | |||
1bd5b467ae | |||
a10568d5ac | |||
eac0e79ca3 | |||
f1b2a18a1d | |||
07512362f8 | |||
c36b061ce9 | |||
d0caeb0b57 | |||
00d0aff6f8 | |||
793790226b | |||
76266ac03e | |||
0bf31f6699 | |||
2d99617d89 | |||
12466783f7 | |||
0bd094330d | |||
13ca2bc6c5 | |||
d94928d1cf | |||
bac787e1d7 | |||
b7a673f537 | |||
89c45a9e8f | |||
764bf2d3e7 | |||
ea537f647e | |||
e2e10b3f0a | |||
b432efdd0f | |||
ae75c299cb | |||
b99de1d61f | |||
3a301ddce5 | |||
1d438b291d | |||
6ea6fbaa9c | |||
6631b11382 | |||
e3eb263108 | |||
ab4d05ae3c | |||
76f954a335 | |||
69b444e3e7 | |||
aec13e232b | |||
579259b156 | |||
fa2081dab1 | |||
c09e7674f4 | |||
cc7382ac20 | |||
c6000ae94f | |||
09f0ab478d | |||
1b2bbc3a31 | |||
e1a429bdec | |||
7e03c3f3f1 | |||
8f57211bf5 | |||
09c083c5e4 | |||
91acd7e216 | |||
09dbf066f8 | |||
98fec7c447 | |||
38b4664e6f | |||
f05e8968d8 | |||
32a46bf0c7 | |||
be21318ed1 | |||
5cb70e464a | |||
3ad76bcd69 | |||
e3da8e7072 | |||
a1d0ca2d65 | |||
588190e7b6 | |||
776e4cd49c | |||
0f4d3087f6 | |||
096d73470d | |||
a32a8e3777 | |||
59b83495fc | |||
60538957a4 | |||
243c6232d6 | |||
c5ee685ed8 | |||
bae652bf97 | |||
9ec183549d | |||
7127c71d1c | |||
7872a7b3a7 | |||
6efeb73394 | |||
9ed0dbb95c | |||
108604c457 | |||
fe7a23ecbc | |||
f228bc6962 | |||
96fa7ddfb1 | |||
fccce59c0d | |||
b6b7835cc9 | |||
1168e46fb6 | |||
50d8c40057 | |||
ae2d09475f | |||
e50c532a6d | |||
c8ce02fe2d | |||
754c20868d | |||
1d0aeced87 | |||
62397ced8d | |||
55533888e9 | |||
51edd5bbb7 | |||
095e7531cb | |||
84169072de | |||
ce8b986fd2 | |||
21e17fefa2 | |||
e6313d810d | |||
e521af0b12 | |||
9f44008493 | |||
82c4bfe778 | |||
6a4d3f96e7 | |||
b1ee621d91 | |||
e79c4a0081 | |||
a66f628805 | |||
99afb06b2f | |||
696c3b0e3c | |||
0fdd976815 | |||
1ffb9d6db5 | |||
6d0aefdc94 | |||
c6d1daba13 | |||
9286ff5044 | |||
a1ed6a69fa | |||
ffceb60bb8 | |||
876a3f631e | |||
0178ba7e33 |
24
Justfile
Normal file
24
Justfile
Normal 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
|
28
Makefile
28
Makefile
@ -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 --delete-older-than 30d
|
|
||||||
|
|
||||||
cleanRoot:
|
|
||||||
doas nix-collect-garbage --delete-older-than 30d
|
|
||||||
|
|
||||||
news:
|
|
||||||
home-manager news --flake ./.
|
|
53
README.md
53
README.md
@ -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
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
...
|
|
||||||
};
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
35
bin/bingwp
35
bin/bingwp
@ -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
|
|
22
bin/ks
22
bin/ks
@ -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
|
|
@ -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
|
|
@ -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
|
|
||||||
}
|
|
@ -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'
|
|
17
default.nix
17
default.nix
@ -1,22 +1,13 @@
|
|||||||
top@{ inputs, ... }: {
|
top @ { inputs, ... }: {
|
||||||
imports = [ ./nixos ./home ];
|
imports = [ ./nixos ./home ./packages ./overlays ./hardware-configurations ];
|
||||||
systems = [ "x86_64-linux" ];
|
systems = [ "x86_64-linux" ];
|
||||||
flake.stateVersion = "24.05";
|
flake.stateVersion = "24.05";
|
||||||
perSystem = perSystem@{ system, ... }: {
|
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
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
697
flake.lock
697
flake.lock
@ -1,14 +1,53 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"blobs": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1604995301,
|
||||||
|
"narHash": "sha256-wcLzgLec6SGJA8fx1OEN1yV/Py5b+U5iyYpksUY/yLw=",
|
||||||
|
"owner": "simple-nixos-mailserver",
|
||||||
|
"repo": "blobs",
|
||||||
|
"rev": "2cccdf1ca48316f2cfd1c9a0017e8de5a7156265",
|
||||||
|
"type": "gitlab"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "simple-nixos-mailserver",
|
||||||
|
"repo": "blobs",
|
||||||
|
"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=",
|
||||||
@ -85,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": [
|
||||||
@ -94,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": {
|
||||||
@ -137,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=",
|
||||||
@ -176,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=",
|
||||||
@ -205,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=",
|
||||||
@ -219,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"
|
||||||
@ -294,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",
|
||||||
@ -303,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=",
|
||||||
@ -324,11 +672,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1720167120,
|
"lastModified": 1725863684,
|
||||||
"narHash": "sha256-K9JYdlPiyaXp33JRg7CT8rMwH56e4ncXSsXW/YKnNXc=",
|
"narHash": "sha256-HmdTBpuCsw35Ii35JUKO6AE6nae+kJliQb0XGd4hoLE=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "bbe6e94737289c8cb92d4d8f9199fbfe4f11c0ba",
|
"rev": "be47a2bdf278c57c2d05e747a13ed31cef54a037",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -345,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=",
|
||||||
@ -366,11 +737,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1720105772,
|
"lastModified": 1725674607,
|
||||||
"narHash": "sha256-tahf6mdtmZofwMZfMsuDAqCR/V1qZt6vV+o6t4YTKG0=",
|
"narHash": "sha256-vTaoz2yRd9g3NZNKYufZeB8UJ381aBPmRV91lEmV37o=",
|
||||||
"owner": "StevenBlack",
|
"owner": "StevenBlack",
|
||||||
"repo": "hosts",
|
"repo": "hosts",
|
||||||
"rev": "bfefd08fd5dfbc175e82e5c339b0f4ab124c500e",
|
"rev": "10b187280ec15374e4d2b28e7705046e7d535d91",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -390,11 +761,36 @@
|
|||||||
"systems": "systems_2"
|
"systems": "systems_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1720081265,
|
"lastModified": 1722691995,
|
||||||
"narHash": "sha256-MQjLb0AhXlJM5icYj9KJ+FYV/dDGiGKvPQIGcDuceiM=",
|
"narHash": "sha256-TWpmjsNJN75sHfAfsFTlhSl2t5ZQtoRTthu2XfaFnpw=",
|
||||||
"owner": "ivandimitrov8080",
|
"owner": "ivandimitrov8080",
|
||||||
"repo": "flake-ide",
|
"repo": "flake-ide",
|
||||||
"rev": "ede87ccb5225e562efb1be4c68b645c3b2c7dca6",
|
"rev": "c3a2cc3f24a854ad91513f1692607764ee9e6b8e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ivandimitrov8080",
|
||||||
|
"repo": "flake-ide",
|
||||||
|
"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"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -410,11 +806,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1719810225,
|
"lastModified": 1725237485,
|
||||||
"narHash": "sha256-/2loMwYYMrBYSOWjNJ253xlwYhnQZ+PVmyE7NDI/xJA=",
|
"narHash": "sha256-POpzmA7+ecCUEZsu2a5fgwYhJ60POzve+lMhxebmTz4=",
|
||||||
"owner": "musnix",
|
"owner": "musnix",
|
||||||
"repo": "musnix",
|
"repo": "musnix",
|
||||||
"rev": "2197ffe9fa4c2b62e33d656ee443b086dbb4f151",
|
"rev": "b5f3a47fd74193cb98c85cfeb6a25358150bdd90",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -435,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=",
|
||||||
@ -450,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,
|
||||||
@ -473,6 +912,29 @@
|
|||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1722082646,
|
||||||
|
"narHash": "sha256-od8dBWVP/ngg0cuoyEl/w9D+TCNDj6Kh4tr151Aax7w=",
|
||||||
|
"owner": "lnl7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"rev": "0413754b3cdb879ba14f6e96915e5fdf06c6aab6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "lnl7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-darwin_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"webshite",
|
||||||
|
"ide",
|
||||||
|
"nixvim",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1719128254,
|
"lastModified": 1719128254,
|
||||||
"narHash": "sha256-I7jMpq0CAOZA/i70+HDQO/ulLttyQu/K70cSESiMX7A=",
|
"narHash": "sha256-I7jMpq0CAOZA/i70+HDQO/ulLttyQu/K70cSESiMX7A=",
|
||||||
@ -489,11 +951,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1720031269,
|
"lastModified": 1725634671,
|
||||||
"narHash": "sha256-rwz8NJZV+387rnWpTYcXaRNvzUSnnF9aHONoJIYmiUQ=",
|
"narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9f4128e00b0ae8ec65918efeba59db998750ead6",
|
"rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -503,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",
|
||||||
@ -515,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=",
|
||||||
@ -531,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": [
|
||||||
@ -538,11 +1068,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1719994518,
|
"lastModified": 1725234343,
|
||||||
"narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=",
|
"narHash": "sha256-+ebgonl3NbiKD2UD0x4BszCZQ6sTfL4xioaM49o5B3Y=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7",
|
"rev": "567b938d64d4b4112ee253b9274472dc3a346eb6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -559,7 +1089,10 @@
|
|||||||
"musnix": "musnix",
|
"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": {
|
||||||
@ -585,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,
|
||||||
@ -615,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": [
|
||||||
@ -623,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=",
|
||||||
@ -636,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",
|
||||||
|
16
flake.nix
16
flake.nix
@ -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,12 +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";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
musnix = {
|
musnix = {
|
||||||
url = "github:musnix/musnix";
|
url = "github:musnix/musnix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
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";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
outputs = inputs: inputs.parts.lib.mkFlake { inherit inputs; } { imports = [ ./. ]; };
|
outputs = inputs: inputs.parts.lib.mkFlake {inherit inputs;} {imports = [./.];};
|
||||||
}
|
}
|
||||||
|
30
hardware-configurations/default.nix
Normal file
30
hardware-configurations/default.nix
Normal 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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [ ./ivand ];
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
toplevel@{ inputs, withSystem, config, ... }:
|
|
||||||
{
|
|
||||||
flake.homeConfigurations.ivand = withSystem "x86_64-linux" (ctx@{ pkgs, ... }:
|
|
||||||
inputs.home-manager.lib.homeManagerConfiguration {
|
|
||||||
inherit pkgs;
|
|
||||||
modules =
|
|
||||||
let
|
|
||||||
mods = config.flake.homeManagerModules;
|
|
||||||
in
|
|
||||||
[
|
|
||||||
mods.base
|
|
||||||
mods.shell
|
|
||||||
mods.util
|
|
||||||
mods.swayland
|
|
||||||
mods.web
|
|
||||||
];
|
|
||||||
});
|
|
||||||
}
|
|
@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
imports = [ ./modules ./configs ];
|
imports = [./modules];
|
||||||
}
|
}
|
||||||
|
@ -1,72 +1,9 @@
|
|||||||
toplevel@{ moduleWithSystem, ... }: {
|
toplevel @ { moduleWithSystem, ... }: {
|
||||||
flake.homeManagerModules = {
|
flake.homeManagerModules = {
|
||||||
base = moduleWithSystem (
|
base = moduleWithSystem (
|
||||||
top@{ ... }:
|
_: { config, ... }: {
|
||||||
perSystem@{ pkgs, config, ... }: {
|
programs.home-manager.enable = true;
|
||||||
programs = {
|
home.stateVersion = toplevel.config.flake.stateVersion;
|
||||||
home-manager.enable = true;
|
|
||||||
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;
|
|
||||||
userName = pkgs.lib.mkDefault "Ivan Kirilov Dimitrov";
|
|
||||||
userEmail = pkgs.lib.mkDefault "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";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
gpg.enable = true;
|
|
||||||
};
|
|
||||||
services = {
|
|
||||||
pueue.enable = true;
|
|
||||||
gpg-agent = {
|
|
||||||
enable = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
enableNushellIntegration = true;
|
|
||||||
pinentryPackage = pkgs.pinentry-qt;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home = {
|
|
||||||
stateVersion = toplevel.config.flake.stateVersion;
|
|
||||||
username = "ivand";
|
|
||||||
homeDirectory = "/home/ivand";
|
|
||||||
sessionVariables = {
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
packages = with pkgs; [
|
|
||||||
transmission_4
|
|
||||||
speedtest-cli
|
|
||||||
nvim
|
|
||||||
];
|
|
||||||
};
|
|
||||||
xdg = {
|
xdg = {
|
||||||
enable = true;
|
enable = true;
|
||||||
userDirs = with config; {
|
userDirs = with config; {
|
||||||
@ -81,22 +18,164 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
publicShare = "${home.homeDirectory}/pub";
|
publicShare = "${home.homeDirectory}/pub";
|
||||||
music = "${home.homeDirectory}/mus";
|
music = "${home.homeDirectory}/mus";
|
||||||
};
|
};
|
||||||
mimeApps = {
|
mimeApps.enable = true;
|
||||||
enable = true;
|
};
|
||||||
defaultApplications = {
|
}
|
||||||
"text/html" = "firefox.desktop";
|
);
|
||||||
"x-scheme-handler/http" = "firefox.desktop";
|
ivand = moduleWithSystem (
|
||||||
"x-scheme-handler/https" = "firefox.desktop";
|
_: { pkgs, ... }: {
|
||||||
"x-scheme-handler/about" = "firefox.desktop";
|
home = {
|
||||||
"x-scheme-handler/unknown" = "firefox.desktop";
|
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 (
|
shell = moduleWithSystem (
|
||||||
top@{ ... }:
|
_: { pkgs, ... }: {
|
||||||
perSystem@{ pkgs, ... }: {
|
|
||||||
programs =
|
programs =
|
||||||
let
|
let
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
@ -104,20 +183,16 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
GG = "git add . && git commit -m 'GG' && git push --set-upstream origin HEAD";
|
GG = "git add . && git commit -m 'GG' && git push --set-upstream origin HEAD";
|
||||||
gad = "git add . && git diff --cached";
|
gad = "git add . && git diff --cached";
|
||||||
gac = "ga && gc";
|
gac = "ga && gc";
|
||||||
gach = "gac -C HEAD";
|
|
||||||
ga = "git add .";
|
ga = "git add .";
|
||||||
gc = "git commit";
|
gc = "git commit";
|
||||||
dev = "nix develop --command $SHELL";
|
dev = "nix develop --command $SHELL";
|
||||||
ls = "${pkgs.nushell}/bin/nu -c 'ls'";
|
ls = "eza";
|
||||||
la = "${pkgs.nushell}/bin/nu -c 'ls -al'";
|
la = "eza --all";
|
||||||
torrent = "transmission-remote";
|
lt = "eza --git-ignore --all --tree --level=10";
|
||||||
vi = "nvim";
|
|
||||||
sc = "systemctl";
|
sc = "systemctl";
|
||||||
neofetch = "${pkgs.fastfetch}/bin/fastfetch -c all.jsonc";
|
neofetch = "${pkgs.fastfetch}/bin/fastfetch -c all.jsonc";
|
||||||
};
|
};
|
||||||
sessionVariables = {
|
sessionVariables = { };
|
||||||
TERM = "screen-256color";
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
bash = {
|
bash = {
|
||||||
@ -125,11 +200,7 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
enable = true;
|
enable = true;
|
||||||
enableVteIntegration = true;
|
enableVteIntegration = true;
|
||||||
historyControl = [ "erasedups" ];
|
historyControl = [ "erasedups" ];
|
||||||
historyIgnore = [
|
historyIgnore = [ "ls" "cd" "exit" ];
|
||||||
"ls"
|
|
||||||
"cd"
|
|
||||||
"exit"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
zsh = {
|
zsh = {
|
||||||
inherit shellAliases sessionVariables;
|
inherit shellAliases sessionVariables;
|
||||||
@ -144,22 +215,9 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
};
|
};
|
||||||
nushell = {
|
nushell = {
|
||||||
enable = true;
|
enable = true;
|
||||||
environmentVariables = {
|
environmentVariables = { config = ''{ show_banner: false, completions: { quick: false partial: false algorithm: "prefix" } } ''; };
|
||||||
config = ''
|
shellAliases = {
|
||||||
{
|
gcal = ''bash -c "cal $(date +%Y)" '';
|
||||||
show_banner: false,
|
|
||||||
completions: {
|
|
||||||
quick: false
|
|
||||||
partial: false
|
|
||||||
algorithm: "prefix"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
shellAliases = shellAliases // {
|
|
||||||
gcal = ''
|
|
||||||
bash -c "cal $(date +%Y)"
|
|
||||||
'';
|
|
||||||
la = "ls -al";
|
la = "ls -al";
|
||||||
dev = "nix develop --command $env.SHELL";
|
dev = "nix develop --command $env.SHELL";
|
||||||
};
|
};
|
||||||
@ -187,44 +245,37 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
enableBashIntegration = true;
|
enableBashIntegration = true;
|
||||||
};
|
};
|
||||||
};
|
eza = {
|
||||||
}
|
enable = true;
|
||||||
);
|
enableZshIntegration = true;
|
||||||
util = moduleWithSystem (
|
enableBashIntegration = true;
|
||||||
top@{ ... }:
|
extraOptions = [
|
||||||
perSystem@{ ... }: {
|
"--long"
|
||||||
programs = {
|
"--header"
|
||||||
tealdeer = {
|
"--icons"
|
||||||
enable = true;
|
"--smart-group"
|
||||||
settings = {
|
"--mounts"
|
||||||
display = {
|
"--octal-permissions"
|
||||||
compact = true;
|
"--git"
|
||||||
};
|
|
||||||
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; }]; }
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
bat.enable = true;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
swayland = moduleWithSystem (
|
swayland = moduleWithSystem (
|
||||||
top@{ ... }:
|
_: { pkgs
|
||||||
perSystem@{ pkgs, config, ... }: {
|
, 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 = {
|
wayland.windowManager.sway = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
@ -233,31 +284,25 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
terminal = "kitty";
|
terminal = "kitty";
|
||||||
modifier = "Mod4";
|
modifier = "Mod4";
|
||||||
startup = [
|
startup = [
|
||||||
{ command = "swaymsg 'workspace 1; exec kitty'"; }
|
|
||||||
{ command = "swaymsg 'workspace 2; exec firefox'"; }
|
{ command = "swaymsg 'workspace 2; exec firefox'"; }
|
||||||
|
{ command = "swaymsg 'workspace 1; exec kitty'"; }
|
||||||
];
|
];
|
||||||
bars = [ ];
|
bars = [ ];
|
||||||
window.titlebar = false;
|
window.titlebar = false;
|
||||||
keybindings = pkgs.lib.mkOptionDefault {
|
keybindings = pkgs.lib.mkOptionDefault {
|
||||||
# Audio
|
"F1" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
||||||
"XF86AudioMicMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle";
|
"Shift+F1" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle";
|
||||||
"XF86AudioRaiseVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%";
|
"F2" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%";
|
||||||
"XF86AudioLowerVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%";
|
"Shift+F2" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-volume @DEFAULT_SOURCE@ -5%";
|
||||||
"Alt+XF86AudioRaiseVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-volume @DEFAULT_SOURCE@ +5%";
|
"F3" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%";
|
||||||
"Alt+XF86AudioLowerVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-volume @DEFAULT_SOURCE@ -5%";
|
"Shift+F3" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-volume @DEFAULT_SOURCE@ +5%";
|
||||||
"XF86AudioMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
"F9" = "exec doas ${pkgs.light}/bin/light -A 10";
|
||||||
# Display
|
"F8" = "exec doas ${pkgs.light}/bin/light -U 10";
|
||||||
"Alt+Shift+l" = "exec ${pkgs.swaylock}/bin/swaylock"; # Lock screen
|
"Alt+Shift+l" = "exec ${pkgs.swaylock}/bin/swaylock";
|
||||||
"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}+p" = "exec ${menu}";
|
||||||
"${modifier}+Shift+a" = "exec screenshot area";
|
"${modifier}+Shift+s" = "exec ${pkgs.screenshot}/bin/screenshot";
|
||||||
"${modifier}+Shift+s" = "exec screenshot";
|
|
||||||
"${modifier}+c" = "exec ${pkgs.sal}/bin/sal";
|
"${modifier}+c" = "exec ${pkgs.sal}/bin/sal";
|
||||||
"End" = "exec rofi -show calc";
|
"End" = "exec rofi -show calc";
|
||||||
# sway commands
|
|
||||||
"${modifier}+Shift+r" = "reload";
|
"${modifier}+Shift+r" = "reload";
|
||||||
"${modifier}+Shift+c" = "kill";
|
"${modifier}+Shift+c" = "kill";
|
||||||
"${modifier}+Shift+q" = "exit";
|
"${modifier}+Shift+q" = "exit";
|
||||||
@ -270,40 +315,35 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
swaynag = {
|
swaynag = { inherit (config.wayland.windowManager.sway) enable; };
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
programs = {
|
programs = {
|
||||||
waybar = {
|
waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
mainBar =
|
mainBar =
|
||||||
let
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
layer = "top";
|
layer = "top";
|
||||||
position = "top";
|
position = "top";
|
||||||
height = 30;
|
height = 30;
|
||||||
output = [
|
output = [ "eDP-1" "HDMI-A-1" "*" ];
|
||||||
"eDP-1"
|
|
||||||
"HDMI-A-1"
|
modules-left = [ "sway/workspaces" "sway/mode" ];
|
||||||
];
|
|
||||||
modules-left = [ "sway/workspaces" ];
|
|
||||||
modules-center = [ "clock#week" "clock#year" "clock#time" ];
|
modules-center = [ "clock#week" "clock#year" "clock#time" ];
|
||||||
modules-right = [ "network" "pulseaudio" "memory" "cpu" "battery" ];
|
modules-right = [ "network" "pulseaudio" "memory" "cpu" "battery" ];
|
||||||
|
|
||||||
"clock#time" = {
|
"clock#time" = {
|
||||||
format = "{:%H:%M:%S}";
|
format = "{:%H:%M:%S}";
|
||||||
interval = 1;
|
interval = 1;
|
||||||
|
tooltip = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
"clock#week" = {
|
"clock#week" = {
|
||||||
format = "{:%a}";
|
format = "{:%a}";
|
||||||
|
tooltip = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
"clock#year" = {
|
"clock#year" = {
|
||||||
format = "{:%Y-%m-%d}";
|
format = "{:%Y-%m-%d}";
|
||||||
|
tooltip = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
battery = {
|
battery = {
|
||||||
@ -314,11 +354,10 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
warning = 30;
|
warning = 30;
|
||||||
critical = 15;
|
critical = 15;
|
||||||
};
|
};
|
||||||
|
tooltip = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu = {
|
cpu = { format = "<span color='#74c7ec'></span> {usage}%"; };
|
||||||
format = "<span color='#74c7ec'></span> {usage}%";
|
|
||||||
};
|
|
||||||
|
|
||||||
memory = {
|
memory = {
|
||||||
format = "<span color='#89b4fa'></span> {percentage}%";
|
format = "<span color='#89b4fa'></span> {percentage}%";
|
||||||
@ -334,6 +373,7 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
headphone = "";
|
headphone = "";
|
||||||
default = [ "" "" "" ];
|
default = [ "" "" "" ];
|
||||||
};
|
};
|
||||||
|
tooltip = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
network = {
|
network = {
|
||||||
@ -342,6 +382,7 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
format-disconnected = "<span color='#eba0ac'> no connection</span>";
|
format-disconnected = "<span color='#eba0ac'> no connection</span>";
|
||||||
format-icons = [ "" "" "" "" ];
|
format-icons = [ "" "" "" "" ];
|
||||||
interval = 5;
|
interval = 5;
|
||||||
|
tooltip = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
"sway/workspaces" = {
|
"sway/workspaces" = {
|
||||||
@ -354,7 +395,33 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
enable = true;
|
enable = true;
|
||||||
target = "sway-session.target";
|
target = "sway-session.target";
|
||||||
};
|
};
|
||||||
style = /* CSS */ ''
|
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-family: FontAwesome, 'Fira Code';
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
@ -491,22 +558,19 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
settings = {
|
settings = {
|
||||||
background_opacity = "0.90";
|
background_opacity = "0.90";
|
||||||
cursor_shape = "beam";
|
cursor_shape = "beam";
|
||||||
term = "screen-256color";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
imv.enable = true;
|
imv = {
|
||||||
mpv.enable = true;
|
enable = true;
|
||||||
bash.profileExtra = ''
|
settings = { options.fullscreen = true; };
|
||||||
[ "$(tty)" = "/dev/tty1" ] && exec sway
|
};
|
||||||
'';
|
mpv = {
|
||||||
zsh.loginExtra = ''
|
enable = true;
|
||||||
[ "$(tty)" = "/dev/tty1" ] && exec sway
|
scripts = with pkgs.mpvScripts; [ uosc thumbfast ];
|
||||||
'';
|
};
|
||||||
nushell.loginFile.text = ''
|
bash.profileExtra = ''[ "$(tty)" = "/dev/tty1" ] && exec sway '';
|
||||||
if (tty) == "/dev/tty1" {
|
zsh.loginExtra = ''[ "$(tty)" = "/dev/tty1" ] && exec sway '';
|
||||||
sway
|
nushell.loginFile.text = ''if (tty) == "/dev/tty1" { sway } '';
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
services = {
|
services = {
|
||||||
mako.enable = true;
|
mako.enable = true;
|
||||||
@ -516,54 +580,57 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
systemd.user = {
|
systemd.user = {
|
||||||
timers = { rbingwp = { Timer = { OnCalendar = "*-*-* 10:00:00"; Persistent = true; }; Install = { WantedBy = [ "timers.target" ]; }; }; };
|
timers = {
|
||||||
|
rbingwp = {
|
||||||
|
Timer = {
|
||||||
|
OnCalendar = "*-*-* 10:00:00";
|
||||||
|
Persistent = true;
|
||||||
|
};
|
||||||
|
Install = { WantedBy = [ "timers.target" ]; };
|
||||||
|
};
|
||||||
|
};
|
||||||
services = {
|
services = {
|
||||||
wpd = {
|
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" ]; };
|
Install = { WantedBy = [ "sway-session.target" ]; };
|
||||||
Unit = { Description = "Restart bingwp and wpd services"; After = "graphical-session-pre.target"; PartOf = "graphical-session.target"; };
|
Unit = {
|
||||||
|
Description = "Switch background every x minutes";
|
||||||
|
After = "graphical-session-pre.target";
|
||||||
|
PartOf = "graphical-session.target";
|
||||||
|
};
|
||||||
Service = {
|
Service = {
|
||||||
Type = "oneshot";
|
ExecStart = [ "${pkgs.wpd}/bin/wpd" ];
|
||||||
ExecStart = [ "${pkgs.nushell}/bin/nu -c '${pkgs.systemd}/bin/systemctl --user restart bingwp.service; ${pkgs.systemd}/bin/systemctl --user restart wpd.service'" ];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
home.packages = with pkgs; [
|
xdg.mimeApps.defaultApplications = {
|
||||||
audacity
|
"image/jpg" = "imv.desktop";
|
||||||
gimp
|
"image/jpeg" = "imv.desktop";
|
||||||
grim
|
"image/png" = "imv.desktop";
|
||||||
libnotify
|
"image/webp" = "imv.desktop";
|
||||||
libreoffice-qt
|
"image/gif" = "imv.desktop";
|
||||||
mupdf
|
"image/svg+xml" = "imv.desktop";
|
||||||
slurp
|
"video/mp4" = "mpv.desktop";
|
||||||
wl-clipboard
|
"video/mpeg" = "mpv.desktop";
|
||||||
xdg-user-dirs
|
"video/ogg" = "mpv.desktop";
|
||||||
xdg-utils
|
"video/webm" = "mpv.desktop";
|
||||||
xwayland
|
"video/x-msvideo" = "mpv.desktop";
|
||||||
];
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
web = moduleWithSystem (
|
web = moduleWithSystem (
|
||||||
top@{ ... }:
|
_: _: {
|
||||||
perSystem@{ pkgs, ... }: {
|
|
||||||
programs = {
|
programs = {
|
||||||
browserpass.enable = true;
|
browserpass.enable = true;
|
||||||
firefox = {
|
firefox = {
|
||||||
enable = true;
|
enable = true;
|
||||||
profiles.ivand = {
|
profiles.ivand = {
|
||||||
id = 0;
|
id = 0;
|
||||||
search.default = "DuckDuckGo";
|
search = {
|
||||||
|
default = "DuckDuckGo";
|
||||||
|
privateDefault = "DuckDuckGo";
|
||||||
|
force = true;
|
||||||
|
};
|
||||||
bookmarks = [
|
bookmarks = [
|
||||||
{
|
{
|
||||||
name = "home-options";
|
name = "home-options";
|
||||||
@ -578,7 +645,7 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
"general.smoothScroll" = true;
|
"general.smoothScroll" = true;
|
||||||
"signon.rememberSignons" = false;
|
"signon.rememberSignons" = false;
|
||||||
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
|
"extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
|
||||||
"layout.frame_rate" = 120;
|
"layout.frame_rate" = 60;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
policies = {
|
policies = {
|
||||||
@ -590,7 +657,23 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
OfferToSaveLogins = false;
|
OfferToSaveLogins = false;
|
||||||
OfferToSaveLoginsDefault = false;
|
OfferToSaveLoginsDefault = false;
|
||||||
PasswordManagerEnabled = 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 = {
|
FirefoxHome = {
|
||||||
Search = true;
|
Search = true;
|
||||||
Pocket = false;
|
Pocket = false;
|
||||||
@ -598,9 +681,11 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
TopSites = false;
|
TopSites = false;
|
||||||
Highlights = false;
|
Highlights = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
UserMessaging = {
|
UserMessaging = {
|
||||||
ExtensionRecommendations = false;
|
ExtensionRecommendations = false;
|
||||||
|
FeatureRecommendations = false;
|
||||||
|
UrlbarInterventions = false;
|
||||||
|
MoreFromMozilla = false;
|
||||||
SkipOnboarding = true;
|
SkipOnboarding = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -620,26 +705,16 @@ toplevel@{ moduleWithSystem, ... }: {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
chromium = {
|
||||||
home = {
|
enable = true;
|
||||||
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"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
xdg.mimeApps.defaultApplications = {
|
||||||
);
|
"text/html" = "firefox.desktop";
|
||||||
work = moduleWithSystem (
|
"x-scheme-handler/http" = "firefox.desktop";
|
||||||
top@{ ... }:
|
"x-scheme-handler/https" = "firefox.desktop";
|
||||||
perSystem@{ pkgs, ... }: {
|
"x-scheme-handler/about" = "firefox.desktop";
|
||||||
programs.chromium = {
|
"x-scheme-handler/unknown" = "firefox.desktop";
|
||||||
enable = true;
|
|
||||||
package = pkgs.ungoogled-chromium;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -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.musnix.nixosModules.musnix
|
|
||||||
] ++ (with toplevel.config.flake.nixosModules; [ grub base sound music wayland security ivand wireless wireguard ]);
|
|
||||||
});
|
|
||||||
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 ]);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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;
|
|
||||||
}
|
|
@ -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;
|
|
||||||
}
|
|
@ -1,3 +1,3 @@
|
|||||||
{ ... }: {
|
{...}: {
|
||||||
imports = [ ./modules ./configs ];
|
imports = [./modules ./configs];
|
||||||
}
|
}
|
||||||
|
@ -1,60 +1,50 @@
|
|||||||
top@{ 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, ... }: {
|
||||||
|
imports = [ inputs.hosts.nixosModule ];
|
||||||
system.stateVersion = top.config.flake.stateVersion;
|
system.stateVersion = top.config.flake.stateVersion;
|
||||||
nix = {
|
nix = { extraOptions = ''experimental-features = nix-command flakes''; };
|
||||||
extraOptions = ''
|
|
||||||
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
|
|
||||||
openssh
|
|
||||||
openssl
|
|
||||||
procs
|
|
||||||
ripgrep
|
|
||||||
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 = {
|
||||||
@ -64,7 +54,35 @@ top@{ moduleWithSystem, ... }: {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
sound = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }: {
|
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;
|
||||||
@ -72,74 +90,68 @@ top@{ moduleWithSystem, ... }: {
|
|||||||
pulse.enable = true;
|
pulse.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [ pwvucontrol ];
|
||||||
pwvucontrol
|
|
||||||
];
|
|
||||||
});
|
});
|
||||||
music = moduleWithSystem (toplevel@{ ... }: perSystem@{ pkgs, ... }: {
|
music = moduleWithSystem (_: { pkgs, ... }: {
|
||||||
environment.systemPackages = with pkgs; [
|
imports = [ inputs.musnix.nixosModules.musnix ];
|
||||||
guitarix
|
environment.systemPackages = with pkgs; [ guitarix ];
|
||||||
];
|
|
||||||
services.pipewire = {
|
services.pipewire = {
|
||||||
jack.enable = true;
|
jack.enable = true;
|
||||||
extraConfig = {
|
extraConfig = { jack."69-low-latency" = { "jack.properties" = { "node.latency" = "64/48000"; }; }; };
|
||||||
jack."69-low-latency" = {
|
|
||||||
"jack.properties" = {
|
|
||||||
"node.latency" = "64/48000";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
musnix = {
|
musnix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
rtcqs.enable = true;
|
rtcqs.enable = true;
|
||||||
soundcardPciId = "00:1f.3";
|
soundcardPciId = "00:1f.3";
|
||||||
|
|
||||||
kernel = {
|
kernel = {
|
||||||
realtime = true;
|
realtime = true;
|
||||||
packages = pkgs.linuxPackages_6_8_rt;
|
packages = pkgs.linuxPackages-rt;
|
||||||
};
|
|
||||||
|
|
||||||
# magic to me
|
|
||||||
rtirq = {
|
|
||||||
# highList = "snd_hrtimer";
|
|
||||||
resetAll = 1;
|
|
||||||
prioLow = 0;
|
|
||||||
enable = true;
|
|
||||||
nameList = "rtc0 snd";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
wayland = moduleWithSystem (toplevel@{ ... }: perSystem@{ ... }: {
|
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 = [
|
||||||
{
|
{
|
||||||
@ -151,6 +163,12 @@ top@{ moduleWithSystem, ... }: {
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
PermitRootLogin = "prohibit-password";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
wireless = {
|
wireless = {
|
||||||
networking = {
|
networking = {
|
||||||
@ -190,61 +208,76 @@ top@{ moduleWithSystem, ... }: {
|
|||||||
"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;
|
||||||
};
|
});
|
||||||
});
|
|
||||||
flatpak = {
|
flatpak = {
|
||||||
xdg = {
|
xdg = {
|
||||||
portal = {
|
portal = {
|
||||||
@ -255,44 +288,369 @@ top@{ moduleWithSystem, ... }: {
|
|||||||
};
|
};
|
||||||
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
8
overlays/default.nix
Normal 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
69
packages/default.nix
Normal 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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user