hyprland stuff
90
flake.lock
generated
@@ -53,11 +53,11 @@
|
|||||||
"yafas": "yafas"
|
"yafas": "yafas"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723131830,
|
"lastModified": 1723531925,
|
||||||
"narHash": "sha256-H9Q2y1RJ1ixXvyK6clZ84QXHhLvGzMPOPyBg30sqhmE=",
|
"narHash": "sha256-QPETOkVNZwm3Zx0FRfkrPWScbc46I5QwIOdBmByYtKg=",
|
||||||
"owner": "chaotic-cx",
|
"owner": "chaotic-cx",
|
||||||
"repo": "nyx",
|
"repo": "nyx",
|
||||||
"rev": "c662fc42ab949b183c166d49efc7823509b20c75",
|
"rev": "b8b1c616f8b869af7bce3179ad423e3d45b0d079",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -89,11 +89,11 @@
|
|||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723080973,
|
"lastModified": 1723685697,
|
||||||
"narHash": "sha256-p7kQ4yxruANLz0FLnqYdSvqyYGwBaT9nWs2J/nrVKA4=",
|
"narHash": "sha256-Fp0MmV8FWrWFzYkLzPhkrc7Lj3NhMThCceDiETqEp9k=",
|
||||||
"owner": "lilyinstarlight",
|
"owner": "lilyinstarlight",
|
||||||
"repo": "nixos-cosmic",
|
"repo": "nixos-cosmic",
|
||||||
"rev": "d8b2b9aee034c10ca67848653171f576f87434a8",
|
"rev": "4e1950ec1b6ff25a0f20ff590bf22a3065b62022",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -173,11 +173,11 @@
|
|||||||
"rust-analyzer-src": "rust-analyzer-src"
|
"rust-analyzer-src": "rust-analyzer-src"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723098624,
|
"lastModified": 1723444276,
|
||||||
"narHash": "sha256-TFg+lq7pHgCnsB4nRmMeTxSnZXHvzYJ2IHyEiw8zEF8=",
|
"narHash": "sha256-ErWXmB84hedrDmeaHOaFFfNShC21AopTfM4x4rlvk3c=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "fenix",
|
"repo": "fenix",
|
||||||
"rev": "d6022ac563f2f48d8eeff89ca3589c8adc5235f6",
|
"rev": "70c22198ab822aa93c92a7ec0933908b17131edd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -368,11 +368,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723015306,
|
"lastModified": 1723399884,
|
||||||
"narHash": "sha256-jQnFEtH20/OsDPpx71ntZzGdRlpXhUENSQCGTjn//NA=",
|
"narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "b3d5ea65d88d67d4ec578ed11d4d2d51e3de525e",
|
"rev": "086f619dd991a4d355c07837448244029fc2d9ab",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -409,11 +409,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723015306,
|
"lastModified": 1723399884,
|
||||||
"narHash": "sha256-jQnFEtH20/OsDPpx71ntZzGdRlpXhUENSQCGTjn//NA=",
|
"narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "b3d5ea65d88d67d4ec578ed11d4d2d51e3de525e",
|
"rev": "086f619dd991a4d355c07837448244029fc2d9ab",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -446,11 +446,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723016361,
|
"lastModified": 1723367191,
|
||||||
"narHash": "sha256-iEVCAOn7WUdJGrK2EW5hkfl4gBmYl5gVck+MSn6ba44=",
|
"narHash": "sha256-noi5tre7BLtxImN38jEHeVOtOG1Xu37sJFwHKSAPHjo=",
|
||||||
"owner": "Jovian-Experiments",
|
"owner": "Jovian-Experiments",
|
||||||
"repo": "Jovian-NixOS",
|
"repo": "Jovian-NixOS",
|
||||||
"rev": "fc3d12deef508a73c7beef4cd9bebe03acde4ed7",
|
"rev": "91178062f365b64eece94c5dff93e09b07e87d9d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -659,11 +659,11 @@
|
|||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722332872,
|
"lastModified": 1723310128,
|
||||||
"narHash": "sha256-2xLM4sc5QBfi0U/AANJAW21Bj4ZX479MHPMPkB+eKBU=",
|
"narHash": "sha256-IiH8jG6PpR4h9TxSGMYh+2/gQiJW9MwehFvheSb5rPc=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "14c333162ba53c02853add87a0000cbd7aa230c2",
|
"rev": "c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -703,11 +703,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722869614,
|
"lastModified": 1723556749,
|
||||||
"narHash": "sha256-7ojM1KSk3mzutD7SkrdSflHXEujPvW1u7QuqWoTLXQU=",
|
"narHash": "sha256-+CHVZnTnIYRLYsARInHYoWkujzcRkLY/gXm3s5bE52o=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "883180e6550c1723395a3a342f830bfc5c371f6b",
|
"rev": "4a92571f9207810b559c9eac203d1f4d79830073",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -735,11 +735,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-stable_3": {
|
"nixpkgs-stable_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722869614,
|
"lastModified": 1723556749,
|
||||||
"narHash": "sha256-7ojM1KSk3mzutD7SkrdSflHXEujPvW1u7QuqWoTLXQU=",
|
"narHash": "sha256-+CHVZnTnIYRLYsARInHYoWkujzcRkLY/gXm3s5bE52o=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "883180e6550c1723395a3a342f830bfc5c371f6b",
|
"rev": "4a92571f9207810b559c9eac203d1f4d79830073",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -767,11 +767,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722813957,
|
"lastModified": 1723637854,
|
||||||
"narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=",
|
"narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa",
|
"rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -783,11 +783,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722813957,
|
"lastModified": 1723362943,
|
||||||
"narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=",
|
"narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa",
|
"rev": "a58bc8ad779655e790115244571758e8de055e3d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -799,11 +799,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722813957,
|
"lastModified": 1723362943,
|
||||||
"narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=",
|
"narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa",
|
"rev": "a58bc8ad779655e790115244571758e8de055e3d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1035,11 +1035,11 @@
|
|||||||
"rust-analyzer-src": {
|
"rust-analyzer-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723042912,
|
"lastModified": 1723304838,
|
||||||
"narHash": "sha256-Ff4nCgmlSWVOMvRVVf6gTYgmZjGw9EjIFHG0aUFg+D8=",
|
"narHash": "sha256-xAxVDxuvCs8WWkrxVWjCiqxTkHhGj7sSppr1YMuEdT8=",
|
||||||
"owner": "rust-lang",
|
"owner": "rust-lang",
|
||||||
"repo": "rust-analyzer",
|
"repo": "rust-analyzer",
|
||||||
"rev": "935883fd826c46e7e7e6de19cf24377c21f1b2ba",
|
"rev": "0daeb5c0b05cfdf2101b0f078c27539099bf38e6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1057,11 +1057,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722997267,
|
"lastModified": 1723602049,
|
||||||
"narHash": "sha256-8Pncp8IKd0f0N711CRrCGTC4iLfBE+/5kaMqyWxnYic=",
|
"narHash": "sha256-Z/noCSn9WPkv7O77dWKLcBxe4Ub4bWyNzsL5JhjaQfw=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "d720bf3cebac38c2426d77ee2e59943012854cb8",
|
"rev": "ea0bf33a11a26a62c60123c49d96011da396602c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1157,11 +1157,11 @@
|
|||||||
"nixpkgs-stable": "nixpkgs-stable_4"
|
"nixpkgs-stable": "nixpkgs-stable_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722897572,
|
"lastModified": 1723501126,
|
||||||
"narHash": "sha256-3m/iyyjCdRBF8xyehf59QlckIcmShyTesymSb+N4Ap4=",
|
"narHash": "sha256-N9IcHgj/p1+2Pvk8P4Zc1bfrMwld5PcosVA0nL6IGdE=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "8ae477955dfd9cbf5fa4eb82a8db8ddbb94e79d9",
|
"rev": "be0eec2d27563590194a9206f551a6f73d52fa34",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -86,6 +86,14 @@
|
|||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.users.matt = import ./hosts/desktop/home.nix;
|
home-manager.users.matt = import ./hosts/desktop/home.nix;
|
||||||
|
home-manager.backupFileExtension = "bakup";
|
||||||
|
specialisation.hyprland.configuration = {
|
||||||
|
home-manager.users.matt = {
|
||||||
|
home.sessionVariables = {
|
||||||
|
DUMBTEST="yaaaaaaas";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
nixos-hardware.nixosModules.common-cpu-amd
|
nixos-hardware.nixosModules.common-cpu-amd
|
||||||
|
|||||||
@@ -17,10 +17,13 @@ in
|
|||||||
|
|
||||||
# Enable nix flakes and nix-command tools
|
# Enable nix flakes and nix-command tools
|
||||||
nix = {
|
nix = {
|
||||||
settings.experimental-features = [
|
settings = {
|
||||||
"nix-command"
|
warn-dirty = false;
|
||||||
"flakes"
|
experimental-features = [
|
||||||
];
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
# Garbage collect automatically every week
|
# Garbage collect automatically every week
|
||||||
gc.automatic = lib.mkDefault true;
|
gc.automatic = lib.mkDefault true;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
user = "matt";
|
user = "matt";
|
||||||
password = "$y$j9T$EkPXmsmIMFFZ.WRrBYCxS1$P0kwo6e4.WM5DsqUcEqWC3MrZp5KfCjxffraMFZWu06";
|
passwordFile = config.sops.secrets."desktop/matt_password".path;
|
||||||
hostname = "matt-nixos";
|
hostname = "matt-nixos";
|
||||||
|
|
||||||
resetNetworkScript = pkgs.writeScriptBin "reset-network" ''
|
resetNetworkScript = pkgs.writeScriptBin "reset-network" ''
|
||||||
@@ -33,47 +33,15 @@ in
|
|||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./boot.nix
|
./boot.nix
|
||||||
./filesystems.nix
|
./filesystems.nix
|
||||||
# ../../cachix/cachix.nix
|
./sops.nix
|
||||||
../default.nix
|
../default.nix
|
||||||
|
|
||||||
|
./hyprland
|
||||||
|
./gnome
|
||||||
];
|
];
|
||||||
|
|
||||||
specialisation = {
|
specialisation = {
|
||||||
|
|
||||||
gnome.configuration = {
|
|
||||||
services = {
|
|
||||||
xserver = {
|
|
||||||
desktopManager.gnome.enable = true;
|
|
||||||
|
|
||||||
# Enable Desktop Environment.
|
|
||||||
displayManager = {
|
|
||||||
gdm.enable = true;
|
|
||||||
gdm.wayland = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
displayManager.defaultSession = "gnome";
|
|
||||||
|
|
||||||
# Enable Flatpak
|
|
||||||
flatpak.enable = true;
|
|
||||||
|
|
||||||
# disable plasma
|
|
||||||
displayManager.sddm.enable = false;
|
|
||||||
desktopManager.plasma6.enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment = {
|
|
||||||
systemPackages = with pkgs; [
|
|
||||||
gnome-tweaks
|
|
||||||
gnomeExtensions.appindicator
|
|
||||||
gnomeExtensions.arcmenu
|
|
||||||
gnomeExtensions.dash-to-panel
|
|
||||||
gnomeExtensions.tiling-assistant
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
|
||||||
};
|
|
||||||
|
|
||||||
cosmic.configuration = {
|
cosmic.configuration = {
|
||||||
services = {
|
services = {
|
||||||
desktopManager.cosmic.enable = true;
|
desktopManager.cosmic.enable = true;
|
||||||
@@ -84,67 +52,6 @@ in
|
|||||||
desktopManager.plasma6.enable = false;
|
desktopManager.plasma6.enable = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
hyprland.configuration = {
|
|
||||||
services = {
|
|
||||||
displayManager.sddm.enable = true;
|
|
||||||
displayManager.defaultSession = "hyprland";
|
|
||||||
# disable plasma
|
|
||||||
desktopManager.plasma6.enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
xwayland.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Hint Electon apps to use wayland
|
|
||||||
environment.sessionVariables = {
|
|
||||||
NIXOS_OZONE_WL = "1";
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
hyprland
|
|
||||||
swww # for wallpapers
|
|
||||||
xdg-desktop-portal-gtk
|
|
||||||
xdg-desktop-portal-hyprland
|
|
||||||
xwayland
|
|
||||||
meson
|
|
||||||
wayland-protocols
|
|
||||||
wayland-utils
|
|
||||||
wl-clipboard
|
|
||||||
wlroots
|
|
||||||
networkmanagerapplet
|
|
||||||
kitty
|
|
||||||
rofi-wayland
|
|
||||||
wofi
|
|
||||||
dunst
|
|
||||||
libnotify
|
|
||||||
waybar
|
|
||||||
];
|
|
||||||
|
|
||||||
services.dbus.enable = true;
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
wlr.enable = true;
|
|
||||||
extraPortals = [
|
|
||||||
pkgs.xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts.fonts = with pkgs; [
|
|
||||||
nerdfonts
|
|
||||||
meslo-lgs-nf
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
(self: super: {
|
|
||||||
waybar = super.waybar.overrideAttrs (oldAttrs: {
|
|
||||||
mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
|
|
||||||
});
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
apps.discover-wrapped.enable = false;
|
apps.discover-wrapped.enable = false;
|
||||||
@@ -295,6 +202,8 @@ in
|
|||||||
nil
|
nil
|
||||||
papirus-icon-theme
|
papirus-icon-theme
|
||||||
pciutils
|
pciutils
|
||||||
|
# python3
|
||||||
|
# python3Packages.requests
|
||||||
rclone
|
rclone
|
||||||
rclone-browser
|
rclone-browser
|
||||||
rsync
|
rsync
|
||||||
@@ -311,6 +220,7 @@ in
|
|||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
STEAM_FORCE_DESKTOPUI_SCALING = "1";
|
STEAM_FORCE_DESKTOPUI_SCALING = "1";
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Configure nixpkgs
|
# Configure nixpkgs
|
||||||
@@ -327,6 +237,7 @@ in
|
|||||||
"ratbagd"
|
"ratbagd"
|
||||||
"input"
|
"input"
|
||||||
]; # Enable ‘sudo’ for the user.
|
]; # Enable ‘sudo’ for the user.
|
||||||
|
hashedPasswordFile = passwordFile;
|
||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
40
hosts/desktop/gnome/default.nix
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
specialisation.gnome.configuration = {
|
||||||
|
|
||||||
|
home-manager.users.matt = import ./home.nix;
|
||||||
|
|
||||||
|
services = {
|
||||||
|
xserver = {
|
||||||
|
desktopManager.gnome.enable = true;
|
||||||
|
|
||||||
|
# Enable Desktop Environment.
|
||||||
|
displayManager = {
|
||||||
|
gdm.enable = true;
|
||||||
|
gdm.wayland = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
displayManager.defaultSession = "gnome";
|
||||||
|
|
||||||
|
# Enable Flatpak
|
||||||
|
flatpak.enable = true;
|
||||||
|
|
||||||
|
# disable plasma
|
||||||
|
displayManager.sddm.enable = false;
|
||||||
|
desktopManager.plasma6.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
systemPackages = with pkgs; [
|
||||||
|
gnome-tweaks
|
||||||
|
gnomeExtensions.appindicator
|
||||||
|
gnomeExtensions.arcmenu
|
||||||
|
gnomeExtensions.dash-to-panel
|
||||||
|
gnomeExtensions.tiling-assistant
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||||
|
};
|
||||||
|
}
|
||||||
32
hosts/desktop/gnome/home.nix
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
dconf = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
"org/gnome/desktop/interface".clock-format = "12h";
|
||||||
|
"org/gnome/desktop/interface".color-scheme = "prefer-dark";
|
||||||
|
"org/gnome/desktop/interface".enable-hot-corners = false;
|
||||||
|
"org/gnome/desktop/interface".font-antialiasing = "grayscale";
|
||||||
|
"org/gnome/desktop/interface".font-hinting = "slight";
|
||||||
|
"org/gnome/desktop/interface".icon-theme = lib.mkDefault "Papirus-Dark";
|
||||||
|
"org/gnome/desktop/peripherals/mouse".accel-profile = "flat";
|
||||||
|
"org/gnome/desktop/peripherals/touchpad".two-finger-scrolling-enabled = true;
|
||||||
|
"org/gnome/desktop/peripherals/touchpad".tap-to-click = true;
|
||||||
|
"org/gnome/mutter".experimental-features = [
|
||||||
|
"scale-monitor-framebuffer"
|
||||||
|
"variable-refresh-rate"
|
||||||
|
];
|
||||||
|
"org/gnome/tweaks".show-extensions-notice = false;
|
||||||
|
"org/gnome/shell".enabled-extensions = [
|
||||||
|
"appindicatorsupport@rgcjonas.gmail.com"
|
||||||
|
"arcmenu@arcmenu.com"
|
||||||
|
"user-theme@gnome-shell-extensions.gcampax.github.com"
|
||||||
|
"dash-to-panel@jderose9.github.com"
|
||||||
|
"tiling-assistant@leleat-on-github"
|
||||||
|
];
|
||||||
|
"org/gnome/shell/extensions/dash-to-panel".primary-monitor = 1;
|
||||||
|
"org/gnome/shell/extensions/dash-to-panel".multi-monitors = false;
|
||||||
|
"org/gtk/settings/file-chooser".clock-format = "12h";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,4 +1,25 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
shellAliases = {
|
||||||
|
ll = "ls -alh";
|
||||||
|
update = "sudo nixos-rebuild switch --max-jobs 10";
|
||||||
|
update-flake = "sudo nix flake update ~/nix-config";
|
||||||
|
update-specialisation = "sudo nixos-rebuild switch --specialisation --max-jobs 10";
|
||||||
|
nas-update = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.18 --build-host localhost --flake ~/nix-config#jallen-nas";
|
||||||
|
nas-ssh = "ssh admin@10.0.1.18";
|
||||||
|
};
|
||||||
|
|
||||||
|
gitAliases = {
|
||||||
|
co = "checkout";
|
||||||
|
ci = "commit";
|
||||||
|
cia = "commit --amend";
|
||||||
|
s = "status";
|
||||||
|
st = "status";
|
||||||
|
b = "branch";
|
||||||
|
# p = "pull --rebase";
|
||||||
|
pu = "push";
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
home.username = "matt";
|
home.username = "matt";
|
||||||
@@ -17,14 +38,7 @@
|
|||||||
autosuggestion.enable = true;
|
autosuggestion.enable = true;
|
||||||
syntaxHighlighting.enable = true;
|
syntaxHighlighting.enable = true;
|
||||||
|
|
||||||
shellAliases = {
|
shellAliases = shellAliases;
|
||||||
ll = "ls -alh";
|
|
||||||
update = "sudo nixos-rebuild switch --max-jobs 10";
|
|
||||||
update-flake = "sudo nix flake update ~/nix-config";
|
|
||||||
update-specialisation = "sudo nixos-rebuild switch --specialisation --max-jobs 10";
|
|
||||||
nas-update = "nixos-rebuild switch --use-remote-sudo --target-host admin@jallen-nas.local --build-host localhost --flake ~/nix-config#jallen-nas";
|
|
||||||
nas-ssh = "ssh admin@jallen-nas.local";
|
|
||||||
};
|
|
||||||
|
|
||||||
oh-my-zsh = {
|
oh-my-zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -38,16 +52,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
userName = "mjallen18";
|
userName = "mjallen18";
|
||||||
userEmail = "matt.l.jallen@gmail.com";
|
userEmail = "matt.l.jallen@gmail.com";
|
||||||
aliases = {
|
aliases = gitAliases;
|
||||||
co = "checkout";
|
|
||||||
ci = "commit";
|
|
||||||
cia = "commit --amend";
|
|
||||||
s = "status";
|
|
||||||
st = "status";
|
|
||||||
b = "branch";
|
|
||||||
# p = "pull --rebase";
|
|
||||||
pu = "push";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.command-not-found.enable = true;
|
programs.command-not-found.enable = true;
|
||||||
@@ -100,65 +105,4 @@
|
|||||||
vorta
|
vorta
|
||||||
vscode
|
vscode
|
||||||
];
|
];
|
||||||
|
|
||||||
specialisation.gnome.configuration = {
|
|
||||||
dconf = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
"org/gnome/desktop/interface".clock-format = "12h";
|
|
||||||
"org/gnome/desktop/interface".color-scheme = "prefer-dark";
|
|
||||||
"org/gnome/desktop/interface".enable-hot-corners = false;
|
|
||||||
"org/gnome/desktop/interface".font-antialiasing = "grayscale";
|
|
||||||
"org/gnome/desktop/interface".font-hinting = "slight";
|
|
||||||
"org/gnome/desktop/interface".icon-theme = "Papirus-Dark";
|
|
||||||
"org/gnome/desktop/peripherals/mouse".accel-profile = "flat";
|
|
||||||
"org/gnome/desktop/peripherals/touchpad".two-finger-scrolling-enabled = true;
|
|
||||||
"org/gnome/desktop/peripherals/touchpad".tap-to-click = true;
|
|
||||||
"org/gnome/mutter".experimental-features = [
|
|
||||||
"scale-monitor-framebuffer"
|
|
||||||
"variable-refresh-rate"
|
|
||||||
];
|
|
||||||
"org/gnome/tweaks".show-extensions-notice = false;
|
|
||||||
"org/gnome/shell".enabled-extensions = [
|
|
||||||
"appindicatorsupport@rgcjonas.gmail.com"
|
|
||||||
"arcmenu@arcmenu.com"
|
|
||||||
"user-theme@gnome-shell-extensions.gcampax.github.com"
|
|
||||||
"dash-to-panel@jderose9.github.com"
|
|
||||||
"tiling-assistant@leleat-on-github"
|
|
||||||
];
|
|
||||||
"org/gnome/shell/extensions/dash-to-panel".primary-monitor = 1;
|
|
||||||
"org/gnome/shell/extensions/dash-to-panel".multi-monitors = false;
|
|
||||||
"org/gtk/settings/file-chooser".clock-format = "12h";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
specialisation.hyprland.configuration = {
|
|
||||||
wayland.windowManager.hyprland.enable = true;
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
|
||||||
"$mod" = "SUPER";
|
|
||||||
bind =
|
|
||||||
[
|
|
||||||
"$mod, F, exec, firefox"
|
|
||||||
", Print, exec, grimblast copy area"
|
|
||||||
]
|
|
||||||
++ (
|
|
||||||
# workspaces
|
|
||||||
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
|
|
||||||
builtins.concatLists (builtins.genList (
|
|
||||||
x: let
|
|
||||||
ws = let
|
|
||||||
c = (x + 1) / 10;
|
|
||||||
in
|
|
||||||
builtins.toString (x + 1 - (c * 10));
|
|
||||||
in [
|
|
||||||
"$mod, ${ws}, workspace, ${toString (x + 1)}"
|
|
||||||
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
10)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
11
hosts/desktop/hyprland/config.nix
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
let configDir = ./config;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.file = {
|
||||||
|
".config/wallpapers".source = "${configDir}/wallpapers";
|
||||||
|
".config/kitty/macchiato.conf".source = "${configDir}/kitty/macchiato.conf";
|
||||||
|
".config/wlogout".source = "${configDir}/wlogout"; #
|
||||||
|
".config/waybar/scripts".source = "${configDir}/waybar/scripts";
|
||||||
|
".config/btop/themes/catppuccin_macchiato.theme".source = "${configDir}/btop/themes/catppuccin_macchiato.theme";
|
||||||
|
};
|
||||||
|
}
|
||||||
71
hosts/desktop/hyprland/config/btop/default.nix
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
{
|
||||||
|
programs.btop = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
color_theme = "~/.config/btop/themes/catppuccin_macchiato.theme";
|
||||||
|
theme_background = true;
|
||||||
|
truecolor = true;
|
||||||
|
force_tty = false;
|
||||||
|
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty";
|
||||||
|
vim_keys = true;
|
||||||
|
rounded_corners = true;
|
||||||
|
graph_symbol = "braille";
|
||||||
|
graph_symbol_cpu = "default";
|
||||||
|
graph_symbol_mem = "default";
|
||||||
|
graph_symbol_net = "default";
|
||||||
|
graph_symbol_proc = "default";
|
||||||
|
shown_boxes = "cpu mem net proc";
|
||||||
|
update_ms = 2000;
|
||||||
|
proc_sorting = "cpu lazy";
|
||||||
|
proc_reversed = false;
|
||||||
|
proc_tree = false;
|
||||||
|
proc_colors = true;
|
||||||
|
proc_gradient = true;
|
||||||
|
proc_per_core = false;
|
||||||
|
proc_mem_bytes = true;
|
||||||
|
proc_cpu_graphs = true;
|
||||||
|
proc_info_smaps = false;
|
||||||
|
proc_left = false;
|
||||||
|
proc_filter_kernel = false;
|
||||||
|
cpu_graph_upper = "total";
|
||||||
|
cpu_graph_lower = "total";
|
||||||
|
cpu_invert_lower = true;
|
||||||
|
cpu_single_graph = false;
|
||||||
|
cpu_bottom = false;
|
||||||
|
show_uptime = true;
|
||||||
|
check_temp = true;
|
||||||
|
cpu_sensor = "Auto";
|
||||||
|
show_coretemp = true;
|
||||||
|
cpu_core_map = "";
|
||||||
|
temp_scale = "celsius";
|
||||||
|
base_10_sizes = false;
|
||||||
|
show_cpu_freq = true;
|
||||||
|
clock_format = "%X";
|
||||||
|
background_update = true;
|
||||||
|
custom_cpu_name = "";
|
||||||
|
disks_filter = "";
|
||||||
|
mem_graphs = true;
|
||||||
|
mem_below_net = false;
|
||||||
|
zfs_arc_cached = true;
|
||||||
|
show_swap = true;
|
||||||
|
swap_disk = true;
|
||||||
|
show_disks = true;
|
||||||
|
only_physical = true;
|
||||||
|
use_fstab = true;
|
||||||
|
zfs_hide_datasets = false;
|
||||||
|
disk_free_priv = false;
|
||||||
|
show_io_stat = true;
|
||||||
|
io_mode = false;
|
||||||
|
io_graph_combined = false;
|
||||||
|
io_graph_speeds = "";
|
||||||
|
net_download = 100;
|
||||||
|
net_upload = 100;
|
||||||
|
net_auto = true;
|
||||||
|
net_sync = true;
|
||||||
|
net_iface = "";
|
||||||
|
show_battery = true;
|
||||||
|
selected_battery = "Auto";
|
||||||
|
log_level = "WARNING";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
theme[main_bg]="#24273A"
|
||||||
|
theme[main_fg]="#CAD3F5"
|
||||||
|
theme[title]="#CAD3F5"
|
||||||
|
theme[hi_fg]="#8AADF4"
|
||||||
|
theme[selected_bg]="#494D64"
|
||||||
|
theme[selected_fg]="#8AADF4"
|
||||||
|
theme[inactive_fg]="#8087A2"
|
||||||
|
theme[graph_text]="#F4DBD6"
|
||||||
|
theme[meter_bg]="#494D64"
|
||||||
|
theme[proc_misc]="#F4DBD6"
|
||||||
|
theme[cpu_box]="#7DC4E4"
|
||||||
|
theme[mem_box]="#A6DA95"
|
||||||
|
theme[net_box]="#C6A0F6"
|
||||||
|
theme[proc_box]="#F0C6C6"
|
||||||
|
theme[div_line]="#6E738D"
|
||||||
|
theme[temp_start]="#EED49F"
|
||||||
|
theme[temp_mid]="#F5A97F"
|
||||||
|
theme[temp_end]="#ED8796"
|
||||||
|
theme[cpu_start]="#7DC4E4"
|
||||||
|
theme[cpu_mid]="#91D7E3"
|
||||||
|
theme[cpu_end]="#8BD5CA"
|
||||||
|
theme[free_start]="#8BD5CA"
|
||||||
|
theme[free_mid]="#8BD5CA"
|
||||||
|
theme[free_end]="#A6DA95"
|
||||||
|
theme[cached_start]="#F5BDE6"
|
||||||
|
theme[cached_mid]="#F5BDE6"
|
||||||
|
theme[cached_end]="#C6A0F6"
|
||||||
|
theme[available_start]="#F4DBD6"
|
||||||
|
theme[available_mid]="#F0C6C6"
|
||||||
|
theme[available_end]="#F0C6C6"
|
||||||
|
theme[used_start]="#F5A97F"
|
||||||
|
theme[used_mid]="#F5A97F"
|
||||||
|
theme[used_end]="#ED8796"
|
||||||
|
theme[download_start]="#B7BDF8"
|
||||||
|
theme[download_mid]="#B7BDF8"
|
||||||
|
theme[download_end]="#C6A0F6"
|
||||||
|
theme[upload_start]="#B7BDF8"
|
||||||
|
theme[upload_mid]="#B7BDF8"
|
||||||
|
theme[upload_end]="#C6A0F6"
|
||||||
|
theme[process_start]="#7DC4E4"
|
||||||
|
theme[process_mid]="#91D7E3"
|
||||||
|
theme[process_end]="#8BD5CA"
|
||||||
216
hosts/desktop/hyprland/config/hypr/default.nix
Normal file
@@ -0,0 +1,216 @@
|
|||||||
|
{
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
xwayland.enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
"$mainMod" = "SUPER";
|
||||||
|
|
||||||
|
# l -> locked, will also work when an input inhibitor (e.g. a lockscreen) is active.
|
||||||
|
# r -> release, will trigger on release of a key.
|
||||||
|
# e -> repeat, will repeat when held.
|
||||||
|
# n -> non-consuming, key/mouse events will be passed to the active window in addition to triggering the dispatcher.
|
||||||
|
# m -> mouse, see below.
|
||||||
|
# t -> transparent, cannot be shadowed by other binds.
|
||||||
|
# i -> ignore mods, will ignore modifiers.
|
||||||
|
# s -> separate, will arbitrarily combine keys between each mod/key, see [Keysym combos](#keysym-combos) above.
|
||||||
|
# d -> has description, will allow you to write a description for your bind.
|
||||||
|
# p -> bypasses the app's requests to inhibit keybinds.
|
||||||
|
|
||||||
|
bind = [
|
||||||
|
"$mainMod, Return, exec, kitty"
|
||||||
|
"$mainMod, Q, killactive, "
|
||||||
|
"$mainMod, M, exec, wlogout --protocol layer-shell"
|
||||||
|
"$mainMod, E, exec, nautilus"
|
||||||
|
"$mainMod, V, togglefloating, "
|
||||||
|
"$mainMod, D, exec, wofi --show drun"
|
||||||
|
"$mainMod, P, pseudo, "# dwindle
|
||||||
|
"$mainMod, S, togglesplit, "# dwindle
|
||||||
|
"$mainMod SHIFT, Q, exec, hyprlock"
|
||||||
|
", PRINT, exec, hyprshot -m region --clipboard-only"
|
||||||
|
|
||||||
|
"$mainMod, h, movefocus, l"
|
||||||
|
"$mainMod, l, movefocus, r"
|
||||||
|
"$mainMod, k, movefocus, u"
|
||||||
|
"$mainMod, j, movefocus, d"
|
||||||
|
|
||||||
|
"$mainMod, 1, workspace, 1"
|
||||||
|
"$mainMod, 2, workspace, 2"
|
||||||
|
"$mainMod, 3, workspace, 3"
|
||||||
|
"$mainMod, 4, workspace, 4"
|
||||||
|
"$mainMod, 5, workspace, 5"
|
||||||
|
"$mainMod, 6, workspace, 6"
|
||||||
|
"$mainMod, 7, workspace, 7"
|
||||||
|
"$mainMod, 8, workspace, 8"
|
||||||
|
"$mainMod, 9, workspace, 9"
|
||||||
|
"$mainMod, 0, workspace, 10"
|
||||||
|
|
||||||
|
"$mainMod SHIFT, 1, movetoworkspace, 1"
|
||||||
|
"$mainMod SHIFT, 2, movetoworkspace, 2"
|
||||||
|
"$mainMod SHIFT, 3, movetoworkspace, 3"
|
||||||
|
"$mainMod SHIFT, 4, movetoworkspace, 4"
|
||||||
|
"$mainMod SHIFT, 5, movetoworkspace, 5"
|
||||||
|
"$mainMod SHIFT, 6, movetoworkspace, 6"
|
||||||
|
"$mainMod SHIFT, 7, movetoworkspace, 7"
|
||||||
|
"$mainMod SHIFT, 8, movetoworkspace, 8"
|
||||||
|
"$mainMod SHIFT, 9, movetoworkspace, 9"
|
||||||
|
"$mainMod SHIFT, 0, movetoworkspace, 10"
|
||||||
|
|
||||||
|
"$mainMod CTRL, l, resizeactive, 10 0"
|
||||||
|
"$mainMod CTRL, h, resizeactive, -10 0"
|
||||||
|
"$mainMod CTRL, k, resizeactive, 0 -10"
|
||||||
|
"$mainMod CTRL, j, resizeactive, 0 10"
|
||||||
|
|
||||||
|
"$mainMod SHIFT, l, movewindow, r"
|
||||||
|
"$mainMod SHIFT, h, movewindow, l"
|
||||||
|
"$mainMod SHIFT, k, movewindow, u"
|
||||||
|
"$mainMod SHIFT, j, movewindow, d"
|
||||||
|
|
||||||
|
"$mainMod, b, exec, firefox"
|
||||||
|
];
|
||||||
|
|
||||||
|
bindm = [
|
||||||
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
"$mainMod, mouse:272, movewindow"
|
||||||
|
"$mainMod, mouse:273, resizewindow"
|
||||||
|
];
|
||||||
|
|
||||||
|
bindel =[
|
||||||
|
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
|
||||||
|
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||||
|
];
|
||||||
|
|
||||||
|
bindl = [
|
||||||
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||||
|
", XF86AudioPlay, exec, playerctl play-pause"
|
||||||
|
", XF86AudioPrev, exec, playerctl previous"
|
||||||
|
", XF86AudioNext, exec, playerctl next"
|
||||||
|
];
|
||||||
|
|
||||||
|
monitor = [
|
||||||
|
"DP-1,3840x2160@240.00000,0x0,1"
|
||||||
|
"DP-2,3840x2160@59.99700,3840x0,1"
|
||||||
|
];
|
||||||
|
|
||||||
|
general = {
|
||||||
|
gaps_in = 5;
|
||||||
|
gaps_out = 10;
|
||||||
|
border_size = 1;
|
||||||
|
"col.active_border" = "rgb(8aadf4) rgb(24273A) rgb(24273A) rgb(8aadf4) 45deg";
|
||||||
|
"col.inactive_border" = "rgb(24273A) rgb(24273A) rgb(24273A) rgb(24273A) 45deg";
|
||||||
|
layout = "dwindle";
|
||||||
|
allow_tearing = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
decoration = {
|
||||||
|
rounding = 10;
|
||||||
|
blur = {
|
||||||
|
enabled = true;
|
||||||
|
size = 2;
|
||||||
|
passes = 2;
|
||||||
|
new_optimizations = true;
|
||||||
|
xray = false;
|
||||||
|
};
|
||||||
|
drop_shadow = "yes";
|
||||||
|
shadow_range = 4;
|
||||||
|
shadow_render_power = "3";
|
||||||
|
"col.shadow" = "rgba(1a1a1aee)";
|
||||||
|
};
|
||||||
|
|
||||||
|
animations = {
|
||||||
|
enabled = "yes";
|
||||||
|
bezier = [
|
||||||
|
"overshot, 0.05, 0.9, 0.1, 1.05"
|
||||||
|
"smoothOut, 0.36, 0, 0.66, -0.56"
|
||||||
|
"smoothIn, 0.25, 1, 0.5, 1"
|
||||||
|
];
|
||||||
|
animation = [
|
||||||
|
"windows, 1, 5, overshot, slide"
|
||||||
|
"windowsOut, 1, 4, smoothOut, slide"
|
||||||
|
"windowsMove, 1, 4, default"
|
||||||
|
"border, 1, 10, default"
|
||||||
|
"fade, 1, 10, smoothIn"
|
||||||
|
"fadeDim, 1, 10, smoothIn"
|
||||||
|
"workspaces, 1, 6, default"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
dwindle = {
|
||||||
|
pseudotile = "yes";
|
||||||
|
preserve_split = "yes";
|
||||||
|
};
|
||||||
|
|
||||||
|
gestures = {
|
||||||
|
workspace_swipe = "off";
|
||||||
|
};
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
force_default_wallpaper = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
windowrule = [
|
||||||
|
"float, file_progress"
|
||||||
|
"float, confirm"
|
||||||
|
"float, dialog"
|
||||||
|
"float, download"
|
||||||
|
"float, notification"
|
||||||
|
"float, error"
|
||||||
|
"float, splash"
|
||||||
|
"float, confirmreset"
|
||||||
|
"float, title:Open File"
|
||||||
|
"float, title:branchdialog"
|
||||||
|
"float,viewnior"
|
||||||
|
"float, pavucontrol-qt"
|
||||||
|
"float, pavucontrol"
|
||||||
|
"float, file-roller"
|
||||||
|
"fullscreen, wlogout"
|
||||||
|
"float, title:wlogout"
|
||||||
|
"fullscreen, title:wlogout"
|
||||||
|
"idleinhibit stayfocused, mpv"
|
||||||
|
];
|
||||||
|
windowrulev2 = [
|
||||||
|
"float, title:^(Media viewer)$"
|
||||||
|
# Picture in picture windows
|
||||||
|
"float, title:^(Picture-in-Picture)$"
|
||||||
|
"pin, title:^(Picture-in-Picture)$"
|
||||||
|
"float, class:^(vesktop)$,title:^(Discord Popout)$"
|
||||||
|
"pin, class:^(vesktop)$,title:^(Discord Popout)$"
|
||||||
|
"float, class:^(steam)$,title:^(Friends List)$"
|
||||||
|
# Workspace assign
|
||||||
|
"workspace: 1, class:^(kitty)$"
|
||||||
|
"workspace: 2, class:^(firefox)$"
|
||||||
|
"workspace: 5, class:^(steam)$"
|
||||||
|
"workspace: 10, class:^(vesktop)$"
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
input = {
|
||||||
|
kb_layout = "us";
|
||||||
|
|
||||||
|
kb_variant = "";
|
||||||
|
kb_model = "";
|
||||||
|
kb_options = "";
|
||||||
|
kb_rules = "";
|
||||||
|
|
||||||
|
follow_mouse = 1;
|
||||||
|
|
||||||
|
touchpad = {
|
||||||
|
natural_scroll = "no";
|
||||||
|
};
|
||||||
|
|
||||||
|
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
exec-once = dbus-update-activation-environment --systemd --all
|
||||||
|
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
||||||
|
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||||
|
exec-once = nwg-look -a
|
||||||
|
exec-once = [workspace 2 silent] firefox
|
||||||
|
exec-once = [workspace 10 silent] vesktop
|
||||||
|
exec-once = [workspace 5 silent] steam
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
26
hosts/desktop/hyprland/config/kitty/default.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
shellIntegration.enableZshIntegration = true;
|
||||||
|
|
||||||
|
font = {
|
||||||
|
name = "jetbrains mono nerd font";
|
||||||
|
package = pkgs.nerdfonts;
|
||||||
|
size = 12;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
include = "~/.config/kitty/macchiato.conf";
|
||||||
|
bold_font = "auto";
|
||||||
|
italic_font = "auto";
|
||||||
|
bold_italic_font = "auto";
|
||||||
|
mouse_hide_wait = "2.0";
|
||||||
|
cursor_shape = "block";
|
||||||
|
url_color = "#0087bd";
|
||||||
|
url_style = "dotted";
|
||||||
|
confirm_os_window_close = "0";
|
||||||
|
background_opacity = "0.8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
80
hosts/desktop/hyprland/config/kitty/macchiato.conf
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
# vim:ft=kitty
|
||||||
|
|
||||||
|
## name: Catppuccin Kitty Macchiato
|
||||||
|
## author: Catppuccin Org
|
||||||
|
## license: MIT
|
||||||
|
## upstream: https://github.com/catppuccin/kitty/blob/main/themes/macchiato.conf
|
||||||
|
## blurb: Soothing pastel theme for the high-spirited!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# The basic colors
|
||||||
|
foreground #CAD3F5
|
||||||
|
background #24273A
|
||||||
|
selection_foreground #24273A
|
||||||
|
selection_background #F4DBD6
|
||||||
|
|
||||||
|
# Cursor colors
|
||||||
|
cursor #F4DBD6
|
||||||
|
cursor_text_color #24273A
|
||||||
|
|
||||||
|
# URL underline color when hovering with mouse
|
||||||
|
url_color #F4DBD6
|
||||||
|
|
||||||
|
# Kitty window border colors
|
||||||
|
active_border_color #B7BDF8
|
||||||
|
inactive_border_color #6E738D
|
||||||
|
bell_border_color #EED49F
|
||||||
|
|
||||||
|
# OS Window titlebar colors
|
||||||
|
wayland_titlebar_color #24273A
|
||||||
|
macos_titlebar_color #24273A
|
||||||
|
|
||||||
|
# Tab bar colors
|
||||||
|
active_tab_foreground #181926
|
||||||
|
active_tab_background #C6A0F6
|
||||||
|
inactive_tab_foreground #CAD3F5
|
||||||
|
inactive_tab_background #1E2030
|
||||||
|
tab_bar_background #181926
|
||||||
|
|
||||||
|
# Colors for marks (marked text in the terminal)
|
||||||
|
mark1_foreground #24273A
|
||||||
|
mark1_background #B7BDF8
|
||||||
|
mark2_foreground #24273A
|
||||||
|
mark2_background #C6A0F6
|
||||||
|
mark3_foreground #24273A
|
||||||
|
mark3_background #7DC4E4
|
||||||
|
|
||||||
|
# The 16 terminal colors
|
||||||
|
|
||||||
|
# black
|
||||||
|
color0 #494D64
|
||||||
|
color8 #5B6078
|
||||||
|
|
||||||
|
# red
|
||||||
|
color1 #ED8796
|
||||||
|
color9 #ED8796
|
||||||
|
|
||||||
|
# green
|
||||||
|
color2 #A6DA95
|
||||||
|
color10 #A6DA95
|
||||||
|
|
||||||
|
# yellow
|
||||||
|
color3 #EED49F
|
||||||
|
color11 #EED49F
|
||||||
|
|
||||||
|
# blue
|
||||||
|
color4 #8AADF4
|
||||||
|
color12 #8AADF4
|
||||||
|
|
||||||
|
# magenta
|
||||||
|
color5 #F5BDE6
|
||||||
|
color13 #F5BDE6
|
||||||
|
|
||||||
|
# cyan
|
||||||
|
color6 #8BD5CA
|
||||||
|
color14 #8BD5CA
|
||||||
|
|
||||||
|
# white
|
||||||
|
color7 #B8C0E0
|
||||||
|
color15 #A5ADCB
|
||||||
21
hosts/desktop/hyprland/config/mako/default.nix
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
services.mako = {
|
||||||
|
enable = true;
|
||||||
|
font = "monospace 12";
|
||||||
|
icons = false;
|
||||||
|
width = 500;
|
||||||
|
height = 110;
|
||||||
|
layer = "overlay";
|
||||||
|
borderRadius = 15;
|
||||||
|
borderSize = 2;
|
||||||
|
maxIconSize = 64;
|
||||||
|
defaultTimeout = 5000;
|
||||||
|
sort = "-time";
|
||||||
|
ignoreTimeout = true;
|
||||||
|
|
||||||
|
backgroundColor = "#24273a";
|
||||||
|
textColor = "#cad3f5";
|
||||||
|
borderColor = "#8aadf4";
|
||||||
|
progressColor = "over #363a4f";
|
||||||
|
};
|
||||||
|
}
|
||||||
BIN
hosts/desktop/hyprland/config/wallpapers/wall.png
Normal file
|
After Width: | Height: | Size: 239 KiB |
251
hosts/desktop/hyprland/config/waybar/default.nix
Normal file
@@ -0,0 +1,251 @@
|
|||||||
|
{
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
settings = {
|
||||||
|
mainBar = {
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
mod = "dock";
|
||||||
|
exclusive = true;
|
||||||
|
passthrough = false;
|
||||||
|
gtk-layer-shell = true;
|
||||||
|
height = 0;
|
||||||
|
modules-left = [
|
||||||
|
"hyprland/workspaces"
|
||||||
|
];
|
||||||
|
|
||||||
|
modules-center = [
|
||||||
|
"hyprland/window"
|
||||||
|
];
|
||||||
|
|
||||||
|
modules-right = [
|
||||||
|
"tray"
|
||||||
|
"custom/updates"
|
||||||
|
"hyprland/language"
|
||||||
|
"pulseaudio"
|
||||||
|
"pulseaudio#microphone"
|
||||||
|
"clock"
|
||||||
|
"custom/weather"
|
||||||
|
];
|
||||||
|
|
||||||
|
"hyprland/window" = {
|
||||||
|
format = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
disable-scroll = true;
|
||||||
|
all-outputs = true;
|
||||||
|
on-click = "activate";
|
||||||
|
persistent_workspaces = {
|
||||||
|
"1" = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"hyprland/language" = {
|
||||||
|
format = {};
|
||||||
|
format-en = "US";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/weather" = {
|
||||||
|
tooltip = true;
|
||||||
|
format = {};
|
||||||
|
interval = 30;
|
||||||
|
exec = "sudo waybar-weather";
|
||||||
|
return-type = "json";
|
||||||
|
};
|
||||||
|
|
||||||
|
tray = {
|
||||||
|
icon-size = 16;
|
||||||
|
spacing = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
clock = {
|
||||||
|
format = "{:%I:%M %p}";
|
||||||
|
tooltip-format = "<big>{ =%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
||||||
|
};
|
||||||
|
|
||||||
|
pulseaudio = {
|
||||||
|
format = "{icon} {volume}%";
|
||||||
|
tooltip = false;
|
||||||
|
format-muted = " Muted";
|
||||||
|
on-click = "pamixer -t";
|
||||||
|
on-scroll-up = "pamixer -i 5";
|
||||||
|
on-scroll-down = "pamixer -d 5";
|
||||||
|
scroll-step = 5;
|
||||||
|
format-icons = {
|
||||||
|
headphone = "";
|
||||||
|
hands-free = "";
|
||||||
|
headset = "";
|
||||||
|
phone = "";
|
||||||
|
portable = "";
|
||||||
|
car = "";
|
||||||
|
default = ["" "" ""];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"pulseaudio#microphone" = {
|
||||||
|
format = "{format_source}";
|
||||||
|
format-source = "🎙{volume}%";
|
||||||
|
format-source-muted = "🎙Muted";
|
||||||
|
on-click = "pamixer --default-source -t";
|
||||||
|
on-scroll-up = "pamixer --default-source -i 5";
|
||||||
|
on-scroll-down = "pamixer --default-source -d 5";
|
||||||
|
scroll-step = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
style = ''
|
||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
font-family:
|
||||||
|
Jetbrains Mono Nerd Font,
|
||||||
|
monospace;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 14px;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: rgba(21, 18, 27, 0);
|
||||||
|
color: #cdd6f4;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
background: #1e1e2e;
|
||||||
|
border-radius: 10px;
|
||||||
|
border-width: 2px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #11111b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 5px;
|
||||||
|
color: #313244;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
color: #a6adc8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.focused {
|
||||||
|
color: #a6adc8;
|
||||||
|
background: #eba0ac;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
color: #11111b;
|
||||||
|
background: #a6e3a1;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button:hover {
|
||||||
|
background: #11111b;
|
||||||
|
color: #cdd6f4;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#language,
|
||||||
|
#custom-updates,
|
||||||
|
#custom-caffeine,
|
||||||
|
#custom-weather,
|
||||||
|
#window,
|
||||||
|
#clock,
|
||||||
|
#battery,
|
||||||
|
#pulseaudio,
|
||||||
|
#network,
|
||||||
|
#workspaces,
|
||||||
|
#tray,
|
||||||
|
#backlight {
|
||||||
|
background: #1e1e2e;
|
||||||
|
padding: 0px 10px;
|
||||||
|
margin: 3px 0px;
|
||||||
|
margin-top: 10px;
|
||||||
|
border: 1px solid #181825;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces {
|
||||||
|
background: #1e1e2e;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-left: 10px;
|
||||||
|
padding-right: 0px;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-caffeine {
|
||||||
|
color: #89dceb;
|
||||||
|
border-radius: 10px 0px 0px 10px;
|
||||||
|
border-right: 0px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-language {
|
||||||
|
color: #f38ba8;
|
||||||
|
border-left: 0px;
|
||||||
|
border-right: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-updates {
|
||||||
|
color: #f5c2e7;
|
||||||
|
border-radius: 10px 0px 0px 10px;
|
||||||
|
border-left: 0px;
|
||||||
|
border-right: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-left: 60px;
|
||||||
|
margin-right: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
color: #fab387;
|
||||||
|
border-radius: 10px 0px 0px 10px;
|
||||||
|
margin-left: 5px;
|
||||||
|
border-right: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
color: #f9e2af;
|
||||||
|
border-left: 0px;
|
||||||
|
border-right: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio {
|
||||||
|
color: #89b4fa;
|
||||||
|
border-left: 0px;
|
||||||
|
border-right: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio.microphone {
|
||||||
|
color: #cba6f7;
|
||||||
|
border-radius: 0px 10px 10px 0px;
|
||||||
|
border-left: 0px;
|
||||||
|
border-right: 0px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery {
|
||||||
|
color: #a6e3a1;
|
||||||
|
border-radius: 0 10px 10px 0;
|
||||||
|
margin-right: 10px;
|
||||||
|
border-left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-weather {
|
||||||
|
border-radius: 0px 10px 10px 0px;
|
||||||
|
border-right: 0px;
|
||||||
|
margin-left: 0px;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
133
hosts/desktop/hyprland/config/waybar/scripts/waybar-wttr.py
Executable file
@@ -0,0 +1,133 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import json
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
WEATHER_CODES = {
|
||||||
|
"113": "☀️ ",
|
||||||
|
"116": "⛅ ",
|
||||||
|
"119": "☁️ ",
|
||||||
|
"122": "☁️ ",
|
||||||
|
"143": "☁️ ",
|
||||||
|
"176": "🌧️",
|
||||||
|
"179": "🌧️",
|
||||||
|
"182": "🌧️",
|
||||||
|
"185": "🌧️",
|
||||||
|
"200": "⛈️ ",
|
||||||
|
"227": "🌨️",
|
||||||
|
"230": "🌨️",
|
||||||
|
"248": "☁️ ",
|
||||||
|
"260": "☁️ ",
|
||||||
|
"263": "🌧️",
|
||||||
|
"266": "🌧️",
|
||||||
|
"281": "🌧️",
|
||||||
|
"284": "🌧️",
|
||||||
|
"293": "🌧️",
|
||||||
|
"296": "🌧️",
|
||||||
|
"299": "🌧️",
|
||||||
|
"302": "🌧️",
|
||||||
|
"305": "🌧️",
|
||||||
|
"308": "🌧️",
|
||||||
|
"311": "🌧️",
|
||||||
|
"314": "🌧️",
|
||||||
|
"317": "🌧️",
|
||||||
|
"320": "🌨️",
|
||||||
|
"323": "🌨️",
|
||||||
|
"326": "🌨️",
|
||||||
|
"329": "❄️ ",
|
||||||
|
"332": "❄️ ",
|
||||||
|
"335": "❄️ ",
|
||||||
|
"338": "❄️ ",
|
||||||
|
"350": "🌧️",
|
||||||
|
"353": "🌧️",
|
||||||
|
"356": "🌧️",
|
||||||
|
"359": "🌧️",
|
||||||
|
"362": "🌧️",
|
||||||
|
"365": "🌧️",
|
||||||
|
"368": "🌧️",
|
||||||
|
"371": "❄️",
|
||||||
|
"374": "🌨️",
|
||||||
|
"377": "🌨️",
|
||||||
|
"386": "🌨️",
|
||||||
|
"389": "🌨️",
|
||||||
|
"392": "🌧️",
|
||||||
|
"395": "❄️ ",
|
||||||
|
}
|
||||||
|
|
||||||
|
data = {}
|
||||||
|
|
||||||
|
|
||||||
|
weather = requests.get("https://wttr.in/?format=j1").json()
|
||||||
|
|
||||||
|
|
||||||
|
def format_time(time):
|
||||||
|
return time.replace("00", "").zfill(2)
|
||||||
|
|
||||||
|
|
||||||
|
def format_temp(temp):
|
||||||
|
return (hour["FeelsLikeF"] + "°").ljust(3)
|
||||||
|
|
||||||
|
|
||||||
|
def format_chances(hour):
|
||||||
|
chances = {
|
||||||
|
"chanceoffog": "Fog",
|
||||||
|
"chanceoffrost": "Frost",
|
||||||
|
"chanceofovercast": "Overcast",
|
||||||
|
"chanceofrain": "Rain",
|
||||||
|
"chanceofsnow": "Snow",
|
||||||
|
"chanceofsunshine": "Sunshine",
|
||||||
|
"chanceofthunder": "Thunder",
|
||||||
|
"chanceofwindy": "Wind",
|
||||||
|
}
|
||||||
|
|
||||||
|
conditions = []
|
||||||
|
for event in chances.keys():
|
||||||
|
if int(hour[event]) > 0:
|
||||||
|
conditions.append(chances[event] + " " + hour[event] + "%")
|
||||||
|
return ", ".join(conditions)
|
||||||
|
|
||||||
|
|
||||||
|
tempint = int(weather["current_condition"][0]["FeelsLikeF"])
|
||||||
|
extrachar = ""
|
||||||
|
if tempint > 0 and tempint < 10:
|
||||||
|
extrachar = "+"
|
||||||
|
|
||||||
|
|
||||||
|
data["text"] = (
|
||||||
|
" "
|
||||||
|
+ WEATHER_CODES[weather["current_condition"][0]["weatherCode"]]
|
||||||
|
+ " "
|
||||||
|
+ extrachar
|
||||||
|
+ weather["current_condition"][0]["FeelsLikeF"]
|
||||||
|
+ "°"
|
||||||
|
)
|
||||||
|
|
||||||
|
data["tooltip"] = (
|
||||||
|
f"<b>{weather['current_condition'][0]['weatherDesc'][0]['value']} {weather['current_condition'][0]['temp_C']}°</b>\n"
|
||||||
|
)
|
||||||
|
data["tooltip"] += f"Feels like: {weather['current_condition'][0]['FeelsLikeF']}°\n"
|
||||||
|
data["tooltip"] += f"Wind: {weather['current_condition'][0]['windspeedKmph']}Km/h\n"
|
||||||
|
data["tooltip"] += f"Humidity: {weather['current_condition'][0]['humidity']}%\n"
|
||||||
|
for i, day in enumerate(weather["weather"]):
|
||||||
|
data["tooltip"] += f"\n<b>"
|
||||||
|
if i == 0:
|
||||||
|
data["tooltip"] += "Today, "
|
||||||
|
if i == 1:
|
||||||
|
data["tooltip"] += "Tomorrow, "
|
||||||
|
data["tooltip"] += f"{day['date']}</b>\n"
|
||||||
|
data["tooltip"] += f"⬆️ {day['maxtempF']}° ⬇️ {day['mintempF']}° "
|
||||||
|
data[
|
||||||
|
"tooltip"
|
||||||
|
] += f"🌅 {day['astronomy'][0]['sunrise']} 🌇 {day['astronomy'][0]['sunset']}\n"
|
||||||
|
for hour in day["hourly"]:
|
||||||
|
if i == 0:
|
||||||
|
if int(format_time(hour["time"])) < datetime.now().hour - 2:
|
||||||
|
continue
|
||||||
|
data[
|
||||||
|
"tooltip"
|
||||||
|
] += f"{format_time(hour['time'])} {WEATHER_CODES[hour['weatherCode']]} {format_temp(hour['FeelsLikeF'])} {hour['weatherDesc'][0]['value']}, {format_chances(hour)}\n"
|
||||||
|
|
||||||
|
|
||||||
|
print(json.dumps(data))
|
||||||
BIN
hosts/desktop/hyprland/config/wlogout/icons/hibernate.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
hosts/desktop/hyprland/config/wlogout/icons/lock.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
hosts/desktop/hyprland/config/wlogout/icons/logout.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
hosts/desktop/hyprland/config/wlogout/icons/reboot.png
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
BIN
hosts/desktop/hyprland/config/wlogout/icons/shutdown.png
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
hosts/desktop/hyprland/config/wlogout/icons/suspend.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
36
hosts/desktop/hyprland/config/wlogout/layout
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"label" : "lock",
|
||||||
|
"action" : "swaylock",
|
||||||
|
"text" : "Lock",
|
||||||
|
"keybind" : "l"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" : "hibernate",
|
||||||
|
"action" : "systemctl hibernate",
|
||||||
|
"text" : "Hibernate",
|
||||||
|
"keybind" : "h"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" : "logout",
|
||||||
|
"action" : "sleep 1; hyprctl dispatch exit",
|
||||||
|
"text" : "Logout",
|
||||||
|
"keybind" : "e"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" : "shutdown",
|
||||||
|
"action" : "systemctl poweroff",
|
||||||
|
"text" : "Shutdown",
|
||||||
|
"keybind" : "s"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" : "suspend",
|
||||||
|
"action" : "systemctl suspend",
|
||||||
|
"text" : "Suspend",
|
||||||
|
"keybind" : "u"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"label" : "reboot",
|
||||||
|
"action" : "systemctl reboot",
|
||||||
|
"text" : "Reboot",
|
||||||
|
"keybind" : "r"
|
||||||
|
}
|
||||||
50
hosts/desktop/hyprland/config/wlogout/style.css
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
* {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
background-color: rgba(36, 39, 58, 0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
margin: 8px;
|
||||||
|
color: #cad3f5;
|
||||||
|
background-color: #363a4f;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 2px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
background-size: 25%;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:active,
|
||||||
|
button:focus,
|
||||||
|
button:hover {
|
||||||
|
color: #8bd5ca;
|
||||||
|
background-color: #24273a;
|
||||||
|
outline-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#lock {
|
||||||
|
background-image: image(url("icons/lock.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#logout {
|
||||||
|
background-image: image(url("icons/logout.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#suspend {
|
||||||
|
background-image: image(url("icons/suspend.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#hibernate {
|
||||||
|
background-image: image(url("icons/hibernate.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#shutdown {
|
||||||
|
background-image: image(url("icons/shutdown.png"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#reboot {
|
||||||
|
background-image: image(url("icons/reboot.png"));
|
||||||
|
}
|
||||||
145
hosts/desktop/hyprland/config/wofi/default.nix
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
{
|
||||||
|
programs.wofi = {
|
||||||
|
enable = true;
|
||||||
|
style = ''
|
||||||
|
@define-color rosewater #f4dbd6;
|
||||||
|
@define-color rosewater-rgb rgb(244, 219, 214);
|
||||||
|
@define-color flamingo #f0c6c6;
|
||||||
|
@define-color flamingo-rgb rgb(240, 198, 198);
|
||||||
|
@define-color pink #f5bde6;
|
||||||
|
@define-color pink-rgb rgb(245, 189, 230);
|
||||||
|
@define-color mauve #c6a0f6;
|
||||||
|
@define-color mauve-rgb rgb(198, 160, 246);
|
||||||
|
@define-color red #ed8796;
|
||||||
|
@define-color red-rgb rgb(237, 135, 150);
|
||||||
|
@define-color maroon #ee99a0;
|
||||||
|
@define-color maroon-rgb rgb(238, 153, 160);
|
||||||
|
@define-color peach #f5a97f;
|
||||||
|
@define-color peach-rgb rgb(245, 169, 127);
|
||||||
|
@define-color yellow #eed49f;
|
||||||
|
@define-color yellow-rgb rgb(238, 212, 159);
|
||||||
|
@define-color green #a6da95;
|
||||||
|
@define-color green-rgb rgb(166, 218, 149);
|
||||||
|
@define-color teal #8bd5ca;
|
||||||
|
@define-color teal-rgb rgb(139, 213, 202);
|
||||||
|
@define-color sky #91d7e3;
|
||||||
|
@define-color sky-rgb rgb(145, 215, 227);
|
||||||
|
@define-color sapphire #7dc4e4;
|
||||||
|
@define-color sapphire-rgb rgb(125, 196, 228);
|
||||||
|
@define-color blue #8aadf4;
|
||||||
|
@define-color blue-rgb rgb(138, 173, 244);
|
||||||
|
@define-color lavender #b7bdf8;
|
||||||
|
@define-color lavender-rgb rgb(183, 189, 248);
|
||||||
|
@define-color text #cad3f5;
|
||||||
|
@define-color text-rgb rgb(202, 211, 245);
|
||||||
|
@define-color subtext1 #b8c0e0;
|
||||||
|
@define-color subtext1-rgb rgb(184, 192, 224);
|
||||||
|
@define-color subtext0 #a5adcb;
|
||||||
|
@define-color subtext0-rgb rgb(165, 173, 203);
|
||||||
|
@define-color overlay2 #939ab7;
|
||||||
|
@define-color overlay2-rgb rgb(147, 154, 183);
|
||||||
|
@define-color overlay1 #8087a2;
|
||||||
|
@define-color overlay1-rgb rgb(128, 135, 162);
|
||||||
|
@define-color overlay0 #6e738d;
|
||||||
|
@define-color overlay0-rgb rgb(110, 115, 141);
|
||||||
|
@define-color surface2 #5b6078;
|
||||||
|
@define-color surface2-rgb rgb(91, 96, 120);
|
||||||
|
@define-color surface1 #494d64;
|
||||||
|
@define-color surface1-rgb rgb(73, 77, 100);
|
||||||
|
@define-color surface0 #363a4f;
|
||||||
|
@define-color surface0-rgb rgb(54, 58, 79);
|
||||||
|
@define-color base #24273a;
|
||||||
|
@define-color base-rgb rgb(36, 39, 58);
|
||||||
|
@define-color mantle #1e2030;
|
||||||
|
@define-color mantle-rgb rgb(30, 32, 48);
|
||||||
|
@define-color crust #181926;
|
||||||
|
@define-color crust-rgb rgb(24, 25, 38);
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: "Inconsolata Nerd Font", monospace;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Window */
|
||||||
|
window {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 10px;
|
||||||
|
border: 0.16em solid @lavender;
|
||||||
|
border-radius: 0.1em;
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inner Box */
|
||||||
|
#inner-box {
|
||||||
|
margin: 5px;
|
||||||
|
padding: 10px;
|
||||||
|
border: none;
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Outer Box */
|
||||||
|
#outer-box {
|
||||||
|
margin: 5px;
|
||||||
|
padding: 10px;
|
||||||
|
border: none;
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scroll */
|
||||||
|
#scroll {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 10px;
|
||||||
|
border: none;
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Input */
|
||||||
|
#input {
|
||||||
|
margin: 5px 20px;
|
||||||
|
padding: 10px;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0.1em;
|
||||||
|
color: @text;
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input image {
|
||||||
|
border: none;
|
||||||
|
color: @red;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input * {
|
||||||
|
outline: 4px solid @red!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text */
|
||||||
|
#text {
|
||||||
|
margin: 5px;
|
||||||
|
border: none;
|
||||||
|
color: @text;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry {
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry arrow {
|
||||||
|
border: none;
|
||||||
|
color: @lavender;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Selected Entry */
|
||||||
|
#entry:selected {
|
||||||
|
border: 0.11em solid @lavender;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry:selected #text {
|
||||||
|
color: @mauve;
|
||||||
|
}
|
||||||
|
|
||||||
|
#entry:drop(active) {
|
||||||
|
background-color: @lavender!important;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
86
hosts/desktop/hyprland/default.nix
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
specialisation.hyprland.configuration = {
|
||||||
|
imports = [
|
||||||
|
./environment.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home-manager.users.matt = import ./home.nix;
|
||||||
|
|
||||||
|
services = {
|
||||||
|
displayManager.sddm.enable = true;
|
||||||
|
displayManager.sddm.package = pkgs.kdePackages.sddm;
|
||||||
|
displayManager.sddm.theme = "catppuccin-mocha";
|
||||||
|
displayManager.defaultSession = "hyprland";
|
||||||
|
# disable plasma
|
||||||
|
desktopManager.plasma6.enable = false;
|
||||||
|
|
||||||
|
dbus.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
xwayland.enable = true;
|
||||||
|
portalPackage = pkgs.xdg-desktop-portal-hyprland;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd = {
|
||||||
|
user.services.polkit-gnome-authentication-agent-1 = {
|
||||||
|
description = "polkit-gnome-authentication-agent-1";
|
||||||
|
wantedBy = [ "graphical-session.target" ];
|
||||||
|
wants = [ "graphical-session.target" ];
|
||||||
|
after = [ "graphical-session.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = 1;
|
||||||
|
TimeoutStopSec = 10;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
DefaultTimeoutStopSec=10s
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
security = {
|
||||||
|
polkit.enable = true;
|
||||||
|
|
||||||
|
# configure sudo
|
||||||
|
sudo.extraRules = [
|
||||||
|
{
|
||||||
|
commands = [
|
||||||
|
{
|
||||||
|
command = "/run/current-system/sw/bin/waybar-weather";
|
||||||
|
options = [ "NOPASSWD" ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
groups = [ "wheel" ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
wlr.enable = false;
|
||||||
|
xdgOpenUsePortal = false;
|
||||||
|
extraPortals = [
|
||||||
|
pkgs.xdg-desktop-portal-hyprland
|
||||||
|
pkgs.xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
nerdfonts
|
||||||
|
meslo-lgs-nf
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(self: super: {
|
||||||
|
waybar = super.waybar.overrideAttrs (oldAttrs: {
|
||||||
|
mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
|
||||||
|
});
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
53
hosts/desktop/hyprland/environment.nix
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
|
||||||
|
waybarWeatherScript = pkgs.writeScriptBin "waybar-weather" ''
|
||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#! nix-shell -i bash --packages python3 python3Packages.requests
|
||||||
|
python /home/matt/.config/waybar/scripts/waybar-wttr.py
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
adwaita-icon-theme
|
||||||
|
apple-cursor
|
||||||
|
catppuccin
|
||||||
|
catppuccin-gtk
|
||||||
|
catppuccin-qt5ct
|
||||||
|
catppuccin-sddm
|
||||||
|
colloid-gtk-theme
|
||||||
|
colloid-icon-theme
|
||||||
|
dunst
|
||||||
|
glib
|
||||||
|
gnome-disk-utility
|
||||||
|
gsettings-desktop-schemas
|
||||||
|
hyprland
|
||||||
|
hyprshot
|
||||||
|
libnotify
|
||||||
|
mako
|
||||||
|
meson
|
||||||
|
nautilus
|
||||||
|
networkmanagerapplet
|
||||||
|
nwg-look
|
||||||
|
pamixer
|
||||||
|
papirus-folders
|
||||||
|
playerctl
|
||||||
|
polkit
|
||||||
|
polkit_gnome
|
||||||
|
qt5.qtwayland
|
||||||
|
qt6.qtwayland
|
||||||
|
rofi-wayland
|
||||||
|
waybar
|
||||||
|
waybarWeatherScript
|
||||||
|
wayland-protocols
|
||||||
|
wayland-utils
|
||||||
|
wl-clipboard
|
||||||
|
wlogout
|
||||||
|
wlroots
|
||||||
|
wofi
|
||||||
|
xdg-desktop-portal-hyprland
|
||||||
|
xdg-desktop-portal-gtk
|
||||||
|
xdg-desktop-portal-wlr
|
||||||
|
xwayland
|
||||||
|
];
|
||||||
|
}
|
||||||
151
hosts/desktop/hyprland/home.nix
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./config.nix
|
||||||
|
./config/btop
|
||||||
|
./config/hypr
|
||||||
|
./config/kitty
|
||||||
|
./config/mako
|
||||||
|
./config/waybar
|
||||||
|
./config/wofi
|
||||||
|
];
|
||||||
|
|
||||||
|
services = {
|
||||||
|
hyprpaper = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
preload = [ "~/.config/wallpapers/wall.png" ];
|
||||||
|
wallpaper = [
|
||||||
|
"DP-1, ~/.config/wallpapers/wall.png"
|
||||||
|
"DP-2, ~/.config/wallpapers/wall.png"
|
||||||
|
];
|
||||||
|
splash = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hypridle = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||||
|
ignore_dbus_inhibit = false;
|
||||||
|
lock_cmd = "hyprlock";
|
||||||
|
};
|
||||||
|
listener = [
|
||||||
|
{
|
||||||
|
timeout = 3600;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
background = [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
path = "/home/matt/.config/wallpapers/wall.png"; # supports png, jpg, webp (no animations, though)
|
||||||
|
color = "rgba(25, 20, 20, 1.0)";
|
||||||
|
|
||||||
|
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
||||||
|
blur_passes = "3"; # 0 disables blurring
|
||||||
|
blur_size = "7";
|
||||||
|
noise = "0.0117";
|
||||||
|
contrast = "0.8916";
|
||||||
|
brightness = "0.8172";
|
||||||
|
vibrancy = "0.1696";
|
||||||
|
vibrancy_darkness = "0.0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
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 = ''<span foreground="##cad3f5">Password...</span>'';
|
||||||
|
shadow_passes = 2;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
BROWSER = "firefox";
|
||||||
|
EDITOR = "nano";
|
||||||
|
TERMINAL = "kitty";
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
QT_QPA_PLATFORMTHEME = "gtk3";
|
||||||
|
QT_SCALE_FACTOR = "1";
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
SDL_VIDEODRIVER = "wayland";
|
||||||
|
QT_QPA_PLATFORM = "wayland-egl";
|
||||||
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
|
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
||||||
|
GTK_CSD = "0";
|
||||||
|
# WLR_DRM_DEVICES = "/dev/dri/card0";
|
||||||
|
# WLR_NO_HARDWARE_CURSORS = "1";
|
||||||
|
CLUTTER_BACKEND = "wayland";
|
||||||
|
# WLR_RENDERER = "vulkan";
|
||||||
|
XCURSOR_THEME = "macOS-Monterey";
|
||||||
|
XCURSOR_SIZE = "24";
|
||||||
|
GTK_THEME="catppuccin-macchiato-blue-compact";
|
||||||
|
XDG_CURRENT_DESKTOP = "Hyprland";
|
||||||
|
XDG_SESSION_DESKTOP = "Hyprland";
|
||||||
|
XDG_SESSION_TYPE = "wayland";
|
||||||
|
GTK_USE_PORTAL = "1";
|
||||||
|
NIXOS_XDG_OPEN_USE_PORTAL = "1";
|
||||||
|
XDG_CACHE_HOME = "\${HOME}/.cache";
|
||||||
|
XDG_CONFIG_HOME = "\${HOME}/.config";
|
||||||
|
#XDG_BIN_HOME = "\${HOME}/.local/bin";
|
||||||
|
XDG_DATA_HOME = "\${HOME}/.local/share";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.pointerCursor = {
|
||||||
|
gtk.enable = true;
|
||||||
|
package = pkgs.apple-cursor;
|
||||||
|
name = "macOS-Monterey";
|
||||||
|
size = 24;
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
cursorTheme = {
|
||||||
|
name = "macOS-Monterey"; # macOS-[BigSur, Monterey]-[ , White, White-Windows, Windows]
|
||||||
|
package = pkgs.apple-cursor;
|
||||||
|
};
|
||||||
|
|
||||||
|
theme = {
|
||||||
|
name = "catppuccin-macchiato-blue-compact";
|
||||||
|
package = pkgs.catppuccin-gtk.override {
|
||||||
|
size = "compact";
|
||||||
|
accents = ["blue"];
|
||||||
|
variant = "macchiato";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
iconTheme = {
|
||||||
|
name = "Colloid-dark"; # Colloid, Colloid-light, Colloid-dark
|
||||||
|
package = pkgs.colloid-icon-theme;
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk3.extraConfig = {
|
||||||
|
# gtk-application-prefer-dark-theme = true;
|
||||||
|
"AdwStyleManager:color-scheme" = "ADW_COLOR_SCHEME_PREFER_DARK";
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk4.extraConfig = {
|
||||||
|
# gtk-application-prefer-dark-theme = true;
|
||||||
|
"AdwStyleManager:color-scheme" = "ADW_COLOR_SCHEME_PREFER_DARK";
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
12
hosts/desktop/sops.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
sops.defaultSopsFile = ../../secrets/secrets.yaml;
|
||||||
|
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
|
||||||
|
|
||||||
|
sops.secrets."desktop/matt_password" = {};
|
||||||
|
sops.secrets."desktop/matt_password".neededForUsers = true;
|
||||||
|
|
||||||
|
sops.secrets."wifi" = {};
|
||||||
|
}
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
httpPort = "9981";
|
httpPort = "9981";
|
||||||
httpsPort = "9943";
|
httpsPort = "9943";
|
||||||
redisSock = "/var/run/redis-nextcloud/redis.sock";
|
redisSock = "/run/redis-nextcloud/redis.sock";
|
||||||
};
|
};
|
||||||
|
|
||||||
ollama.enable = true;
|
ollama.enable = true;
|
||||||
|
|||||||
@@ -194,6 +194,7 @@ in
|
|||||||
"jallen-nas"
|
"jallen-nas"
|
||||||
"docker"
|
"docker"
|
||||||
"podman"
|
"podman"
|
||||||
|
config.services.redis.servers.nextcloud.user
|
||||||
]; # Enable ‘sudo’ for the user.
|
]; # Enable ‘sudo’ for the user.
|
||||||
hashedPasswordFile = passwordFile;
|
hashedPasswordFile = passwordFile;
|
||||||
};
|
};
|
||||||
@@ -207,6 +208,15 @@ in
|
|||||||
home = "/var/lib/nut";
|
home = "/var/lib/nut";
|
||||||
hashedPasswordFile = passwordFile;
|
hashedPasswordFile = passwordFile;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
users.nextcloud = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [
|
||||||
|
"jallen-nas"
|
||||||
|
"nix-apps"
|
||||||
|
];
|
||||||
|
hashedPasswordFile = passwordFile;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Virtualisation
|
# Virtualisation
|
||||||
|
|||||||
@@ -31,14 +31,33 @@ in
|
|||||||
networkmanager.enable = false;
|
networkmanager.enable = false;
|
||||||
|
|
||||||
interfaces = {
|
interfaces = {
|
||||||
wlp6s0.ipv4.addresses = [
|
wlp6s0 = {
|
||||||
{
|
useDHCP = false;
|
||||||
address = ipAddress;
|
ipv4.addresses = [
|
||||||
prefixLength = 24;
|
{
|
||||||
}
|
address = ipAddress;
|
||||||
];
|
prefixLength = 24;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# br0 = {
|
||||||
|
# useDHCP = false;
|
||||||
|
# ipv4.addresses = [
|
||||||
|
# {
|
||||||
|
# address = ipAddress;
|
||||||
|
# prefixLength = 24;
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# bridges = {
|
||||||
|
# br0 = {
|
||||||
|
# interfaces = [ "wlp6s0" ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
defaultGateway.address = gateway;
|
defaultGateway.address = gateway;
|
||||||
nameservers = [ gateway ];
|
nameservers = [ gateway ];
|
||||||
|
|
||||||
@@ -62,5 +81,13 @@ in
|
|||||||
# always allow traffic from your Tailscale network
|
# always allow traffic from your Tailscale network
|
||||||
trustedInterfaces = [ "tailscale0" ];
|
trustedInterfaces = [ "tailscale0" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# nat = {
|
||||||
|
# enable = true;
|
||||||
|
# internalInterfaces = ["ve-+"];
|
||||||
|
# externalInterface = "wlp9s0";
|
||||||
|
# # Lazy IPv6 connectivity for the container
|
||||||
|
# enableIPv6 = true;
|
||||||
|
# };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -184,6 +184,7 @@ in
|
|||||||
nextcloud = {
|
nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
port = 6380;
|
port = 6380;
|
||||||
|
# user = "911";#"${config.users.users.nix-apps.name}:${config.users.groups.jallen-nas.name}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
...
|
config, ...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
sops.defaultSopsFile = ../../secrets/secrets.yaml;
|
sops.defaultSopsFile = ../../secrets/secrets.yaml;
|
||||||
@@ -22,12 +22,42 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets."jallen-nas/nextcloud/dbpassword" = {
|
sops.secrets."jallen-nas/nextcloud/dbpassword" = {
|
||||||
# restartUnits = [ "podman-nextcloud.service" ];
|
restartUnits = [ "container@nextcloud.service" ];
|
||||||
};
|
};
|
||||||
sops.secrets."jallen-nas/nextcloud/adminpassword" = {
|
sops.secrets."jallen-nas/nextcloud/adminpassword" = {
|
||||||
# restartUnits = [ "podman-nextcloud.service" ];
|
restartUnits = [ "container@nextcloud.service" ];
|
||||||
};
|
};
|
||||||
sops.secrets."jallen-nas/nextcloud/smtppassword" = {
|
sops.secrets."jallen-nas/nextcloud/smtppassword" = {
|
||||||
# restartUnits = [ "nextcloud.service" ];
|
restartUnits = [ "container@nextcloud.service" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sops.templates."nextcloud-smtp".content = ''
|
||||||
|
"${config.sops.placeholder."jallen-nas/nextcloud/smtppassword"}"
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Permission modes are in octal representation (same as chmod),
|
||||||
|
# the digits represent: user|group|others
|
||||||
|
# 7 - full (rwx)
|
||||||
|
# 6 - read and write (rw-)
|
||||||
|
# 5 - read and execute (r-x)
|
||||||
|
# 4 - read only (r--)
|
||||||
|
# 3 - write and execute (-wx)
|
||||||
|
# 2 - write only (-w-)
|
||||||
|
# 1 - execute only (--x)
|
||||||
|
# 0 - none (---)
|
||||||
|
sops.secrets."jallen-nas/nextcloud/dbpassword".mode = "0777";
|
||||||
|
# Either a user id or group name representation of the secret owner
|
||||||
|
# It is recommended to get the user name from `config.users.users.<?name>.name` to avoid misconfiguration
|
||||||
|
# sops.secrets."jallen-nas/nextcloud/dbpassword".owner = config.users.users.nix-apps.name;
|
||||||
|
# # Either the group id or group name representation of the secret group
|
||||||
|
# # It is recommended to get the group name from `config.users.users.<?name>.group` to avoid misconfiguration
|
||||||
|
# sops.secrets."jallen-nas/nextcloud/dbpassword".group = config.users.users.jallen-nas.group;
|
||||||
|
|
||||||
|
sops.secrets."jallen-nas/nextcloud/adminpassword".mode = "0777";
|
||||||
|
# sops.secrets."jallen-nas/nextcloud/adminpassword".owner = config.users.users.nix-apps.name;
|
||||||
|
# sops.secrets."jallen-nas/nextcloud/adminpassword".group = config.users.users.jallen-nas.group;
|
||||||
|
|
||||||
|
sops.secrets."jallen-nas/nextcloud/smtppassword".mode = "0777";
|
||||||
|
# sops.secrets."jallen-nas/nextcloud/smtppassword".owner = config.users.users.nix-apps.name;
|
||||||
|
# sops.secrets."jallen-nas/nextcloud/smtppassword".group = config.users.users.jallen-nas.group;
|
||||||
}
|
}
|
||||||
123
modules/apps/nextcloud/default-nix.nix
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
let
|
||||||
|
adminpass = config.sops.secrets."jallen-nas/nextcloud/adminpassword".path;
|
||||||
|
dbpass = config.sops.secrets."jallen-nas/nextcloud/dbpassword".path;
|
||||||
|
smtppassword = config.sops.templates."nextcloud-smtp".content;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
containers.nextcloud = {
|
||||||
|
autoStart = true;
|
||||||
|
privateNetwork = true;
|
||||||
|
# hostAddress = "127.0.0.1";
|
||||||
|
# localAddress = "10.233.0.2";
|
||||||
|
# hostAddress6 = "fc00::1";
|
||||||
|
# localAddress6 = "fc00::2";
|
||||||
|
# hostForward = [
|
||||||
|
# {
|
||||||
|
# hostPort = 9943;
|
||||||
|
# containerPort = 80;
|
||||||
|
# }
|
||||||
|
# ];
|
||||||
|
|
||||||
|
hostBridge = "br0";
|
||||||
|
|
||||||
|
bindMounts = {
|
||||||
|
secrets = {
|
||||||
|
hostPath = "/run/secrets/jallen-nas/nextcloud";
|
||||||
|
isReadOnly = true;
|
||||||
|
mountPoint = "/run/secrets/jallen-nas/nextcloud";
|
||||||
|
};
|
||||||
|
|
||||||
|
data = {
|
||||||
|
hostPath = "/media/nas/main/nextcloud";
|
||||||
|
isReadOnly = false;
|
||||||
|
mountPoint = "/data";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = { config, pkgs, lib, ... }: {
|
||||||
|
services = {
|
||||||
|
nextcloud = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.nextcloud29;
|
||||||
|
datadir = "/data";
|
||||||
|
hostName = "localhost";
|
||||||
|
appstoreEnable = true;
|
||||||
|
caching.redis = true;
|
||||||
|
configureRedis = true;
|
||||||
|
config = {
|
||||||
|
adminuser = "mjallen";
|
||||||
|
adminpassFile = adminpass;
|
||||||
|
dbhost = "10.0.1.18:3306";
|
||||||
|
dbtype = "mysql";
|
||||||
|
dbname = "jallen_nextcloud";
|
||||||
|
dbuser = "nextcloud";
|
||||||
|
dbpassFile = dbpass;
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
trusted_domains = [
|
||||||
|
"10.0.1.18:9980"
|
||||||
|
"10.0.1.18:9943"
|
||||||
|
"cloud.mjallen.dev"
|
||||||
|
];
|
||||||
|
trusted_proxies = [
|
||||||
|
"10.0.1.18"
|
||||||
|
];
|
||||||
|
maintenance_window_start = 6;
|
||||||
|
default_phone_region = "US";
|
||||||
|
mail_from_address = "matt.l.jallen";
|
||||||
|
mail_smtpmode = "smtp";
|
||||||
|
mail_sendmailmode = "smtp";
|
||||||
|
mail_domain = "gmail.com";
|
||||||
|
mail_smtpauth = 1;
|
||||||
|
mail_smtpname = "matt.l.jallen";
|
||||||
|
mail_smtppassword = smtppassword;
|
||||||
|
mail_smtpsecure = "ssl";
|
||||||
|
mail_smtphost = "smtp.gmail.com";
|
||||||
|
mail_smtpport = 465;
|
||||||
|
enable_previews = true;
|
||||||
|
enabledPreviewProviders = [
|
||||||
|
"OC\\\\Preview\\\\PNG"
|
||||||
|
"OC\\\\Preview\\\\JPEG"
|
||||||
|
"OC\\\\Preview\\\\GIF"
|
||||||
|
"OC\\\\Preview\\\\BMP"
|
||||||
|
"OC\\\\Preview\\\\XBitmap"
|
||||||
|
"OC\\\\Preview\\\\MP3"
|
||||||
|
"OC\\\\Preview\\\\TXT"
|
||||||
|
"OC\\\\Preview\\\\MarkDown"
|
||||||
|
"OC\\\\Preview\\\\OpenDocument"
|
||||||
|
"OC\\\\Preview\\\\Krita"
|
||||||
|
"OC\\\\Preview\\\\HEIC"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nginx = {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts = {
|
||||||
|
"nextcloud-container.local" = {
|
||||||
|
# Change this to the desired port number
|
||||||
|
listen = [{ addr = "0.0.0.0"; port = 9943; }];
|
||||||
|
|
||||||
|
root = "/var/www/nextcloud";
|
||||||
|
|
||||||
|
# You may need to adjust other options for your specific setup
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
system.stateVersion = "23.11";
|
||||||
|
networking = {
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = [ 9943 ];
|
||||||
|
};
|
||||||
|
# Use systemd-resolved inside the container
|
||||||
|
# Workaround for bug https://github.com/NixOS/nixpkgs/issues/162686
|
||||||
|
useHostResolvConf = lib.mkForce false;
|
||||||
|
};
|
||||||
|
services.resolved.enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services.nextcloud = {
|
|
||||||
enable = true;
|
|
||||||
homeDir = "/media/nas/ssd/nix-app-data/nextcloud"; # ???
|
|
||||||
dataDir = "/media/nas/main/nextcloud"; # ???
|
|
||||||
caching.redis = true;
|
|
||||||
configureRedis = true;
|
|
||||||
appstore.enable = true;
|
|
||||||
|
|
||||||
config = {
|
|
||||||
adminuser = "mjallen";
|
|
||||||
adminpassFile = config.sops.secrets."jallen-nas/nextcloud/adminpassword".path;
|
|
||||||
dbhost = "10.0.1.18:3306";
|
|
||||||
dbtype = "mysql";
|
|
||||||
dbname = "jallen_nextcloud";
|
|
||||||
dbuser = "nextcloud";
|
|
||||||
dbpassFile = config.sops.secrets."jallen-nas/nextcloud/dbpassword".path;
|
|
||||||
};
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
trusted_domains = [
|
|
||||||
"10.0.1.18:9943"
|
|
||||||
"cloud.mjallen.dev"
|
|
||||||
];
|
|
||||||
trusted_proxies = [
|
|
||||||
"10.0.1.18"
|
|
||||||
];
|
|
||||||
maintenance_window_start = 6;
|
|
||||||
default_phone_region = "US";
|
|
||||||
mail_from_address = "matt.l.jallen";
|
|
||||||
mail_smtpmode = "smtp";
|
|
||||||
mail_sendmailmode = "smtp";
|
|
||||||
mail_domain = "gmail.com";
|
|
||||||
mail_smtpauth = 1;
|
|
||||||
mail_smtpname = "matt.l.jallen";
|
|
||||||
mail_smtppassword = builtins.readFile config.sops.secrets."jallen-nas/nextcloud/dbpassword".path;# ???
|
|
||||||
mail_smtpsecure = "ssl";
|
|
||||||
mail_smtphost = "smtp.gmail.com";
|
|
||||||
mail_smtpport = 465;
|
|
||||||
enable_previews = true;
|
|
||||||
enabledPreviewProviders = [
|
|
||||||
"OC\\Preview\\PNG"
|
|
||||||
"OC\\Preview\\JPEG"
|
|
||||||
"OC\\Preview\\GIF"
|
|
||||||
"OC\\Preview\\BMP"
|
|
||||||
"OC\\Preview\\XBitmap"
|
|
||||||
"OC\\Preview\\MP3"
|
|
||||||
"OC\\Preview\\TXT"
|
|
||||||
"OC\\Preview\\MarkDown"
|
|
||||||
"OC\\Preview\\OpenDocument"
|
|
||||||
"OC\\Preview\\Krita"
|
|
||||||
"OC\\Preview\\HEIC"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
let
|
|
||||||
# creds
|
|
||||||
password1 = "BogieDudie1"
|
|
||||||
in
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||