back to plasma
This commit is contained in:
parent
0d37685470
commit
4dcd29bacb
25 changed files with 385 additions and 610 deletions
38
flake.lock
generated
38
flake.lock
generated
|
|
@ -67,6 +67,27 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"disko": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs-stable"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736864502,
|
||||||
|
"narHash": "sha256-ItkIZyebGvNH2dK9jVGzJHGPtb6BSWLN8Gmef16NeY0=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "disko",
|
||||||
|
"rev": "0141aabed359f063de7413f80d906e1d98c0c123",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "v1.11.0",
|
||||||
|
"repo": "disko",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|
@ -111,16 +132,16 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747688870,
|
"lastModified": 1749154018,
|
||||||
"narHash": "sha256-ypL9WAZfmJr5V70jEVzqGjjQzF0uCkz+AFQF7n9NmNc=",
|
"narHash": "sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "d5f1f641b289553927b3801580598d200a501863",
|
"rev": "7aae0ee71a17b19708b93b3ed448a1a0952bf111",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-24.11",
|
"ref": "release-25.05",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|
@ -195,16 +216,16 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748995628,
|
"lastModified": 1749086602,
|
||||||
"narHash": "sha256-bFufQGSAEYQgjtc4wMrobS5HWN0hDP+ZX+zthYcml9U=",
|
"narHash": "sha256-DJcgJMekoxVesl9kKjfLPix2Nbr42i7cpEHJiTnBUwU=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "8eb3b6a2366a7095939cd22f0dc0e9991313294b",
|
"rev": "4792576cb003c994bd7cc1edada3129def20b27d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-24.11",
|
"ref": "nixos-25.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|
@ -213,6 +234,7 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
"deploy-rs": "deploy-rs",
|
"deploy-rs": "deploy-rs",
|
||||||
|
"disko": "disko",
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
"home-manager-stable": "home-manager-stable",
|
"home-manager-stable": "home-manager-stable",
|
||||||
"impermanence": "impermanence",
|
"impermanence": "impermanence",
|
||||||
|
|
|
||||||
39
flake.nix
39
flake.nix
|
|
@ -3,14 +3,14 @@
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/master";
|
url = "github:nix-community/home-manager/master";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
home-manager-stable = {
|
home-manager-stable = {
|
||||||
url = "github:nix-community/home-manager/release-24.11";
|
url = "github:nix-community/home-manager/release-25.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs-stable";
|
inputs.nixpkgs.follows = "nixpkgs-stable";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -24,6 +24,11 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs-stable";
|
inputs.nixpkgs.follows = "nixpkgs-stable";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
disko = {
|
||||||
|
url = "github:nix-community/disko?ref=v1.11.0";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs-stable";
|
||||||
|
};
|
||||||
|
|
||||||
nix-flatpak.url = "github:gmodena/nix-flatpak/latest";
|
nix-flatpak.url = "github:gmodena/nix-flatpak/latest";
|
||||||
|
|
||||||
impermanence.url = "github:nix-community/impermanence";
|
impermanence.url = "github:nix-community/impermanence";
|
||||||
|
|
@ -36,10 +41,11 @@
|
||||||
nixpkgs-stable,
|
nixpkgs-stable,
|
||||||
home-manager,
|
home-manager,
|
||||||
home-manager-stable,
|
home-manager-stable,
|
||||||
|
disko,
|
||||||
agenix,
|
agenix,
|
||||||
deploy-rs,
|
deploy-rs,
|
||||||
impermanence,
|
|
||||||
nix-flatpak,
|
nix-flatpak,
|
||||||
|
impermanence,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
|
@ -62,6 +68,7 @@
|
||||||
defaultModules = [
|
defaultModules = [
|
||||||
./hosts/${hostname}.nix
|
./hosts/${hostname}.nix
|
||||||
agenix.nixosModules.default
|
agenix.nixosModules.default
|
||||||
|
disko.nixosModules.default
|
||||||
hm.nixosModules.default
|
hm.nixosModules.default
|
||||||
impermanence.nixosModules.impermanence
|
impermanence.nixosModules.impermanence
|
||||||
nix-flatpak.nixosModules.nix-flatpak
|
nix-flatpak.nixosModules.nix-flatpak
|
||||||
|
|
@ -80,6 +87,11 @@
|
||||||
];
|
];
|
||||||
serverModules = [
|
serverModules = [
|
||||||
self.nixosModules.qbittorrent
|
self.nixosModules.qbittorrent
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
self.overlays.serverOverlay
|
||||||
|
];
|
||||||
|
}
|
||||||
];
|
];
|
||||||
typeModules = if type == "server" then serverModules else workstationModules;
|
typeModules = if type == "server" then serverModules else workstationModules;
|
||||||
allModules = defaultModules ++ typeModules ++ extraModules;
|
allModules = defaultModules ++ typeModules ++ extraModules;
|
||||||
|
|
@ -105,6 +117,12 @@
|
||||||
alexandria = mkHost {
|
alexandria = mkHost {
|
||||||
hostname = "alexandria";
|
hostname = "alexandria";
|
||||||
type = "server";
|
type = "server";
|
||||||
|
extraModules = [ self.nixosModules.qbittorrent ];
|
||||||
|
};
|
||||||
|
trantor = mkHost {
|
||||||
|
hostname = "trantor";
|
||||||
|
type = "server";
|
||||||
|
system = "aarch64-linux";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -113,6 +131,9 @@
|
||||||
};
|
};
|
||||||
workstationOverlay = final: prev: {
|
workstationOverlay = final: prev: {
|
||||||
plasticity = nixpkgs.legacyPackages."x86_64-linux".callPackage ./packages/plasticity.nix { };
|
plasticity = nixpkgs.legacyPackages."x86_64-linux".callPackage ./packages/plasticity.nix { };
|
||||||
|
toggleaudiosink =
|
||||||
|
nixpkgs.legacyPackages."x86_64-linux".callPackage ./packages/toggleaudiosink.nix
|
||||||
|
{ };
|
||||||
};
|
};
|
||||||
serverOverlay = final: prev: {
|
serverOverlay = final: prev: {
|
||||||
};
|
};
|
||||||
|
|
@ -134,6 +155,18 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
trantor = {
|
||||||
|
hostname = "trantor";
|
||||||
|
profiles = {
|
||||||
|
system = {
|
||||||
|
user = "root";
|
||||||
|
sshUser = "root";
|
||||||
|
remoteBuild = true;
|
||||||
|
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.alexandria;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
io = {
|
io = {
|
||||||
hostname = "io";
|
hostname = "io";
|
||||||
profiles = {
|
profiles = {
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ in
|
||||||
./jellyfin.nix
|
./jellyfin.nix
|
||||||
./librespeed.nix
|
./librespeed.nix
|
||||||
./memos.nix
|
./memos.nix
|
||||||
./nextcloud.nix
|
|
||||||
./nginx.nix
|
./nginx.nix
|
||||||
./searx.nix
|
./searx.nix
|
||||||
./services.nix
|
./services.nix
|
||||||
|
|
|
||||||
|
|
@ -4,14 +4,10 @@
|
||||||
networking = {
|
networking = {
|
||||||
firewall = {
|
firewall = {
|
||||||
allowedTCPPorts = [
|
allowedTCPPorts = [
|
||||||
80 # HTTP
|
80
|
||||||
443 # HTTPS
|
443
|
||||||
25565 # Minecraft
|
|
||||||
];
|
|
||||||
allowedUDPPorts = [
|
|
||||||
24454 # Minecraft Simple Voice Chat
|
|
||||||
25565 # Minecraft
|
|
||||||
];
|
];
|
||||||
|
allowedUDPPorts = [ ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,103 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
services = {
|
|
||||||
nextcloud = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.nextcloud30;
|
|
||||||
datadir = "/data/nextcloud";
|
|
||||||
hostName = "cloud.baduhai.dev";
|
|
||||||
configureRedis = true;
|
|
||||||
https = true;
|
|
||||||
autoUpdateApps.enable = true;
|
|
||||||
secretFile = config.age.secrets."nextcloud-secrets.json".path;
|
|
||||||
database.createLocally = true;
|
|
||||||
maxUploadSize = "16G";
|
|
||||||
caching = {
|
|
||||||
apcu = true;
|
|
||||||
redis = true;
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
trusted_proxies = [ "127.0.0.1" ];
|
|
||||||
default_phone_region = "BR";
|
|
||||||
maintenance_window_start = "4";
|
|
||||||
enabledPreviewProviders = [
|
|
||||||
"OC\\Preview\\BMP"
|
|
||||||
"OC\\Preview\\EMF"
|
|
||||||
"OC\\Preview\\Font"
|
|
||||||
"OC\\Preview\\GIF"
|
|
||||||
"OC\\Preview\\HEIC"
|
|
||||||
"OC\\Preview\\Illustrator"
|
|
||||||
"OC\\Preview\\JPEG"
|
|
||||||
"OC\\Preview\\Krita"
|
|
||||||
"OC\\Preview\\MarkDown"
|
|
||||||
"OC\\Preview\\Movie"
|
|
||||||
"OC\\Preview\\MP3"
|
|
||||||
"OC\\Preview\\MSOffice2003"
|
|
||||||
"OC\\Preview\\MSOffice2007"
|
|
||||||
"OC\\Preview\\MSOfficeDoc"
|
|
||||||
"OC\\Preview\\OpenDocument"
|
|
||||||
"OC\\Preview\\PDF"
|
|
||||||
"OC\\Preview\\Photoshop"
|
|
||||||
"OC\\Preview\\PNG"
|
|
||||||
"OC\\Preview\\Postscript"
|
|
||||||
"OC\\Preview\\SVG"
|
|
||||||
"OC\\Preview\\TIFF"
|
|
||||||
"OC\\Preview\\TXT"
|
|
||||||
"OC\\Preview\\XBitmap"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
config = {
|
|
||||||
dbtype = "pgsql";
|
|
||||||
adminpassFile = config.age.secrets.nextcloud-adminpass.path;
|
|
||||||
};
|
|
||||||
phpOptions = {
|
|
||||||
"opcache.interned_strings_buffer" = "16";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
collabora-online = {
|
|
||||||
enable = true;
|
|
||||||
port = lib.strings.toInt config.ports.collabora;
|
|
||||||
settings.ssl = {
|
|
||||||
enable = false;
|
|
||||||
termination = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nginx.virtualHosts = {
|
|
||||||
${config.services.nextcloud.hostName} = {
|
|
||||||
useACMEHost = "baduhai.dev";
|
|
||||||
forceSSL = true;
|
|
||||||
kTLS = true;
|
|
||||||
};
|
|
||||||
"office.baduhai.dev" = {
|
|
||||||
useACMEHost = "baduhai.dev";
|
|
||||||
forceSSL = true;
|
|
||||||
kTLS = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://127.0.0.1:${config.ports.collabora}";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
age.secrets = {
|
|
||||||
"nextcloud-secrets.json" = {
|
|
||||||
file = ../../../secrets/nextcloud-secrets.json.age;
|
|
||||||
owner = "nextcloud";
|
|
||||||
group = "hosted";
|
|
||||||
};
|
|
||||||
nextcloud-adminpass = {
|
|
||||||
file = ../../../secrets/nextcloud-adminpass.age;
|
|
||||||
owner = "nextcloud";
|
|
||||||
group = "hosted";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -5,7 +5,6 @@
|
||||||
./boot.nix
|
./boot.nix
|
||||||
./console.nix
|
./console.nix
|
||||||
./desktop.nix
|
./desktop.nix
|
||||||
./flatpak.nix
|
|
||||||
./impermanence.nix
|
./impermanence.nix
|
||||||
./locale.nix
|
./locale.nix
|
||||||
./networking.nix
|
./networking.nix
|
||||||
|
|
|
||||||
|
|
@ -18,13 +18,19 @@
|
||||||
# Workstation specific configuration
|
# Workstation specific configuration
|
||||||
(lib.mkIf hostType.isWorkstation {
|
(lib.mkIf hostType.isWorkstation {
|
||||||
services = {
|
services = {
|
||||||
displayManager.sddm = {
|
displayManager = {
|
||||||
|
autoLogin = {
|
||||||
|
enable = true;
|
||||||
|
user = "user";
|
||||||
|
};
|
||||||
|
sddm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wayland = {
|
wayland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
compositor = "kwin";
|
compositor = "kwin";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
desktopManager.plasma6.enable = true;
|
desktopManager.plasma6.enable = true;
|
||||||
pipewire = {
|
pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -36,8 +42,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# programs.hyprland.enable = true;
|
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
xpadneo.enable = true;
|
xpadneo.enable = true;
|
||||||
bluetooth.enable = true;
|
bluetooth.enable = true;
|
||||||
|
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
{
|
|
||||||
hostType,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
config = lib.mkMerge [
|
|
||||||
# Common configuration
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
# Server specific configuration
|
|
||||||
(lib.mkIf hostType.isServer {
|
|
||||||
})
|
|
||||||
|
|
||||||
# Workstation specific configuration
|
|
||||||
(lib.mkIf hostType.isWorkstation {
|
|
||||||
services.flatpak = {
|
|
||||||
enable = true;
|
|
||||||
packages = [
|
|
||||||
"com.github.k4zmu2a.spacecadetpinball"
|
|
||||||
"com.github.tchx84.Flatseal"
|
|
||||||
"com.steamgriddb.SGDBoop"
|
|
||||||
"app.zen_browser.zen"
|
|
||||||
"io.github.Foldex.AdwSteamGtk"
|
|
||||||
"io.itch.itch"
|
|
||||||
"org.freedesktop.Platform.VulkanLayer.MangoHud/x86_64/24.08"
|
|
||||||
];
|
|
||||||
uninstallUnmanaged = true;
|
|
||||||
update.auto.enable = true;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -27,14 +27,12 @@
|
||||||
];
|
];
|
||||||
directories = [
|
directories = [
|
||||||
"/etc/NetworkManager/system-connections"
|
"/etc/NetworkManager/system-connections"
|
||||||
"/etc/waydroid-extra/images/"
|
|
||||||
"/var/lib/bluetooth"
|
"/var/lib/bluetooth"
|
||||||
"/var/lib/flatpak"
|
"/var/lib/flatpak"
|
||||||
"/var/lib/nixos"
|
"/var/lib/nixos"
|
||||||
"/var/lib/systemd/coredump"
|
"/var/lib/systemd/coredump"
|
||||||
"/var/lib/systemd/timers"
|
"/var/lib/systemd/timers"
|
||||||
"/var/lib/tailscale"
|
"/var/lib/tailscale"
|
||||||
"/var/lib/waydroid"
|
|
||||||
"/var/log"
|
"/var/log"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,10 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
extraUpFlags = [ "--operator=user" ];
|
extraUpFlags = [ "--operator=user" ];
|
||||||
};
|
};
|
||||||
openssh.enable = true;
|
openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings.PermitRootLogin = "no";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@
|
||||||
config = lib.mkMerge [
|
config = lib.mkMerge [
|
||||||
# Common configuration
|
# Common configuration
|
||||||
{
|
{
|
||||||
environment.systemPackages = with pkgs; [
|
environment = {
|
||||||
|
systemPackages = with pkgs; [
|
||||||
### Dev Tools ###
|
### Dev Tools ###
|
||||||
agenix
|
agenix
|
||||||
git
|
git
|
||||||
|
|
@ -22,19 +23,18 @@
|
||||||
wget
|
wget
|
||||||
tmux
|
tmux
|
||||||
];
|
];
|
||||||
|
shellAliases = {
|
||||||
|
ls = "${pkgs.eza}/bin/eza --icons --group-directories-first";
|
||||||
|
neofetch = "fastfetch";
|
||||||
|
tree = "ls --tree";
|
||||||
|
syscleanup = "sudo nix-collect-garbage -d; sudo /run/current-system/bin/switch-to-configuration boot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
fish.enable = true;
|
fish.enable = true;
|
||||||
command-not-found.enable = false;
|
command-not-found.enable = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.shellAliases = {
|
|
||||||
ls = "${pkgs.eza}/bin/eza --icons --group-directories-first";
|
|
||||||
neofetch = "fastfetch";
|
|
||||||
tree = "ls --tree";
|
|
||||||
tsh = "ssh -o RequestTTY=yes $argv tmux -u -CC new -A -s tmux-main";
|
|
||||||
syscleanup = "sudo nix-collect-garbage -d; sudo /run/current-system/bin/switch-to-configuration boot";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Server specific configuration
|
# Server specific configuration
|
||||||
|
|
@ -64,7 +64,8 @@
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
environment.systemPackages =
|
environment = {
|
||||||
|
systemPackages =
|
||||||
with pkgs;
|
with pkgs;
|
||||||
[
|
[
|
||||||
### Dev Tools ###
|
### Dev Tools ###
|
||||||
|
|
@ -79,8 +80,6 @@
|
||||||
### Internet Browsers & Communication ###
|
### Internet Browsers & Communication ###
|
||||||
beeper
|
beeper
|
||||||
brave
|
brave
|
||||||
microsoft-edge
|
|
||||||
nextcloud-client
|
|
||||||
tor-browser
|
tor-browser
|
||||||
vesktop
|
vesktop
|
||||||
### Office & Productivity ###
|
### Office & Productivity ###
|
||||||
|
|
@ -92,7 +91,6 @@
|
||||||
kwrite
|
kwrite
|
||||||
libreoffice-qt
|
libreoffice-qt
|
||||||
obsidian
|
obsidian
|
||||||
(octaveFull.withPackages (octavePackages: with octavePackages; [ signal ]))
|
|
||||||
onlyoffice-desktopeditors
|
onlyoffice-desktopeditors
|
||||||
rnote
|
rnote
|
||||||
### Graphics & Design ###
|
### Graphics & Design ###
|
||||||
|
|
@ -127,10 +125,25 @@
|
||||||
qview
|
qview
|
||||||
]
|
]
|
||||||
++ kdepkgs;
|
++ kdepkgs;
|
||||||
|
plasma6.excludePackages = (
|
||||||
|
with pkgs.kdePackages;
|
||||||
|
[
|
||||||
|
discover
|
||||||
|
elisa
|
||||||
|
gwenview
|
||||||
|
kate
|
||||||
|
khelpcenter
|
||||||
|
oxygen
|
||||||
|
]
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
adb.enable = true;
|
adb.enable = true;
|
||||||
steam.enable = true;
|
steam = {
|
||||||
|
enable = true;
|
||||||
|
extraCompatPackages = [ pkgs.proton-ge-bin ];
|
||||||
|
};
|
||||||
dconf.enable = true;
|
dconf.enable = true;
|
||||||
nix-ld.enable = true;
|
nix-ld.enable = true;
|
||||||
kdeconnect.enable = true;
|
kdeconnect.enable = true;
|
||||||
|
|
@ -157,17 +170,29 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.plasma6.excludePackages = (
|
services.flatpak = {
|
||||||
with pkgs.kdePackages;
|
enable = true;
|
||||||
[
|
packages = [
|
||||||
discover
|
### Dev Tools ###
|
||||||
elisa
|
### Internet Browsers & Communication ###
|
||||||
gwenview
|
"app.zen_browser.zen"
|
||||||
kate
|
### Office & Productivity ###
|
||||||
khelpcenter
|
### Graphics & Design ###
|
||||||
oxygen
|
"com.boxy_svg.BoxySVG"
|
||||||
]
|
### Gaming & Entertainment ###
|
||||||
);
|
"com.github.k4zmu2a.spacecadetpinball"
|
||||||
|
"io.itch.itch"
|
||||||
|
"io.mrarm.mcpelauncher"
|
||||||
|
"org.freedesktop.Platform.VulkanLayer.MangoHud/x86_64/24.08"
|
||||||
|
### System Utilities ###
|
||||||
|
"com.github.tchx84.Flatseal"
|
||||||
|
"io.github.Foldex.AdwSteamGtk"
|
||||||
|
"com.steamgriddb.SGDBoop"
|
||||||
|
### Media ###
|
||||||
|
];
|
||||||
|
uninstallUnmanaged = true;
|
||||||
|
update.auto.enable = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
))
|
))
|
||||||
];
|
];
|
||||||
|
|
|
||||||
9
hosts/modules/trantor/boot.nix
Normal file
9
hosts/modules/trantor/boot.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
boot = {
|
||||||
|
loader.efi.efiSysMountPoint = "/boot";
|
||||||
|
initrd.systemd.enable = true;
|
||||||
|
kernel.sysctl."net.ipv4.ip_forward" = 1;
|
||||||
|
};
|
||||||
|
}
|
||||||
10
hosts/modules/trantor/default.nix
Normal file
10
hosts/modules/trantor/default.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./boot.nix
|
||||||
|
./disko.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
./networking.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
32
hosts/modules/trantor/disko.nix
Normal file
32
hosts/modules/trantor/disko.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
main = {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/sda";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
boot = {
|
||||||
|
size = "512M";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
root = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "ext4";
|
||||||
|
mountpoint = "/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
27
hosts/modules/trantor/hardware-configuration.nix
Normal file
27
hosts/modules/trantor/hardware-configuration.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
kernelModules = [ ];
|
||||||
|
extraModulePackages = [ ];
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"virtio_pci"
|
||||||
|
"virtio_scsi"
|
||||||
|
"usbhid"
|
||||||
|
];
|
||||||
|
kernelModules = [ ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
|
||||||
|
}
|
||||||
10
hosts/modules/trantor/networking.nix
Normal file
10
hosts/modules/trantor/networking.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
networking = {
|
||||||
|
firewall = {
|
||||||
|
allowedTCPPorts = [ 25566 ];
|
||||||
|
allowedUDPPorts = [ 25566 ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -20,17 +20,13 @@
|
||||||
"wheel"
|
"wheel"
|
||||||
];
|
];
|
||||||
openssh.authorizedKeys.keys = [
|
openssh.authorizedKeys.keys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKcwF1yuWEfYGScNocEbs0AmGxyTIzGc4/IhpU587SJE"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA1v3+q3EaruiiStWjubEJWvtejam/r41uoOpCdwJtLL user@rotterdam"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA1v3+q3EaruiiStWjubEJWvtejam/r41uoOpCdwJtLL"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO3Y0PVpGfJHonqDS7qoCFhqzUvqGq9I9sax+F9e/5cs user@io"
|
||||||
];
|
];
|
||||||
hashedPassword = "$6$Pj7v/CpstyuWQQV0$cNujVDhfMBdwlGVEnnd8t71.kZPixbo0u25cd.874iaqLTH4V5fa1f98V5zGapjQCz5JyZmsR94xi00sUrntT0";
|
hashedPassword = "$6$Pj7v/CpstyuWQQV0$cNujVDhfMBdwlGVEnnd8t71.kZPixbo0u25cd.874iaqLTH4V5fa1f98V5zGapjQCz5JyZmsR94xi00sUrntT0";
|
||||||
};
|
};
|
||||||
root = {
|
root = {
|
||||||
shell = pkgs.fish;
|
shell = pkgs.fish;
|
||||||
openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKcwF1yuWEfYGScNocEbs0AmGxyTIzGc4/IhpU587SJE"
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA1v3+q3EaruiiStWjubEJWvtejam/r41uoOpCdwJtLL"
|
|
||||||
];
|
|
||||||
hashedPassword = "!";
|
hashedPassword = "!";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
libvirtd.enable = true;
|
libvirtd.enable = true;
|
||||||
lxd.enable = true;
|
lxd.enable = true;
|
||||||
waydroid.enable = true;
|
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
|
||||||
13
hosts/trantor.nix
Normal file
13
hosts/trantor.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
networking.hostName = "trantor";
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./modules/trantor
|
||||||
|
./modules
|
||||||
|
];
|
||||||
|
|
||||||
|
nix.nixPath = [ "nixos-config=${./trantor.nix}" ];
|
||||||
|
}
|
||||||
|
|
||||||
48
packages/toggleaudiosink.nix
Normal file
48
packages/toggleaudiosink.nix
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
pkgs ? import <nixpkgs> { },
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.writeShellScriptBin "toggleaudiosink" ''
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
sound_server="pipewire"
|
||||||
|
|
||||||
|
# Grab a count of how many audio sinks we have
|
||||||
|
sink_count=$(${pkgs.pulseaudio}/bin/pactl list sinks | grep -c "Sink #[[:digit:]]")
|
||||||
|
# Create an array of the actual sink IDs
|
||||||
|
sinks=()
|
||||||
|
mapfile -t sinks < <(${pkgs.pulseaudio}/bin/pactl list sinks | grep 'Sink #[[:digit:]]' | sed -n -e 's/.*Sink #\([[:digit:]]\)/\1/p')
|
||||||
|
# Get the ID of the active sink
|
||||||
|
active_sink_name=$(${pkgs.pulseaudio}/bin/pactl info | grep 'Default Sink:' | sed -n -e 's/.*Default Sink:[[:space:]]\+\(.*\)/\1/p')
|
||||||
|
active_sink=$(${pkgs.pulseaudio}/bin/pactl list sinks | grep -B 2 "$active_sink_name" | sed -n -e 's/Sink #\([[:digit:]]\)/\1/p' | head -n 1)
|
||||||
|
|
||||||
|
# Get the ID of the last sink in the array
|
||||||
|
final_sink=''${sinks[$((sink_count - 1))]}
|
||||||
|
|
||||||
|
# Find the index of the active sink
|
||||||
|
for index in "''${!sinks[@]}"; do
|
||||||
|
if [[ "''${sinks[$index]}" == "$active_sink" ]]; then
|
||||||
|
active_sink_index=$index
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Default to the first sink in the list
|
||||||
|
next_sink=''${sinks[0]}
|
||||||
|
next_sink_index=0
|
||||||
|
|
||||||
|
# If we're not at the end of the list, move up the list
|
||||||
|
if [[ $active_sink -ne $final_sink ]]; then
|
||||||
|
next_sink_index=$((active_sink_index + 1))
|
||||||
|
next_sink=''${sinks[$next_sink_index]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Change the default sink
|
||||||
|
# Get the name of the next sink
|
||||||
|
next_sink_name=$(${pkgs.pulseaudio}/bin/pactl list sinks | grep -C 2 "Sink #$next_sink" | sed -n -e 's/.*Name:[[:space:]]\+\(.*\)/\1/p' | head -n 1)
|
||||||
|
${pkgs.pulseaudio}/bin/pactl set-default-sink "$next_sink_name"
|
||||||
|
|
||||||
|
# Move all inputs to the new sink
|
||||||
|
for app in $(${pkgs.pulseaudio}/bin/pactl list sink-inputs | sed -n -e 's/.*Sink Input #\([[:digit:]]\)/\1/p'); do
|
||||||
|
${pkgs.pulseaudio}/bin/pactl "move-sink-input $app $next_sink"
|
||||||
|
done
|
||||||
|
''
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
All my personal Nix and NixOS hosts, in a flake.
|
All my personal Nix and NixOS hosts, in a flake.
|
||||||
|
|
||||||
|Host|Description|Nixpkgs version|
|
|Host|Description|System Version|
|
||||||
|:---|:---:|---:|
|
|:---|:---:|---:|
|
||||||
|alexandria|Personal server/NAS|24.05|
|
|alexandria|Personal server/NAS|NixOS 25.05|
|
||||||
|io|Mobile workstation|unstable|
|
|io|Mobile workstation|NixOS Unstable|
|
||||||
|rotterdam|Workstation|unstable|
|
|rotterdam|Workstation|NixOS Unstable|
|
||||||
|
|trantor|Oracle Cloud VPS|NixOS 25.05|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
# ./hyprland.nix
|
|
||||||
./programs.nix
|
./programs.nix
|
||||||
|
./home.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
20
users/modules/user/home.nix
Normal file
20
users/modules/user/home.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.pointerCursor = {
|
||||||
|
package = pkgs.kdePackages.breeze;
|
||||||
|
name = "Breeze_Light";
|
||||||
|
gtk.enable = true;
|
||||||
|
x11.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
gtk3.extraConfig = {
|
||||||
|
gtk-decoration-layout = "appmenu:";
|
||||||
|
};
|
||||||
|
gtk4.extraConfig = {
|
||||||
|
gtk-decoration-layout = "appmenu:";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,299 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
heightfittr = pkgs.writeShellApplication {
|
|
||||||
name = "heightfittr";
|
|
||||||
runtimeInputs = with pkgs; [
|
|
||||||
socat
|
|
||||||
hyprland
|
|
||||||
];
|
|
||||||
text = ''
|
|
||||||
function handle {
|
|
||||||
case "$1" in
|
|
||||||
*openwindow*)
|
|
||||||
hyprctl dispatch scroller:fitheight all > /dev/null
|
|
||||||
;;
|
|
||||||
*closewindow*)
|
|
||||||
hyprctl dispatch scroller:fitheight all > /dev/null
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
socat - "UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" | while read -r line; do
|
|
||||||
handle "$line"
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
scrollermodetoggle = pkgs.writeShellApplication {
|
|
||||||
name = "scrollermodetoggle";
|
|
||||||
runtimeInputs = with pkgs; [ hyprland ];
|
|
||||||
text = ''
|
|
||||||
if [ -f "$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/colmode" ]; then
|
|
||||||
rm "$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/colmode"
|
|
||||||
hyprctl --batch 'dispatch scroller:setmode row; notify 2 1000 0 "Row Mode"'
|
|
||||||
else
|
|
||||||
touch "$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/colmode"
|
|
||||||
hyprctl --batch 'dispatch scroller:setmode col; notify 2 1000 0 "Column Mode"'
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
plugins = with pkgs.hyprlandPlugins; [ hyprscroller ];
|
|
||||||
extraConfig = ''
|
|
||||||
################
|
|
||||||
### MONITORS ###
|
|
||||||
################
|
|
||||||
monitor=,preferred,auto,1
|
|
||||||
|
|
||||||
#################
|
|
||||||
### AUTOSTART ###
|
|
||||||
#################
|
|
||||||
# exec-once = ${pkgs.gnome-settings-daemon}/libexec/gsd-rfkill
|
|
||||||
# exec-once = waybar
|
|
||||||
# exec-once = syshud
|
|
||||||
exec-once = ${lib.getExe heightfittr}
|
|
||||||
env = XCURSOR_SIZE,24
|
|
||||||
env = HYPRCURSOR_SIZE,24
|
|
||||||
|
|
||||||
#####################
|
|
||||||
### LOOK AND FEEL ###
|
|
||||||
#####################
|
|
||||||
general {
|
|
||||||
gaps_in = 5
|
|
||||||
gaps_out = 20
|
|
||||||
border_size = 2
|
|
||||||
resize_on_border = true
|
|
||||||
allow_tearing = false
|
|
||||||
layout = scroller
|
|
||||||
}
|
|
||||||
misc {
|
|
||||||
font_family = Inter
|
|
||||||
}
|
|
||||||
plugin {
|
|
||||||
scroller {
|
|
||||||
column_default_width = onethird
|
|
||||||
focuswrap = false
|
|
||||||
column_widths = onethird onehalf twothirds
|
|
||||||
center_row_if_space_available = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
decoration {
|
|
||||||
rounding = 10
|
|
||||||
rounding_power = 2
|
|
||||||
dim_inactive = true
|
|
||||||
dim_strength = 0.3
|
|
||||||
shadow {
|
|
||||||
enabled = true
|
|
||||||
range = 4
|
|
||||||
render_power = 3
|
|
||||||
}
|
|
||||||
blur {
|
|
||||||
enabled = true
|
|
||||||
size = 8
|
|
||||||
passes = 1
|
|
||||||
vibrancy = 0.1696
|
|
||||||
}
|
|
||||||
layerrule = blur, waybar
|
|
||||||
layerrule = ignorealpha 0.5, waybar
|
|
||||||
layerrule = ignorezero, waybar
|
|
||||||
}
|
|
||||||
animations {
|
|
||||||
enabled = yes, please :)
|
|
||||||
bezier = easeOutQuint,0.23,1,0.32,1
|
|
||||||
bezier = easeInOutCubic,0.65,0.05,0.36,1
|
|
||||||
bezier = linear,0,0,1,1
|
|
||||||
bezier = almostLinear,0.5,0.5,0.75,1.0
|
|
||||||
bezier = quick,0.15,0,0.1,1
|
|
||||||
animation = global, 1, 1, default
|
|
||||||
animation = border, 1, 1, easeOutQuint
|
|
||||||
animation = windows, 1, 1, easeOutQuint
|
|
||||||
animation = windowsIn, 1, 1, easeOutQuint, popin 87%
|
|
||||||
animation = windowsOut, 1, 1, linear, popin 87%
|
|
||||||
animation = fadeIn, 1, 1, almostLinear
|
|
||||||
animation = fadeOut, 1, 1, almostLinear
|
|
||||||
animation = fade, 1, 1, quick
|
|
||||||
animation = layers, 1, 1, easeOutQuint
|
|
||||||
animation = layersIn, 1, 1, easeOutQuint, fade
|
|
||||||
animation = layersOut, 1, 1, linear, fade
|
|
||||||
animation = fadeLayersIn, 1, 1, almostLinear
|
|
||||||
animation = fadeLayersOut, 1, 1, almostLinear
|
|
||||||
animation = workspaces, 1, 1, almostLinear, slidevert
|
|
||||||
}
|
|
||||||
misc {
|
|
||||||
force_default_wallpaper = 0
|
|
||||||
disable_hyprland_logo = true
|
|
||||||
}
|
|
||||||
|
|
||||||
#############
|
|
||||||
### INPUT ###
|
|
||||||
#############
|
|
||||||
input {
|
|
||||||
kb_layout = us
|
|
||||||
kb_variant = altgr-intl
|
|
||||||
follow_mouse = 1
|
|
||||||
sensitivity = 0
|
|
||||||
accel_profile = flat
|
|
||||||
natural_scroll = true
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = true
|
|
||||||
clickfinger_behavior = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
###################
|
|
||||||
### KEYBINDINGS ###
|
|
||||||
###################
|
|
||||||
$mainMod = SUPER
|
|
||||||
$terminal = ghostty
|
|
||||||
$menu = ulauncher-toggle
|
|
||||||
# APP SHORTCUTS
|
|
||||||
bind = ALT, SPACE, exec, $menu
|
|
||||||
bind = $mainMod, RETURN, exec, $terminal
|
|
||||||
# SESSION MANAGEMENT
|
|
||||||
bind = CTRL ALT, DELETE, exit,
|
|
||||||
bind = $mainMod, mouse_up, exec, hyprnome
|
|
||||||
bind = $mainMod, mouse_down, exec, hyprnome --previous
|
|
||||||
bind = CTRL ALT, j, exec, hyprnome
|
|
||||||
bind = CTRL ALT, k, exec, hyprnome --previous
|
|
||||||
bind = $mainMod CTRL ALT, j, exec, hyprnome --move
|
|
||||||
bind = $mainMod CTRL ALT, k, exec, hyprnome --move --previous
|
|
||||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
|
||||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
|
||||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
|
||||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
|
||||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
|
|
||||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
|
|
||||||
bindl = , XF86AudioNext, exec, playerctl next
|
|
||||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
|
||||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
|
||||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
|
||||||
bind = CTRL ALT SHIFT, a, exec, bash /home/user/.local/bin/toggle-audio-output.sh
|
|
||||||
# WINDOW MANAGEMENT
|
|
||||||
bind = ALT, F4, killactive,
|
|
||||||
bind = $mainMod, space, togglefloating,
|
|
||||||
bind = $mainMod, f, fullscreen
|
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
|
||||||
bind = SUPER, h, movefocus, l
|
|
||||||
bind = SUPER, l, movefocus, r
|
|
||||||
bind = SUPER, k, movefocus, u
|
|
||||||
bind = SUPER, j, movefocus, d
|
|
||||||
bind = $mainMod CTRL, h, movewindow, l
|
|
||||||
bind = $mainMod CTRL, l, movewindow, r
|
|
||||||
bind = $mainMod CTRL, k, movewindow, u
|
|
||||||
bind = $mainMod CTRL, j, movewindow, d
|
|
||||||
bind = $mainMod, v, exec, ${lib.getExe scrollermodetoggle}
|
|
||||||
bind = $mainMod, r, scroller:cyclewidth, next
|
|
||||||
bind = $mainMod CTRL, r, scroller:cyclewidth, prev
|
|
||||||
bind = $mainMod, p, scroller:pin,
|
|
||||||
bind = $mainMod, c, scroller:alignwindow, center
|
|
||||||
bind = $mainMod CTRL, f, scroller:fitsize, all
|
|
||||||
|
|
||||||
####################
|
|
||||||
### WINDOW RULES ###
|
|
||||||
####################
|
|
||||||
windowrulev2 = suppressevent maximize, class:.*
|
|
||||||
windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
|
||||||
# ulauncher
|
|
||||||
windowrule = float, ulauncher
|
|
||||||
windowrule = pin, ulauncher
|
|
||||||
windowrule = noborder, ulauncher
|
|
||||||
windowrule = noshadow, ulauncher
|
|
||||||
windowrule = nomaxsize, ulauncher
|
|
||||||
windowrule = noblur, ulauncher
|
|
||||||
windowrulev2 = animation slide top, class:^(ulauncher)$
|
|
||||||
# browsers
|
|
||||||
windowrulev2 = plugin:scroller:columnwidth onehalf, class:(firefox)
|
|
||||||
windowrulev2 = plugin:scroller:columnwidth onehalf, class:(zen)
|
|
||||||
windowrulev2 = plugin:scroller:columnwidth onehalf, class:(brave)
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
# swaync = {
|
|
||||||
# enable = true;
|
|
||||||
# settings = {
|
|
||||||
# positionX = "left";
|
|
||||||
# positionY = "top";
|
|
||||||
# layer = "overlay";
|
|
||||||
# control-center-layer = "top";
|
|
||||||
# layer-shell = true;
|
|
||||||
# cssPriority = "application";
|
|
||||||
# control-center-margin-top = 20;
|
|
||||||
# control-center-margin-bottom = 20;
|
|
||||||
# control-center-margin-right = 20;
|
|
||||||
# control-center-margin-left = 20;
|
|
||||||
# notification-2fa-action = true;
|
|
||||||
# notification-inline-replies = false;
|
|
||||||
# notification-icon-size = 64;
|
|
||||||
# notification-body-image-height = 100;
|
|
||||||
# notification-body-image-width = 200;
|
|
||||||
# timeout = 10;
|
|
||||||
# timeout-low = 5;
|
|
||||||
# timeout-critical = 0;
|
|
||||||
# fit-to-screen = true;
|
|
||||||
# relative-timestamps = true;
|
|
||||||
# control-center-width = 500;
|
|
||||||
# control-center-height = 600;
|
|
||||||
# notification-window-width = 500;
|
|
||||||
# keyboard-shortcuts = true;
|
|
||||||
# image-visibility = "when-available";
|
|
||||||
# transition-time = 200;
|
|
||||||
# hide-on-clear = false;
|
|
||||||
# hide-on-action = true;
|
|
||||||
# script-fail-notify = true;
|
|
||||||
# widgets = [
|
|
||||||
# "inhibitors"
|
|
||||||
# "title"
|
|
||||||
# "dnd"
|
|
||||||
# "notifications"
|
|
||||||
# "mpris"
|
|
||||||
# ];
|
|
||||||
# widget-config = {
|
|
||||||
# inhibitors = {
|
|
||||||
# text = "Inhibitors";
|
|
||||||
# button-text = "Clear All";
|
|
||||||
# clear-all-button = true;
|
|
||||||
# };
|
|
||||||
# title = {
|
|
||||||
# text = "Notifications";
|
|
||||||
# clear-all-button = true;
|
|
||||||
# button-text = "Clear All";
|
|
||||||
# };
|
|
||||||
# dnd = {
|
|
||||||
# text = "Do Not Disturb";
|
|
||||||
# };
|
|
||||||
# mpris = {
|
|
||||||
# image-size = 96;
|
|
||||||
# image-radius = 12;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# clipman.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# programs = {
|
|
||||||
# hyprlock.enable = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
brightnessctl
|
|
||||||
ghostty
|
|
||||||
hyprnome
|
|
||||||
playerctl
|
|
||||||
swaynotificationcenter
|
|
||||||
syshud
|
|
||||||
ulauncher
|
|
||||||
waybar
|
|
||||||
# inputs.mithril.packages.${pkgs.system}.mithril-control-center
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -57,10 +57,13 @@
|
||||||
settings = {
|
settings = {
|
||||||
add_newline = false;
|
add_newline = false;
|
||||||
format = ''
|
format = ''
|
||||||
$directory$git_branch$git_status$nix_shell
|
$hostname$directory$git_branch$git_status$nix_shell
|
||||||
[ ❯ ](bold green)
|
[ ❯ ](bold green)
|
||||||
'';
|
'';
|
||||||
right_format = "$cmd_duration$character";
|
right_format = "$cmd_duration$character";
|
||||||
|
hostname = {
|
||||||
|
ssh_symbol = "<U+EB3A> ";
|
||||||
|
};
|
||||||
character = {
|
character = {
|
||||||
error_symbol = "[](red)";
|
error_symbol = "[](red)";
|
||||||
success_symbol = "[](green)";
|
success_symbol = "[](green)";
|
||||||
|
|
@ -111,10 +114,6 @@
|
||||||
(lib.mkIf hostType.isWorkstation {
|
(lib.mkIf hostType.isWorkstation {
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
# home.packages = with pkgs; [
|
|
||||||
# ulauncher
|
|
||||||
# ];
|
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
password-store.package = pkgs.pass-wayland;
|
password-store.package = pkgs.pass-wayland;
|
||||||
|
|
||||||
|
|
@ -146,37 +145,6 @@
|
||||||
gtk-decoration-layout = "appmenu:";
|
gtk-decoration-layout = "appmenu:";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# systemd.user.services.ulauncher = {
|
|
||||||
# Unit = {
|
|
||||||
# Description = "Ulauncher Application Launcher";
|
|
||||||
# After = [ "graphical-session.target" ];
|
|
||||||
# };
|
|
||||||
# Service = {
|
|
||||||
# Type = "simple";
|
|
||||||
# Environment =
|
|
||||||
# let
|
|
||||||
# pydeps = pkgs.python3.withPackages (
|
|
||||||
# pp: with pp; [
|
|
||||||
# # dependencies for ulauncher-albert-calculate-anything
|
|
||||||
# parsedatetime
|
|
||||||
# pint
|
|
||||||
# pytz
|
|
||||||
# requests
|
|
||||||
# simpleeval
|
|
||||||
# ]
|
|
||||||
# );
|
|
||||||
# in
|
|
||||||
# [
|
|
||||||
# "PYTHONPATH=${pydeps}/${pydeps.sitePackages}"
|
|
||||||
# ];
|
|
||||||
# ExecStart = pkgs.writeShellScript "ulauncher-env-wrapper.sh" ''
|
|
||||||
# export PATH="''${XDG_BIN_HOME}:$HOME/.nix-profile/bin:/etc/profiles/per-user/$USER/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin"
|
|
||||||
# export GDK_BACKEND=wayland
|
|
||||||
# exec ${pkgs.ulauncher}/bin/ulauncher --hide-window
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue