Compare commits
151 commits
push-pqvqp
...
main
Author | SHA1 | Date | |
---|---|---|---|
efcf81af5f | |||
81cf7bb89e | |||
854c8c8fb2 | |||
a60a561301 | |||
f8492fc9e9 | |||
6a706007c8 | |||
30f0f7ec20 | |||
65f16fd33c | |||
b245efa86e | |||
eb723ef181 | |||
8134abcf86 | |||
8d34a32f24 | |||
da38ff265d | |||
70145c2a66 | |||
6022a6e330 | |||
5c16f2df1b | |||
be22d9da42 | |||
92a7e6021d | |||
b7fe5a0014 | |||
f9b59e8ed2 | |||
cdb1b93296 | |||
effe29cd74 | |||
f0b640eeed | |||
f903d1b45e | |||
b4dfef1d6d | |||
54a1e34fa6 | |||
bd3674accf | |||
258d4639d7 | |||
4f1e43e923 | |||
718fe00b46 | |||
867514362a | |||
37a4235e5c | |||
a9525ec467 | |||
089740ffaf | |||
c01c5da7c4 | |||
e920f9c206 | |||
47ba1e5796 | |||
6aab08ec9b | |||
ac3df09b6b | |||
fcb7c0cd68 | |||
3157730a5f | |||
d3d62ce5a5 | |||
a29f210273 | |||
3c11d4177b | |||
2582b3796e | |||
f07c54346b | |||
e603b5ecd5 | |||
bb3ed01418 | |||
62539db84d | |||
3d2719f2f7 | |||
b23856722c | |||
6f5884a8a3 | |||
e597a95826 | |||
1b802a90de | |||
ddd6ecd055 | |||
b63db1934d | |||
2b13d1c0bb | |||
d8e2f19ced | |||
ab61d680ac | |||
73ed59e2a7 | |||
e222066a87 | |||
7995708a59 | |||
020a9276d5 | |||
f22a20b08c | |||
c64f321cc5 | |||
ee901946e2 | |||
737bdba912 | |||
ee44af814e | |||
f05b49fa81 | |||
5a1252da4b | |||
b3fe297a4a | |||
11d200f60b | |||
a20ee22543 | |||
e3767b5441 | |||
8c81b94e47 | |||
81246671df | |||
093fe30d75 | |||
e64935cf00 | |||
a3777bd73a | |||
73bbc7c616 | |||
caaa7c7c6b | |||
90d6d6ae85 | |||
d628301131 | |||
d425621e01 | |||
aaec1f1f78 | |||
b967f6e90e | |||
0bf5ed0c76 | |||
28bebd5aaa | |||
84f7301f72 | |||
df13761fc8 | |||
78bb79e258 | |||
83c0fac427 | |||
d1dee45d9c | |||
4a97a34afc | |||
20daa94697 | |||
54b25b154a | |||
3b9aaf5f59 | |||
dd12eb12ae | |||
52a6173f0b | |||
5c2deec279 | |||
33732a192b | |||
3aa834cf57 | |||
117c771fc4 | |||
69c04bb3e2 | |||
3ba9b95d09 | |||
4e34aeb208 | |||
0ec8e0adee | |||
5ddab9b274 | |||
e53b2e1c90 | |||
9ed3cde274 | |||
c1d4aba9c3 | |||
c5f02511eb | |||
937562a815 | |||
a2e61d05c2 | |||
643d47e4a1 | |||
76dc4942d2 | |||
3a62b76f49 | |||
d3cf76ca8d | |||
410c891ec1 | |||
b4ad21962e | |||
98125d7d71 | |||
275c852d4d | |||
c5bb22722b | |||
9bf0eadaa0 | |||
1d8f6f9c71 | |||
b455f5019c | |||
14adf2731f | |||
d002a100dd | |||
2a5e635c0d | |||
7bacabf0d3 | |||
9a7768ff5b | |||
ede1765ee8 | |||
7829fcd0ce | |||
193b006557 | |||
991cc8fc88 | |||
01d070eb40 | |||
b5020cdbc7 | |||
e2d8337e99 | |||
1c0b4d13dc | |||
beba034c17 | |||
d7b141428a | |||
9057c3600f | |||
efe7614539 | |||
03abcccb51 | |||
a1e2fceac9 | |||
95329f4a0b | |||
b927205c9d | |||
4f01412843 | |||
65039f4f17 | |||
2c32facb60 | |||
9cd3855bd9 |
105 changed files with 6013 additions and 1279 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,2 +1,5 @@
|
||||||
result
|
result
|
||||||
.direnv/
|
.direnv/
|
||||||
|
programs/*/target
|
||||||
|
target
|
||||||
|
*openapi.json
|
||||||
|
|
2056
Cargo.lock
generated
Normal file
2056
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
5
Cargo.toml
Normal file
5
Cargo.toml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
[workspace]
|
||||||
|
resolver = "2"
|
||||||
|
members = [ "programs/bar-pinger", "programs/bar-ws-monitor",
|
||||||
|
"programs/jrnl"
|
||||||
|
, "programs/traveldings"]
|
84
common.nix
84
common.nix
|
@ -5,12 +5,23 @@
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
|
lix-module,
|
||||||
|
rs-programs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib;
|
with lib;
|
||||||
with builtins; {
|
with builtins; {
|
||||||
|
imports = [lix-module.nixosModules.default];
|
||||||
nix = {
|
nix = {
|
||||||
package = pkgs.nixVersions.stable;
|
package = pkgs.nixVersions.stable;
|
||||||
|
settings = {
|
||||||
|
extra-substituters = [
|
||||||
|
"https://cache.lix.systems"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
"cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
|
||||||
|
];
|
||||||
|
};
|
||||||
extraOptions = ''
|
extraOptions = ''
|
||||||
experimental-features = nix-command flakes
|
experimental-features = nix-command flakes
|
||||||
keep-outputs = true
|
keep-outputs = true
|
||||||
|
@ -22,20 +33,22 @@ with builtins; {
|
||||||
config = {
|
config = {
|
||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
permittedInsecurePackages = [
|
permittedInsecurePackages = [
|
||||||
|
"electron-27.3.11"
|
||||||
"nodejs-16.20.0"
|
"nodejs-16.20.0"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
overlays = [rs-programs];
|
||||||
};
|
};
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
# pynitrokey
|
overskride
|
||||||
# nitrokey-app2
|
pulsemixer
|
||||||
|
|
||||||
veracrypt
|
|
||||||
|
|
||||||
htmlq
|
htmlq
|
||||||
|
|
||||||
|
prusa-slicer
|
||||||
|
zed-editor
|
||||||
wget
|
wget
|
||||||
git
|
git
|
||||||
neofetch
|
neofetch
|
||||||
|
@ -46,33 +59,38 @@ with builtins; {
|
||||||
iw
|
iw
|
||||||
btop
|
btop
|
||||||
nodejs
|
nodejs
|
||||||
jdk8
|
|
||||||
jdk11
|
maven
|
||||||
|
jetbrains.idea-ultimate
|
||||||
|
jetbrains.rust-rover
|
||||||
jdk
|
jdk
|
||||||
|
|
||||||
libsecret
|
libsecret
|
||||||
gh
|
|
||||||
nix-prefetch-scripts
|
|
||||||
fzf
|
fzf
|
||||||
glab
|
|
||||||
ripgrep
|
ripgrep
|
||||||
sl
|
|
||||||
lolcat
|
|
||||||
appimage-run
|
appimage-run
|
||||||
git-crypt
|
git-crypt
|
||||||
file
|
file
|
||||||
whois
|
whois
|
||||||
p7zip
|
p7zip
|
||||||
file
|
file
|
||||||
nmap
|
|
||||||
cmatrix
|
|
||||||
tree
|
tree
|
||||||
socat
|
socat
|
||||||
smartmontools
|
smartmontools
|
||||||
mprocs
|
mprocs
|
||||||
dig
|
dig
|
||||||
aria2
|
aria2
|
||||||
usbutils
|
cyme
|
||||||
numbat
|
numbat
|
||||||
|
devd
|
||||||
|
|
||||||
|
libjxl
|
||||||
|
|
||||||
|
s10e-jrnl
|
||||||
|
|
||||||
|
ungoogled-chromium
|
||||||
|
scc
|
||||||
|
speedtest-rs
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -83,6 +101,7 @@ with builtins; {
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
|
systemd-lock-handler.enable = true;
|
||||||
openssh = {
|
openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# settings.PasswordAuthentication = false;
|
# settings.PasswordAuthentication = false;
|
||||||
|
@ -90,29 +109,6 @@ with builtins; {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
console.colors = [
|
|
||||||
"282828"
|
|
||||||
"cc241d"
|
|
||||||
"98971a"
|
|
||||||
"d79921"
|
|
||||||
"458588"
|
|
||||||
"b16286"
|
|
||||||
"689d6a"
|
|
||||||
"a89984"
|
|
||||||
"928374"
|
|
||||||
"fb4934"
|
|
||||||
"b8bb26"
|
|
||||||
"fabd2f"
|
|
||||||
"83a598"
|
|
||||||
"d3869b"
|
|
||||||
"8ec07c"
|
|
||||||
"ebdbb2"
|
|
||||||
];
|
|
||||||
|
|
||||||
# nitrokey
|
|
||||||
services.udev.packages = [pkgs.nitrokey-udev-rules];
|
|
||||||
services.pcscd.enable = true;
|
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
ssh.startAgent = false;
|
ssh.startAgent = false;
|
||||||
gnupg.agent = {
|
gnupg.agent = {
|
||||||
|
@ -124,6 +120,8 @@ with builtins; {
|
||||||
mtr.enable = true;
|
mtr.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hardware.gpgSmartcards.enable = true;
|
||||||
|
|
||||||
time.timeZone = "Europe/Berlin";
|
time.timeZone = "Europe/Berlin";
|
||||||
|
|
||||||
home-manager.users.jade = {
|
home-manager.users.jade = {
|
||||||
|
@ -142,7 +140,6 @@ with builtins; {
|
||||||
boot.kernel.sysctl."vm.max_map_count" = 2147483642;
|
boot.kernel.sysctl."vm.max_map_count" = 2147483642;
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
opengl.enable = true;
|
|
||||||
uinput.enable = true;
|
uinput.enable = true;
|
||||||
bluetooth.enable = true;
|
bluetooth.enable = true;
|
||||||
# keyboard.uhk.enable = true;
|
# keyboard.uhk.enable = true;
|
||||||
|
@ -157,9 +154,6 @@ with builtins; {
|
||||||
users.users.jade = {
|
users.users.jade = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = ["wheel" "input" "uinput" "libvirtd" "adbusers" "dialout" "plugdev" "wireshark"];
|
extraGroups = ["wheel" "input" "uinput" "libvirtd" "adbusers" "dialout" "plugdev" "wireshark"];
|
||||||
openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOaE8TFsIazpn4OnHvHcRpOFr9FfvMaWOiEjmHsmnAoE cardno:000F_70CD7D05"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
zramSwap = {
|
zramSwap = {
|
||||||
|
@ -167,5 +161,11 @@ with builtins; {
|
||||||
algorithm = "zstd";
|
algorithm = "zstd";
|
||||||
};
|
};
|
||||||
|
|
||||||
users.defaultUserShell = pkgs.nushellFull;
|
users.defaultUserShell = pkgs.nushell;
|
||||||
|
|
||||||
|
nix.gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "--delete-older-than 60d";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
549
flake.lock
549
flake.lock
|
@ -1,95 +1,51 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"arion": {
|
"crane": {
|
||||||
"inputs": {
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"haskell-flake": "haskell-flake",
|
|
||||||
"hercules-ci-effects": "hercules-ci-effects",
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1707923576,
|
"lastModified": 1731098351,
|
||||||
"narHash": "sha256-vch1hvgoB2TEl1+0J9h5uPkTrL4zNFUxE/razagkqQQ=",
|
"narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=",
|
||||||
"owner": "hercules-ci",
|
"owner": "ipetkov",
|
||||||
"repo": "arion",
|
"repo": "crane",
|
||||||
"rev": "2b1fa9a8e9e40bb8e65a677c6fdd66dae4f4676e",
|
"rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "hercules-ci",
|
"owner": "ipetkov",
|
||||||
"repo": "arion",
|
"repo": "crane",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"easymacros": {
|
"fenix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils",
|
"nixpkgs": [
|
||||||
"naersk": "naersk",
|
|
||||||
"nixpkgs": "nixpkgs_3"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1662552013,
|
|
||||||
"narHash": "sha256-ENoDCKs6gKcGYa06LhCVhro0FVntcy5GBvShS+TPvMY=",
|
|
||||||
"ref": "refs/heads/main",
|
|
||||||
"rev": "43405b3bcf786513adc6534ed0e6618c458ba2cb",
|
|
||||||
"revCount": 38,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitlab.com/obsidianical/easymacros.git"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitlab.com/obsidianical/easymacros.git"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"arion",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
],
|
||||||
|
"rust-analyzer-src": "rust-analyzer-src"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706830856,
|
"lastModified": 1731133750,
|
||||||
"narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=",
|
"narHash": "sha256-gZ3m8e176ai+akwiayg7Mve73rcUCD0+l6OMMFhGEYI=",
|
||||||
"owner": "hercules-ci",
|
"owner": "nix-community",
|
||||||
"repo": "flake-parts",
|
"repo": "fenix",
|
||||||
"rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f",
|
"rev": "87e4581cdfecbac602220fe76c67b37d2d1ee995",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "hercules-ci",
|
"owner": "nix-community",
|
||||||
"repo": "flake-parts",
|
"repo": "fenix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"arion",
|
|
||||||
"hercules-ci-effects",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1701473968,
|
|
||||||
"narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "flake-parts",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1656065134,
|
"lastModified": 1726560853,
|
||||||
"narHash": "sha256-oc6E6ByIw3oJaIyc67maaFcnjYOz1mMcOtHxbEf9NwQ=",
|
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "bee6a7250dd1b01844a2de7e02e4df7d8a0a206c",
|
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -99,87 +55,60 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_2": {
|
"flake-utils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1678901627,
|
"lastModified": 1726560853,
|
||||||
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
|
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
|
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "flake-utils",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1667395993,
|
|
||||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "flake-utils",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gumseite": {
|
"flakey-profile": {
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils_2",
|
|
||||||
"nixpkgs": "nixpkgs_4"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1680175611,
|
"lastModified": 1712898590,
|
||||||
"narHash": "sha256-0VevgW7qjE3rDSudFr/XIQrMmPowDgLO9jkM4AFkR/o=",
|
"narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
|
||||||
"ref": "refs/heads/master",
|
"owner": "lf-",
|
||||||
"rev": "57f43b774151e34bbf3de5f159924aca93750561",
|
"repo": "flakey-profile",
|
||||||
"revCount": 2,
|
"rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitlab.com/schrottkatze/gum-schulsachen.git"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitlab.com/schrottkatze/gum-schulsachen.git"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"haskell-flake": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1675296942,
|
|
||||||
"narHash": "sha256-u1X1sblozi5qYEcLp1hxcyo8FfDHnRUVX3dJ/tW19jY=",
|
|
||||||
"owner": "srid",
|
|
||||||
"repo": "haskell-flake",
|
|
||||||
"rev": "c2cafce9d57bfca41794dc3b99c593155006c71e",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "srid",
|
"owner": "lf-",
|
||||||
"ref": "0.1.0",
|
"repo": "flakey-profile",
|
||||||
"repo": "haskell-flake",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hercules-ci-effects": {
|
"helix-inline-diags": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_2",
|
"crane": [
|
||||||
|
"crane"
|
||||||
|
],
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"arion",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
],
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1704029560,
|
"lastModified": 1730790589,
|
||||||
"narHash": "sha256-a4Iu7x1OP+uSYpqadOu8VCPY+MPF3+f6KIi+MAxlgyw=",
|
"narHash": "sha256-xJ6bQ4VmdTB7A+dMbmOMaZ8a6erB6rkZkB+yzqD7gd4=",
|
||||||
"owner": "hercules-ci",
|
"owner": "helix-editor",
|
||||||
"repo": "hercules-ci-effects",
|
"repo": "helix",
|
||||||
"rev": "d5cbf433a6ae9cae05400189a8dbc6412a03ba16",
|
"rev": "b53dafe326d51b7f64a1c52379e3d4150cd2991e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "hercules-ci",
|
"owner": "helix-editor",
|
||||||
"repo": "hercules-ci-effects",
|
"repo": "helix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -190,11 +119,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1708988456,
|
"lastModified": 1730837930,
|
||||||
"narHash": "sha256-RCz7Xe64tN2zgWk+MVHkzg224znwqknJ1RnB7rVqUWw=",
|
"narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "1d085ea4444d26aa52297758b333b449b2aa6fca",
|
"rev": "2f607e07f3ac7e53541120536708e824acccfaa8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -203,30 +132,47 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"karton": {
|
"lix": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731164513,
|
||||||
|
"narHash": "sha256-WnT6MpgrMKgqV2Rs+MfU88+KO+/njELPOtGoNhoX2oA=",
|
||||||
|
"rev": "b967f1d5fe9d1bf58e6159e9b426c5b341489397",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/b967f1d5fe9d1bf58e6159e9b426c5b341489397.tar.gz?rev=b967f1d5fe9d1bf58e6159e9b426c5b341489397"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://git.lix.systems/lix-project/lix/archive/main.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lix-module": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"naersk": "naersk_2",
|
"flake-utils": "flake-utils_2",
|
||||||
"nixpkgs": "nixpkgs_6",
|
"flakey-profile": "flakey-profile",
|
||||||
"utils": "utils"
|
"lix": "lix",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1683146576,
|
"lastModified": 1731185731,
|
||||||
"narHash": "sha256-ZaXE/mmVWgZkfnlY56PFuuCMDyUhNtkKuLzkle6Lg8s=",
|
"narHash": "sha256-RNaIu43b9PoXEhW4OqXUNZKY/jezQyCYWwdv1M0VjsA=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/main",
|
||||||
"rev": "5002f11bf360e4508fc73c28fa0aa0f80bf0713d",
|
"rev": "691193879d96bdfd1e6ab5ebcca2fadc7604cf34",
|
||||||
"revCount": 188,
|
"revCount": 117,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://gitlab.com/obsidianical/microbin.git"
|
"url": "https://git.lix.systems/lix-project/nixos-module"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://gitlab.com/obsidianical/microbin.git"
|
"url": "https://git.lix.systems/lix-project/nixos-module"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mac-brcm-fw": {
|
"mac-brcm-fw": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1701034142,
|
"lastModified": 1727366922,
|
||||||
"narHash": "sha256-+kW8ogc6DykjMVlrr+3vWKs9ZUdJ9EW72LbY7k/Qvh4=",
|
"narHash": "sha256-+kW8ogc6DykjMVlrr+3vWKs9ZUdJ9EW72LbY7k/Qvh4=",
|
||||||
"path": "/home/jade/nix-configs/mac-brcm-fw",
|
"path": "/home/jade/nix-configs/mac-brcm-fw",
|
||||||
"type": "path"
|
"type": "path"
|
||||||
|
@ -236,81 +182,6 @@
|
||||||
"type": "path"
|
"type": "path"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"meowsite": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils_3",
|
|
||||||
"nixpkgs": "nixpkgs_7"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1678920998,
|
|
||||||
"narHash": "sha256-YM7MdYYoL/Wgmg8nmMVnAm33WwzdA2JFwMHKfOxNBXs=",
|
|
||||||
"ref": "refs/heads/master",
|
|
||||||
"rev": "f40a32b22bc96b07cb78fb5751cf92d5f30b1c24",
|
|
||||||
"revCount": 11,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitlab.com/obsidianical/meowsite.git"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitlab.com/obsidianical/meowsite.git"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"naersk": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs_2"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1655042882,
|
|
||||||
"narHash": "sha256-9BX8Fuez5YJlN7cdPO63InoyBy7dm3VlJkkmTt6fS1A=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "naersk",
|
|
||||||
"rev": "cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "naersk",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"naersk_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs_5"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1671096816,
|
|
||||||
"narHash": "sha256-ezQCsNgmpUHdZANDCILm3RvtO1xH8uujk/+EqNvzIOg=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "naersk",
|
|
||||||
"rev": "d998160d6a076cfe8f9741e56aeec7e267e3e114",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "naersk",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"naersk_3": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs_9"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1671096816,
|
|
||||||
"narHash": "sha256-ezQCsNgmpUHdZANDCILm3RvtO1xH8uujk/+EqNvzIOg=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "naersk",
|
|
||||||
"rev": "d998160d6a076cfe8f9741e56aeec7e267e3e114",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "naersk",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1687903496,
|
"lastModified": 1687903496,
|
||||||
|
@ -329,27 +200,26 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1707689078,
|
"lastModified": 1730785428,
|
||||||
"narHash": "sha256-UUGmRa84ZJHpGZ1WZEBEUOzaPOWG8LZ0yPg1pdDF/yM=",
|
"narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "f9d39fb9aff0efee4a3d5f4a6d7c17701d38a1d8",
|
"rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"id": "nixpkgs",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"type": "indirect"
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1708831307,
|
"lastModified": 1720535198,
|
||||||
"narHash": "sha256-0iL/DuGjiUeck1zEaL+aIe2WvA3/cVhp/SlmTcOZXH4=",
|
"narHash": "sha256-zwVvxrdIzralnSbcpghA92tWu2DV2lwv89xZc8MTrbg=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "5bf1cadb72ab4e77cb0b700dab76bcdaf88f706b",
|
"rev": "205fd4226592cc83fd4c0885a3e4c9c400efabb5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -358,204 +228,101 @@
|
||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_10": {
|
"nixpkgs-unstable-small": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1675614288,
|
"lastModified": 1731136819,
|
||||||
"narHash": "sha256-i3Rc/ENnz62BcrSloeVmAyPicEh4WsrEEYR+INs9TYw=",
|
"narHash": "sha256-qGmBFnq3/9AiiLZUOVxDsU5j6ysL3PXA8KRp7muJWMs=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "d25de6654a34d99dceb02e71e6db516b3b545be6",
|
"rev": "4a2c7def574d031cbf3d7110969f2ca5f38f8ed7",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1656755932,
|
|
||||||
"narHash": "sha256-TGThfOxr+HjFK464+UoUE6rClp2cwxjiKvHcBVdIGSQ=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "660ac43ff9ab1f12e28bfb31d4719795777fe152",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1656755932,
|
|
||||||
"narHash": "sha256-TGThfOxr+HjFK464+UoUE6rClp2cwxjiKvHcBVdIGSQ=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "660ac43ff9ab1f12e28bfb31d4719795777fe152",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_4": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1679966490,
|
|
||||||
"narHash": "sha256-k0jV+y1jawE6w4ZvKgXDNg4+O9NNtcaWwzw8gufv0b4=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "5b7cd5c39befee629be284970415b6eb3b0ff000",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-22.11",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_5": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1677852945,
|
|
||||||
"narHash": "sha256-liiVJjkBTuBTAkRW3hrI8MbPD2ImYzwUpa7kvteiKhM=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "f5ffd5787786dde3a8bf648c7a1b5f78c4e01abb",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_6": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1677852945,
|
|
||||||
"narHash": "sha256-liiVJjkBTuBTAkRW3hrI8MbPD2ImYzwUpa7kvteiKhM=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "f5ffd5787786dde3a8bf648c7a1b5f78c4e01abb",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_7": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1674407282,
|
|
||||||
"narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-22.11",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_8": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1708807242,
|
|
||||||
"narHash": "sha256-sRTRkhMD4delO/hPxxi+XwLqPn8BuUq6nnj4JqLwOu0=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "73de017ef2d18a04ac4bfd0c02650007ccb31c2a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "nixpkgs",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_9": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1675614288,
|
|
||||||
"narHash": "sha256-i3Rc/ENnz62BcrSloeVmAyPicEh4WsrEEYR+INs9TYw=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "d25de6654a34d99dceb02e71e6db516b3b545be6",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "nixpkgs",
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixos-unstable-small",
|
||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"arion": "arion",
|
"crane": "crane",
|
||||||
"easymacros": "easymacros",
|
"fenix": "fenix",
|
||||||
"gumseite": "gumseite",
|
"helix-inline-diags": "helix-inline-diags",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"karton": "karton",
|
"lix-module": "lix-module",
|
||||||
"mac-brcm-fw": "mac-brcm-fw",
|
"mac-brcm-fw": "mac-brcm-fw",
|
||||||
"meowsite": "meowsite",
|
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs_8",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
"wordsofgod": "wordsofgod"
|
"nixpkgs-unstable-small": "nixpkgs-unstable-small"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"utils": {
|
"rust-analyzer-src": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1676283394,
|
"lastModified": 1731056261,
|
||||||
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
"narHash": "sha256-TPeXChHVcaCBAoE349K7OZH4We5/2ys1GgG4IiwjwOs=",
|
||||||
"owner": "numtide",
|
"owner": "rust-lang",
|
||||||
"repo": "flake-utils",
|
"repo": "rust-analyzer",
|
||||||
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
|
"rev": "dd9cd22514cb1001a0a2374b36a85eb75245f27b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "rust-lang",
|
||||||
"repo": "flake-utils",
|
"ref": "nightly",
|
||||||
|
"repo": "rust-analyzer",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"utils_2": {
|
"rust-overlay": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1667395993,
|
|
||||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"wordsofgod": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"naersk": "naersk_3",
|
"nixpkgs": [
|
||||||
"nixpkgs": "nixpkgs_10",
|
"helix-inline-diags",
|
||||||
"utils": "utils_2"
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1675936524,
|
"lastModified": 1728268235,
|
||||||
"narHash": "sha256-cr6lknWz+2N4mq6csfdYLUBNTxB2MbaEGH8yQyk3XbA=",
|
"narHash": "sha256-lJMFnMO4maJuNO6PQ5fZesrTmglze3UFTTBuKGwR1Nw=",
|
||||||
"ref": "refs/heads/master",
|
"owner": "oxalica",
|
||||||
"rev": "93c03cbe6f7bac22c7c5023d4bcba3af837ce43b",
|
"repo": "rust-overlay",
|
||||||
"revCount": 8,
|
"rev": "25685cc2c7054efc31351c172ae77b21814f2d42",
|
||||||
"type": "git",
|
"type": "github"
|
||||||
"url": "https://gitlab.com/obsidianical/wordsofgod.git"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"owner": "oxalica",
|
||||||
"url": "https://gitlab.com/obsidianical/wordsofgod.git"
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
76
flake.nix
76
flake.nix
|
@ -4,6 +4,18 @@
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-unstable";
|
nixpkgs.url = "nixpkgs/nixos-unstable";
|
||||||
nixpkgs-stable.url = "nixpkgs/nixos-23.11";
|
nixpkgs-stable.url = "nixpkgs/nixos-23.11";
|
||||||
|
nixpkgs-unstable-small.url = "nixpkgs/nixos-unstable-small";
|
||||||
|
helix-inline-diags = {
|
||||||
|
url = "github:helix-editor/helix";
|
||||||
|
inputs = {
|
||||||
|
crane.follows = "crane";
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
lix-module = {
|
||||||
|
url = "git+https://git.lix.systems/lix-project/nixos-module";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
@ -13,25 +25,55 @@
|
||||||
url = "path:/home/jade/nix-configs/mac-brcm-fw";
|
url = "path:/home/jade/nix-configs/mac-brcm-fw";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
#mms.url = "github:mkaito/nixos-modded-minecraft-servers";
|
crane = {
|
||||||
easymacros.url = "git+https://gitlab.com/obsidianical/easymacros.git";
|
url = "github:ipetkov/crane";
|
||||||
meowsite.url = "git+https://gitlab.com/obsidianical/meowsite.git";
|
};
|
||||||
wordsofgod.url = "git+https://gitlab.com/obsidianical/wordsofgod.git";
|
fenix = {
|
||||||
karton.url = "git+https://gitlab.com/obsidianical/microbin.git";
|
url = "github:nix-community/fenix";
|
||||||
arion.url = "github:hercules-ci/arion";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
gumseite.url = "git+https://gitlab.com/schrottkatze/gum-schulsachen.git";
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {
|
||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
nixpkgs-stable,
|
nixpkgs-stable,
|
||||||
|
nixpkgs-unstable-small,
|
||||||
|
helix-inline-diags,
|
||||||
|
lix-module,
|
||||||
home-manager,
|
home-manager,
|
||||||
nixos-hardware,
|
nixos-hardware,
|
||||||
mac-brcm-fw,
|
mac-brcm-fw,
|
||||||
|
fenix,
|
||||||
|
crane,
|
||||||
...
|
...
|
||||||
} @ inputs: let
|
} @ inputs: let
|
||||||
pkgs = nixpkgs.legacyPackages."x86_64-linux";
|
system = "x86_64-linux";
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
pkgs-stable = nixpkgs-stable.legacyPackages.${system};
|
||||||
|
pkgs-unstable-small = nixpkgs-unstable-small.legacyPackages.${system};
|
||||||
|
crane-lib = crane.mkLib nixpkgs.legacyPackages.${system};
|
||||||
|
rs-toolchain = with fenix.packages.${system};
|
||||||
|
combine [
|
||||||
|
complete.toolchain
|
||||||
|
];
|
||||||
|
# rs-platform = pkgs.makeRustPlatform {
|
||||||
|
# cargo = rs-toolchain;
|
||||||
|
# rustc = rs-toolchain;
|
||||||
|
# };
|
||||||
|
rs-programs = final: prev: {
|
||||||
|
# s10e-jrnl = rs-platform.buildRustPackage {
|
||||||
|
# pname = "jrnl";
|
||||||
|
# version = "0.0.1";
|
||||||
|
# src = ./programs/jrnl;
|
||||||
|
# cargoLock.lockFile = ./programs/jrnl/Cargo.lock;
|
||||||
|
# };
|
||||||
|
s10e-jrnl = crane-lib.buildPackage {
|
||||||
|
pname = "s10e-bs";
|
||||||
|
version = "0.0.1";
|
||||||
|
src = crane-lib.cleanCargoSource (crane-lib.path ./.);
|
||||||
|
};
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
devShells."x86_64-linux".default = pkgs.mkShell {
|
devShells."x86_64-linux".default = pkgs.mkShell {
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
@ -43,13 +85,16 @@
|
||||||
xmobar
|
xmobar
|
||||||
statgrab
|
statgrab
|
||||||
]))
|
]))
|
||||||
|
rs-toolchain
|
||||||
pkgs.haskell-language-server
|
pkgs.haskell-language-server
|
||||||
|
pkgs.pkg-config
|
||||||
|
pkgs.openssl
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
monosodium-glutamate-g = nixpkgs.lib.nixosSystem {
|
monosodium-glutamate-g = nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit inputs;
|
inherit inputs pkgs-unstable-small pkgs-stable rs-programs lix-module helix-inline-diags;
|
||||||
};
|
};
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = [
|
modules = [
|
||||||
|
@ -58,6 +103,9 @@
|
||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = {
|
||||||
|
inherit pkgs-unstable-small pkgs-stable;
|
||||||
|
};
|
||||||
home-manager.users.jade = {
|
home-manager.users.jade = {
|
||||||
nixosConfig,
|
nixosConfig,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
@ -71,7 +119,7 @@
|
||||||
};
|
};
|
||||||
catbook-j = nixpkgs.lib.nixosSystem {
|
catbook-j = nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit inputs;
|
inherit inputs pkgs-unstable-small pkgs-stable rs-programs lix-module helix-inline-diags;
|
||||||
};
|
};
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = [
|
modules = [
|
||||||
|
@ -80,6 +128,9 @@
|
||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = {
|
||||||
|
inherit pkgs-unstable-small pkgs-stable;
|
||||||
|
};
|
||||||
home-manager.users.jade = {
|
home-manager.users.jade = {
|
||||||
nixosConfig,
|
nixosConfig,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
@ -93,7 +144,7 @@
|
||||||
};
|
};
|
||||||
potatobook-g = nixpkgs.lib.nixosSystem {
|
potatobook-g = nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit inputs;
|
inherit inputs pkgs-unstable-small rs-programs lix-module helix-inline-diags;
|
||||||
};
|
};
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = [
|
modules = [
|
||||||
|
@ -103,6 +154,9 @@
|
||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = {
|
||||||
|
inherit pkgs-unstable-small pkgs-stable;
|
||||||
|
};
|
||||||
home-manager.users.jade = {
|
home-manager.users.jade = {
|
||||||
nixosConfig,
|
nixosConfig,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
|
|
@ -9,34 +9,32 @@
|
||||||
}: {
|
}: {
|
||||||
nixpkgs.config.permittedInsecurePackages = [
|
nixpkgs.config.permittedInsecurePackages = [
|
||||||
"electron-25.9.0"
|
"electron-25.9.0"
|
||||||
|
"electron-27.3.11"
|
||||||
];
|
];
|
||||||
imports = [
|
imports = [
|
||||||
# Include the results of the hardware scan.
|
# Include the results of the hardware scan.
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
../../common.nix
|
../../common.nix
|
||||||
../../modules
|
../../modules
|
||||||
|
./modules
|
||||||
];
|
];
|
||||||
jade = {
|
jade = {
|
||||||
flatpak.enable = true;
|
hwKey.pamAuth.enable = true;
|
||||||
desktop = {
|
desktop = {
|
||||||
compositing.enable = true;
|
dm.autoLogin = {
|
||||||
|
enable = true;
|
||||||
|
delay = 5;
|
||||||
|
};
|
||||||
syncthing.enable = true;
|
syncthing.enable = true;
|
||||||
kdeconnect.enable = true;
|
kdeconnect.enable = true;
|
||||||
cloud.enable = true;
|
cloud.enable = true;
|
||||||
social.enable = true;
|
social.enable = true;
|
||||||
mail.enable = true;
|
mail.enable = true;
|
||||||
gaming.enable = true;
|
gaming.enable = true;
|
||||||
evremap.enable = true;
|
|
||||||
};
|
};
|
||||||
terminal.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.trackpoint = {
|
security.pam.services.swaylock = {};
|
||||||
enable = true;
|
|
||||||
# device = "MELF0410:00 1FD2:7007";
|
|
||||||
device = "DELL081C:00 044E:121F Mouse";
|
|
||||||
sensitivity = 255;
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.usb-modeswitch.enable = true;
|
hardware.usb-modeswitch.enable = true;
|
||||||
systemd.services."ModemManager".enable = true;
|
systemd.services."ModemManager".enable = true;
|
||||||
|
@ -44,19 +42,7 @@
|
||||||
systemd.services."ModemManager".wantedBy = ["multi-user.target"];
|
systemd.services."ModemManager".wantedBy = ["multi-user.target"];
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
VDPAU_DRIVER = lib.mkIf config.hardware.opengl.enable (lib.mkDefault "va_gl");
|
VDPAU_DRIVER = lib.mkIf config.hardware.graphics.enable (lib.mkDefault "va_gl");
|
||||||
};
|
|
||||||
|
|
||||||
hardware.opengl = {
|
|
||||||
enable = true;
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
intel-ocl
|
|
||||||
intel-media-driver
|
|
||||||
intel-vaapi-driver
|
|
||||||
intel-compute-runtime
|
|
||||||
libvdpau-va-gl
|
|
||||||
mesa.drivers
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.wireshark.enable = true;
|
programs.wireshark.enable = true;
|
||||||
|
@ -69,8 +55,6 @@
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
services.blueman.enable = true;
|
services.blueman.enable = true;
|
||||||
|
|
||||||
services.xserver.libinput.touchpad.tapping = false;
|
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.plantuml
|
pkgs.plantuml
|
||||||
pkgs.mqttui
|
pkgs.mqttui
|
||||||
|
@ -88,55 +72,11 @@
|
||||||
"/crypto_keyfile.bin" = null;
|
"/crypto_keyfile.bin" = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
# nixpkgs = {
|
|
||||||
# overlays = [
|
|
||||||
# (self: super: {
|
|
||||||
# linux_zen_xeniafied = pkgs.linuxPackagesFor (pkgs.linuxKernel.kernels.linux_zen.override {
|
|
||||||
# structuredExtraConfig = with lib.kernel; {
|
|
||||||
# "FB" = yes;
|
|
||||||
# "FRAMEBUFFER_CONSOLE" = yes;
|
|
||||||
# "VGA_CONSOLE" = yes;
|
|
||||||
# "VIDEO_SELECT" = yes;
|
|
||||||
# LOGO = lib.mkForce yes;
|
|
||||||
# LOGO_LINUX_CLUT224 = yes;
|
|
||||||
# };
|
|
||||||
# ignoreConfigErrors = true;
|
|
||||||
# });
|
|
||||||
# })
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
|
|
||||||
boot.kernelPackages = pkgs.linuxPackages_zen;
|
boot.kernelPackages = pkgs.linuxPackages_zen;
|
||||||
# boot.kernelPatches = [
|
|
||||||
# {
|
|
||||||
# name = "fomx";
|
|
||||||
# patch = ../../other/0001-fomx.patch;
|
|
||||||
# }
|
|
||||||
# ];
|
|
||||||
|
|
||||||
services.xserver.displayManager.autoLogin = {
|
# networking
|
||||||
enable = true;
|
|
||||||
user = "jade";
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.hostName = "catbook-j"; # Define your hostname.
|
|
||||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
|
||||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
|
||||||
|
|
||||||
# Enable networking
|
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
networking.hostName = "catbook-j";
|
||||||
security.pam.services.jade.u2fAuth = true;
|
|
||||||
programs.i3lock.u2fSupport = true;
|
|
||||||
security.pam.u2f = {
|
|
||||||
enable = true;
|
|
||||||
cue = true;
|
|
||||||
control = "sufficient";
|
|
||||||
authFile = "/home/jade/.ssh/u2f_keys";
|
|
||||||
};
|
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
i18n.extraLocaleSettings = {
|
||||||
LC_ADDRESS = "de_DE.UTF-8";
|
LC_ADDRESS = "de_DE.UTF-8";
|
||||||
|
|
6
hosts/catbook-j/modules/default.nix
Normal file
6
hosts/catbook-j/modules/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./input.nix
|
||||||
|
./graphics.nix
|
||||||
|
];
|
||||||
|
}
|
12
hosts/catbook-j/modules/graphics.nix
Normal file
12
hosts/catbook-j/modules/graphics.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
hardware.graphics = {
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
intel-ocl
|
||||||
|
intel-media-driver
|
||||||
|
intel-vaapi-driver
|
||||||
|
intel-compute-runtime
|
||||||
|
libvdpau-va-gl
|
||||||
|
mesa.drivers
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
27
hosts/catbook-j/modules/input.nix
Normal file
27
hosts/catbook-j/modules/input.nix
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{...}: {
|
||||||
|
# key remapping
|
||||||
|
jade.input.remapping = {
|
||||||
|
enable = true;
|
||||||
|
devices."AT Translated Set 2 keyboard" = {
|
||||||
|
swapKeys = [
|
||||||
|
["KEY_Y" "KEY_Z"]
|
||||||
|
["KEY_LEFTALT" "KEY_LEFTMETA"]
|
||||||
|
];
|
||||||
|
dual_role = [
|
||||||
|
{
|
||||||
|
input = "KEY_CAPSLOCK";
|
||||||
|
hold = ["KEY_LEFTCTRL"];
|
||||||
|
tap = ["KEY_ESC"];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.trackpoint = {
|
||||||
|
enable = true;
|
||||||
|
device = "TPPS/2 IBM TrackPoint";
|
||||||
|
sensitivity = 256;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.libinput.touchpad.tapping = true;
|
||||||
|
}
|
|
@ -6,39 +6,19 @@
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
../../common.nix
|
../../common.nix
|
||||||
../../modules
|
../../modules
|
||||||
|
./modules
|
||||||
];
|
];
|
||||||
|
|
||||||
# nixpkgs = {
|
|
||||||
# overlays = [
|
|
||||||
# (self: super: {
|
|
||||||
# linux_zen_xeniafied = pkgs.linuxPackagesFor (pkgs.linuxKernel.kernels.linux_zen.override {
|
|
||||||
# structuredExtraConfig = with lib.kernel; {
|
|
||||||
# "FB" = yes;
|
|
||||||
# "FRAMEBUFFER_CONSOLE" = yes;
|
|
||||||
# "VGA_CONSOLE" = yes;
|
|
||||||
# "VIDEO_SELECT" = yes;
|
|
||||||
# LOGO = lib.mkForce yes;
|
|
||||||
# LOGO_LINUX_CLUT224 = yes;
|
|
||||||
# };
|
|
||||||
# ignoreConfigErrors = true;
|
|
||||||
# });
|
|
||||||
# })
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
|
|
||||||
jade = {
|
jade = {
|
||||||
flatpak.enable = true;
|
hwKey.pamAuth.enable = true;
|
||||||
desktop = {
|
desktop = {
|
||||||
compositing.enable = true;
|
|
||||||
syncthing.enable = true;
|
syncthing.enable = true;
|
||||||
kdeconnect.enable = true;
|
kdeconnect.enable = true;
|
||||||
cloud.enable = true;
|
cloud.enable = true;
|
||||||
social.enable = true;
|
social.enable = true;
|
||||||
gaming.enable = true;
|
gaming.enable = true;
|
||||||
mail.enable = true;
|
mail.enable = true;
|
||||||
evremap.enable = false;
|
|
||||||
};
|
};
|
||||||
terminal.enable = true;
|
|
||||||
};
|
};
|
||||||
boot = {
|
boot = {
|
||||||
loader = {
|
loader = {
|
||||||
|
@ -46,16 +26,8 @@
|
||||||
systemd-boot.enable = true;
|
systemd-boot.enable = true;
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
};
|
};
|
||||||
# latest linux kernel
|
|
||||||
#boot.kernelPackages = pkgs.linuxPackages_latest;
|
|
||||||
#boot.kernelPackages = pkgs.linux_zen_xeniafied;
|
|
||||||
kernelPackages = pkgs.linuxPackages_zen;
|
kernelPackages = pkgs.linuxPackages_zen;
|
||||||
# boot.kernelPatches = [
|
|
||||||
# {
|
|
||||||
# name = "fomx";
|
|
||||||
# patch = ../other/0001-fomx.patch;
|
|
||||||
# }
|
|
||||||
# ];
|
|
||||||
|
|
||||||
binfmt.emulatedSystems = ["aarch64-linux"];
|
binfmt.emulatedSystems = ["aarch64-linux"];
|
||||||
};
|
};
|
||||||
|
@ -82,31 +54,15 @@
|
||||||
enableRedistributableFirmware = true;
|
enableRedistributableFirmware = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
security.pam.services.jade.u2fAuth = true;
|
|
||||||
programs.i3lock.u2fSupport = true;
|
|
||||||
|
|
||||||
security.pam.u2f = {
|
|
||||||
enable = true;
|
|
||||||
cue = true;
|
|
||||||
control = "sufficient";
|
|
||||||
authFile = "/home/jade/.ssh/u2f_keys";
|
|
||||||
};
|
|
||||||
|
|
||||||
# missing: menu-qalc picom-jonaburg
|
# missing: menu-qalc picom-jonaburg
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# TODO: clean up.
|
# TODO: clean up.
|
||||||
libGL
|
|
||||||
libreoffice-fresh
|
|
||||||
wireshark
|
|
||||||
awesomebump
|
|
||||||
|
|
||||||
zenstates
|
zenstates
|
||||||
zenmonitor
|
zenmonitor
|
||||||
nvtop-amd
|
|
||||||
radeontop
|
|
||||||
rgp
|
|
||||||
tea
|
tea
|
||||||
blender-hip
|
blender-hip
|
||||||
|
jdk8
|
||||||
|
jdk11
|
||||||
];
|
];
|
||||||
programs = {
|
programs = {
|
||||||
wireshark.enable = true;
|
wireshark.enable = true;
|
||||||
|
@ -126,23 +82,7 @@
|
||||||
# networking.firewall.allowedTCPPorts = [ 4713 ];
|
# networking.firewall.allowedTCPPorts = [ 4713 ];
|
||||||
systemd.services."NetworkManager-wait-online".enable = false;
|
systemd.services."NetworkManager-wait-online".enable = false;
|
||||||
|
|
||||||
systemd.services = {
|
swapDevices = [{device = "/swap/swapfile";}];
|
||||||
create-swapfile = {
|
|
||||||
serviceConfig.Type = "oneshot";
|
|
||||||
wantedBy = ["swap-swapfile.swap"];
|
|
||||||
script = ''
|
|
||||||
swapfile="/swap/swapfile"
|
|
||||||
if [[ -f "$swapfile" ]]; then
|
|
||||||
echo "Swap file $swapfile already exists, taking no action"
|
|
||||||
else
|
|
||||||
echo "Setting up swap file $swapfile"
|
|
||||||
${pkgs.coreutils}/bin/truncate -s 0 "$swapfile"
|
|
||||||
${pkgs.e2fsprogs}/bin/chattr +C "$swapfile"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# release channel
|
system.stateVersion = "24.05"; # Did you read the comment?
|
||||||
system.stateVersion = "22.05"; # Did you read the comment?
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,34 +12,32 @@
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"];
|
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "uas" "usbhid" "sd_mod"];
|
||||||
boot.initrd.kernelModules = [];
|
boot.initrd.kernelModules = [];
|
||||||
boot.kernelModules = ["kvm-amd"];
|
boot.kernelModules = ["kvm-amd"];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/disk/by-uuid/72ffbc9d-a319-42d7-8d26-13c921a679db";
|
device = "/dev/disk/by-uuid/efb8f256-5b14-4b52-a2d9-ae4b91ecb711";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
options = ["subvol=@root" "compress=zstd:3"];
|
options = ["subvol=@"];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/home" = {
|
boot.initrd.luks.devices."luks-919f9b8b-2804-447a-97e0-f7f515d0be56".device = "/dev/disk/by-uuid/919f9b8b-2804-447a-97e0-f7f515d0be56";
|
||||||
device = "/dev/disk/by-uuid/72ffbc9d-a319-42d7-8d26-13c921a679db";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=@home" "compress=zstd:3"];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
device = "/dev/disk/by-uuid/D63E-18C9";
|
device = "/dev/disk/by-uuid/3FAD-A6B4";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
|
options = ["fmask=0077" "dmask=0077"];
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [
|
fileSystems."/swap" = {
|
||||||
{
|
device = "/dev/disk/by-uuid/efb8f256-5b14-4b52-a2d9-ae4b91ecb711";
|
||||||
device = "/swap/swapfile";
|
fsType = "btrfs";
|
||||||
size = (1024 * 64) + (1024 * 8); # 72G
|
options = ["subvol=swap"];
|
||||||
}
|
};
|
||||||
];
|
|
||||||
|
swapDevices = [];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# 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
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
@ -47,7 +45,9 @@
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.wlp9s0.useDHCP = lib.mkDefault true;
|
# networking.interfaces.wg0-mullvad.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp6s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
}
|
}
|
||||||
|
|
5
hosts/monosodium-glutamate-g/modules/default.nix
Normal file
5
hosts/monosodium-glutamate-g/modules/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./graphics.nix
|
||||||
|
];
|
||||||
|
}
|
7
hosts/monosodium-glutamate-g/modules/graphics.nix
Normal file
7
hosts/monosodium-glutamate-g/modules/graphics.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.nvtop-amd
|
||||||
|
pkgs.radeontop
|
||||||
|
pkgs.rgp
|
||||||
|
];
|
||||||
|
}
|
|
@ -65,9 +65,10 @@
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
services.xserver.libinput.touchpad.disableWhileTyping = true;
|
services.libinput.touchpad = {
|
||||||
services.xserver.libinput.touchpad.tapping = false;
|
disableWhileTyping = true;
|
||||||
|
tapping = false;
|
||||||
|
};
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
networking.hostName = "potatobook-g";
|
networking.hostName = "potatobook-g";
|
||||||
|
@ -116,17 +117,8 @@
|
||||||
services.gnome.gnome-keyring.enable = true;
|
services.gnome.gnome-keyring.enable = true;
|
||||||
programs.seahorse.enable = true;
|
programs.seahorse.enable = true;
|
||||||
security.pam.services.jade.enableGnomeKeyring = true;
|
security.pam.services.jade.enableGnomeKeyring = true;
|
||||||
security.pam.services.jade.u2fAuth = true;
|
|
||||||
|
|
||||||
systemd.services."NetworkManager-wait-online".enable = false;
|
systemd.services."NetworkManager-wait-online".enable = false;
|
||||||
programs.i3lock.u2fSupport = true;
|
|
||||||
|
|
||||||
security.pam.u2f = {
|
|
||||||
enable = true;
|
|
||||||
cue = true;
|
|
||||||
control = "sufficient";
|
|
||||||
authFile = "/home/jade/.ssh/u2f_keys";
|
|
||||||
};
|
|
||||||
|
|
||||||
# services.pixiecore =
|
# services.pixiecore =
|
||||||
# let
|
# let
|
||||||
|
|
8
justfile
8
justfile
|
@ -1,13 +1,13 @@
|
||||||
upgrade: update build
|
upgrade: update build
|
||||||
|
|
||||||
test:
|
test:
|
||||||
sudo nixos-rebuild test --flake . --impure
|
sudo nixos-rebuild test --flake . --impure --log-format multiline
|
||||||
|
|
||||||
build:
|
build:
|
||||||
sudo nixos-rebuild switch --flake . --impure --fast
|
sudo nixos-rebuild switch --flake . --impure --fast --log-format multiline
|
||||||
|
|
||||||
update:
|
update:
|
||||||
nix flake update --commit-lock-file
|
nix flake update --commit-lock-file --log-format multiline
|
||||||
|
|
||||||
build-mac:
|
build-mac:
|
||||||
sudo nixos-rebuild switch --flake . --impure --override-input mac-brcm-fw path:/home/jade/mac-brcm-fw --fast
|
sudo nixos-rebuild switch --flake . --impure --override-input mac-brcm-fw path:/home/jade/mac-brcm-fw --fast --log-format multiline
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
imports = [
|
imports = [
|
||||||
./shell
|
./shell
|
||||||
./desktop
|
./desktop
|
||||||
./terminal.nix
|
./hardware
|
||||||
./flatpak.nix
|
|
||||||
./firewall.nix
|
./firewall.nix
|
||||||
./git.nix
|
./desktop-environment
|
||||||
./kmscon.nix
|
./input
|
||||||
|
./graphics.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
24
modules/desktop-environment/audio.nix
Normal file
24
modules/desktop-environment/audio.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
programs = {
|
||||||
|
noisetorch.enable = true;
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
jack.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
pavucontrol
|
||||||
|
volumeicon
|
||||||
|
playerctl
|
||||||
|
|
||||||
|
pulseaudioFull
|
||||||
|
cava
|
||||||
|
helvum
|
||||||
|
];
|
||||||
|
hardware.pulseaudio.enable = pkgs.lib.mkForce false;
|
||||||
|
# sound.mediaKeys.enable = true;
|
||||||
|
}
|
12
modules/desktop-environment/default.nix
Normal file
12
modules/desktop-environment/default.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./audio.nix
|
||||||
|
./eduroam.nix
|
||||||
|
./flatpak.nix
|
||||||
|
./home
|
||||||
|
./dm.nix
|
||||||
|
];
|
||||||
|
services.upower = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
36
modules/desktop-environment/dm.nix
Normal file
36
modules/desktop-environment/dm.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.desktop.dm;
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.desktop.dm.autoLogin = {
|
||||||
|
enable = mkEnableOption "Enable Autologin";
|
||||||
|
delay = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config.services = {
|
||||||
|
displayManager = {
|
||||||
|
autoLogin = {
|
||||||
|
enable = cfg.autoLogin.enable;
|
||||||
|
user = "jade";
|
||||||
|
};
|
||||||
|
defaultSession = "sway";
|
||||||
|
sessionPackages = [
|
||||||
|
pkgs.sway
|
||||||
|
];
|
||||||
|
};
|
||||||
|
xserver.displayManager.gdm = {
|
||||||
|
enable = true;
|
||||||
|
banner = "Meow :3";
|
||||||
|
autoLogin = {
|
||||||
|
delay = cfg.autoLogin.delay;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
56
modules/desktop-environment/eduroam.nix
Normal file
56
modules/desktop-environment/eduroam.nix
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
# Thanks @ kloenk (@kloenk@catcatnya.com) for making this for me at MRMCD 2024 :33
|
||||||
|
{pkgs, ...}: let
|
||||||
|
caDir = "/var/lib/easyroam";
|
||||||
|
uuid = "821ad781-76a3-447f-a2e8-c7f18a1df3bc";
|
||||||
|
in {
|
||||||
|
systemd.services.easyroam = {
|
||||||
|
requires = ["NetworkManager.service"];
|
||||||
|
after = ["NetworkManager.service"];
|
||||||
|
requiredBy = ["network-online.target"];
|
||||||
|
path = with pkgs; [networkmanager openssl gnused];
|
||||||
|
script = ''
|
||||||
|
set -x
|
||||||
|
openssl pkcs12 -password pass: -in ${caDir}/my_easyroam_cert.p12 -legacy -nokeys | openssl x509 > ${caDir}/easyroam_client_cert.pem
|
||||||
|
cn=$(openssl x509 -noout -subject -in ${caDir}/easyroam_client_cert.pem -legacy | sed 's/.*CN = \(.*\), C.*/\1/')
|
||||||
|
openssl pkcs12 -legacy -password pass: -in ${caDir}/my_easyroam_cert.p12 -nodes -nocerts | openssl rsa -aes256 -passin pass: -passout pass:meow -out ${caDir}/easyroam_client_key.pem
|
||||||
|
openssl pkcs12 -password pass: -in ${caDir}/my_easyroam_cert.p12 -legacy -cacerts -nokeys > ${caDir}/easyroam_root_ca.pem
|
||||||
|
|
||||||
|
nmcli connection modify --temporary uuid ${uuid} 802-1x.identity "$cn"
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.networkmanager.ensureProfiles.profiles.eduroam = {
|
||||||
|
"802-1x" = {
|
||||||
|
ca-cert = "${caDir}/easyroam_root_ca.pem";
|
||||||
|
client-cert = "${caDir}/easyroam_client_cert.pem";
|
||||||
|
domain-suffix-match = "easyroam.eduroam.de";
|
||||||
|
eap = "tls;";
|
||||||
|
identity = "meow";
|
||||||
|
private-key = "${caDir}/easyroam_client_key.pem";
|
||||||
|
private-key-password = "meow";
|
||||||
|
};
|
||||||
|
connection = {
|
||||||
|
id = "eduroam";
|
||||||
|
type = "wifi";
|
||||||
|
inherit uuid;
|
||||||
|
};
|
||||||
|
ipv4 = {
|
||||||
|
method = "auto";
|
||||||
|
};
|
||||||
|
ipv6 = {
|
||||||
|
addr-gen-mode = "default";
|
||||||
|
method = "auto";
|
||||||
|
};
|
||||||
|
proxy = {};
|
||||||
|
wifi = {
|
||||||
|
mode = "infrastructure";
|
||||||
|
ssid = "eduroam";
|
||||||
|
};
|
||||||
|
wifi-security = {
|
||||||
|
key-mgmt = "wpa-eap";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
16
modules/desktop-environment/flatpak.nix
Normal file
16
modules/desktop-environment/flatpak.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services.flatpak.enable = true;
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
# TODO
|
||||||
|
config.common.default = "*";
|
||||||
|
extraPortals = [
|
||||||
|
pkgs.xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
28
modules/desktop-environment/home/compositing.nix
Normal file
28
modules/desktop-environment/home/compositing.nix
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{...}: {
|
||||||
|
services.picom = {
|
||||||
|
enable = true;
|
||||||
|
backend = "glx";
|
||||||
|
|
||||||
|
shadow = true;
|
||||||
|
shadowOffsets = [(-40) (-30)];
|
||||||
|
shadowOpacity = 0.2;
|
||||||
|
shadowExclude = [
|
||||||
|
"class_g ?= 'Notify-osd'"
|
||||||
|
"_GTK_FRAME_EXTENTS@:c"
|
||||||
|
"!(class_g = 'Rofi' || class_g = 'Dunst')"
|
||||||
|
];
|
||||||
|
|
||||||
|
vSync = true;
|
||||||
|
settings = {
|
||||||
|
"shadow-radius" = 40;
|
||||||
|
# fading rofi
|
||||||
|
"fading" = true;
|
||||||
|
"fade-in-step" = 0.25;
|
||||||
|
"fade-out-step" = 0.2;
|
||||||
|
"fade-delta" = 20;
|
||||||
|
"fade-exclude" = ["class_g != 'Rofi'"];
|
||||||
|
# use damage information
|
||||||
|
"use-damage" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
27
modules/desktop-environment/home/default.nix
Normal file
27
modules/desktop-environment/home/default.nix
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{...}: {
|
||||||
|
home-manager.users.jade = {...}: {
|
||||||
|
imports = [
|
||||||
|
./notifications.nix
|
||||||
|
./terminal.nix
|
||||||
|
./compositing.nix
|
||||||
|
./panels
|
||||||
|
./xmonad
|
||||||
|
./sway
|
||||||
|
];
|
||||||
|
|
||||||
|
services.gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
enableNushellIntegration = true;
|
||||||
|
enableSshSupport = true;
|
||||||
|
};
|
||||||
|
fonts.fontconfig = {
|
||||||
|
enable = true;
|
||||||
|
defaultFonts = {
|
||||||
|
emoji = [];
|
||||||
|
monospace = [];
|
||||||
|
sansSerif = ["Atkinson Hyperlegible"];
|
||||||
|
serif = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
17
modules/desktop-environment/home/notifications.nix
Normal file
17
modules/desktop-environment/home/notifications.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
services.dunst = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
global = {
|
||||||
|
dmenu = "${pkgs.rofi}/bin/rofi -theme gruvbox-dark -dmenu -p dunst";
|
||||||
|
browser = "${pkgs.firefox}/bin/firefox";
|
||||||
|
mouse_left_click = "context";
|
||||||
|
mouse_middle_click = "close_current";
|
||||||
|
background = "#282828";
|
||||||
|
foreground = "#ebdbb2";
|
||||||
|
frame_color = "#504945";
|
||||||
|
frame_width = 2;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
7
modules/desktop-environment/home/panels/default.nix
Normal file
7
modules/desktop-environment/home/panels/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./xmobar
|
||||||
|
./polybar.nix
|
||||||
|
./eww
|
||||||
|
];
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
(include "bottomBar/workspaces.yuck")
|
||||||
|
(include "bottomBar/traveldings.yuck")
|
||||||
|
|
||||||
|
(defwindow bottomBar
|
||||||
|
:monitor 0
|
||||||
|
:stacking "fg"
|
||||||
|
:wm-ignore true
|
||||||
|
:exclusive true
|
||||||
|
:geometry (geometry
|
||||||
|
:width "100%"
|
||||||
|
:height "32px"
|
||||||
|
:anchor "bottom center")
|
||||||
|
(bottomBar))
|
||||||
|
|
||||||
|
(defwidget bottomBar []
|
||||||
|
(overlay
|
||||||
|
:class "bottomBar"
|
||||||
|
(transform
|
||||||
|
:translate-y "1.5px"
|
||||||
|
(centerbox
|
||||||
|
(box
|
||||||
|
:halign "start"
|
||||||
|
(workspaceWidget)
|
||||||
|
)
|
||||||
|
(box
|
||||||
|
:halign "center"
|
||||||
|
(traveldings)
|
||||||
|
)
|
||||||
|
(box
|
||||||
|
:halign "end"
|
||||||
|
; (label :text "${iceData.speed}km/h")
|
||||||
|
(iceTacho)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(box
|
||||||
|
:class "lesbianFlag"
|
||||||
|
:height 1
|
||||||
|
( flagEl :flipped true :color "#D52D00")
|
||||||
|
( flagEl :flipped true :color "#EF7627")
|
||||||
|
( flagEl :flipped true :color "#FF9A56")
|
||||||
|
( flagEl :flipped true :color "#FFFFFF")
|
||||||
|
( flagEl :flipped true :color "#D162A4")
|
||||||
|
( flagEl :flipped true :color "#B55690")
|
||||||
|
( flagEl :flipped true :color "#A30262")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defwidget iceTacho []
|
||||||
|
(box
|
||||||
|
:class "iceTacho"
|
||||||
|
:tooltip "Tz${iceTachoData.tzn} (BR ${iceTachoData.br})"
|
||||||
|
(circular-progress
|
||||||
|
:value { iceTachoData.frac * 60 + 20 }
|
||||||
|
:thickness 3
|
||||||
|
)
|
||||||
|
(label :text "${iceTachoData.speed} km/h")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(deflisten iceTachoData
|
||||||
|
:initial "null"
|
||||||
|
{ "~/.config/eww/scripts/iceTacho.nu" }
|
||||||
|
)
|
|
@ -0,0 +1,37 @@
|
||||||
|
(defwidget traveldings []
|
||||||
|
(revealer
|
||||||
|
:class "traveldings"
|
||||||
|
:transition "crossfade"
|
||||||
|
:reveal { traveldings_data != "null" }
|
||||||
|
(traveldingsBarWidget)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defwidget traveldingsBarWidget []
|
||||||
|
(overlay
|
||||||
|
(box
|
||||||
|
:width 640
|
||||||
|
(label
|
||||||
|
:halign "start"
|
||||||
|
:text "${traveldings_data.line} -> ${strlength(traveldings_data.arrival_station) > 24 ? "${substring(traveldings_data.arrival_station, 0, 24)}…" : traveldings_data.arrival_station}${traveldings_data.arrival_platform_data_available ? " (Gl. ${traveldings_data.arrival_platform_real})" : ""}"
|
||||||
|
)
|
||||||
|
(label
|
||||||
|
:halign "end"
|
||||||
|
:text { traveldings_data.time_left >= 3600 ? formattime(traveldings_data.time_left, "noch %-Hh %-Mmin", "Etc/UTC") : formattime(traveldings_data.time_left, "noch %-Mmin", "Etc/UTC") }
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(box
|
||||||
|
(progress
|
||||||
|
:class { traveldings_data.live ? "traveldings_live" : "traveldings_disconnected" }
|
||||||
|
:value {traveldings_data.progress * 100}
|
||||||
|
:orientation "horizontal"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
(deflisten traveldings_data
|
||||||
|
:initial "null"
|
||||||
|
"traveldings current"
|
||||||
|
)
|
|
@ -0,0 +1,17 @@
|
||||||
|
(defwidget workspaceWidget []
|
||||||
|
(box
|
||||||
|
:class "workspaces"
|
||||||
|
(for workspace in workspaces
|
||||||
|
(button
|
||||||
|
:class "${workspace.urgent ? "urgent" : ""} ${workspace.focused ? "focused" : 0}"
|
||||||
|
:onclick "swaymsg workspace ${workspace.name}"
|
||||||
|
(label :text "${workspace.name}")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(deflisten workspaces
|
||||||
|
:initial "[]"
|
||||||
|
"bar-ws-monitor"
|
||||||
|
)
|
|
@ -0,0 +1,37 @@
|
||||||
|
label {
|
||||||
|
font: 14pt "FiraCode Nerd Font";
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspaces button {
|
||||||
|
border: 0px;
|
||||||
|
background-color: #282828;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspaces button.urgent {
|
||||||
|
background-color: #cc241d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.workspaces button.focused {
|
||||||
|
background-color: #504935;
|
||||||
|
}
|
||||||
|
|
||||||
|
.traveldings progressbar trough {
|
||||||
|
border: none;
|
||||||
|
background-color: #3c3836;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.traveldings progressbar.traveldings_live progress {
|
||||||
|
background-color: #79740e;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.traveldings progressbar.traveldings_disconnected progress {
|
||||||
|
background-color: #cc241d;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.traveldingsWindow {
|
||||||
|
border-radius: 15px;
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
(include "topBar/topBar.yuck")
|
||||||
|
(include "bottomBar/bottomBar.yuck")
|
55
modules/desktop-environment/home/panels/eww/configDir/scripts/bat.nu
Executable file
55
modules/desktop-environment/home/panels/eww/configDir/scripts/bat.nu
Executable file
|
@ -0,0 +1,55 @@
|
||||||
|
#!/usr/bin/env nu
|
||||||
|
|
||||||
|
const ICONS = [
|
||||||
|
[ normal charging];
|
||||||
|
[ ]
|
||||||
|
[ ]
|
||||||
|
[ ]
|
||||||
|
[ ]
|
||||||
|
[ ]
|
||||||
|
[ ]
|
||||||
|
[ ]
|
||||||
|
[ ]
|
||||||
|
[ ]
|
||||||
|
[ ]
|
||||||
|
[ ]
|
||||||
|
];
|
||||||
|
|
||||||
|
def main [ path: string ] {
|
||||||
|
loop {
|
||||||
|
let fract = get_bat_charge_fraction $path;
|
||||||
|
let is_charging = get_bat_charging_status $path;
|
||||||
|
let percent = ($fract * 100) | math round;
|
||||||
|
|
||||||
|
print $"<span foreground=\"#d65d0e\">(get_bat_icon $fract $is_charging)</span> ($percent)<span foreground=\"#7c6f64\">%</span>";
|
||||||
|
sleep 2sec;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_bat_charge_fraction [
|
||||||
|
path: string
|
||||||
|
] {
|
||||||
|
let energy_full = open $"/sys/class/power_supply/($path)/energy_full" | into float;
|
||||||
|
let energy_now = open $"/sys/class/power_supply/($path)/energy_now" | into float;
|
||||||
|
|
||||||
|
$energy_now / $energy_full
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_bat_charging_status [
|
||||||
|
path: string
|
||||||
|
] {
|
||||||
|
let status = open $"/sys/class/power_supply/($path)/status";
|
||||||
|
|
||||||
|
if ($status == Charging) {
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_bat_icon [
|
||||||
|
frac: float
|
||||||
|
is_charging = false
|
||||||
|
] {
|
||||||
|
$ICONS | get (($frac * 10) | math round) | get (if ($is_charging) { "charging" } else { "normal" })
|
||||||
|
}
|
38
modules/desktop-environment/home/panels/eww/configDir/scripts/iceTacho.nu
Executable file
38
modules/desktop-environment/home/panels/eww/configDir/scripts/iceTacho.nu
Executable file
|
@ -0,0 +1,38 @@
|
||||||
|
#!/usr/bin/env nu
|
||||||
|
|
||||||
|
const TABLE = {
|
||||||
|
401: 280
|
||||||
|
402: 280
|
||||||
|
403: 330
|
||||||
|
406: 330
|
||||||
|
407: 320
|
||||||
|
408: 320
|
||||||
|
411: 230
|
||||||
|
415: 230
|
||||||
|
412: 265
|
||||||
|
605: 200
|
||||||
|
};
|
||||||
|
|
||||||
|
def main [ ] {
|
||||||
|
loop {
|
||||||
|
if ((iw dev wlp4s0 link | lines | filter {|it| $it =~ "WIFIonICE" } | length) == 1) {
|
||||||
|
let iceData = http get https://iceportal.de/api1/rs/status;
|
||||||
|
let tzn = $iceData.tzn;
|
||||||
|
let br = $iceData.series;
|
||||||
|
let speed = $iceData.speed;
|
||||||
|
let speedfrac = $speed / ($TABLE | get $br);
|
||||||
|
|
||||||
|
print ({
|
||||||
|
tzn: $tzn,
|
||||||
|
br: $br,
|
||||||
|
speed: $speed,
|
||||||
|
frac: $speedfrac
|
||||||
|
} | to json -r);
|
||||||
|
|
||||||
|
sleep 2sec;
|
||||||
|
} else {
|
||||||
|
print "null";
|
||||||
|
sleep 5sec;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
(deflisten bat0
|
||||||
|
:initial "<span foreground=\"#cc241d\">BAT0 ERR</span>"
|
||||||
|
{ "~/.config/eww/scripts/bat.nu BAT0"}
|
||||||
|
)
|
||||||
|
(deflisten bat1
|
||||||
|
:initial "<span foreground=\"#cc241d\">BAT1 ERR</span>"
|
||||||
|
{ "~/.config/eww/scripts/bat.nu BAT1"}
|
||||||
|
)
|
||||||
|
|
||||||
|
(defwidget cpu []
|
||||||
|
(box
|
||||||
|
:class "cpuIndicator"
|
||||||
|
(label
|
||||||
|
:markup "<span foreground=\"#d65d0e\"></span> ${strlength(round(EWW_CPU.avg, 0)) == 1 ? " ${round(EWW_CPU.avg, 0)}" : round(EWW_CPU.avg, 0)}<span foreground=\"#7c6f64\">%</span>"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defwidget mem []
|
||||||
|
(box
|
||||||
|
:class "memIndicator"
|
||||||
|
(label
|
||||||
|
:markup "<span foreground=\"#d65d0e\"> </span> ${round(EWW_RAM.used_mem_perc, 0)}<span foreground=\"#7c6f64\">%</span>"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
(defwidget time []
|
||||||
|
(label
|
||||||
|
:markup {
|
||||||
|
formattime(
|
||||||
|
EWW_TIME,
|
||||||
|
"<span foreground=\"#d65d0e\"></span> %Y<span foreground=\"#7c6f64\">-</span>%m<span foreground=\"#7c6f64\">-</span>%d <span foreground=\"#d65d0e\"></span> %H<span foreground=\"#7c6f64\">:</span>%M<span foreground=\"#7c6f64\">:</span>%S "
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
|
@ -0,0 +1,58 @@
|
||||||
|
(include "topBar/time.yuck")
|
||||||
|
(include "topBar/sysinfo.yuck")
|
||||||
|
(include "util.yuck")
|
||||||
|
|
||||||
|
(defwindow topBar
|
||||||
|
:monitor 0
|
||||||
|
:stacking "fg"
|
||||||
|
:wm-ignore true
|
||||||
|
:exclusive true
|
||||||
|
:geometry (geometry
|
||||||
|
:width "100%"
|
||||||
|
:height "32px"
|
||||||
|
:anchor "top center")
|
||||||
|
(topBar))
|
||||||
|
|
||||||
|
(defwidget topBar []
|
||||||
|
(overlay
|
||||||
|
:class "topBar"
|
||||||
|
(transform
|
||||||
|
:translate-y "-1.5px"
|
||||||
|
(centerbox
|
||||||
|
(box
|
||||||
|
:halign "start"
|
||||||
|
:spacing 12
|
||||||
|
:space-evenly false
|
||||||
|
(label :text " ")
|
||||||
|
(cpu)
|
||||||
|
(sep)
|
||||||
|
(mem)
|
||||||
|
(sep)
|
||||||
|
(label :markup bat0)
|
||||||
|
(sep)
|
||||||
|
(label :markup bat1)
|
||||||
|
)
|
||||||
|
(box
|
||||||
|
:halign "center"
|
||||||
|
(systray
|
||||||
|
:icon-size 18
|
||||||
|
:spacing 3
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(box
|
||||||
|
:halign "end"
|
||||||
|
(time)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(box
|
||||||
|
:class "transFlag"
|
||||||
|
:height 1
|
||||||
|
( flagEl :flipped false :color "#5BCEFA")
|
||||||
|
( flagEl :flipped false :color "#F5A9B8")
|
||||||
|
( flagEl :flipped false :color "#FFFFFF")
|
||||||
|
( flagEl :flipped false :color "#F5A9B8")
|
||||||
|
( flagEl :flipped false :color "#5BCEFA")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
|
@ -0,0 +1,11 @@
|
||||||
|
(defwidget flagEl [color ?flipped]
|
||||||
|
(box
|
||||||
|
:style "border-${flipped ? "top" : "bottom"}: 3px solid ${color}"
|
||||||
|
:halign "fill"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defwidget sep []
|
||||||
|
(label :text "|")
|
||||||
|
)
|
||||||
|
|
6
modules/desktop-environment/home/panels/eww/default.nix
Normal file
6
modules/desktop-environment/home/panels/eww/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{ ... }: {
|
||||||
|
programs.eww = {
|
||||||
|
enable = true;
|
||||||
|
configDir = ./configDir;
|
||||||
|
};
|
||||||
|
}
|
146
modules/desktop-environment/home/panels/polybar.nix
Normal file
146
modules/desktop-environment/home/panels/polybar.nix
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services.polybar = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.polybarFull;
|
||||||
|
|
||||||
|
script = "";
|
||||||
|
settings = {
|
||||||
|
colors = {
|
||||||
|
background = "#282828";
|
||||||
|
background-alt = "#3c3836";
|
||||||
|
foreground = "#ebdbb2";
|
||||||
|
primary = "#d65d0e";
|
||||||
|
secondary = "#fe8019";
|
||||||
|
alert = "#cc241d";
|
||||||
|
disabled = "#504945";
|
||||||
|
};
|
||||||
|
"bar/status" = {
|
||||||
|
# Style
|
||||||
|
bottom = true;
|
||||||
|
width = "100%";
|
||||||
|
height = "24px";
|
||||||
|
radius = 0;
|
||||||
|
tray-position = "center";
|
||||||
|
background = "\${colors.background}";
|
||||||
|
foreground = "\${colors.foreground}";
|
||||||
|
line-size = "4px";
|
||||||
|
border-color = "#00000000";
|
||||||
|
padding-left = 0;
|
||||||
|
padding-right = 1;
|
||||||
|
module-margin = 1;
|
||||||
|
separator = "|";
|
||||||
|
separator-foreground = "\${colors.disabled}";
|
||||||
|
font-0 = "FiraCode Nerd Font";
|
||||||
|
modules-left = "xworkspaces xwindow";
|
||||||
|
modules-right = "memory cpu wlan bat0 bat1";
|
||||||
|
cursor-click = "pointer";
|
||||||
|
cursor-scroll = "ns-resize";
|
||||||
|
enable-ipc = true;
|
||||||
|
wm-restack = "generic";
|
||||||
|
override-redirect = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/xworkspaces" = {
|
||||||
|
type = "internal/xworkspaces";
|
||||||
|
label-active = "";
|
||||||
|
label-active-padding = 1;
|
||||||
|
label-occupied = "";
|
||||||
|
label-occupied-padding = 1;
|
||||||
|
label-urgent = "";
|
||||||
|
label-urgent-foreground = "\${colors.alert}";
|
||||||
|
label-urgent-padding = 1;
|
||||||
|
label-empty = "";
|
||||||
|
label-empty-foreground = "\${colors.disabled}";
|
||||||
|
label-empty-padding = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/xwindow" = {
|
||||||
|
type = "internal/xwindow";
|
||||||
|
label = "%title:0:60:...%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/memory" = {
|
||||||
|
type = "internal/memory";
|
||||||
|
interval = 2;
|
||||||
|
format-prefix = " ";
|
||||||
|
format-prefix-foreground = "\${colors.primary}";
|
||||||
|
label = "%percentage_used:2%%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/cpu" = {
|
||||||
|
type = "internal/cpu";
|
||||||
|
interval = "2";
|
||||||
|
format-prefix = " ";
|
||||||
|
format-prefix-foreground = "\${colors.primary}";
|
||||||
|
label = "%percentage:2%%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"network-base" = {
|
||||||
|
type = "internal/network";
|
||||||
|
interval = 5;
|
||||||
|
format-connected = "<ramp-signal> <label-connected>";
|
||||||
|
format-disconnected = "<label-disconnected>";
|
||||||
|
label-disconnected = "";
|
||||||
|
label-disconnected-foreground = "#d65d0e";
|
||||||
|
ramp.signal = [
|
||||||
|
"%{F#cc241d}"
|
||||||
|
"%{F#d79921}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/wlan" = {
|
||||||
|
"inherit" = "network-base";
|
||||||
|
interface-type = "wireless";
|
||||||
|
label-connected = "%{F#F0C674}%{F-} %local_ip%";
|
||||||
|
};
|
||||||
|
"battery-base" = {
|
||||||
|
type = "internal/battery";
|
||||||
|
poll-interval = 1;
|
||||||
|
time-format = "%H%{F#7c6f64}:%{F#d5c4a1}%M";
|
||||||
|
label-charging = "%{F#98971a} %{F#ebdbb2}%percentage%%%{F#d5c4a1} %time%";
|
||||||
|
format-charging = "<ramp-capacity> <label-charging>";
|
||||||
|
label-discharging = "%{F#ebdbb2}%percentage%%%{F#bdae93} %time%";
|
||||||
|
format-discharging = "<ramp-capacity> <label-discharging>";
|
||||||
|
label-full = "%{F#98971a}%{F#ebdbb2} %percentage%%";
|
||||||
|
format-full = "<label-full>";
|
||||||
|
label-low = "%{F#cc241d}%{F#ebdbb2} %percentage%%";
|
||||||
|
format-low = "<label-low>";
|
||||||
|
ramp.capacity = [
|
||||||
|
"%{F#cc241d}"
|
||||||
|
"%{F#d79921}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
"%{F#98971a}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"module/bat0" = {
|
||||||
|
"inherit" = "battery-base";
|
||||||
|
battery = "BAT0";
|
||||||
|
adapter = "ADP1";
|
||||||
|
};
|
||||||
|
"module/bat1" = {
|
||||||
|
"inherit" = "battery-base";
|
||||||
|
battery = "BAT1";
|
||||||
|
adapter = "ADP1";
|
||||||
|
};
|
||||||
|
|
||||||
|
"settings" = {
|
||||||
|
screenchange-reload = true;
|
||||||
|
pseudo-transparency = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
27
modules/desktop-environment/home/panels/xmobar/default.nix
Normal file
27
modules/desktop-environment/home/panels/xmobar/default.nix
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
xmobarGhc = pkgs.haskellPackages.ghcWithPackages (pkgs:
|
||||||
|
with pkgs; [
|
||||||
|
xmobar
|
||||||
|
statgrab
|
||||||
|
]);
|
||||||
|
in {
|
||||||
|
home = {
|
||||||
|
packages = [xmobarGhc];
|
||||||
|
file."xmobar.hs" = rec {
|
||||||
|
source = ./xmobar.hs;
|
||||||
|
target = ".config/xmobar/xmobar.hs";
|
||||||
|
onChange = ''
|
||||||
|
${xmobarGhc}/bin/ghc -threaded ${target}
|
||||||
|
${pkgs.busybox}/bin/pkill xmobar
|
||||||
|
${pkgs.haskellPackages.xmonad}/bin/xmonad --restart
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.xmobar = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
206
modules/desktop-environment/home/sway/default.nix
Normal file
206
modules/desktop-environment/home/sway/default.nix
Normal file
|
@ -0,0 +1,206 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.wofi.enable = true;
|
||||||
|
programs.swaylock.enable = true;
|
||||||
|
services.network-manager-applet.enable = true;
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = [pkgs.xdg-desktop-portal-wlr];
|
||||||
|
# sway = {
|
||||||
|
# default = ["wlr"];
|
||||||
|
# };
|
||||||
|
config.common.default = "*";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.swayidle = {
|
||||||
|
enable = true;
|
||||||
|
events = [
|
||||||
|
{
|
||||||
|
event = "before-sleep";
|
||||||
|
command = "${pkgs.swaylock}/bin/swaylock -fF -c 442244";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
event = "lock";
|
||||||
|
command = "swaylock -c 441144";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.sway = {
|
||||||
|
enable = true;
|
||||||
|
systemd = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
wrapperFeatures = {
|
||||||
|
base = true;
|
||||||
|
gtk = true;
|
||||||
|
};
|
||||||
|
config = {
|
||||||
|
modes = {
|
||||||
|
resize = {
|
||||||
|
Down = "resize grow height 10 px";
|
||||||
|
Escape = "mode default";
|
||||||
|
Left = "resize shrink width 10 px";
|
||||||
|
Return = "mode default";
|
||||||
|
Right = "resize grow width 10 px";
|
||||||
|
Up = "resize shrink height 10 px";
|
||||||
|
h = "resize shrink width 10 px";
|
||||||
|
j = "resize grow height 10 px";
|
||||||
|
k = "resize shrink height 10 px";
|
||||||
|
l = "resize grow width 10 px";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
terminal = "kitty";
|
||||||
|
output = {
|
||||||
|
"*" = {
|
||||||
|
bg = "${../xmonad/wallpaper/wallpaper.jpg} fill";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
input = {
|
||||||
|
"*" = {
|
||||||
|
xkb_layout = "us";
|
||||||
|
xkb_variant = "altgr-intl";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
startup = [
|
||||||
|
{
|
||||||
|
command = "eww open-many topBar bottomBar";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "sleep 1 && mullvad-gui";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
bars = [];
|
||||||
|
menu = "wofi -d";
|
||||||
|
modifier = "Mod4";
|
||||||
|
assigns = {
|
||||||
|
"1" = [
|
||||||
|
{class = "^Signal$";}
|
||||||
|
{class = "^Element$";}
|
||||||
|
{class = "^Evolution$";}
|
||||||
|
{class = "^teams-for-linux$";}
|
||||||
|
];
|
||||||
|
"2" = [
|
||||||
|
{app_id = "^firefox$";}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
keybindings = with {
|
||||||
|
#mod = config.xsession.windowManager.i3.config.modifier;
|
||||||
|
# mod = "Mod1";
|
||||||
|
mod = config.wayland.windowManager.sway.config.modifier;
|
||||||
|
};
|
||||||
|
lib.mkOptionDefault {
|
||||||
|
# switch window focus
|
||||||
|
"${mod}+h" = "focus left";
|
||||||
|
"${mod}+j" = "focus down";
|
||||||
|
"${mod}+k" = "focus up";
|
||||||
|
"${mod}+l" = "focus right";
|
||||||
|
# move windows
|
||||||
|
"${mod}+Shift+h" = "move left";
|
||||||
|
"${mod}+Shift+j" = "move down";
|
||||||
|
"${mod}+Shift+k" = "move up";
|
||||||
|
"${mod}+Shift+l" = "move right";
|
||||||
|
# layout shit
|
||||||
|
"${mod}+shift+semicolon" = "split h";
|
||||||
|
"${mod}+semicolon" = "split v";
|
||||||
|
"${mod}+f" = "fullscreen toggle";
|
||||||
|
"${mod}+Shift+w" = "layout tabbed";
|
||||||
|
"${mod}+e" = "layout toggle split";
|
||||||
|
"${mod}+Shift+space" = "floating toggle";
|
||||||
|
# focus parents/children
|
||||||
|
# "${mod}+Shift+a" = "focus parent";
|
||||||
|
# "${mod}+Shift+c" = "focus child";
|
||||||
|
# screenshot
|
||||||
|
# "${mod}+w" = "exec window-screenshot.sh";
|
||||||
|
"${mod}+s" = "exec gscreenshot -csf $HOME/Pictures/screenshots";
|
||||||
|
"${mod}+a" = "exec gscreenshot -cf $HOME/Pictures/screenshots";
|
||||||
|
# "${mod}+t" = "exec ocr-screenshot.sh";
|
||||||
|
|
||||||
|
# rofi fuckery
|
||||||
|
"${mod}+d" = "exec wofi -S drun --allow-images";
|
||||||
|
"${mod}+i" = "exec rofimoji --selector wofi -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy";
|
||||||
|
|
||||||
|
# audio
|
||||||
|
"XF86AudioRaiseVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status";
|
||||||
|
"XF86AudioLowerVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status";
|
||||||
|
"XF86AudioMute" = "exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status";
|
||||||
|
"XF86AudioMicMute" = "exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status";
|
||||||
|
|
||||||
|
"XF86AudioNext" = "exec playerctl next";
|
||||||
|
"XF86AudioPrev" = "exec playerctl previous";
|
||||||
|
"XF86AudioPause" = "exec playerctl pause";
|
||||||
|
"XF86AudioPlay" = "exec playerctl play";
|
||||||
|
"XF86AudioStop" = "exec playerctl stop";
|
||||||
|
|
||||||
|
"XF86MonBrightnessUp" = "exec brightnessctl set 5%+";
|
||||||
|
"XF86MonBrightnessDown" = "exec brightnessctl set 5%-";
|
||||||
|
|
||||||
|
"XF86KbdBrightnessUp" = "exec brillo -kA 10.0";
|
||||||
|
"XF86KbdBrightnessDown" = "exec brillo -kU 10.0";
|
||||||
|
};
|
||||||
|
focus = {
|
||||||
|
wrapping = "yes";
|
||||||
|
};
|
||||||
|
fonts = {
|
||||||
|
names = ["Atkinson Hyperlegible"];
|
||||||
|
style = "Regular";
|
||||||
|
size = 9.0;
|
||||||
|
};
|
||||||
|
gaps = {
|
||||||
|
#top = 24;
|
||||||
|
inner = 15;
|
||||||
|
outer = 0;
|
||||||
|
smartGaps = true;
|
||||||
|
smartBorders = "on";
|
||||||
|
};
|
||||||
|
colors = {
|
||||||
|
background = "#1d2021";
|
||||||
|
focused = {
|
||||||
|
background = "#282828";
|
||||||
|
border = "#504945";
|
||||||
|
childBorder = "#7c6f64";
|
||||||
|
indicator = "#504945";
|
||||||
|
text = "#ebdbb2";
|
||||||
|
};
|
||||||
|
focusedInactive = {
|
||||||
|
background = "#1d2021";
|
||||||
|
border = "#504945";
|
||||||
|
childBorder = "#665c54";
|
||||||
|
indicator = "#664c54";
|
||||||
|
text = "#d5c4a1";
|
||||||
|
};
|
||||||
|
placeholder = {
|
||||||
|
background = "#1d2021";
|
||||||
|
border = "#00ff00";
|
||||||
|
childBorder = "#504945";
|
||||||
|
indicator = "#504945";
|
||||||
|
text = "#928374";
|
||||||
|
};
|
||||||
|
unfocused = {
|
||||||
|
background = "#1d2021";
|
||||||
|
border = "#3c3836";
|
||||||
|
childBorder = "#504945";
|
||||||
|
indicator = "#504945";
|
||||||
|
text = "#bdae93";
|
||||||
|
};
|
||||||
|
urgent = {
|
||||||
|
background = "#9d0006";
|
||||||
|
border = "#cc241d";
|
||||||
|
childBorder = "#3c3836";
|
||||||
|
indicator = "#fb4943";
|
||||||
|
text = "#ebdbb2";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
window = {
|
||||||
|
border = 2;
|
||||||
|
titlebar = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
37
modules/desktop-environment/home/terminal.nix
Normal file
37
modules/desktop-environment/home/terminal.nix
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{...}: {
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
font = {
|
||||||
|
name = "FiraCode Nerd Font";
|
||||||
|
size = 11;
|
||||||
|
};
|
||||||
|
keybindings = {
|
||||||
|
"ctrl+shift+n" = "new_os_window_with_cwd";
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
#adjust_column_width = "70%";
|
||||||
|
color0 = "#282828";
|
||||||
|
color8 = "#928374";
|
||||||
|
color1 = "#cc241d";
|
||||||
|
color9 = "#fb4934";
|
||||||
|
color2 = "#98971a";
|
||||||
|
color10 = "#b8bb26";
|
||||||
|
color3 = "#d79921";
|
||||||
|
color11 = "#fabd2f";
|
||||||
|
color4 = "#458588";
|
||||||
|
color12 = "#83a598";
|
||||||
|
color5 = "#b16286";
|
||||||
|
color13 = "#d3869b";
|
||||||
|
color6 = "#689d6a";
|
||||||
|
color14 = "#8ec07c";
|
||||||
|
color7 = "#a89984";
|
||||||
|
color15 = "#ebdbb2";
|
||||||
|
foreground = "#ebdbb2";
|
||||||
|
background = "#282828";
|
||||||
|
confirm_os_window_close = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home.sessionVariables = {
|
||||||
|
TERMINAL = "kitty";
|
||||||
|
};
|
||||||
|
}
|
9
modules/desktop-environment/home/xmonad/default.nix
Normal file
9
modules/desktop-environment/home/xmonad/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [./wallpaper];
|
||||||
|
home.packages = [pkgs.xmonadctl];
|
||||||
|
xsession.windowManager.xmonad = {
|
||||||
|
enable = true;
|
||||||
|
enableContribAndExtras = true;
|
||||||
|
config = ./xmonad.hs;
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
{...}: {
|
||||||
|
home.file.wallpaper = {
|
||||||
|
target = "Pictures/wallpaper.jpg";
|
||||||
|
source = ./wallpaper.jpg;
|
||||||
|
onChange = ''
|
||||||
|
feh --bg-fill ~/Pictures/wallpaper.jpg;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
Before Width: | Height: | Size: 8.4 MiB After Width: | Height: | Size: 8.4 MiB |
|
@ -68,7 +68,10 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) =
|
||||||
-- TODO: other media keys
|
-- TODO: other media keys
|
||||||
((0, xF86XK_AudioRaiseVolume), spawn "amixer -D pulse sset Master 10%+"),
|
((0, xF86XK_AudioRaiseVolume), spawn "amixer -D pulse sset Master 10%+"),
|
||||||
((0, xF86XK_AudioLowerVolume), spawn "amixer -D pulse sset Master 10%-"),
|
((0, xF86XK_AudioLowerVolume), spawn "amixer -D pulse sset Master 10%-"),
|
||||||
((0, xF86XK_AudioMute), spawn "amixer -D pulse sset Master toggle")
|
((0, xF86XK_AudioMute), spawn "amixer -D pulse sset Master toggle"),
|
||||||
|
((0, xF86XK_AudioNext), spawn "playerctl next"),
|
||||||
|
((0, xF86XK_AudioPrev), spawn "playerctl previous"),
|
||||||
|
((0, xF86XK_AudioPause), spawn "playerctl play-pause")
|
||||||
]
|
]
|
||||||
++ [ ((m .|. modm, k), windows $ f i)
|
++ [ ((m .|. modm, k), windows $ f i)
|
||||||
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9],
|
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9],
|
|
@ -1,39 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
config = {
|
|
||||||
programs = {
|
|
||||||
noisetorch.enable = true;
|
|
||||||
};
|
|
||||||
services = {
|
|
||||||
pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
jack.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
hardware.pulseaudio.enable = pkgs.lib.mkForce false;
|
|
||||||
sound.mediaKeys.enable = true;
|
|
||||||
home-manager.users.jade = {pkgs, ...}: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
pavucontrol
|
|
||||||
pulseaudioFull
|
|
||||||
easyeffects
|
|
||||||
cava
|
|
||||||
volumeicon
|
|
||||||
playerctl
|
|
||||||
helvum
|
|
||||||
];
|
|
||||||
xsession.windowManager.i3.config.startup = [
|
|
||||||
{
|
|
||||||
command = "pkill volumeicon; volumeicon";
|
|
||||||
always = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -2,6 +2,7 @@
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
pkgs-stable,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
cfg = config.jade.desktop.cloud;
|
cfg = config.jade.desktop.cloud;
|
||||||
|
@ -14,7 +15,7 @@ in
|
||||||
home-manager.users.jade = {pkgs, ...}: {
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
fluent-reader
|
fluent-reader
|
||||||
bitwarden
|
pkgs-stable.bitwarden
|
||||||
rofi-rbw
|
rofi-rbw
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
cfg = config.jade.desktop.compositing;
|
|
||||||
in
|
|
||||||
with lib; {
|
|
||||||
options.jade.desktop.compositing = {
|
|
||||||
enable = mkEnableOption "Enable compositing with picom";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
services.picom = {
|
|
||||||
enable = true;
|
|
||||||
backend = "glx";
|
|
||||||
|
|
||||||
shadow = true;
|
|
||||||
shadowOffsets = [(-40) (-30)];
|
|
||||||
shadowOpacity = 0.2;
|
|
||||||
shadowExclude = [
|
|
||||||
"class_g ?= 'Notify-osd'"
|
|
||||||
"_GTK_FRAME_EXTENTS@:c"
|
|
||||||
"!(class_g = 'Rofi' || class_g = 'Dunst')"
|
|
||||||
];
|
|
||||||
|
|
||||||
vSync = true;
|
|
||||||
settings = {
|
|
||||||
"shadow-radius" = 40;
|
|
||||||
# fading rofi
|
|
||||||
"fading" = true;
|
|
||||||
"fade-in-step" = 0.25;
|
|
||||||
"fade-out-step" = 0.2;
|
|
||||||
"fade-delta" = 20;
|
|
||||||
"fade-exclude" = ["class_g != 'Rofi'"];
|
|
||||||
# use damage information
|
|
||||||
"use-damage" = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# }}}
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,32 +1,31 @@
|
||||||
{pkgs, ...}: {
|
{
|
||||||
fonts.packages = with pkgs; [
|
pkgs,
|
||||||
(nerdfonts.override {fonts = ["FiraCode"];})
|
pkgs-stable,
|
||||||
montserrat
|
...
|
||||||
noto-fonts
|
}: {
|
||||||
atkinson-hyperlegible
|
|
||||||
arkpandora_ttf
|
|
||||||
liberation_ttf
|
|
||||||
caladea
|
|
||||||
carlito
|
|
||||||
garamond-libre
|
|
||||||
ocr-a
|
|
||||||
amiri
|
|
||||||
];
|
|
||||||
fonts.fontDir.enable = true;
|
|
||||||
home-manager.users.jade = {pkgs, ...}: {
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
audacity
|
audacity
|
||||||
krita
|
krita
|
||||||
gimp-with-plugins
|
# gimp-with-plugins
|
||||||
|
gimp
|
||||||
inkscape-with-extensions
|
inkscape-with-extensions
|
||||||
obs-studio
|
obs-studio
|
||||||
kdenlive
|
kdenlive
|
||||||
fspy
|
|
||||||
scribus
|
|
||||||
|
|
||||||
|
scribus
|
||||||
|
lilypond
|
||||||
|
gnuplot
|
||||||
|
graphviz
|
||||||
|
povray
|
||||||
|
|
||||||
|
openscad-unstable
|
||||||
|
openscad-lsp
|
||||||
|
|
||||||
|
pkgs-stable.font-manager
|
||||||
fontforge-gtk
|
fontforge-gtk
|
||||||
|
|
||||||
libreoffice
|
onlyoffice-bin_latest
|
||||||
typst
|
typst
|
||||||
|
|
||||||
rawtherapee
|
rawtherapee
|
||||||
|
|
|
@ -15,68 +15,41 @@
|
||||||
in
|
in
|
||||||
with lib; {
|
with lib; {
|
||||||
imports = [
|
imports = [
|
||||||
./audio.nix
|
|
||||||
./gaming.nix
|
./gaming.nix
|
||||||
./creative.nix # TODO: more fine grained choices, not every setup needs fspy or rawtherapee
|
./creative.nix # TODO: more fine grained choices, not every setup needs fspy or rawtherapee
|
||||||
./dunst.nix
|
|
||||||
./compositing.nix
|
|
||||||
./ios-compat.nix
|
./ios-compat.nix
|
||||||
./syncthing.nix
|
./syncthing.nix
|
||||||
./kdeconnect.nix
|
./kdeconnect.nix
|
||||||
./themeing.nix
|
./themeing.nix
|
||||||
./cloud.nix
|
./cloud.nix
|
||||||
./networking.nix
|
./networking.nix
|
||||||
./polybar.nix
|
|
||||||
./social.nix
|
./social.nix
|
||||||
./mail.nix
|
./mail.nix
|
||||||
./specific-hardware
|
./fonts.nix
|
||||||
./evremap.nix
|
|
||||||
./xmonad.nix
|
|
||||||
./firefox.nix
|
./firefox.nix
|
||||||
|
./x.nix
|
||||||
|
./obs.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
i18n.inputMethod = {
|
|
||||||
enabled = "fcitx5";
|
|
||||||
fcitx5.addons = with pkgs; [
|
|
||||||
fcitx5-mozc
|
|
||||||
fcitx5-gtk
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.seahorse.enable = true;
|
programs.seahorse.enable = true;
|
||||||
security.pam.services.jade.enableGnomeKeyring = true;
|
security.pam.services.jade.enableGnomeKeyring = true;
|
||||||
|
|
||||||
virtualisation.libvirtd.enable = true;
|
virtualisation.libvirtd.enable = true;
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
printing.enable = true;
|
printing = {
|
||||||
|
enable = true;
|
||||||
|
drivers = [
|
||||||
|
pkgs.gutenprint
|
||||||
|
pkgs.gutenprintBin
|
||||||
|
pkgs.hplip
|
||||||
|
pkgs.brlaser
|
||||||
|
pkgs.brgenml1lpr
|
||||||
|
pkgs.brgenml1cupswrapper
|
||||||
|
pkgs.ptouch-driver
|
||||||
|
];
|
||||||
|
};
|
||||||
gnome.gnome-keyring.enable = true;
|
gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
xserver = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
xkb = {
|
|
||||||
layout = "us";
|
|
||||||
variant = "altgr-intl";
|
|
||||||
};
|
|
||||||
|
|
||||||
libinput = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
desktopManager = {
|
|
||||||
xterm.enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
displayManager = {
|
|
||||||
defaultSession = "none+xmonad";
|
|
||||||
gdm.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
windowManager.xmonad = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.xss-lock = {
|
programs.xss-lock = {
|
||||||
|
@ -85,8 +58,11 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
services.illum.enable = true;
|
services.illum.enable = true;
|
||||||
services.avahi.enable = true;
|
services.avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
services.smartd = {
|
services.smartd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
notifications.x11.enable = true;
|
notifications.x11.enable = true;
|
||||||
|
@ -94,6 +70,9 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.jade = {pkgs, ...}: {
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
|
home.sessionVariables = {
|
||||||
|
"S10E_JRNL_FILE_LOC" = "/home/jade/Docs/jrnl.md";
|
||||||
|
};
|
||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
controlMaster = "yes";
|
controlMaster = "yes";
|
||||||
};
|
};
|
||||||
|
@ -125,6 +104,7 @@ in
|
||||||
xclip
|
xclip
|
||||||
xmacro
|
xmacro
|
||||||
xorg.xev
|
xorg.xev
|
||||||
|
gscreenshot
|
||||||
|
|
||||||
syncplay
|
syncplay
|
||||||
|
|
||||||
|
@ -132,20 +112,16 @@ in
|
||||||
xfce.thunar
|
xfce.thunar
|
||||||
xfce.tumbler
|
xfce.tumbler
|
||||||
xfce.thunar-archive-plugin
|
xfce.thunar-archive-plugin
|
||||||
gnome.file-roller
|
file-roller
|
||||||
# media/file viewers
|
# media/file viewers
|
||||||
vlc
|
vlc
|
||||||
mpv
|
mpv
|
||||||
evince
|
evince
|
||||||
nomacs
|
nomacs
|
||||||
|
jellyfin-media-player
|
||||||
|
|
||||||
# from environment.systemPackages cleanup
|
# from environment.systemPackages cleanup
|
||||||
font-manager
|
|
||||||
xdotool
|
|
||||||
xorg.xwininfo
|
|
||||||
gparted
|
gparted
|
||||||
# uhk-agent
|
|
||||||
cool-retro-term
|
|
||||||
xdg-desktop-portal-gtk
|
xdg-desktop-portal-gtk
|
||||||
virt-manager
|
virt-manager
|
||||||
ddccontrol-db
|
ddccontrol-db
|
||||||
|
@ -153,7 +129,7 @@ in
|
||||||
gitg
|
gitg
|
||||||
gpick
|
gpick
|
||||||
qdirstat
|
qdirstat
|
||||||
ffmpeg_5
|
ffmpeg_7-full
|
||||||
|
|
||||||
# external
|
# external
|
||||||
libnotify
|
libnotify
|
||||||
|
@ -183,6 +159,11 @@ in
|
||||||
oneko
|
oneko
|
||||||
|
|
||||||
plover.dev
|
plover.dev
|
||||||
|
|
||||||
|
mupdf
|
||||||
|
inotify-tools
|
||||||
|
|
||||||
|
logseq
|
||||||
];
|
];
|
||||||
xsession = {
|
xsession = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
{...}: {
|
|
||||||
home-manager.users.jade = {pkgs, ...}: {
|
|
||||||
services.dunst = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
global = {
|
|
||||||
dmenu = "${pkgs.rofi}/bin/rofi -theme gruvbox-dark -dmenu -p dunst";
|
|
||||||
browser = "${pkgs.librewolf}/bin/librewolf";
|
|
||||||
mouse_left_click = "context";
|
|
||||||
mouse_middle_click = "close_current";
|
|
||||||
background = "#282828";
|
|
||||||
foreground = "#ebdbb2";
|
|
||||||
frame_color = "#504945";
|
|
||||||
frame_width = 2;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
cfg = config.jade.desktop.evremap;
|
|
||||||
evremap = pkgs.rustPlatform.buildRustPackage {
|
|
||||||
pname = "evremap";
|
|
||||||
version = "0.1.0";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "wez";
|
|
||||||
repo = "evremap";
|
|
||||||
rev = "4480c4eda223b98899b0fbd926bc34f7bd0e1a18";
|
|
||||||
sha256 = "sha256-BxSrphgW1n465FX6bKVkq6O0XE2JqanfSYlsGwWUWkQ=";
|
|
||||||
};
|
|
||||||
cargoHash = "";
|
|
||||||
cargoLock.lockFile = ../../other/evremap.Cargo.lock;
|
|
||||||
postPatch = ''
|
|
||||||
cp ${../../other/evremap.Cargo.lock} Cargo.lock
|
|
||||||
'';
|
|
||||||
nativeBuildInputs = [pkgs.pkg-config];
|
|
||||||
buildInputs = [pkgs.libevdev];
|
|
||||||
};
|
|
||||||
in
|
|
||||||
with lib; {
|
|
||||||
options.jade.desktop.evremap = {
|
|
||||||
enable = mkEnableOption "Enable evremap";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
systemd.services.evremap = {
|
|
||||||
script = "${evremap}/bin/evremap remap ${../../other/remaps-${config.networking.hostName}.toml}";
|
|
||||||
wantedBy = ["multi-user.target"];
|
|
||||||
unitConfig = {
|
|
||||||
Restart = "on-failure";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -31,6 +31,7 @@
|
||||||
"youtube-mrbeastify"
|
"youtube-mrbeastify"
|
||||||
"return-youtube-dislikes"
|
"return-youtube-dislikes"
|
||||||
"multi-account-containers"
|
"multi-account-containers"
|
||||||
|
"tabby-cat-friend"
|
||||||
];
|
];
|
||||||
Extensions.Uninstall = [
|
Extensions.Uninstall = [
|
||||||
"google@search.mozilla.org"
|
"google@search.mozilla.org"
|
||||||
|
@ -82,12 +83,16 @@
|
||||||
"Home manager Options" = {
|
"Home manager Options" = {
|
||||||
urls = [
|
urls = [
|
||||||
{
|
{
|
||||||
template = "https://mipmip.github.io/home-manager-option-search/";
|
template = "https://home-manager-options.extranix.com/";
|
||||||
params = [
|
params = [
|
||||||
{
|
{
|
||||||
name = "query";
|
name = "query";
|
||||||
value = "{searchTerms}";
|
value = "{searchTerms}";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "release";
|
||||||
|
value = "master";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -97,7 +102,13 @@
|
||||||
"NixOS Wiki" = {
|
"NixOS Wiki" = {
|
||||||
urls = [
|
urls = [
|
||||||
{
|
{
|
||||||
template = "https://nixos.wiki/index.php?title=Special:Search&search={searchTerms}&namespace=0";
|
template = "https://nixos.wiki/index.php";
|
||||||
|
params = [
|
||||||
|
{
|
||||||
|
name = "search";
|
||||||
|
value = "{searchTerms}";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||||
|
@ -106,15 +117,16 @@
|
||||||
"Noogle" = {
|
"Noogle" = {
|
||||||
urls = [
|
urls = [
|
||||||
{
|
{
|
||||||
template = "https://noogle.dev/q?term={searchTerms}";
|
template = "https://noogle.dev/q";
|
||||||
params = [
|
params = [
|
||||||
{
|
{
|
||||||
name = "q";
|
name = "term";
|
||||||
value = "{searchTerms}";
|
value = "{searchTerms}";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
definedAliases = ["ngl"];
|
||||||
};
|
};
|
||||||
"lib.rs" = {
|
"lib.rs" = {
|
||||||
urls = [
|
urls = [
|
||||||
|
@ -146,6 +158,14 @@
|
||||||
icon = "https://docs.rs/-/static/favicon.ico";
|
icon = "https://docs.rs/-/static/favicon.ico";
|
||||||
definedAliases = ["docs"];
|
definedAliases = ["docs"];
|
||||||
};
|
};
|
||||||
|
"rust docs direct open" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://docs.rs/{searchTerms}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
definedAliases = ["doc" "docd"];
|
||||||
|
};
|
||||||
"rust std docs" = {
|
"rust std docs" = {
|
||||||
urls = [
|
urls = [
|
||||||
{
|
{
|
||||||
|
@ -161,6 +181,19 @@
|
||||||
icon = "https://doc.rust-lang.org/favicon.ico";
|
icon = "https://doc.rust-lang.org/favicon.ico";
|
||||||
definedAliases = ["std"];
|
definedAliases = ["std"];
|
||||||
};
|
};
|
||||||
|
"MDN" = {
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
template = "https://developer.mozilla.org/search";
|
||||||
|
params = [
|
||||||
|
{
|
||||||
|
name = "q";
|
||||||
|
value = "{searchTerms}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
"Bing".metaData.hidden = true;
|
"Bing".metaData.hidden = true;
|
||||||
"Google".metaData.hidden = true;
|
"Google".metaData.hidden = true;
|
||||||
"Amazon.de".metaData.hidden = true;
|
"Amazon.de".metaData.hidden = true;
|
||||||
|
@ -183,6 +216,8 @@
|
||||||
"browser.aboutwelcome.enabled" = false;
|
"browser.aboutwelcome.enabled" = false;
|
||||||
"browser.preferences.moreFromMozilla" = false;
|
"browser.preferences.moreFromMozilla" = false;
|
||||||
"browser.menu.showViewImageInfo" = true;
|
"browser.menu.showViewImageInfo" = true;
|
||||||
|
"browser.shopping.experience2023.active" = false;
|
||||||
|
"browser.shopping.experience2023.survey.enabled" = false;
|
||||||
|
|
||||||
"identity.fxaccounts.enabled" = true;
|
"identity.fxaccounts.enabled" = true;
|
||||||
"browser.tabs.firefox-view" = true;
|
"browser.tabs.firefox-view" = true;
|
||||||
|
@ -194,6 +229,19 @@
|
||||||
"privacy.trackingprotection.enabled" = true;
|
"privacy.trackingprotection.enabled" = true;
|
||||||
"privacy.trackingprotection.socialtracking.enabled" = true;
|
"privacy.trackingprotection.socialtracking.enabled" = true;
|
||||||
|
|
||||||
|
"browser.ml.chat.enabled" = false;
|
||||||
|
"browser.ml.chat.hideLocalhost" = false;
|
||||||
|
"browser.ml.chat.prompt.prefix" = "";
|
||||||
|
"browser.ml.chat.prompts.0" = "";
|
||||||
|
"browser.ml.chat.prompts.1" = "";
|
||||||
|
"browser.ml.chat.prompts.2" = "";
|
||||||
|
"browser.ml.chat.prompts.3" = "";
|
||||||
|
"browser.ml.chat.provider" = "";
|
||||||
|
"browser.ml.chat.shortcuts" = false;
|
||||||
|
"browser.ml.chat.shortcuts.custom" = false;
|
||||||
|
"browser.ml.chat.shortcuts.longPress" = "";
|
||||||
|
"browser.ml.chat.sidebar" = false;
|
||||||
|
|
||||||
"geo.provider.network.logging.enabled" = true;
|
"geo.provider.network.logging.enabled" = true;
|
||||||
"extensions.getAddons.showPane" = false;
|
"extensions.getAddons.showPane" = false;
|
||||||
"extensions.htmlaboutaddons.recommendations.enabled" = false;
|
"extensions.htmlaboutaddons.recommendations.enabled" = false;
|
||||||
|
@ -219,6 +267,9 @@
|
||||||
"app.shield.optoutstudies.enabled" = false;
|
"app.shield.optoutstudies.enabled" = false;
|
||||||
"app.normandy.enabled" = false;
|
"app.normandy.enabled" = false;
|
||||||
"app.normandy.api_url" = "";
|
"app.normandy.api_url" = "";
|
||||||
|
"dom.private-attribution.submission.enabled" = false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.showWeather" = false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.weatherfeed" = false;
|
||||||
|
|
||||||
"browser.safebrowsing.malware.enabled" = false;
|
"browser.safebrowsing.malware.enabled" = false;
|
||||||
"browser.safebrowsing.phishing.enabled" = false;
|
"browser.safebrowsing.phishing.enabled" = false;
|
||||||
|
@ -284,8 +335,7 @@
|
||||||
"privacy.window.maxInnerWidth" = 1600;
|
"privacy.window.maxInnerWidth" = 1600;
|
||||||
"privacy.window.maxInnerHeight" = 900;
|
"privacy.window.maxInnerHeight" = 900;
|
||||||
"privacy.resistFingerprinting.block_mozAddonManager" = true;
|
"privacy.resistFingerprinting.block_mozAddonManager" = true;
|
||||||
"privacy.resistFingerprinting.letterboxing" = true;
|
"privacy.resistFingerprinting.letterboxing" = false;
|
||||||
"privacy.resistFingerprinting.letterboxing.dimensions" = "";
|
|
||||||
"widget.non-native-theme.enabled" = true;
|
"widget.non-native-theme.enabled" = true;
|
||||||
"browser.link.open_newwindow" = 3;
|
"browser.link.open_newwindow" = 3;
|
||||||
"browser.link.open_newwindow.restriction" = 0;
|
"browser.link.open_newwindow.restriction" = 0;
|
||||||
|
|
20
modules/desktop/fonts.nix
Normal file
20
modules/desktop/fonts.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
(nerdfonts.override {fonts = ["FiraCode" "AnonymousPro"];})
|
||||||
|
montserrat
|
||||||
|
noto-fonts
|
||||||
|
atkinson-hyperlegible
|
||||||
|
arkpandora_ttf
|
||||||
|
liberation_ttf
|
||||||
|
caladea
|
||||||
|
carlito
|
||||||
|
garamond-libre
|
||||||
|
ocr-a
|
||||||
|
amiri
|
||||||
|
libertine
|
||||||
|
inter
|
||||||
|
b612
|
||||||
|
departure-mono
|
||||||
|
];
|
||||||
|
fonts.fontDir.enable = true;
|
||||||
|
}
|
|
@ -16,6 +16,10 @@ in
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
lutris
|
lutris
|
||||||
prismlauncher
|
prismlauncher
|
||||||
|
legendary-gl
|
||||||
|
wineWowPackages.stable
|
||||||
|
dxvk_2
|
||||||
|
vkd3d-proton
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs-stable,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
cfg = config.jade.desktop.mail;
|
cfg = config.jade.desktop.mail;
|
||||||
|
@ -20,7 +20,7 @@ in
|
||||||
enable = mkEnableOption "Enable thunderbird mail stuff";
|
enable = mkEnableOption "Enable thunderbird mail stuff";
|
||||||
};
|
};
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home-manager.users.jade = {pkgs, ...}: {
|
home-manager.users.jade = {pkgs-stable, ...}: {
|
||||||
accounts.email.accounts = {
|
accounts.email.accounts = {
|
||||||
"Jade" = rec {
|
"Jade" = rec {
|
||||||
inherit imap smtp;
|
inherit imap smtp;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
}: let
|
}: let
|
||||||
addNuShebang = path:
|
addNuShebang = path:
|
||||||
builtins.concatStringsSep "\n\n" [
|
builtins.concatStringsSep "\n\n" [
|
||||||
"#!${pkgs.nushellFull}/bin/nu"
|
"#!${pkgs.nushell}/bin/nu"
|
||||||
(builtins.readFile path)
|
(builtins.readFile path)
|
||||||
];
|
];
|
||||||
in {
|
in {
|
||||||
|
@ -63,6 +63,7 @@ in {
|
||||||
networkmanagerapplet
|
networkmanagerapplet
|
||||||
mullvad-vpn
|
mullvad-vpn
|
||||||
speedtest-cli
|
speedtest-cli
|
||||||
|
macchanger
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
23
modules/desktop/obs.nix
Normal file
23
modules/desktop/obs.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = [
|
||||||
|
(pkgs.wrapOBS {
|
||||||
|
plugins = with pkgs.obs-studio-plugins; [
|
||||||
|
wlrobs
|
||||||
|
obs-backgroundremoval
|
||||||
|
obs-pipewire-audio-capture
|
||||||
|
];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.extraModulePackages = with config.boot.kernelPackages; [
|
||||||
|
v4l2loopback
|
||||||
|
];
|
||||||
|
boot.extraModprobeConfig = ''
|
||||||
|
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
|
||||||
|
'';
|
||||||
|
security.polkit.enable = true;
|
||||||
|
}
|
|
@ -1,150 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
config = {
|
|
||||||
home-manager.users.jade = {pkgs, ...}: {
|
|
||||||
services.polybar = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.polybarFull;
|
|
||||||
|
|
||||||
script = "";
|
|
||||||
settings = {
|
|
||||||
colors = {
|
|
||||||
background = "#282828";
|
|
||||||
background-alt = "#3c3836";
|
|
||||||
foreground = "#ebdbb2";
|
|
||||||
primary = "#d65d0e";
|
|
||||||
secondary = "#fe8019";
|
|
||||||
alert = "#cc241d";
|
|
||||||
disabled = "#504945";
|
|
||||||
};
|
|
||||||
"bar/status" = {
|
|
||||||
# Style
|
|
||||||
bottom = true;
|
|
||||||
width = "100%";
|
|
||||||
height = "24px";
|
|
||||||
radius = 0;
|
|
||||||
tray-position = "center";
|
|
||||||
background = "\${colors.background}";
|
|
||||||
foreground = "\${colors.foreground}";
|
|
||||||
line-size = "4px";
|
|
||||||
border-color = "#00000000";
|
|
||||||
padding-left = 0;
|
|
||||||
padding-right = 1;
|
|
||||||
module-margin = 1;
|
|
||||||
separator = "|";
|
|
||||||
separator-foreground = "\${colors.disabled}";
|
|
||||||
font-0 = "FiraCode Nerd Font";
|
|
||||||
modules-left = "xworkspaces xwindow";
|
|
||||||
modules-right = "memory cpu wlan bat0 bat1";
|
|
||||||
cursor-click = "pointer";
|
|
||||||
cursor-scroll = "ns-resize";
|
|
||||||
enable-ipc = true;
|
|
||||||
wm-restack = "generic";
|
|
||||||
override-redirect = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/xworkspaces" = {
|
|
||||||
type = "internal/xworkspaces";
|
|
||||||
label-active = "";
|
|
||||||
label-active-padding = 1;
|
|
||||||
label-occupied = "";
|
|
||||||
label-occupied-padding = 1;
|
|
||||||
label-urgent = "";
|
|
||||||
label-urgent-foreground = "\${colors.alert}";
|
|
||||||
label-urgent-padding = 1;
|
|
||||||
label-empty = "";
|
|
||||||
label-empty-foreground = "\${colors.disabled}";
|
|
||||||
label-empty-padding = 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/xwindow" = {
|
|
||||||
type = "internal/xwindow";
|
|
||||||
label = "%title:0:60:...%";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/memory" = {
|
|
||||||
type = "internal/memory";
|
|
||||||
interval = 2;
|
|
||||||
format-prefix = " ";
|
|
||||||
format-prefix-foreground = "\${colors.primary}";
|
|
||||||
label = "%percentage_used:2%%";
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/cpu" = {
|
|
||||||
type = "internal/cpu";
|
|
||||||
interval = "2";
|
|
||||||
format-prefix = " ";
|
|
||||||
format-prefix-foreground = "\${colors.primary}";
|
|
||||||
label = "%percentage:2%%";
|
|
||||||
};
|
|
||||||
|
|
||||||
"network-base" = {
|
|
||||||
type = "internal/network";
|
|
||||||
interval = 5;
|
|
||||||
format-connected = "<ramp-signal> <label-connected>";
|
|
||||||
format-disconnected = "<label-disconnected>";
|
|
||||||
label-disconnected = "";
|
|
||||||
label-disconnected-foreground = "#d65d0e";
|
|
||||||
ramp.signal = [
|
|
||||||
"%{F#cc241d}"
|
|
||||||
"%{F#d79921}"
|
|
||||||
"%{F#98971a}"
|
|
||||||
"%{F#98971a}"
|
|
||||||
"%{F#98971a}"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/wlan" = {
|
|
||||||
"inherit" = "network-base";
|
|
||||||
interface-type = "wireless";
|
|
||||||
label-connected = "%{F#F0C674}%{F-} %local_ip%";
|
|
||||||
};
|
|
||||||
"battery-base" = {
|
|
||||||
type = "internal/battery";
|
|
||||||
poll-interval = 1;
|
|
||||||
time-format = "%H%{F#7c6f64}:%{F#d5c4a1}%M";
|
|
||||||
label-charging = "%{F#98971a} %{F#ebdbb2}%percentage%%%{F#d5c4a1} %time%";
|
|
||||||
format-charging = "<ramp-capacity> <label-charging>";
|
|
||||||
label-discharging = "%{F#ebdbb2}%percentage%%%{F#bdae93} %time%";
|
|
||||||
format-discharging = "<ramp-capacity> <label-discharging>";
|
|
||||||
label-full = "%{F#98971a}%{F#ebdbb2} %percentage%%";
|
|
||||||
format-full = "<label-full>";
|
|
||||||
label-low = "%{F#cc241d}%{F#ebdbb2} %percentage%%";
|
|
||||||
format-low = "<label-low>";
|
|
||||||
ramp.capacity = [
|
|
||||||
"%{F#cc241d}"
|
|
||||||
"%{F#d79921}"
|
|
||||||
"%{F#98971a}"
|
|
||||||
"%{F#98971a}"
|
|
||||||
"%{F#98971a}"
|
|
||||||
"%{F#98971a}"
|
|
||||||
"%{F#98971a}"
|
|
||||||
"%{F#98971a}"
|
|
||||||
"%{F#98971a}"
|
|
||||||
"%{F#98971a}"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"module/bat0" = {
|
|
||||||
"inherit" = "battery-base";
|
|
||||||
battery = "BAT0";
|
|
||||||
adapter = "ADP1";
|
|
||||||
};
|
|
||||||
"module/bat1" = {
|
|
||||||
"inherit" = "battery-base";
|
|
||||||
battery = "BAT1";
|
|
||||||
adapter = "ADP1";
|
|
||||||
};
|
|
||||||
|
|
||||||
"settings" = {
|
|
||||||
screenchange-reload = true;
|
|
||||||
pseudo-transparency = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -11,13 +11,23 @@ in
|
||||||
enable = mkEnableOption "Enable social apps";
|
enable = mkEnableOption "Enable social apps";
|
||||||
};
|
};
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home-manager.users.jade = {pkgs, ...}: {
|
home-manager.users.jade = {
|
||||||
|
pkgs,
|
||||||
|
pkgs-stable,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
evolutionWithPlugins
|
|
||||||
signal-desktop
|
signal-desktop
|
||||||
mumble
|
mumble
|
||||||
element-desktop
|
element-desktop
|
||||||
|
pkgs.evolution-data-server-gtk4
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
programs.evolution = {
|
||||||
|
enable = true;
|
||||||
|
plugins = [pkgs.evolution-ews];
|
||||||
|
};
|
||||||
|
services.gnome.evolution-data-server.enable = true;
|
||||||
|
services.gnome.evolution-data-server.plugins = [];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
};
|
};
|
||||||
qt = {
|
qt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
platformTheme = "gtk";
|
platformTheme.name = "gtk";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
16
modules/desktop/x.nix
Normal file
16
modules/desktop/x.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
desktopManager = {
|
||||||
|
xterm.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
windowManager.xmonad = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
security.polkit.enable = true;
|
||||||
|
programs.sway.enable = true;
|
||||||
|
}
|
|
@ -1,43 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home-manager.users.jade = {
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
xmobarGhc = pkgs.haskellPackages.ghcWithPackages (pkgs:
|
|
||||||
with pkgs; [
|
|
||||||
xmobar
|
|
||||||
statgrab
|
|
||||||
]);
|
|
||||||
in {
|
|
||||||
home.packages = [xmobarGhc pkgs.xmonadctl];
|
|
||||||
programs.xmobar = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
home.file."xmobar.hs" = rec {
|
|
||||||
source = ../../haskell/xmobar/xmobar.hs;
|
|
||||||
target = ".config/xmobar/xmobar.hs";
|
|
||||||
onChange = ''
|
|
||||||
${xmobarGhc}/bin/ghc -threaded ${target}
|
|
||||||
${pkgs.busybox}/bin/pkill xmobar
|
|
||||||
${pkgs.haskellPackages.xmonad}/bin/xmonad --restart
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
xsession.windowManager.xmonad = {
|
|
||||||
enable = true;
|
|
||||||
enableContribAndExtras = true;
|
|
||||||
config = ../../haskell/xmonad/xmonad.hs;
|
|
||||||
};
|
|
||||||
home.file.wallpaper = {
|
|
||||||
target = "Pictures/wallpaper.jpg";
|
|
||||||
source = ../../other/wallpaper.jpg;
|
|
||||||
onChange = ''
|
|
||||||
feh --bg-fill ~/Pictures/wallpaper.jpg;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
cfg = config.jade.flatpak;
|
|
||||||
in
|
|
||||||
with lib; {
|
|
||||||
options.jade.flatpak = {
|
|
||||||
enable = mkEnableOption "Enable flatpak";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
services.flatpak.enable = true;
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
# TODO
|
|
||||||
config.common.default = "*";
|
|
||||||
extraPortals = [
|
|
||||||
pkgs.xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,80 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home-manager.users.jade = {
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
userName = "Schrottkatze";
|
|
||||||
userEmail = "git@schrottkatze.de";
|
|
||||||
aliases = {
|
|
||||||
a = "add";
|
|
||||||
c = "commit";
|
|
||||||
ca = "commit --all";
|
|
||||||
p = "push";
|
|
||||||
pl = "pull";
|
|
||||||
s = "status";
|
|
||||||
};
|
|
||||||
signing = {
|
|
||||||
key = "${pkgs.writeText "red_nk3.pub" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOaE8TFsIazpn4OnHvHcRpOFr9FfvMaWOiEjmHsmnAoE cardno:000F_70CD7D05"}";
|
|
||||||
signByDefault = true;
|
|
||||||
};
|
|
||||||
extraConfig = {
|
|
||||||
gpg = {
|
|
||||||
format = "ssh";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.jujutsu = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
user = {
|
|
||||||
name = config.programs.git.userName;
|
|
||||||
email = config.programs.git.userEmail;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.gitui = {
|
|
||||||
enable = true;
|
|
||||||
keyConfig = ''
|
|
||||||
(
|
|
||||||
open_help: Some(( code: F(1), modifiers: ( bits: 0,),)),
|
|
||||||
|
|
||||||
move_left: Some(( code: Char('h'), modifiers: ( bits: 0,),)),
|
|
||||||
move_right: Some(( code: Char('l'), modifiers: ( bits: 0,),)),
|
|
||||||
move_up: Some(( code: Char('k'), modifiers: ( bits: 0,),)),
|
|
||||||
move_down: Some(( code: Char('j'), modifiers: ( bits: 0,),)),
|
|
||||||
|
|
||||||
popup_up: Some(( code: Char('p'), modifiers: ( bits: 2,),)),
|
|
||||||
popup_down: Some(( code: Char('n'), modifiers: ( bits: 2,),)),
|
|
||||||
page_up: Some(( code: Char('b'), modifiers: ( bits: 2,),)),
|
|
||||||
page_down: Some(( code: Char('f'), modifiers: ( bits: 2,),)),
|
|
||||||
home: Some(( code: Char('g'), modifiers: ( bits: 0,),)),
|
|
||||||
end: Some(( code: Char('G'), modifiers: ( bits: 1,),)),
|
|
||||||
shift_up: Some(( code: Char('K'), modifiers: ( bits: 1,),)),
|
|
||||||
shift_down: Some(( code: Char('J'), modifiers: ( bits: 1,),)),
|
|
||||||
|
|
||||||
edit_file: Some(( code: Char('I'), modifiers: ( bits: 1,),)),
|
|
||||||
|
|
||||||
status_reset_item: Some(( code: Char('U'), modifiers: ( bits: 1,),)),
|
|
||||||
|
|
||||||
diff_reset_lines: Some(( code: Char('u'), modifiers: ( bits: 0,),)),
|
|
||||||
diff_stage_lines: Some(( code: Char('s'), modifiers: ( bits: 0,),)),
|
|
||||||
|
|
||||||
stashing_save: Some(( code: Char('w'), modifiers: ( bits: 0,),)),
|
|
||||||
stashing_toggle_index: Some(( code: Char('m'), modifiers: ( bits: 0,),)),
|
|
||||||
|
|
||||||
stash_open: Some(( code: Char('l'), modifiers: ( bits: 0,),)),
|
|
||||||
|
|
||||||
abort_merge: Some(( code: Char('M'), modifiers: ( bits: 1,),)),
|
|
||||||
)
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
3
modules/graphics.nix
Normal file
3
modules/graphics.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{...}: {
|
||||||
|
hardware.graphics.enable = true;
|
||||||
|
}
|
|
@ -7,5 +7,6 @@
|
||||||
imports = [
|
imports = [
|
||||||
./spacenav.nix
|
./spacenav.nix
|
||||||
./wacom.nix
|
./wacom.nix
|
||||||
|
./hardware_key.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
35
modules/hardware/hardware_key.nix
Normal file
35
modules/hardware/hardware_key.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.hwKey;
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.hwKey = {
|
||||||
|
pamAuth.enable = mkEnableOption "Enable PAM authentication with hardware keys";
|
||||||
|
};
|
||||||
|
config = {
|
||||||
|
# nitrokey
|
||||||
|
services.udev.packages = [pkgs.nitrokey-udev-rules];
|
||||||
|
|
||||||
|
# smartcard daemon
|
||||||
|
services.pcscd.enable = true;
|
||||||
|
|
||||||
|
# authenticate using hw key
|
||||||
|
security.pam = {
|
||||||
|
services.jade.u2fAuth = cfg.pamAuth.enable;
|
||||||
|
u2f = {
|
||||||
|
enable = true;
|
||||||
|
control = "sufficient";
|
||||||
|
settings = {
|
||||||
|
cue = true;
|
||||||
|
authFile = "/home/jade/.ssh/u2f_keys";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.i3lock.u2fSupport = true;
|
||||||
|
};
|
||||||
|
}
|
16
modules/input/default.nix
Normal file
16
modules/input/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./evremap.nix
|
||||||
|
];
|
||||||
|
services = {
|
||||||
|
libinput = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
xserver = {
|
||||||
|
xkb = {
|
||||||
|
layout = "us";
|
||||||
|
variant = "altgr-intl";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
110
modules/input/evremap.nix
Normal file
110
modules/input/evremap.nix
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
utils,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.jade.input.remapping;
|
||||||
|
evremap = pkgs.rustPlatform.buildRustPackage {
|
||||||
|
pname = "evremap";
|
||||||
|
version = "0.1.0";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "wez";
|
||||||
|
repo = "evremap";
|
||||||
|
rev = "4480c4eda223b98899b0fbd926bc34f7bd0e1a18";
|
||||||
|
sha256 = "sha256-BxSrphgW1n465FX6bKVkq6O0XE2JqanfSYlsGwWUWkQ=";
|
||||||
|
};
|
||||||
|
cargoHash = "";
|
||||||
|
cargoLock.lockFile = ../../other/evremap.Cargo.lock;
|
||||||
|
postPatch = ''
|
||||||
|
cp ${../../other/evremap.Cargo.lock} Cargo.lock
|
||||||
|
'';
|
||||||
|
nativeBuildInputs = [pkgs.pkg-config];
|
||||||
|
buildInputs = [pkgs.libevdev];
|
||||||
|
};
|
||||||
|
toml = pkgs.formats.toml {};
|
||||||
|
in
|
||||||
|
with lib; {
|
||||||
|
options.jade.input.remapping = {
|
||||||
|
enable = mkEnableOption "Enable evremap";
|
||||||
|
devices = mkOption {
|
||||||
|
type = types.attrsOf (types.submodule ({name, ...}: {
|
||||||
|
options = {
|
||||||
|
device_name = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = "The device name";
|
||||||
|
default = name;
|
||||||
|
};
|
||||||
|
remap = mkOption {
|
||||||
|
type = types.listOf (types.submodule ({...}: {
|
||||||
|
options.input = mkOption {type = types.listOf types.str;};
|
||||||
|
options.output = mkOption {type = types.listOf types.str;};
|
||||||
|
}));
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
swapKeys = mkOption {
|
||||||
|
description = "Lists with two keys to be swapped on the keyboard layout.";
|
||||||
|
type = types.listOf (
|
||||||
|
# verify that each key swapping list contains two elements
|
||||||
|
types.addCheck (types.listOf types.str) (v: builtins.length v == 2)
|
||||||
|
);
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
dual_role = mkOption {
|
||||||
|
type = types.listOf (types.submodule ({...}: {
|
||||||
|
options.input = mkOption {type = types.str;};
|
||||||
|
options.hold = mkOption {type = types.listOf types.str;};
|
||||||
|
options.tap = mkOption {type = types.listOf types.str;};
|
||||||
|
}));
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable (
|
||||||
|
with builtins; let
|
||||||
|
devs = map ({
|
||||||
|
device_name,
|
||||||
|
remap,
|
||||||
|
swapKeys,
|
||||||
|
dual_role,
|
||||||
|
}: {
|
||||||
|
inherit device_name dual_role;
|
||||||
|
|
||||||
|
# expand swapKeys to normal remaps
|
||||||
|
remap = concatLists [
|
||||||
|
remap
|
||||||
|
(lib.lists.flatten (map (keys: [
|
||||||
|
{
|
||||||
|
input = [(head keys)];
|
||||||
|
output = [(lib.lists.last keys)];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
input = [(lib.lists.last keys)];
|
||||||
|
output = [(head keys)];
|
||||||
|
}
|
||||||
|
])
|
||||||
|
swapKeys))
|
||||||
|
];
|
||||||
|
}) (attrValues cfg.devices);
|
||||||
|
in {
|
||||||
|
# generate numbered systemd services for each device to be remapped
|
||||||
|
# https://github.com/wez/evremap/issues/17
|
||||||
|
systemd.services = listToAttrs (genList (i: {
|
||||||
|
name = "evremap${toString i}";
|
||||||
|
value = let
|
||||||
|
cfgFile = toml.generate "remaps-${toString i}.toml" (elemAt devs i);
|
||||||
|
in {
|
||||||
|
script = "${evremap}/bin/evremap remap ${cfgFile}";
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
unitConfig = {
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}) (length devs));
|
||||||
|
environment.systemPackages = [evremap];
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
|
@ -6,6 +6,9 @@
|
||||||
./zellij.nix
|
./zellij.nix
|
||||||
./carapace.nix
|
./carapace.nix
|
||||||
./direnv.nix
|
./direnv.nix
|
||||||
|
./tty.nix
|
||||||
|
./git.nix
|
||||||
|
./mprocs.nix
|
||||||
];
|
];
|
||||||
programs.mosh.enable = true;
|
programs.mosh.enable = true;
|
||||||
}
|
}
|
||||||
|
|
60
modules/shell/git.nix
Normal file
60
modules/shell/git.nix
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home-manager.users.jade = {
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userName = "Schrottkatze";
|
||||||
|
userEmail = "git@schrottkatze.de";
|
||||||
|
aliases = {
|
||||||
|
a = "add";
|
||||||
|
c = "commit";
|
||||||
|
ca = "commit --all";
|
||||||
|
p = "push";
|
||||||
|
pl = "pull";
|
||||||
|
s = "status";
|
||||||
|
};
|
||||||
|
signing = {
|
||||||
|
key = "${pkgs.writeText "red_nk3.pub" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOaE8TFsIazpn4OnHvHcRpOFr9FfvMaWOiEjmHsmnAoE cardno:000F_70CD7D05"}";
|
||||||
|
signByDefault = true;
|
||||||
|
};
|
||||||
|
extraConfig = {
|
||||||
|
gpg = {
|
||||||
|
format = "ssh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.jujutsu = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
user = {
|
||||||
|
name = config.programs.git.userName;
|
||||||
|
email = config.programs.git.userEmail;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.gitui = {
|
||||||
|
enable = true;
|
||||||
|
keyConfig = ''
|
||||||
|
(
|
||||||
|
move_left: Some(( code: Char('h'), modifiers: "")),
|
||||||
|
move_right: Some(( code: Char('l'), modifiers: "")),
|
||||||
|
move_up: Some(( code: Char('k'), modifiers: "")),
|
||||||
|
move_down: Some(( code: Char('j'), modifiers: "")),
|
||||||
|
|
||||||
|
stash_open: Some(( code: Char('l'), modifiers: "")),
|
||||||
|
open_help: Some(( code: F(1), modifiers: "")),
|
||||||
|
|
||||||
|
status_reset_item: Some(( code: Char('U'), modifiers: "SHIFT")),
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,5 +1,13 @@
|
||||||
{config, ...}: {
|
{
|
||||||
home-manager.users.jade = {pkgs, ...}: {
|
config,
|
||||||
|
helix-inline-diags,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home-manager.users.jade = {
|
||||||
|
pkgs,
|
||||||
|
pkgs-stable,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
home = {
|
home = {
|
||||||
sessionVariables.EDITOR = "hx";
|
sessionVariables.EDITOR = "hx";
|
||||||
packages = [
|
packages = [
|
||||||
|
@ -7,15 +15,55 @@
|
||||||
pkgs.vscode-langservers-extracted
|
pkgs.vscode-langservers-extracted
|
||||||
pkgs.nodePackages.typescript-language-server
|
pkgs.nodePackages.typescript-language-server
|
||||||
pkgs.emmet-language-server
|
pkgs.emmet-language-server
|
||||||
|
pkgs-stable.typst-lsp
|
||||||
|
pkgs.jdt-language-server
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
programs.helix = {
|
programs.helix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
package = helix-inline-diags.outputs.packages."x86_64-linux".default;
|
||||||
settings = {
|
settings = {
|
||||||
theme = "gruvbox";
|
theme = "gruvbox";
|
||||||
editor = {
|
editor = {
|
||||||
line-number = "relative";
|
line-number = "relative";
|
||||||
lsp.display-messages = true;
|
bufferline = "multiple";
|
||||||
|
color-modes = true;
|
||||||
|
cursorline = true;
|
||||||
|
auto-save = true;
|
||||||
|
auto-format = true;
|
||||||
|
end-of-line-diagnostics = "hint";
|
||||||
|
inline-diagnostics = {
|
||||||
|
cursor-line = "hint";
|
||||||
|
other-lines = "error";
|
||||||
|
};
|
||||||
|
lsp = {
|
||||||
|
display-messages = true;
|
||||||
|
display-inlay-hints = true;
|
||||||
|
};
|
||||||
|
popup-border = "popup";
|
||||||
|
shell = ["nu" "-c"];
|
||||||
|
statusline.left = [
|
||||||
|
"mode"
|
||||||
|
"spinner"
|
||||||
|
"spacer"
|
||||||
|
"version-control"
|
||||||
|
"file-name"
|
||||||
|
"diagnostics"
|
||||||
|
"read-only-indicator"
|
||||||
|
"file-modification-indicator"
|
||||||
|
"spacer"
|
||||||
|
];
|
||||||
|
|
||||||
|
statusline.right = [
|
||||||
|
"workspace-diagnostics"
|
||||||
|
"register"
|
||||||
|
"position"
|
||||||
|
"selections"
|
||||||
|
"file-encoding"
|
||||||
|
"file-type"
|
||||||
|
];
|
||||||
|
idle-timeout = 50;
|
||||||
indent-guides = {
|
indent-guides = {
|
||||||
render = true;
|
render = true;
|
||||||
character = "│";
|
character = "│";
|
||||||
|
@ -33,37 +81,88 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
keys.normal = {
|
keys = {
|
||||||
|
normal = {
|
||||||
space."=" = ":fmt";
|
space."=" = ":fmt";
|
||||||
};
|
};
|
||||||
|
insert = {
|
||||||
|
up = "no_op";
|
||||||
|
down = "no_op";
|
||||||
|
left = "no_op";
|
||||||
|
right = "no_op";
|
||||||
|
pageup = "no_op";
|
||||||
|
pagedown = "no_op";
|
||||||
|
home = "no_op";
|
||||||
|
end = "no_op";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
languages = {
|
languages = {
|
||||||
language-server."nu-builtin-lsp" = {
|
language-server = {
|
||||||
|
"nu-builtin-lsp" = {
|
||||||
command = "${config.users.defaultUserShell}/bin/nu";
|
command = "${config.users.defaultUserShell}/bin/nu";
|
||||||
args = ["--lsp"];
|
args = ["--lsp"];
|
||||||
};
|
};
|
||||||
language-server."rust-analyzer" = {
|
"rust-analyzer" = {
|
||||||
config = {
|
config = {
|
||||||
check.command = "clippy";
|
check.command = "check";
|
||||||
|
completion.snippets.custom = {
|
||||||
|
"pub fn" = {
|
||||||
|
prefix = ["pfn" "pubfn"];
|
||||||
|
postfix = ["pfn"];
|
||||||
|
body = [
|
||||||
|
"pub fn $\{receiver\}() {"
|
||||||
|
"\\t$1"
|
||||||
|
"}"
|
||||||
|
];
|
||||||
|
scope = "type";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
language-server."emmet-language-server" = {
|
completion.termSearch.enable = true;
|
||||||
|
diagnostics.enable = true;
|
||||||
|
inlayHints = {
|
||||||
|
bindingModeHints.enable = true;
|
||||||
|
closureCaptureHints.enable = true;
|
||||||
|
closureReturnTypeHints.enable = true;
|
||||||
|
discriminantHints.enable = true;
|
||||||
|
expressionAdjustmentHints = {
|
||||||
|
hideOutsideUnsafe = true;
|
||||||
|
};
|
||||||
|
lifetimeElisionHints.enable = "skip_trivial";
|
||||||
|
};
|
||||||
|
interpret.tests = true;
|
||||||
|
lens = {
|
||||||
|
references = {
|
||||||
|
adt.enable = true;
|
||||||
|
trait.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
typing.autoClosingAngleBrackets.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"emmet-language-server" = {
|
||||||
command = "emmet-language-server";
|
command = "emmet-language-server";
|
||||||
args = ["--stdio"];
|
args = ["--stdio"];
|
||||||
};
|
};
|
||||||
# "php" = {
|
"psalm" = {
|
||||||
# name = "php";
|
command = "psalm";
|
||||||
# file-types = [ "php" ];
|
args = ["--language-server"];
|
||||||
# language-server = {
|
};
|
||||||
# command = "psalm";
|
"typst-lsp" = {
|
||||||
# args = ["--language-server"];
|
config = {
|
||||||
# };
|
exportPdf = "onType";
|
||||||
# };
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
language = [
|
language = [
|
||||||
{
|
{
|
||||||
name = "nu";
|
name = "nu";
|
||||||
language-servers = ["nu-builtin-lsp"];
|
language-servers = ["nu-builtin-lsp"];
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "php";
|
||||||
|
language-servers = ["psalm"];
|
||||||
|
}
|
||||||
{
|
{
|
||||||
name = "nix";
|
name = "nix";
|
||||||
formatter = {
|
formatter = {
|
||||||
|
|
24
modules/shell/mprocs.nix
Normal file
24
modules/shell/mprocs.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{...}: {
|
||||||
|
home-manager.users.jade = {
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home = {
|
||||||
|
packages = [pkgs.mprocs];
|
||||||
|
};
|
||||||
|
xdg.configFile."mprocs/mprocs.yaml" = {
|
||||||
|
text = builtins.toJSON {
|
||||||
|
proc_list_width = 15;
|
||||||
|
keymap_procs = {
|
||||||
|
"<l>" = {c = "toggle-focus";};
|
||||||
|
};
|
||||||
|
keymap_term = {
|
||||||
|
"<C-a>" = null;
|
||||||
|
# Ctrl-m so it doesnt overlap with zellij or helix
|
||||||
|
"<C-M>" = {c = "toggle-focus";};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -12,17 +12,30 @@
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.pueue
|
pkgs.pueue
|
||||||
];
|
];
|
||||||
|
home.file."shell-startup" = {
|
||||||
|
source = ../../other/scripts/desktop/shell-startup.nu;
|
||||||
|
target = ".config/nushell/shell-startup.nu";
|
||||||
|
};
|
||||||
programs.nushell = {
|
programs.nushell = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = config.users.defaultUserShell;
|
package = config.users.defaultUserShell;
|
||||||
configFile.source = ../../other/config.nu;
|
configFile.source = ../../other/config.nu;
|
||||||
envFile.source = ../../other/env.nu;
|
envFile.source = ../../other/env.nu;
|
||||||
# extraConfig = ''
|
extraConfig = ''
|
||||||
# source ${pkgs.nu_scripts}/share/nu_scripts/modules/nix/nix.nu;
|
plugin add ${pkgs.nushellPlugins.query}/bin/nu_plugin_query;
|
||||||
# use ${pkgs.nu_scripts}/share/nu_scripts/modules/background_task/job.nu;
|
plugin add ${pkgs.nushellPlugins.polars}/bin/nu_plugin_polars;
|
||||||
# '';
|
plugin add ${pkgs.nushellPlugins.formats}/bin/nu_plugin_formats;
|
||||||
|
|
||||||
|
plugin use query;
|
||||||
|
plugin use polars;
|
||||||
|
plugin use formats;
|
||||||
|
|
||||||
|
nu ${../../other/scripts/desktop/shell-startup.nu};
|
||||||
|
'';
|
||||||
|
extraEnv = ''
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
programs.starship.enableNushellIntegration = true;
|
# programs.starship.enableNushellIntegration = true;
|
||||||
programs.carapace.enableNushellIntegration = true;
|
programs.carapace.enableNushellIntegration = true;
|
||||||
programs.direnv.enableNushellIntegration = true;
|
programs.direnv.enableNushellIntegration = true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
home-manager.users.jade = {pkgs, ...}: {
|
home-manager.users.jade = {pkgs, ...}: {
|
||||||
programs.starship = {
|
programs.starship = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
enableNushellIntegration = false;
|
||||||
settings = {
|
settings = {
|
||||||
format = "$all$directory$character";
|
format = "$all$directory$character";
|
||||||
character = {
|
character = {
|
||||||
|
|
|
@ -34,6 +34,26 @@
|
||||||
(getAttr (substring 5 2 (toUpper color)) hexLookupTable)
|
(getAttr (substring 5 2 (toUpper color)) hexLookupTable)
|
||||||
]);
|
]);
|
||||||
in {
|
in {
|
||||||
|
# TODO: global colorscheme vars for everything
|
||||||
|
console.colors = [
|
||||||
|
"282828"
|
||||||
|
"cc241d"
|
||||||
|
"98971a"
|
||||||
|
"d79921"
|
||||||
|
"458588"
|
||||||
|
"b16286"
|
||||||
|
"689d6a"
|
||||||
|
"a89984"
|
||||||
|
"928374"
|
||||||
|
"fb4934"
|
||||||
|
"b8bb26"
|
||||||
|
"fabd2f"
|
||||||
|
"83a598"
|
||||||
|
"d3869b"
|
||||||
|
"8ec07c"
|
||||||
|
"ebdbb2"
|
||||||
|
];
|
||||||
|
|
||||||
services.kmscon = {
|
services.kmscon = {
|
||||||
enable = true;
|
enable = true;
|
||||||
fonts = [
|
fonts = [
|
|
@ -1,49 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
cfg = config.jade.terminal;
|
|
||||||
in
|
|
||||||
with lib; {
|
|
||||||
options.jade.terminal = {
|
|
||||||
enable = mkEnableOption "Enable Kitty";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
environment.sessionVariables = rec {
|
|
||||||
TERMINAL = "kitty";
|
|
||||||
};
|
|
||||||
home-manager.users.jade = {pkgs, ...}: {
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
font = {
|
|
||||||
name = "FiraCode Nerd Font";
|
|
||||||
size = 11;
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
#adjust_column_width = "70%";
|
|
||||||
color0 = "#282828";
|
|
||||||
color8 = "#928374";
|
|
||||||
color1 = "#cc241d";
|
|
||||||
color9 = "#fb4934";
|
|
||||||
color2 = "#98971a";
|
|
||||||
color10 = "#b8bb26";
|
|
||||||
color3 = "#d79921";
|
|
||||||
color11 = "#fabd2f";
|
|
||||||
color4 = "#458588";
|
|
||||||
color12 = "#83a598";
|
|
||||||
color5 = "#b16286";
|
|
||||||
color13 = "#d3869b";
|
|
||||||
color6 = "#689d6a";
|
|
||||||
color14 = "#8ec07c";
|
|
||||||
color7 = "#a89984";
|
|
||||||
color15 = "#ebdbb2";
|
|
||||||
foreground = "#ebdbb2";
|
|
||||||
background = "#282828";
|
|
||||||
confirm_os_window_close = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
101
other/config.nu
101
other/config.nu
|
@ -42,6 +42,7 @@ let dark_theme = {
|
||||||
shape_directory: cyan
|
shape_directory: cyan
|
||||||
shape_external: cyan
|
shape_external: cyan
|
||||||
shape_externalarg: green_bold
|
shape_externalarg: green_bold
|
||||||
|
shape_external_resolved: light_cyan_bold
|
||||||
shape_filepath: cyan
|
shape_filepath: cyan
|
||||||
shape_flag: blue_bold
|
shape_flag: blue_bold
|
||||||
shape_float: purple_bold
|
shape_float: purple_bold
|
||||||
|
@ -231,18 +232,47 @@ $env.config = {
|
||||||
}
|
}
|
||||||
|
|
||||||
color_config: $dark_theme # if you want a more interesting theme, you can replace the empty record with `$dark_theme`, `$light_theme` or another custom record
|
color_config: $dark_theme # if you want a more interesting theme, you can replace the empty record with `$dark_theme`, `$light_theme` or another custom record
|
||||||
use_grid_icons: true
|
|
||||||
footer_mode: "25" # always, never, number_of_rows, auto
|
footer_mode: "25" # always, never, number_of_rows, auto
|
||||||
float_precision: 2 # the precision for displaying floats in tables
|
float_precision: 2 # the precision for displaying floats in tables
|
||||||
buffer_editor: "" # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL
|
buffer_editor: "" # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL
|
||||||
use_ansi_coloring: true
|
use_ansi_coloring: true
|
||||||
bracketed_paste: true # enable bracketed paste, currently useless on windows
|
bracketed_paste: true # enable bracketed paste, currently useless on windows
|
||||||
edit_mode: vi # emacs, vi
|
edit_mode: vi # emacs, vi
|
||||||
shell_integration: true # enables terminal shell integration. Off by default, as some terminals have issues with this.
|
shell_integration: {
|
||||||
|
# osc2 abbreviates the path if in the home_dir, sets the tab/window title, shows the running command in the tab/window title
|
||||||
|
osc2: true
|
||||||
|
# osc7 is a way to communicate the path to the terminal, this is helpful for spawning new tabs in the same directory
|
||||||
|
osc7: true
|
||||||
|
# osc8 is also implemented as the deprecated setting ls.show_clickable_links, it shows clickable links in ls output if your terminal supports it. show_clickable_links is deprecated in favor of osc8
|
||||||
|
osc8: true
|
||||||
|
# osc9_9 is from ConEmu and is starting to get wider support. It's similar to osc7 in that it communicates the path to the terminal
|
||||||
|
osc9_9: false
|
||||||
|
# osc133 is several escapes invented by Final Term which include the supported ones below.
|
||||||
|
# 133;A - Mark prompt start
|
||||||
|
# 133;B - Mark prompt end
|
||||||
|
# 133;C - Mark pre-execution
|
||||||
|
# 133;D;exit - Mark execution finished with exit code
|
||||||
|
# This is used to enable terminals to know where the prompt is, the command is, where the command finishes, and where the output of the command is
|
||||||
|
osc133: true
|
||||||
|
# osc633 is closely related to osc133 but only exists in visual studio code (vscode) and supports their shell integration features
|
||||||
|
# 633;A - Mark prompt start
|
||||||
|
# 633;B - Mark prompt end
|
||||||
|
# 633;C - Mark pre-execution
|
||||||
|
# 633;D;exit - Mark execution finished with exit code
|
||||||
|
# 633;E - NOT IMPLEMENTED - Explicitly set the command line with an optional nonce
|
||||||
|
# 633;P;Cwd=<path> - Mark the current working directory and communicate it to the terminal
|
||||||
|
# and also helps with the run recent menu in vscode
|
||||||
|
osc633: false
|
||||||
|
# reset_application_mode is escape \x1b[?1l and was added to help ssh work better
|
||||||
|
reset_application_mode: true
|
||||||
|
}
|
||||||
|
use_kitty_protocol: false
|
||||||
|
highlight_resolved_externals: true
|
||||||
render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt.
|
render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt.
|
||||||
|
|
||||||
hooks: {
|
hooks: {
|
||||||
pre_execution: [{ null }] # run before the repl input is run
|
pre_prompt: { null }
|
||||||
|
pre_execution: [{ $env.CMD_COUNT = $env.CMD_COUNT + 1; }] # run before the repl input is run
|
||||||
env_change: {
|
env_change: {
|
||||||
PWD: [{|before, after| null }] # run if the PWD environment is different since the last repl input
|
PWD: [{|before, after| null }] # run if the PWD environment is different since the last repl input
|
||||||
}
|
}
|
||||||
|
@ -304,6 +334,27 @@ $env.config = {
|
||||||
]
|
]
|
||||||
|
|
||||||
keybindings: [
|
keybindings: [
|
||||||
|
################################################################################
|
||||||
|
# Custom keybinds #
|
||||||
|
################################################################################
|
||||||
|
{
|
||||||
|
name: undo_change
|
||||||
|
modifier: control
|
||||||
|
keycode: char_z
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: [
|
||||||
|
{ edit: Clear }
|
||||||
|
{
|
||||||
|
edit: InsertString
|
||||||
|
value: "zellij attach main -c"
|
||||||
|
}
|
||||||
|
{ send: Enter }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Default keybinds #
|
||||||
|
################################################################################
|
||||||
{
|
{
|
||||||
name: completion_menu
|
name: completion_menu
|
||||||
modifier: none
|
modifier: none
|
||||||
|
@ -779,7 +830,7 @@ def start_zellij [] {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
start_zellij
|
# start_zellij
|
||||||
|
|
||||||
def nsp [
|
def nsp [
|
||||||
...programs: string
|
...programs: string
|
||||||
|
@ -787,11 +838,18 @@ def nsp [
|
||||||
nix shell ...($programs | each {|it| $"nixpkgs#($it)" })
|
nix shell ...($programs | each {|it| $"nixpkgs#($it)" })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def nr [
|
||||||
|
program: string
|
||||||
|
] {
|
||||||
|
nix run $"nixpkgs#($program)"
|
||||||
|
}
|
||||||
|
|
||||||
def lcr [
|
def lcr [
|
||||||
file_extension: string
|
file_extension: string
|
||||||
] {
|
] {
|
||||||
ls $"**/*.($file_extension)"
|
ls **/*
|
||||||
| each {|file|
|
| where name ends-with $".($file_extension)"
|
||||||
|
| par-each {|file|
|
||||||
open $file.name
|
open $file.name
|
||||||
| lines --skip-empty
|
| lines --skip-empty
|
||||||
| length }
|
| length }
|
||||||
|
@ -806,15 +864,22 @@ def glog [
|
||||||
| split column "»¦«" commit subject name email date
|
| split column "»¦«" commit subject name email date
|
||||||
}
|
}
|
||||||
|
|
||||||
def ed [
|
def typed [
|
||||||
file: path
|
name: string
|
||||||
...cmdargs: string
|
|
||||||
] {
|
] {
|
||||||
let ext = $file | path parse | get extension;
|
touch $"($name).typ"
|
||||||
match $ext {
|
typst compile $"($name).typ"
|
||||||
"typ" => {|| zellij run --direction down -- typst watch $file ($cmdargs | prepend '--open' | str join ' ') }
|
mprocs --names Editor,Viewer,Notify $"hx '($name).typ'" $"while true; do mupdf-x11 '($name).pdf' && break; done" $"while inotifywait -e modify '($name).pdf' ; do pkill -HUP mupdf; done"
|
||||||
};
|
}
|
||||||
hx $file
|
|
||||||
|
def nev [ unit = day ] {
|
||||||
|
( ( open Docs/dates.csv
|
||||||
|
| update datetime {|it| $it.datetime | into datetime }
|
||||||
|
| first
|
||||||
|
).datetime - (date now)
|
||||||
|
)
|
||||||
|
| into duration
|
||||||
|
| format duration $unit
|
||||||
}
|
}
|
||||||
|
|
||||||
alias gnix = cd ~/nix-configs;
|
alias gnix = cd ~/nix-configs;
|
||||||
|
@ -834,3 +899,11 @@ alias cr = cargo run;
|
||||||
alias cl = cargo clippy;
|
alias cl = cargo clippy;
|
||||||
alias cb = cargo build;
|
alias cb = cargo build;
|
||||||
alias cch = cargo check;
|
alias cch = cargo check;
|
||||||
|
|
||||||
|
alias togglecaps = xdotool key Caps_Lock;
|
||||||
|
alias TOGGLECAPS = togglecaps;
|
||||||
|
|
||||||
|
alias bash = echo $"(ansi red)no, fuck that shit!";
|
||||||
|
alias sh = echo $"(ansi red)no, fuck that shit!";
|
||||||
|
alias zsh = echo $"(ansi red)no, fuck that shit!";
|
||||||
|
alias fish = echo $"(ansi red)no, fuck that shit!";
|
||||||
|
|
54
other/env.nu
54
other/env.nu
|
@ -2,36 +2,18 @@
|
||||||
#
|
#
|
||||||
# version = "0.84.0"
|
# version = "0.84.0"
|
||||||
|
|
||||||
def create_left_prompt [] {
|
source /home/jade/.config/nushell/shell-startup.nu;
|
||||||
mut home = ""
|
$env.STARSHIP_SHELL = "nu";
|
||||||
try {
|
$env.CMD_COUNT = 0;
|
||||||
if $nu.os-info.name == "windows" {
|
|
||||||
$home = $env.USERPROFILE
|
|
||||||
} else {
|
|
||||||
$home = $env.HOME
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let dir = ([
|
|
||||||
($env.PWD | str substring 0..($home | str length) | str replace $home "~"),
|
|
||||||
($env.PWD | str substring ($home | str length)..)
|
|
||||||
] | str join)
|
|
||||||
|
|
||||||
let path_color = (if (is-admin) { ansi red_bold } else { ansi green_bold })
|
|
||||||
let separator_color = (if (is-admin) { ansi light_red_bold } else { ansi light_green_bold })
|
|
||||||
let path_segment = $"($path_color)($dir)"
|
|
||||||
|
|
||||||
$path_segment | str replace --all (char path_sep) $"($separator_color)/($path_color)"
|
|
||||||
}
|
|
||||||
|
|
||||||
def create_right_prompt [] {
|
def create_right_prompt [] {
|
||||||
# create a right prompt in magenta with green separators and am/pm underlined
|
# create a right prompt in magenta with green separators and am/pm underlined
|
||||||
|
|
||||||
let time_segment = ([
|
let time_segment = ([
|
||||||
(ansi reset)
|
(ansi reset)
|
||||||
(ansi magenta)
|
(ansi purple)
|
||||||
(date now | format date '%Y/%m/%d %r')
|
(date now | format date '%Y/%m/%d %R')
|
||||||
] | str join | str replace --regex --all "([/:])" $"(ansi green)${1}(ansi magenta)" |
|
]) | str join;
|
||||||
str replace --regex --all "([AP]M)" $"(ansi magenta_underline)${1}")
|
|
||||||
|
|
||||||
let last_exit_code = if ($env.LAST_EXIT_CODE != 0) {([
|
let last_exit_code = if ($env.LAST_EXIT_CODE != 0) {([
|
||||||
(ansi rb)
|
(ansi rb)
|
||||||
|
@ -43,8 +25,26 @@ def create_right_prompt [] {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Use nushell functions to define your right and left prompt
|
# Use nushell functions to define your right and left prompt
|
||||||
$env.PROMPT_COMMAND = {|| create_left_prompt }
|
$env.PROMPT_COMMAND = {||
|
||||||
# $env.PROMPT_COMMAND_RIGHT = {|| create_right_prompt }
|
starship prompt --cmd-duration $env.CMD_DURATION_MS $'--status=($env.LAST_EXIT_CODE)'
|
||||||
|
| lines
|
||||||
|
| filter { is-not-empty }
|
||||||
|
| update 0 {|item|
|
||||||
|
let len = (term size | get columns) - ($item | ansi strip | str length --grapheme-clusters) - (create_right_prompt | ansi strip | str length --grapheme-clusters);
|
||||||
|
# $item | append (flag $TRANS "-" $len) | str join
|
||||||
|
let deco = if ($env.CMD_COUNT == 0) {
|
||||||
|
flag $TRANS "=" $len
|
||||||
|
} else if ($env.CMD_COUNT | is even) {
|
||||||
|
flag $LESBIAN "-" $len
|
||||||
|
} else {
|
||||||
|
flag $TRANS "-" $len
|
||||||
|
};
|
||||||
|
|
||||||
|
$item | append $deco | str join
|
||||||
|
}
|
||||||
|
| str join "\n"
|
||||||
|
}
|
||||||
|
$env.PROMPT_COMMAND_RIGHT = {|| create_right_prompt }
|
||||||
|
|
||||||
# The prompt indicators are environmental variables that represent
|
# The prompt indicators are environmental variables that represent
|
||||||
# the state of the prompt
|
# the state of the prompt
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
device_name = "AT Translated Set 2 keyboard"
|
|
||||||
|
|
||||||
[[remap]]
|
|
||||||
input = [ "KEY_Y" ]
|
|
||||||
output = [ "KEY_Z" ]
|
|
||||||
|
|
||||||
[[remap]]
|
|
||||||
input = [ "KEY_Z" ]
|
|
||||||
output = [ "KEY_Y" ]
|
|
||||||
|
|
||||||
[[remap]]
|
|
||||||
input = [ "KEY_LEFTALT" ]
|
|
||||||
output = [ "KEY_LEFTMETA" ]
|
|
||||||
|
|
||||||
[[remap]]
|
|
||||||
input = [ "KEY_LEFTMETA" ]
|
|
||||||
output = [ "KEY_LEFTALT" ]
|
|
||||||
|
|
||||||
[[dual_role]]
|
|
||||||
input = "KEY_CAPSLOCK"
|
|
||||||
hold = ["KEY_LEFTCTRL"]
|
|
||||||
tap = ["KEY_ESC"]
|
|
68
other/scripts/desktop/shell-startup.nu
Normal file
68
other/scripts/desktop/shell-startup.nu
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
def "is even" [] {
|
||||||
|
$in mod 2 == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# TODO: flag stuff as module to be used in other stuff in shell
|
||||||
|
|
||||||
|
const TRANS = [ 5BCEFA F5A9B8 FFFFFF F5A9B8 5BCEFA ];
|
||||||
|
const LESBIAN = [ D52D00 EF7627 FF9A56 FFFFFF D162A4 B55690 A30262 ];
|
||||||
|
const ENBY = [ FCF434 FFFFFF 9C59D1 2C2C2C ];
|
||||||
|
|
||||||
|
def flag [
|
||||||
|
colors: list<string>
|
||||||
|
character = "="
|
||||||
|
width = -1,
|
||||||
|
] {
|
||||||
|
use std;
|
||||||
|
|
||||||
|
let out_size = if ($width == -1) {
|
||||||
|
term size | get columns
|
||||||
|
} else { $width };
|
||||||
|
|
||||||
|
let col_size = $out_size / ($colors | length) | math floor;
|
||||||
|
mut rest = $out_size - ($col_size * ($colors | length));
|
||||||
|
|
||||||
|
mut cols = $colors | wrap color | insert width $col_size | flatten;
|
||||||
|
let last = ($colors | length) - 1;
|
||||||
|
|
||||||
|
if not ($rest | is even) {
|
||||||
|
$rest = $rest - 1;
|
||||||
|
|
||||||
|
$cols = (if not ($colors | length | is even) {
|
||||||
|
$cols | update (($colors | length) / 2 | math floor) { $in | update width {|w| ($w.width + 1)}}
|
||||||
|
} else {
|
||||||
|
$cols | update $last { $in | update width {|w| ($w.width + 1)}}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
std assert ($rest | is even);
|
||||||
|
|
||||||
|
let amount = $rest / 2;
|
||||||
|
|
||||||
|
$cols = ($cols | update 0 { $in | update width {|w| ($w.width + $amount) } } | update $last { $in | update width {|w| ($w.width + $amount) } });
|
||||||
|
|
||||||
|
$cols | each {|col|
|
||||||
|
$character | std repeat $col.width | prepend (ansi {fg: $"#($col.color)" }) | str join
|
||||||
|
} | prepend (ansi attr_bold) | append (ansi reset) | str join
|
||||||
|
}
|
||||||
|
|
||||||
|
def main [] {
|
||||||
|
print (flag $LESBIAN);
|
||||||
|
let next_events = open ~/Docs/dates.csv
|
||||||
|
| update datetime {|ev| $ev.datetime | into datetime }
|
||||||
|
| sort-by datetime
|
||||||
|
| filter {|ev| ($ev.datetime > (date now))}
|
||||||
|
| first
|
||||||
|
| each {|ev| $"(ansi attr_bold)($ev.event)(ansi reset) in (ansi attr_bold)(tfmt ($ev.datetime - (date now)))s(ansi reset)" };
|
||||||
|
print $"Hi jade, you're on HRT for (ansi reset)(ansi attr_bold)((date now) - ('2024-02-18T20:53' | into datetime) | format duration month)s(ansi reset) now! | Next Event: ($next_events)";
|
||||||
|
}
|
||||||
|
|
||||||
|
def tfmt [dur: duration] {
|
||||||
|
if ($dur < 1hr) {
|
||||||
|
return ($dur | format duration min);
|
||||||
|
} else if ($dur < 1day) {
|
||||||
|
return ($dur | format duration hr);
|
||||||
|
} else {
|
||||||
|
return ($dur | format duration day);
|
||||||
|
}
|
||||||
|
}
|
|
@ -14,6 +14,8 @@ def main [
|
||||||
systemd-cat echo $"($currentnet) \(($interface)): ($type)";
|
systemd-cat echo $"($currentnet) \(($interface)): ($type)";
|
||||||
|
|
||||||
if $interface starts-with 'wlp' {
|
if $interface starts-with 'wlp' {
|
||||||
^$"/etc/networkhooks/($currentnet).nu" $interface $type
|
let p = $"/etc/networkhooks/($currentnet).nu";
|
||||||
|
systemd-cat echo $p;
|
||||||
|
^$p $interface $type
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
6
programs/bar-pinger/Cargo.toml
Normal file
6
programs/bar-pinger/Cargo.toml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[package]
|
||||||
|
name = "bar-pinger"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
5
programs/bar-pinger/src/main.rs
Normal file
5
programs/bar-pinger/src/main.rs
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
// const ADDRS: [&str] = ["katzen.cafe", "fucktorio.s10e.de", "9.9.9.9"];
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
// let pingers = ADDRS.iter.map(|addr| Command::new("ping").args([addr]));
|
||||||
|
}
|
9
programs/bar-ws-monitor/Cargo.toml
Normal file
9
programs/bar-ws-monitor/Cargo.toml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
[package]
|
||||||
|
name = "bar-ws-monitor"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
serde = { version = "1.0.209", features = [ "derive" ] }
|
||||||
|
serde_json = "1.0.127"
|
||||||
|
swayipc = "3.0.2"
|
53
programs/bar-ws-monitor/src/main.rs
Normal file
53
programs/bar-ws-monitor/src/main.rs
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
use core::panic;
|
||||||
|
|
||||||
|
use serde::Serialize;
|
||||||
|
use swayipc::{Connection, Event, EventType, Fallible, Workspace, WorkspaceChange};
|
||||||
|
|
||||||
|
fn main() -> Fallible<()> {
|
||||||
|
let mut con = Connection::new()?;
|
||||||
|
let mut workspaces: Vec<WsData> = con
|
||||||
|
.get_workspaces()?
|
||||||
|
.into_iter()
|
||||||
|
.map(|ws| ws.into())
|
||||||
|
.collect();
|
||||||
|
println!("{}", serde_json::ser::to_string(&workspaces).unwrap());
|
||||||
|
|
||||||
|
for ev in con.subscribe([EventType::Workspace])? {
|
||||||
|
// the lazy/ugly solution!
|
||||||
|
// we create a new connection and request workspaces again and again and again
|
||||||
|
// TODO: properly handle events one by one
|
||||||
|
let mut con = Connection::new()?;
|
||||||
|
workspaces = con
|
||||||
|
.get_workspaces()?
|
||||||
|
.into_iter()
|
||||||
|
.map(|ws| ws.into())
|
||||||
|
.collect();
|
||||||
|
println!("{}", serde_json::ser::to_string(&workspaces).unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize)]
|
||||||
|
struct WsData {
|
||||||
|
name: String,
|
||||||
|
focused: bool,
|
||||||
|
urgent: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<Workspace> for WsData {
|
||||||
|
fn from(
|
||||||
|
Workspace {
|
||||||
|
name,
|
||||||
|
focused,
|
||||||
|
urgent,
|
||||||
|
..
|
||||||
|
}: Workspace,
|
||||||
|
) -> Self {
|
||||||
|
WsData {
|
||||||
|
name,
|
||||||
|
focused,
|
||||||
|
urgent,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
1041
programs/jrnl/Cargo.lock
generated
Normal file
1041
programs/jrnl/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
18
programs/jrnl/Cargo.toml
Normal file
18
programs/jrnl/Cargo.toml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
[package]
|
||||||
|
name = "j"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
chrono = "0.4.38"
|
||||||
|
clap = { version = "4.5.4", features = ["derive", "env"] }
|
||||||
|
dirs = "5.0.1"
|
||||||
|
ego-tree = "0.6.2"
|
||||||
|
indexmap = "2.2.6"
|
||||||
|
markdown = "0.3.0"
|
||||||
|
owo-colors = "4.0.0"
|
||||||
|
petgraph = "0.6.4"
|
||||||
|
ratatui = "0.26.2"
|
||||||
|
temp-file = "0.1.8"
|
||||||
|
termsize = "0.1.9"
|
||||||
|
inquire = "0.7.5"
|
2
programs/jrnl/src/commands.rs
Normal file
2
programs/jrnl/src/commands.rs
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
pub mod add_entry;
|
||||||
|
pub mod list_entries;
|
60
programs/jrnl/src/commands/add_entry.rs
Normal file
60
programs/jrnl/src/commands/add_entry.rs
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
use std::{
|
||||||
|
env,
|
||||||
|
fs::{self, OpenOptions},
|
||||||
|
io::{self, Write},
|
||||||
|
path::PathBuf,
|
||||||
|
process::Command,
|
||||||
|
};
|
||||||
|
|
||||||
|
use inquire::Text;
|
||||||
|
use temp_file::{TempFile, TempFileBuilder};
|
||||||
|
|
||||||
|
use crate::md::{Entry, ToMd};
|
||||||
|
|
||||||
|
// TODO: the usual (better error handling)
|
||||||
|
pub fn add_entry(path: PathBuf, title: Option<String>) -> io::Result<()> {
|
||||||
|
if !path.exists() {
|
||||||
|
eprintln!("Journal file does not exist at {path:?}, exiting...");
|
||||||
|
std::process::exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
let title = Text::new("Title").prompt().unwrap();
|
||||||
|
|
||||||
|
let tmp = TempFileBuilder::new()
|
||||||
|
.suffix(".jrnl-entry.md")
|
||||||
|
.build()
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let editor = match env::var("EDITOR") {
|
||||||
|
Ok(val) => val,
|
||||||
|
Err(env::VarError::NotPresent) => {
|
||||||
|
eprintln!("EDITOR not set, exiting...");
|
||||||
|
std::process::exit(1);
|
||||||
|
}
|
||||||
|
_ => unreachable!(),
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut editor_cmd = Command::new(&editor);
|
||||||
|
editor_cmd.arg(tmp.path());
|
||||||
|
editor_cmd.status().unwrap();
|
||||||
|
|
||||||
|
let content = fs::read_to_string(tmp.path()).unwrap();
|
||||||
|
|
||||||
|
let now = chrono::offset::Local::now();
|
||||||
|
|
||||||
|
let entry = Entry {
|
||||||
|
timestamp: now.fixed_offset(),
|
||||||
|
title: &title,
|
||||||
|
content: &content,
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut file = OpenOptions::new()
|
||||||
|
.write(true)
|
||||||
|
.append(true)
|
||||||
|
.open(path)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
write!(file, "{}", entry.to_md())?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
31
programs/jrnl/src/commands/list_entries.rs
Normal file
31
programs/jrnl/src/commands/list_entries.rs
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
use owo_colors::OwoColorize;
|
||||||
|
use std::{fs, io, path::PathBuf};
|
||||||
|
|
||||||
|
use crate::md::Doc;
|
||||||
|
|
||||||
|
pub fn list_entries(path: PathBuf) -> io::Result<()> {
|
||||||
|
let file = fs::read_to_string(path)?;
|
||||||
|
|
||||||
|
if let Some(doc) = Doc::new(&file) {
|
||||||
|
// TODO: testing, so this shit doesn't blow the fuck up in our face anymore
|
||||||
|
let termsize::Size { cols, .. } = termsize::get().unwrap();
|
||||||
|
assert!(cols > 0, "we don't have a terminal width.");
|
||||||
|
|
||||||
|
for (i, entry) in doc.entries.into_iter().enumerate() {
|
||||||
|
let n = format!("{:>2}", i + 1);
|
||||||
|
let r = format!(". {}", entry.title,);
|
||||||
|
let l = format!(" {} ", crate::utils::format_datetime(entry.timestamp));
|
||||||
|
|
||||||
|
let fuck_you_debugging = cols as usize - (n.len() + r.chars().count() + l.len());
|
||||||
|
dbg!(fuck_you_debugging);
|
||||||
|
let padding = " ".repeat(fuck_you_debugging);
|
||||||
|
|
||||||
|
println!("{}{r}{padding}{}", n.cyan(), l.white())
|
||||||
|
}
|
||||||
|
println!("d");
|
||||||
|
Ok(())
|
||||||
|
} else {
|
||||||
|
eprintln!("Parsing error...");
|
||||||
|
std::process::exit(1);
|
||||||
|
}
|
||||||
|
}
|
47
programs/jrnl/src/main.rs
Normal file
47
programs/jrnl/src/main.rs
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
use clap::{Parser, Subcommand};
|
||||||
|
use std::{fs, io, path::PathBuf};
|
||||||
|
|
||||||
|
use crate::{
|
||||||
|
commands::add_entry::add_entry,
|
||||||
|
commands::list_entries::list_entries,
|
||||||
|
md::{Doc, ToMd},
|
||||||
|
};
|
||||||
|
|
||||||
|
mod commands;
|
||||||
|
mod md;
|
||||||
|
mod utils;
|
||||||
|
|
||||||
|
#[derive(Debug, Parser)]
|
||||||
|
struct Cli {
|
||||||
|
#[arg(env)]
|
||||||
|
s10e_jrnl_file_loc: PathBuf,
|
||||||
|
#[command(subcommand)]
|
||||||
|
command: Option<Command>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Subcommand)]
|
||||||
|
enum Command {
|
||||||
|
#[command(aliases = ["l", "ls", "list"])]
|
||||||
|
ListEntries,
|
||||||
|
#[command(aliases = ["a", "add-entry"])]
|
||||||
|
Add { title: Option<String> },
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> io::Result<()> {
|
||||||
|
let cli = Cli::parse();
|
||||||
|
println!("Hello, world!");
|
||||||
|
println!("cli: {cli:#?}");
|
||||||
|
|
||||||
|
match cli.command {
|
||||||
|
Some(Command::ListEntries) => list_entries(cli.s10e_jrnl_file_loc.clone()),
|
||||||
|
Some(Command::Add { title }) => add_entry(cli.s10e_jrnl_file_loc.clone(), title),
|
||||||
|
None => {
|
||||||
|
// TODO: handle btter
|
||||||
|
let file = fs::read_to_string(cli.s10e_jrnl_file_loc)?;
|
||||||
|
|
||||||
|
let doc = Doc::new(&file).unwrap();
|
||||||
|
println!("{}", doc.to_md());
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
67
programs/jrnl/src/md.rs
Normal file
67
programs/jrnl/src/md.rs
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
use chrono::{DateTime, FixedOffset};
|
||||||
|
use std::convert::identity;
|
||||||
|
|
||||||
|
pub trait ToMd {
|
||||||
|
fn to_md(&self) -> String;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct Doc<'src> {
|
||||||
|
pub entries: Vec<Entry<'src>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'src> Doc<'src> {
|
||||||
|
// TODO: better parsing errors?
|
||||||
|
pub fn new(f: &'src str) -> Option<Self> {
|
||||||
|
let entries = f
|
||||||
|
.split("\n## ")
|
||||||
|
.map(|s| s.split_once("\n"))
|
||||||
|
.skip(1)
|
||||||
|
.filter_map(identity)
|
||||||
|
.map(|(title, content)| (title.split_once(": "), content))
|
||||||
|
.map(|(title, content)| {
|
||||||
|
if let Some((ts, title)) = title {
|
||||||
|
Some(Entry {
|
||||||
|
timestamp: DateTime::parse_from_rfc3339(ts).unwrap(),
|
||||||
|
title,
|
||||||
|
content: content.trim_matches('\n'),
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
entries.iter().all(|it| it.is_some()).then_some(Self {
|
||||||
|
entries: entries.into_iter().filter_map(identity).collect(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ToMd for Doc<'_> {
|
||||||
|
fn to_md(&self) -> String {
|
||||||
|
let mut r = "# Journal\n\n".to_owned();
|
||||||
|
|
||||||
|
self.entries.iter().fold(r, |mut r, it| r + &it.to_md())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct Entry<'src> {
|
||||||
|
pub timestamp: DateTime<FixedOffset>,
|
||||||
|
pub title: &'src str,
|
||||||
|
pub content: &'src str,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ToMd for Entry<'_> {
|
||||||
|
fn to_md(&self) -> String {
|
||||||
|
format!(
|
||||||
|
"## {}: {}\n\n{}\n\n",
|
||||||
|
self.timestamp
|
||||||
|
.fixed_offset()
|
||||||
|
.to_rfc3339_opts(chrono::SecondsFormat::Secs, false),
|
||||||
|
self.title,
|
||||||
|
self.content
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
15
programs/jrnl/src/utils.rs
Normal file
15
programs/jrnl/src/utils.rs
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
use chrono::{DateTime, FixedOffset};
|
||||||
|
|
||||||
|
pub fn format_datetime(ts: DateTime<FixedOffset>) -> String {
|
||||||
|
ts.format("%A, %-d. %B %Y %R").to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn format_datetime_padded(ts: DateTime<FixedOffset>) -> String {
|
||||||
|
format!(
|
||||||
|
"{:>9}{}{:<9}{}",
|
||||||
|
ts.format("%A, "),
|
||||||
|
ts.format("%d. "),
|
||||||
|
ts.format("%B"),
|
||||||
|
ts.format(" %Y %R"),
|
||||||
|
)
|
||||||
|
}
|
14
programs/traveldings/Cargo.toml
Normal file
14
programs/traveldings/Cargo.toml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[package]
|
||||||
|
name = "traveldings"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
serde = { version = "1.0.209", features = ["derive"] }
|
||||||
|
serde_json = "1.0.128"
|
||||||
|
reqwest = {version = "0.12.7", default-features = false, features = ["rustls-tls", "charset", "http2"]}
|
||||||
|
tokio = { version = "1", features = ["full"] }
|
||||||
|
thiserror = "1"
|
||||||
|
anyhow = "1"
|
||||||
|
chrono = { version = "0.4", features = ["serde"]}
|
||||||
|
clap = { version = "4.5", features = ["derive"]}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue