Merge pull request 'nixos-26.05' (#7) from nixos-26.05 into main
Reviewed-on: #7
This commit was merged in pull request #7.
This commit is contained in:
@@ -3,11 +3,11 @@
|
|||||||
{
|
{
|
||||||
system.autoUpgrade = {
|
system.autoUpgrade = {
|
||||||
enable = true;
|
enable = true;
|
||||||
flake = "git+https://git.feal.no/felixalb/nixos-config.git";
|
flake = "git+https://git.feal.no/felixalb/nixos-config.git?ref=nixos-26.05"; # TODO - restore to main
|
||||||
flags = [
|
flags = [
|
||||||
# Override nixpkgs (only). Notably does not include home-manager, sops or other utility/application flake inputs.
|
# Override nixpkgs (only). Notably does not include home-manager, sops or other utility/application flake inputs.
|
||||||
"--refresh"
|
"--refresh"
|
||||||
"--override-input" "nixpkgs" "github:NixOS/nixpkgs/nixos-25.11-small"
|
"--override-input" "nixpkgs" "github:NixOS/nixpkgs/nixos-26.05-small"
|
||||||
"--override-input" "nixpkgs-unstable" "github:nixos/nixpkgs/nixos-unstable"
|
"--override-input" "nixpkgs-unstable" "github:nixos/nixpkgs/nixos-unstable"
|
||||||
"--no-write-lock-file"
|
"--no-write-lock-file"
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -17,41 +17,6 @@ in {
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
services.promtail = {
|
# TODO: Configure fluent-bit or rsyslog
|
||||||
enable = true;
|
|
||||||
configuration = {
|
|
||||||
server = {
|
|
||||||
http_listen_port = 28183;
|
|
||||||
grpc_listen_port = 0;
|
|
||||||
};
|
|
||||||
clients = [
|
|
||||||
{
|
|
||||||
url = "http://${metricsHost}:3100/loki/api/v1/push";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
scrape_configs = [
|
|
||||||
{
|
|
||||||
job_name = "systemd-journal";
|
|
||||||
journal = {
|
|
||||||
max_age = "12h";
|
|
||||||
labels = {
|
|
||||||
job = "systemd-journal";
|
|
||||||
host = config.networking.hostName;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
relabel_configs = [
|
|
||||||
{
|
|
||||||
source_labels = [ "__journal__systemd_unit" ];
|
|
||||||
target_label = "unit";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
source_labels = [ "__journal_priority_keyword" ];
|
|
||||||
target_label = "level";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+31
-48
@@ -31,24 +31,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1731533236,
|
|
||||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -56,16 +38,16 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778401693,
|
"lastModified": 1779726825,
|
||||||
"narHash": "sha256-OVHdCqXXUF5UdGkH+FF2ZL06OLZjj2kvP2dIUmzVWoo=",
|
"narHash": "sha256-RUkMrREjKDQrA+dA9+xZviGAxM5W1aVdyOr/bSYpHrE=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "389b83002efc26f1145e89a6a8e6edc5a6435948",
|
"rev": "b179bde238977f7d4454fc770b1a727eaf55111c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-25.11",
|
"ref": "release-26.05",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -97,16 +79,16 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1764161084,
|
"lastModified": 1779036909,
|
||||||
"narHash": "sha256-HN84sByg9FhJnojkGGDSrcjcbeioFWoNXfuyYfJ1kBE=",
|
"narHash": "sha256-zXcwYQGCT6pzinK+1dBB2ekTVtfxGZAapb3Evdcu4fY=",
|
||||||
"owner": "nix-darwin",
|
"owner": "nix-darwin",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "e95de00a471d07435e0527ff4db092c84998698e",
|
"rev": "56c666e108467d87d13508936aade6d567f2a501",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-darwin",
|
"owner": "nix-darwin",
|
||||||
"ref": "nix-darwin-25.11",
|
"ref": "nix-darwin-26.05",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -114,17 +96,17 @@
|
|||||||
"nix-minecraft": {
|
"nix-minecraft": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
],
|
||||||
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1764813963,
|
"lastModified": 1780113881,
|
||||||
"narHash": "sha256-Vs7Mamto+T8r1evk9myHepgHGNJkS2Kr0BF64NIei94=",
|
"narHash": "sha256-AMOOt682Odr4GZwCwZ08/Q/21/Sh3DxfmOAoiQbTKhk=",
|
||||||
"owner": "Infinidoge",
|
"owner": "Infinidoge",
|
||||||
"repo": "nix-minecraft",
|
"repo": "nix-minecraft",
|
||||||
"rev": "491200d6848402bbab1421cccbc15a46f08c7f78",
|
"rev": "d9bd57f218cda7d6aac4b52546240da0df76a1f9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -135,22 +117,23 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778452785,
|
"lastModified": 1780203844,
|
||||||
"narHash": "sha256-7zDRz1Jr69CiWDvJSjqIF2/X8wY+d8PACt4xIvesruE=",
|
"narHash": "sha256-K5sT4jTpGs15ADhviMKNBH38REpPf5Q6mM1+N6cArVE=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9700a8ef2f85813ee04a956ab2747a22d0b67b95",
|
"rev": "b51242d7d43689db2f3be91bd05d5b24fbb469c4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-25.11-small",
|
"ref": "nixos-26.05-small",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-2211": {
|
"nixpkgs-2211": {
|
||||||
"locked": {
|
"locked": {
|
||||||
|
"lastModified": 1658083977,
|
||||||
"narHash": "sha256-yqLXI+viN5+Vx5YpG9gNapKL3/+P6Pkprc36xNdyqSU=",
|
"narHash": "sha256-yqLXI+viN5+Vx5YpG9gNapKL3/+P6Pkprc36xNdyqSU=",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/NixOS/nixpkgs/archive/34bfa9403e42eece93d1a3740e9d8a02fceafbca.tar.gz"
|
"url": "https://github.com/NixOS/nixpkgs/archive/34bfa9403e42eece93d1a3740e9d8a02fceafbca.tar.gz"
|
||||||
@@ -162,27 +145,27 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-darwin": {
|
"nixpkgs-darwin": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1764806471,
|
"lastModified": 1780020239,
|
||||||
"narHash": "sha256-NsPsz003eWD8wp8vj5BnQzPoDyeQKRUfS2dvan2Y30M=",
|
"narHash": "sha256-ik+V883hTc6GG7TzjxMdhEoMV0hCbQPfsRtNsB1qWUQ=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6707b1809330d0f912f5813963bb29f6f194ee81",
|
"rev": "c85dc29a9bcafa665b8ce0654ca019cdb05e63c6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixpkgs-25.11-darwin",
|
"ref": "nixpkgs-26.05-darwin",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777954456,
|
"lastModified": 1779560665,
|
||||||
"narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=",
|
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1",
|
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -202,11 +185,11 @@
|
|||||||
"uv2nix": "uv2nix"
|
"uv2nix": "uv2nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771451240,
|
"lastModified": 1780187278,
|
||||||
"narHash": "sha256-qA8rm0zxrFBVbleYEOJziggyJtZEu1DFeAo3OAkbmB4=",
|
"narHash": "sha256-vIC3RsPexOT2zcacHBcIQ5CPrPIisSLiMBS6tblGLDw=",
|
||||||
"owner": "pwndbg",
|
"owner": "pwndbg",
|
||||||
"repo": "pwndbg",
|
"repo": "pwndbg",
|
||||||
"rev": "5eb91f443cefb75fae9567aa23931670dc2277a9",
|
"rev": "07a27367b17e2b7172d6c7a2b891e4c5471275b6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -287,11 +270,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1764483358,
|
"lastModified": 1777944972,
|
||||||
"narHash": "sha256-EyyvCzXoHrbL467YSsQBTWWg4sR96MH1sPpKoSOelB4=",
|
"narHash": "sha256-VfGRo1qTBKOe3s2gOv8LSoA6Fk19PvBlwQ1ECN0Evn8=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "5aca6ff67264321d47856a2ed183729271107c9c",
|
"rev": "c591bf665727040c6cc5cb409079acb22dcce33c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -3,15 +3,15 @@
|
|||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
# Nixpkgs and friends
|
# Nixpkgs and friends
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11-small"; # Remember to update ./common/auto-upgrade.nix
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05-small"; # Remember to update ./common/auto-upgrade.nix
|
||||||
nixpkgs-darwin.url = "github:NixOS/nixpkgs/nixpkgs-25.11-darwin";
|
nixpkgs-darwin.url = "github:NixOS/nixpkgs/nixpkgs-26.05-darwin";
|
||||||
nixpkgs-2211.url = "https://github.com/NixOS/nixpkgs/archive/34bfa9403e42eece93d1a3740e9d8a02fceafbca.tar.gz"; # old nixpgks for e.g. remmina
|
nixpkgs-2211.url = "https://github.com/NixOS/nixpkgs/archive/34bfa9403e42eece93d1a3740e9d8a02fceafbca.tar.gz"; # old nixpgks for e.g. remmina
|
||||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-25.11";
|
nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-26.05";
|
||||||
nix-darwin.inputs.nixpkgs.follows = "nixpkgs-darwin";
|
nix-darwin.inputs.nixpkgs.follows = "nixpkgs-darwin";
|
||||||
|
|
||||||
home-manager.url = "github:nix-community/home-manager/release-25.11";
|
home-manager.url = "github:nix-community/home-manager/release-26.05";
|
||||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
# Other inputs
|
# Other inputs
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
bat
|
bat
|
||||||
bottom
|
bottom
|
||||||
# ncdu
|
# ncdu
|
||||||
neofetch
|
|
||||||
pwgen
|
pwgen
|
||||||
sshfs
|
sshfs
|
||||||
sshuttle
|
sshuttle
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.wayland.windowManager.hyprland;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hypridle.nix
|
||||||
|
./hyprland.nix
|
||||||
|
./hyprlock.nix
|
||||||
|
./hyprpaper.nix
|
||||||
|
./keybinds.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
systemd.user.sessionVariables = {
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
WLR_NO_HARDWARE_CURSORS = "1";
|
||||||
|
WLR_RENDERER_ALLOW_SOFTWARE = "1";
|
||||||
|
XDG_CURRENT_DESKTOP = "Hyprland";
|
||||||
|
XDG_SESSION_DESKTOP = "Hyprland";
|
||||||
|
XDG_SESSION_TYPE = "wayland";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
bibata-cursors
|
||||||
|
swaynotificationcenter
|
||||||
|
wl-clipboard
|
||||||
|
];
|
||||||
|
|
||||||
|
home.pointerCursor = {
|
||||||
|
name = "Bibata-Modern-Ice";
|
||||||
|
package = pkgs.bibata-cursors;
|
||||||
|
size = 24;
|
||||||
|
gtk.enable = true;
|
||||||
|
x11 = {
|
||||||
|
enable = true;
|
||||||
|
defaultCursor = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.wayland.windowManager.hyprland;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.hypridle = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
ignore_dbus_inhibit = false;
|
||||||
|
lock_cmd = "pidof hyprlock || ${config.programs.hyprlock.package}/bin/hyprlock";
|
||||||
|
before_sleep_cmd = "${pkgs.systemd}/bin/loginctl lock-session";
|
||||||
|
after_sleep_cmd = "${cfg.finalPackage}/bin/hyprctl dispatch dpms on";
|
||||||
|
};
|
||||||
|
|
||||||
|
listener = [
|
||||||
|
{
|
||||||
|
timeout = 8 * 60;
|
||||||
|
on-timeout = "${pkgs.libnotify}/bin/notify-send \"You are idle!\"";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
timeout = 10 * 60;
|
||||||
|
on-timeout = "${config.programs.hyprlock.package}/bin/hyprlock";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
timeout = 15 * 60;
|
||||||
|
on-timeout = "${pkgs.systemd}/bin/systemctl suspend";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO - Remove?
|
||||||
|
systemd.user.services.hypridle = {
|
||||||
|
Unit.After = lib.mkForce "graphical-session.target";
|
||||||
|
Service.Slice = "session.slice";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,180 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
osConfig,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
systemd.enable = false; # Required for UWSM
|
||||||
|
systemd.enableXdgAutostart = false;
|
||||||
|
configType = "lua";
|
||||||
|
|
||||||
|
settings =
|
||||||
|
let
|
||||||
|
wpDir = "${config.home.homeDirectory}/Pictures/wallpapers";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
on._args = [
|
||||||
|
"hyprland.start"
|
||||||
|
(lib.generators.mkLuaInline (
|
||||||
|
''
|
||||||
|
function()
|
||||||
|
''
|
||||||
|
+
|
||||||
|
|
||||||
|
lib.concatMapStringsSep "\n" (cmd: ''hl.exec_cmd("${cmd}")'') (
|
||||||
|
[
|
||||||
|
"swaync"
|
||||||
|
"hyprswitch init --size-factor 5 &"
|
||||||
|
"wl-paste --type text --watch cliphist store #Stores only text data"
|
||||||
|
"wl-paste --type image --watch cliphist store #Stores only image data"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
{
|
||||||
|
# TODO: the hyprpaper hm-module still generates the old config format, use ipc temporarily
|
||||||
|
"sisko" = [
|
||||||
|
"hyprctl hyprpaper wallpaper 'DP-1, ${wpDir}/Ultrawide_Stray_City.png'"
|
||||||
|
"hyprctl hyprpaper wallpaper 'DP-2, ${wpDir}/cyberpunk-gas-station-1.jpg'"
|
||||||
|
];
|
||||||
|
"fa-t14-2025" = [
|
||||||
|
"hyprctl hyprpaper wallpaper ', ${wpDir}/mktv-wallpaper-01.png'"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
."${osConfig.networking.hostName}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
+ ''
|
||||||
|
end
|
||||||
|
''
|
||||||
|
))
|
||||||
|
];
|
||||||
|
|
||||||
|
monitor = [
|
||||||
|
# Sisko
|
||||||
|
{
|
||||||
|
output = "desc:Philips Consumer Electronics Company 49M2C8900 AU42525000628";
|
||||||
|
mode = "highres@highrr";
|
||||||
|
position = "0x0";
|
||||||
|
scale = "1";
|
||||||
|
supports_hdr = 1;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
output = "desc:LG Electronics LG ULTRAWIDE 407NTABCV312";
|
||||||
|
mode = "highres@highrr";
|
||||||
|
position = "600x-1440";
|
||||||
|
scale = "1";
|
||||||
|
supports_hdr = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
# fa-t14-2025
|
||||||
|
{
|
||||||
|
output = "desc:Lenovo Group Limited 0x403D";
|
||||||
|
mode = "highres@highrr";
|
||||||
|
position = "0x0";
|
||||||
|
scale = "1";
|
||||||
|
supports_hdr = 1;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
output = "desc:Samsung Electric Company LS32D70xE HK2XC00156";
|
||||||
|
mode = "3840x2160@30.00";
|
||||||
|
position = "-3840x0";
|
||||||
|
scale = "1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
output = "desc:Samsung Electric Company C24F390 H4ZM501656";
|
||||||
|
mode = "1920x1080@60.00";
|
||||||
|
position = "-5760x0";
|
||||||
|
scale = "1";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Other
|
||||||
|
{
|
||||||
|
output = "";
|
||||||
|
mode = "preferred";
|
||||||
|
position = "auto";
|
||||||
|
scale = "auto";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
general = {
|
||||||
|
gaps_in = 8;
|
||||||
|
gaps_out = 12;
|
||||||
|
|
||||||
|
border_size = 1;
|
||||||
|
|
||||||
|
"col.active_border" = {
|
||||||
|
colors = [
|
||||||
|
"rgba(33ccffee)"
|
||||||
|
"rgba(00ff99ee)"
|
||||||
|
];
|
||||||
|
angle = 45;
|
||||||
|
};
|
||||||
|
"col.inactive_border" = "rgba(595959aa)";
|
||||||
|
|
||||||
|
resize_on_border = false;
|
||||||
|
allow_tearing = false;
|
||||||
|
layout = "dwindle";
|
||||||
|
};
|
||||||
|
|
||||||
|
decoration = {
|
||||||
|
rounding = 8;
|
||||||
|
|
||||||
|
active_opacity = 1.0;
|
||||||
|
inactive_opacity = 1.0;
|
||||||
|
|
||||||
|
shadow = {
|
||||||
|
enabled = true;
|
||||||
|
range = 4;
|
||||||
|
render_power = 3;
|
||||||
|
color = "rgba(1a1a1aee)";
|
||||||
|
};
|
||||||
|
|
||||||
|
blur = {
|
||||||
|
enabled = true;
|
||||||
|
size = 3;
|
||||||
|
passes = 1;
|
||||||
|
|
||||||
|
vibrancy = 0.1696;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
animations.enabled = false; # TODO
|
||||||
|
|
||||||
|
dwindle = {
|
||||||
|
preserve_split = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
master = {
|
||||||
|
new_status = "master";
|
||||||
|
};
|
||||||
|
|
||||||
|
binds = {
|
||||||
|
movefocus_cycles_fullscreen = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
force_default_wallpaper = 0;
|
||||||
|
disable_hyprland_logo = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
input = {
|
||||||
|
kb_layout = lib.mkDefault "us";
|
||||||
|
kb_variant = lib.mkDefault "intl";
|
||||||
|
kb_model = "";
|
||||||
|
kb_options = "ctrl:nocaps";
|
||||||
|
kb_rules = "";
|
||||||
|
|
||||||
|
follow_mouse = 1;
|
||||||
|
|
||||||
|
sensitivity = 0;
|
||||||
|
|
||||||
|
touchpad = {
|
||||||
|
natural_scroll = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.wayland.windowManager.hyprland;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
hide_cursor = true;
|
||||||
|
no_fade_in = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
background = [
|
||||||
|
{
|
||||||
|
path = "screenshot";
|
||||||
|
blur_passes = 3;
|
||||||
|
blur_size = 8;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
input-field = [
|
||||||
|
{
|
||||||
|
size = "200, 50";
|
||||||
|
position = "0, -80";
|
||||||
|
monitor = "";
|
||||||
|
dots_center = true;
|
||||||
|
fade_on_empty = false;
|
||||||
|
font_color = "rgb(202, 211, 245)";
|
||||||
|
inner_color = "rgb(91, 96, 120)";
|
||||||
|
outer_color = "rgb(24, 25, 38)";
|
||||||
|
outline_thickness = 5;
|
||||||
|
placeholder_text = "Password...";
|
||||||
|
shadow_passes = 2;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.wayland.windowManager.hyprland;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.hyprpaper = {
|
||||||
|
enable = true;
|
||||||
|
settings.ipc = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services.hyprpaper = {
|
||||||
|
Unit.After = lib.mkForce "graphical-session.target";
|
||||||
|
Service.Slice = "session.slice";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,291 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.wayland.windowManager.hyprland;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
wayland.windowManager.hyprland.settings =
|
||||||
|
let
|
||||||
|
exe = lib.getExe;
|
||||||
|
terminalCommand = "alacritty";
|
||||||
|
resizeAmount = toString 10;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
mod._var = "SUPER";
|
||||||
|
|
||||||
|
# https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-keysyms.h
|
||||||
|
bind =
|
||||||
|
let
|
||||||
|
lua = lib.generators.mkLuaInline;
|
||||||
|
mod = key: args: {
|
||||||
|
_args = [
|
||||||
|
(lua "mod .. \" + ${key}\"")
|
||||||
|
]
|
||||||
|
++ args;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
[
|
||||||
|
# Layout actions
|
||||||
|
|
||||||
|
(mod "U" [
|
||||||
|
(lua "hl.dsp.layout(\"togglesplit\")")
|
||||||
|
])
|
||||||
|
|
||||||
|
(mod "Y" [
|
||||||
|
(lua "hl.dsp.window.float({ action = \"toggle\" })")
|
||||||
|
])
|
||||||
|
|
||||||
|
(mod "T" [
|
||||||
|
(lua "hl.dsp.window.fullscreen({ action = \"toggle\", mode = \"maximized\" })")
|
||||||
|
])
|
||||||
|
|
||||||
|
(mod "C" [
|
||||||
|
(lua "hl.dsp.exec_cmd(\"hyprctl reload\")")
|
||||||
|
])
|
||||||
|
|
||||||
|
# Left click drag
|
||||||
|
(mod "mouse:272" [
|
||||||
|
(lua "hl.dsp.window.drag()")
|
||||||
|
(lua "{ mouse = true }")
|
||||||
|
])
|
||||||
|
|
||||||
|
# Right click drag
|
||||||
|
(mod "mouse:273" [
|
||||||
|
(lua "hl.dsp.window.resize()")
|
||||||
|
(lua "{ mouse = true }")
|
||||||
|
])
|
||||||
|
|
||||||
|
# Scroll through workspaces on this monitor
|
||||||
|
(mod "mouse_up" [
|
||||||
|
(lua "hl.dsp.focus({ workspace = \"r+1\" })")
|
||||||
|
])
|
||||||
|
(mod "mouse_down" [
|
||||||
|
(lua "hl.dsp.focus({ workspace = \"r-1\" })")
|
||||||
|
])
|
||||||
|
|
||||||
|
# Window actions
|
||||||
|
(mod "W" [
|
||||||
|
(lua "hl.dsp.window.close()")
|
||||||
|
])
|
||||||
|
|
||||||
|
(mod "SHIFT + W" [
|
||||||
|
(lua "hl.dsp.window.kill()")
|
||||||
|
])
|
||||||
|
|
||||||
|
# Application launches
|
||||||
|
(mod "RETURN" [
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${terminalCommand}\")")
|
||||||
|
])
|
||||||
|
|
||||||
|
(mod "SPACE" [
|
||||||
|
(lua "hl.dsp.exec_cmd(\"rofi -show drun\")")
|
||||||
|
])
|
||||||
|
|
||||||
|
(mod "A" [
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${exe pkgs.pavucontrol}\")")
|
||||||
|
])
|
||||||
|
|
||||||
|
(mod "B" [
|
||||||
|
(lua "hl.dsp.exec_cmd(\"rofi-rbw\")")
|
||||||
|
])
|
||||||
|
|
||||||
|
(mod "N" [
|
||||||
|
(lua "hl.dsp.exec_cmd(\"swaync-client -t -sw\")")
|
||||||
|
])
|
||||||
|
|
||||||
|
(mod "P" [
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${terminalCommand} -e python3\")")
|
||||||
|
])
|
||||||
|
|
||||||
|
(mod "V" [
|
||||||
|
(lua "hl.dsp.exec_cmd(\"rofi -modi clipboard:${pkgs.cliphist}/bin/cliphist-rofi-img -show clipboard\")")
|
||||||
|
])
|
||||||
|
|
||||||
|
# Focus workspace
|
||||||
|
(mod "1" [ (lua "hl.dsp.focus({ workspace = 1 })") ])
|
||||||
|
(mod "2" [ (lua "hl.dsp.focus({ workspace = 2 })") ])
|
||||||
|
(mod "3" [ (lua "hl.dsp.focus({ workspace = 3 })") ])
|
||||||
|
(mod "4" [ (lua "hl.dsp.focus({ workspace = 4 })") ])
|
||||||
|
(mod "5" [ (lua "hl.dsp.focus({ workspace = 5 })") ])
|
||||||
|
(mod "6" [ (lua "hl.dsp.focus({ workspace = 6 })") ])
|
||||||
|
(mod "7" [ (lua "hl.dsp.focus({ workspace = 7 })") ])
|
||||||
|
(mod "8" [ (lua "hl.dsp.focus({ workspace = 8 })") ])
|
||||||
|
(mod "9" [ (lua "hl.dsp.focus({ workspace = 9 })") ])
|
||||||
|
|
||||||
|
# Move window to workspace
|
||||||
|
(mod "SHIFT + 1" [ (lua "hl.dsp.window.move({ workspace = 1 })") ])
|
||||||
|
(mod "SHIFT + 2" [ (lua "hl.dsp.window.move({ workspace = 2 })") ])
|
||||||
|
(mod "SHIFT + 3" [ (lua "hl.dsp.window.move({ workspace = 3 })") ])
|
||||||
|
(mod "SHIFT + 4" [ (lua "hl.dsp.window.move({ workspace = 4 })") ])
|
||||||
|
(mod "SHIFT + 5" [ (lua "hl.dsp.window.move({ workspace = 5 })") ])
|
||||||
|
(mod "SHIFT + 6" [ (lua "hl.dsp.window.move({ workspace = 6 })") ])
|
||||||
|
(mod "SHIFT + 7" [ (lua "hl.dsp.window.move({ workspace = 7 })") ])
|
||||||
|
(mod "SHIFT + 8" [ (lua "hl.dsp.window.move({ workspace = 8 })") ])
|
||||||
|
(mod "SHIFT + 9" [ (lua "hl.dsp.window.move({ workspace = 9 })") ])
|
||||||
|
|
||||||
|
# Focus window
|
||||||
|
(mod "LEFT" [ (lua "hl.dsp.focus({ direction=\"left\" })") ])
|
||||||
|
(mod "RIGHT" [ (lua "hl.dsp.focus({ direction=\"right\" })") ])
|
||||||
|
(mod "UP" [ (lua "hl.dsp.focus({ direction=\"up\" })") ])
|
||||||
|
(mod "DOWN" [ (lua "hl.dsp.focus({ direction=\"down\" })") ])
|
||||||
|
(mod "H" [ (lua "hl.dsp.focus({ direction=\"left\" })") ])
|
||||||
|
(mod "L" [ (lua "hl.dsp.focus({ direction=\"right\" })") ])
|
||||||
|
(mod "K" [ (lua "hl.dsp.focus({ direction=\"up\" })") ])
|
||||||
|
(mod "J" [ (lua "hl.dsp.focus({ direction=\"down\" })") ])
|
||||||
|
|
||||||
|
# Move window
|
||||||
|
(mod "SHIFT + LEFT" [ (lua "hl.dsp.window.move({ direction=\"left\" })") ])
|
||||||
|
(mod "SHIFT + RIGHT" [ (lua "hl.dsp.window.move({ direction=\"right\" })") ])
|
||||||
|
(mod "SHIFT + UP" [ (lua "hl.dsp.window.move({ direction=\"up\" })") ])
|
||||||
|
(mod "SHIFT + DOWN" [ (lua "hl.dsp.window.move({ direction=\"down\" })") ])
|
||||||
|
(mod "SHIFT + H" [ (lua "hl.dsp.window.move({ direction=\"left\" })") ])
|
||||||
|
(mod "SHIFT + L" [ (lua "hl.dsp.window.move({ direction=\"right\" })") ])
|
||||||
|
(mod "SHIFT + K" [ (lua "hl.dsp.window.move({ direction=\"up\" })") ])
|
||||||
|
(mod "SHIFT + J" [ (lua "hl.dsp.window.move({ direction=\"down\" })") ])
|
||||||
|
|
||||||
|
# Resize window
|
||||||
|
(mod "CONTROL + LEFT" [
|
||||||
|
(lua "hl.dsp.window.resize({ x = -${resizeAmount}, y = 0, relative = true })")
|
||||||
|
(lua "{ repeating = true }")
|
||||||
|
])
|
||||||
|
(mod "CONTROL + RIGHT" [
|
||||||
|
(lua "hl.dsp.window.resize({ x = ${resizeAmount}, y = 0, relative = true })")
|
||||||
|
(lua "{ repeating = true }")
|
||||||
|
])
|
||||||
|
(mod "CONTROL + UP" [
|
||||||
|
(lua "hl.dsp.window.resize({ x = 0, y = -${resizeAmount}, relative = true })")
|
||||||
|
(lua "{ repeating = true }")
|
||||||
|
])
|
||||||
|
(mod "CONTROL + DOWN" [
|
||||||
|
(lua "hl.dsp.window.resize({ x = 0, y = ${resizeAmount}, relative = true })")
|
||||||
|
(lua "{ repeating = true }")
|
||||||
|
])
|
||||||
|
(mod "CONTROL + H" [
|
||||||
|
(lua "hl.dsp.window.resize({ x = -${resizeAmount}, y = 0, relative = true })")
|
||||||
|
(lua "{ repeating = true }")
|
||||||
|
])
|
||||||
|
(mod "CONTROL + L" [
|
||||||
|
(lua "hl.dsp.window.resize({ x = ${resizeAmount}, y = 0, relative = true })")
|
||||||
|
(lua "{ repeating = true }")
|
||||||
|
])
|
||||||
|
(mod "CONTROL + K" [
|
||||||
|
(lua "hl.dsp.window.resize({ x = 0, y = -${resizeAmount}, relative = true })")
|
||||||
|
(lua "{ repeating = true }")
|
||||||
|
])
|
||||||
|
(mod "CONTROL + J" [
|
||||||
|
(lua "hl.dsp.window.resize({ x = 0, y = ${resizeAmount}, relative = true })")
|
||||||
|
(lua "{ repeating = true }")
|
||||||
|
])
|
||||||
|
|
||||||
|
# TODO - replace with hyprlock?
|
||||||
|
(mod "F1" [ (lua "hl.dsp.exec_cmd(\"${pkgs.systemd}/bin/loginctl lock-session\")") ])
|
||||||
|
|
||||||
|
# Screenshots
|
||||||
|
{
|
||||||
|
_args = [
|
||||||
|
(lua "\"PRINT\"")
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${exe pkgs.hyprshot} -m output --clipboard-only\")")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
_args = [
|
||||||
|
(lua "\"CTRL + PRINT\"")
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${exe pkgs.hyprshot} -m region --clipboard-only\")")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
_args = [
|
||||||
|
(lua "\"CTRL + SHIFT + PRINT\"")
|
||||||
|
(lua "hl.dsp.exec_cmd(\"HYPRSHOT_DIR=/home/felixalb/images/screenshots ${exe pkgs.hyprshot} -m region \")")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
# Media controls
|
||||||
|
{
|
||||||
|
_args = [
|
||||||
|
(lua "\"XF86AudioPlay\"")
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${exe pkgs.playerctl} play-pause\")")
|
||||||
|
(lua "{ locked = true }")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
_args = [
|
||||||
|
(lua "\"XF86AudioPause\"")
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${exe pkgs.playerctl} play-pause\")")
|
||||||
|
(lua "{ locked = true }")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
_args = [
|
||||||
|
(lua "\"XF86AudioPrev\"")
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${exe pkgs.playerctl} previous\")")
|
||||||
|
(lua "{ locked = true }")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
_args = [
|
||||||
|
(lua "\"XF86AudioNext\"")
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${exe pkgs.playerctl} next\")")
|
||||||
|
(lua "{ locked = true }")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
_args = [
|
||||||
|
(lua "\"XF86AudioMute\"")
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle\")")
|
||||||
|
(lua "{ locked = true, repeating = true }")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
_args = [
|
||||||
|
(lua "\"XF86AudioMicMute\"")
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle\")")
|
||||||
|
(lua "{ locked = true, repeating = true }")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
_args = [
|
||||||
|
(lua "\"XF86AudioLowerVolume\"")
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-\")")
|
||||||
|
(lua "{ locked = true, repeating = true }")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
_args = [
|
||||||
|
(lua "\"XF86AudioRaiseVolume\"")
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+\")")
|
||||||
|
(lua "{ locked = true, repeating = true }")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
# Laptop controls
|
||||||
|
{
|
||||||
|
_args = [
|
||||||
|
(lua "\"XF86MonBrightnessUp\"")
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${exe pkgs.brightnessctl} s 10%+\")")
|
||||||
|
(lua "{ locked = true, repeating = true }")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
_args = [
|
||||||
|
(lua "\"XF86MonBrightnessDown\"")
|
||||||
|
(lua "hl.dsp.exec_cmd(\"${exe pkgs.brightnessctl} s 10%-\")")
|
||||||
|
(lua "{ locked = true, repeating = true }")
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
+4
-1
@@ -24,16 +24,19 @@ in {
|
|||||||
nvim-treesitter
|
nvim-treesitter
|
||||||
|
|
||||||
coc-css
|
coc-css
|
||||||
coc-go
|
|
||||||
coc-html
|
coc-html
|
||||||
coc-json
|
coc-json
|
||||||
coc-nvim
|
coc-nvim
|
||||||
|
|
||||||
vim-nix
|
vim-nix
|
||||||
vim-puppet
|
vim-puppet
|
||||||
|
|
||||||
|
go-nvim
|
||||||
];
|
];
|
||||||
|
|
||||||
withNodeJs = true;
|
withNodeJs = true;
|
||||||
|
withPython3 = true;
|
||||||
|
withRuby = false;
|
||||||
|
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
let mapleader = ','
|
let mapleader = ','
|
||||||
|
|||||||
+264
@@ -0,0 +1,264 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.programs.waybar;
|
||||||
|
cfgs = cfg.settings.mainBar;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.waybar = {
|
||||||
|
systemd.enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
mainBar = {
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
height = 26;
|
||||||
|
|
||||||
|
modules-left = [ "hyprland/workspaces" ];
|
||||||
|
modules-center = [ "hyprland/window" ];
|
||||||
|
modules-right = [
|
||||||
|
"tray"
|
||||||
|
"network"
|
||||||
|
"pulseaudio"
|
||||||
|
"battery"
|
||||||
|
"clock#date"
|
||||||
|
"clock"
|
||||||
|
];
|
||||||
|
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
persistent-workspaces = {
|
||||||
|
"*" = 8;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"hyprland/window" = {
|
||||||
|
"format" = "{initialTitle}";
|
||||||
|
};
|
||||||
|
|
||||||
|
tray = {
|
||||||
|
spacing = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
clock = {
|
||||||
|
"tooltip-format" = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
||||||
|
format = " {:%H:%M:%S}";
|
||||||
|
"format-alt" = " {:%Y-%m-%d}";
|
||||||
|
interval = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
"clock#date" = {
|
||||||
|
format = " {:%d.%m.%Y}";
|
||||||
|
"tooltip-format" = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
||||||
|
};
|
||||||
|
|
||||||
|
"battery" = {
|
||||||
|
"states" = {
|
||||||
|
"warning" = 30;
|
||||||
|
"critical" = 15;
|
||||||
|
};
|
||||||
|
"format" = "{icon} {capacity}%";
|
||||||
|
"format-charging" = " {capacity}%";
|
||||||
|
"format-plugged" = " {capacity}%";
|
||||||
|
"format-icons" = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
"on-click" = "ags -t quicksettings";
|
||||||
|
};
|
||||||
|
"pulseaudio" = {
|
||||||
|
"format" = "{icon} {volume}% {format_source}";
|
||||||
|
"format-bluetooth" = " {icon} {volume}% {format_source}";
|
||||||
|
"format-bluetooth-muted" = " {icon} {format_source}";
|
||||||
|
"format-muted" = " {format_source}";
|
||||||
|
"format-source" = "";
|
||||||
|
"format-source-muted" = "";
|
||||||
|
"format-icons" = {
|
||||||
|
"default" = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"on-click" = "pavucontrol";
|
||||||
|
};
|
||||||
|
"network" = {
|
||||||
|
"format-wifi" = " {essid}";
|
||||||
|
"format-ethernet" = "⬇{bandwidthDownBytes} ⬆{bandwidthUpBytes}";
|
||||||
|
"interval" = 3;
|
||||||
|
"format-linked" = "{ifname} (No IP) ";
|
||||||
|
"format" = "";
|
||||||
|
"format-disconnected" = "";
|
||||||
|
"on-click" = "alacritty -e nmtui";
|
||||||
|
"tooltip-format" = " {bandwidthUpBits} {bandwidthDownBits}\n{ifname}\n{ipaddr}/{cidr}\n";
|
||||||
|
"tooltip-format-wifi" =
|
||||||
|
" {essid} {frequency}MHz\nStrength: {signaldBm}dBm ({signalStrength}%)\nIP: {ipaddr}/{cidr}\n {bandwidthUpBits} {bandwidthDownBits}";
|
||||||
|
"min-length" = 10;
|
||||||
|
"max-length" = 17;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
style =
|
||||||
|
let
|
||||||
|
c = config.colors.defaultColorSet;
|
||||||
|
in
|
||||||
|
''
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Catppuccin Mocha palette
|
||||||
|
* Maintainer: rubyowo
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@define-color background #1e1e2e;
|
||||||
|
@define-color foreground #cdd6f4;
|
||||||
|
@define-color mantle #181825;
|
||||||
|
@define-color crust #11111b;
|
||||||
|
|
||||||
|
@define-color subtext0 #a6adc8;
|
||||||
|
@define-color subtext1 #bac2de;
|
||||||
|
|
||||||
|
@define-color surface0 #313244;
|
||||||
|
@define-color surface1 #45475a;
|
||||||
|
@define-color surface2 #585b70;
|
||||||
|
|
||||||
|
@define-color overlay0 #6c7086;
|
||||||
|
@define-color overlay1 #7f849c;
|
||||||
|
@define-color overlay2 #9399b2;
|
||||||
|
|
||||||
|
@define-color blue #89b4fa;
|
||||||
|
@define-color lavender #b4befe;
|
||||||
|
@define-color sapphire #74c7ec;
|
||||||
|
@define-color sky #89dceb;
|
||||||
|
@define-color teal #94e2d5;
|
||||||
|
@define-color green #a6e3a1;
|
||||||
|
@define-color yellow #f9e2af;
|
||||||
|
@define-color peach #fab387;
|
||||||
|
@define-color maroon #eba0ac;
|
||||||
|
@define-color red #f38ba8;
|
||||||
|
@define-color mauve #cba6f7;
|
||||||
|
@define-color pink #f5c2e7;
|
||||||
|
@define-color flamingo #f2cdcd;
|
||||||
|
@define-color rosewater #f5e0dc;
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: "Hack Nerd Font";
|
||||||
|
font-size: 14px;
|
||||||
|
min-height: 0;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: transparent;
|
||||||
|
background-color: @background;
|
||||||
|
color: @foreground;
|
||||||
|
transition-property: background-color;
|
||||||
|
transition-duration: 0.1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
margin: 2;
|
||||||
|
padding-left: 8;
|
||||||
|
padding-right: 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
box-shadow: inset 0 -3px transparent;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover {
|
||||||
|
background: inherit;
|
||||||
|
border-top: 2px solid @hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 0 4px;
|
||||||
|
color: gray;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.empty {
|
||||||
|
color: #404040;
|
||||||
|
font-weight: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
background-color: rgba(0, 0, 0, 0.3);
|
||||||
|
color: white;
|
||||||
|
border-top: 2px solid @blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
background-color: #eb4d4b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio,
|
||||||
|
#clock,
|
||||||
|
#battery,
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#disk,
|
||||||
|
#temperature,
|
||||||
|
#backlight,
|
||||||
|
#wireplumber,
|
||||||
|
#tray,
|
||||||
|
#mode,
|
||||||
|
#scratchpad {
|
||||||
|
margin-left: 4px;
|
||||||
|
margin-right: 4px;
|
||||||
|
padding-left: 4px;
|
||||||
|
padding-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
color: @maroon;
|
||||||
|
border-bottom: 2px solid @maroon;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock.date {
|
||||||
|
color: @mauve;
|
||||||
|
border-bottom: 2px solid @mauve;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio {
|
||||||
|
color: @blue;
|
||||||
|
border-bottom: 2px solid @blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
color: @yellow;
|
||||||
|
border-bottom: 2px solid @yellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
#idle_inhibitor {
|
||||||
|
margin-right: 12px;
|
||||||
|
color: #7cb342;
|
||||||
|
}
|
||||||
|
|
||||||
|
#idle_inhibitor.activated {
|
||||||
|
color: @red;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.charging,
|
||||||
|
#battery.plugged {
|
||||||
|
color: @green;
|
||||||
|
border-bottom: 2px solid @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If workspaces is the leftmost module, omit left margin */
|
||||||
|
.modules-left>widget:first-child>#workspaces {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services.waybar = lib.mkIf (cfg.enable && cfg.systemd.enable) {
|
||||||
|
Service.Environment = [
|
||||||
|
"DISPLAY=:0"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -49,13 +49,23 @@
|
|||||||
security.polkit.enable = true; # Required for nextcloud
|
security.polkit.enable = true; # Required for nextcloud
|
||||||
|
|
||||||
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
||||||
"nvidia-x11"
|
"nvidia-kernel-modules"
|
||||||
"nvidia-settings"
|
"nvidia-settings"
|
||||||
|
"nvidia-x11"
|
||||||
];
|
];
|
||||||
|
|
||||||
hardware.nvidia = {
|
hardware.nvidia = {
|
||||||
modesetting.enable = true;
|
modesetting.enable = true;
|
||||||
open = false;
|
open = false;
|
||||||
|
# https://github.com/sircam-html/nixos-conf/blob/main/guides/nvidia-nixos-guide.md
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.mkDriver {
|
||||||
|
version = "580.142";
|
||||||
|
sha256_64bit = "sha256-IJFfzz/+icNVDPk7YKBKKFRTFQ2S4kaOGRGkNiBEdWM=";
|
||||||
|
sha256_aarch64 = "sha256-0000000000000000000000000000000000000000000=";
|
||||||
|
openSha256 = "sha256-0000000000000000000000000000000000000000000=";
|
||||||
|
settingsSha256 = "sha256-BnrIlj5AvXTfqg/qcBt2OS9bTDDZd3uhf5jqOtTMTQM=";
|
||||||
|
persistencedSha256 = "sha256-0000000000000000000000000000000000000000000=";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.graphics.enable = true;
|
hardware.graphics.enable = true;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
"/export/riker-backup" = {
|
"/export/riker-backup" = {
|
||||||
device = "/tank/backup/riker";
|
device = "/tank/backup/riker";
|
||||||
options = [ "bind" ];
|
options = [ "bind" ];
|
||||||
|
fsType = "none";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
zfs = {
|
zfs = {
|
||||||
extraPools = [ "tank" ];
|
extraPools = [ "tank" ];
|
||||||
requestEncryptionCredentials = false;
|
requestEncryptionCredentials = false;
|
||||||
|
forceImportRoot = false;
|
||||||
};
|
};
|
||||||
supportedFilesystems = [ "zfs" ];
|
supportedFilesystems = [ "zfs" ];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
device = "/tank/nvr/frigate";
|
device = "/tank/nvr/frigate";
|
||||||
depends = [ "/tank/nvr/frigate" ];
|
depends = [ "/tank/nvr/frigate" ];
|
||||||
options = [ "bind" ];
|
options = [ "bind" ];
|
||||||
|
fsType = "none";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ let
|
|||||||
in {
|
in {
|
||||||
services.nextcloud = {
|
services.nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nextcloud32;
|
package = pkgs.nextcloud33;
|
||||||
inherit hostName;
|
inherit hostName;
|
||||||
home = "/tank/nextcloud";
|
home = "/tank/nextcloud";
|
||||||
https = true;
|
https = true;
|
||||||
@@ -75,7 +75,7 @@ in {
|
|||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
cfg.occ # "occ CMD" in the docs -> "sudo -u nextcloud nextcloud-occ CMD"
|
cfg.occ # "occ CMD" in the docs -> "sudo -u nextcloud nextcloud-occ CMD"
|
||||||
pkgs.nodejs_20 # For Recognize; Put /run/current-system/sw/bin/node in the "node_binary" field in the web UI -> Memories
|
pkgs.nodejs # For Recognize; Put /run/current-system/sw/bin/node in the "node_binary" field in the web UI -> Memories
|
||||||
];
|
];
|
||||||
|
|
||||||
sops.secrets."nextcloud/adminpass" = {
|
sops.secrets."nextcloud/adminpass" = {
|
||||||
|
|||||||
@@ -3,7 +3,11 @@
|
|||||||
# Boot drives are defined in ./hardware-configuration.nix
|
# Boot drives are defined in ./hardware-configuration.nix
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
zfs.extraPools = [ "tank" ];
|
zfs = {
|
||||||
|
extraPools = [ "tank" ];
|
||||||
|
forceImportRoot = false;
|
||||||
|
};
|
||||||
|
|
||||||
supportedFilesystems = [ "zfs" ];
|
supportedFilesystems = [ "zfs" ];
|
||||||
};
|
};
|
||||||
services.prometheus.exporters.zfs.enable = true;
|
services.prometheus.exporters.zfs.enable = true;
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
fileSystems."/var/lib/libvirt/images" = {
|
fileSystems."/var/lib/libvirt/images" = {
|
||||||
device = "/tank/iso";
|
device = "/tank/iso";
|
||||||
options = [ "bind" ];
|
options = [ "bind" ];
|
||||||
|
fsType = "none";
|
||||||
};
|
};
|
||||||
|
|
||||||
# On a gui-enabled machine, connect with:
|
# On a gui-enabled machine, connect with:
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ in {
|
|||||||
|
|
||||||
ui = {
|
ui = {
|
||||||
THEMES="gitea,arc-green,nord";
|
THEMES="gitea,arc-green,nord";
|
||||||
#DEFAULT_THEME="nord";
|
DEFAULT_THEME="nord";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -9,10 +9,15 @@ in {
|
|||||||
|
|
||||||
# TODO: Migrate sqlite to postgres
|
# TODO: Migrate sqlite to postgres
|
||||||
|
|
||||||
settings.server = {
|
settings = {
|
||||||
domain = "grafana.home.feal.no";
|
server = {
|
||||||
http_port = 2342;
|
domain = "grafana.home.feal.no";
|
||||||
http_addr = "127.0.0.1";
|
http_port = 2342;
|
||||||
|
http_addr = "127.0.0.1";
|
||||||
|
};
|
||||||
|
security = {
|
||||||
|
secret_key = "SW2YcwTIb9zpOOhoPsMm"; # TODO - Rotate
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
provision = {
|
provision = {
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
services.prometheus.exporters.snmp = {
|
# TODO - Fix. Broken in 26.05
|
||||||
enable = true;
|
# services.prometheus.exporters.snmp = {
|
||||||
configurationPath = ./snmp-exporter-conf.yml;
|
# enable = true;
|
||||||
# snmp.yml is built from
|
# configurationPath = ./snmp-exporter-conf.yml;
|
||||||
# https://github.com/prometheus/snmp_exporter/blob/main/snmp.yml
|
# # snmp.yml is built from
|
||||||
# and
|
# # https://github.com/prometheus/snmp_exporter/blob/main/snmp.yml
|
||||||
# https://global.download.synology.com/download/Document/Software/DeveloperGuide/Firmware/DSM/All/enu/Synology_DiskStation_MIB_Guide.pdf
|
# # and
|
||||||
};
|
# # https://global.download.synology.com/download/Document/Software/DeveloperGuide/Firmware/DSM/All/enu/Synology_DiskStation_MIB_Guide.pdf
|
||||||
|
# };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ let
|
|||||||
dnsHost = "192.168.10.175";
|
dnsHost = "192.168.10.175";
|
||||||
webuiListen = "127.0.1.2:5053";
|
webuiListen = "127.0.1.2:5053";
|
||||||
in {
|
in {
|
||||||
# Flame - Homelab dashboard/linktree
|
# Pihole - Ad-blocking DNS recursor and authoritative DNS/DHCP
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
pihole = {
|
pihole = {
|
||||||
image = "pihole/pihole";
|
image = "pihole/pihole";
|
||||||
|
|||||||
@@ -16,10 +16,10 @@ in {
|
|||||||
privateKeyFile = "/etc/wireguard/defiant.private";
|
privateKeyFile = "/etc/wireguard/defiant.private";
|
||||||
|
|
||||||
postSetup = ''
|
postSetup = ''
|
||||||
${pkgs.iptables}/bin/iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -d 192.168.10.0/24 -o eth0 -j MASQUERADE
|
${pkgs.iptables}/bin/iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -d 192.168.10.0/24 -o enp3s0 -j MASQUERADE
|
||||||
'';
|
'';
|
||||||
postShutdown = ''
|
postShutdown = ''
|
||||||
${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -s 10.100.0.0/24 -d 192.168.10.0/24 -o eth0 -j MASQUERADE
|
${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -s 10.100.0.0/24 -d 192.168.10.0/24 -o enp3s0 -j MASQUERADE
|
||||||
'';
|
'';
|
||||||
|
|
||||||
peers = (import ../../../common/wireguard-peers.nix);
|
peers = (import ../../../common/wireguard-peers.nix);
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
imports = [
|
||||||
[
|
../../base.nix
|
||||||
../../base.nix
|
./hardware-configuration.nix
|
||||||
./hardware-configuration.nix
|
|
||||||
|
|
||||||
./desktop.nix
|
./desktop.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
@@ -49,10 +53,13 @@
|
|||||||
console.keyMap = "no";
|
console.keyMap = "no";
|
||||||
|
|
||||||
nixpkgs.config = {
|
nixpkgs.config = {
|
||||||
allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
allowUnfreePredicate =
|
||||||
"securecrt"
|
pkg:
|
||||||
"securefx"
|
builtins.elem (lib.getName pkg) [
|
||||||
];
|
"microsoft-edge"
|
||||||
|
"securecrt"
|
||||||
|
"securefx"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "25.05";
|
system.stateVersion = "25.05";
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
hardware.graphics.enable = true;
|
hardware.graphics.enable = true;
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
@@ -12,7 +17,9 @@
|
|||||||
services.gnome.gnome-keyring.enable = true;
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
programs.hyprland = {
|
programs.hyprland = {
|
||||||
|
# See configuration (through home-manager) in home/hypr
|
||||||
enable = true;
|
enable = true;
|
||||||
|
withUWSM = true;
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+30
-24
@@ -1,10 +1,13 @@
|
|||||||
{ pkgs, lib, ... }:
|
{ pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
emailAddress = "felix.albrigtsen@mktv.no";
|
emailAddress = "felix.albrigtsen@mktv.no";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./../../home/base.nix
|
./../../home/base.nix
|
||||||
./../../home/alacritty.nix
|
./../../home/alacritty.nix
|
||||||
|
./../../home/waybar.nix
|
||||||
|
./../../home/hypr
|
||||||
];
|
];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
@@ -19,7 +22,9 @@ in {
|
|||||||
iperf3
|
iperf3
|
||||||
jq
|
jq
|
||||||
libreoffice
|
libreoffice
|
||||||
|
microsoft-edge
|
||||||
mpv
|
mpv
|
||||||
|
nixpkgs-2211.remmina
|
||||||
oauth2ms
|
oauth2ms
|
||||||
oldssh
|
oldssh
|
||||||
openssl
|
openssl
|
||||||
@@ -29,43 +34,42 @@ in {
|
|||||||
traceroute
|
traceroute
|
||||||
virt-manager
|
virt-manager
|
||||||
w3m
|
w3m
|
||||||
nixpkgs-2211.remmina
|
|
||||||
|
|
||||||
unstable.microsoft-edge
|
|
||||||
# (unstable.microsoft-edge.overrideAttrs ({ installPhase ? "", ... }: {
|
|
||||||
# installPhase = installPhase + ''
|
|
||||||
# ln -s $out/bin/microsoft-edge $out/bin/microsoft-edge-stable
|
|
||||||
# '';
|
|
||||||
# }))
|
|
||||||
|
|
||||||
# Window Manager Extras
|
# Window Manager Extras
|
||||||
bibata-cursors
|
|
||||||
brightnessctl
|
brightnessctl
|
||||||
cliphist
|
cliphist
|
||||||
hyprcursor
|
|
||||||
hypridle
|
|
||||||
hyprlock
|
|
||||||
hyprpaper
|
|
||||||
hyprshot
|
|
||||||
nautilus
|
nautilus
|
||||||
rofi-rbw-wayland
|
rofi-rbw-wayland
|
||||||
swaynotificationcenter
|
swaynotificationcenter
|
||||||
waybar
|
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
|
|
||||||
(python312.withPackages (ps: with ps; [
|
(python312.withPackages (
|
||||||
numpy
|
ps: with ps; [
|
||||||
pycryptodome
|
numpy
|
||||||
requests
|
pycryptodome
|
||||||
]))
|
requests
|
||||||
|
]
|
||||||
|
))
|
||||||
];
|
];
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
# Override settings from home/hypr/hyprland.nix
|
||||||
|
settings.config.input = {
|
||||||
|
kb_layout = "no";
|
||||||
|
kb_variant = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
aerc = {
|
aerc = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.aerc;
|
package = pkgs.aerc;
|
||||||
};
|
};
|
||||||
firefox.enable = true;
|
firefox = {
|
||||||
|
enable = true;
|
||||||
|
configPath = ".mozilla/firefox"; # Old default before 26.05
|
||||||
|
};
|
||||||
git.settings.user.email = emailAddress;
|
git.settings.user.email = emailAddress;
|
||||||
rbw = {
|
rbw = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -73,7 +77,7 @@ in {
|
|||||||
base_url = "https://vault.mktv.no";
|
base_url = "https://vault.mktv.no";
|
||||||
email = emailAddress;
|
email = emailAddress;
|
||||||
pinentry = pkgs.pinentry-rofi;
|
pinentry = pkgs.pinentry-rofi;
|
||||||
lock_timeout = 60*60*8;
|
lock_timeout = 60 * 60 * 8;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
rofi = {
|
rofi = {
|
||||||
@@ -81,10 +85,12 @@ in {
|
|||||||
# theme = "iggy";
|
# theme = "iggy";
|
||||||
theme = "Arc-Dark";
|
theme = "Arc-Dark";
|
||||||
};
|
};
|
||||||
|
waybar.enable = true;
|
||||||
zsh = {
|
zsh = {
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
"kssh" = "ssh -t controlnode ssh";
|
"kssh" = "ssh -t controlnode ssh";
|
||||||
"ossh" = "oldssh -oHostKeyAlgorithms=+ssh-dss -oCiphers=+aes256-cbc -oKexAlgorithms=+diffie-hellman-group14-sha1";
|
"ossh" =
|
||||||
|
"oldssh -oHostKeyAlgorithms=+ssh-dss -oCiphers=+aes256-cbc -oKexAlgorithms=+diffie-hellman-group14-sha1";
|
||||||
"rebuild" = "sudo nixos-rebuild switch --flake /config";
|
"rebuild" = "sudo nixos-rebuild switch --flake /config";
|
||||||
};
|
};
|
||||||
prezto.pmodules = [ "ssh" ];
|
prezto.pmodules = [ "ssh" ];
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
imports = [
|
||||||
[
|
../../base.nix
|
||||||
../../base.nix
|
../../common/metrics-exporters.nix
|
||||||
../../common/metrics-exporters.nix
|
./hardware-configuration.nix
|
||||||
./hardware-configuration.nix
|
|
||||||
./desktop.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# Networking
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "sisko";
|
hostName = "sisko";
|
||||||
# networkmanager.enable = true;
|
# networkmanager.enable = true;
|
||||||
@@ -23,11 +22,25 @@
|
|||||||
};
|
};
|
||||||
hostId = "b716d781";
|
hostId = "b716d781";
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
|
|
||||||
|
# Video
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
enable32Bit = true;
|
||||||
|
};
|
||||||
|
hardware.amdgpu.opencl.enable = true;
|
||||||
|
|
||||||
|
# Audio
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
jack.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Other hardware / devices
|
||||||
hardware.rtl-sdr.enable = true;
|
hardware.rtl-sdr.enable = true;
|
||||||
sops.defaultSopsFile = ../../secrets/sisko/sisko.yaml;
|
|
||||||
environment.variables = { EDITOR = "vim"; };
|
|
||||||
|
|
||||||
users.users.felixalb.extraGroups = [
|
users.users.felixalb.extraGroups = [
|
||||||
"dialout"
|
"dialout"
|
||||||
@@ -36,6 +49,32 @@
|
|||||||
"plugdev"
|
"plugdev"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# Desktop
|
||||||
|
programs.hyprland = {
|
||||||
|
# See configuration (through home-manager) in home/hypr
|
||||||
|
enable = true;
|
||||||
|
withUWSM = true;
|
||||||
|
};
|
||||||
|
services.displayManager.ly.enable = true;
|
||||||
|
services.xserver.enable = true;
|
||||||
|
services.xserver.desktopManager.xfce.enable = true;
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
fontDir.enable = true;
|
||||||
|
packages = with pkgs; [
|
||||||
|
fira-code
|
||||||
|
font-awesome
|
||||||
|
hack-font
|
||||||
|
nerd-fonts.hack
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk-sans
|
||||||
|
noto-fonts-color-emoji
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# Programs
|
||||||
|
# TODO - Move to Home-Manager
|
||||||
programs = {
|
programs = {
|
||||||
alvr = {
|
alvr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -58,7 +97,12 @@
|
|||||||
|
|
||||||
virt-manager.enable = true;
|
virt-manager.enable = true;
|
||||||
};
|
};
|
||||||
|
environment.variables = {
|
||||||
|
SSH_AUTH_SOCK = "/run/user/${toString config.users.users.felixalb.uid}/keyring/ssh";
|
||||||
|
EDITOR = "vim";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Virtualization
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
libvirtd.enable = true;
|
libvirtd.enable = true;
|
||||||
spiceUSBRedirection.enable = true;
|
spiceUSBRedirection.enable = true;
|
||||||
@@ -71,6 +115,7 @@
|
|||||||
virtualisation.docker.enable = true;
|
virtualisation.docker.enable = true;
|
||||||
virtualisation.oci-containers.backend = "docker";
|
virtualisation.oci-containers.backend = "docker";
|
||||||
|
|
||||||
|
# Nix / meta
|
||||||
nixpkgs.config = {
|
nixpkgs.config = {
|
||||||
allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
||||||
"discord"
|
"discord"
|
||||||
@@ -85,6 +130,7 @@
|
|||||||
rocmSupport = true;
|
rocmSupport = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sops.defaultSopsFile = ../../secrets/sisko/sisko.yaml;
|
||||||
services.fwupd.enable = true;
|
services.fwupd.enable = true;
|
||||||
system.stateVersion = "24.11";
|
system.stateVersion = "24.11";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,70 +0,0 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
{
|
|
||||||
# Video
|
|
||||||
hardware.graphics = {
|
|
||||||
enable = true;
|
|
||||||
enable32Bit = true;
|
|
||||||
};
|
|
||||||
hardware.amdgpu.opencl.enable = true;
|
|
||||||
services.displayManager.ly.enable = true;
|
|
||||||
services.xserver.enable = true;
|
|
||||||
|
|
||||||
services.xserver.desktopManager.xfce.enable = true;
|
|
||||||
|
|
||||||
programs.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
xwayland.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Audio
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
jack.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Misc
|
|
||||||
fonts = {
|
|
||||||
fontDir.enable = true;
|
|
||||||
packages = with pkgs; [
|
|
||||||
fira-code
|
|
||||||
font-awesome
|
|
||||||
hack-font
|
|
||||||
nerd-fonts.hack
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-cjk-sans
|
|
||||||
noto-fonts-color-emoji
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.sessionVariables = {
|
|
||||||
NIXOS_OZONE_WL = "1";
|
|
||||||
SSH_AUTH_SOCK = "/run/user/${toString config.users.users.felixalb.uid}/keyring/ssh";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.gnome.gnome-keyring.enable = true;
|
|
||||||
|
|
||||||
# Dark mode
|
|
||||||
home-manager.users.felixalb = {
|
|
||||||
dconf.settings = {
|
|
||||||
"org/gnome/desktop/interface" = {
|
|
||||||
color-scheme = "prefer-dark";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
theme = {
|
|
||||||
name = "Adwaita-dark";
|
|
||||||
package = pkgs.gnome-themes-extra;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
qt = {
|
|
||||||
enable = true;
|
|
||||||
platformTheme = "gnome";
|
|
||||||
style = "adwaita-dark";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
+28
-18
@@ -4,8 +4,12 @@
|
|||||||
imports = [
|
imports = [
|
||||||
./../../home/base.nix
|
./../../home/base.nix
|
||||||
./../../home/alacritty.nix
|
./../../home/alacritty.nix
|
||||||
|
./../../home/hypr/default.nix
|
||||||
|
./../../home/waybar.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.enable = true;
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# GUI Applications
|
# GUI Applications
|
||||||
cantata
|
cantata
|
||||||
@@ -41,19 +45,10 @@
|
|||||||
snicat
|
snicat
|
||||||
|
|
||||||
# Window Manager Extras
|
# Window Manager Extras
|
||||||
bibata-cursors
|
|
||||||
cliphist
|
cliphist
|
||||||
hyprcursor
|
|
||||||
hypridle
|
|
||||||
hyprlock
|
|
||||||
hyprpaper
|
|
||||||
hyprshot
|
|
||||||
nautilus
|
nautilus
|
||||||
networkmanager
|
networkmanager
|
||||||
rofi-rbw-wayland
|
rofi-rbw-wayland
|
||||||
swaynotificationcenter
|
|
||||||
waybar
|
|
||||||
wl-clipboard
|
|
||||||
|
|
||||||
# Misc tools
|
# Misc tools
|
||||||
abcde
|
abcde
|
||||||
@@ -95,7 +90,7 @@
|
|||||||
rbw = {
|
rbw = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
base_url = "https://pw.feal.no";
|
base_url = "https://pw.home.feal.no";
|
||||||
email = "felix@albrigtsen.it";
|
email = "felix@albrigtsen.it";
|
||||||
pinentry = pkgs.pinentry-gnome3;
|
pinentry = pkgs.pinentry-gnome3;
|
||||||
};
|
};
|
||||||
@@ -104,6 +99,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
theme = "iggy";
|
theme = "iggy";
|
||||||
};
|
};
|
||||||
|
waybar.enable = true;
|
||||||
zsh = {
|
zsh = {
|
||||||
shellAliases."rebuild" = "sudo nixos-rebuild switch --flake /config";
|
shellAliases."rebuild" = "sudo nixos-rebuild switch --flake /config";
|
||||||
prezto.pmodules = [ "ssh" ];
|
prezto.pmodules = [ "ssh" ];
|
||||||
@@ -111,6 +107,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
|
gnome-keyring.enable = true;
|
||||||
|
|
||||||
mpd = let
|
mpd = let
|
||||||
home = config.home.homeDirectory;
|
home = config.home.homeDirectory;
|
||||||
in {
|
in {
|
||||||
@@ -127,17 +125,29 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.pointerCursor = {
|
|
||||||
name = "Bibata-Modern-Ice";
|
# Dark mode
|
||||||
package = pkgs.bibata-cursors;
|
dconf.settings = {
|
||||||
size = 24;
|
"org/gnome/desktop/interface" = {
|
||||||
gtk.enable = true;
|
color-scheme = "prefer-dark";
|
||||||
x11 = {
|
|
||||||
enable = true;
|
|
||||||
defaultCursor = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
theme = {
|
||||||
|
name = "Adwaita-dark";
|
||||||
|
package = pkgs.gnome-themes-extra;
|
||||||
|
};
|
||||||
|
gtk4.theme = config.gtk.theme;
|
||||||
|
};
|
||||||
|
|
||||||
|
qt = {
|
||||||
|
enable = true;
|
||||||
|
platformTheme.name = "adwaita";
|
||||||
|
style.name = "adwaita-dark";
|
||||||
|
};
|
||||||
|
|
||||||
xdg.mimeApps = {
|
xdg.mimeApps = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -26,7 +26,7 @@
|
|||||||
prismlauncher
|
prismlauncher
|
||||||
restic
|
restic
|
||||||
snicat
|
snicat
|
||||||
# spotify # TODO - broken in 25.11
|
spotify
|
||||||
tldr
|
tldr
|
||||||
w3m
|
w3m
|
||||||
zellij
|
zellij
|
||||||
|
|||||||
Reference in New Issue
Block a user