Compare commits
22 commits
5a98adcd27
...
3f9c277f59
Author | SHA1 | Date | |
---|---|---|---|
3f9c277f59 | |||
e4bb82ed2c | |||
92021ffa68 | |||
b1455e4e8f | |||
161ae2fca5 | |||
22609fe783 | |||
94892bcb60 | |||
f040817d65 | |||
e3b7434527 | |||
9124554102 | |||
ed25b5f4e6 | |||
311aa76294 | |||
0044bdcfce | |||
d43ab37bcc | |||
ed3223fc35 | |||
00b342b35b | |||
ba9f2cccee | |||
22f0eebd0b | |||
36f45eeca3 | |||
2c5e2e7f36 | |||
d5096d4407 | |||
97552d0e25 |
50 changed files with 1025 additions and 780 deletions
|
@ -49,27 +49,42 @@
|
||||||
stable = nixpkgs "stable";
|
stable = nixpkgs "stable";
|
||||||
unstable = nixpkgs "unstable";
|
unstable = nixpkgs "unstable";
|
||||||
master = nixpkgs "master";
|
master = nixpkgs "master";
|
||||||
dcsunset = nixpkgs "dcsunset";
|
|
||||||
#// local = nixpkgs "local";
|
|
||||||
in {
|
in {
|
||||||
# Overlay nixpkgs branches
|
# Overlay nixpkgs branches
|
||||||
#?? nixpkgs.BRANCH.PACKAGE
|
#?? nixpkgs.BRANCH.PACKAGE
|
||||||
inherit stable unstable master;
|
inherit stable unstable master;
|
||||||
|
|
||||||
### Packages
|
### Packages
|
||||||
# BUG: Build tests often fail on unstable
|
# BUG: Build failure, remove when in unstable
|
||||||
# https://github.com/NixOS/nixpkgs/issues/333946
|
# https://github.com/NixOS/nixpkgs/issues/380227
|
||||||
fprintd = stable.fprintd;
|
# https://github.com/NixOS/nixpkgs/pull/378937
|
||||||
|
bitwarden-cli = stable.bitwarden-cli;
|
||||||
# TODO: Remove when on unstable
|
|
||||||
# https://github.com/NixOS/nixpkgs/pull/369808
|
|
||||||
freerdp3 = dcsunset.freerdp3;
|
|
||||||
|
|
||||||
# TODO: Remove when on stable
|
# TODO: Remove when on stable
|
||||||
ghostty = unstable.ghostty;
|
ghostty = unstable.ghostty;
|
||||||
|
|
||||||
### Development
|
### Python
|
||||||
#// ciscoPacketTracer8 = local.ciscoPacketTracer8;
|
# https://nixos.org/manual/nixpkgs/unstable/#how-to-override-a-python-package-for-all-python-versions-using-extensions
|
||||||
|
#?? PKG = pyprev.PKG.overridePythonAttrs {};
|
||||||
|
pythonPackagesExtensions =
|
||||||
|
prev.pythonPackagesExtensions
|
||||||
|
++ [
|
||||||
|
(pyfinal: pyprev: {
|
||||||
|
# BUG: Build failure, remove when fixed
|
||||||
|
# https://github.com/NixOS/nixpkgs/issues/380413
|
||||||
|
asttokens = pyprev.asttokens.overridePythonAttrs rec {
|
||||||
|
version = "2.4.1";
|
||||||
|
|
||||||
|
src = pyprev.fetchPypi {
|
||||||
|
inherit version;
|
||||||
|
pname = "asttokens";
|
||||||
|
hash = "sha256-sDhpcYuppusCfhNL/fafOKI21oHIPBYNUQdorxElS6A=";
|
||||||
|
};
|
||||||
|
|
||||||
|
propagatedBuildInputs = [pyprev.six];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
|
|
11
flake.in.nix
11
flake.in.nix
|
@ -68,14 +68,10 @@
|
||||||
walker = flake "github:abenz1267/walker?ref=v0.12.8" // unstable "nixpkgs";
|
walker = flake "github:abenz1267/walker?ref=v0.12.8" // unstable "nixpkgs";
|
||||||
|
|
||||||
### Branches
|
### Branches
|
||||||
nixpkgs-dcsunset = flake "github:DCsunset/nixpkgs/update-freerdp3";
|
|
||||||
nixpkgs-master = flake "github:NixOS/nixpkgs/master";
|
nixpkgs-master = flake "github:NixOS/nixpkgs/master";
|
||||||
|
|
||||||
### Development
|
|
||||||
#// nixpkgs-local = flake "git+file:///home/myned/SYNC/dev/repo/nixpkgs";
|
|
||||||
#// hyprland = flake "git+file:///home/myned/SYNC/dev/repo/Hyprland?submodules=1";
|
|
||||||
|
|
||||||
### Source code
|
### Source code
|
||||||
|
cisco-packettracer8 = source "file:///home/myned/SYNC/linux/config/cisco/CiscoPacketTracer822_amd64_signed.deb";
|
||||||
firefox-gnome-theme = source "github:rafaelmardojai/firefox-gnome-theme/v128";
|
firefox-gnome-theme = source "github:rafaelmardojai/firefox-gnome-theme/v128";
|
||||||
lifx-cli = source "github:Rawa/lifx-cli";
|
lifx-cli = source "github:Rawa/lifx-cli";
|
||||||
steamtinkerlaunch = source "github:sonic2kk/steamtinkerlaunch";
|
steamtinkerlaunch = source "github:sonic2kk/steamtinkerlaunch";
|
||||||
|
@ -123,12 +119,17 @@
|
||||||
inputs.arion.nixosModules.arion
|
inputs.arion.nixosModules.arion
|
||||||
inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
inputs.fw-fanctrl.nixosModules.default
|
inputs.fw-fanctrl.nixosModules.default
|
||||||
|
inputs.jovian-nixos.nixosModules.default
|
||||||
inputs.niri-flake.nixosModules.niri
|
inputs.niri-flake.nixosModules.niri
|
||||||
];
|
];
|
||||||
|
|
||||||
# TODO: Use home-manager.sharedModules for all options
|
# TODO: Use home-manager.sharedModules for all options
|
||||||
home-manager.sharedModules = [
|
home-manager.sharedModules = [
|
||||||
inputs."nix-index-database-${branch}".hmModules.nix-index
|
inputs."nix-index-database-${branch}".hmModules.nix-index
|
||||||
|
inputs.ags.homeManagerModules.default
|
||||||
|
inputs.anyrun.homeManagerModules.default
|
||||||
|
inputs.nix-flatpak.homeManagerModules.nix-flatpak
|
||||||
|
inputs.walker.homeManagerModules.default
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
162
flake.lock
generated
162
flake.lock
generated
|
@ -420,6 +420,18 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"cisco-packettracer8": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"narHash": "sha256-mi3jzfL8Bvwf+WE7l4bZgDZuPaIhC823PlMIvMo2ghM=",
|
||||||
|
"type": "file",
|
||||||
|
"url": "file:///home/myned/SYNC/linux/config/cisco/CiscoPacketTracer822_amd64_signed.deb"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "file",
|
||||||
|
"url": "file:///home/myned/SYNC/linux/config/cisco/CiscoPacketTracer822_amd64_signed.deb"
|
||||||
|
}
|
||||||
|
},
|
||||||
"complement": {
|
"complement": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
@ -445,11 +457,11 @@
|
||||||
"onchg": "onchg"
|
"onchg": "onchg"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1732416782,
|
"lastModified": 1738542138,
|
||||||
"narHash": "sha256-evu/J6D79rlQ6oYtKgZxpWvT6ORt0SH573R6IOIS6R0=",
|
"narHash": "sha256-PcNuxeBysocnDBMK8WwufYP5UY492O5465iaOR0ldYQ=",
|
||||||
"owner": "aksiksi",
|
"owner": "aksiksi",
|
||||||
"repo": "compose2nix",
|
"repo": "compose2nix",
|
||||||
"rev": "a81c2e5e485c722e74dce7c8e308c7b0a1381854",
|
"rev": "8941b4f4c1256ea38a85db88e423e53a9104e4d7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -624,11 +636,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738148035,
|
"lastModified": 1738765162,
|
||||||
"narHash": "sha256-KYOATYEwaKysL3HdHdS5kbQMXvzS4iPJzJrML+3TKAo=",
|
"narHash": "sha256-3Z40qHaFScWUCVQrGc4Y+RdoPsh1R/wIh+AN4cTXP0I=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "18d0a984cc2bc82cf61df19523a34ad463aa7f54",
|
"rev": "ff3568858c54bd306e9e1f2886f0f781df307dff",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -857,11 +869,11 @@
|
||||||
"flake-compat_7": {
|
"flake-compat_7": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1696426674,
|
"lastModified": 1733328505,
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -1225,11 +1237,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1724704488,
|
"lastModified": 1738441377,
|
||||||
"narHash": "sha256-QmAanotjk81zsCwHI52XS4u9Cjv6KjNzTkYsAYFrubM=",
|
"narHash": "sha256-5+CDb9ed+nV81aPPPuco1shoIPGolzfFEhaKDbYA4js=",
|
||||||
"owner": "TamtamHero",
|
"owner": "TamtamHero",
|
||||||
"repo": "fw-fanctrl",
|
"repo": "fw-fanctrl",
|
||||||
"rev": "db96c5962cff24f4c5977e30ca1c7626fb4171c7",
|
"rev": "c7943533476994ab43fcf54496490cba20320131",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -1513,11 +1525,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738275749,
|
"lastModified": 1739044880,
|
||||||
"narHash": "sha256-PM+cGduJ05EZ+YXulqAwUFjvfKpPmW080mcuN6R1POw=",
|
"narHash": "sha256-l+bzq9rsBIQQnBtGayJeOS30L53+mYPjgfQALi20XDg=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "a8159195bfaef3c64df75d3b1e6a68d49d392be9",
|
"rev": "bf9a1a068919ccdfa7d130873936c5fd4c826e85",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -1556,11 +1568,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736785676,
|
"lastModified": 1737630279,
|
||||||
"narHash": "sha256-TY0jUwR3EW0fnS0X5wXMAVy6h4Z7Y6a3m+Yq++C9AyE=",
|
"narHash": "sha256-wJQCxyMRc4P26zDrHmZiRD5bbfcJpqPG3e2djdGG3pk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "fc52a210b60f2f52c74eac41a8647c1573d2071d",
|
"rev": "0db5c8bfcce78583ebbde0b2abbc95ad93445f7c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -1748,11 +1760,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738193118,
|
"lastModified": 1738966025,
|
||||||
"narHash": "sha256-Oix7MLyos1ED1TaHYIvm4heHrVpf8o1Xz3jcXm1/ke4=",
|
"narHash": "sha256-MzgrF0jKlTNnNS33D8PwI5z2MJ1Tzf5MQVf/oms2pdw=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprland-plugins",
|
"repo": "hyprland-plugins",
|
||||||
"rev": "ae38ea6ee4938c74012c12072358c17e41254bed",
|
"rev": "4f48dbe12f3cbbeb4d31c91c67b21edbc5b4b451",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -1939,11 +1951,11 @@
|
||||||
"systems": "systems_9"
|
"systems": "systems_9"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738234997,
|
"lastModified": 1738841768,
|
||||||
"narHash": "sha256-sDPLb1DPxz41FMotLZzlshN2jRoKZtscqY73mL/OH6I=",
|
"narHash": "sha256-T3fWbhR7mciPIh1Vd3zyigPJlgA2eGQPkSbm5v8M/xI=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprlock",
|
"repo": "hyprlock",
|
||||||
"rev": "c976b6a1d135d3743556dc225c80e24918ef1fd5",
|
"rev": "dc6d72158c22d802845679e783231061b717ffd1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -2258,11 +2270,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1737617533,
|
"lastModified": 1738875499,
|
||||||
"narHash": "sha256-9hHaUxeRDZ5PTk7TqBbHPAjgKuBl67asaMdyehYLqFs=",
|
"narHash": "sha256-P3VbO2IkEW+0d0pJU7CuX8e+obSoiDw/YCVL1mnA26w=",
|
||||||
"owner": "Jovian-Experiments",
|
"owner": "Jovian-Experiments",
|
||||||
"repo": "Jovian-NixOS",
|
"repo": "Jovian-NixOS",
|
||||||
"rev": "2dd65c3c92a4b8b1bf653657ae8648b883a4d427",
|
"rev": "4642ec1073a7417e6303484d8f2e7d29dc24a50f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -2313,11 +2325,11 @@
|
||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738246636,
|
"lastModified": 1738911818,
|
||||||
"narHash": "sha256-01BwBqPiv0G9bx2oe2kyj1voSQJtc1nx+EWJZ1ZOirg=",
|
"narHash": "sha256-7bhr9ldHrNP71qOmKI1Hu80uclx+Tco0RNmO+GKtC1Y=",
|
||||||
"owner": "YaLTeR",
|
"owner": "YaLTeR",
|
||||||
"repo": "niri",
|
"repo": "niri",
|
||||||
"rev": "a169e0335d2773edd31a1959a3ff4fca994a422a",
|
"rev": "397e704d644d1bfe7736f2fdacbfe5742c7b2f9f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -2338,11 +2350,11 @@
|
||||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738250870,
|
"lastModified": 1739042449,
|
||||||
"narHash": "sha256-qltcY/f8wyiWypiaSRFexcSn6pFFLm/4hVRzp1SjSZs=",
|
"narHash": "sha256-9zLFUpEebwhjCgtznsI61gTzefI3+fuXATHUOFzJi5w=",
|
||||||
"owner": "sodiboo",
|
"owner": "sodiboo",
|
||||||
"repo": "niri-flake",
|
"repo": "niri-flake",
|
||||||
"rev": "b51c659095903148afa150988a50bbbb3d8b749b",
|
"rev": "98e3666a9dc4143cbf93d957a15d749b5acef046",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -2371,11 +2383,11 @@
|
||||||
"niri-unstable": {
|
"niri-unstable": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738246636,
|
"lastModified": 1738911818,
|
||||||
"narHash": "sha256-01BwBqPiv0G9bx2oe2kyj1voSQJtc1nx+EWJZ1ZOirg=",
|
"narHash": "sha256-7bhr9ldHrNP71qOmKI1Hu80uclx+Tco0RNmO+GKtC1Y=",
|
||||||
"owner": "YaLTeR",
|
"owner": "YaLTeR",
|
||||||
"repo": "niri",
|
"repo": "niri",
|
||||||
"rev": "a169e0335d2773edd31a1959a3ff4fca994a422a",
|
"rev": "397e704d644d1bfe7736f2fdacbfe5742c7b2f9f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -2574,11 +2586,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1737861961,
|
"lastModified": 1738466368,
|
||||||
"narHash": "sha256-LIRtMvAwLGb8pBoamzgEF67oKlNPz4LuXiRPVZf+TpE=",
|
"narHash": "sha256-PZhUjtvQZOH3PO0EYdTpQvcqkgkq1NkP2A6w9SPHYsk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "79b7b8eae3243fc5aa9aad34ba6b9bbb2266f523",
|
"rev": "46a8f5fc9552b776bfc5c5c96ea3bede33f68f52",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -2594,11 +2606,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1737861961,
|
"lastModified": 1738466368,
|
||||||
"narHash": "sha256-LIRtMvAwLGb8pBoamzgEF67oKlNPz4LuXiRPVZf+TpE=",
|
"narHash": "sha256-PZhUjtvQZOH3PO0EYdTpQvcqkgkq1NkP2A6w9SPHYsk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "79b7b8eae3243fc5aa9aad34ba6b9bbb2266f523",
|
"rev": "46a8f5fc9552b776bfc5c5c96ea3bede33f68f52",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -2639,11 +2651,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738201509,
|
"lastModified": 1738979105,
|
||||||
"narHash": "sha256-gyKBLziqn47BqpELlorHxlQTQxBS2GFQah2KNqh8Uzg=",
|
"narHash": "sha256-7eT0+VL9l112QlhHQ3K7vMFpRktH6mRzkpfXeLQJ/rE=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-vscode-extensions",
|
"repo": "nix-vscode-extensions",
|
||||||
"rev": "1b54a1707f1388b457792736b9903980ab26afaf",
|
"rev": "6457c8c71e998d76799e0a246dd6a2ca13ffe51d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -2693,11 +2705,11 @@
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736910435,
|
"lastModified": 1738432935,
|
||||||
"narHash": "sha256-Zc9+nD0NldxeibfbPJHv1tBF7y9oWkiDczYQvsfBF/w=",
|
"narHash": "sha256-D/r2NaMrO3jeYeTGg6v7fjWyPJ8omLcphCZ5WiM7xPc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixd",
|
"repo": "nixd",
|
||||||
"rev": "2c25600cb9c91bc06fe8676c044814dc30435274",
|
"rev": "06d1c850614d0ea60b4f7e3fd89cca0628c21feb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -2708,11 +2720,11 @@
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1737751639,
|
"lastModified": 1738816619,
|
||||||
"narHash": "sha256-ZEbOJ9iT72iwqXsiEMbEa8wWjyFvRA9Ugx8utmYbpz4=",
|
"narHash": "sha256-5yRlg48XmpcX5b5HesdGMOte+YuCy9rzQkJz+imcu6I=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "dfad538f751a5aa5d4436d9781ab27a6128ec9d4",
|
"rev": "2eccff41bab80839b1d25b303b53d339fbb07087",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -2737,22 +2749,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-dcsunset": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1736806496,
|
|
||||||
"narHash": "sha256-I8PIyd+z6NFu6TTWKpklsNO58NKn8s0Urxwmmh+jGis=",
|
|
||||||
"owner": "DCsunset",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "30ad2116fc0b496a9a7d959a6d858b634b91bf30",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "DCsunset",
|
|
||||||
"ref": "update-freerdp3",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733096140,
|
"lastModified": 1733096140,
|
||||||
|
@ -2767,11 +2763,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-master": {
|
"nixpkgs-master": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738283332,
|
"lastModified": 1739045220,
|
||||||
"narHash": "sha256-xuQxilJvBZ2jySeiZWmD45hTkbX5h9DPuhZ8IO2Uid0=",
|
"narHash": "sha256-vDBwVj7Z/Bu9Lvy8Za24kfvkCXX+J3yuklqqZhkgpGQ=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "4ec4f8b1e9bcbd24497e55b45df961034e6d02e3",
|
"rev": "81b20cbe4e9ba08b296c369e1b1cbe0788fc4a3e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -2863,11 +2859,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-stable_4": {
|
"nixpkgs-stable_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738163270,
|
"lastModified": 1738843498,
|
||||||
"narHash": "sha256-B/7Y1v4y+msFFBW1JAdFjNvVthvNdJKiN6EGRPnqfno=",
|
"narHash": "sha256-7x+Q4xgFj9UxZZO9aUDCR8h4vyYut4zPUvfj3i+jBHE=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "59e618d90c065f55ae48446f307e8c09565d5ab0",
|
"rev": "f5a32fa27df91dfc4b762671a0e0a859a8a0058f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -2879,11 +2875,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-stable_5": {
|
"nixpkgs-stable_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738163270,
|
"lastModified": 1738843498,
|
||||||
"narHash": "sha256-B/7Y1v4y+msFFBW1JAdFjNvVthvNdJKiN6EGRPnqfno=",
|
"narHash": "sha256-7x+Q4xgFj9UxZZO9aUDCR8h4vyYut4zPUvfj3i+jBHE=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "59e618d90c065f55ae48446f307e8c09565d5ab0",
|
"rev": "f5a32fa27df91dfc4b762671a0e0a859a8a0058f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -2895,11 +2891,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738142207,
|
"lastModified": 1739020877,
|
||||||
"narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=",
|
"narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9d3ae807ebd2981d593cddd0080856873139aa40",
|
"rev": "a79cfe0ebd24952b580b1cf08cd906354996d547",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -3040,6 +3036,7 @@
|
||||||
"anyrun": "anyrun",
|
"anyrun": "anyrun",
|
||||||
"arion": "arion",
|
"arion": "arion",
|
||||||
"bitwarden-menu": "bitwarden-menu",
|
"bitwarden-menu": "bitwarden-menu",
|
||||||
|
"cisco-packettracer8": "cisco-packettracer8",
|
||||||
"compose2nix": "compose2nix",
|
"compose2nix": "compose2nix",
|
||||||
"conduwuit": "conduwuit",
|
"conduwuit": "conduwuit",
|
||||||
"disko": "disko",
|
"disko": "disko",
|
||||||
|
@ -3066,7 +3063,6 @@
|
||||||
"nix-vscode-extensions": "nix-vscode-extensions",
|
"nix-vscode-extensions": "nix-vscode-extensions",
|
||||||
"nixd": "nixd",
|
"nixd": "nixd",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs-dcsunset": "nixpkgs-dcsunset",
|
|
||||||
"nixpkgs-master": "nixpkgs-master",
|
"nixpkgs-master": "nixpkgs-master",
|
||||||
"nixpkgs-stable": "nixpkgs-stable_5",
|
"nixpkgs-stable": "nixpkgs-stable_5",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
|
@ -3189,11 +3185,11 @@
|
||||||
"tinted-zed": "tinted-zed"
|
"tinted-zed": "tinted-zed"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738278499,
|
"lastModified": 1739034502,
|
||||||
"narHash": "sha256-q1SUyXSQ9znHTME53/vPLe+Ga3V1wW3X3gWfa8JsBUM=",
|
"narHash": "sha256-A6FBMYEIypFNTRPmLHF2vTGSB85e7skiNvoHJXtFne8=",
|
||||||
"owner": "danth",
|
"owner": "danth",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "b00c9f46ae6c27074d24d2db390f0ac5ebcc329f",
|
"rev": "ff8ce4f3d2ad4d09291fa079c12a523d9b1c6aa6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -30,6 +30,10 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||||
url = "github:firecat53/bitwarden-menu";
|
url = "github:firecat53/bitwarden-menu";
|
||||||
};
|
};
|
||||||
|
cisco-packettracer8 = {
|
||||||
|
flake = false;
|
||||||
|
url = "file:///home/myned/SYNC/linux/config/cisco/CiscoPacketTracer822_amd64_signed.deb";
|
||||||
|
};
|
||||||
compose2nix = {
|
compose2nix = {
|
||||||
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||||
url = "github:aksiksi/compose2nix";
|
url = "github:aksiksi/compose2nix";
|
||||||
|
@ -125,7 +129,6 @@
|
||||||
url = "github:nix-community/nixd";
|
url = "github:nix-community/nixd";
|
||||||
};
|
};
|
||||||
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||||
nixpkgs-dcsunset.url = "github:DCsunset/nixpkgs/update-freerdp3";
|
|
||||||
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
||||||
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-24.11";
|
nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-24.11";
|
||||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.custom.containers.adguardhome;
|
cfg = config.custom.containers.adguardhome;
|
||||||
in {
|
in {
|
||||||
options = {
|
options.custom.containers.adguardhome = {
|
||||||
custom.containers.adguardhome.enable = mkOption {default = false;};
|
enable = mkOption {default = false;};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
|
@ -22,9 +22,10 @@ in {
|
||||||
environment.shellAliases.arion-conduwuit = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.conduwuit.settings.out.dockerComposeYaml}";
|
environment.shellAliases.arion-conduwuit = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.conduwuit.settings.out.dockerComposeYaml}";
|
||||||
|
|
||||||
virtualisation.arion.projects.conduwuit.settings.services = {
|
virtualisation.arion.projects.conduwuit.settings.services = {
|
||||||
|
# https://github.com/girlbossceo/conduwuit
|
||||||
conduwuit.service = {
|
conduwuit.service = {
|
||||||
container_name = "conduwuit";
|
container_name = "conduwuit";
|
||||||
image = "girlbossceo/conduwuit:main";
|
image = "girlbossceo/conduwuit:v0.5.0-rc";
|
||||||
ports = ["127.0.0.1:6167:6167/tcp"];
|
ports = ["127.0.0.1:6167:6167/tcp"];
|
||||||
restart = "unless-stopped";
|
restart = "unless-stopped";
|
||||||
|
|
||||||
|
|
40
options/custom/containers/vaultwarden.nix
Normal file
40
options/custom/containers/vaultwarden.nix
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.custom.containers.vaultwarden;
|
||||||
|
in {
|
||||||
|
options.custom.containers.vaultwarden = {
|
||||||
|
enable = mkOption {default = false;};
|
||||||
|
menu = mkOption {default = true;};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
age.secrets = let
|
||||||
|
secret = filename: {
|
||||||
|
file = "${inputs.self}/secrets/${filename}";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
"${config.custom.profile}/vaultwarden/.env" = secret "${config.custom.profile}/vaultwarden/.env";
|
||||||
|
};
|
||||||
|
|
||||||
|
#?? arion-vaultwarden pull
|
||||||
|
environment.shellAliases.arion-vaultwarden = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.vaultwarden.settings.out.dockerComposeYaml}";
|
||||||
|
|
||||||
|
virtualisation.arion.projects.vaultwarden.settings.services = {
|
||||||
|
# https://github.com/dani-garcia/vaultwarden
|
||||||
|
# https://github.com/dani-garcia/vaultwarden/wiki
|
||||||
|
vaultwarden.service = {
|
||||||
|
container_name = "vaultwarden";
|
||||||
|
env_file = [config.age.secrets."${config.custom.profile}/vaultwarden/.env".path];
|
||||||
|
image = "vaultwarden/server:1.33.1";
|
||||||
|
ports = ["8008:80"];
|
||||||
|
restart = "unless-stopped";
|
||||||
|
volumes = ["${config.custom.containers.directory}/vaultwarden/data:/data"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -29,10 +29,7 @@ in {
|
||||||
ultrawide = mkOption {default = cfg.width * 9 / 16 > cfg.height;}; # Wider than 16:9
|
ultrawide = mkOption {default = cfg.width * 9 / 16 > cfg.height;}; # Wider than 16:9
|
||||||
hidpi = mkOption {default = cfg.scale > 1;};
|
hidpi = mkOption {default = cfg.scale > 1;};
|
||||||
scale = mkOption {default = 1;};
|
scale = mkOption {default = 1;};
|
||||||
|
|
||||||
# TODO: Use option for border size
|
|
||||||
border = mkOption {default = 2;};
|
border = mkOption {default = 2;};
|
||||||
|
|
||||||
gap = mkOption {default = 20;};
|
gap = mkOption {default = 20;};
|
||||||
padding = mkOption {default = 51;}; # ?? journalctl --user -u waybar.service | grep height:
|
padding = mkOption {default = 51;}; # ?? journalctl --user -u waybar.service | grep height:
|
||||||
rounding = mkOption {default = 15;};
|
rounding = mkOption {default = 15;};
|
||||||
|
@ -46,6 +43,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
lockscreen = mkOption {default = "hyprlock";};
|
lockscreen = mkOption {default = "hyprlock";};
|
||||||
|
menu = mkOption {default = "rofi";};
|
||||||
wallpaper = mkOption {default = false;};
|
wallpaper = mkOption {default = false;};
|
||||||
|
|
||||||
browser = {
|
browser = {
|
||||||
|
|
|
@ -10,6 +10,7 @@ with lib; let
|
||||||
|
|
||||||
audio = config.home-manager.users.${config.custom.username}.home.file.".local/bin/audio".source;
|
audio = config.home-manager.users.${config.custom.username}.home.file.".local/bin/audio".source;
|
||||||
bash = "${pkgs.bash}/bin/bash";
|
bash = "${pkgs.bash}/bin/bash";
|
||||||
|
bitwarden = "${pkgs.bitwarden-desktop}/bin/bitwarden";
|
||||||
cat = "${pkgs.coreutils}/bin/cat";
|
cat = "${pkgs.coreutils}/bin/cat";
|
||||||
codium = "${config.home-manager.users.${config.custom.username}.programs.vscode.package}/bin/codium";
|
codium = "${config.home-manager.users.${config.custom.username}.programs.vscode.package}/bin/codium";
|
||||||
ghostty = "${hm.programs.ghostty.package}/bin/ghostty";
|
ghostty = "${hm.programs.ghostty.package}/bin/ghostty";
|
||||||
|
@ -29,13 +30,10 @@ with lib; let
|
||||||
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
||||||
power = config.home-manager.users.${config.custom.username}.home.file.".local/bin/power".source;
|
power = config.home-manager.users.${config.custom.username}.home.file.".local/bin/power".source;
|
||||||
remote = config.home-manager.users.${config.custom.username}.home.file.".local/bin/remote".source;
|
remote = config.home-manager.users.${config.custom.username}.home.file.".local/bin/remote".source;
|
||||||
rm = "${pkgs.coreutils}/bin/rm";
|
|
||||||
steam = "${config.programs.steam.package}/bin/steam";
|
steam = "${config.programs.steam.package}/bin/steam";
|
||||||
swayosd-client = "${pkgs.swayosd}/bin/swayosd-client";
|
swayosd-client = "${pkgs.swayosd}/bin/swayosd-client";
|
||||||
virt-manager = "${config.programs.virt-manager.package}/bin/virt-manager";
|
virt-manager = "${config.programs.virt-manager.package}/bin/virt-manager";
|
||||||
walker = "${config.home-manager.users.${config.custom.username}.programs.walker.package}/bin/walker";
|
|
||||||
waydroid = "${pkgs.waydroid}/bin/waydroid";
|
waydroid = "${pkgs.waydroid}/bin/waydroid";
|
||||||
_1password = "${config.programs._1password-gui.package}/bin/1password";
|
|
||||||
youtube-music = "${pkgs.youtube-music}/bin/youtube-music";
|
youtube-music = "${pkgs.youtube-music}/bin/youtube-music";
|
||||||
in {
|
in {
|
||||||
options.custom.desktops.niri.binds = {
|
options.custom.desktops.niri.binds = {
|
||||||
|
@ -133,9 +131,9 @@ in {
|
||||||
(key "M" "Mod" (spawn youtube-music))
|
(key "M" "Mod" (spawn youtube-music))
|
||||||
(key "Minus" "Mod" (spawn [swayosd-client "--output-volume" "lower"]))
|
(key "Minus" "Mod" (spawn [swayosd-client "--output-volume" "lower"]))
|
||||||
(key "O" "Mod" (spawn [loupe "/tmp/wallpaper.png"]))
|
(key "O" "Mod" (spawn [loupe "/tmp/wallpaper.png"]))
|
||||||
(key "P" "Ctrl+Alt" (spawn [pkill "1password"]))
|
(key "P" "Ctrl+Alt" (spawn [pkill "bitwarden"]))
|
||||||
(key "P" "Mod" (spawn _1password))
|
(key "P" "Mod" (spawn [bash "-c" config.custom.menus.vault.show]))
|
||||||
(key "P" "Mod+Shift" (spawn [_1password "--quick-access"]))
|
(key "P" "Mod+Shift" (spawn bitwarden))
|
||||||
(key "Q" "Mod" close-window)
|
(key "Q" "Mod" close-window)
|
||||||
(key "R" "Mod" focus-window-or-workspace-down)
|
(key "R" "Mod" focus-window-or-workspace-down)
|
||||||
(key "R" "Mod+Shift" move-window-down-or-to-workspace-down)
|
(key "R" "Mod+Shift" move-window-down-or-to-workspace-down)
|
||||||
|
@ -154,9 +152,9 @@ in {
|
||||||
(key "T" "Mod" (spawn ghostty))
|
(key "T" "Mod" (spawn ghostty))
|
||||||
(key "Tab" "Mod" switch-focus-between-floating-and-tiling)
|
(key "Tab" "Mod" switch-focus-between-floating-and-tiling)
|
||||||
(key "Up" "Mod" (spawn [swayosd-client "--brightness" "raise"]))
|
(key "Up" "Mod" (spawn [swayosd-client "--brightness" "raise"]))
|
||||||
(key "V" "Mod" (spawn [walker "--modules" "clipboard"]))
|
(key "V" "Mod" (spawn [bash "-c" config.custom.menus.clipboard.show]))
|
||||||
(key "V" "Mod+Ctrl" (spawn vm))
|
(key "V" "Mod+Ctrl" (spawn vm))
|
||||||
(key "V" "Mod+Shift" (spawn [bash "-c" "${rm} ~/.cache/walker/clipboard.gob && ${notify-send} menu 'Clipboard cleared' --urgency low"]))
|
(key "V" "Mod+Shift" (spawn [bash "-c" config.custom.menus.clipboard.clear]))
|
||||||
(key "W" "Mod" focus-window-or-workspace-up)
|
(key "W" "Mod" focus-window-or-workspace-up)
|
||||||
(key "W" "Mod+Shift" move-window-up-or-to-workspace-up)
|
(key "W" "Mod+Shift" move-window-up-or-to-workspace-up)
|
||||||
(key "WheelScrollDown" "Mod" focus-window-or-workspace-down)
|
(key "WheelScrollDown" "Mod" focus-window-or-workspace-down)
|
||||||
|
@ -181,9 +179,9 @@ in {
|
||||||
# TODO: Uncomment when fixed
|
# TODO: Uncomment when fixed
|
||||||
#// (key "Shift_L" "Mod" focus-workspace-previous)
|
#// (key "Shift_L" "Mod" focus-workspace-previous)
|
||||||
# TODO: Use "Super_L" when fixed
|
# TODO: Use "Super_L" when fixed
|
||||||
(key "Space" "Mod" (spawn walker))
|
(key "Space" "Mod" (spawn [bash "-c" config.custom.menus.show]))
|
||||||
(key "Space" "Mod+Ctrl+Shift" (spawn networkmanager_dmenu))
|
(key "Space" "Mod+Ctrl+Shift" (spawn networkmanager_dmenu))
|
||||||
(key "Space" "Mod+Shift" (spawn [walker "--modules" "search"]))
|
(key "Space" "Mod+Shift" (spawn [bash "-c" config.custom.menus.search.show]))
|
||||||
|
|
||||||
# Media keys
|
# Media keys
|
||||||
# https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-keysyms.h
|
# https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-keysyms.h
|
||||||
|
|
|
@ -38,9 +38,6 @@ in {
|
||||||
services = {
|
services = {
|
||||||
# Enable rootless Xwayland
|
# Enable rootless Xwayland
|
||||||
xwayland-satellite.enable = cfg.xwayland;
|
xwayland-satellite.enable = cfg.xwayland;
|
||||||
|
|
||||||
# Enable X11/Wayland clipboard sync
|
|
||||||
clipsync.enable = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,8 @@ with lib; let
|
||||||
hm = config.home-manager.users.${config.custom.username};
|
hm = config.home-manager.users.${config.custom.username};
|
||||||
|
|
||||||
audio = config.home-manager.users.${config.custom.username}.home.file.".local/bin/audio".source;
|
audio = config.home-manager.users.${config.custom.username}.home.file.".local/bin/audio".source;
|
||||||
|
bash = "${pkgs.bash}/bin/bash";
|
||||||
niri = "${config.programs.niri.package}/bin/niri";
|
niri = "${config.programs.niri.package}/bin/niri";
|
||||||
rm = "${pkgs.coreutils}/bin/rm";
|
|
||||||
sway-audio-idle-inhibit = "${pkgs.sway-audio-idle-inhibit}/bin/sway-audio-idle-inhibit";
|
sway-audio-idle-inhibit = "${pkgs.sway-audio-idle-inhibit}/bin/sway-audio-idle-inhibit";
|
||||||
wallpaper = "${config.home-manager.users.${config.custom.username}.home.file.".local/bin/wallpaper".source}";
|
wallpaper = "${config.home-manager.users.${config.custom.username}.home.file.".local/bin/wallpaper".source}";
|
||||||
in {
|
in {
|
||||||
|
@ -49,12 +49,10 @@ in {
|
||||||
#!! Not executed in a shell
|
#!! Not executed in a shell
|
||||||
# https://github.com/YaLTeR/niri/wiki/Configuration:-Key-Bindings#spawn
|
# https://github.com/YaLTeR/niri/wiki/Configuration:-Key-Bindings#spawn
|
||||||
# https://github.com/sodiboo/niri-flake/blob/main/docs.md#programsnirisettingsspawn-at-startup
|
# https://github.com/sodiboo/niri-flake/blob/main/docs.md#programsnirisettingsspawn-at-startup
|
||||||
spawn-at-startup = let
|
spawn-at-startup =
|
||||||
home = hm.home.homeDirectory;
|
|
||||||
in
|
|
||||||
[
|
[
|
||||||
{command = [audio "--init"];} # Enforce audio profile state
|
{command = [audio "--init"];} # Enforce audio profile state
|
||||||
{command = [rm "${home}/.cache/walker/clipboard.gob"];} # Clear clipboard history
|
{command = [bash "-c" config.custom.menus.clipboard.clear];} # Clear clipboard history
|
||||||
{command = [sway-audio-idle-inhibit];} # Inhibit while audio is playing
|
{command = [sway-audio-idle-inhibit];} # Inhibit while audio is playing
|
||||||
]
|
]
|
||||||
++ optionals config.custom.wallpaper [
|
++ optionals config.custom.wallpaper [
|
||||||
|
|
|
@ -6,13 +6,11 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.custom.programs.anyrun;
|
cfg = config.custom.menus.anyrun;
|
||||||
in {
|
in {
|
||||||
options.custom.programs.anyrun.enable = mkOption {default = false;};
|
options.custom.menus.anyrun.enable = mkOption {default = false;};
|
||||||
|
|
||||||
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
||||||
imports = [inputs.anyrun.homeManagerModules.default];
|
|
||||||
|
|
||||||
# https://github.com/Kirottu/anyrun
|
# https://github.com/Kirottu/anyrun
|
||||||
programs.anyrun = {
|
programs.anyrun = {
|
||||||
enable = true;
|
enable = true;
|
34
options/custom/menus/default.nix
Normal file
34
options/custom/menus/default.nix
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.custom.menus;
|
||||||
|
in {
|
||||||
|
options.custom.menus = {
|
||||||
|
enable = mkOption {default = config.custom.full;};
|
||||||
|
show = mkOption {default = "";};
|
||||||
|
|
||||||
|
clipboard = {
|
||||||
|
clear = mkOption {default = "";};
|
||||||
|
show = mkOption {default = "";};
|
||||||
|
};
|
||||||
|
|
||||||
|
dmenu.show = mkOption {default = "";};
|
||||||
|
emoji.show = mkOption {default = "";};
|
||||||
|
network.show = mkOption {default = "";};
|
||||||
|
search.show = mkOption {default = "";};
|
||||||
|
vault.show = mkOption {default = "";};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
custom.menus = {
|
||||||
|
anyrun.enable = config.custom.menu == "anyrun";
|
||||||
|
fuzzel.enable = config.custom.menu == "fuzzel";
|
||||||
|
rofi.enable = config.custom.menu == "rofi";
|
||||||
|
walker.enable = config.custom.menu == "walker";
|
||||||
|
wofi.enable = config.custom.menu == "wofi";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -4,9 +4,9 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.custom.programs.fuzzel;
|
cfg = config.custom.menus.fuzzel;
|
||||||
in {
|
in {
|
||||||
options.custom.programs.fuzzel.enable = mkOption {default = false;};
|
options.custom.menus.fuzzel.enable = mkOption {default = false;};
|
||||||
|
|
||||||
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
||||||
# https://codeberg.org/dnkl/fuzzel
|
# https://codeberg.org/dnkl/fuzzel
|
50
options/custom/menus/rofi/clipboard.sh
Normal file
50
options/custom/menus/rofi/clipboard.sh
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
|
TMPDIR=/tmp/cliphist
|
||||||
|
|
||||||
|
# Clean up tmp dir
|
||||||
|
rm -rf "$TMPDIR"
|
||||||
|
|
||||||
|
# TODO: Add keybinds
|
||||||
|
# https://github.com/lbonn/rofi/blob/wayland/doc/rofi-script.5.markdown#environment
|
||||||
|
case "$ROFI_RETV" in
|
||||||
|
# List entries
|
||||||
|
0)
|
||||||
|
mkdir -p "$TMPDIR"
|
||||||
|
|
||||||
|
# Parse over clipboard
|
||||||
|
cliphist list | while read -r line; do
|
||||||
|
# Skip over HTML elements
|
||||||
|
# https://github.com/sentriz/cliphist/commit/95c193604fce7c5ec094ff9bf1c62cc6f5395750
|
||||||
|
if [[ "$line" == *meta\ http-equiv=* ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Isolate index and entry name
|
||||||
|
id="$(cut -f 1 - <<< "$line")"
|
||||||
|
name="$(cut -f 2 - <<< "$line")"
|
||||||
|
|
||||||
|
# Check for image entries
|
||||||
|
if [[ "$line" =~ ^([0-9]+)[[:space:]]+\[\[\ binary.*(jpg|jpeg|png|bmp) ]]; then
|
||||||
|
# Set image extension and icon path
|
||||||
|
extension="${BASH_REMATCH[2]}"
|
||||||
|
icon="$TMPDIR/$id.$extension"
|
||||||
|
|
||||||
|
# Write decoded image to tmp dir
|
||||||
|
if ! [[ -f "$icon" ]]; then
|
||||||
|
cliphist decode "$id" > "$icon"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Pass entry to rofi
|
||||||
|
printf '%s\x0icon\x1f%s\x1finfo\x1f%s\n' "$name" "$icon" "$id"
|
||||||
|
else
|
||||||
|
printf '%s\x0info\x1f%s\n' "$name" "$id"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
# Select entry
|
||||||
|
1)
|
||||||
|
# Decode from env var and copy to clipboard
|
||||||
|
cliphist decode "$ROFI_INFO" | wl-copy
|
||||||
|
;;
|
||||||
|
esac
|
85
options/custom/menus/rofi/custom.rasi
Normal file
85
options/custom/menus/rofi/custom.rasi
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
/***
|
||||||
|
https://github.com/lbonn/rofi/blob/wayland/doc/rofi-theme.5.markdown
|
||||||
|
https://github.com/newmanls/rofi-themes-collection/blob/master/themes/rounded-common.rasi
|
||||||
|
https://github.com/newmanls/rofi-themes-collection/blob/master/themes/rounded-pink-dark.rasi
|
||||||
|
***/
|
||||||
|
|
||||||
|
* {
|
||||||
|
background-color: transparent;
|
||||||
|
font: 'sans-serif 14';
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
spacing: 0;
|
||||||
|
text-color: #93a1a1;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
background-color: #002b36;
|
||||||
|
border-color: #073642;
|
||||||
|
border-radius: 30px;
|
||||||
|
location: north;
|
||||||
|
width: 750;
|
||||||
|
y-offset: calc(50% - 25% / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
mainbox {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
inputbar {
|
||||||
|
background-color: #073642;
|
||||||
|
border-color: #d33682;
|
||||||
|
border-radius: 30px;
|
||||||
|
padding: 8px 8px 8px 4px;
|
||||||
|
spacing: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt {
|
||||||
|
font: 'monospace 16';
|
||||||
|
padding: 4px 4px 4px 8px;
|
||||||
|
text-color: #93a1a1;
|
||||||
|
vertical-align: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
entry {
|
||||||
|
font: 'monospace 18';
|
||||||
|
placeholder-color: #586e7580;
|
||||||
|
vertical-align: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
message {
|
||||||
|
padding: 8px 8px 4px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
textbox {
|
||||||
|
font: 'sans-serif 10';
|
||||||
|
}
|
||||||
|
|
||||||
|
listview {
|
||||||
|
background-color: transparent;
|
||||||
|
columns: 1;
|
||||||
|
fixed-height: false;
|
||||||
|
lines: 5;
|
||||||
|
margin: 4px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
element {
|
||||||
|
border-radius: 30px;
|
||||||
|
padding: 12px;
|
||||||
|
spacing: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected normal,
|
||||||
|
element selected active {
|
||||||
|
background-color: #586e7540;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-icon {
|
||||||
|
size: 32px;
|
||||||
|
vertical-align: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-text {
|
||||||
|
text-color: inherit;
|
||||||
|
vertical-align: 0.5;
|
||||||
|
}
|
131
options/custom/menus/rofi/default.nix
Normal file
131
options/custom/menus/rofi/default.nix
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.custom.menus.rofi;
|
||||||
|
hm = config.home-manager.users.${config.custom.username};
|
||||||
|
|
||||||
|
cliphist = getExe hm.services.cliphist.package;
|
||||||
|
networkmanager_dmenu = getExe pkgs.networkmanager_dmenu;
|
||||||
|
notify-send = getExe pkgs.libnotify;
|
||||||
|
pkill = getExe' pkgs.procps "pkill";
|
||||||
|
rofi = getExe hm.programs.rofi.finalPackage;
|
||||||
|
rofi-rbw = getExe pkgs.rofi-rbw;
|
||||||
|
rofimoji = getExe pkgs.rofimoji;
|
||||||
|
in {
|
||||||
|
options.custom.menus.rofi = {
|
||||||
|
enable = mkOption {default = false;};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
custom = mkIf (config.custom.menu == "rofi") {
|
||||||
|
menus = let
|
||||||
|
quit = "${pkill} --exact rofi";
|
||||||
|
in {
|
||||||
|
show = "${quit} || ${rofi} -show combi -show-icons";
|
||||||
|
|
||||||
|
clipboard = {
|
||||||
|
show = "${quit} || ${rofi} -show clipboard -show-icons";
|
||||||
|
clear = "${cliphist} wipe && ${notify-send} '> cliphist' 'Clipboard cleared' --urgency low";
|
||||||
|
};
|
||||||
|
|
||||||
|
dmenu.show = "${quit} || ${rofi} -dmenu";
|
||||||
|
emoji.show = "${quit} || ${rofimoji} --prompt ";
|
||||||
|
network.show = "${quit} || ${rofi} -dmenu -p ";
|
||||||
|
search.show = "";
|
||||||
|
vault.show = "${quit} || ${rofi-rbw} --prompt ";
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
cliphist.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.rofimoji # https://github.com/fdw/rofimoji
|
||||||
|
];
|
||||||
|
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
#!! Creates package derivation
|
||||||
|
#?? hm.programs.rofi.finalPackage
|
||||||
|
# https://github.com/davatorium/rofi
|
||||||
|
programs.rofi = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# https://github.com/lbonn/rofi
|
||||||
|
# https://github.com/lbonn/rofi/tree/wayland/doc
|
||||||
|
package = pkgs.rofi-wayland; # Wayland fork
|
||||||
|
|
||||||
|
plugins = with pkgs; [
|
||||||
|
rofi-calc # https://github.com/svenstaro/rofi-calc
|
||||||
|
];
|
||||||
|
|
||||||
|
#?? rofi-theme-selector
|
||||||
|
theme = "custom";
|
||||||
|
|
||||||
|
# https://github.com/lbonn/rofi/blob/wayland/CONFIG.md
|
||||||
|
# https://github.com/lbonn/rofi/blob/wayland/doc/rofi.1.markdown
|
||||||
|
# https://www.nerdfonts.com/cheat-sheet
|
||||||
|
extraConfig = {
|
||||||
|
combi-hide-mode-prefix = true;
|
||||||
|
combi-modes = ["drun" "run" "calc"];
|
||||||
|
cycle = false;
|
||||||
|
display-calc = "";
|
||||||
|
display-clipboard = "";
|
||||||
|
display-combi = "";
|
||||||
|
display-dmenu = "";
|
||||||
|
display-drun = "";
|
||||||
|
display-keys = "";
|
||||||
|
display-run = "";
|
||||||
|
display-ssh = "";
|
||||||
|
drun-display-format = "{name}"; # Display only names
|
||||||
|
drun-match-fields = "name"; # Disable matching of invisible desktop attributes
|
||||||
|
matching = "prefix"; # Match beginning of words
|
||||||
|
|
||||||
|
# https://github.com/lbonn/rofi/blob/wayland/doc/rofi.1.markdown#available-modes
|
||||||
|
modes = [
|
||||||
|
"calc"
|
||||||
|
"clipboard"
|
||||||
|
"combi"
|
||||||
|
"drun"
|
||||||
|
"keys"
|
||||||
|
"run"
|
||||||
|
"ssh"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile = {
|
||||||
|
# https://github.com/lbonn/rofi/blob/wayland/doc/rofi-theme.5.markdown
|
||||||
|
"rofi/custom.rasi".text = ''
|
||||||
|
${readFile ./custom.rasi}
|
||||||
|
|
||||||
|
window, inputbar {
|
||||||
|
border: ${toString config.custom.border}px;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
# https://github.com/lbonn/rofi/blob/wayland/doc/rofi-script.5.markdown
|
||||||
|
# https://github.com/sentriz/cliphist?tab=readme-ov-file#picker-examples
|
||||||
|
"rofi/scripts/clipboard" = {
|
||||||
|
#// source = getExe' hm.services.cliphist.package "cliphist-rofi-img";
|
||||||
|
|
||||||
|
# HACK: Cannot easily hide index via display-columns without dmenu mode
|
||||||
|
# https://github.com/sentriz/cliphist/issues/130
|
||||||
|
# https://github.com/davatorium/rofi/discussions/1993#discussioncomment-9971764
|
||||||
|
# https://github.com/sentriz/cliphist/pull/124
|
||||||
|
source = getExe (pkgs.writeShellApplication {
|
||||||
|
name = "clipboard.sh";
|
||||||
|
runtimeInputs = with pkgs; [coreutils gnused wl-clipboard];
|
||||||
|
text = readFile ./clipboard.sh;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
276
options/custom/menus/walker/default.nix
Normal file
276
options/custom/menus/walker/default.nix
Normal file
|
@ -0,0 +1,276 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.custom.menus.walker;
|
||||||
|
hm = config.home-manager.users.${config.custom.username};
|
||||||
|
|
||||||
|
notify-send = getExe pkgs.libnotify;
|
||||||
|
rm = getExe' pkgs.coreutils "rm";
|
||||||
|
walker = getExe hm.programs.walker.package;
|
||||||
|
in {
|
||||||
|
options.custom.menus.walker = {
|
||||||
|
enable = mkOption {default = false;};
|
||||||
|
icons = mkOption {default = ["edit-find" "terminal"];};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
custom = {
|
||||||
|
menus = mkIf (config.custom.menu == "walker") {
|
||||||
|
show = walker;
|
||||||
|
|
||||||
|
clipboard = {
|
||||||
|
show = "${walker} --modules clipboard";
|
||||||
|
clear = "${rm} ~/.cache/walker/clipboard.gob && ${notify-send} '> walker' 'Clipboard cleared' --urgency low";
|
||||||
|
};
|
||||||
|
|
||||||
|
dmenu.show = "${walker} --modules dmenu";
|
||||||
|
emoji.show = "${walker} --modules emojis";
|
||||||
|
search.show = "${walker} --modules search";
|
||||||
|
vault.show = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
clipnotify.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
# https://github.com/abenz1267/walker
|
||||||
|
# https://github.com/abenz1267/walker?tab=readme-ov-file#building-from-source
|
||||||
|
# https://github.com/abenz1267/walker/blob/master/nix/hm-module.nix
|
||||||
|
programs.walker = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
#!! Service must be restarted for changes to take effect
|
||||||
|
#?? systemctl --user restart walker.service
|
||||||
|
runAsService = true;
|
||||||
|
|
||||||
|
# https://github.com/abenz1267/walker/wiki/Basic-Configuration
|
||||||
|
# https://github.com/abenz1267/walker/blob/master/internal/config/config.default.toml
|
||||||
|
config = {
|
||||||
|
activation_mode.disabled = true; # Key chords
|
||||||
|
close_when_open = true;
|
||||||
|
disable_click_to_close = true;
|
||||||
|
force_keyboard_focus = true;
|
||||||
|
hotreload_theme = true;
|
||||||
|
ignore_mouse = true;
|
||||||
|
|
||||||
|
list = {
|
||||||
|
placeholder = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
search = {
|
||||||
|
placeholder = "";
|
||||||
|
#// resume_last_query = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# https://github.com/abenz1267/walker/wiki/Modules
|
||||||
|
# https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/tree/master/Papirus/64x64
|
||||||
|
disabled = [
|
||||||
|
"ai"
|
||||||
|
"commands"
|
||||||
|
"custom_commands"
|
||||||
|
"finder"
|
||||||
|
"websearch" # Replaced by custom plugin
|
||||||
|
"windows"
|
||||||
|
];
|
||||||
|
|
||||||
|
builtins = let
|
||||||
|
in {
|
||||||
|
applications = {
|
||||||
|
actions.enabled = false;
|
||||||
|
hide_without_query = true;
|
||||||
|
placeholder = "";
|
||||||
|
show_generic = false;
|
||||||
|
switcher_only = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
bookmarks = {
|
||||||
|
icon = "user-bookmarks";
|
||||||
|
placeholder = "";
|
||||||
|
prefix = "b ";
|
||||||
|
switcher_only = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
calc = {
|
||||||
|
icon = "accessories-calculator";
|
||||||
|
min_chars = 1;
|
||||||
|
placeholder = "";
|
||||||
|
prefix = "=";
|
||||||
|
show_icon_when_single = true;
|
||||||
|
switcher_only = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
clipboard = {
|
||||||
|
max_entries = 50;
|
||||||
|
placeholder = "";
|
||||||
|
switcher_only = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
dmenu = {
|
||||||
|
keep_sort = true;
|
||||||
|
placeholder = "Input";
|
||||||
|
switcher_only = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
emojis = {
|
||||||
|
placeholder = "";
|
||||||
|
prefix = "`";
|
||||||
|
switcher_only = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
finder = {
|
||||||
|
icon = "filetypes";
|
||||||
|
placeholder = "";
|
||||||
|
prefix = "//";
|
||||||
|
show_icon_when_single = true;
|
||||||
|
switcher_only = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
runner = {
|
||||||
|
icon = "utilities-x-terminal";
|
||||||
|
placeholder = "";
|
||||||
|
prefix = ">";
|
||||||
|
show_icon_when_single = true;
|
||||||
|
switcher_only = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
ssh = {
|
||||||
|
icon = "folder-remote-symbolic";
|
||||||
|
placeholder = "";
|
||||||
|
prefix = "ssh ";
|
||||||
|
show_icon_when_single = true;
|
||||||
|
switcher_only = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
switcher = {
|
||||||
|
icon = "application-default-icon";
|
||||||
|
prefix = "/";
|
||||||
|
show_icon_when_single = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
symbols = {
|
||||||
|
placeholder = "";
|
||||||
|
prefix = "sym ";
|
||||||
|
switcher_only = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
translation = {
|
||||||
|
icon = "translator";
|
||||||
|
placeholder = "";
|
||||||
|
prefix = "tr ";
|
||||||
|
switcher_only = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
websearch = {
|
||||||
|
placeholder = "system-search";
|
||||||
|
switcher_only = false;
|
||||||
|
entries = [{}];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO: Keybinds
|
||||||
|
# https://github.com/abenz1267/walker/wiki/Keybinds
|
||||||
|
|
||||||
|
# https://github.com/abenz1267/walker/wiki/Plugins
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
# Search engines by keyword prefix
|
||||||
|
name = "search";
|
||||||
|
placeholder = "";
|
||||||
|
show_icon_when_single = true;
|
||||||
|
switcher_only = false;
|
||||||
|
|
||||||
|
src = "${pkgs.writeShellApplication {
|
||||||
|
name = "search";
|
||||||
|
text = readFile ./search.sh;
|
||||||
|
runtimeInputs = with pkgs; [coreutils jq xdg-utils];
|
||||||
|
}}/bin/search '%TERM%'";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# https://github.com/abenz1267/walker/wiki/Theming
|
||||||
|
theme = {
|
||||||
|
style = ''
|
||||||
|
#box {
|
||||||
|
border: ${toString config.custom.border}px #073642 solid;
|
||||||
|
font: larger ${config.custom.settings.fonts.sans-serif};
|
||||||
|
}
|
||||||
|
|
||||||
|
${readFile ./style.css}
|
||||||
|
'';
|
||||||
|
|
||||||
|
# https://github.com/abenz1267/walker/blob/master/internal/config/layout.default.toml
|
||||||
|
layout.ui.window = let
|
||||||
|
w = 750;
|
||||||
|
h = 300;
|
||||||
|
in {
|
||||||
|
width = w;
|
||||||
|
height = h;
|
||||||
|
|
||||||
|
box = {
|
||||||
|
h_align = "fill";
|
||||||
|
width = -1;
|
||||||
|
height = -1;
|
||||||
|
|
||||||
|
scroll = {
|
||||||
|
h_align = "fill";
|
||||||
|
h_scrollbar_policy = "external";
|
||||||
|
v_scrollbar_policy = "external";
|
||||||
|
|
||||||
|
list = {
|
||||||
|
width = -1;
|
||||||
|
height = -1;
|
||||||
|
min_width = -1;
|
||||||
|
min_height = -1;
|
||||||
|
max_width = w;
|
||||||
|
max_height = h;
|
||||||
|
|
||||||
|
item = {
|
||||||
|
text = {
|
||||||
|
sub = {
|
||||||
|
hide = true; # Subtext
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# # HACK: Create theme files for module prompt icons
|
||||||
|
# #?? MODULE.theme = "icon-ICON"
|
||||||
|
# # https://github.com/abenz1267/walker/blob/bb584eab3b0cc48ebfbac1a5da019864d74781c4/nix/hm-module.nix#L86
|
||||||
|
# xdg.configFile = listToAttrs (flatten (forEach cfg.icons (
|
||||||
|
# icon: [
|
||||||
|
# {
|
||||||
|
# name = "walker/themes/icon-${icon}.css";
|
||||||
|
# value = {text = hm.programs.walker.theme.style;};
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# name = "walker/themes/icon-${icon}.json";
|
||||||
|
# value = {
|
||||||
|
# text = builtins.toJSON (recursiveUpdate hm.programs.walker.theme.layout {
|
||||||
|
# ui.window.box.search.prompt.icon = icon;
|
||||||
|
# });
|
||||||
|
# };
|
||||||
|
# }
|
||||||
|
# ]
|
||||||
|
# )));
|
||||||
|
|
||||||
|
# HACK: Allow child processes to live, otherwise applications launched through service are killed on stop
|
||||||
|
# https://www.freedesktop.org/software/systemd/man/latest/systemd.kill.html#KillMode=
|
||||||
|
systemd.user.services.walker.Service.KillMode = "process";
|
||||||
|
};
|
||||||
|
}
|
|
@ -4,9 +4,9 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.custom.programs.wofi;
|
cfg = config.custom.menus.wofi;
|
||||||
in {
|
in {
|
||||||
options.custom.programs.wofi.enable = mkOption {default = false;};
|
options.custom.menus.wofi.enable = mkOption {default = false;};
|
||||||
|
|
||||||
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
||||||
# https://hg.sr.ht/~scoopta/wofi
|
# https://hg.sr.ht/~scoopta/wofi
|
|
@ -1,6 +1,5 @@
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
@ -10,8 +9,6 @@ in {
|
||||||
options.custom.programs.ags.enable = mkOption {default = false;};
|
options.custom.programs.ags.enable = mkOption {default = false;};
|
||||||
|
|
||||||
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
||||||
imports = [inputs.ags.homeManagerModules.default];
|
|
||||||
|
|
||||||
# https://aylur.github.io/ags-docs
|
# https://aylur.github.io/ags-docs
|
||||||
# https://github.com/Aylur/ags
|
# https://github.com/Aylur/ags
|
||||||
programs.ags = {
|
programs.ags = {
|
||||||
|
|
|
@ -1,31 +1,46 @@
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi";
|
|
||||||
|
|
||||||
cfg = config.custom.programs.bitwarden-menu;
|
cfg = config.custom.programs.bitwarden-menu;
|
||||||
|
hm = config.home-manager.users.${config.custom.username};
|
||||||
|
|
||||||
|
walker = getExe hm.programs.walker.package;
|
||||||
in {
|
in {
|
||||||
options.custom.programs.bitwarden-menu.enable = mkOption {default = false;};
|
options.custom.programs.bitwarden-menu = {
|
||||||
|
enable = mkOption {default = false;};
|
||||||
|
};
|
||||||
|
|
||||||
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
config = {
|
||||||
# https://github.com/firecat53/bitwarden-menu
|
# https://github.com/firecat53/bitwarden-menu
|
||||||
#!! Options not available, files written directly
|
environment.systemPackages = with pkgs; [
|
||||||
# https://github.com/firecat53/bitwarden-menu/blob/main/docs/configure.md
|
bitwarden-cli
|
||||||
xdg.configFile."bwm/config.ini".text = ''
|
bitwarden-menu
|
||||||
[dmenu]
|
];
|
||||||
dmenu_command = ${wofi} --dmenu
|
|
||||||
|
|
||||||
[dmenu_passphrase]
|
home-manager.sharedModules = mkIf cfg.enable [
|
||||||
obscure = True
|
{
|
||||||
|
# TODO: Check for official options
|
||||||
|
# https://github.com/firecat53/bitwarden-menu/blob/main/docs/configure.md
|
||||||
|
xdg.configFile."bwm/config.ini".text = generators.toINI {} {
|
||||||
|
dmenu = {
|
||||||
|
dmenu_command = "${walker} --dmenu --forceprint";
|
||||||
|
};
|
||||||
|
|
||||||
# FIXME: Login options taking effect
|
dmenu_passphrase = {
|
||||||
[vault]
|
obscure = true;
|
||||||
server = https://vault.bitwarden.com
|
};
|
||||||
twofactor = 0
|
|
||||||
session_timeout_min = 720
|
vault = {
|
||||||
'';
|
server_1 = "https://vault.${config.custom.domain}";
|
||||||
|
login_1 = "${config.custom.username}@${config.custom.domain}";
|
||||||
|
twofactor_1 = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,9 +34,9 @@ in {
|
||||||
"ddkjiahejlhfcafbddmgiahcphecmpfh" # uBlock Origin Lite
|
"ddkjiahejlhfcafbddmgiahcphecmpfh" # uBlock Origin Lite
|
||||||
]
|
]
|
||||||
++ optionals config.custom.full [
|
++ optionals config.custom.full [
|
||||||
"khgocmkkpikpnmmkgmdnfckapcdkgfaf" # 1Password Beta
|
#// "khgocmkkpikpnmmkgmdnfckapcdkgfaf" # 1Password Beta
|
||||||
#// "ajopnjidmegmdimjlfnijceegpefgped" # BetterTTV
|
#// "ajopnjidmegmdimjlfnijceegpefgped" # BetterTTV
|
||||||
#// "nngceckbapebfimnlniiiahkandclblb" # Bitwarden
|
"nngceckbapebfimnlniiiahkandclblb" # Bitwarden
|
||||||
#// "enamippconapkdmgfgjchkhakpfinmaj" # DeArrow
|
#// "enamippconapkdmgfgjchkhakpfinmaj" # DeArrow
|
||||||
"ponfpcnoihfmfllpaingbgckeeldkhle" # Enhancer for YouTube
|
"ponfpcnoihfmfllpaingbgckeeldkhle" # Enhancer for YouTube
|
||||||
#// "fnaicdffflnofjppbagibeoednhnbjhg" # floccus
|
#// "fnaicdffflnofjppbagibeoednhnbjhg" # floccus
|
||||||
|
@ -246,7 +246,7 @@ in {
|
||||||
{
|
{
|
||||||
name = "Piped";
|
name = "Piped";
|
||||||
shortcut = "p";
|
shortcut = "p";
|
||||||
url = "https://piped.bjork.tech/results?search_query={searchTerms}";
|
url = "https://piped.${config.custom.domain}/results?search_query={searchTerms}";
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -276,7 +276,7 @@ in {
|
||||||
{
|
{
|
||||||
name = "SearXNG";
|
name = "SearXNG";
|
||||||
shortcut = "s";
|
shortcut = "s";
|
||||||
url = "https://search.bjork.tech/search?q={searchTerms}";
|
url = "https://search.${config.custom.domain}/search?q={searchTerms}";
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -45,15 +45,14 @@ with lib; {
|
||||||
_1password.enable = true;
|
_1password.enable = true;
|
||||||
adb.enable = true;
|
adb.enable = true;
|
||||||
#// ags.enable = true;
|
#// ags.enable = true;
|
||||||
#// anyrun.enable = true;
|
bitwarden-menu.enable = true;
|
||||||
#// bitwarden-menu.enable = true;
|
|
||||||
#// clipse.enable = true;
|
#// clipse.enable = true;
|
||||||
discord.enable = true;
|
discord.enable = true;
|
||||||
element-desktop.enable = true;
|
element-desktop.enable = true;
|
||||||
#// fuzzel.enable = true;
|
|
||||||
gamemode.enable = true;
|
gamemode.enable = true;
|
||||||
gamescope.enable = true;
|
gamescope.enable = true;
|
||||||
#// gnome-shell.enable = true;
|
#// gnome-shell.enable = true;
|
||||||
|
goldwarden.enable = true;
|
||||||
gpg.enable = true;
|
gpg.enable = true;
|
||||||
#// gtklock.enable = true;
|
#// gtklock.enable = true;
|
||||||
hyprlock.enable = true;
|
hyprlock.enable = true;
|
||||||
|
@ -69,10 +68,8 @@ with lib; {
|
||||||
onlyoffice.enable = true;
|
onlyoffice.enable = true;
|
||||||
#// onedrive.enable = true;
|
#// onedrive.enable = true;
|
||||||
#// path-of-building.enable = true;
|
#// path-of-building.enable = true;
|
||||||
#// rbw.enable = true;
|
rbw.enable = true;
|
||||||
remmina.enable = true;
|
remmina.enable = true;
|
||||||
#// rofi-rbw.enable = true;
|
|
||||||
#// rofi.enable = true;
|
|
||||||
seahorse.enable = true;
|
seahorse.enable = true;
|
||||||
#// slurp.enable = true;
|
#// slurp.enable = true;
|
||||||
steam.enable = true;
|
steam.enable = true;
|
||||||
|
@ -80,10 +77,8 @@ with lib; {
|
||||||
#// thunderbird.enable = true;
|
#// thunderbird.enable = true;
|
||||||
tio.enable = true;
|
tio.enable = true;
|
||||||
vscode.enable = true;
|
vscode.enable = true;
|
||||||
walker.enable = true;
|
|
||||||
waybar.enable = true;
|
waybar.enable = true;
|
||||||
wireshark.enable = true;
|
wireshark.enable = true;
|
||||||
#// wofi.enable = true;
|
|
||||||
#// wpaperd.enable = true;
|
#// wpaperd.enable = true;
|
||||||
zed.enable = true;
|
zed.enable = true;
|
||||||
})
|
})
|
||||||
|
|
|
@ -468,8 +468,8 @@ in {
|
||||||
{
|
{
|
||||||
Name = "Piped";
|
Name = "Piped";
|
||||||
Alias = "p";
|
Alias = "p";
|
||||||
IconURL = "https://piped.bjork.tech/favicon.ico";
|
IconURL = "https://piped.${config.custom.domain}/favicon.ico";
|
||||||
URLTemplate = "https://piped.bjork.tech/results?search_query={searchTerms}";
|
URLTemplate = "https://piped.${config.custom.domain}/results?search_query={searchTerms}";
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -503,8 +503,8 @@ in {
|
||||||
{
|
{
|
||||||
Name = "SearXNG";
|
Name = "SearXNG";
|
||||||
Alias = "s";
|
Alias = "s";
|
||||||
IconURL = "https://search.bjork.tech/static/themes/simple/img/favicon.png";
|
IconURL = "https://search.${config.custom.domain}/static/themes/simple/img/favicon.png";
|
||||||
URLTemplate = "https://search.bjork.tech/search?q={searchTerms}";
|
URLTemplate = "https://search.${config.custom.domain}/search?q={searchTerms}";
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,7 +14,7 @@ in {
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
userName = "Myned";
|
userName = "Myned";
|
||||||
userEmail = "dev@bjork.tech";
|
userEmail = "dev@${config.custom.domain}";
|
||||||
|
|
||||||
# BUG: GitHub Desktop tries to enable if this is not in gitconfig
|
# BUG: GitHub Desktop tries to enable if this is not in gitconfig
|
||||||
lfs.enable = true; # Enable Large File Storage
|
lfs.enable = true; # Enable Large File Storage
|
||||||
|
|
25
options/custom/programs/goldwarden.nix
Normal file
25
options/custom/programs/goldwarden.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.custom.programs.goldwarden;
|
||||||
|
in {
|
||||||
|
options.custom.programs.goldwarden = {
|
||||||
|
enable = mkOption {default = false;};
|
||||||
|
flatpak = mkOption {default = true;};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
# https://github.com/quexten/goldwarden
|
||||||
|
programs.goldwarden.enable = true;
|
||||||
|
|
||||||
|
# https://github.com/quexten/goldwarden/wiki/Flatpak-Configuration
|
||||||
|
systemd.user.services.goldwarden = mkIf cfg.flatpak {
|
||||||
|
environment = {
|
||||||
|
GOLDWARDEN_SOCKET_PATH = "%h/.var/app/com.quexten.Goldwarden/data/goldwarden.sock";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,26 +1,36 @@
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
menu = config.home-manager.users.${config.custom.username}.home.file.".local/bin/menu".source;
|
|
||||||
|
|
||||||
cfg = config.custom.programs.networkmanager-dmenu;
|
cfg = config.custom.programs.networkmanager-dmenu;
|
||||||
|
|
||||||
|
bash = getExe pkgs.bash;
|
||||||
in {
|
in {
|
||||||
options.custom.programs.networkmanager-dmenu.enable = mkOption {default = false;};
|
options.custom.programs.networkmanager-dmenu.enable = mkOption {default = false;};
|
||||||
|
|
||||||
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
# https://github.com/firecat53/networkmanager-dmenu
|
# https://github.com/firecat53/networkmanager-dmenu
|
||||||
# https://github.com/firecat53/networkmanager-dmenu/blob/main/config.ini.example
|
environment.systemPackages = [pkgs.networkmanager_dmenu];
|
||||||
#!! Option not available, files written directly
|
|
||||||
xdg.configFile."networkmanager-dmenu/config.ini".text = ''
|
home-manager.users.${config.custom.username} = {
|
||||||
[dmenu]
|
# https://github.com/firecat53/networkmanager-dmenu/blob/main/config.ini.example
|
||||||
compact = true
|
#!! Option not available, files written directly
|
||||||
dmenu_command = ${menu} input
|
xdg.configFile."networkmanager-dmenu/config.ini".text = ''
|
||||||
active_chars =
|
[dmenu]
|
||||||
wifi_icons =
|
compact = true
|
||||||
format = {icon} {name}
|
dmenu_command = ${bash} -c '${config.custom.menus.network.show}'
|
||||||
'';
|
list_saved = true
|
||||||
|
active_chars =
|
||||||
|
highlight = true
|
||||||
|
wifi_icons =
|
||||||
|
format = {icon} {name}
|
||||||
|
|
||||||
|
[dmenu_passphrase]
|
||||||
|
obscure = true
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,21 +7,41 @@
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.custom.programs.rbw;
|
cfg = config.custom.programs.rbw;
|
||||||
in {
|
in {
|
||||||
options.custom.programs.rbw.enable = mkOption {default = false;};
|
options.custom.programs.rbw = {
|
||||||
|
enable = mkOption {default = false;};
|
||||||
|
};
|
||||||
|
|
||||||
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
config = {
|
||||||
# https://github.com/doy/rbw
|
# https://github.com/fdw/rofi-rbw
|
||||||
#!! Register with API secrets before using
|
environment.systemPackages = [pkgs.rofi-rbw];
|
||||||
#?? rbw register
|
|
||||||
#?? rbw login
|
|
||||||
programs.rbw = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
# https://github.com/doy/rbw?tab=readme-ov-file#configuration
|
home-manager.sharedModules = mkIf cfg.enable [
|
||||||
settings = {
|
{
|
||||||
email = "myned@bjork.tech";
|
# https://github.com/doy/rbw
|
||||||
pinentry = pkgs.pinentry-gnome3;
|
#!! Register with API secrets before using
|
||||||
};
|
#?? rbw register
|
||||||
};
|
#?? rbw login
|
||||||
|
programs.rbw = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# https://github.com/doy/rbw?tab=readme-ov-file#configuration
|
||||||
|
settings = {
|
||||||
|
base_url = "https://vault.${config.custom.domain}";
|
||||||
|
email = "${config.custom.username}@${config.custom.domain}";
|
||||||
|
pinentry = pkgs.pinentry-gnome3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO: Enable input emulation when merged (uinput.enable?)
|
||||||
|
# https://github.com/NixOS/nixpkgs/pull/303745
|
||||||
|
# https://github.com/fdw/rofi-rbw?tab=readme-ov-file#configuration
|
||||||
|
xdg.configFile = {
|
||||||
|
"rofi-rbw.rc".text = ''
|
||||||
|
action=copy
|
||||||
|
selector=${config.custom.menu}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.custom.programs.rofi-rbw;
|
|
||||||
in {
|
|
||||||
options.custom.programs.rofi-rbw.enable = mkOption {default = false;};
|
|
||||||
|
|
||||||
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
|
||||||
# https://github.com/fdw/rofi-rbw
|
|
||||||
#!! Options not available, files written directly
|
|
||||||
# https://github.com/fdw/rofi-rbw?tab=readme-ov-file#configuration
|
|
||||||
# TODO: Enable input emulation when merged (uinput.enable?)
|
|
||||||
# https://github.com/NixOS/nixpkgs/pull/303745
|
|
||||||
xdg.configFile."rofi-rbw.rc".text = ''
|
|
||||||
action=copy
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,182 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.custom.programs.rofi;
|
|
||||||
in {
|
|
||||||
options.custom.programs.rofi.enable = mkOption {default = false;};
|
|
||||||
|
|
||||||
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
|
||||||
#!! Creates package derivation
|
|
||||||
#?? config.home-manager.users.${config.custom.username}.programs.rofi.finalPackage
|
|
||||||
# https://github.com/lbonn/rofi
|
|
||||||
programs.rofi = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.rofi-wayland; # Wayland fork
|
|
||||||
|
|
||||||
# TODO: Look into rofi plugins
|
|
||||||
plugins = with pkgs; [
|
|
||||||
rofi-rbw # Bitwarden
|
|
||||||
rofimoji # Character picker
|
|
||||||
|
|
||||||
# TODO: Remove when rofi v1.7.6 released
|
|
||||||
# Build against rofi-wayland due to ABI incompatibility with upstream
|
|
||||||
# https://github.com/lbonn/rofi/issues/96
|
|
||||||
# https://github.com/NixOS/nixpkgs/issues/298539
|
|
||||||
(rofi-calc.override {rofi-unwrapped = rofi-wayland-unwrapped;}) # Calculator
|
|
||||||
(rofi-top.override {rofi-unwrapped = rofi-wayland-unwrapped;}) # System monitor
|
|
||||||
];
|
|
||||||
|
|
||||||
#?? rofi-theme-selector
|
|
||||||
theme = "custom";
|
|
||||||
font = "${config.custom.settings.fonts.monospace} 16";
|
|
||||||
|
|
||||||
# https://github.com/davatorium/rofi/blob/next/CONFIG.md
|
|
||||||
extraConfig = {
|
|
||||||
modi = "drun,run,calc";
|
|
||||||
matching = "prefix"; # Match beginning of words
|
|
||||||
drun-display-format = "{name}"; # Display only names
|
|
||||||
drun-match-fields = "name"; # Disable matching of invisible desktop attributes
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# https://github.com/davatorium/rofi/blob/next/doc/rofi-theme.5.markdown
|
|
||||||
# https://github.com/davatorium/rofi/blob/next/themes/paper-float.rasi
|
|
||||||
# TODO: Clean up theme
|
|
||||||
home.file.".config/rofi/custom.rasi".text = ''
|
|
||||||
* {
|
|
||||||
background: #073642ff;
|
|
||||||
alternate: #002b36ff;
|
|
||||||
text: #eee8d5ff;
|
|
||||||
accent: #d33682ff;
|
|
||||||
|
|
||||||
spacing: 2;
|
|
||||||
text-color: @text;
|
|
||||||
background-color: #00000000;
|
|
||||||
border-color: @accent;
|
|
||||||
anchor: north;
|
|
||||||
location: center;
|
|
||||||
}
|
|
||||||
window {
|
|
||||||
transparency: "real";
|
|
||||||
background-color: #00000000;
|
|
||||||
border: 0;
|
|
||||||
padding: 0% 0% 1em 0%;
|
|
||||||
x-offset: 0;
|
|
||||||
y-offset: -10%;
|
|
||||||
}
|
|
||||||
mainbox {
|
|
||||||
padding: 0px;
|
|
||||||
border: 0;
|
|
||||||
spacing: 1%;
|
|
||||||
}
|
|
||||||
message {
|
|
||||||
border: 2px;
|
|
||||||
padding: 1em;
|
|
||||||
background-color: @background;
|
|
||||||
text-color: @text;
|
|
||||||
}
|
|
||||||
textbox normal {
|
|
||||||
text-color: @text;
|
|
||||||
padding: 0;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
listview {
|
|
||||||
fixed-height: 1;
|
|
||||||
border: 2px;
|
|
||||||
padding: 1em;
|
|
||||||
reverse: false;
|
|
||||||
|
|
||||||
columns: 1;
|
|
||||||
background-color: @background;
|
|
||||||
}
|
|
||||||
element {
|
|
||||||
border: 0;
|
|
||||||
padding: 2px;
|
|
||||||
highlight: bold ;
|
|
||||||
}
|
|
||||||
element-text {
|
|
||||||
background-color: inherit;
|
|
||||||
text-color: inherit;
|
|
||||||
}
|
|
||||||
element normal.normal {
|
|
||||||
text-color: @text;
|
|
||||||
background-color: @background;
|
|
||||||
}
|
|
||||||
element normal.urgent {
|
|
||||||
text-color: @text;
|
|
||||||
background-color: @background;
|
|
||||||
}
|
|
||||||
element normal.active {
|
|
||||||
text-color: @text;
|
|
||||||
background-color: @background;
|
|
||||||
}
|
|
||||||
element selected.normal {
|
|
||||||
text-color: @text;
|
|
||||||
background-color: @accent;
|
|
||||||
}
|
|
||||||
element selected.urgent {
|
|
||||||
text-color: @text;
|
|
||||||
background-color: @accent;
|
|
||||||
}
|
|
||||||
element selected.active {
|
|
||||||
text-color: @text;
|
|
||||||
background-color: @accent;
|
|
||||||
}
|
|
||||||
element alternate.normal {
|
|
||||||
text-color: @text;
|
|
||||||
background-color: @alternate;
|
|
||||||
}
|
|
||||||
element alternate.urgent {
|
|
||||||
text-color: @text;
|
|
||||||
background-color: @alternate;
|
|
||||||
}
|
|
||||||
element alternate.active {
|
|
||||||
text-color: @text;
|
|
||||||
background-color: @alternate;
|
|
||||||
}
|
|
||||||
scrollbar {
|
|
||||||
border: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
inputbar {
|
|
||||||
spacing: 0;
|
|
||||||
border: 2px;
|
|
||||||
padding: 0.5em 1em;
|
|
||||||
background-color: @background;
|
|
||||||
index: 0;
|
|
||||||
}
|
|
||||||
inputbar normal {
|
|
||||||
foreground-color: @text;
|
|
||||||
background-color: @background;
|
|
||||||
}
|
|
||||||
mode-switcher {
|
|
||||||
border: 2px;
|
|
||||||
padding: 0.5em 1em;
|
|
||||||
background-color: @background;
|
|
||||||
index: 10;
|
|
||||||
}
|
|
||||||
button selected {
|
|
||||||
text-color: @accent;
|
|
||||||
}
|
|
||||||
inputbar {
|
|
||||||
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
|
|
||||||
}
|
|
||||||
textbox-prompt-colon {
|
|
||||||
expand: false;
|
|
||||||
str: ":";
|
|
||||||
margin: 0px 0.3em 0em 0em ;
|
|
||||||
text-color: @text;
|
|
||||||
}
|
|
||||||
error-message {
|
|
||||||
border: 2px;
|
|
||||||
padding: 1em;
|
|
||||||
background-color: @background;
|
|
||||||
text-color: @text;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -15,6 +15,7 @@ in {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
alejandra # nix-ide
|
alejandra # nix-ide
|
||||||
blueprint-compiler # blueprint-gtk
|
blueprint-compiler # blueprint-gtk
|
||||||
|
caddy # caddyfile-support
|
||||||
nixd # nix-ide
|
nixd # nix-ide
|
||||||
powershell # powershell
|
powershell # powershell
|
||||||
shfmt # shell-format
|
shfmt # shell-format
|
||||||
|
@ -59,6 +60,7 @@ in {
|
||||||
gruntfuggly.todo-tree
|
gruntfuggly.todo-tree
|
||||||
jnoortheen.nix-ide
|
jnoortheen.nix-ide
|
||||||
koihik.vscode-lua-format
|
koihik.vscode-lua-format
|
||||||
|
matthewpi.caddyfile-support
|
||||||
mhutchie.git-graph
|
mhutchie.git-graph
|
||||||
mkhl.direnv
|
mkhl.direnv
|
||||||
ms-python.black-formatter
|
ms-python.black-formatter
|
||||||
|
|
|
@ -1,250 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.custom.programs.walker;
|
|
||||||
hm = config.home-manager.users.${config.custom.username};
|
|
||||||
in {
|
|
||||||
options.custom.programs.walker = {
|
|
||||||
enable = mkOption {default = false;};
|
|
||||||
icons = mkOption {default = ["edit-find" "terminal"];};
|
|
||||||
};
|
|
||||||
|
|
||||||
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
|
||||||
imports = [inputs.walker.homeManagerModules.default];
|
|
||||||
|
|
||||||
# https://github.com/abenz1267/walker
|
|
||||||
# https://github.com/abenz1267/walker?tab=readme-ov-file#building-from-source
|
|
||||||
# https://github.com/abenz1267/walker/blob/master/nix/hm-module.nix
|
|
||||||
programs.walker = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
#!! Service must be restarted for changes to take effect
|
|
||||||
#?? systemctl --user restart walker.service
|
|
||||||
runAsService = true;
|
|
||||||
|
|
||||||
# https://github.com/abenz1267/walker/wiki/Basic-Configuration
|
|
||||||
# https://github.com/abenz1267/walker/blob/master/internal/config/config.default.toml
|
|
||||||
config = {
|
|
||||||
activation_mode.disabled = true; # Key chords
|
|
||||||
close_when_open = true;
|
|
||||||
disable_click_to_close = true;
|
|
||||||
force_keyboard_focus = true;
|
|
||||||
hotreload_theme = true;
|
|
||||||
ignore_mouse = true;
|
|
||||||
|
|
||||||
list = {
|
|
||||||
placeholder = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
search = {
|
|
||||||
placeholder = "";
|
|
||||||
#// resume_last_query = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# https://github.com/abenz1267/walker/wiki/Modules
|
|
||||||
# https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/tree/master/Papirus/64x64
|
|
||||||
disabled = [
|
|
||||||
"ai"
|
|
||||||
"commands"
|
|
||||||
"custom_commands"
|
|
||||||
"finder"
|
|
||||||
"websearch" # Replaced by custom plugin
|
|
||||||
"windows"
|
|
||||||
];
|
|
||||||
|
|
||||||
builtins = let
|
|
||||||
in {
|
|
||||||
applications = {
|
|
||||||
actions.enabled = false;
|
|
||||||
hide_without_query = true;
|
|
||||||
placeholder = "";
|
|
||||||
show_generic = false;
|
|
||||||
switcher_only = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
bookmarks = {
|
|
||||||
icon = "user-bookmarks";
|
|
||||||
placeholder = "";
|
|
||||||
prefix = "b";
|
|
||||||
switcher_only = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
calc = {
|
|
||||||
icon = "accessories-calculator";
|
|
||||||
min_chars = 1;
|
|
||||||
placeholder = "";
|
|
||||||
prefix = "=";
|
|
||||||
show_icon_when_single = true;
|
|
||||||
switcher_only = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
clipboard = {
|
|
||||||
max_entries = 50;
|
|
||||||
placeholder = "";
|
|
||||||
switcher_only = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
dmenu = {
|
|
||||||
keep_sort = true;
|
|
||||||
placeholder = "Input";
|
|
||||||
switcher_only = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
emojis = {
|
|
||||||
placeholder = "";
|
|
||||||
prefix = "`";
|
|
||||||
switcher_only = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
finder = {
|
|
||||||
icon = "filetypes";
|
|
||||||
placeholder = "";
|
|
||||||
prefix = "//";
|
|
||||||
show_icon_when_single = true;
|
|
||||||
switcher_only = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
runner = {
|
|
||||||
icon = "utilities-x-terminal";
|
|
||||||
placeholder = "";
|
|
||||||
prefix = ">";
|
|
||||||
show_icon_when_single = true;
|
|
||||||
switcher_only = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
ssh = {
|
|
||||||
icon = "folder-remote-symbolic";
|
|
||||||
placeholder = "";
|
|
||||||
prefix = "ssh";
|
|
||||||
show_icon_when_single = true;
|
|
||||||
switcher_only = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
switcher = {
|
|
||||||
icon = "application-default-icon";
|
|
||||||
prefix = "/";
|
|
||||||
show_icon_when_single = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
symbols = {
|
|
||||||
placeholder = "";
|
|
||||||
prefix = "sym";
|
|
||||||
switcher_only = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
translation = {
|
|
||||||
icon = "translator";
|
|
||||||
placeholder = "";
|
|
||||||
prefix = "tr";
|
|
||||||
switcher_only = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
websearch = {
|
|
||||||
placeholder = "system-search";
|
|
||||||
switcher_only = false;
|
|
||||||
entries = [{}];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: Keybinds
|
|
||||||
# https://github.com/abenz1267/walker/wiki/Keybinds
|
|
||||||
|
|
||||||
# https://github.com/abenz1267/walker/wiki/Plugins
|
|
||||||
plugins = [
|
|
||||||
{
|
|
||||||
# Search engines by keyword prefix
|
|
||||||
name = "search";
|
|
||||||
placeholder = "";
|
|
||||||
show_icon_when_single = true;
|
|
||||||
switcher_only = false;
|
|
||||||
|
|
||||||
src = "${pkgs.writeShellApplication {
|
|
||||||
name = "search";
|
|
||||||
text = readFile ./search.sh;
|
|
||||||
runtimeInputs = with pkgs; [coreutils jq xdg-utils];
|
|
||||||
}}/bin/search '%TERM%'";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# https://github.com/abenz1267/walker/wiki/Theming
|
|
||||||
theme = {
|
|
||||||
style = ''
|
|
||||||
#box {
|
|
||||||
border: ${toString config.custom.border}px #073642 solid;
|
|
||||||
font: larger ${config.custom.settings.fonts.sans-serif};
|
|
||||||
}
|
|
||||||
|
|
||||||
${readFile ./style.css}
|
|
||||||
'';
|
|
||||||
|
|
||||||
# https://github.com/abenz1267/walker/blob/master/internal/config/layout.default.toml
|
|
||||||
layout.ui.window = let
|
|
||||||
w = 750;
|
|
||||||
h = 300;
|
|
||||||
in {
|
|
||||||
width = w;
|
|
||||||
height = h;
|
|
||||||
|
|
||||||
box = {
|
|
||||||
h_align = "fill";
|
|
||||||
width = -1;
|
|
||||||
height = -1;
|
|
||||||
|
|
||||||
scroll = {
|
|
||||||
h_align = "fill";
|
|
||||||
h_scrollbar_policy = "external";
|
|
||||||
v_scrollbar_policy = "external";
|
|
||||||
|
|
||||||
list = {
|
|
||||||
width = -1;
|
|
||||||
height = -1;
|
|
||||||
min_width = -1;
|
|
||||||
min_height = -1;
|
|
||||||
max_width = w;
|
|
||||||
max_height = h;
|
|
||||||
|
|
||||||
item = {
|
|
||||||
text = {
|
|
||||||
sub = {
|
|
||||||
hide = true; # Subtext
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# # HACK: Create theme files for module prompt icons
|
|
||||||
# #?? MODULE.theme = "icon-ICON"
|
|
||||||
# # https://github.com/abenz1267/walker/blob/bb584eab3b0cc48ebfbac1a5da019864d74781c4/nix/hm-module.nix#L86
|
|
||||||
# xdg.configFile = listToAttrs (flatten (forEach cfg.icons (
|
|
||||||
# icon: [
|
|
||||||
# {
|
|
||||||
# name = "walker/themes/icon-${icon}.css";
|
|
||||||
# value = {text = hm.programs.walker.theme.style;};
|
|
||||||
# }
|
|
||||||
# {
|
|
||||||
# name = "walker/themes/icon-${icon}.json";
|
|
||||||
# value = {
|
|
||||||
# text = builtins.toJSON (recursiveUpdate hm.programs.walker.theme.layout {
|
|
||||||
# ui.window.box.search.prompt.icon = icon;
|
|
||||||
# });
|
|
||||||
# };
|
|
||||||
# }
|
|
||||||
# ]
|
|
||||||
# )));
|
|
||||||
|
|
||||||
# HACK: Allow child processes to live, otherwise applications launched through service are killed on stop
|
|
||||||
# https://www.freedesktop.org/software/systemd/man/latest/systemd.kill.html#KillMode=
|
|
||||||
systemd.user.services.walker.Service.KillMode = "process";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
#! /usr/bin/env bash
|
|
||||||
|
|
||||||
# Bitwarden dmenu
|
|
||||||
# TODO: Clear clipboard after timer
|
|
||||||
|
|
||||||
SESSIONFILE="$XDG_RUNTIME_DIR/bwm"
|
|
||||||
|
|
||||||
# Use current session if exists
|
|
||||||
if test -f "$SESSIONFILE"; then
|
|
||||||
BW_SESSION="$(cat "$SESSIONFILE")" && export BW_SESSION
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Unlock vault if needed
|
|
||||||
if ! bw unlock --check; then
|
|
||||||
# Prompt for obfuscated password
|
|
||||||
password="$(wofi --dmenu --password --lines 3 <<< 'Vault locked. Enter master password.')"
|
|
||||||
|
|
||||||
# Save session to /tmp
|
|
||||||
BW_SESSION="$(bw unlock "$password" --raw)" && export BW_SESSION
|
|
||||||
touch "$SESSIONFILE"
|
|
||||||
chmod u=rw,g=,o= "$SESSIONFILE"
|
|
||||||
echo "$BW_SESSION" > "$SESSIONFILE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Prompt for search term
|
|
||||||
search="$(wofi --dmenu --lines 3 <<< 'Enter item to search.')"
|
|
||||||
|
|
||||||
# Gather and parse results
|
|
||||||
items="$(bw list items --search "$search")"
|
|
||||||
usernames="$(jq -r '.[].login.username' <<< "$items")"
|
|
||||||
passwords="$(jq -r '.[].login.password' <<< "$items")"
|
|
||||||
|
|
||||||
# Prompt to select username
|
|
||||||
username="$(wofi --dmenu <<< "$usernames")"
|
|
||||||
|
|
||||||
# Find matching password line number
|
|
||||||
count=1
|
|
||||||
|
|
||||||
while IFS= read -r username; do
|
|
||||||
if [[ "$username" == "$username" ]]; then
|
|
||||||
break
|
|
||||||
else
|
|
||||||
((count++))
|
|
||||||
fi
|
|
||||||
done <<< "$usernames"
|
|
||||||
|
|
||||||
# Copy line to clipboard
|
|
||||||
tail --lines "+$count" <<< "$passwords" | head -1 | tee >(xclip -rmlastnl -selection clipboard &> /dev/null) >(wl-copy --trim-newline &> /dev/null)
|
|
||||||
|
|
||||||
notify-send '> bwm' 'Copied' --urgency low
|
|
|
@ -5,10 +5,8 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
# Use packages from local derivation
|
|
||||||
git = config.home-manager.users.${config.custom.username}.programs.git.package;
|
git = config.home-manager.users.${config.custom.username}.programs.git.package;
|
||||||
hyprland =
|
hyprland = config.home-manager.users.${config.custom.username}.wayland.windowManager.hyprland.finalPackage;
|
||||||
config.home-manager.users.${config.custom.username}.wayland.windowManager.hyprland.finalPackage;
|
|
||||||
walker = config.home-manager.users.${config.custom.username}.programs.walker.package;
|
walker = config.home-manager.users.${config.custom.username}.programs.walker.package;
|
||||||
wofi = config.home-manager.users.${config.custom.username}.programs.wofi.package;
|
wofi = config.home-manager.users.${config.custom.username}.programs.wofi.package;
|
||||||
in {
|
in {
|
||||||
|
@ -53,15 +51,6 @@ in {
|
||||||
easyeffects
|
easyeffects
|
||||||
libnotify
|
libnotify
|
||||||
])
|
])
|
||||||
(bash "bwm" [
|
|
||||||
bitwarden-cli
|
|
||||||
coreutils
|
|
||||||
jq
|
|
||||||
libnotify
|
|
||||||
wl-clipboard
|
|
||||||
wofi
|
|
||||||
xclip
|
|
||||||
])
|
|
||||||
(bash "calc" [
|
(bash "calc" [
|
||||||
coreutils
|
coreutils
|
||||||
libnotify
|
libnotify
|
||||||
|
@ -181,6 +170,15 @@ in {
|
||||||
jq
|
jq
|
||||||
libnotify
|
libnotify
|
||||||
])
|
])
|
||||||
|
(bash "vault" [
|
||||||
|
argc
|
||||||
|
bitwarden-cli
|
||||||
|
coreutils
|
||||||
|
jq
|
||||||
|
libnotify
|
||||||
|
walker
|
||||||
|
wl-clipboard
|
||||||
|
])
|
||||||
(bash "vpn" [
|
(bash "vpn" [
|
||||||
gnused
|
gnused
|
||||||
jq
|
jq
|
||||||
|
|
74
options/custom/scripts/vault.sh
Normal file
74
options/custom/scripts/vault.sh
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
|
# @describe Bitwarden menu client
|
||||||
|
#
|
||||||
|
# https://github.com/sigoden/argc
|
||||||
|
|
||||||
|
# @meta combine-shorts
|
||||||
|
|
||||||
|
eval "$(argc --argc-eval "$0" "$@")"
|
||||||
|
|
||||||
|
SESSIONFILE="$XDG_RUNTIME_DIR/vault"
|
||||||
|
|
||||||
|
# Use current session if exists
|
||||||
|
if test -f "$SESSIONFILE"; then
|
||||||
|
BW_SESSION="$(cat "$SESSIONFILE")" && export BW_SESSION
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Unlock vault if needed
|
||||||
|
if ! bw unlock --check; then
|
||||||
|
# Log in if needed
|
||||||
|
if ! bw login --check; then
|
||||||
|
# Prompt for server URL
|
||||||
|
BW_SERVER="$(walker --dmenu --forceprint <<< "Logged out. Enter server URL.")"
|
||||||
|
|
||||||
|
# Use server in bw config
|
||||||
|
bw config server "$BW_SERVER"
|
||||||
|
|
||||||
|
# Prompt for email and password
|
||||||
|
BW_EMAIL="$(walker --dmenu --forceprint <<< "Saved. Enter email address.")"
|
||||||
|
BW_PASSWORD="$(walker --dmenu --forceprint <<< "Saved. Enter master password.")"
|
||||||
|
|
||||||
|
# Log in to vault
|
||||||
|
BW_SESSION="$(bw login --raw "$BW_EMAIL" "$BW_PASSWORD")" && export BW_SESSION
|
||||||
|
else
|
||||||
|
# BUG: Walker crashes in password mode
|
||||||
|
# Prompt for obfuscated password
|
||||||
|
BW_PASSWORD="$(walker --dmenu --forceprint <<< "Vault locked. Enter master password.")"
|
||||||
|
|
||||||
|
# Unlock vault
|
||||||
|
BW_SESSION="$(bw unlock --raw "$BW_PASSWORD")" && export BW_SESSION
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Save session to file
|
||||||
|
touch "$SESSIONFILE"
|
||||||
|
chmod u=rw,g=,o= "$SESSIONFILE"
|
||||||
|
echo "$BW_SESSION" > "$SESSIONFILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prompt for search term
|
||||||
|
search="$(walker --dmenu --forceprint <<< "Enter item to search.")"
|
||||||
|
|
||||||
|
# Gather and parse results
|
||||||
|
items="$(bw list items --search "$search")"
|
||||||
|
usernames="$(jq -r ".[].login.username" <<< "$items")"
|
||||||
|
passwords="$(jq -r ".[].login.password" <<< "$items")"
|
||||||
|
|
||||||
|
# Prompt to select username
|
||||||
|
username="$(walker --dmenu <<< "$usernames")"
|
||||||
|
|
||||||
|
# Find matching password line number
|
||||||
|
count=1
|
||||||
|
|
||||||
|
while IFS= read -r username; do
|
||||||
|
if [[ "$username" == "$username" ]]; then
|
||||||
|
break
|
||||||
|
else
|
||||||
|
((count++))
|
||||||
|
fi
|
||||||
|
done <<< "$usernames"
|
||||||
|
|
||||||
|
# Copy line to clipboard
|
||||||
|
tail --lines "+$count" <<< "$passwords" | head -1 | wl-copy --trim-newline &> /dev/null
|
||||||
|
|
||||||
|
notify-send "> bwm" "Copied" --urgency low
|
|
@ -1,43 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cat = "${pkgs.coreutils}/bin/cat";
|
|
||||||
sed = "${pkgs.gnused}/bin/sed";
|
|
||||||
|
|
||||||
cfg = config.custom.services.agenix;
|
|
||||||
in {
|
|
||||||
options.custom.services.agenix.enable = mkOption {default = false;};
|
|
||||||
|
|
||||||
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
|
||||||
xdg.configFile."hypr/hyprland.conf".force = true;
|
|
||||||
|
|
||||||
# Replace placeholders with secrets after agenix user service starts
|
|
||||||
systemd.user.services.secrets = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Replace agenix secrets in-place";
|
|
||||||
After = "agenix.service";
|
|
||||||
};
|
|
||||||
|
|
||||||
Service = {
|
|
||||||
ExecStart = pkgs.writeShellScript "secrets" ''
|
|
||||||
file="${config.custom.homeDirectory}/.config/hypr/hyprland.conf"
|
|
||||||
|
|
||||||
${sed} -i "s|@BW_CLIENTID@|$(${cat} ${
|
|
||||||
config.age.secrets."desktop/bitwarden/client_id".path
|
|
||||||
})|" "$file"
|
|
||||||
${sed} -i "s|@BW_CLIENTSECRET@|$(${cat} ${
|
|
||||||
config.age.secrets."desktop/bitwarden/client_secret".path
|
|
||||||
})|" "$file"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["default.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -32,19 +32,22 @@ in {
|
||||||
# https://github.com/AdguardTeam/AdGuardHome/issues/2798
|
# https://github.com/AdguardTeam/AdGuardHome/issues/2798
|
||||||
# TODO: Use stable package when available with plugins
|
# TODO: Use stable package when available with plugins
|
||||||
# https://github.com/NixOS/nixpkgs/pull/358586
|
# https://github.com/NixOS/nixpkgs/pull/358586
|
||||||
# package = pkgs.unstable.caddy.withPlugins {
|
package = pkgs.unstable.caddy.withPlugins {
|
||||||
# #?? Copy from failed build
|
#?? Copy from failed build
|
||||||
# hash = "sha256-rB2exWVfKS82QpAuEM6+PlUNNmd8sqxvqNHRxCVIE/c=";
|
hash = "sha256-jCcSzenewQiW897GFHF9WAcVkGaS/oUu63crJu7AyyQ=";
|
||||||
|
|
||||||
# #?? REPO@TAG
|
#?? REPO@TAG
|
||||||
# plugins = [
|
plugins = [
|
||||||
# # https://github.com/mholt/caddy-l4
|
# https://github.com/caddy-dns/cloudflare
|
||||||
# "github.com/mholt/caddy-l4@v0.0.0-20250124234235-87e3e5e2c7f9"
|
"github.com/caddy-dns/cloudflare@v0.0.0-20240703190432-89f16b99c18e"
|
||||||
|
|
||||||
# # https://github.com/tailscale/caddy-tailscale
|
# https://github.com/mholt/caddy-l4
|
||||||
# "github.com/tailscale/caddy-tailscale@v0.0.0-20250207004440-fd3f49d73216"
|
#// "github.com/mholt/caddy-l4@v0.0.0-20250124234235-87e3e5e2c7f9"
|
||||||
# ];
|
|
||||||
# };
|
# https://github.com/tailscale/caddy-tailscale
|
||||||
|
#// "github.com/tailscale/caddy-tailscale@v0.0.0-20250207004440-fd3f49d73216"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
# TODO: Convert services to Tailscale subdomains when supported or use plugin when supported by nix
|
# TODO: Convert services to Tailscale subdomains when supported or use plugin when supported by nix
|
||||||
# https://github.com/tailscale/tailscale/issues/7081
|
# https://github.com/tailscale/tailscale/issues/7081
|
||||||
|
|
21
options/custom/services/clipmenu.nix
Normal file
21
options/custom/services/clipmenu.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.custom.services.clipmenu;
|
||||||
|
in {
|
||||||
|
options.custom.services.clipmenu = {
|
||||||
|
enable = mkOption {default = false;};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
# https://github.com/cdown/clipmenu
|
||||||
|
services.clipmenu.enable = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -5,20 +5,20 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
cfg = config.custom.services.clipsync;
|
cfg = config.custom.services.clipnotify;
|
||||||
|
|
||||||
clipnotify = getExe pkgs.clipnotify;
|
clipnotify = getExe pkgs.clipnotify;
|
||||||
wl-copy = getExe' pkgs.wl-clipboard "wl-copy";
|
wl-copy = getExe' pkgs.wl-clipboard "wl-copy";
|
||||||
wl-paste = getExe' pkgs.wl-clipboard "wl-paste";
|
wl-paste = getExe' pkgs.wl-clipboard "wl-paste";
|
||||||
xclip = getExe pkgs.xclip;
|
xclip = getExe pkgs.xclip;
|
||||||
in {
|
in {
|
||||||
options.custom.services.clipsync = {
|
options.custom.services.clipnotify = {
|
||||||
enable = mkOption {default = false;};
|
enable = mkOption {default = false;};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
# https://github.com/cdown/clipnotify
|
# https://github.com/cdown/clipnotify
|
||||||
systemd.user.services.clipsync = {
|
systemd.user.services.clipnotify = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wantedBy = ["graphical-session.target"];
|
wantedBy = ["graphical-session.target"];
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ with lib; {
|
||||||
config.custom.services = mkMerge [
|
config.custom.services = mkMerge [
|
||||||
(mkIf config.custom.default {
|
(mkIf config.custom.default {
|
||||||
#// automatic-timezoned.enable = true;
|
#// automatic-timezoned.enable = true;
|
||||||
#// agenix.enable = true;
|
|
||||||
geoclue2.enable = true;
|
geoclue2.enable = true;
|
||||||
#// netbird.enable = true;
|
#// netbird.enable = true;
|
||||||
tailscale.enable = true;
|
tailscale.enable = true;
|
||||||
|
@ -35,6 +34,7 @@ with lib; {
|
||||||
#// blueman-applet.enable = true;
|
#// blueman-applet.enable = true;
|
||||||
#// clipcat.enable = true;
|
#// clipcat.enable = true;
|
||||||
#// cliphist.enable = true;
|
#// cliphist.enable = true;
|
||||||
|
#// clipmenu.enable = true;
|
||||||
easyeffects.enable = true;
|
easyeffects.enable = true;
|
||||||
gammastep.enable = true;
|
gammastep.enable = true;
|
||||||
gnome-keyring.enable = true;
|
gnome-keyring.enable = true;
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib; let
|
||||||
|
@ -24,8 +22,6 @@ in {
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users.${config.custom.username} = {
|
home-manager.users.${config.custom.username} = {
|
||||||
imports = [inputs.nix-flatpak.homeManagerModules.nix-flatpak];
|
|
||||||
|
|
||||||
# https://wiki.nixos.org/wiki/Flatpak
|
# https://wiki.nixos.org/wiki/Flatpak
|
||||||
# https://github.com/gmodena/nix-flatpak
|
# https://github.com/gmodena/nix-flatpak
|
||||||
services.flatpak = {
|
services.flatpak = {
|
||||||
|
@ -43,6 +39,14 @@ in {
|
||||||
"net.retrodeck.retrodeck" # Game emulator
|
"net.retrodeck.retrodeck" # Game emulator
|
||||||
]
|
]
|
||||||
++ optionals config.custom.full [
|
++ optionals config.custom.full [
|
||||||
|
(
|
||||||
|
# Bitwarden client
|
||||||
|
with config.custom.programs.goldwarden;
|
||||||
|
if enable && flatpak
|
||||||
|
then "com.quexten.Goldwarden"
|
||||||
|
else ""
|
||||||
|
)
|
||||||
|
|
||||||
# TODO: Check if in nixpkgs
|
# TODO: Check if in nixpkgs
|
||||||
"re.sonny.Workbench" # GTK prototyper
|
"re.sonny.Workbench" # GTK prototyper
|
||||||
];
|
];
|
||||||
|
|
|
@ -30,7 +30,7 @@ in {
|
||||||
--no-align \
|
--no-align \
|
||||||
--quiet \
|
--quiet \
|
||||||
--command 'SELECT DISTINCT(channel) FROM users_subscribed' | \
|
--command 'SELECT DISTINCT(channel) FROM users_subscribed' | \
|
||||||
${parallel} ${curl} --silent --output /dev/null 'https://pipedapi.bjork.tech/channel/{}'
|
${parallel} ${curl} --silent --output /dev/null 'https://pipedapi.${config.custom.domain}/channel/{}'
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ in {
|
||||||
jq # JSON parser
|
jq # JSON parser
|
||||||
killport # Kill processes on port
|
killport # Kill processes on port
|
||||||
libqalculate # Calculator
|
libqalculate # Calculator
|
||||||
|
lf # Terminal file manager
|
||||||
lm_sensors # System sensors
|
lm_sensors # System sensors
|
||||||
nix-output-monitor # Nix build parser
|
nix-output-monitor # Nix build parser
|
||||||
nix-tree # Nix store explorer
|
nix-tree # Nix store explorer
|
||||||
|
@ -73,6 +74,7 @@ in {
|
||||||
apostrophe # Markdown editor
|
apostrophe # Markdown editor
|
||||||
baobab # Disk usage analyzer
|
baobab # Disk usage analyzer
|
||||||
biblioteca # Documentation viewer
|
biblioteca # Documentation viewer
|
||||||
|
bitwarden-desktop # Password manager
|
||||||
blackbox-terminal # Terminal
|
blackbox-terminal # Terminal
|
||||||
cartridges # Game library
|
cartridges # Game library
|
||||||
|
|
||||||
|
@ -167,9 +169,14 @@ in {
|
||||||
zrythm # Digital audio workstation
|
zrythm # Digital audio workstation
|
||||||
|
|
||||||
#!! Must be downloaded manually due to licensing
|
#!! Must be downloaded manually due to licensing
|
||||||
# (ciscoPacketTracer8.overrideAttrs {
|
# BUG: Dangling symlinks, remove workaround when merged into unstable
|
||||||
# src = ${config.custom.sync}/linux/config/cisco/CiscoPacketTracer822_amd64_signed.deb;
|
# https://github.com/NixOS/nixpkgs/pull/380309
|
||||||
# })
|
((ciscoPacketTracer8.overrideAttrs {
|
||||||
|
dontCheckForBrokenSymlinks = true;
|
||||||
|
})
|
||||||
|
.override {
|
||||||
|
packetTracerSource = inputs.cisco-packettracer8;
|
||||||
|
})
|
||||||
|
|
||||||
### CLI applications
|
### CLI applications
|
||||||
inputs.agenix.packages.${system}.default
|
inputs.agenix.packages.${system}.default
|
||||||
|
|
|
@ -1,13 +1,10 @@
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
inputs,
|
|
||||||
lib,
|
lib,
|
||||||
options,
|
options,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [inputs.jovian-nixos.nixosModules.default];
|
|
||||||
|
|
||||||
custom = {
|
custom = {
|
||||||
minimal = true;
|
minimal = true;
|
||||||
profile = "console";
|
profile = "console";
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#// owncast.enable = true;
|
#// owncast.enable = true;
|
||||||
#// redlib.enable = true;
|
#// redlib.enable = true;
|
||||||
#// searxng.enable = true;
|
#// searxng.enable = true;
|
||||||
|
vaultwarden.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
|
|
|
@ -87,4 +87,5 @@ in {
|
||||||
"server/searxng/.env".publicKeys = server;
|
"server/searxng/.env".publicKeys = server;
|
||||||
"server/users/myned.pass".publicKeys = server;
|
"server/users/myned.pass".publicKeys = server;
|
||||||
"server/users/root.pass".publicKeys = server;
|
"server/users/root.pass".publicKeys = server;
|
||||||
|
"server/vaultwarden/.env".publicKeys = server;
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
BIN
secrets/server/vaultwarden/.env
Normal file
BIN
secrets/server/vaultwarden/.env
Normal file
Binary file not shown.
Loading…
Add table
Reference in a new issue