From c73cb37278a62be2a1fbbe136e6a47e7d83972b6 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 13:25:08 +0200 Subject: [PATCH] Modularize teams sops yazi --- README.md | 3 + base/common_hardware.nix | 92 +- base/default.nix | 8 +- base/env.nix | 3 +- base/xkb_layout.nix | 3 +- flake.lock | 108 +- flake.nix | 120 +- hardware/marmo/configuration.nix | 20 +- hardware/overheating/configuration.nix | 15 +- hardware/overheating/dsdt.nix | 3 +- hardware/overheating/firmware.nix | 6 +- hardware/overheating/overheating.nix | 6 +- hardware/server/configuration.nix | 88 +- hardware/server/hardware-configuration.nix | 70 +- hardware/server/mautrix-discord.nix | 58 +- hardware/server/mautrix-whatsapp.nix | 58 +- hardware/spaceship/configuration.nix | 43 +- hm/default.nix | 37 - lib/default.nix | 36 +- modules/conf.nix | 22 +- modules/default.nix | 7 +- modules/programs/acpid.nix | 7 +- modules/programs/base_packages.nix | 152 +- modules/programs/bluetooth.nix | 13 +- modules/programs/coding.nix | 184 +-- modules/programs/default.nix | 43 +- modules/programs/drives.nix | 63 +- modules/programs/firefox.nix | 11 +- modules/programs/flatpak.nix | 15 +- modules/programs/gaming.nix | 18 +- modules/programs/git.nix | 36 +- modules/programs/gnome_services.nix | 19 +- modules/programs/gpu.nix | 72 +- modules/programs/greetd.nix | 98 +- modules/programs/home_packages.nix | 16 +- modules/programs/hyprland/anyrun.nix | 2 +- modules/programs/hyprland/hyprland.nix | 525 ++++--- modules/programs/hyprland/hyprlock.nix | 42 +- modules/programs/hyprland/hyprpaper.nix | 12 +- modules/programs/hyprland/ironbar.nix | 399 +++--- modules/programs/kde_connect.nix | 25 +- modules/programs/keepassxc.nix | 49 +- modules/programs/layout.nix | 2 +- modules/programs/media.nix | 13 +- modules/programs/nextcloud.nix | 12 +- modules/programs/piper.nix | 11 +- modules/programs/printing.nix | 25 +- modules/programs/sops.nix | 30 + modules/programs/starship.nix | 173 +-- modules/programs/stylix.nix | 8 +- modules/programs/teams.nix | 17 + modules/programs/virtualbox.nix | 5 +- modules/programs/xone.nix | 5 +- modules/programs/yazi/default.nix | 14 + modules/programs/yazi/yazi.nix | 1139 +++++++++++++++ override/cambalache.nix | 92 -- override/teams.nix | 28 + programs/common.nix | 53 +- programs/default.nix | 45 +- programs/individual_configs/default.nix | 10 +- programs/individual_configs/direnv.nix | 7 +- programs/individual_configs/fish.nix | 231 ++- programs/individual_configs/kitty.nix | 13 +- programs/individual_configs/ncspot.nix | 71 +- programs/individual_configs/neovide.nix | 3 +- programs/individual_configs/yazi.nix | 1494 -------------------- programs/oxi/default.nix | 9 +- programs/oxi/oxidash.nix | 77 +- programs/oxi/oxinoti.nix | 38 +- programs/oxi/oxipaste.nix | 53 +- programs/oxi/oxishut.nix | 41 +- programs/sync.nix | 72 +- programs/themes/default.nix | 6 +- programs/themes/qt.nix | 139 +- programs/xdg.nix | 53 +- 75 files changed, 3023 insertions(+), 3573 deletions(-) delete mode 100644 hm/default.nix create mode 100644 modules/programs/sops.nix create mode 100644 modules/programs/teams.nix create mode 100644 modules/programs/yazi/default.nix create mode 100644 modules/programs/yazi/yazi.nix delete mode 100644 override/cambalache.nix create mode 100644 override/teams.nix delete mode 100644 programs/individual_configs/yazi.nix diff --git a/README.md b/README.md index 6c2ff4a..13cd64f 100644 --- a/README.md +++ b/README.md @@ -42,3 +42,6 @@ For package lists, please check the individual modules, as the lists can be long - nextcloud : Handles synchronization via nextcloud cmd. (requires config.sops.secrets.nextcloud) - firefox: Enables and configures firefox (extensions and settings) - Hyprland: Installs and configures Hyprland with various additional packages +- yazi: Installs yazi and sets custom keybinds +- teams: For the poor souls that have to use this.... +- sops: Enables sops-nix diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 35fa27e..64c8cf4 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -1,20 +1,20 @@ { pkgs, config, lib, modulesPath, ... }: -let - username = config.conf.username; -in -{ - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; +let username = config.conf.username; +in { + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + boot = { + extraModulePackages = + [ pkgs.linuxKernel.packages.linux_xanmod_latest.v4l2loopback ]; + kernelModules = [ "v4l2loopback" ]; + }; + # Bootloader. boot.loader.systemd-boot = { enable = true; configurationLimit = 5; }; boot.loader.efi.canTouchEfiVariables = true; - boot.plymouth = { - enable = true; - }; + boot.plymouth = { enable = true; }; # Enable networking networking.useDHCP = lib.mkDefault true; @@ -40,9 +40,7 @@ in options = "--delete-older-than 7d --delete-generations +5"; }; settings = { - trusted-users = [ - username - ]; + trusted-users = [ username ]; auto-optimise-store = true; experimental-features = "nix-command flakes"; @@ -51,7 +49,8 @@ in # Enable sound with pipewire. hardware.pulseaudio.enable = false; - hardware.cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.${config.conf.cpu}.updateMicrocode = + lib.mkDefault config.hardware.enableRedistributableFirmware; services.fstrim.enable = lib.mkDefault true; security.rtkit.enable = true; @@ -68,55 +67,48 @@ in }; boot.kernelPackages = config.conf.kernel; - boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; - boot.kernelParams = [ - "resume=\"PARTLABEL=SWAP\"" - ] ++ config.conf.boot_params; + boot.initrd.availableKernelModules = + [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; + boot.kernelParams = [ ''resume="PARTLABEL=SWAP"'' ] + ++ config.conf.boot_params; # allows user change later on users.mutableUsers = true; users.users.${username} = { isNormalUser = true; description = username; - extraGroups = [ "networkmanager" "wheel" "gamemode" "docker" "vboxusers" ]; - packages = with pkgs; [ - home-manager - xdg-desktop-portal-gtk + extraGroups = [ + "networkmanager" + "wheel" + "gamemode" + "docker" + "vboxusers" + "video" + "audio" ]; + packages = with pkgs; [ home-manager xdg-desktop-portal-gtk ]; # this password will only last for the first login # e.g. login, then change to whatever else, this also ensures no public hash is available password = "firstlogin"; }; - fileSystems."/" = - { - device = "/dev/disk/by-label/ROOT"; - fsType = "btrfs"; - options = [ - "noatime" - "nodiratime" - "discard" - ]; - }; + fileSystems."/" = { + device = "/dev/disk/by-label/ROOT"; + fsType = "btrfs"; + options = [ "noatime" "nodiratime" "discard" ]; + }; - fileSystems."/boot" = - { - device = "/dev/disk/by-label/BOOT"; - fsType = "vfat"; - options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; - }; + fileSystems."/boot" = { + device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; + }; - fileSystems."/home" = - { - device = "/dev/disk/by-label/HOME"; - fsType = "btrfs"; - options = [ - "noatime" - "nodiratime" - "discard" - ]; - }; + fileSystems."/home" = { + device = "/dev/disk/by-label/HOME"; + fsType = "btrfs"; + options = [ "noatime" "nodiratime" "discard" ]; + }; - swapDevices = - [{ device = "/dev/disk/by-label/SWAP"; }]; + swapDevices = [{ device = "/dev/disk/by-label/SWAP"; }]; } diff --git a/base/default.nix b/base/default.nix index eafd8a5..5a3407b 100644 --- a/base/default.nix +++ b/base/default.nix @@ -1,7 +1 @@ -{ - imports = [ - ./env.nix - ./xkb_layout.nix - ./common_hardware.nix - ]; -} +{ imports = [ ./env.nix ./xkb_layout.nix ./common_hardware.nix ]; } diff --git a/base/env.nix b/base/env.nix index 06be546..5c54393 100644 --- a/base/env.nix +++ b/base/env.nix @@ -1,6 +1,7 @@ { pkgs, config, ... }: { environment.variables = { - GSETTINGS_SCHEMA_DIR = "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; + GSETTINGS_SCHEMA_DIR = + "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; NEOVIDE_MAXIMIZED = "0"; GPG_TTY = "$(tty)"; EDITOR = "neovide --no-fork"; diff --git a/base/xkb_layout.nix b/base/xkb_layout.nix index ecbc97c..5b407e0 100644 --- a/base/xkb_layout.nix +++ b/base/xkb_layout.nix @@ -10,8 +10,7 @@ let key { [ u, U, udiaeresis, Udiaeresis ] }; }; ''; -in -{ +in { environment.systemPackages = [ pkgs.xorg.xkbcomp ]; services.xserver.xkb.extraLayouts.dashie = { description = "US layout with 'umlaut'"; diff --git a/flake.lock b/flake.lock index 1a1242b..2481d6a 100644 --- a/flake.lock +++ b/flake.lock @@ -40,11 +40,11 @@ ] }, "locked": { - "lastModified": 1723920171, - "narHash": "sha256-dVCMrAe+D/5S91erhwQj2DSzHOVzAanWqoy+vPWB9DY=", + "lastModified": 1724273991, + "narHash": "sha256-+aUSOXKGpS5CRm1oTitgNAr05ThQNbKIXalZHl3nC6Y=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "71d49670fe246cdaff4860b0effba0ab9f163b72", + "rev": "9a3161ad4c78dc420d1cbb3aae638222608c7de4", "type": "github" }, "original": { @@ -218,11 +218,11 @@ "nixvim": "nixvim" }, "locked": { - "lastModified": 1724091718, - "narHash": "sha256-v5gx+y+cVEk1e0QsVVVhoINd3L+y2UW9XRr7/6jjORo=", + "lastModified": 1724498597, + "narHash": "sha256-rq3CS7CpkC5lLn/eDqmftyA2C7McUm+sYGUMpH2oJU4=", "owner": "DashieTM", "repo": "DashVim", - "rev": "b319fb44c1095a42c50ec1297f051ce6311c21fa", + "rev": "02e646467e4454633a7d248dfda7a7a7ecb4bf6b", "type": "github" }, "original": { @@ -656,6 +656,27 @@ "type": "github" } }, + "flake-utils_9": { + "inputs": { + "systems": [ + "stylix", + "systems" + ] + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "fromYaml": { "flake": false, "locked": { @@ -790,11 +811,11 @@ ] }, "locked": { - "lastModified": 1723986931, - "narHash": "sha256-Fy+KEvDQ+Hc8lJAV3t6leXhZJ2ncU5/esxkgt3b8DEY=", + "lastModified": 1724435763, + "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=", "owner": "nix-community", "repo": "home-manager", - "rev": "2598861031b78aadb4da7269df7ca9ddfc3e1671", + "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be", "type": "github" }, "original": { @@ -884,11 +905,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1723969407, - "narHash": "sha256-COChiv/1EsfN0aVQcDBPXqNR/T5sUXtalsuO1RGvwcY=", + "lastModified": 1724442134, + "narHash": "sha256-RpA3GmcBvd6DLssIWfYKdDfiumLv8w4KIhDaI+//6ls=", "ref": "refs/heads/main", - "rev": "1006663b6eaa55149e9a21aa8a34e41c85eb08ca", - "revCount": 5103, + "rev": "688fe5c14781c63a1db23d4d02bf239283068ff6", + "revCount": 5131, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -942,11 +963,11 @@ ] }, "locked": { - "lastModified": 1721324361, - "narHash": "sha256-BiJKO0IIdnSwHQBSrEJlKlFr753urkLE48wtt0UhNG4=", + "lastModified": 1724174162, + "narHash": "sha256-fOOBLwil6M9QWMCiSULwjMQzrXhHXUnEqmjHX5ZHeVI=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "adbefbf49664a6c2c8bf36b6487fd31e3eb68086", + "rev": "16e5c9465f04477d8a3dd48a0a26bf437986336c", "type": "github" }, "original": { @@ -1368,11 +1389,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1723637854, - "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", + "lastModified": 1724224976, + "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", + "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62", "type": "github" }, "original": { @@ -1414,11 +1435,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1723637854, - "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", + "lastModified": 1724224976, + "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", + "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62", "type": "github" }, "original": { @@ -1488,11 +1509,11 @@ }, "nur": { "locked": { - "lastModified": 1723992327, - "narHash": "sha256-w0DhauBqGC7zBlsm0i0IXVvhBGqBvsJPGnc5b9jffvA=", + "lastModified": 1724486206, + "narHash": "sha256-AktI2GKW4DnVwj3WS+mTmYjtL2qug8H46IN0Rtf4O+Q=", "owner": "nix-community", "repo": "nur", - "rev": "adee26fc0c486560152c814b963ae27851eef658", + "rev": "8feee883ff50c836e711bb7e08f91b34f31feb84", "type": "github" }, "original": { @@ -1844,11 +1865,11 @@ }, "stable": { "locked": { - "lastModified": 1723688146, - "narHash": "sha256-sqLwJcHYeWLOeP/XoLwAtYjr01TISlkOfz+NG82pbdg=", + "lastModified": 1724316499, + "narHash": "sha256-Qb9MhKBUTCfWg/wqqaxt89Xfi6qTD3XpTzQ9eXi3JmE=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "c3d4ac725177c030b1e289015989da2ad9d56af0", + "rev": "797f7dc49e0bc7fab4b57c021cdf68f595e47841", "type": "github" }, "original": { @@ -1868,16 +1889,18 @@ "base16-tmux": "base16-tmux", "base16-vim": "base16-vim", "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_9", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", - "nixpkgs": "nixpkgs_22" + "nixpkgs": "nixpkgs_22", + "systems": "systems_11" }, "locked": { - "lastModified": 1723834469, - "narHash": "sha256-PkJTr9DWBQcR5Ru1fJpG80dtw0MLSxAZlKnhHHFAGIA=", + "lastModified": 1724444244, + "narHash": "sha256-fH1lyJvJjUhZ8xMlmiI18EZNzodDSe74rFuwlZDL0aQ=", "owner": "danth", "repo": "stylix", - "rev": "6858d08ed012bc6491cc92c13142104e56badf31", + "rev": "d042af478ce87e188139480922a3085218194106", "type": "github" }, "original": { @@ -1916,6 +1939,21 @@ "type": "github" } }, + "systems_11": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "systems_2": { "locked": { "lastModified": 1681028828, @@ -2075,11 +2113,11 @@ ] }, "locked": { - "lastModified": 1722365976, - "narHash": "sha256-Khdm+mDzYA//XaU0M+hftod+rKr5q9SSHSEuiQ0/9ow=", + "lastModified": 1724073926, + "narHash": "sha256-nWlUL43jOFHf+KW6Hqrx+W/r1XdXuDyb0wC/SrHsOu4=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "7f2a77ddf60390248e2a3de2261d7102a13e5341", + "rev": "a08ecbbf33598924e93542f737fc6169a26b481e", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index c24ba8e..d9b1f91 100644 --- a/flake.nix +++ b/flake.nix @@ -1,86 +1,82 @@ { description = "Dashie dots"; - inputs = - { - nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; - stable.url = "github:NixOs/nixpkgs/nixos-24.05"; + inputs = { + nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; + stable.url = "github:NixOs/nixpkgs/nixos-24.05"; - nix-flatpak = { - url = "github:gmodena/nix-flatpak"; - }; + nix-flatpak = { url = "github:gmodena/nix-flatpak"; }; - home-manager = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - sops-nix.url = "github:Mic92/sops-nix"; - - # Hyprspace = { - # url = "github:KZDKM/Hyprspace"; - # inputs.hyprland.follows = "nixpkgs"; - # }; - - nur.url = "github:nix-community/nur"; - hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; - - ironbar = { - url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; - }; - - stylix.url = "github:danth/stylix"; - base16.url = "github:SenchoPens/base16.nix"; - - anyrun.url = "github:Kirottu/anyrun"; - oxicalc.url = "github:DashieTM/OxiCalc"; - oxishut.url = "github:DashieTM/OxiShut"; - oxinoti.url = "github:DashieTM/OxiNoti"; - oxidash.url = "github:DashieTM/OxiDash"; - oxipaste.url = "github:DashieTM/OxiPaste"; - hyprdock.url = "github:DashieTM/hyprdock"; - reset.url = "github:Xetibo/ReSet"; - reset-plugins.url = "github:Xetibo/ReSet-Plugins"; - - dashvim = { - url = "github:DashieTM/DashVim"; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.base16.follows = "base16"; - }; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; }; + sops-nix.url = "github:Mic92/sops-nix"; + + # Hyprspace = { + # url = "github:KZDKM/Hyprspace"; + # inputs.hyprland.follows = "nixpkgs"; + # }; + + nur.url = "github:nix-community/nur"; + hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; + + ironbar = { + url = + "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; + }; + + stylix.url = "github:danth/stylix"; + base16.url = "github:SenchoPens/base16.nix"; + + anyrun.url = "github:Kirottu/anyrun"; + oxicalc.url = "github:DashieTM/OxiCalc"; + oxishut.url = "github:DashieTM/OxiShut"; + oxinoti.url = "github:DashieTM/OxiNoti"; + oxidash.url = "github:DashieTM/OxiDash"; + oxipaste.url = "github:DashieTM/OxiPaste"; + hyprdock.url = "github:DashieTM/hyprdock"; + reset.url = "github:Xetibo/ReSet"; + reset-plugins.url = "github:Xetibo/ReSet-Plugins"; + + dashvim = { + url = "github:DashieTM/DashVim"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.base16.follows = "base16"; + }; + }; + outputs = { ... }@inputs: let stable = import inputs.stable { system = "x86_64-linux"; - config = { - allowUnfree = true; - }; + config = { allowUnfree = true; }; }; pkgs = import inputs.nixpkgs { system = "x86_64-linux"; - overlays = [ - inputs.nur.overlay - ]; + overlays = [ inputs.nur.overlay ]; config = { + permittedInsecurePackages = [ "olm-3.2.16" ]; allowUnfree = true; }; }; dashielib = import ./lib { inherit inputs pkgs; }; - in - { - nixosConfigurations = (dashielib.build_systems [ "marmo" "overheating" "spaceship" ]) // { - server = inputs.stable.lib.nixosSystem { - specialArgs = { - inherit inputs; pkgs = stable; + in { + nixosConfigurations = + (dashielib.build_systems [ "marmo" "overheating" "spaceship" ]) // { + server = inputs.stable.lib.nixosSystem { + specialArgs = { + inherit inputs; + pkgs = stable; + }; + modules = [ + inputs.sops-nix.nixosModules.sops + inputs.dashvim.nixosModules.dashvim + ./hardware/server/configuration.nix + ]; }; - modules = [ - inputs.sops-nix.nixosModules.sops - inputs.dashvim.nixosModules.dashvim - ./hardware/server/configuration.nix - ]; }; - }; }; nixConfig = { diff --git a/hardware/marmo/configuration.nix b/hardware/marmo/configuration.nix index db3d6d3..cec9127 100644 --- a/hardware/marmo/configuration.nix +++ b/hardware/marmo/configuration.nix @@ -1,7 +1,5 @@ { config, ... }: { - imports = [ - ../../modules - ]; + imports = [ ../../modules ]; # variables for system conf = { monitor = "DP-1"; @@ -22,17 +20,13 @@ amdgpu.enable = true; kde_connect.enable = true; xone.enable = true; - greetd = { - resolution = "3440x1440@180"; - }; + greetd = { resolution = "3440x1440@180"; }; nextcloud = { - synclist = [ - { - name = "pw_sync"; - remote = "/PWs"; - local = "/home/${config.conf.username}/Music"; - } - ]; + synclist = [{ + name = "pw_sync"; + remote = "/PWs"; + local = "/home/${config.conf.username}/Music"; + }]; }; }; } diff --git a/hardware/overheating/configuration.nix b/hardware/overheating/configuration.nix index aa31b54..5ced1e6 100644 --- a/hardware/overheating/configuration.nix +++ b/hardware/overheating/configuration.nix @@ -1,15 +1,14 @@ { config, ... }: { - imports = [ - ../../modules - ]; + imports = [ ../../modules ]; conf = { monitor = "eDP-1"; scale = "2.0"; hostname = "overheating"; boot_params = [ "rtc_cmos.use_acpi_alarm=1" ]; - ironbar.modules = [ - { type = "upower"; class = "memory-usage"; } - ]; + ironbar.modules = [{ + type = "upower"; + class = "memory-usage"; + }]; }; mods = { stylix.colorscheme = "catppuccin-mocha"; @@ -27,9 +26,7 @@ kde_connect.enable = true; bluetooth.enable = true; acpid.enable = true; - greetd = { - resolution = "3440x1440@180"; - }; + greetd = { resolution = "3440x1440@180"; }; nextcloud = { synclist = [ { diff --git a/hardware/overheating/dsdt.nix b/hardware/overheating/dsdt.nix index 285cb33..8395d7c 100644 --- a/hardware/overheating/dsdt.nix +++ b/hardware/overheating/dsdt.nix @@ -12,9 +12,8 @@ let echo kernel/firmware/acpi/ssdt6.aml | bsdcpio -v -o -H newc -R 0:0 > $out/lenotrolli-ssdt.img ''; }; -in -{ +in { boot.kernelParams = [ "mem_sleep_default=deep" ]; boot.initrd.prepend = [ "${patched_ssdt}/lenotrolli-ssdt.img" ]; } diff --git a/hardware/overheating/firmware.nix b/hardware/overheating/firmware.nix index d46f8b4..8d9beed 100644 --- a/hardware/overheating/firmware.nix +++ b/hardware/overheating/firmware.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{ pkgs, ... }: { hardware.firmware = [ ( # lenovo is such a good manufacturer!!1!11! @@ -12,7 +11,6 @@ cp ${./firmware/TAS2XXX38BB.bin} $out/lib/firmware/TAS2XXX38BB.bin cp ${./firmware/TIAS2781RCA4.bin} $out/lib/firmware/TIAS2781RCA4.bin ''; - } - ) + }) ]; } diff --git a/hardware/overheating/overheating.nix b/hardware/overheating/overheating.nix index 55682d6..2cc5014 100644 --- a/hardware/overheating/overheating.nix +++ b/hardware/overheating/overheating.nix @@ -1,9 +1,5 @@ { # special hardware modules # mostly to fix firmare and dsts - imports = - [ - ./dsdt.nix - ./firmware.nix - ]; + imports = [ ./dsdt.nix ./firmware.nix ]; } diff --git a/hardware/server/configuration.nix b/hardware/server/configuration.nix index d57d564..26e0a84 100644 --- a/hardware/server/configuration.nix +++ b/hardware/server/configuration.nix @@ -16,8 +16,7 @@ let add_header Access-Control-Allow-Origin *; return 200 '${builtins.toJSON data}'; ''; -in -{ +in { networking.hostName = "server"; networking.domain = "dashie.org"; imports = [ @@ -45,9 +44,7 @@ in pkgs.ntfs3g pkgs.rsync ]; - openssh.authorizedKeys.keyFiles = [ - /home/dashie/server.pub - ]; + openssh.authorizedKeys.keyFiles = [ /home/dashie/server.pub ]; }; services.openssh = { @@ -68,28 +65,25 @@ in enable_registration_without_verification = true; suppress_key_server_warning = true; max_upload_size = "1G"; - listeners = [ - { - port = 8008; - bind_addresses = [ "::1" ]; - type = "http"; - tls = false; - x_forwarded = true; - resources = [ - { - names = [ "client" "federation" ]; - compress = true; - } - ]; - } - ]; + listeners = [{ + port = 8008; + bind_addresses = [ "::1" ]; + type = "http"; + tls = false; + x_forwarded = true; + resources = [{ + names = [ "client" "federation" ]; + compress = true; + }]; + }]; }; services.mautrix-whatsapp-dashie.settings = { appservice = { id = "whatsapp"; database = { type = "postgres"; - uri = "postgresql:///mautrix_whatsapp?host=/run/postgresql&sslmode=disable&user=mautrix_whatsapp&password=${mautrix_whatsapp_pw}"; + uri = + "postgresql:///mautrix_whatsapp?host=/run/postgresql&sslmode=disable&user=mautrix_whatsapp&password=${mautrix_whatsapp_pw}"; }; }; bridge = { @@ -98,7 +92,8 @@ in default = true; required = true; }; - displayname_template = "{{if .BusinessName}}{{.BusinessName}}{{else if .PushName}}{{.PushName}}{{else}}{{.JID}}{{end}}"; + displayname_template = + "{{if .BusinessName}}{{.BusinessName}}{{else if .PushName}}{{.PushName}}{{else}}{{.JID}}{{end}}"; permissions = { "@fabio.lenherr:matrix.org" = "admin"; "@dashie:matrix.dashie.org" = "admin"; @@ -110,7 +105,8 @@ in id = "signal"; database = { type = "postgres"; - uri = "postgresql:///mautrix_signal?host=/run/postgresql&sslmode=disable&user=mautrix_signal&password=${mautrix_signal_pw}"; + uri = + "postgresql:///mautrix_signal?host=/run/postgresql&sslmode=disable&user=mautrix_signal&password=${mautrix_signal_pw}"; }; }; bridge = { @@ -119,7 +115,8 @@ in default = true; required = true; }; - displayname_template = "{{or .ProfileName .PhoneNumber \"Unknown user\"}}"; + displayname_template = + ''{{or .ProfileName .PhoneNumber "Unknown user"}}''; permissions = { "@fabio.lenherr:matrix.org" = "admin"; "@dashie:matrix.dashie.org" = "admin"; @@ -131,11 +128,13 @@ in id = "discord"; database = { type = "postgres"; - uri = "postgresql:///mautrix_discord?host=/run/postgresql&sslmode=disable&user=mautrix_discord&password=${mautrix_discord_pw}"; + uri = + "postgresql:///mautrix_discord?host=/run/postgresql&sslmode=disable&user=mautrix_discord&password=${mautrix_discord_pw}"; }; }; bridge = { - displayname_template = "{{or .GlobalName .Username}}{{if .Bot}} (bot){{end}}"; + displayname_template = + "{{or .GlobalName .Username}}{{if .Bot}} (bot){{end}}"; permissions = { "@fabio.lenherr:matrix.org" = "admin"; "@dashie:matrix.dashie.org" = "admin"; @@ -154,7 +153,12 @@ in enableACME = true; root = "/var/www/dashie.org/"; }; - security.acme.certs."dashie.org".extraDomainNames = [ "cloud.dashie.org" "matrix.dashie.org" "git.dashie.org" "navi.dashie.org" ]; + security.acme.certs."dashie.org".extraDomainNames = [ + "cloud.dashie.org" + "matrix.dashie.org" + "git.dashie.org" + "navi.dashie.org" + ]; services.nginx.virtualHosts."cloud.dashie.org" = { addSSL = true; enableACME = true; @@ -172,12 +176,10 @@ in }; services.nginx.virtualHosts."localhost" = { - listen = [ - { - addr = "0.0.0.0"; - port = 8448; - } - ]; + listen = [{ + addr = "0.0.0.0"; + port = 8448; + }]; locations."/".proxyPass = "http://[::1]:8008"; }; @@ -185,21 +187,19 @@ in forceSSL = true; enableACME = true; locations."/".extraConfig = '' - return 404; + return 404; ''; - locations."/_matrix" = { - proxyPass = "http://[::1]:8008"; - }; + locations."/_matrix" = { proxyPass = "http://[::1]:8008"; }; locations."/_synapse/client".proxyPass = "http://[::1]:8008"; - locations."= /.well-known/matrix/server".extraConfig = mkWellKnown serverConfig; + locations."= /.well-known/matrix/server".extraConfig = + mkWellKnown serverConfig; # This is usually needed for homeserver discovery (from e.g. other Matrix clients). # Further reference can be found in the upstream docs at # https://spec.matrix.org/latest/client-server-api/#getwell-knownmatrixclient - locations."= /.well-known/matrix/client".extraConfig = mkWellKnown clientConfig; - extraConfig = - "client_max_body_size 2G;" - ; + locations."= /.well-known/matrix/client".extraConfig = + mkWellKnown clientConfig; + extraConfig = "client_max_body_size 2G;"; }; services.nextcloud.enable = true; @@ -325,9 +325,7 @@ in system.stateVersion = "24.05"; nix = { - settings = { - experimental-features = "nix-command flakes"; - }; + settings = { experimental-features = "nix-command flakes"; }; extraOptions = '' !include ${config.sops.secrets.access.path} ''; diff --git a/hardware/server/hardware-configuration.nix b/hardware/server/hardware-configuration.nix index abbea50..660cf69 100644 --- a/hardware/server/hardware-configuration.nix +++ b/hardware/server/hardware-configuration.nix @@ -1,51 +1,44 @@ { config, lib, modulesPath, ... }: { - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.availableKernelModules = + [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ ]; boot.extraModulePackages = [ ]; - fileSystems."/" = - { - device = "/dev/disk/by-uuid/678ecbd1-a5ce-4530-a959-ffb48f76aa43"; - fsType = "btrfs"; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/678ecbd1-a5ce-4530-a959-ffb48f76aa43"; + fsType = "btrfs"; + }; - fileSystems."/var/lib/nextcloud" = - { - device = "/dev/disk/by-label/nextcloud"; - fsType = "ext4"; - }; + fileSystems."/var/lib/nextcloud" = { + device = "/dev/disk/by-label/nextcloud"; + fsType = "ext4"; + }; - fileSystems."/mnt/dump3" = - { - device = "/dev/disk/by-label/backup"; - fsType = "ext4"; - }; + fileSystems."/mnt/dump3" = { + device = "/dev/disk/by-label/backup"; + fsType = "ext4"; + }; - fileSystems."/mnt/dump1" = - { - device = "/dev/disk/by-uuid/CC60532860531912"; - fsType = "ntfs-3g"; - options = [ "rw" "uid=1000" ]; - }; + fileSystems."/mnt/dump1" = { + device = "/dev/disk/by-uuid/CC60532860531912"; + fsType = "ntfs-3g"; + options = [ "rw" "uid=1000" ]; + }; - fileSystems."/mnt/dump2" = - { - device = "/dev/disk/by-uuid/F46896AE68966EDC"; - fsType = "ntfs-3g"; - options = [ "rw" "uid=1000" ]; - }; + fileSystems."/mnt/dump2" = { + device = "/dev/disk/by-uuid/F46896AE68966EDC"; + fsType = "ntfs-3g"; + options = [ "rw" "uid=1000" ]; + }; - fileSystems."/boot" = - { - device = "/dev/disk/by-uuid/B7BE-AB1C"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/B7BE-AB1C"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; swapDevices = [{ device = "/dev/disk/by-uuid/832dce11-b4c4-476c-ab28-bd98275a542c"; }]; @@ -58,5 +51,6 @@ # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.intel.updateMicrocode = + lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/hardware/server/mautrix-discord.nix b/hardware/server/mautrix-discord.nix index f7c4251..90bbe0b 100644 --- a/hardware/server/mautrix-discord.nix +++ b/hardware/server/mautrix-discord.nix @@ -1,15 +1,13 @@ # derived from mautrix signal on nixpkgs -> https://github.com/NixOS/nixpkgs/blob/nixos-24.05/pkgs/servers/mautrix-signal/default.nix#L27 -{ lib -, config -, pkgs -, ... -}: +{ lib, config, pkgs, ... }: let cfg = config.services.mautrix-discord-dashie; dataDir = "/var/lib/mautrix-discord"; registrationFile = "${dataDir}/discord-registration.yaml"; settingsFile = "${dataDir}/config.yaml"; - settingsFileUnsubstituted = settingsFormat.generate "mautrix-discord-config-unsubstituted.json" cfg.settings; + settingsFileUnsubstituted = + settingsFormat.generate "mautrix-discord-config-unsubstituted.json" + cfg.settings; settingsFormat = pkgs.formats.json { }; appservicePort = 29334; @@ -33,7 +31,8 @@ let }; bridge = { username_template = "discord_{{.}}"; - displayname_template = "{{or .ProfileName .PhoneNumber \"Unknown user\"}}"; + displayname_template = + ''{{or .ProfileName .PhoneNumber "Unknown user"}}''; double_puppet_server_map = { }; login_shared_secret_map = { }; command_prefix = "!discord"; @@ -50,10 +49,10 @@ let }; }; -in -{ +in { options.services.mautrix-discord-dashie = { - enable = lib.mkEnableOption "mautrix-discord, a Matrix-Discord puppeting bridge."; + enable = + lib.mkEnableOption "mautrix-discord, a Matrix-Discord puppeting bridge."; settings = lib.mkOption { apply = lib.recursiveUpdate defaultConfig; @@ -76,9 +75,7 @@ in ephemeral_events = false; }; bridge = { - history_sync = { - request_full_sync = true; - }; + history_sync = { request_full_sync = true; }; private_chat_portal_meta = true; mute_bridging = true; encryption = { @@ -86,12 +83,8 @@ in default = true; require = true; }; - provisioning = { - shared_secret = "disable"; - }; - permissions = { - "example.com" = "user"; - }; + provisioning = { shared_secret = "disable"; }; + permissions = { "example.com" = "user"; }; }; }; }; @@ -112,8 +105,10 @@ in serviceDependencies = lib.mkOption { type = with lib.types; listOf str; - default = (lib.optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit) - ++ (lib.optional config.services.matrix-conduit.enable "conduit.service"); + default = (lib.optional config.services.matrix-synapse.enable + config.services.matrix-synapse.serviceUnit) + ++ (lib.optional config.services.matrix-conduit.enable + "conduit.service"); defaultText = lib.literalExpression '' (optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit) ++ (optional config.services.matrix-conduit.enable "conduit.service") @@ -155,15 +150,16 @@ in }; # Note: this is defined here to avoid the docs depending on `config` - services.mautrix-discord-dashie.settings.homeserver = optOneOf (with config.services; [ - (lib.mkIf matrix-synapse.enable (mkDefaults { - domain = matrix-synapse.settings.server_name; - })) - (lib.mkIf matrix-conduit.enable (mkDefaults { - domain = matrix-conduit.settings.global.server_name; - address = "http://localhost:${toString matrix-conduit.settings.global.port}"; - })) - ]); + services.mautrix-discord-dashie.settings.homeserver = optOneOf + (with config.services; [ + (lib.mkIf matrix-synapse.enable + (mkDefaults { domain = matrix-synapse.settings.server_name; })) + (lib.mkIf matrix-conduit.enable (mkDefaults { + domain = matrix-conduit.settings.global.server_name; + address = + "http://localhost:${toString matrix-conduit.settings.global.port}"; + })) + ]); systemd.services.mautrix-discord-dashie = { description = "mautrix-discord, a Matrix-Discord puppeting bridge."; @@ -241,7 +237,7 @@ in SystemCallErrorNumber = "EPERM"; SystemCallFilter = [ "@system-service" ]; Type = "simple"; - UMask = 0027; + UMask = 27; }; restartTriggers = [ settingsFileUnsubstituted ]; }; diff --git a/hardware/server/mautrix-whatsapp.nix b/hardware/server/mautrix-whatsapp.nix index 36bae01..82696f6 100644 --- a/hardware/server/mautrix-whatsapp.nix +++ b/hardware/server/mautrix-whatsapp.nix @@ -1,15 +1,13 @@ # derived from mautrix signal on nixpkgs -> https://github.com/NixOS/nixpkgs/blob/nixos-24.05/pkgs/servers/mautrix-signal/default.nix#L27 -{ lib -, config -, pkgs -, ... -}: +{ lib, config, pkgs, ... }: let cfg = config.services.mautrix-whatsapp-dashie; dataDir = "/var/lib/mautrix-whatsapp"; registrationFile = "${dataDir}/whatsapp-registration.yaml"; settingsFile = "${dataDir}/config.yaml"; - settingsFileUnsubstituted = settingsFormat.generate "mautrix-whatsapp-config-unsubstituted.json" cfg.settings; + settingsFileUnsubstituted = + settingsFormat.generate "mautrix-whatsapp-config-unsubstituted.json" + cfg.settings; settingsFormat = pkgs.formats.json { }; appservicePort = 29318; @@ -33,7 +31,8 @@ let }; bridge = { username_template = "whatsapp_{{.}}"; - displayname_template = "{{or .ProfileName .PhoneNumber \"Unknown user\"}}"; + displayname_template = + ''{{or .ProfileName .PhoneNumber "Unknown user"}}''; double_puppet_server_map = { }; login_shared_secret_map = { }; command_prefix = "!whatsapp"; @@ -50,10 +49,10 @@ let }; }; -in -{ +in { options.services.mautrix-whatsapp-dashie = { - enable = lib.mkEnableOption "mautrix-whatsapp, a Matrix-Whatsapp puppeting bridge."; + enable = lib.mkEnableOption + "mautrix-whatsapp, a Matrix-Whatsapp puppeting bridge."; settings = lib.mkOption { apply = lib.recursiveUpdate defaultConfig; @@ -76,9 +75,7 @@ in ephemeral_events = false; }; bridge = { - history_sync = { - request_full_sync = true; - }; + history_sync = { request_full_sync = true; }; private_chat_portal_meta = true; mute_bridging = true; encryption = { @@ -86,12 +83,8 @@ in default = true; require = true; }; - provisioning = { - shared_secret = "disable"; - }; - permissions = { - "example.com" = "user"; - }; + provisioning = { shared_secret = "disable"; }; + permissions = { "example.com" = "user"; }; }; }; }; @@ -112,8 +105,10 @@ in serviceDependencies = lib.mkOption { type = with lib.types; listOf str; - default = (lib.optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit) - ++ (lib.optional config.services.matrix-conduit.enable "conduit.service"); + default = (lib.optional config.services.matrix-synapse.enable + config.services.matrix-synapse.serviceUnit) + ++ (lib.optional config.services.matrix-conduit.enable + "conduit.service"); defaultText = lib.literalExpression '' (optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit) ++ (optional config.services.matrix-conduit.enable "conduit.service") @@ -155,15 +150,16 @@ in }; # Note: this is defined here to avoid the docs depending on `config` - services.mautrix-whatsapp-dashie.settings.homeserver = optOneOf (with config.services; [ - (lib.mkIf matrix-synapse.enable (mkDefaults { - domain = matrix-synapse.settings.server_name; - })) - (lib.mkIf matrix-conduit.enable (mkDefaults { - domain = matrix-conduit.settings.global.server_name; - address = "http://localhost:${toString matrix-conduit.settings.global.port}"; - })) - ]); + services.mautrix-whatsapp-dashie.settings.homeserver = optOneOf + (with config.services; [ + (lib.mkIf matrix-synapse.enable + (mkDefaults { domain = matrix-synapse.settings.server_name; })) + (lib.mkIf matrix-conduit.enable (mkDefaults { + domain = matrix-conduit.settings.global.server_name; + address = + "http://localhost:${toString matrix-conduit.settings.global.port}"; + })) + ]); systemd.services.mautrix-whatsapp-dashie = { description = "mautrix-whatsapp, a Matrix-Whatsapp puppeting bridge."; @@ -241,7 +237,7 @@ in SystemCallErrorNumber = "EPERM"; SystemCallFilter = [ "@system-service" ]; Type = "simple"; - UMask = 0027; + UMask = 27; }; restartTriggers = [ settingsFileUnsubstituted ]; }; diff --git a/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix index 3b32325..cf6c08c 100644 --- a/hardware/spaceship/configuration.nix +++ b/hardware/spaceship/configuration.nix @@ -1,11 +1,7 @@ { config, ... }: -let - username = config.conf.username; -in -{ - imports = [ - ../../modules - ]; +let username = config.conf.username; +in { + imports = [ ../../modules ]; # config variables conf = { @@ -14,10 +10,10 @@ in hostname = "spaceship"; }; mods = { + # f to pay respect + teams.enable = true; coding = { jetbrains = true; }; - gaming = { - enable = true; - }; + gaming = { enable = true; }; stylix.colorscheme = "catppuccin-mocha"; hyprland = { monitor = [ @@ -63,21 +59,14 @@ in ''; extra_autostart = [ "flatpak run com.core447.StreamController -b" ]; }; - extraDrives = [ - { - name = "drive2"; - drive = - { - device = "/dev/disk/by-label/DRIVE2"; - fsType = "ext4"; - options = [ - "noatime" - "nodiratime" - "discard" - ]; - }; - } - ]; + extraDrives = [{ + name = "drive2"; + drive = { + device = "/dev/disk/by-label/DRIVE2"; + fsType = "ext4"; + options = [ "noatime" "nodiratime" "discard" ]; + }; + }]; virtualbox.enable = true; kde_connect.enable = true; xone.enable = true; @@ -88,9 +77,7 @@ in enable = true; rocm.enable = true; }; - greetd = { - resolution = "3440x1440@180"; - }; + greetd = { resolution = "3440x1440@180"; }; nextcloud = { synclist = [ { diff --git a/hm/default.nix b/hm/default.nix deleted file mode 100644 index 614704c..0000000 --- a/hm/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -self: { lib - , config - , pkgs - , options - , ... - }: -let - cfg = config.programs.dashvim; - system = pkgs.stdenv.hostPlatform.system; - # dashvim = (import ../lib { inherit system pkgs; inputs = self.inputs; config' = cfg; }); -in -{ - imports = [ ../modules ]; - meta.maintainers = with lib.maintainers; [ DashieTM ]; - options.programs.dashnix = with lib; { - enable = mkEnableOption "dashvim"; - - package = mkOption { - type = with types; nullOr package; - default = dashvim.build_dashvim; - defaultText = literalExpression '' - ReSet.packages.''${pkgs.stdenv.hostPlatform.system}.default - ''; - description = mdDoc '' - Package to run - ''; - }; - }; - config = lib.mkIf cfg.enable - (lib.optionalAttrs (options?home.packages) - { - home.packages = lib.optional (cfg.package != null) cfg.package; - } // - lib.optionalAttrs (options?environment.systemPackages) { - environment.systemPackages = lib.optional (cfg.package != null) cfg.package; - }); -} diff --git a/lib/default.nix b/lib/default.nix index 5910d4c..9472ccd 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,24 +1,20 @@ { inputs, pkgs, ... }: { - build_systems = systems: builtins.listToAttrs (map - (name: { + build_systems = systems: + builtins.listToAttrs (map (name: { name = name; - value = - let - mod = ../hardware/${name}/configuration.nix; - in - inputs.nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs pkgs mod; - }; - modules = [ - inputs.home-manager.nixosModules.home-manager - inputs.stylix.nixosModules.stylix - ../base - ../programs - mod - ] ++ inputs.nixpkgs.lib.optional (builtins.pathExists ../hardware/${name}/${name}.nix) ../hardware/${name}/${name}.nix + value = let mod = ../hardware/${name}/configuration.nix; + in inputs.nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs pkgs mod; }; + modules = [ + inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + ../base + ../programs + mod + ] ++ inputs.nixpkgs.lib.optional + (builtins.pathExists ../hardware/${name}/${name}.nix) + ../hardware/${name}/${name}.nix ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; - }; - }) - systems); + }; + }) systems); } diff --git a/modules/conf.nix b/modules/conf.nix index 98352d4..4f6e334 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -4,7 +4,8 @@ system = lib.mkOption { default = "x86_64-linux"; # no fisherprice unix support - type = with lib.types; (enum [ "x86_64-linux" "aarch64-linux" "aarch64-linux-android" ]); + type = with lib.types; + (enum [ "x86_64-linux" "aarch64-linux" "aarch64-linux-android" ]); example = "aarch64-linux"; description = '' System architecture. @@ -42,9 +43,10 @@ ironbar = { modules = lib.mkOption { default = [ ]; - example = [ - { type = "upower"; class = "memory-usage"; } - ]; + example = [{ + type = "upower"; + class = "memory-usage"; + }]; type = with lib.types; listOf attrs; description = '' Adds modules to ironbar. @@ -138,10 +140,10 @@ }; config = { - conf.kernel = lib.mkIf (config.mods.gaming.enable && config.mods.gaming.kernel) pkgs.linuxPackages_xanmod_latest; - } // (lib.optionalAttrs (options?system.stateVersion) - { - system.stateVersion = "unstable"; - } - ); + conf.kernel = + lib.mkIf (config.mods.gaming.enable && config.mods.gaming.kernel) + pkgs.linuxPackages_xanmod_latest; + } // (lib.optionalAttrs (options ? system.stateVersion) { + system.stateVersion = "unstable"; + }); } diff --git a/modules/default.nix b/modules/default.nix index 683596a..158764f 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,6 +1 @@ -{ - imports = [ - ./programs - ./conf.nix - ]; -} +{ imports = [ ./programs ./conf.nix ]; } diff --git a/modules/programs/acpid.nix b/modules/programs/acpid.nix index 71999ea..f245095 100644 --- a/modules/programs/acpid.nix +++ b/modules/programs/acpid.nix @@ -11,8 +11,9 @@ }; }; - config = lib.mkIf config.mods.acpid.enable (lib.optionalAttrs (options?virtualisation.virtualbox.host) { - services.acpid.enable = true; - }); + config = lib.mkIf config.mods.acpid.enable + (lib.optionalAttrs (options ? virtualisation.virtualbox.host) { + services.acpid.enable = true; + }); } diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index ffc3021..5041c1a 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -21,91 +21,79 @@ }; }; + config = (lib.optionalAttrs (options ? environment.systemPackages) { + environment.systemPackages = + config.mods.default_base_packages.additional_packages; + } // (lib.mkIf config.mods.default_base_packages.enable + (lib.optionalAttrs (options ? environment.systemPackages) { + environment.systemPackages = with pkgs; [ + openssl + dbus + glib + gtk4 + gtk3 + libadwaita + gtk-layer-shell + gtk4-layer-shell + direnv + dconf + gsettings-desktop-schemas + gnome.nixos-gsettings-overrides + bibata-cursors + xorg.xkbutils + libxkbcommon + icon-library + adwaita-icon-theme + hicolor-icon-theme + morewaita-icon-theme + kdePackages.breeze-icons + seahorse + upower + thunderbird + podman-tui + podman-compose + dive + ]; - config = - (lib.optionalAttrs (options?environment.systemPackages) - { - environment.systemPackages = config.mods.default_base_packages.additional_packages; - } // (lib.mkIf config.mods.default_base_packages.enable - ( - lib.optionalAttrs - (options?environment.systemPackages) - { - environment.systemPackages = with pkgs; [ - openssl - dbus - glib - gtk4 - gtk3 - libadwaita - gtk-layer-shell - gtk4-layer-shell - direnv - dconf - gsettings-desktop-schemas - gnome.nixos-gsettings-overrides - bibata-cursors - xorg.xkbutils - libxkbcommon - icon-library - adwaita-icon-theme - hicolor-icon-theme - morewaita-icon-theme - kdePackages.breeze-icons - seahorse - upower - thunderbird - podman-tui - podman-compose - dive - ]; + gtk.iconCache.enable = false; - gtk.iconCache.enable = false; + fonts.packages = with pkgs; [ cantarell-fonts ]; - fonts.packages = with pkgs; [ - cantarell-fonts - ]; + virtualisation = { + containers.enable = true; + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; + }; - virtualisation = { - containers.enable = true; - podman = { - enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; - }; - }; + services.upower.enable = true; + services.dbus.enable = true; + services.dbus.packages = with pkgs; [ gnome2.GConf ]; + services.avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; - services.upower.enable = true; - services.dbus.enable = true; - services.dbus.packages = with pkgs; [ - gnome2.GConf - ]; - services.avahi = { - enable = true; - nssmdns4 = true; - openFirewall = true; - }; - - programs.fish.enable = true; - programs.fish.promptInit = '' - ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source - ''; - programs.nix-ld.enable = true; - programs.nix-ld.libraries = with pkgs; [ - jdk - zlib - ]; - programs.direnv = { - package = pkgs.direnv; - silent = false; - loadInNixShell = true; - direnvrcExtra = ""; - nix-direnv = { - enable = true; - package = pkgs.nix-direnv; - }; - }; - programs.ssh.startAgent = true; - programs.gnupg.agent.enable = true; - }))); + programs.fish.enable = true; + programs.fish.promptInit = '' + ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source + ''; + programs.nix-ld.enable = true; + programs.nix-ld.libraries = with pkgs; [ jdk zlib ]; + programs.direnv = { + package = pkgs.direnv; + silent = false; + loadInNixShell = true; + direnvrcExtra = ""; + nix-direnv = { + enable = true; + package = pkgs.nix-direnv; + }; + }; + programs.ssh.startAgent = true; + programs.gnupg.agent.enable = true; + }))); } diff --git a/modules/programs/bluetooth.nix b/modules/programs/bluetooth.nix index 5091835..f18c9e9 100644 --- a/modules/programs/bluetooth.nix +++ b/modules/programs/bluetooth.nix @@ -10,11 +10,12 @@ }; }; - config = lib.mkIf config.mods.bluetooth.enable (lib.optionalAttrs (options?hardware.bluetooth) { - hardware.bluetooth = { - enable = true; - powerOnBoot = true; - }; - }); + config = lib.mkIf config.mods.bluetooth.enable + (lib.optionalAttrs (options ? hardware.bluetooth) { + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + }; + }); } diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index d4ff2b1..9621220 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -28,116 +28,118 @@ }; }; - config = lib.mkIf config.mods.coding.enable (lib.optionalAttrs (options?home.packages) { - programs.dashvim = lib.mkIf config.mods.coding.dashvim { - enable = true; - colorscheme = config.mods.stylix.colorscheme; - }; - home.packages = with pkgs; [ - (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) - #basics - gitui - gcc - meson - ninja - tree-sitter - unzip - pkg-config - sqlite - plantuml - d-spy + config = lib.mkIf config.mods.coding.enable + (lib.optionalAttrs (options ? home.packages) { + programs.dashvim = lib.mkIf config.mods.coding.dashvim { + enable = true; + colorscheme = config.mods.stylix.colorscheme; + }; + home.packages = with pkgs; [ + (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) + #basics + gitui + gcc + meson + ninja + tree-sitter + unzip + pkg-config + sqlite + plantuml + d-spy - # cpp - bear - clang-tools + # cpp + bear + clang-tools - #sql - nodePackages.sql-formatter - sqls + #sql + nodePackages.sql-formatter + sqls - #assembly - asm-lsp + #assembly + asm-lsp - #yaml - yamlfmt - yamllint - yaml-language-server + #yaml + yamlfmt + yamllint + yaml-language-server - #markdown - marksman - mdformat + #markdown + marksman + mdformat - #bash - bash-language-server - shfmt + #bash + bash-language-server + shfmt - #fsharp - fsharp - fsautocomplete + #fsharp + fsharp + fsautocomplete - #haskell - haskellPackages.cabal-install - ghc - haskellPackages.haskell-language-server + #haskell + haskellPackages.cabal-install + ghc + haskellPackages.haskell-language-server - #html - html-tidy + #html + # html-tidy - #json - jq - nodePackages.vscode-json-languageserver + #json + jq - #css - tailwindcss - tailwindcss-language-server - vscode-langservers-extracted + #css + tailwindcss + tailwindcss-language-server - #editors - neovide - ##fallback - vscodium + #editors + neovide + ##fallback + vscodium - #rust - rustup + #rust + rustup - #python - python3 - python312Packages.python-lsp-server - python312Packages.python-lsp-ruff - python312Packages.python-lsp-black + #python + python3 + python312Packages.python-lsp-server + python312Packages.python-lsp-ruff + python312Packages.python-lsp-black - #ts/js - nodejs_20 - deno - typescript - nodePackages.typescript-language-server - nodePackages.prettier + #ts/js + nodejs_20 + deno + typescript + nodePackages.typescript-language-server + nodePackages.prettier - #go - go - gopls + #go + go + gopls - #typst - typst - tinymist - ltex-ls + #typst + typst + tinymist + ltex-ls - #java - gradle - maven - jdt-language-server - temurin-jre-bin + #java + gradle + maven + jdt-language-server + temurin-jre-bin - #.! - dotnet-sdk_8 - omnisharp-roslyn - csharpier - netcoredbg + #.! + dotnet-sdk_8 + omnisharp-roslyn + csharpier + netcoredbg - #zig - zig - zls - ]; + #zig + zig + zls - }); + tmux + tmate + ]; + + }); } diff --git a/modules/programs/default.nix b/modules/programs/default.nix index dd09437..a3bc58c 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -1,29 +1,32 @@ { imports = [ - ./virtualbox.nix - ./kde_connect.nix - ./gpu.nix - ./xone.nix - ./drives.nix - ./bluetooth.nix ./acpid.nix - ./piper.nix - ./greetd.nix - ./gnome_services.nix - ./printing.nix - ./layout.nix ./base_packages.nix - ./home_packages.nix - ./media.nix + ./bluetooth.nix ./coding.nix - ./flatpak.nix - ./nextcloud.nix - ./starship.nix - ./git.nix - ./keepassxc.nix - ./gaming.nix - ./stylix.nix + ./drives.nix ./firefox.nix + ./flatpak.nix + ./gaming.nix + ./git.nix + ./gnome_services.nix + ./gpu.nix + ./greetd.nix + ./home_packages.nix ./hyprland + ./kde_connect.nix + ./keepassxc.nix + ./layout.nix + ./media.nix + ./nextcloud.nix + ./piper.nix + ./printing.nix + ./sops.nix + ./starship.nix + ./stylix.nix + ./teams.nix + ./virtualbox.nix + ./yazi + ./xone.nix ]; } diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix index ccfc591..32f30c8 100644 --- a/modules/programs/drives.nix +++ b/modules/programs/drives.nix @@ -19,51 +19,36 @@ let example = { device = "/dev/disk/by-label/DRIVE2"; fsType = "ext4"; - options = [ - "noatime" - "nodiratime" - "discard" - ]; + options = [ "noatime" "nodiratime" "discard" ]; }; }; }; }; -in -{ +in { options.mods = { - extraDrives = - lib.mkOption { - default = [ ]; - example = [ - { - name = "drive2"; - drive = { - device = "/dev/disk/by-label/DRIVE2"; - fsType = "ext4"; - options = [ - "noatime" - "nodiratime" - "discard" - ]; - }; - } - ]; - # TODO: how to make this work - # type = with lib.types; listOf (attrsOf driveModule); - type = with lib.types; listOf (attrsOf anything); - description = '' - Extra drives to add. - ''; - }; + extraDrives = lib.mkOption { + default = [ ]; + example = [{ + name = "drive2"; + drive = { + device = "/dev/disk/by-label/DRIVE2"; + fsType = "ext4"; + options = [ "noatime" "nodiratime" "discard" ]; + }; + }]; + # TODO: how to make this work + # type = with lib.types; listOf (attrsOf driveModule); + type = with lib.types; listOf (attrsOf anything); + description = '' + Extra drives to add. + ''; + }; }; - config = (lib.optionalAttrs (options?fileSystems) { - fileSystems = builtins.listToAttrs - (map - ({ name, drive }: { - name = "/" + name; - value = drive; - }) - config.mods.extraDrives); + config = (lib.optionalAttrs (options ? fileSystems) { + fileSystems = builtins.listToAttrs (map ({ name, drive }: { + name = "/" + name; + value = drive; + }) config.mods.extraDrives); }); } diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix index 55ea9ba..f408b3d 100644 --- a/modules/programs/firefox.nix +++ b/modules/programs/firefox.nix @@ -42,7 +42,7 @@ description = "Firefox policy configuration"; }; extensions = lib.mkOption { - default = with pkgs.nur.repos.rycee.firefox-addons;[ + default = with pkgs.nur.repos.rycee.firefox-addons; [ ublock-origin darkreader privacy-badger @@ -57,11 +57,18 @@ }; }; config = lib.mkIf config.mods.firefox.enable - (lib.optionalAttrs (options?programs.firefox.profiles) { + (lib.optionalAttrs (options ? programs.firefox.profiles) { programs.firefox = { enable = true; policies = config.mods.firefox.configuration; profiles.${config.conf.username} = { + isDefault = true; + id = 0; + extensions = config.mods.firefox.extensions; + }; + profiles."special" = { + isDefault = false; + id = 1; extensions = config.mods.firefox.extensions; }; }; diff --git a/modules/programs/flatpak.nix b/modules/programs/flatpak.nix index 930cbef..d0158cb 100644 --- a/modules/programs/flatpak.nix +++ b/modules/programs/flatpak.nix @@ -14,14 +14,13 @@ }; }; config = lib.mkIf config.mods.flatpak.enable - (lib.optionalAttrs (options?services.flatpak.remote) - { - services.flatpak.remotes = lib.mkOptionDefault [{ - name = "flathub-stable"; - location = "https://dl.flathub.org/repo/flathub.flatpakrepo"; - }]; - services.flatpak.uninstallUnmanaged = true; - } // lib.optionalAttrs (options?services.flatpak.packages) { + (lib.optionalAttrs (options ? services.flatpak.remote) { + services.flatpak.remotes = lib.mkOptionDefault [{ + name = "flathub-stable"; + location = "https://dl.flathub.org/repo/flathub.flatpakrepo"; + }]; + services.flatpak.uninstallUnmanaged = true; + } // lib.optionalAttrs (options ? services.flatpak.packages) { services.flatpak.packages = [ # fallback if necessary, but generally avoided as nix is superior :) # default flatseal installation since flatpak permissions are totally not a broken idea diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 645e042..57b0c30 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -7,14 +7,7 @@ description = "Enabled gaming related features."; }; tools = lib.mkOption { - default = with pkgs; [ - gamemode - steam - lutris - wine - adwsteamgtk - heroic - ]; + default = with pkgs; [ gamemode steam lutris wine adwsteamgtk heroic ]; example = [ ]; type = with lib.types; listOf package; description = "Install gaming related packages"; @@ -41,7 +34,8 @@ default = true; example = false; type = lib.types.bool; - description = "Whether to use GPU performance setting. NOTE: this is at your own risk!"; + description = + "Whether to use GPU performance setting. NOTE: this is at your own risk!"; }; gpu_device = lib.mkOption { default = 0; @@ -51,7 +45,7 @@ }; }; config = lib.mkIf config.mods.gaming.enable - (lib.optionalAttrs (options?environment.systemPackages) { + (lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = config.mods.gaming.tools; programs.steam.enable = config.mods.gaming.steam; @@ -59,9 +53,7 @@ programs.gamemode = { enableRenice = true; settings = { - general = { - governor = "performance"; - }; + general = { governor = "performance"; }; gpu = lib.mkIf config.mods.gaming.gpu_optimization { apply_gpu_optimisations = "accept-responsibility"; gpu_device = config.mods.gaming.gpu_device; diff --git a/modules/programs/git.nix b/modules/programs/git.nix index 1bdc19e..ee5d258 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -1,5 +1,4 @@ -{ lib, config, options, pkgs, ... }: -{ +{ lib, config, options, pkgs, ... }: { options.mods.git = { username = lib.mkOption { default = "DashieTM"; @@ -16,29 +15,40 @@ ssh_config = lib.mkOption { default = '' Host github.com - ${if (config.sops.secrets?hub.path) then "IdentityFile ${config.sops.secrets.hub.path}" else ""} + ${ + if (config.sops.secrets ? hub.path) then + "IdentityFile ${config.sops.secrets.hub.path}" + else + "" + } Host gitlab.com - ${if (config.sops.secrets?lab.path) then "IdentityFile ${config.sops.secrets.lab.path}" else ""} + ${ + if (config.sops.secrets ? lab.path) then + "IdentityFile ${config.sops.secrets.lab.path}" + else + "" + } Host dashie.org - ${if (config.sops.secrets?dashie.path) then "IdentityFile ${config.sops.secrets.dashie.path}" else ""} + ${ + if (config.sops.secrets ? dashie.path) then + "IdentityFile ${config.sops.secrets.dashie.path}" + else + "" + } ''; - example = ''''; + example = ""; type = lib.types.lines; description = "ssh configuration (keys for git)"; }; }; - config = (lib.optionalAttrs (options?programs.git && options?home.file) { + config = (lib.optionalAttrs (options ? programs.git && options ? home.file) { programs.git = { enable = true; userName = config.mods.git.username; userEmail = config.mods.git.email; extraConfig = { - merge = { - tool = "nvimdiff"; - }; - diff = { - tool = "nvimdiff"; - }; + merge = { tool = "nvimdiff"; }; + diff = { tool = "nvimdiff"; }; }; }; home.file.".ssh/config".text = config.mods.git.ssh_config; diff --git a/modules/programs/gnome_services.nix b/modules/programs/gnome_services.nix index 8619075..fe6ad0e 100644 --- a/modules/programs/gnome_services.nix +++ b/modules/programs/gnome_services.nix @@ -11,24 +11,17 @@ }; }; - config = lib.mkIf config.mods.gnome_services.enable (lib.optionalAttrs (options?services.gnome.gnome-keyring) - { + config = lib.mkIf config.mods.gnome_services.enable + (lib.optionalAttrs (options ? services.gnome.gnome-keyring) { programs.dconf.enable = true; services = { # needed for GNOME services outside of GNOME Desktop - dbus.packages = with pkgs; [ - gcr - gnome.gnome-settings-daemon - ]; + dbus.packages = with pkgs; [ gcr gnome.gnome-settings-daemon ]; gnome.gnome-keyring.enable = true; gvfs.enable = true; }; - } // lib.optionalAttrs (options?home.packages) { - home.packages = with pkgs; [ - nautilus - sushi - nautilus-python - ]; - }); + } // lib.optionalAttrs (options ? home.packages) { + home.packages = with pkgs; [ nautilus sushi nautilus-python ]; + }); } diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index d88aace..e3f651c 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -38,46 +38,36 @@ }; config = lib.mkIf config.mods.vapi.enable - (lib.optionalAttrs - (options?hardware.graphics) - { - boot = lib.mkIf config.mods.amdgpu.enable { - kernelModules = [ "kvm-amd" ]; - initrd.kernelModules = [ "amdgpu" ]; - kernelParams = [ - "amdgpu.ppfeaturemask=0xffffffff" - ]; - }; - - hardware = { - graphics = - let - base_packages = [ - pkgs.libvdpau-va-gl - pkgs.vaapiVdpau - pkgs.mesa.drivers - ]; - rocm_packages = [ - pkgs.rocmPackages.clr.icd - pkgs.rocm-opencl-runtime - ]; - in - { - enable = true; - enable32Bit = lib.mkDefault true; - extraPackages = base_packages ++ - (lib.lists.optionals config.mods.vapi.rocm.enable rocm_packages); - }; - }; - } // lib.optionalAttrs (options?hardware.graphics) (lib.mkIf config.mods.nvidia.enable { - hardware.nvidia = { - modesetting.enable = true; - # powerManagement.enable = false; - # powerManagement.finegrained = true; - open = true; - nvidiaSettings = true; - package = config.boot.kernelPackages.nvidiaPackages.stable; + (lib.optionalAttrs (options ? hardware.graphics) { + boot = lib.mkIf config.mods.amdgpu.enable { + kernelModules = [ "kvm-amd" ]; + initrd.kernelModules = [ "amdgpu" ]; + kernelParams = [ "amdgpu.ppfeaturemask=0xffffffff" ]; }; - services.xserver.videoDrivers = [ "nvidia" ]; - })); + + hardware = { + graphics = let + base_packages = + [ pkgs.libvdpau-va-gl pkgs.vaapiVdpau pkgs.mesa.drivers ]; + rocm_packages = + [ pkgs.rocmPackages.clr.icd pkgs.rocm-opencl-runtime ]; + in { + enable = true; + enable32Bit = lib.mkDefault true; + extraPackages = base_packages + ++ (lib.lists.optionals config.mods.vapi.rocm.enable rocm_packages); + }; + }; + } // lib.optionalAttrs (options ? hardware.graphics) + (lib.mkIf config.mods.nvidia.enable { + hardware.nvidia = { + modesetting.enable = true; + # powerManagement.enable = false; + # powerManagement.finegrained = true; + open = true; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; + services.xserver.videoDrivers = [ "nvidia" ]; + })); } diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index a565805..c082ef4 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -38,62 +38,60 @@ }; }; - config = - let - username = config.conf.username; - session = { - command = "${lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland} --config /etc/greetd/hyprgreet.conf"; - user = username; + config = let + username = config.conf.username; + session = { + command = "${ + lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland + } --config /etc/greetd/hyprgreet.conf"; + user = username; + }; + in lib.mkIf config.mods.greetd.enable + (lib.optionalAttrs (options ? environment) { + services.xserver.displayManager.session = [{ + manage = "desktop"; + name = "Hyprland"; + start = '' + ${lib.getExe pkgs.hyprland} & waitPID=$! + ''; + }]; + + # greetd display manager + programs.hyprland.enable = true; + services.greetd = { + enable = true; + settings = { + terminal.vt = 1; + default_session = session; }; - in - lib.mkIf config.mods.greetd.enable - (lib.optionalAttrs (options?environment) { - services.xserver.displayManager.session = [ - { - manage = "desktop"; - name = "Hyprland"; - start = '' - ${lib.getExe pkgs.hyprland} & waitPID=$! - ''; - } - ]; + }; - # greetd display manager - programs.hyprland.enable = true; - services.greetd = { - enable = true; - settings = { - terminal.vt = 1; - default_session = session; - }; - }; + environment.etc."greetd/environments".text = '' + Hyprland + ''; - environment.etc."greetd/environments".text = '' - Hyprland - ''; + # should technically be the same, but this is configured instead in order to provide a decent out of the box login experience. + environment.etc."greetd/hyprgreet.conf".text = '' + exec-once=gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' - # should technically be the same, but this is configured instead in order to provide a decent out of the box login experience. - environment.etc."greetd/hyprgreet.conf".text = '' - exec-once=gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' + monitor=${config.mods.greetd.monitor},${config.mods.greetd.resolution},0x0,${config.mods.greetd.scale} + monitor=,disable - monitor=${config.mods.greetd.monitor},${config.mods.greetd.resolution},0x0,${config.mods.greetd.scale} - monitor=,disable + input { + kb_layout = ${config.mods.xkb.layout} + kb_variant = ${config.mods.xkb.variant} + force_no_accel = true + } - input { - kb_layout = ${config.mods.xkb.layout} - kb_variant = ${config.mods.xkb.variant} - force_no_accel = true - } + misc { + disable_splash_rendering = false + disable_hyprland_logo = false + } - misc { - disable_splash_rendering = false - disable_hyprland_logo = false - } + exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit + ''; - exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit - ''; - - # unlock GPG keyring on login - security.pam.services.greetd.enableGnomeKeyring = true; - }); + # unlock GPG keyring on login + security.pam.services.greetd.enableGnomeKeyring = true; + }); } diff --git a/modules/programs/home_packages.nix b/modules/programs/home_packages.nix index 9eb3d63..81a0c34 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/home_packages.nix @@ -16,14 +16,10 @@ ''; }; }; - config = - let - callPackage = lib.callPackageWith pkgs; - in - (lib.optionalAttrs (options?home.packages) - { - home.packages = config.mods.home_packages.additional_packages; - } // (lib.mkIf config.mods.home_packages.enable (lib.optionalAttrs (options?home.packages) { + config = (lib.optionalAttrs (options ? home.packages) { + home.packages = config.mods.home_packages.additional_packages; + } // (lib.mkIf config.mods.home_packages.enable + (lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ nheko nextcloud-client @@ -60,14 +56,10 @@ poppler_utils brave greetd.regreet - sops flake-checker ffmpeg system-config-printer brightnessctl - (callPackage - ../../override/cambalache.nix - { }) ]; #my own programs diff --git a/modules/programs/hyprland/anyrun.nix b/modules/programs/hyprland/anyrun.nix index f81687f..effa53d 100644 --- a/modules/programs/hyprland/anyrun.nix +++ b/modules/programs/hyprland/anyrun.nix @@ -11,7 +11,7 @@ }; config = lib.mkIf config.mods.hyprland.anyrun.enable - (lib.optionalAttrs (options?programs.anyrun) { + (lib.optionalAttrs (options ? programs.anyrun) { programs.anyrun = { enable = true; config = { diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 400d772..b5358fd 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -15,9 +15,7 @@ }; monitor = lib.mkOption { default = [ ]; - example = [ - "DP-1,3440x1440@180,2560x0,1,vrr,0" - ]; + example = [ "DP-1,3440x1440@180,2560x0,1,vrr,0" ]; type = with lib.types; listOf str; description = '' The monitor configuration for hyprland. @@ -25,9 +23,7 @@ }; workspace = lib.mkOption { default = [ ]; - example = [ - "2,monitor:DP-1, default:true" - ]; + example = [ "2,monitor:DP-1, default:true" ]; type = with lib.types; listOf str; description = '' The workspace configuration for hyprland. @@ -62,281 +58,278 @@ }; config = lib.mkIf config.mods.hyprland.enable - (lib.optionalAttrs (options?wayland.windowManager.hyprland) - { - # install Hyprland related packages - home.packages = with pkgs; [ - xorg.xprop - grim - slurp - satty - xdg-desktop-portal-gtk - # xdg-desktop-portal-hyprland - copyq - wl-clipboard - hyprcursor - hyprpicker - ]; + (lib.optionalAttrs (options ? wayland.windowManager.hyprland) { + # install Hyprland related packages + home.packages = with pkgs; [ + xorg.xprop + grim + slurp + satty + xdg-desktop-portal-gtk + # xdg-desktop-portal-hyprland + copyq + wl-clipboard + hyprcursor + hyprpicker + ]; - wayland.windowManager.hyprland.enable = true; - wayland.windowManager.hyprland.settings = lib.mkIf config.mods.hyprland.use_default_config - { - "$mod" = "SUPER"; - "source" = "/home/${config.conf.username}/.config/reset/keyboard.conf"; + wayland.windowManager.hyprland.enable = true; + wayland.windowManager.hyprland.settings = + lib.mkIf config.mods.hyprland.use_default_config { + "$mod" = "SUPER"; + "source" = + "/home/${config.conf.username}/.config/reset/keyboard.conf"; - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" + bindm = + [ "$mod, mouse:272, movewindow" "$mod, mouse:273, resizewindow" ]; + + bind = [ + # screenshots + ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' + '' + $mod SUPERSHIFTALT,S,exec, grim -g "$(slurp)" $HOME/gits/ost-5semester/Screenshots/$(date +'%Y_%m_%d_%I_%M_%S.png') && (date +'%Y_%m_%d_%I_%M_%S.png') | wl-copy'' + ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' + '' + $mod SUPERCONTROLSHIFT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy'' + + # regular programs + "$mod SUPER,F,exec,firefox" + "$mod SUPERSHIFT,F,exec,firefox -p special" + "$mod SUPER,T,exec,kitty -1" + "$mod SUPER,E,exec,nautilus -w" + "$mod SUPER,N,exec,neovide" + "$mod SUPER,M,exec,oxidash" + "$mod SUPER,R,exec,anyrun" + "$mod SUPER,G,exec,oxicalc" + "$mod SUPER,D,exec,oxishut" + "$mod SUPER,A,exec,oxipaste" + "$mod SUPERSHIFT,P,exec,hyprdock --gui" + "$mod SUPERSHIFT,L,exec, playerctl -a pause & hyprlock & systemctl suspend" + "$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate" + + # media keys + ",XF86AudioMute,exec, $HOME/.config/scripts/audio_control.sh mute" + ",XF86AudioLowerVolume,exec, $HOME/.config/scripts/audio_control.sh sink -5%" + ",XF86AudioRaiseVolume,exec, $HOME/.config/scripts/audio_control.sh sink +5%" + ",XF86AudioPlay,exec, playerctl play-pause" + ",XF86AudioNext,exec, playerctl next" + ",XF86AudioPrev,exec, playerctl previous" + ",XF86MonBrightnessDown,exec, $HOME/.config/scripts/change-brightness brightness 10%-" + ",XF86MonBrightnessUp,exec, $HOME/.config/scripts/change-brightness brightness +10%" + + # hyprland keybinds + # misc + "$mod SUPER,V,togglefloating," + "$mod SUPER,B,fullscreen," + "$mod SUPER,C,togglesplit" + "$mod SUPER,Q,killactive," + "$mod SUPERSHIFTALT,M,exit," + "$mod SUPERSHIFT,W,togglespecialworkspace" + + # move + "$mod SUPER,left,movewindow,l" + "$mod SUPER,right,movewindow,r" + "$mod SUPER,up,movewindow,u" + "$mod SUPER,down,movewindow,d" + + # workspaces + "$mod SUPER,1,workspace,1" + "$mod SUPER,2,workspace,2" + "$mod SUPER,3,workspace,3" + "$mod SUPER,4,workspace,4" + "$mod SUPER,5,workspace,5" + "$mod SUPER,6,workspace,6" + "$mod SUPER,7,workspace,7" + "$mod SUPER,8,workspace,8" + "$mod SUPER,9,workspace,9" + "$mod SUPER,0,workspace,10" + + # move to workspace + "$mod SUPERSHIFT,1,movetoworkspace,1" + "$mod SUPERSHIFT,2,movetoworkspace,2" + "$mod SUPERSHIFT,3,movetoworkspace,3" + "$mod SUPERSHIFT,4,movetoworkspace,4" + "$mod SUPERSHIFT,5,movetoworkspace,5" + "$mod SUPERSHIFT,6,movetoworkspace,6" + "$mod SUPERSHIFT,7,movetoworkspace,7" + "$mod SUPERSHIFT,8,movetoworkspace,8" + "$mod SUPERSHIFT,9,movetoworkspace,9" + "$mod SUPERSHIFT,0,movetoworkspace,10" + + # move to workspace silent + "$mod SUPERSHIFTALT,1,movetoworkspacesilent,1" + "$mod SUPERSHIFTALT,2,movetoworkspacesilent,2" + "$mod SUPERSHIFTALT,3,movetoworkspacesilent,3" + "$mod SUPERSHIFTALT,4,movetoworkspacesilent,4" + "$mod SUPERSHIFTALT,5,movetoworkspacesilent,5" + "$mod SUPERSHIFTALT,6,movetoworkspacesilent,6" + "$mod SUPERSHIFTALT,7,movetoworkspacesilent,7" + "$mod SUPERSHIFTALT,8,movetoworkspacesilent,8" + "$mod SUPERSHIFTALT,9,movetoworkspacesilent,9" + "$mod SUPERSHIFTALT,0,movetoworkspacesilent,10" + + # preselection + "$mod SUPERALT,j,layoutmsg,preselect l" + "$mod SUPERALT,k,layoutmsg,preselect d" + "$mod SUPERALT,l,layoutmsg,preselect u" + "$mod SUPERALT,semicolon,layoutmsg,preselect r" + "$mod SUPERALT,h,layoutmsg,preselect n" + ]; + + binde = [ + # hyprland keybinds + # focus + "$mod SUPER,J,movefocus,l" + "$mod SUPER,semicolon,movefocus,r" + "$mod SUPER,L,movefocus,u" + "$mod SUPER,K,movefocus,d" + + # resize + "$mod SUPER,U,resizeactive,-20 0" + "$mod SUPER,P,resizeactive,20 0" + "$mod SUPER,O,resizeactive,0 -20" + "$mod SUPER,I,resizeactive,0 20" + ]; + + general = { + gaps_out = "3,5,5,5"; + border_size = 3; + "col.active_border" = + lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; + # "col.inactive_border" = "0x66333333"; + allow_tearing = true; + }; + + decoration = { rounding = 4; }; + + animations = { + bezier = "penguin,0.05,0.9,0.1,1.0"; + animation = [ + "windowsMove,1,4,default" + "windows,1,7,default,popin 70%" + "windowsOut,1,7,default,popin 70%" + "border,1,10,default" + "fade,1,7,default" + "workspaces,1,6,default" + "layers,1,3,default,popin" ]; + }; - bind = [ - # screenshots - "$mod SUPER,S,exec,grim -g \"$(slurp)\" - | wl-copy" - "$mod SUPERSHIFTALT,S,exec, grim -g \"$(slurp)\" $HOME/gits/ost-5semester/Screenshots/$(date +'%Y_%m_%d_%I_%M_%S.png') && (date +'%Y_%m_%d_%I_%M_%S.png') | wl-copy" - "$mod SUPERSHIFT,S,exec,grim -g \"$(slurp)\" - | satty -f -" - "$mod SUPERCONTROLSHIFT,S,exec,grim -c -g \"2560,0 3440x1440\" - | wl-copy" + dwindle = { + preserve_split = true; + pseudotile = 0; + permanent_direction_override = false; + }; - # regular programs - "$mod SUPER,F,exec,firefox" - "$mod SUPER,T,exec,kitty -1" - "$mod SUPER,E,exec,nautilus -w" - "$mod SUPER,N,exec,neovide" - "$mod SUPER,M,exec,oxidash" - "$mod SUPER,R,exec,anyrun" - "$mod SUPER,G,exec,oxicalc" - "$mod SUPER,D,exec,oxishut" - "$mod SUPER,A,exec,oxipaste" - "$mod SUPERSHIFT,P,exec,hyprdock --gui" - "$mod SUPERSHIFT,L,exec, playerctl -a pause & hyprlock & systemctl suspend" - "$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate" - - # media keys - ",XF86AudioMute,exec, $HOME/.config/scripts/audio_control.sh mute" - ",XF86AudioLowerVolume,exec, $HOME/.config/scripts/audio_control.sh sink -5%" - ",XF86AudioRaiseVolume,exec, $HOME/.config/scripts/audio_control.sh sink +5%" - ",XF86AudioPlay,exec, playerctl play-pause" - ",XF86AudioNext,exec, playerctl next" - ",XF86AudioPrev,exec, playerctl previous" - ",XF86MonBrightnessDown,exec, $HOME/.config/scripts/change-brightness brightness 10%-" - ",XF86MonBrightnessUp,exec, $HOME/.config/scripts/change-brightness brightness +10%" - - # hyprland keybinds - # misc - "$mod SUPER,V,togglefloating," - "$mod SUPER,B,fullscreen," - "$mod SUPER,C,togglesplit" - "$mod SUPER,Q,killactive," - "$mod SUPERSHIFTALT,M,exit," - "$mod SUPERSHIFT,W,togglespecialworkspace" - - # move - "$mod SUPER,left,movewindow,l" - "$mod SUPER,right,movewindow,r" - "$mod SUPER,up,movewindow,u" - "$mod SUPER,down,movewindow,d" - - # workspaces - "$mod SUPER,1,workspace,1" - "$mod SUPER,2,workspace,2" - "$mod SUPER,3,workspace,3" - "$mod SUPER,4,workspace,4" - "$mod SUPER,5,workspace,5" - "$mod SUPER,6,workspace,6" - "$mod SUPER,7,workspace,7" - "$mod SUPER,8,workspace,8" - "$mod SUPER,9,workspace,9" - "$mod SUPER,0,workspace,10" - - # move to workspace - "$mod SUPERSHIFT,1,movetoworkspace,1" - "$mod SUPERSHIFT,2,movetoworkspace,2" - "$mod SUPERSHIFT,3,movetoworkspace,3" - "$mod SUPERSHIFT,4,movetoworkspace,4" - "$mod SUPERSHIFT,5,movetoworkspace,5" - "$mod SUPERSHIFT,6,movetoworkspace,6" - "$mod SUPERSHIFT,7,movetoworkspace,7" - "$mod SUPERSHIFT,8,movetoworkspace,8" - "$mod SUPERSHIFT,9,movetoworkspace,9" - "$mod SUPERSHIFT,0,movetoworkspace,10" - - - # move to workspace silent - "$mod SUPERSHIFTALT,1,movetoworkspacesilent,1" - "$mod SUPERSHIFTALT,2,movetoworkspacesilent,2" - "$mod SUPERSHIFTALT,3,movetoworkspacesilent,3" - "$mod SUPERSHIFTALT,4,movetoworkspacesilent,4" - "$mod SUPERSHIFTALT,5,movetoworkspacesilent,5" - "$mod SUPERSHIFTALT,6,movetoworkspacesilent,6" - "$mod SUPERSHIFTALT,7,movetoworkspacesilent,7" - "$mod SUPERSHIFTALT,8,movetoworkspacesilent,8" - "$mod SUPERSHIFTALT,9,movetoworkspacesilent,9" - "$mod SUPERSHIFTALT,0,movetoworkspacesilent,10" - - # preselection - "$mod SUPERALT,j,layoutmsg,preselect l" - "$mod SUPERALT,k,layoutmsg,preselect d" - "$mod SUPERALT,l,layoutmsg,preselect u" - "$mod SUPERALT,semicolon,layoutmsg,preselect r" - "$mod SUPERALT,h,layoutmsg,preselect n" - ]; - - binde = [ - # hyprland keybinds - # focus - "$mod SUPER,J,movefocus,l" - "$mod SUPER,semicolon,movefocus,r" - "$mod SUPER,L,movefocus,u" - "$mod SUPER,K,movefocus,d" - - # resize - "$mod SUPER,U,resizeactive,-20 0" - "$mod SUPER,P,resizeactive,20 0" - "$mod SUPER,O,resizeactive,0 -20" - "$mod SUPER,I,resizeactive,0 20" - ]; - - general = { - gaps_out = "3,5,5,5"; - border_size = 3; - "col.active_border" = lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; - # "col.inactive_border" = "0x66333333"; - allow_tearing = true; + input = { + kb_layout = "${config.mods.xkb.layout}"; + kb_variant = "${config.mods.xkb.variant}"; + repeat_delay = 200; + force_no_accel = true; + touchpad = { + natural_scroll = true; + tap-to-click = true; + tap-and-drag = true; }; + }; - decoration = { - rounding = 4; - }; + misc = { + animate_manual_resizes = 1; + enable_swallow = true; + disable_splash_rendering = true; + disable_hyprland_logo = true; + swallow_regex = "^(.*)(kitty)(.*)$"; + initial_workspace_tracking = 1; + }; - animations = { - bezier = "penguin,0.05,0.9,0.1,1.0"; - animation = [ - "windowsMove,1,4,default" - "windows,1,7,default,popin 70%" - "windowsOut,1,7,default,popin 70%" - "border,1,10,default" - "fade,1,7,default" - "workspaces,1,6,default" - "layers,1,3,default,popin" - ]; - }; + cursor = { + # conversion seems to be borked right now, i want a smooth bibata :( + enable_hyprcursor = false; + # no_hardware_cursors = true; + # no_break_fs_vrr = true; + }; - dwindle = { - preserve_split = true; - pseudotile = 0; - permanent_direction_override = false; - }; + gestures = { workspace_swipe = true; }; - input = { - kb_layout = "${config.mods.xkb.layout}"; - kb_variant = "${config.mods.xkb.variant}"; - repeat_delay = 200; - force_no_accel = true; - touchpad = { - natural_scroll = true; - tap-to-click = true; - tap-and-drag = true; - }; - }; + monitor = config.mods.hyprland.monitor; + workspace = config.mods.hyprland.workspace; - misc = { - animate_manual_resizes = 1; - enable_swallow = true; - disable_splash_rendering = true; - disable_hyprland_logo = true; - swallow_regex = "^(.*)(kitty)(.*)$"; - initial_workspace_tracking = 1; - }; + env = [ + "GTK_CSD,0" + ''TERM,"kitty /bin/fish"'' + "XDG_CURRENT_DESKTOP=Hyprland" + "XDG_SESSION_TYPE=wayland" + "XDG_SESSION_DESKTOP=Hyprland" + "HYPRCURSOR_THEME,Bibata-Modern-Classic" + "HYPRCURSOR_SIZE,24" + "XCURSOR_THEME,Bibata-Modern-Classic" + "XCURSOR_SIZE,24" + "QT_QPA_PLATFORM,wayland" + "QT_QPA_PLATFORMTHEME,qt5ct" + "QT_WAYLAND_FORCE_DPI,96" + "QT_AUTO_SCREEN_SCALE_FACTOR,0" + "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" + "QT_SCALE_FACTOR,1" + ''EDITOR,"neovide --novsync --nofork"'' + "WLR_DRM_NO_ATOMIC,1" + "GTK_USE_PORTAL, 1" + ]; - cursor = { - # conversion seems to be borked right now, i want a smooth bibata :( - enable_hyprcursor = false; - # no_hardware_cursors = true; - # no_break_fs_vrr = true; - }; + layerrule = [ + # layer rules + # mainly to disable animations within slurp and grim + "noanim, selection" + ]; - gestures = { - workspace_swipe = true; - }; + windowrule = [ + # window rules + "tile,^(.*)(Spotify)(.*)$" + "float,^(.*)(OxiCalc)(.*)$" + "float,^(.*)(winecfg.exe)(.*)$" + "float,^(.*)(speed.exe)(.*)$" + "float,^(.*)(copyq)(.*)$" + "center,^(.*)(swappy)(.*)$" + "float,title:^(.*)(Spirit)(.*)$" + "float,title:^(.*)(reset)(.*)$" + "workspace 10 silent,^(.*)(steam)(.*)$" + "workspace 9 silent,^(.*)(dota)(.*)$" + "workspace 9 silent,^(.*)(battlebits)(.*)$" + "workspace 9 silent,^(.*)(aoe)(.*)$" + "suppressevent fullscreen maximize,^(.*)(neovide)(.*)$" + ]; - monitor = config.mods.hyprland.monitor; - workspace = config.mods.hyprland.workspace; + windowrulev2 = [ + "immediate,class:^(.*)(Pal)$" + "immediate,class:^(.*)(dota2)$" + "immediate,class:^(.*)(needforspeedheat.exe)$" + ]; - env = [ - "GTK_CSD,0" - "TERM,\"kitty /bin/fish\"" - "XDG_CURRENT_DESKTOP=Hyprland" - "XDG_SESSION_TYPE=wayland" - "XDG_SESSION_DESKTOP=Hyprland" - "HYPRCURSOR_THEME,Bibata-Modern-Classic" - "HYPRCURSOR_SIZE,24" - "XCURSOR_THEME,Bibata-Modern-Classic" - "XCURSOR_SIZE,24" - "QT_QPA_PLATFORM,wayland" - "QT_QPA_PLATFORMTHEME,qt5ct" - "QT_WAYLAND_FORCE_DPI,96" - "QT_AUTO_SCREEN_SCALE_FACTOR,0" - "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" - "QT_SCALE_FACTOR,1" - "EDITOR,\"neovide --novsync --nofork\"" - "WLR_DRM_NO_ATOMIC,1" - "GTK_USE_PORTAL, 1" - ]; + exec-once = [ + # environment + "systemctl --user import-environment" + "dbus-update-activation-environment --systemd --all" + "hyprctl setcursor Bibata-Modern-Classic 24" - layerrule = [ - # layer rules - # mainly to disable animations within slurp and grim - "noanim, selection" - ]; + # other programs + "hyprpaper" + "ironbar" + "firefox" + "oxipaste_daemon" + # should be taken care of with the new systemd services + # "nextcloud --background" + "oxinoti" + ] ++ config.mods.hyprland.extra_autostart; - windowrule = [ - # window rules - "tile,^(.*)(Spotify)(.*)$" - "float,^(.*)(OxiCalc)(.*)$" - "float,^(.*)(winecfg.exe)(.*)$" - "float,^(.*)(speed.exe)(.*)$" - "float,^(.*)(copyq)(.*)$" - "center,^(.*)(swappy)(.*)$" - "float,title:^(.*)(Spirit)(.*)$" - "float,title:^(.*)(reset)(.*)$" - "workspace 10 silent,^(.*)(steam)(.*)$" - "workspace 9 silent,^(.*)(dota)(.*)$" - "workspace 9 silent,^(.*)(battlebits)(.*)$" - "workspace 9 silent,^(.*)(aoe)(.*)$" - "suppressevent fullscreen maximize,^(.*)(neovide)(.*)$" - ]; - - windowrulev2 = [ - "immediate,class:^(.*)(Pal)$" - "immediate,class:^(.*)(dota2)$" - "immediate,class:^(.*)(needforspeedheat.exe)$" - ]; - - exec-once = [ - # environment - "systemctl --user import-environment" - "dbus-update-activation-environment --systemd --all" - "hyprctl setcursor Bibata-Modern-Classic 24" - - # other programs - "hyprpaper" - "ironbar" - "firefox" - "oxipaste_daemon" - # should be taken care of with the new systemd services - # "nextcloud --background" - "oxinoti" - ] ++ config.mods.hyprland.extra_autostart; - - # plugin = { - # hyprspace = { - # bind = [ - # "SUPER, W, overview:toggle, toggle" - # ]; - # }; - # }; - } // config.mods.hyprland.custom_config; - # wayland.windowManager.hyprland.plugins = [ - # inputs.Hyprspace.packages.${pkgs.system}.Hyprspace - # ]; - }); + # plugin = { + # hyprspace = { + # bind = [ + # "SUPER, W, overview:toggle, toggle" + # ]; + # }; + # }; + } // config.mods.hyprland.custom_config; + # wayland.windowManager.hyprland.plugins = [ + # inputs.Hyprspace.packages.${pkgs.system}.Hyprspace + # ]; + }); } diff --git a/modules/programs/hyprland/hyprlock.nix b/modules/programs/hyprland/hyprlock.nix index 648b8e0..d6e728e 100644 --- a/modules/programs/hyprland/hyprlock.nix +++ b/modules/programs/hyprland/hyprlock.nix @@ -11,37 +11,31 @@ }; config = lib.mkIf config.mods.hyprland.hyprlock.enable - (lib.optionalAttrs (options?xdg.configFile) { + (lib.optionalAttrs (options ? xdg.configFile) { home.packages = with pkgs; [ hyprlock ]; programs.hyprlock = lib.mkIf config.mods.hyprland.hyprlock.enable { enable = true; settings = { - background = [ - { - monitor = ""; - path = ""; - color = "rgba(26, 27, 38, 1.0)"; - } - ]; + background = [{ + monitor = ""; + path = ""; + color = "rgba(26, 27, 38, 1.0)"; + }]; - input-field = [ - { - monitor = "${config.conf.monitor}"; + input-field = [{ + monitor = "${config.conf.monitor}"; - placeholder_text = "password or something"; - } - ]; + placeholder_text = "password or something"; + }]; - label = [ - { - monitor = "${config.conf.monitor}"; - text = "$TIME"; - font_size = 50; - position = "0, 200"; - valign = "center"; - halign = "center"; - } - ]; + label = [{ + monitor = "${config.conf.monitor}"; + text = "$TIME"; + font_size = 50; + position = "0, 200"; + valign = "center"; + halign = "center"; + }]; }; }; }); diff --git a/modules/programs/hyprland/hyprpaper.nix b/modules/programs/hyprland/hyprpaper.nix index af7e2d9..ebf923c 100644 --- a/modules/programs/hyprland/hyprpaper.nix +++ b/modules/programs/hyprland/hyprpaper.nix @@ -8,7 +8,7 @@ description = "Enables Hyprpaper"; }; config = lib.mkOption { - default = ''''; + default = ""; example = '' Hyprpaper config ''; @@ -21,11 +21,11 @@ }; config = lib.mkIf config.mods.hyprland.hyprpaper.enable - (lib.optionalAttrs (options?xdg.configFile) - { - home.packages = with pkgs; [ hyprpaper ]; - xdg.configFile."hypr/hyprpaper.conf" = lib.mkIf config.mods.hyprland.hyprpaper.enable { + (lib.optionalAttrs (options ? xdg.configFile) { + home.packages = with pkgs; [ hyprpaper ]; + xdg.configFile."hypr/hyprpaper.conf" = + lib.mkIf config.mods.hyprland.hyprpaper.enable { text = config.mods.hyprland.hyprpaper.config; }; - }); + }); } diff --git a/modules/programs/hyprland/ironbar.nix b/modules/programs/hyprland/ironbar.nix index be32982..0c36283 100644 --- a/modules/programs/hyprland/ironbar.nix +++ b/modules/programs/hyprland/ironbar.nix @@ -1,8 +1,6 @@ { lib, config, pkgs, options, ... }: - let - username = config.conf.username; - in -{ +let username = config.conf.username; +in { options.mods = { hyprland.ironbar = { enable = lib.mkOption { @@ -14,172 +12,166 @@ }; }; config = lib.mkIf config.mods.hyprland.ironbar.enable - (lib.optionalAttrs (options?programs.ironbar) - { + (lib.optionalAttrs (options ? programs.ironbar) { - programs.ironbar = { - enable = true; - style = '' - @import url("/home/${username}/.config/gtk-3.0/gtk.css"); - - * { - color: #71bbe6; - padding: 0px; - margin: 0px; - } - - .background { - background-color: rgba(0, 0, 0, 0); - } - - .workspaces { - margin: 2px 0px 0px 5px; - border-radius: 10px; - /* background-color: #2b2c3b; */ - background-color: #1E1E2E; - padding: 2px 5px 2px 5px; - } - - .workspaces .item { - margin: 0px 3px 0px 3px; - font-size: 13px; - border-radius: 100%; - padding: 0px 2px 0px 3px; - background-color: rgba(0, 0, 0, 0); - } - - .workspaces .item:hover { - background-color: #3e4152; - } - - .workspaces .item.focused { - background-color: #3e4152; - } - - .audio-box { - padding: 2em; - background-color: #1E1E2E; - border-radius: 5px; - } - - .audio-slider { - padding: 5px; - margin: 5px; - } - - .audio-button { - padding: 5px 10px 5px 10px; - margin: 0px 1em 20px 1em; - border-radius: 100%; - font-size: 17px; - } - - .audio-button-box { - padding: 0px 2.5em 0px 2.5em; - } - - .focused { - /* margin: 2px 0px 0px 0px; */ - padding: 0px 5px 0px 5px; - /* background-color: 1a1b26; */ - background-color: #1E1E2E; - font-size: 17px; - border-radius: 10px; - } - - #bar #end { - margin: 0px 5px 0px 0px; - padding: 0px 5px 0px 5px; - background-color: #1E1E2E; - border-radius: 10px; - } - - .popup-button { - padding: 0px 5px 0px 3px; - margin: 0em 3px; - border-radius: 100%; - font-size: 13px; - background-color: #1E1E2E; - } - - .popup-button-box { - padding: 2px 0px 2px 0px; - } - - .clock { - padding: 0px 5px 0px 5px; - font-size: 17px; - background-color: #1E1E2E; - } - - .clock:hover { - background-color: #3e4152; - } - - .custom button { - background-color: #1E1E2E; - } - - .custom button:hover { - background-color: #3e4152; - } - - .memory-usage { - font-size: 15px; - margin: 0px 5px 0px 0px; - } - - .memory-usage:hover { - background-color: #3e4152; - } - - .popup-clock { - background-color: #1E1E2E; - border-radius: 5px; - padding: 2px 8px 10px 8px; - } - - .popup-clock .calendar-clock { - font-size: 2.5em; - padding-bottom: 0.1em; - } - - .popup-clock .calendar { - border-radius: 5px; - font-size: 1.05em; - } - - .popup-clock .calendar:selected { - background-color: #3e4152; - } - ''; - features = [ - #"another_feature" - ]; - config = { - monitors."${config.conf.monitor}" = { - end = config.conf.ironbar.modules ++ [ - { - type = "sys_info"; - format = [ - " {memory_percent}" - ]; - interval.memory = 30; - class = "memory-usage"; - } - { - type = "custom"; - bar = [ - { + programs.ironbar = { + enable = true; + style = '' + @import url("/home/${username}/.config/gtk-3.0/gtk.css"); + + * { + color: #71bbe6; + padding: 0px; + margin: 0px; + } + + .background { + background-color: rgba(0, 0, 0, 0); + } + + .workspaces { + margin: 2px 0px 0px 5px; + border-radius: 10px; + /* background-color: #2b2c3b; */ + background-color: #1E1E2E; + padding: 2px 5px 2px 5px; + } + + .workspaces .item { + margin: 0px 3px 0px 3px; + font-size: 13px; + border-radius: 100%; + padding: 0px 2px 0px 3px; + background-color: rgba(0, 0, 0, 0); + } + + .workspaces .item:hover { + background-color: #3e4152; + } + + .workspaces .item.focused { + background-color: #3e4152; + } + + .audio-box { + padding: 2em; + background-color: #1E1E2E; + border-radius: 5px; + } + + .audio-slider { + padding: 5px; + margin: 5px; + } + + .audio-button { + padding: 5px 10px 5px 10px; + margin: 0px 1em 20px 1em; + border-radius: 100%; + font-size: 17px; + } + + .audio-button-box { + padding: 0px 2.5em 0px 2.5em; + } + + .focused { + /* margin: 2px 0px 0px 0px; */ + padding: 0px 5px 0px 5px; + /* background-color: 1a1b26; */ + background-color: #1E1E2E; + font-size: 17px; + border-radius: 10px; + } + + #bar #end { + margin: 0px 5px 0px 0px; + padding: 0px 5px 0px 5px; + background-color: #1E1E2E; + border-radius: 10px; + } + + .popup-button { + padding: 0px 5px 0px 3px; + margin: 0em 3px; + border-radius: 100%; + font-size: 13px; + background-color: #1E1E2E; + } + + .popup-button-box { + padding: 2px 0px 2px 0px; + } + + .clock { + padding: 0px 5px 0px 5px; + font-size: 17px; + background-color: #1E1E2E; + } + + .clock:hover { + background-color: #3e4152; + } + + .custom button { + background-color: #1E1E2E; + } + + .custom button:hover { + background-color: #3e4152; + } + + .memory-usage { + font-size: 15px; + margin: 0px 5px 0px 0px; + } + + .memory-usage:hover { + background-color: #3e4152; + } + + .popup-clock { + background-color: #1E1E2E; + border-radius: 5px; + padding: 2px 8px 10px 8px; + } + + .popup-clock .calendar-clock { + font-size: 2.5em; + padding-bottom: 0.1em; + } + + .popup-clock .calendar { + border-radius: 5px; + font-size: 1.05em; + } + + .popup-clock .calendar:selected { + background-color: #3e4152; + } + ''; + features = [ + #"another_feature" + ]; + config = { + monitors."${config.conf.monitor}" = { + end = config.conf.ironbar.modules ++ [ + { + type = "sys_info"; + format = [ " {memory_percent}" ]; + interval.memory = 30; + class = "memory-usage"; + } + { + type = "custom"; + bar = [{ type = "button"; class = "popup-button"; label = ""; on_click = "popup:toggle"; - } - ]; - class = "popup-button-box"; - popup = [ - { + }]; + class = "popup-button-box"; + popup = [{ type = "box"; orientation = "vertical"; class = "audio-box"; @@ -192,13 +184,15 @@ type = "button"; class = "audio-button"; label = ""; - on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth"; + on_click = + "!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth"; } { type = "button"; class = "audio-button"; label = "󰋋"; - on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh internal"; + on_click = + "!/home/${username}/.config/eww/scripts/audio_control.sh internal"; } ]; class = "audio-button-box"; @@ -212,7 +206,8 @@ class = "audio-slider"; step = 1.0; length = 200; - value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; + value = + "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; } { @@ -224,51 +219,49 @@ class = "audio-slider"; step = 1.0; length = 200; - value = "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; - on_change = "!pactl set-source-volume @DEFAULT_SOURCE@ $0%"; + value = + "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; + on_change = + "!pactl set-source-volume @DEFAULT_SOURCE@ $0%"; } ]; - } - ]; - } - { - type = "custom"; - bar = [ - { + }]; + } + { + type = "custom"; + bar = [{ type = "button"; class = "popup-button"; label = ""; - on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css"; - } - ]; - class = "popup-button-box"; - } - { - type = "clock"; - format = "%I:%M"; - format_popup = "%I:%M:%S"; - locale = "en_US"; - } - { type = "tray"; } - ]; - position = "top"; - height = 10; - anchor_to_edges = true; - start = [{ - type = "workspaces"; - all_monitors = true; - }]; - center = [ - { + on_click = + "!oxidash --css /home/${username}/gits/oxidash/style.css"; + }]; + class = "popup-button-box"; + } + { + type = "clock"; + format = "%I:%M"; + format_popup = "%I:%M:%S"; + locale = "en_US"; + } + { type = "tray"; } + ]; + position = "top"; + height = 10; + anchor_to_edges = true; + start = [{ + type = "workspaces"; + all_monitors = true; + }]; + center = [{ type = "focused"; show_icon = true; show_title = true; icon_size = 20; truncate = "end"; - } - ]; + }]; + }; }; }; - }; - }); + }); } diff --git a/modules/programs/kde_connect.nix b/modules/programs/kde_connect.nix index 62f0a8b..6a4cae7 100644 --- a/modules/programs/kde_connect.nix +++ b/modules/programs/kde_connect.nix @@ -12,19 +12,20 @@ }; config = lib.mkIf config.mods.kde_connect.enable - (lib.optionalAttrs (options?networking.firewall) - { - networking.firewall = { - allowedTCPPortRanges = [ - { from = 1714; to = 1764; } # KDE Connect + (lib.optionalAttrs (options ? networking.firewall) { + networking.firewall = { + allowedTCPPortRanges = [{ + from = 1714; + to = 1764; + } # KDE Connect ]; - allowedUDPPortRanges = [ - { from = 1714; to = 1764; } # KDE Connect + allowedUDPPortRanges = [{ + from = 1714; + to = 1764; + } # KDE Connect ]; - }; - } // lib.optionalAttrs (options?home.packages) { - home.packages = with pkgs; [ - kdeconnect - ]; + }; + } // lib.optionalAttrs (options ? home.packages) { + home.packages = with pkgs; [ kdeconnect ]; }); } diff --git a/modules/programs/keepassxc.nix b/modules/programs/keepassxc.nix index 9dd0304..6a52fe6 100644 --- a/modules/programs/keepassxc.nix +++ b/modules/programs/keepassxc.nix @@ -10,7 +10,8 @@ default = true; example = false; type = lib.types.bool; - description = "Whether to overwrite the cache config of keepassxc. Note, this means that changes can't be applied via the program anymore!"; + description = + "Whether to overwrite the cache config of keepassxc. Note, this means that changes can't be applied via the program anymore!"; }; cache_config = lib.mkOption { default = '' @@ -20,41 +21,41 @@ LastOpenedDatabases=/home/dashie/Music/Passwords.kdbx LastKeyFiles=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x42\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0M\0u\0s\0i\0\x63\0/\0P\0\x61\0s\0s\0w\0o\0r\0\x64\0s\0.\0k\0\x64\0\x62\0x\0\0\0\n\0\0\0\x42\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0M\0u\0s\0i\0\x63\0/\0l\0o\0g\0i\0n\0_\0k\0\x65\0y\0.\0k\0\x65\0y\0x) ''; - example = ''''; + example = ""; type = lib.types.lines; description = "Cache config to be used."; }; }; config = lib.mkIf config.mods.keepassxc.enable - (lib.optionalAttrs (options?home.file) { + (lib.optionalAttrs (options ? home.file) { home.packages = [ pkgs.keepassxc ]; xdg.configFile."keepassxc/keepassxc.ini" = { - text = - '' - [General] - ConfigVersion=2 + text = '' + [General] + ConfigVersion=2 - [Browser] - Enabled=true + [Browser] + Enabled=true - [GUI] - ApplicationTheme=classic - HidePasswords=true - MinimizeOnClose=true - MinimizeToTray=true - ShowTrayIcon=true - TrayIconAppearance=monochrome-light + [GUI] + ApplicationTheme=classic + HidePasswords=true + MinimizeOnClose=true + MinimizeToTray=true + ShowTrayIcon=true + TrayIconAppearance=monochrome-light - [PasswordGenerator] - Length=30 + [PasswordGenerator] + Length=30 - [Security] - EnableCopyOnDoubleClick=true - ''; + [Security] + EnableCopyOnDoubleClick=true + ''; }; - home.file.".cache/keepassxc/keepassxc.ini" = lib.mkIf config.mods.keepassxc.use_cache_config { - text = config.mods.keepassxc.cache_config; - }; + home.file.".cache/keepassxc/keepassxc.ini" = + lib.mkIf config.mods.keepassxc.use_cache_config { + text = config.mods.keepassxc.cache_config; + }; }); } diff --git a/modules/programs/layout.nix b/modules/programs/layout.nix index a6cb853..3ca2443 100644 --- a/modules/programs/layout.nix +++ b/modules/programs/layout.nix @@ -13,7 +13,7 @@ description = "Your variant"; }; }; - config = (lib.optionalAttrs (options?services.xserver) { + config = (lib.optionalAttrs (options ? services.xserver) { # Configure keymap in X11 services.xserver = { xkb.layout = "${config.mods.xkb.layout}"; diff --git a/modules/programs/media.nix b/modules/programs/media.nix index ff52e4d..b115fbf 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -16,11 +16,10 @@ ''; }; }; - config = - (lib.optionalAttrs (options?home.packages) - { - home.packages = config.mods.media_packages.additional_packages; - } // (lib.mkIf config.mods.media_packages.enable (lib.optionalAttrs (options?home.packages) { + config = (lib.optionalAttrs (options ? home.packages) { + home.packages = config.mods.media_packages.additional_packages; + } // (lib.mkIf config.mods.media_packages.enable + (lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ # base audio pipewire @@ -49,8 +48,6 @@ yt-dlp ]; programs.obs-studio.enable = true; - programs.obs-studio.plugins = with pkgs; [ - obs-studio-plugins.obs-vaapi - ]; + programs.obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ]; }))); } diff --git a/modules/programs/nextcloud.nix b/modules/programs/nextcloud.nix index 7298065..0b90c58 100644 --- a/modules/programs/nextcloud.nix +++ b/modules/programs/nextcloud.nix @@ -21,13 +21,11 @@ }; synclist = lib.mkOption { default = [ ]; - example = [ - { - name = "sync globi folder"; - remote = "globi"; - local = "/home/globi"; - } - ]; + example = [{ + name = "sync globi folder"; + remote = "globi"; + local = "/home/globi"; + }]; description = '' A list of folders to synchronize. This has to be an attribute list with the name, remote and local field (all strings). diff --git a/modules/programs/piper.nix b/modules/programs/piper.nix index fe45bfb..4c47628 100644 --- a/modules/programs/piper.nix +++ b/modules/programs/piper.nix @@ -8,12 +8,9 @@ }; }; config = lib.mkIf config.mods.piper.enable - (lib.optionalAttrs (options?services.ratbagd) - { - services.ratbagd.enable = true; - } // lib.optionalAttrs (options?home.packages) { - home.packages = with pkgs; [ - piper - ]; + (lib.optionalAttrs (options ? services.ratbagd) { + services.ratbagd.enable = true; + } // lib.optionalAttrs (options ? home.packages) { + home.packages = with pkgs; [ piper ]; }); } diff --git a/modules/programs/printing.nix b/modules/programs/printing.nix index cbb18e5..963de3b 100644 --- a/modules/programs/printing.nix +++ b/modules/programs/printing.nix @@ -8,17 +8,16 @@ }; }; config = lib.mkIf config.mods.printing.enable - (lib.optionalAttrs (options?services.printing) - { - # Enable CUPS to print documents. - services.printing.enable = true; - services.printing.browsing = true; - services.printing.drivers = [ pkgs.hplip ]; - services.printing.startWhenNeeded = true; # optional - services.avahi = { - enable = true; - nssmdns4 = true; - openFirewall = true; - }; - }); + (lib.optionalAttrs (options ? services.printing) { + # Enable CUPS to print documents. + services.printing.enable = true; + services.printing.browsing = true; + services.printing.drivers = [ pkgs.hplip ]; + services.printing.startWhenNeeded = true; # optional + services.avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; + }); } diff --git a/modules/programs/sops.nix b/modules/programs/sops.nix new file mode 100644 index 0000000..c93559c --- /dev/null +++ b/modules/programs/sops.nix @@ -0,0 +1,30 @@ +{ lib, pkgs, config, options, ... }: { + options.mods.sops = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enable sops secrets"; + }; + }; + config = lib.mkIf config.mods.sops.enable + (lib.optionalAttrs (options ? home.packages) { + home.packages = with pkgs; [ sops ]; + sops = { + gnupg = { + home = "~/.gnupg"; + sshKeyPaths = [ ]; + }; + defaultSopsFile = ../../secrets/secrets.yaml; + secrets = { + hub = { }; + lab = { }; + ${config.conf.username} = { }; + nextcloud = { }; + access = { }; + }; + }; + + systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ]; + }); +} diff --git a/modules/programs/starship.nix b/modules/programs/starship.nix index 3846138..69de20b 100644 --- a/modules/programs/starship.nix +++ b/modules/programs/starship.nix @@ -30,92 +30,99 @@ }; # environment.systemPackages needed in order to configure systemwide - config = lib.mkIf config.mods.starship.enable (lib.optionalAttrs (options?environment.systemPackages) { - programs.starship = - let + config = lib.mkIf config.mods.starship.enable + (lib.optionalAttrs (options ? environment.systemPackages) { + programs.starship = let base16 = pkgs.callPackage inputs.base16.lib { }; scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); - code_format = "[](bg:prev_bg fg:#5256c3)[ $symbol ($version)](bg:#5256c3)"; - in - { + code_format = + "[](bg:prev_bg fg:#5256c3)[ $symbol ($version)](bg:#5256c3)"; + in { enable = true; interactiveOnly = true; - presets = lib.mkIf config.mods.starship.use_default_prompt [ "pastel-powerline" ]; - settings = lib.mkIf config.mods.starship.use_default_prompt - { - # derived from https://starship.rs/presets/pastel-powerline - format = ''$username$directory$git_branch$git_status$git_metrics[ ](bg:none fg:prev_bg)''; - right_format = ''$c$elixir$elm$golang$gradle$haskell$java$julia$nodejs$nim$rust$scala$python$ocaml$opa$perl$zig$dart$dotnet$nix_shell$shell$solidity[](bg:prev_bg fg:#3465A4)$time$os''; - username = { - show_always = false; - style_user = "bg:#5277C3 fg:#${scheme.base05}"; - style_root = "bg:#5277C3 fg:#${scheme.base05}"; - format = "[ $user ]($style)[](bg:#3465A4 fg:#5277C3)"; - disabled = false; - }; - os = { - symbols = { NixOS = "  "; }; - style = "bg:#3465A4 fg:#${scheme.base05}"; - disabled = false; - }; - directory = { - style = "bg:#3465A4 fg:#${scheme.base05}"; - format = "[ $path ]($style)"; - truncation_length = 3; - truncation_symbol = "…/"; - }; - git_branch = { - always_show_remote = true; - symbol = ""; - style = "bg:#5256c3 fg:#${scheme.base05}"; - format = "[ ](bg:#5256c3 fg:prev_bg)[$symbol ($remote_name )$branch ]($style)"; - }; - git_status = { - staged = "+\${count} (fg:#C4A000)"; - ahead = "⇡\${count} (fg:#C4A000)"; - diverged = "⇕⇡\${count} (fg:#C4A000)"; - behind = "⇣\${count} (fg:#C4A000)"; - stashed = " "; - untracked = "?\${count} (fg:#C4A000)"; - modified = "!\${count} (fg:#C4A000)"; - deleted = "✘\${count} (fg:#C4A000)"; - conflicted = "=\${count} (fg:#C4A000)"; - renamed = "»\${count} (fg:#C4A000)"; - style = "bg:#5256c3 fg:fg:#C4A000"; - format = "[$all_status$ahead_behind]($style)"; - }; - git_metrics = { - disabled = false; - format = "([| ](bg:#5256c3)[+$added]($added_style bg:#5256c3)[ -$deleted]($deleted_style bg:#5256c3))"; - }; - c = { format = code_format; }; - elixir = { format = code_format; }; - elm = { format = code_format; }; - golang = { format = code_format; }; - gradle = { format = code_format; }; - haskell = { format = code_format; }; - java = { format = code_format; }; - julia = { format = code_format; }; - nodejs = { format = code_format; }; - nim = { format = code_format; }; - nix_shell = { symbol = ""; format = code_format; }; - rust = { format = code_format; }; - scala = { format = code_format; }; - typst = { format = code_format; }; - python = { format = code_format; }; - ocaml = { format = code_format; }; - opa = { format = code_format; }; - perl = { format = code_format; }; - zig = { format = code_format; }; - dart = { format = code_format; }; - dotnet = { format = code_format; }; - time = { - disabled = false; - time_format = "%R"; # Hour:Minute Format - style = "bg:#3465A4 fg:#${scheme.base05}"; - format = "[ $time ]($style)"; - }; - } // config.mods.starship.custom_prompt; + presets = lib.mkIf config.mods.starship.use_default_prompt + [ "pastel-powerline" ]; + settings = lib.mkIf config.mods.starship.use_default_prompt { + # derived from https://starship.rs/presets/pastel-powerline + format = + "$username$directory$git_branch$git_status$git_metrics[ ](bg:none fg:prev_bg)"; + right_format = + "$c$elixir$elm$golang$gradle$haskell$java$julia$nodejs$nim$rust$scala$python$ocaml$opa$perl$zig$dart$dotnet$nix_shell$shell$solidity[](bg:prev_bg fg:#3465A4)$time$os"; + username = { + show_always = false; + style_user = "bg:#5277C3 fg:#${scheme.base05}"; + style_root = "bg:#5277C3 fg:#${scheme.base05}"; + format = "[ $user ]($style)[](bg:#3465A4 fg:#5277C3)"; + disabled = false; + }; + os = { + symbols = { NixOS = "  "; }; + style = "bg:#3465A4 fg:#${scheme.base05}"; + disabled = false; + }; + directory = { + style = "bg:#3465A4 fg:#${scheme.base05}"; + format = "[ $path ]($style)"; + truncation_length = 3; + truncation_symbol = "…/"; + }; + git_branch = { + always_show_remote = true; + symbol = ""; + style = "bg:#5256c3 fg:#${scheme.base05}"; + format = + "[ ](bg:#5256c3 fg:prev_bg)[$symbol ($remote_name )$branch ]($style)"; + }; + git_status = { + staged = "+\${count} (fg:#C4A000)"; + ahead = "⇡\${count} (fg:#C4A000)"; + diverged = "⇕⇡\${count} (fg:#C4A000)"; + behind = "⇣\${count} (fg:#C4A000)"; + stashed = " "; + untracked = "?\${count} (fg:#C4A000)"; + modified = "!\${count} (fg:#C4A000)"; + deleted = "✘\${count} (fg:#C4A000)"; + conflicted = "=\${count} (fg:#C4A000)"; + renamed = "»\${count} (fg:#C4A000)"; + style = "bg:#5256c3 fg:fg:#C4A000"; + format = "[$all_status$ahead_behind]($style)"; + }; + git_metrics = { + disabled = false; + format = + "([| ](bg:#5256c3)[+$added]($added_style bg:#5256c3)[ -$deleted]($deleted_style bg:#5256c3))"; + }; + c = { format = code_format; }; + elixir = { format = code_format; }; + elm = { format = code_format; }; + golang = { format = code_format; }; + gradle = { format = code_format; }; + haskell = { format = code_format; }; + java = { format = code_format; }; + julia = { format = code_format; }; + nodejs = { format = code_format; }; + nim = { format = code_format; }; + nix_shell = { + symbol = ""; + format = code_format; + }; + rust = { format = code_format; }; + scala = { format = code_format; }; + typst = { format = code_format; }; + python = { format = code_format; }; + ocaml = { format = code_format; }; + opa = { format = code_format; }; + perl = { format = code_format; }; + zig = { format = code_format; }; + dart = { format = code_format; }; + dotnet = { format = code_format; }; + time = { + disabled = false; + time_format = "%R"; # Hour:Minute Format + style = "bg:#3465A4 fg:#${scheme.base05}"; + format = "[ $time ]($style)"; + }; + } // config.mods.starship.custom_prompt; }; - }); + }); } diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index e23c01c..987a912 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -36,7 +36,7 @@ ''; }; }; - config = (lib.optionalAttrs (options?stylix) { + config = (lib.optionalAttrs (options ? stylix) { stylix = { enable = true; image = ../../base/black.jpg; @@ -75,8 +75,10 @@ size = 24; }; - base16Scheme = - (if builtins.isAttrs config.mods.stylix.colorscheme then config.mods.stylix.colorscheme else "${pkgs.base16-schemes}/share/themes/${config.mods.stylix.colorscheme}.yaml"); + base16Scheme = (if builtins.isAttrs config.mods.stylix.colorscheme then + config.mods.stylix.colorscheme + else + "${pkgs.base16-schemes}/share/themes/${config.mods.stylix.colorscheme}.yaml"); }; }); } diff --git a/modules/programs/teams.nix b/modules/programs/teams.nix new file mode 100644 index 0000000..ad81ad9 --- /dev/null +++ b/modules/programs/teams.nix @@ -0,0 +1,17 @@ +{ lib, config, options, pkgs, ... }: +let callPackage = lib.callPackageWith pkgs; +in { + options.mods.teams = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = + "Enables teams via a chromium pwa (for the poor souls that have to use this for work)"; + }; + }; + config = lib.mkIf config.mods.teams.enable + (lib.optionalAttrs (options ? home.packages) { + home.packages = [ (callPackage ../../override/teams.nix { }) ]; + }); +} diff --git a/modules/programs/virtualbox.nix b/modules/programs/virtualbox.nix index ca7726f..b5d80e9 100644 --- a/modules/programs/virtualbox.nix +++ b/modules/programs/virtualbox.nix @@ -11,7 +11,8 @@ }; }; - config = lib.optionalAttrs (options?virtualisation.virtualbox.host) { - virtualisation.virtualbox.host.enable = lib.mkIf config.mods.virtualbox.enable true; + config = lib.optionalAttrs (options ? virtualisation.virtualbox.host) { + virtualisation.virtualbox.host.enable = + lib.mkIf config.mods.virtualbox.enable true; }; } diff --git a/modules/programs/xone.nix b/modules/programs/xone.nix index dadbbf7..77ce121 100644 --- a/modules/programs/xone.nix +++ b/modules/programs/xone.nix @@ -11,7 +11,6 @@ }; }; - config = lib.optionalAttrs (options?hardware) { - hardware.xone.enable = true; - }; + config = + lib.optionalAttrs (options ? hardware) { hardware.xone.enable = true; }; } diff --git a/modules/programs/yazi/default.nix b/modules/programs/yazi/default.nix new file mode 100644 index 0000000..9e68ecd --- /dev/null +++ b/modules/programs/yazi/default.nix @@ -0,0 +1,14 @@ +{ lib, config, options, ... }: { + options.mods.yazi = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables yazi"; + }; + }; + config = lib.mkIf config.mods.yazi.enable + (lib.optionalAttrs (options ? home.packages) { + programs.yazi = import ./yazi.nix; + }); +} diff --git a/modules/programs/yazi/yazi.nix b/modules/programs/yazi/yazi.nix new file mode 100644 index 0000000..51eac1f --- /dev/null +++ b/modules/programs/yazi/yazi.nix @@ -0,0 +1,1139 @@ +{ + # don't ask.... + enable = true; + settings = { + log = { enabled = false; }; + opener = { + + folder = [ + { + run = ''open - R "$@"''; + orphan = true; + display_name = "Reveal in Finder"; + } + { + run = ''$EDITOR "$@"''; + orphan = true; + } + ]; + archive = [{ + run = ''unar "$1"''; + display_name = "Extract here"; + }]; + text = [{ + run = ''$EDITOR "$@"''; + orphan = true; + }]; + image = [ + { + run = ''imv "$@"''; + orphan = true; + display_name = "Open"; + } + { + run = ''exiftool "$1"; echo "Press enter to exit"; read''; + block = true; + display_name = "Show EXIF"; + } + ]; + pdf = [{ + run = ''zathura "$@"''; + orphan = true; + display_name = "Open"; + }]; + video = [ + { + run = ''mpv "$@"''; + orphan = true; + } + { + run = ''mediainfo "$1"; echo "Press enter to exit"; read''; + block = true; + display_name = "Show media info"; + } + ]; + audio = [ + { + run = ''xdg-open "$@"''; + orphan = true; + } + { + run = ''mediainfo "$1"; echo "Press enter to exit"; read''; + block = true; + display_name = "Show media info"; + } + ]; + fallback = [ + { + run = ''xdg-open "$@"''; + orphan = true; + display_name = "Open"; + } + { + run = ''xdg-open - R "$@"''; + orphan = true; + display_name = "Reveal in Finder"; + } + ]; + }; + plugin = { + prepend_previewers = [ + { + name = "*.md"; + run = "glow"; + } + { + mime = "text/csv"; + run = "miller"; + } + ]; + }; + }; + keymap = { + manager.keymap = [ + { + on = [ "" ]; + run = "escape"; + desc = "Exit visual mode clear selected or cancel search"; + } + { + on = [ "q" ]; + run = "quit"; + desc = "Exit the process"; + } + { + on = [ "Q" ]; + run = "quit --no-cwd-file"; + desc = "Exit the process without writing cwd-file"; + } + { + on = [ "" ]; + run = "close"; + desc = "Close the current tab or quit if it is last tab"; + } + { + on = [ "" ]; + run = "suspend"; + desc = "Suspend the process"; + } + + # Navigation + { + on = [ "l" ]; + run = "arrow -1"; + desc = "Move cursor up"; + } + { + on = [ "k" ]; + run = "arrow 1"; + desc = "Move cursor down"; + } + + { + on = [ "L" ]; + run = "arrow -5"; + desc = "Move cursor up 5 lines"; + } + { + on = [ "K" ]; + run = "arrow 5"; + desc = "Move cursor down 5 lines"; + } + + { + on = [ "" ]; + run = "arrow -50%"; + desc = "Move cursor up half page"; + } + { + on = [ "" ]; + run = "arrow 50%"; + desc = "Move cursor down half page"; + } + { + on = [ "" ]; + run = "arrow -100%"; + desc = "Move cursor up one page"; + } + { + on = [ "" ]; + run = "arrow 100%"; + desc = "Move cursor down one page"; + } + + { + on = [ "j" ]; + run = "leave"; + desc = "Go back to the parent directory"; + } + { + on = [ ";" ]; + run = "enter"; + desc = "Enter the child directory"; + } + + { + on = [ "J" ]; + run = "back"; + desc = "Go back to the previous directory"; + } + { + on = [ "P" ]; + run = "forward"; + desc = "Go forward to the next directory"; + } + + { + on = [ "" ]; + run = "peek -5"; + desc = "Peek up 5 units in the preview"; + } + { + on = [ "" ]; + run = "peek 5"; + desc = "Peek down 5 units in the preview"; + } + + { + on = [ "" ]; + run = "arrow -1"; + desc = "Move cursor up"; + } + { + on = [ "" ]; + run = "arrow 1"; + desc = "Move cursor down"; + } + { + on = [ "" ]; + run = "leave"; + desc = "Go back to the parent directory"; + } + { + on = [ "" ]; + run = "enter"; + desc = "Enter the child directory"; + } + + { + on = [ "g" "g" ]; + run = "arrow -99999999"; + desc = "Move cursor to the top"; + } + { + on = [ "G" ]; + run = "arrow 99999999"; + desc = "Move cursor to the bottom"; + } + + # Selection + { + on = [ "v" ]; + run = "visual_mode"; + desc = "Enter visual mode (selection mode)"; + } + { + on = [ "V" ]; + run = "visual_mode --unset"; + desc = "Enter visual mode (unset mode)"; + } + { + on = [ "" ]; + run = "select_all --state=true"; + desc = "Select all files"; + } + { + on = [ "" ]; + run = "select_all --state=none"; + desc = "Inverse selection of all files"; + } + + # Operation + { + on = [ "o" ]; + run = "open"; + desc = "Open the selected files"; + } + { + on = [ "O" ]; + run = "open --interactive"; + desc = "Open the selected files interactively"; + } + { + on = [ "" ]; + run = "open"; + desc = "Open the selected files"; + } + { + on = [ "" ]; + run = "open --interactive"; + desc = "Open the selected files interactively"; + } # It's cool if you're using a terminal that supports CSI u + { + on = [ "y" ]; + run = "yank"; + desc = "Copy the selected files"; + } + { + on = [ "x" ]; + run = "yank --cut"; + desc = "Cut the selected files"; + } + { + on = [ "p" ]; + run = "paste"; + desc = "Paste the files"; + } + { + on = [ "P" ]; + run = "paste --force"; + desc = "Paste the files (overwrite if the destination exists)"; + } + { + on = [ "-" ]; + run = "link"; + desc = "Symlink the absolute path of files"; + } + { + on = [ "_" ]; + run = "link --relative"; + desc = "Symlink the relative path of files"; + } + { + on = [ "d" ]; + run = "remove"; + desc = "Move the files to the trash"; + } + { + on = [ "D" ]; + run = "remove --permanently"; + desc = "Permanently delete the files"; + } + { + on = [ "a" ]; + run = "create"; + desc = "Create a file or directory (ends with / for directories)"; + } + { + on = [ "r" ]; + run = "rename"; + desc = "Rename a file or directory"; + } + { + on = [ ";" ]; + run = "shell"; + desc = "Run a shell command"; + } + { + on = [ ":" ]; + run = "shell --block"; + desc = "Run a shell command (block the UI until the command finishes)"; + } + { + on = [ "." ]; + run = "hidden toggle"; + desc = "Toggle the visibility of hidden files"; + } + { + on = [ "" "f" "g>" ]; + run = "search fd"; + desc = "Search files by name using fd"; + } + { + on = [ "" "f" "G>" ]; + run = "search rg"; + desc = "Search files by content using ripgrep"; + } + { + on = [ "" ]; + run = "search none"; + desc = "Cancel the ongoing search"; + } + { + on = [ "z" ]; + run = "jump zoxide"; + desc = "Jump to a directory using zoxide"; + } + { + on = [ "Z" ]; + run = "jump fzf"; + desc = "Jump to a directory or reveal a file using fzf"; + } + + # Copy + { + on = [ "c" "c" ]; + run = "copy path"; + desc = "Copy the absolute path"; + } + { + on = [ "c" "d" ]; + run = "copy dirname"; + desc = "Copy the path of the parent directory"; + } + { + on = [ "c" "f" ]; + run = "copy filename"; + desc = "Copy the name of the file"; + } + { + on = [ "c" "n" ]; + run = "copy name_without_ext"; + desc = "Copy the name of the file without the extension"; + } + + # Find + { + on = [ "/" ]; + run = "find --smart"; + } + { + on = [ "?" ]; + run = "find --previous --smart"; + } + { + on = [ "n" ]; + run = "find_arrow"; + } + { + on = [ "N" ]; + run = "find_arrow --previous"; + } + + # Sorting + { + on = [ "," "a" ]; + run = "sort alphabetical --dir_first"; + desc = "Sort alphabetically"; + } + { + on = [ "," "A" ]; + run = "sort alphabetical --reverse --dir_first"; + desc = "Sort alphabetically (reverse)"; + } + { + on = [ "," "c" ]; + run = "sort created --dir_first"; + desc = "Sort by creation time"; + } + { + on = [ "," "C" ]; + run = "sort created --reverse --dir_first"; + desc = "Sort by creation time (reverse)"; + } + { + on = [ "," "m" ]; + run = "sort modified --dir_first"; + desc = "Sort by modified time"; + } + { + on = [ "," "M" ]; + run = "sort modified --reverse --dir_first"; + desc = "Sort by modified time (reverse)"; + } + { + on = [ "," "n" ]; + run = "sort natural --dir_first"; + desc = "Sort naturally"; + } + { + on = [ "," "N" ]; + run = "sort natural --reverse --dir_first"; + desc = "Sort naturally (reverse)"; + } + { + on = [ "," "s" ]; + run = "sort size --dir_first"; + desc = "Sort by size"; + } + { + on = [ "," "S" ]; + run = "sort size --reverse --dir_first"; + desc = "Sort by size (reverse)"; + } + + # Tabs + { + on = [ "t" ]; + run = "tab_create --current"; + desc = "Create a new tab using the current path"; + } + + { + on = [ "1" ]; + run = "tab_switch 0"; + desc = "Switch to the first tab"; + } + { + on = [ "2" ]; + run = "tab_switch 1"; + desc = "Switch to the second tab"; + } + { + on = [ "3" ]; + run = "tab_switch 2"; + desc = "Switch to the third tab"; + } + { + on = [ "4" ]; + run = "tab_switch 3"; + desc = "Switch to the fourth tab"; + } + { + on = [ "5" ]; + run = "tab_switch 4"; + desc = "Switch to the fifth tab"; + } + { + on = [ "6" ]; + run = "tab_switch 5"; + desc = "Switch to the sixth tab"; + } + { + on = [ "7" ]; + run = "tab_switch 6"; + desc = "Switch to the seventh tab"; + } + { + on = [ "8" ]; + run = "tab_switch 7"; + desc = "Switch to the eighth tab"; + } + { + on = [ "9" ]; + run = "tab_switch 8"; + desc = "Switch to the ninth tab"; + } + + { + on = [ "[" ]; + run = "tab_switch -1 --relative"; + desc = "Switch to the previous tab"; + } + { + on = [ "]" ]; + run = "tab_switch 1 --relative"; + desc = "Switch to the next tab"; + } + + { + on = [ "{" ]; + run = "tab_swap -1"; + desc = "Swap the current tab with the previous tab"; + } + { + on = [ "}" ]; + run = "tab_swap 1"; + desc = "Swap the current tab with the next tab"; + } + + # Tasks + { + on = [ "w" ]; + run = "tasks_show"; + desc = "Show the tasks manager"; + } + + # Goto + { + on = [ "g" "h" ]; + run = "cd ~"; + desc = "Go to the home directory"; + } + { + on = [ "g" "c" ]; + run = "cd ~/.config"; + desc = "Go to the config directory"; + } + { + on = [ "g" "d" ]; + run = "cd ~/Downloads"; + desc = "Go to the downloads directory"; + } + { + on = [ "g" "t" ]; + run = "cd /tmp"; + desc = "Go to the temporary directory"; + } + { + on = [ "g" "" ]; + run = "cd --interactive"; + desc = "Go to a directory interactively"; + } + + # Help + { + on = [ "~" ]; + run = "help"; + desc = "Open help"; + } + ]; + + tasks.keymap = [ + { + on = [ "" ]; + run = "close"; + desc = "Hide the task manager"; + } + { + on = [ "" ]; + run = "close"; + desc = "Hide the task manager"; + } + { + on = [ "w" ]; + run = "close"; + desc = "Hide the task manager"; + } + + { + on = [ "k" ]; + run = "arrow -1"; + desc = "Move cursor up"; + } + { + on = [ "j" ]; + run = "arrow 1"; + desc = "Move cursor down"; + } + + { + on = [ "" ]; + run = "arrow -1"; + desc = "Move cursor up"; + } + { + on = [ "" ]; + run = "arrow 1"; + desc = "Move cursor down"; + } + + { + on = [ "" ]; + run = "inspect"; + desc = "Inspect the task"; + } + { + on = [ "x" ]; + run = "cancel"; + desc = "Cancel the task"; + } + + { + on = [ "~" ]; + run = "help"; + desc = "Open help"; + } + ]; + + select.keymap = [ + { + on = [ "" ]; + run = "close"; + desc = "Cancel selection"; + } + { + on = [ "" ]; + run = "close"; + desc = "Cancel selection"; + } + { + on = [ "" ]; + run = "close --submit"; + desc = "Submit the selection"; + } + + { + on = [ "k" ]; + run = "arrow -1"; + desc = "Move cursor up"; + } + { + on = [ "j" ]; + run = "arrow 1"; + desc = "Move cursor down"; + } + + { + on = [ "K" ]; + run = "arrow -5"; + desc = "Move cursor up 5 lines"; + } + { + on = [ "J" ]; + run = "arrow 5"; + desc = "Move cursor down 5 lines"; + } + + { + on = [ "" ]; + run = "arrow -1"; + desc = "Move cursor up"; + } + { + on = [ "" ]; + run = "arrow 1"; + desc = "Move cursor down"; + } + + { + on = [ "~" ]; + run = "help"; + desc = "Open help"; + } + ]; + + input.keymap = [ + { + on = [ "" ]; + run = "close"; + desc = "Cancel input"; + } + { + on = [ "" ]; + run = "close --submit"; + desc = "Submit the input"; + } + { + on = [ "" ]; + run = "escape"; + desc = "Go back the normal mode or cancel input"; + } + + # Mode + { + on = [ "i" ]; + run = "insert"; + desc = "Enter insert mode"; + } + { + on = [ "a" ]; + run = "insert --append"; + desc = "Enter append mode"; + } + { + on = [ "v" ]; + run = "visual"; + desc = "Enter visual mode"; + } + { + on = [ "V" ]; + run = [ "move -999" "visual" "move 999" ]; + desc = "Enter visual mode and select all"; + } + + # Navigation + { + on = [ "h" ]; + run = "move -1"; + desc = "Move cursor left"; + } + { + on = [ "l" ]; + run = "move 1"; + desc = "Move cursor right"; + } + + { + on = [ "0" ]; + run = "move -999"; + desc = "Move to the BOL"; + } + { + on = [ "$" ]; + run = "move 999"; + desc = "Move to the EOL"; + } + { + on = [ "I" ]; + run = [ "move -999" "insert" ]; + desc = "Move to the BOL and enter insert mode"; + } + { + on = [ "A" ]; + run = [ "move 999" "insert --append" ]; + desc = "Move to the EOL and enter append mode"; + } + + { + on = [ "" ]; + run = "move -1"; + desc = "Move cursor left"; + } + { + on = [ "" ]; + run = "move 1"; + desc = "Move cursor right"; + } + + { + on = [ "b" ]; + run = "backward"; + desc = "Move to the beginning of the previous word"; + } + { + on = [ "w" ]; + run = "forward"; + desc = "Move to the beginning of the next word"; + } + { + on = [ "e" ]; + run = "forward --end-of-word"; + desc = "Move to the end of the next word"; + } + + # Deletion + { + on = [ "d" ]; + run = "delete --cut"; + desc = "Cut the selected characters"; + } + { + on = [ "D" ]; + run = [ "delete --cut" "move 999" ]; + desc = "Cut until the EOL"; + } + { + on = [ "c" ]; + run = "delete --cut --insert"; + desc = "Cut the selected characters and enter insert mode"; + } + { + on = [ "C" ]; + run = [ "delete --cut --insert" "move 999" ]; + desc = "Cut until the EOL and enter insert mode"; + } + { + on = [ "x" ]; + run = [ "delete --cut" "move 1 --in-operating" ]; + desc = "Cut the current character"; + } + + # Yank/Paste + { + on = [ "y" ]; + run = "yank"; + desc = "Copy the selected characters"; + } + { + on = [ "p" ]; + run = "paste"; + desc = "Paste the copied characters after the cursor"; + } + { + on = [ "P" ]; + run = "paste --before"; + desc = "Paste the copied characters before the cursor"; + } + + # Undo/Redo + { + on = [ "u" ]; + run = "undo"; + desc = "Undo the last operation"; + } + { + on = [ "" ]; + run = "redo"; + desc = "Redo the last operation"; + } + + # Help + { + on = [ "~" ]; + run = "help"; + desc = "Open help"; + } + ]; + + help.keymap = [ + { + on = [ "" ]; + run = "escape"; + desc = "Clear the filter or hide the help"; + } + { + on = [ "q" ]; + run = "close"; + desc = "Exit the process"; + } + { + on = [ "" ]; + run = "close"; + desc = "Hide the help"; + } + + # Navigation + { + on = [ "k" ]; + run = "arrow -1"; + desc = "Move cursor up"; + } + { + on = [ "j" ]; + run = "arrow 1"; + desc = "Move cursor down"; + } + + { + on = [ "K" ]; + run = "arrow -5"; + desc = "Move cursor up 5 lines"; + } + { + on = [ "J" ]; + run = "arrow 5"; + desc = "Move cursor down 5 lines"; + } + + { + on = [ "" ]; + run = "arrow -1"; + desc = "Move cursor up"; + } + { + on = [ "" ]; + run = "arrow 1"; + desc = "Move cursor down"; + } + + # Filtering + { + on = [ "/" ]; + run = "filter"; + desc = "Apply a filter for the help items"; + } + ]; + }; + # theme = { + # manager = { + # cwd = { + # fg = "#94e2d5"; + # }; + # + # # Hovered + # hovered = { + # reversed = true; + # }; + # preview_hovered = { underline = true; }; + # + # # Find + # find_keyword = { + # fg = "#f9e2af"; + # bold = true; + # italic = true; + # underline = true; + # }; + # find_position = { + # fg = "#f5c2e7"; + # bg = "reset"; + # bold = true; + # italic = true; + # }; + # + # # Marker + # marker_copied = { + # fg = "#a6e3a1"; + # bg = "#a6e3a1"; + # }; + # marker_cut = { + # fg = "#f38ba8"; + # bg = "#f38ba8"; + # }; + # marker_marked = { + # fg = "#f9e2af"; + # bg = "#f9e2af"; + # }; + # marker_selected = { + # fg = "#779EF0"; + # bg = "#89b4fa"; + # }; + # + # # Tab + # tab_active = { + # fg = "#1e1e2e"; + # bg = "#cdd6f4"; + # }; + # tab_inactive = { + # fg = "#cdd6f4"; + # bg = "#45475a"; + # }; + # tab_width = 1; + # + # # Count + # count_copied = { + # fg = "#1e1e2e"; + # bg = "#a6e3a1"; + # }; + # count_cut = { + # fg = "#1e1e2e"; + # bg = "#f38ba8"; + # }; + # count_selected = { + # fg = "#1e1e2e"; + # bg = "#89b4fa"; + # }; + # + # # Border + # border_symbol = "│"; + # border_style = { fg = "#7f849c"; }; + # + # }; + # status = { + # separator_open = ""; + # separator_close = ""; + # separator_style = { + # fg = "#45475a"; + # bg = "#45475a"; + # }; + # + # # Mode + # mode_normal = { + # fg = "#1e1e2e"; + # bg = "#89b4fa"; + # bold = true; + # }; + # mode_select = { + # fg = "#1e1e2e"; + # bg = "#a6e3a1"; + # bold = true; + # }; + # mode_unset = { + # fg = "#1e1e2e"; + # bg = "#f2cdcd"; + # bold = true; + # }; + # + # # Progress + # progress_label = { + # fg = "#ffffff"; + # bold = true; + # }; + # progress_normal = { + # fg = "#89b4fa"; + # bg = "#45475a"; + # }; + # progress_error = { + # fg = "#f38ba8"; + # bg = "#45475a"; + # }; + # + # # Permissions + # permissions_t = { fg = "#89b4fa"; }; + # permissions_r = { fg = "#f9e2af"; }; + # permissions_w = { fg = "#f38ba8"; }; + # permissions_x = { fg = "#a6e3a1"; }; + # permissions_s = { fg = "#7f849c"; }; + # }; + # + # input = { + # border = { + # fg = "#89b4fa"; + # }; + # title = { }; + # value = { }; + # selected = { reversed = true; }; + # }; + # select = { + # border = { + # fg = "#89b4fa"; + # }; + # active = { fg = "#f5c2e7"; }; + # inactive = { }; + # }; + # tasks = { + # border = { + # fg = "#89b4fa"; + # }; + # title = { }; + # hovered = { + # underline = true; + # }; + # }; + # which = { + # mask = { + # bg = "#313244"; + # }; + # cand = { fg = "#94e2d5"; }; + # rest = { fg = "#9399b2"; }; + # desc = { fg = "#f5c2e7"; }; + # separator = "  "; + # separator_style = { fg = "#585b70"; }; + # }; + # help = { + # on = { + # fg = "#f5c2e7"; + # }; + # exec = { fg = "#94e2d5"; }; + # desc = { fg = "#9399b2"; }; + # hovered = { + # bg = "#585b70"; + # bold = true; + # }; + # footer = { + # fg = "#45475a"; + # bg = "#cdd6f4"; + # }; + # }; + # filetype = { + # rules = [ + # # Images + # { + # mime = "image/*"; + # fg = "#94e2d5"; + # } + # + # # Videos + # { + # mime = "video/*"; + # fg = "#f9e2af"; + # } + # { + # mime = "audio/*"; + # fg = "#f9e2af"; + # } + # + # # Archives + # { + # mime = "application/zip"; + # fg = "#f5c2e7"; + # } + # { + # mime = "application/gzip"; + # fg = "#f5c2e7"; + # } + # { + # mime = "application/x-tar"; + # fg = "#f5c2e7"; + # } + # { + # mime = "application/x-bzip"; + # fg = "#f5c2e7"; + # } + # { + # mime = "application/x-bzip2"; + # fg = "#f5c2e7"; + # } + # { + # mime = "application/x-7z-compressed"; + # fg = "#f5c2e7"; + # } + # { + # mime = "application/x-rar"; + # fg = "#f5c2e7"; + # } + # + # # Fallback + # { + # name = "*"; + # fg = "#cdd6f4"; + # } + # { + # name = "*/"; + # fg = "#89b4fa"; + # } + # ]; + # }; + # }; +} + diff --git a/override/cambalache.nix b/override/cambalache.nix deleted file mode 100644 index 7b119fb..0000000 --- a/override/cambalache.nix +++ /dev/null @@ -1,92 +0,0 @@ -{ stdenv -, lib -, pkgs -, fetchFromGitLab -, nix-update-script -}: - -pkgs.python3.pkgs.buildPythonApplication rec { - pname = "cambalache"; - version = "0.90.1"; - - format = "other"; - - # Did not fetch submodule since it is only for tests we don't run. - src = fetchFromGitLab { - domain = "gitlab.gnome.org"; - owner = "jpu"; - repo = pname; - rev = version; - sha256 = "sha256-YuRxqrGJvhMMZApD/tQSWkUg/nZnp/xryBJSjXCXO4w="; - }; - - nativeBuildInputs = with pkgs; [ - meson - ninja - pkg-config - gobject-introspection # for setup hook - desktop-file-utils # for update-desktop-database - shared-mime-info # for update-mime-database - wrapGAppsHook - ]; - - pythonPath = with pkgs.python3.pkgs; [ - pygobject3 - lxml - ]; - - buildInputs = with pkgs; [ - glib - gtk3 - gtk4 - gtksourceview4 - gtksourceview5 - webkitgtk_4_1 - webkitgtk_6_0 - # For extra widgets support. - libadwaita - libhandy - ]; - - # Prevent double wrapping. - dontWrapGApps = true; - - postPatch = '' - patchShebangs postinstall.py - # those programs are used at runtime not build time - # https://gitlab.gnome.org/jpu/cambalache/-/blob/0.12.1/meson.build#L79-80 - substituteInPlace ./meson.build \ - --replace "find_program('broadwayd', required: true)" "" \ - --replace "find_program('gtk4-broadwayd', required: true)" "" - ''; - - preFixup = '' - # Let python wrapper use GNOME flags. - makeWrapperArgs+=( - # For broadway daemons - --prefix PATH : "${lib.makeBinPath [ pkgs.gtk3 pkgs.gtk4 ]}" - "''${gappsWrapperArgs[@]}" - ) - ''; - - postFixup = '' - # Wrap a helper script in an unusual location. - wrapPythonProgramsIn "$out/${pkgs.python3.sitePackages}/cambalache/priv/merengue" "$out $pythonPath" - ''; - - passthru = { - updateScript = nix-update-script { }; - }; - - meta = with lib; { - homepage = "https://gitlab.gnome.org/jpu/cambalache"; - description = "RAD tool for GTK 4 and 3 with data model first philosophy"; - mainProgram = "cambalache"; - maintainers = teams.gnome.members; - license = with licenses; [ - lgpl21Only # Cambalache - gpl2Only # tools - ]; - platforms = platforms.unix; - }; -} diff --git a/override/teams.nix b/override/teams.nix new file mode 100644 index 0000000..eff69a1 --- /dev/null +++ b/override/teams.nix @@ -0,0 +1,28 @@ +{ stdenv, lib, copyDesktopItems, makeDesktopItem, chromium, ... }: +stdenv.mkDerivation (final: { + pname = "teams-pwa"; + name = final.pname; + nativeBuildInputs = [ copyDesktopItems ]; + dontUnpack = true; + + desktopItems = [ + (makeDesktopItem { + name = final.pname; + icon = final.pname; + exec = "${chromium}/bin/${ + chromium.meta.mainProgram or chromium.pname + } --app=https://teams.microsoft.com"; + desktopName = "Microsoft Teams PWA"; + genericName = "Progressive Web App for Microsoft Teams"; + categories = [ "Network" ]; + mimeTypes = [ "x-scheme-handler/msteams" ]; + }) + ]; + + meta = with lib; { + description = "Microsoft Teams PWA"; + homepage = "https://teams.microsoft.com"; + maintainers = with maintainers; [ ners ]; + platforms = chromium.meta.platforms; + }; +}) diff --git a/programs/common.nix b/programs/common.nix index 07c28e4..ecedf27 100644 --- a/programs/common.nix +++ b/programs/common.nix @@ -1,8 +1,6 @@ -{ config, ... }: -let - username = config.conf.username; -in -{ +{ config, lib, options, ... }: +let username = config.conf.username; +in { manual = { html.enable = false; json.enable = false; @@ -12,48 +10,31 @@ in fonts.fontconfig.enable = true; nixpkgs.config.allowUnfree = true; - home.username = username; - home.homeDirectory = "/home/${username}"; - home.stateVersion = "24.05"; + home = { + username = username; + homeDirectory = "/home/${username}"; + stateVersion = "24.05"; - home.sessionPath = [ - "$HOME/.cargo/bin" - ]; + sessionPath = [ "$HOME/.cargo/bin" ]; - home.sessionVariables = { - GOROOT = "$HOME/.go"; + sessionVariables = { GOROOT = "$HOME/.go"; }; + + keyboard = null; + + file.".local/share/flatpak/overrides/global".text = '' + [Context] + filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0 + ''; }; - home.keyboard = null; - - home.file.".local/share/flatpak/overrides/global".text = '' - [Context] - filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0 - ''; - programs.nix-index = { enable = true; enableFishIntegration = true; }; nix = { - extraOptions = '' + extraOptions = lib.mkIf (options ? config.sops.secrets.access.path) '' !include ${config.sops.secrets.access.path} ''; }; - - sops = { - gnupg = { - home = "~/.gnupg"; - sshKeyPaths = [ ]; - }; - defaultSopsFile = ../secrets/secrets.yaml; - secrets.hub = { }; - secrets.lab = { }; - secrets.${username} = { }; - secrets.nextcloud = { }; - secrets.access = { }; - }; - - systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ]; } diff --git a/programs/default.nix b/programs/default.nix index fe75e1f..f54dc0d 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -15,31 +15,28 @@ let inputs.sops-nix.homeManagerModules.sops inputs.dashvim.homeManagerModules.dashvim ]; -in -{ - xdg.portal.config.common.default = "*"; - xdg.portal = { - enable = true; - extraPortals = [ - pkgs.xdg-desktop-portal-gtk - ]; - }; - home-manager.useGlobalPkgs = true; - # home-manager.backupFileExtension = "backup"; - home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = { - inherit inputs; +in { + xdg = { + portal.config.common.default = "*"; + portal = { + enable = true; + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + }; }; + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = { inherit inputs; }; - home-manager.users.${config.conf.username} = { - imports = [ - ./common.nix - ./xdg.nix - ./oxi/default.nix - ./themes/default.nix - ./individual_configs/default.nix - ./sync.nix - ] ++ base_imports - ++ lib.optional (builtins.pathExists mod) mod; + users.${config.conf.username} = { + imports = [ + ./common.nix + ./xdg.nix + ./oxi/default.nix + ./themes/default.nix + ./individual_configs/default.nix + ./sync.nix + ] ++ base_imports ++ lib.optional (builtins.pathExists mod) mod; + }; }; } diff --git a/programs/individual_configs/default.nix b/programs/individual_configs/default.nix index 74b5582..28f20fe 100644 --- a/programs/individual_configs/default.nix +++ b/programs/individual_configs/default.nix @@ -1,9 +1 @@ -{ - imports = [ - ./kitty.nix - ./yazi.nix - ./fish.nix - ./direnv.nix - ./neovide.nix - ]; -} +{ imports = [ ./kitty.nix ./fish.nix ./direnv.nix ./neovide.nix ]; } diff --git a/programs/individual_configs/direnv.nix b/programs/individual_configs/direnv.nix index 615b570..25f8586 100644 --- a/programs/individual_configs/direnv.nix +++ b/programs/individual_configs/direnv.nix @@ -1,7 +1,6 @@ { pkgs, ... }: { - xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" { - global = { - warn_timeout = "-1s"; + xdg.configFile."direnv/direnv.toml".source = + (pkgs.formats.toml { }).generate "direnv" { + global = { warn_timeout = "-1s"; }; }; - }; } diff --git a/programs/individual_configs/fish.nix b/programs/individual_configs/fish.nix index 7f553de..8f3fd64 100644 --- a/programs/individual_configs/fish.nix +++ b/programs/individual_configs/fish.nix @@ -1,140 +1,139 @@ { config, ... }: { xdg.configFile."fish/config.fish" = { - text = - '' - if status is-interactive - # Commands to run in interactive sessions can go here - end + text = '' + if status is-interactive + # Commands to run in interactive sessions can go here + end - # ============================================================================= - # - # Utility functions for zoxide. - # + # ============================================================================= + # + # Utility functions for zoxide. + # - export NIX_PATH="$NIX_PATH:$HOME/gits/dotFiles/." + export NIX_PATH="$NIX_PATH:$HOME/gits/dotFiles/." - set EDITOR "neovide --no-fork" + set EDITOR "neovide --no-fork" - alias rebuild='sudo nixos-rebuild switch --flake /home/${config.conf.username}/gits/dotFiles/.' - abbr --add ls 'lsd' - abbr --add :q 'exit' - abbr --add gh 'git push origin' - abbr --add gl 'git pull origin' - abbr --add gm 'git commit -m' - abbr --add ga "git add -A" - abbr --add g+ 'bear -- g++ -Wextra -Werror -std=c++20' - abbr --add s "kitty +kitten ssh" - abbr --add zl 'z "" ' - abbr --add nv 'neovide' - abbr --add cr 'cargo run' - abbr --add grep 'rg' - abbr --add cat 'bat' - abbr --add find 'fd' - abbr --add rm 'rip' + alias rebuild='sudo nixos-rebuild switch --flake /home/${config.conf.username}/gits/dotFiles/.' + abbr --add ls 'lsd' + abbr --add :q 'exit' + abbr --add gh 'git push origin' + abbr --add gl 'git pull origin' + abbr --add gm 'git commit -m' + abbr --add ga "git add -A" + abbr --add g+ 'bear -- g++ -Wextra -Werror -std=c++20' + abbr --add s "kitty +kitten ssh" + abbr --add zl 'z "" ' + abbr --add nv 'neovide' + abbr --add cr 'cargo run' + abbr --add grep 'rg' + abbr --add cat 'bat' + abbr --add find 'fd' + abbr --add rm 'rip' - set fish_greeting - # pwd based on the value of _ZO_RESOLVE_SYMLINKS. - function __zoxide_pwd - builtin pwd -L - end + set fish_greeting + # pwd based on the value of _ZO_RESOLVE_SYMLINKS. + function __zoxide_pwd + builtin pwd -L + end - # A copy of fish's internal cd function. This makes it possible to use - # `alias cd=z` without causing an infinite loop. - if ! builtin functions --query __zoxide_cd_internal - if builtin functions --query cd - builtin functions --copy cd __zoxide_cd_internal - else - alias __zoxide_cd_internal='builtin cd' - end - end + # A copy of fish's internal cd function. This makes it possible to use + # `alias cd=z` without causing an infinite loop. + if ! builtin functions --query __zoxide_cd_internal + if builtin functions --query cd + builtin functions --copy cd __zoxide_cd_internal + else + alias __zoxide_cd_internal='builtin cd' + end + end - # cd + custom logic based on the value of _ZO_ECHO. - function __zoxide_cd - __zoxide_cd_internal $argv - end + # cd + custom logic based on the value of _ZO_ECHO. + function __zoxide_cd + __zoxide_cd_internal $argv + end - # ============================================================================= - # - # Hook configuration for zoxide. - # + # ============================================================================= + # + # Hook configuration for zoxide. + # - # Initialize hook to add new entries to the database. - function __zoxide_hook --on-variable PWD - test -z "$fish_private_mode" - and command zoxide add -- (__zoxide_pwd) - end + # Initialize hook to add new entries to the database. + function __zoxide_hook --on-variable PWD + test -z "$fish_private_mode" + and command zoxide add -- (__zoxide_pwd) + end - # ============================================================================= - # - # When using zoxide with --no-cmd, alias these internal functions as desired. - # + # ============================================================================= + # + # When using zoxide with --no-cmd, alias these internal functions as desired. + # - if test -z $__zoxide_z_prefix - set __zoxide_z_prefix 'z!' - end - set __zoxide_z_prefix_regex ^(string escape --style=regex $__zoxide_z_prefix) + if test -z $__zoxide_z_prefix + set __zoxide_z_prefix 'z!' + end + set __zoxide_z_prefix_regex ^(string escape --style=regex $__zoxide_z_prefix) - # Jump to a directory using only keywords. - function __zoxide_z - set -l argc (count $argv) - if test $argc -eq 0 - __zoxide_cd $HOME - else if test "$argv" = - - __zoxide_cd - - else if test $argc -eq 1 -a -d $argv[1] - __zoxide_cd $argv[1] - else if set -l result (string replace --regex $__zoxide_z_prefix_regex \'\' $argv[-1]); and test -n $result - __zoxide_cd $result - else - set -l result (command zoxide query --exclude (__zoxide_pwd) -- $argv) - and __zoxide_cd $result - end - end + # Jump to a directory using only keywords. + function __zoxide_z + set -l argc (count $argv) + if test $argc -eq 0 + __zoxide_cd $HOME + else if test "$argv" = - + __zoxide_cd - + else if test $argc -eq 1 -a -d $argv[1] + __zoxide_cd $argv[1] + else if set -l result (string replace --regex $__zoxide_z_prefix_regex \'\' $argv[-1]); and test -n $result + __zoxide_cd $result + else + set -l result (command zoxide query --exclude (__zoxide_pwd) -- $argv) + and __zoxide_cd $result + end + end - # Completions. - function __zoxide_z_complete - set -l tokens (commandline --current-process --tokenize) - set -l curr_tokens (commandline --cut-at-cursor --current-process --tokenize) + # Completions. + function __zoxide_z_complete + set -l tokens (commandline --current-process --tokenize) + set -l curr_tokens (commandline --cut-at-cursor --current-process --tokenize) - if test (count $tokens) -le 2 -a (count $curr_tokens) -eq 1 - # If there are < 2 arguments, use `cd` completions. - complete --do-complete "\'\' "(commandline --cut-at-cursor --current-token) | string match --regex '.*/$' - else if test (count $tokens) -eq (count $curr_tokens); and ! string match --quiet --regex $__zoxide_z_prefix_regex. $tokens[-1] - # If the last argument is empty and the one before doesn't start with - # $__zoxide_z_prefix, use interactive selection. - set -l query $tokens[2..-1] - set -l result (zoxide query --exclude (__zoxide_pwd) --interactive -- $query) - and echo $__zoxide_z_prefix$result - commandline --function repaint - end - end - complete --command __zoxide_z --no-files --arguments '(__zoxide_z_complete)' + if test (count $tokens) -le 2 -a (count $curr_tokens) -eq 1 + # If there are < 2 arguments, use `cd` completions. + complete --do-complete "\'\' "(commandline --cut-at-cursor --current-token) | string match --regex '.*/$' + else if test (count $tokens) -eq (count $curr_tokens); and ! string match --quiet --regex $__zoxide_z_prefix_regex. $tokens[-1] + # If the last argument is empty and the one before doesn't start with + # $__zoxide_z_prefix, use interactive selection. + set -l query $tokens[2..-1] + set -l result (zoxide query --exclude (__zoxide_pwd) --interactive -- $query) + and echo $__zoxide_z_prefix$result + commandline --function repaint + end + end + complete --command __zoxide_z --no-files --arguments '(__zoxide_z_complete)' - # Jump to a directory using interactive search. - function __zoxide_zi - set -l result (command zoxide query --interactive -- $argv) - and __zoxide_cd $result - end + # Jump to a directory using interactive search. + function __zoxide_zi + set -l result (command zoxide query --interactive -- $argv) + and __zoxide_cd $result + end - # ============================================================================= - # - # Commands for zoxide. Disable these using --no-cmd. - # + # ============================================================================= + # + # Commands for zoxide. Disable these using --no-cmd. + # - abbr --erase z &>/dev/null - alias z=__zoxide_z + abbr --erase z &>/dev/null + alias z=__zoxide_z - abbr --erase zi &>/dev/null - alias zi=__zoxide_zi + abbr --erase zi &>/dev/null + alias zi=__zoxide_zi - # ============================================================================= - # - # To initialize zoxide, add this to your configuration (usually - # ~/.config/fish/config.fish): - # - # zoxide init fish | source + # ============================================================================= + # + # To initialize zoxide, add this to your configuration (usually + # ~/.config/fish/config.fish): + # + # zoxide init fish | source - direnv hook fish | source - ''; + direnv hook fish | source + ''; }; } diff --git a/programs/individual_configs/kitty.nix b/programs/individual_configs/kitty.nix index 4bdaf35..b22bbef 100644 --- a/programs/individual_configs/kitty.nix +++ b/programs/individual_configs/kitty.nix @@ -20,13 +20,14 @@ let "e" = "d"; "f" = "e"; }; - base = "#" + lib.strings.concatStrings ((lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00)) ++ [ hexTable."${(lib.lists.last (lib.strings.stringToCharacters scheme.base00))}" ]); -in -{ + base = "#" + lib.strings.concatStrings + ((lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00)) ++ [ + hexTable."${(lib.lists.last + (lib.strings.stringToCharacters scheme.base00))}" + ]); +in { - stylix.targets.kitty = { - enable = false; - }; + stylix.targets.kitty = { enable = false; }; programs.kitty = { enable = true; diff --git a/programs/individual_configs/ncspot.nix b/programs/individual_configs/ncspot.nix index 931535b..ccafe45 100644 --- a/programs/individual_configs/ncspot.nix +++ b/programs/individual_configs/ncspot.nix @@ -1,38 +1,39 @@ { pkgs, ... }: { - xdg.configFile."ncspot/config.toml".source = (pkgs.formats.toml { }).generate "ncspot" { - notify = true; - shuffle = true; - cover_max_scale = 2; - initial_screen = "library"; - library_tabs = [ "playlists" ]; - theme = { - background = "#1a1b26"; - primary = "#9aa5ce"; - secondary = "#414868"; - title = "#9ece6a"; - playing = "#7aa2f7"; - playing_selected = "#bb9af7"; - playing_bg = "#24283b"; - highlight = "#c0caf5"; - highlight_bg = "#24283b"; - error = "#414868"; - error_bg = "#f7768e"; - statusbar = "#ff9e64"; - statusbar_progress = "#7aa2f7"; - statusbar_bg = "#1a1b26"; - cmdline = "#c0caf5"; - cmdline_bg = "#24283b"; - search_match = "#f7768e"; + xdg.configFile."ncspot/config.toml".source = + (pkgs.formats.toml { }).generate "ncspot" { + notify = true; + shuffle = true; + cover_max_scale = 2; + initial_screen = "library"; + library_tabs = [ "playlists" ]; + theme = { + background = "#1a1b26"; + primary = "#9aa5ce"; + secondary = "#414868"; + title = "#9ece6a"; + playing = "#7aa2f7"; + playing_selected = "#bb9af7"; + playing_bg = "#24283b"; + highlight = "#c0caf5"; + highlight_bg = "#24283b"; + error = "#414868"; + error_bg = "#f7768e"; + statusbar = "#ff9e64"; + statusbar_progress = "#7aa2f7"; + statusbar_bg = "#1a1b26"; + cmdline = "#c0caf5"; + cmdline_bg = "#24283b"; + search_match = "#f7768e"; + }; + keybindings = { + "j" = "move left 1"; + "k" = "move down 1"; + "l" = "move up 1"; + ";" = "move right 1"; + }; + notification_format = { + title = "%artists"; + body = "%title"; + }; }; - keybindings = { - "j" = "move left 1"; - "k" = "move down 1"; - "l" = "move up 1"; - ";" = "move right 1"; - }; - notification_format = { - title = "%artists"; - body = "%title"; - }; - }; } diff --git a/programs/individual_configs/neovide.nix b/programs/individual_configs/neovide.nix index c9125e7..729dfbf 100644 --- a/programs/individual_configs/neovide.nix +++ b/programs/individual_configs/neovide.nix @@ -1,3 +1,4 @@ { pkgs, ... }: { - xdg.configFile."neovide/config.toml".source = (pkgs.formats.toml { }).generate "neovide" { }; + xdg.configFile."neovide/config.toml".source = + (pkgs.formats.toml { }).generate "neovide" { }; } diff --git a/programs/individual_configs/yazi.nix b/programs/individual_configs/yazi.nix deleted file mode 100644 index b04a7a7..0000000 --- a/programs/individual_configs/yazi.nix +++ /dev/null @@ -1,1494 +0,0 @@ -{ - # don't ask.... - programs.yazi = - { - enable = true; - settings = { - log = { - enabled = false; - }; - opener = { - - folder = [ - { - run = "open - R \"$@\""; - orphan = true; - display_name = "Reveal in Finder"; - } - { - run = "$EDITOR \"$@\""; - orphan = true; - } - ]; - archive = [ - { - run = "unar \"$1\""; - display_name = "Extract here"; - } - ]; - text = [ - { - run = "$EDITOR \"$@\""; - orphan = true; - } - ]; - image = [ - { - run = "imv \"$@\""; - orphan = true; - display_name = "Open"; - } - { - run = "exiftool \"$1\"; echo \"Press enter to exit\"; read"; - block = true; - display_name = "Show EXIF"; - } - ]; - pdf = [{ - run = "zathura \"$@\""; - orphan = true; - display_name = "Open"; - }]; - video = [ - { - run = "mpv \"$@\""; - orphan = true; - } - { - run = "mediainfo \"$1\"; echo \"Press enter to exit\"; read"; - block = true; - display_name = "Show media info"; - } - ]; - audio = [ - { - run = "xdg-open \"$@\""; - orphan = true; - } - { run = "mediainfo \"$1\"; echo \"Press enter to exit\"; read"; block = true; display_name = "Show media info"; } - ]; - fallback = [ - { - run = "xdg-open \"$@\""; - orphan = true; - display_name = "Open"; - } - { - run = "xdg-open - R \"$@\""; - orphan = true; - display_name = "Reveal in Finder"; - } - ]; - }; - plugin = { - prepend_previewers = [ - { - name = "*.md"; - run = "glow"; - } - { mime = "text/csv"; run = "miller"; } - ]; - }; - }; - keymap = - { - manager.keymap = [ - { - on = [ - "" - ]; - run = "escape"; - desc = "Exit visual mode clear selected or cancel search"; - } - { - on = [ - "q" - ]; - run = "quit"; - desc = "Exit the process"; - } - { - on = [ - "Q" - ]; - run = "quit --no-cwd-file"; - desc = "Exit the process without writing cwd-file"; - } - { - on = [ - "" - ]; - run = "close"; - desc = "Close the current tab or quit if it is last tab"; - } - { - on = [ - "" - ]; - run = "suspend"; - desc = "Suspend the process"; - } - - # Navigation - { - on = [ - "l" - ]; - run = "arrow -1"; - desc = "Move cursor up"; - } - { - on = [ - "k" - ]; - run = "arrow 1"; - desc = "Move cursor down"; - } - - { - on = [ - "L" - ]; - run = "arrow -5"; - desc = "Move cursor up 5 lines"; - } - { - on = [ - "K" - ]; - run = "arrow 5"; - desc = "Move cursor down 5 lines"; - } - - { - on = [ - "" - ]; - run = "arrow -50%"; - desc = "Move cursor up half page"; - } - { - on = [ - "" - ]; - run = "arrow 50%"; - desc = "Move cursor down half page"; - } - { - on = [ - "" - ]; - run = "arrow -100%"; - desc = "Move cursor up one page"; - } - { - on = [ - "" - ]; - run = "arrow 100%"; - desc = "Move cursor down one page"; - } - - { - on = [ - "j" - ]; - run = "leave"; - desc = "Go back to the parent directory"; - } - { - on = [ - ";" - ]; - run = "enter"; - desc = "Enter the child directory"; - } - - { - on = [ - "J" - ]; - run = "back"; - desc = "Go back to the previous directory"; - } - { - on = [ - "P" - ]; - run = "forward"; - desc = "Go forward to the next directory"; - } - - { - on = [ - "" - ]; - run = "peek -5"; - desc = "Peek up 5 units in the preview"; - } - { - on = [ - "" - ]; - run = "peek 5"; - desc = "Peek down 5 units in the preview"; - } - - { - on = [ - "" - ]; - run = "arrow -1"; - desc = "Move cursor up"; - } - { - on = [ - "" - ]; - run = "arrow 1"; - desc = "Move cursor down"; - } - { - on = [ - "" - ]; - run = "leave"; - desc = "Go back to the parent directory"; - } - { - on = [ - "" - ]; - run = "enter"; - desc = "Enter the child directory"; - } - - { - on = [ - "g" - "g" - ]; - run = "arrow -99999999"; - desc = "Move cursor to the top"; - } - { - on = [ - "G" - ]; - run = "arrow 99999999"; - desc = "Move cursor to the bottom"; - } - - # Selection - { - on = [ - "v" - ]; - run = "visual_mode"; - desc = "Enter visual mode (selection mode)"; - } - { - on = [ - "V" - ]; - run = "visual_mode --unset"; - desc = "Enter visual mode (unset mode)"; - } - { - on = [ - "" - ]; - run = "select_all --state=true"; - desc = "Select all files"; - } - { - on = [ - "" - ]; - run = "select_all --state=none"; - desc = "Inverse selection of all files"; - } - - # Operation - { - on = [ - "o" - ]; - run = "open"; - desc = "Open the selected files"; - } - { - on = [ - "O" - ]; - run = "open --interactive"; - desc = "Open the selected files interactively"; - } - { - on = [ - "" - ]; - run = "open"; - desc = "Open the selected files"; - } - { - on = [ - "" - ]; - run = "open --interactive"; - desc = "Open the selected files interactively"; - } # It's cool if you're using a terminal that supports CSI u - { - on = [ - "y" - ]; - run = "yank"; - desc = "Copy the selected files"; - } - { - on = [ - "x" - ]; - run = "yank --cut"; - desc = "Cut the selected files"; - } - { - on = [ - "p" - ]; - run = "paste"; - desc = "Paste the files"; - } - { - on = [ - "P" - ]; - run = "paste --force"; - desc = "Paste the files (overwrite if the destination exists)"; - } - { - on = [ - "-" - ]; - run = "link"; - desc = "Symlink the absolute path of files"; - } - { - on = [ - "_" - ]; - run = "link --relative"; - desc = "Symlink the relative path of files"; - } - { - on = [ - "d" - ]; - run = "remove"; - desc = "Move the files to the trash"; - } - { - on = [ - "D" - ]; - run = "remove --permanently"; - desc = "Permanently delete the files"; - } - { - on = [ - "a" - ]; - run = "create"; - desc = "Create a file or directory (ends with / for directories)"; - } - { - on = [ - "r" - ]; - run = "rename"; - desc = "Rename a file or directory"; - } - { - on = [ - ";" - ]; - run = "shell"; - desc = "Run a shell command"; - } - { - on = [ - ":" - ]; - run = "shell --block"; - desc = "Run a shell command (block the UI until the command finishes)"; - } - { - on = [ - "." - ]; - run = "hidden toggle"; - desc = "Toggle the visibility of hidden files"; - } - { - on = [ - "" - "f" - "g>" - ]; - run = "search fd"; - desc = "Search files by name using fd"; - } - { - on = [ - "" - "f" - "G>" - ]; - run = "search rg"; - desc = "Search files by content using ripgrep"; - } - { - on = [ - "" - ]; - run = "search none"; - desc = "Cancel the ongoing search"; - } - { - on = [ - "z" - ]; - run = "jump zoxide"; - desc = "Jump to a directory using zoxide"; - } - { - on = [ - "Z" - ]; - run = "jump fzf"; - desc = "Jump to a directory or reveal a file using fzf"; - } - - # Copy - { - on = [ - "c" - "c" - ]; - run = "copy path"; - desc = "Copy the absolute path"; - } - { - on = [ - "c" - "d" - ]; - run = "copy dirname"; - desc = "Copy the path of the parent directory"; - } - { - on = [ - "c" - "f" - ]; - run = "copy filename"; - desc = "Copy the name of the file"; - } - { - on = [ - "c" - "n" - ]; - run = "copy name_without_ext"; - desc = "Copy the name of the file without the extension"; - } - - # Find - { - on = [ - "/" - ]; - run = "find --smart"; - } - { - on = [ - "?" - ]; - run = "find --previous --smart"; - } - { - on = [ - "n" - ]; - run = "find_arrow"; - } - { - on = [ - "N" - ]; - run = "find_arrow --previous"; - } - - # Sorting - { - on = [ - "," - "a" - ]; - run = "sort alphabetical --dir_first"; - desc = "Sort alphabetically"; - } - { - on = [ - "," - "A" - ]; - run = "sort alphabetical --reverse --dir_first"; - desc = "Sort alphabetically (reverse)"; - } - { - on = [ - "," - "c" - ]; - run = "sort created --dir_first"; - desc = "Sort by creation time"; - } - { - on = [ - "," - "C" - ]; - run = "sort created --reverse --dir_first"; - desc = "Sort by creation time (reverse)"; - } - { - on = [ - "," - "m" - ]; - run = "sort modified --dir_first"; - desc = "Sort by modified time"; - } - { - on = [ - "," - "M" - ]; - run = "sort modified --reverse --dir_first"; - desc = "Sort by modified time (reverse)"; - } - { - on = [ - "," - "n" - ]; - run = "sort natural --dir_first"; - desc = "Sort naturally"; - } - { - on = [ - "," - "N" - ]; - run = "sort natural --reverse --dir_first"; - desc = "Sort naturally (reverse)"; - } - { - on = [ - "," - "s" - ]; - run = "sort size --dir_first"; - desc = "Sort by size"; - } - { - on = [ - "," - "S" - ]; - run = "sort size --reverse --dir_first"; - desc = "Sort by size (reverse)"; - } - - # Tabs - { - on = [ - "t" - ]; - run = "tab_create --current"; - desc = "Create a new tab using the current path"; - } - - { - on = [ - "1" - ]; - run = "tab_switch 0"; - desc = "Switch to the first tab"; - } - { - on = [ - "2" - ]; - run = "tab_switch 1"; - desc = "Switch to the second tab"; - } - { - on = [ - "3" - ]; - run = "tab_switch 2"; - desc = "Switch to the third tab"; - } - { - on = [ - "4" - ]; - run = "tab_switch 3"; - desc = "Switch to the fourth tab"; - } - { - on = [ - "5" - ]; - run = "tab_switch 4"; - desc = "Switch to the fifth tab"; - } - { - on = [ - "6" - ]; - run = "tab_switch 5"; - desc = "Switch to the sixth tab"; - } - { - on = [ - "7" - ]; - run = "tab_switch 6"; - desc = "Switch to the seventh tab"; - } - { - on = [ - "8" - ]; - run = "tab_switch 7"; - desc = "Switch to the eighth tab"; - } - { - on = [ - "9" - ]; - run = "tab_switch 8"; - desc = "Switch to the ninth tab"; - } - - { - on = [ - "[" - ]; - run = "tab_switch -1 --relative"; - desc = "Switch to the previous tab"; - } - { - on = [ - "]" - ]; - run = "tab_switch 1 --relative"; - desc = "Switch to the next tab"; - } - - { - on = [ - "{" - ]; - run = "tab_swap -1"; - desc = "Swap the current tab with the previous tab"; - } - { - on = [ - "}" - ]; - run = "tab_swap 1"; - desc = "Swap the current tab with the next tab"; - } - - # Tasks - { - on = [ - "w" - ]; - run = "tasks_show"; - desc = "Show the tasks manager"; - } - - # Goto - { - on = [ - "g" - "h" - ]; - run = "cd ~"; - desc = "Go to the home directory"; - } - { - on = [ - "g" - "c" - ]; - run = "cd ~/.config"; - desc = "Go to the config directory"; - } - { - on = [ - "g" - "d" - ]; - run = "cd ~/Downloads"; - desc = "Go to the downloads directory"; - } - { - on = [ - "g" - "t" - ]; - run = "cd /tmp"; - desc = "Go to the temporary directory"; - } - { - on = [ - "g" - "" - ]; - run = "cd --interactive"; - desc = "Go to a directory interactively"; - } - - # Help - { - on = [ - "~" - ]; - run = "help"; - desc = "Open help"; - } - ]; - - tasks.keymap = [ - { - on = [ - "" - ]; - run = "close"; - desc = "Hide the task manager"; - } - { - on = [ - "" - ]; - run = "close"; - desc = "Hide the task manager"; - } - { - on = [ - "w" - ]; - run = "close"; - desc = "Hide the task manager"; - } - - { - on = [ - "k" - ]; - run = "arrow -1"; - desc = "Move cursor up"; - } - { - on = [ - "j" - ]; - run = "arrow 1"; - desc = "Move cursor down"; - } - - { - on = [ - "" - ]; - run = "arrow -1"; - desc = "Move cursor up"; - } - { - on = [ - "" - ]; - run = "arrow 1"; - desc = "Move cursor down"; - } - - { - on = [ - "" - ]; - run = "inspect"; - desc = "Inspect the task"; - } - { - on = [ - "x" - ]; - run = "cancel"; - desc = "Cancel the task"; - } - - { - on = [ - "~" - ]; - run = "help"; - desc = "Open help"; - } - ]; - - - select.keymap = [ - { - on = [ - "" - ]; - run = "close"; - desc = "Cancel selection"; - } - { - on = [ - "" - ]; - run = "close"; - desc = "Cancel selection"; - } - { - on = [ - "" - ]; - run = "close --submit"; - desc = "Submit the selection"; - } - - { - on = [ - "k" - ]; - run = "arrow -1"; - desc = "Move cursor up"; - } - { - on = [ - "j" - ]; - run = "arrow 1"; - desc = "Move cursor down"; - } - - { - on = [ - "K" - ]; - run = "arrow -5"; - desc = "Move cursor up 5 lines"; - } - { - on = [ - "J" - ]; - run = "arrow 5"; - desc = "Move cursor down 5 lines"; - } - - { - on = [ - "" - ]; - run = "arrow -1"; - desc = "Move cursor up"; - } - { - on = [ - "" - ]; - run = "arrow 1"; - desc = "Move cursor down"; - } - - { - on = [ - "~" - ]; - run = "help"; - desc = "Open help"; - } - ]; - - - input.keymap = [ - { - on = [ - "" - ]; - run = "close"; - desc = "Cancel input"; - } - { - on = [ - "" - ]; - run = "close --submit"; - desc = "Submit the input"; - } - { - on = [ - "" - ]; - run = "escape"; - desc = "Go back the normal mode or cancel input"; - } - - # Mode - { - on = [ - "i" - ]; - run = "insert"; - desc = "Enter insert mode"; - } - { - on = [ - "a" - ]; - run = "insert --append"; - desc = "Enter append mode"; - } - { - on = [ - "v" - ]; - run = "visual"; - desc = "Enter visual mode"; - } - { - on = [ - "V" - ]; - run = [ - "move -999" - "visual" - "move 999" - ]; - desc = "Enter visual mode and select all"; - } - - # Navigation - { - on = [ - "h" - ]; - run = "move -1"; - desc = "Move cursor left"; - } - { - on = [ - "l" - ]; - run = "move 1"; - desc = "Move cursor right"; - } - - { - on = [ - "0" - ]; - run = "move -999"; - desc = "Move to the BOL"; - } - { - on = [ - "$" - ]; - run = "move 999"; - desc = "Move to the EOL"; - } - { - on = [ - "I" - ]; - run = [ - "move -999" - "insert" - ]; - desc = "Move to the BOL and enter insert mode"; - } - { - on = [ - "A" - ]; - run = [ - "move 999" - "insert --append" - ]; - desc = "Move to the EOL and enter append mode"; - } - - { - on = [ - "" - ]; - run = "move -1"; - desc = "Move cursor left"; - } - { - on = [ - "" - ]; - run = "move 1"; - desc = "Move cursor right"; - } - - { - on = [ - "b" - ]; - run = "backward"; - desc = "Move to the beginning of the previous word"; - } - { - on = [ - "w" - ]; - run = "forward"; - desc = "Move to the beginning of the next word"; - } - { - on = [ - "e" - ]; - run = "forward --end-of-word"; - desc = "Move to the end of the next word"; - } - - # Deletion - { - on = [ - "d" - ]; - run = "delete --cut"; - desc = "Cut the selected characters"; - } - { - on = [ - "D" - ]; - run = [ - "delete --cut" - "move 999" - ]; - desc = "Cut until the EOL"; - } - { - on = [ - "c" - ]; - run = "delete --cut --insert"; - desc = "Cut the selected characters and enter insert mode"; - } - { - on = [ - "C" - ]; - run = [ - "delete --cut --insert" - "move 999" - ]; - desc = "Cut until the EOL and enter insert mode"; - } - { - on = [ - "x" - ]; - run = [ - "delete --cut" - "move 1 --in-operating" - ]; - desc = "Cut the current character"; - } - - # Yank/Paste - { - on = [ - "y" - ]; - run = "yank"; - desc = "Copy the selected characters"; - } - { - on = [ - "p" - ]; - run = "paste"; - desc = "Paste the copied characters after the cursor"; - } - { - on = [ - "P" - ]; - run = "paste --before"; - desc = "Paste the copied characters before the cursor"; - } - - # Undo/Redo - { - on = [ - "u" - ]; - run = "undo"; - desc = "Undo the last operation"; - } - { - on = [ - "" - ]; - run = "redo"; - desc = "Redo the last operation"; - } - - # Help - { - on = [ - "~" - ]; - run = "help"; - desc = "Open help"; - } - ]; - - help.keymap = [ - { - on = [ - "" - ]; - run = "escape"; - desc = "Clear the filter or hide the help"; - } - { - on = [ - "q" - ]; - run = "close"; - desc = "Exit the process"; - } - { - on = [ - "" - ]; - run = "close"; - desc = "Hide the help"; - } - - # Navigation - { - on = [ - "k" - ]; - run = "arrow -1"; - desc = "Move cursor up"; - } - { - on = [ - "j" - ]; - run = "arrow 1"; - desc = "Move cursor down"; - } - - { - on = [ - "K" - ]; - run = "arrow -5"; - desc = "Move cursor up 5 lines"; - } - { - on = [ - "J" - ]; - run = "arrow 5"; - desc = "Move cursor down 5 lines"; - } - - { - on = [ - "" - ]; - run = "arrow -1"; - desc = "Move cursor up"; - } - { - on = [ - "" - ]; - run = "arrow 1"; - desc = "Move cursor down"; - } - - # Filtering - { - on = [ - "/" - ]; - run = "filter"; - desc = "Apply a filter for the help items"; - } - ]; - }; - # theme = { - # manager = { - # cwd = { - # fg = "#94e2d5"; - # }; - # - # # Hovered - # hovered = { - # reversed = true; - # }; - # preview_hovered = { underline = true; }; - # - # # Find - # find_keyword = { - # fg = "#f9e2af"; - # bold = true; - # italic = true; - # underline = true; - # }; - # find_position = { - # fg = "#f5c2e7"; - # bg = "reset"; - # bold = true; - # italic = true; - # }; - # - # # Marker - # marker_copied = { - # fg = "#a6e3a1"; - # bg = "#a6e3a1"; - # }; - # marker_cut = { - # fg = "#f38ba8"; - # bg = "#f38ba8"; - # }; - # marker_marked = { - # fg = "#f9e2af"; - # bg = "#f9e2af"; - # }; - # marker_selected = { - # fg = "#779EF0"; - # bg = "#89b4fa"; - # }; - # - # # Tab - # tab_active = { - # fg = "#1e1e2e"; - # bg = "#cdd6f4"; - # }; - # tab_inactive = { - # fg = "#cdd6f4"; - # bg = "#45475a"; - # }; - # tab_width = 1; - # - # # Count - # count_copied = { - # fg = "#1e1e2e"; - # bg = "#a6e3a1"; - # }; - # count_cut = { - # fg = "#1e1e2e"; - # bg = "#f38ba8"; - # }; - # count_selected = { - # fg = "#1e1e2e"; - # bg = "#89b4fa"; - # }; - # - # # Border - # border_symbol = "│"; - # border_style = { fg = "#7f849c"; }; - # - # }; - # status = { - # separator_open = ""; - # separator_close = ""; - # separator_style = { - # fg = "#45475a"; - # bg = "#45475a"; - # }; - # - # # Mode - # mode_normal = { - # fg = "#1e1e2e"; - # bg = "#89b4fa"; - # bold = true; - # }; - # mode_select = { - # fg = "#1e1e2e"; - # bg = "#a6e3a1"; - # bold = true; - # }; - # mode_unset = { - # fg = "#1e1e2e"; - # bg = "#f2cdcd"; - # bold = true; - # }; - # - # # Progress - # progress_label = { - # fg = "#ffffff"; - # bold = true; - # }; - # progress_normal = { - # fg = "#89b4fa"; - # bg = "#45475a"; - # }; - # progress_error = { - # fg = "#f38ba8"; - # bg = "#45475a"; - # }; - # - # # Permissions - # permissions_t = { fg = "#89b4fa"; }; - # permissions_r = { fg = "#f9e2af"; }; - # permissions_w = { fg = "#f38ba8"; }; - # permissions_x = { fg = "#a6e3a1"; }; - # permissions_s = { fg = "#7f849c"; }; - # }; - # - # input = { - # border = { - # fg = "#89b4fa"; - # }; - # title = { }; - # value = { }; - # selected = { reversed = true; }; - # }; - # select = { - # border = { - # fg = "#89b4fa"; - # }; - # active = { fg = "#f5c2e7"; }; - # inactive = { }; - # }; - # tasks = { - # border = { - # fg = "#89b4fa"; - # }; - # title = { }; - # hovered = { - # underline = true; - # }; - # }; - # which = { - # mask = { - # bg = "#313244"; - # }; - # cand = { fg = "#94e2d5"; }; - # rest = { fg = "#9399b2"; }; - # desc = { fg = "#f5c2e7"; }; - # separator = "  "; - # separator_style = { fg = "#585b70"; }; - # }; - # help = { - # on = { - # fg = "#f5c2e7"; - # }; - # exec = { fg = "#94e2d5"; }; - # desc = { fg = "#9399b2"; }; - # hovered = { - # bg = "#585b70"; - # bold = true; - # }; - # footer = { - # fg = "#45475a"; - # bg = "#cdd6f4"; - # }; - # }; - # filetype = { - # rules = [ - # # Images - # { - # mime = "image/*"; - # fg = "#94e2d5"; - # } - # - # # Videos - # { - # mime = "video/*"; - # fg = "#f9e2af"; - # } - # { - # mime = "audio/*"; - # fg = "#f9e2af"; - # } - # - # # Archives - # { - # mime = "application/zip"; - # fg = "#f5c2e7"; - # } - # { - # mime = "application/gzip"; - # fg = "#f5c2e7"; - # } - # { - # mime = "application/x-tar"; - # fg = "#f5c2e7"; - # } - # { - # mime = "application/x-bzip"; - # fg = "#f5c2e7"; - # } - # { - # mime = "application/x-bzip2"; - # fg = "#f5c2e7"; - # } - # { - # mime = "application/x-7z-compressed"; - # fg = "#f5c2e7"; - # } - # { - # mime = "application/x-rar"; - # fg = "#f5c2e7"; - # } - # - # # Fallback - # { - # name = "*"; - # fg = "#cdd6f4"; - # } - # { - # name = "*/"; - # fg = "#89b4fa"; - # } - # ]; - # }; - # }; - }; -} - - - - - - - - - - diff --git a/programs/oxi/default.nix b/programs/oxi/default.nix index 916d3b5..c5001e4 100644 --- a/programs/oxi/default.nix +++ b/programs/oxi/default.nix @@ -1,9 +1,2 @@ -{ - imports = [ - ./oxipaste.nix - ./oxinoti.nix - ./oxishut.nix - ./oxidash.nix - ]; -} +{ imports = [ ./oxipaste.nix ./oxinoti.nix ./oxishut.nix ./oxidash.nix ]; } diff --git a/programs/oxi/oxidash.nix b/programs/oxi/oxidash.nix index 09cb235..cb0b2f2 100644 --- a/programs/oxi/oxidash.nix +++ b/programs/oxi/oxidash.nix @@ -1,53 +1,52 @@ { xdg.configFile."oxidash/style.css" = { - text = - '' - #MainWindow { - border-radius: 10px; - } + text = '' + #MainWindow { + border-radius: 10px; + } - #MainBox { - border-radius: 10px; - } + #MainBox { + border-radius: 10px; + } - #MainButtonBox { - padding: 10px; - margin: 5px 0px 5px 0px; - border-radius: 5px; - border: solid 2px #327cd5; - } + #MainButtonBox { + padding: 10px; + margin: 5px 0px 5px 0px; + border-radius: 5px; + border: solid 2px #327cd5; + } - #DoNotDisturbButton { - } + #DoNotDisturbButton { + } - #ExitButton { - } + #ExitButton { + } - #ClearNotificationsButton { - } + #ClearNotificationsButton { + } - #NotificationsWindow { - } + #NotificationsWindow { + } - .debugimage { - border: solid 3px blue; - } + .debugimage { + border: solid 3px blue; + } - .Notification { - padding: 10px; - margin: 5px 0px 5px 0px; - border: solid 2px #327cd5; - border-radius: 5px; - } + .Notification { + padding: 10px; + margin: 5px 0px 5px 0px; + border: solid 2px #327cd5; + border-radius: 5px; + } - .CloseNotificationButton { - margin: 0px 5px 0px 10px; + .CloseNotificationButton { + margin: 0px 5px 0px 10px; + } + .PictureButtonBox { + } + .BaseBox { + } } - .PictureButtonBox { - } - .BaseBox { - } - } - ''; + ''; }; } diff --git a/programs/oxi/oxinoti.nix b/programs/oxi/oxinoti.nix index f6b91b9..4623f93 100644 --- a/programs/oxi/oxinoti.nix +++ b/programs/oxi/oxinoti.nix @@ -1,21 +1,21 @@ { config, ... }: { xdg.configFile."oxinoti/style.css" = { - text = /*css*/ + text = # css '' @import url("/home/${config.conf.username}/.config/gtk-3.0/gtk.css"); - + #MainWindow { background-color: transparent; padding: 0px; /* opacity: 0; */ } - + .MainBox { background-color: transparent; padding: 0px; /* opacity: 0; */ } - + .NotificationBox { background-color: #353747; border-radius: 5px; @@ -23,61 +23,61 @@ margin: 0px; padding: 5px; } - + .NotificationLow { border-color: green; } - + .NotificationNormal { border-color: purple; } - + .NotificationUrgent { border-color: red; } - + .miscbox { margin: 0px 10px 0px 0px; } - + .bodybox { } - + .imagebox { margin: 0px 0px 0px 10px; } - + .appname { font-size: 0.8rem; } - + .timestamp { font-size: 0.8rem; } - + .summary { font-size: 0.8rem; } - + .body { font-size: 1.2rem; } - + .icon { font-size: 2rem; } - + .image { } - + .bold { font-weight: bold; } - + .italic { font-style: italic; } - + .underline { text-decoration-line: underline; } diff --git a/programs/oxi/oxipaste.nix b/programs/oxi/oxipaste.nix index 03a269f..9f3e9bc 100644 --- a/programs/oxi/oxipaste.nix +++ b/programs/oxi/oxipaste.nix @@ -1,31 +1,30 @@ { xdg.configFile."oxipaste/style.css" = { - text = - '' - .main-window { - padding: 10px; - border-radius: 10px; - border: 2px solid #2AC3DE; - } - - .item-window { - padding: 10px; - border-radius: 10px; - border: 2px solid #C0CAF5; - } - - .item-button { - background-color: #1A1B26; - border-radius: 5px; - border: 1px solid #6D728D; - } - - .delete-button { - margin: 5px 25px 5px 5px; - } - - .item-box { - } - ''; + text = '' + .main-window { + padding: 10px; + border-radius: 10px; + border: 2px solid #2AC3DE; + } + + .item-window { + padding: 10px; + border-radius: 10px; + border: 2px solid #C0CAF5; + } + + .item-button { + background-color: #1A1B26; + border-radius: 5px; + border: 1px solid #6D728D; + } + + .delete-button { + margin: 5px 25px 5px 5px; + } + + .item-box { + } + ''; }; } diff --git a/programs/oxi/oxishut.nix b/programs/oxi/oxishut.nix index ec070a1..f973921 100644 --- a/programs/oxi/oxishut.nix +++ b/programs/oxi/oxishut.nix @@ -1,25 +1,24 @@ { xdg.configFile."oxishut/style.css" = { - text = - '' - #mainwindow { - border-radius: 10px; - } - - .mainbox { - border-radius: 5px; - padding: 20px; - } - - .button { - margin: 5px; - background-color: #2b2c3b; - -gtk-icon-size: 5rem; - } - - .button:hover { - background-color: #3e4152; - } - ''; + text = '' + #mainwindow { + border-radius: 10px; + } + + .mainbox { + border-radius: 5px; + padding: 20px; + } + + .button { + margin: 5px; + background-color: #2b2c3b; + -gtk-icon-size: 5rem; + } + + .button:hover { + background-color: #3e4152; + } + ''; }; } diff --git a/programs/sync.nix b/programs/sync.nix index 9564a68..f650434 100644 --- a/programs/sync.nix +++ b/programs/sync.nix @@ -2,48 +2,42 @@ { config, pkgs, lib, ... }: let username = config.mods.nextcloud.username; - password = if (config.sops.secrets?nextcloud.path) then config.sops.secrets.nextcloud.path else ""; + password = if (config.sops.secrets ? nextcloud.path) then + config.sops.secrets.nextcloud.path + else + ""; url = config.mods.nextcloud.url; synclist = config.mods.nextcloud.synclist; -in -lib.mkIf config.mods.nextcloud.enable { +in lib.mkIf config.mods.nextcloud.enable { systemd.user = { - services = - (builtins.listToAttrs - (map - (opts: { - name = "${opts.name}"; - value = { - Unit = { - Description = "Auto sync Nextcloud"; - After = "network-online.target"; - }; - Service = { - Type = "simple"; - ExecStart = "${pkgs.bash}/bin/bash -c '${pkgs.nextcloud-client}/bin/nextcloudcmd -h --path ${opts.remote} ${opts.local} https://${username}:$(bat ${password})@${url}'"; - TimeoutStopSec = "180"; - KillMode = "process"; - KillSignal = "SIGINT"; - }; - Install.WantedBy = [ "multi-user.target" ]; - }; - }) - synclist - )); - timers = - (builtins.listToAttrs - (map - (opts: { - name = "${opts.name}"; - value = { - Unit.Description = "Automatic sync files with Nextcloud when booted up after 1 minute then rerun every 60 minutes"; - Timer.OnBootSec = "1min"; - Timer.OnUnitActiveSec = "60min"; - Install.WantedBy = [ "multi-user.target" "timers.target" ]; - }; - }) - synclist - )); + services = (builtins.listToAttrs (map (opts: { + name = "${opts.name}"; + value = { + Unit = { + Description = "Auto sync Nextcloud"; + After = "network-online.target"; + }; + Service = { + Type = "simple"; + ExecStart = + "${pkgs.bash}/bin/bash -c '${pkgs.nextcloud-client}/bin/nextcloudcmd -h --path ${opts.remote} ${opts.local} https://${username}:$(bat ${password})@${url}'"; + TimeoutStopSec = "180"; + KillMode = "process"; + KillSignal = "SIGINT"; + }; + Install.WantedBy = [ "multi-user.target" ]; + }; + }) synclist)); + timers = (builtins.listToAttrs (map (opts: { + name = "${opts.name}"; + value = { + Unit.Description = + "Automatic sync files with Nextcloud when booted up after 1 minute then rerun every 60 minutes"; + Timer.OnBootSec = "1min"; + Timer.OnUnitActiveSec = "60min"; + Install.WantedBy = [ "multi-user.target" "timers.target" ]; + }; + }) synclist)); startServices = true; }; } diff --git a/programs/themes/default.nix b/programs/themes/default.nix index e3b2a16..d348c16 100644 --- a/programs/themes/default.nix +++ b/programs/themes/default.nix @@ -1,6 +1,2 @@ -{ - imports = [ - ./qt.nix - ]; -} +{ imports = [ ./qt.nix ]; } diff --git a/programs/themes/qt.nix b/programs/themes/qt.nix index 5fb1956..e41c051 100644 --- a/programs/themes/qt.nix +++ b/programs/themes/qt.nix @@ -22,91 +22,82 @@ let border: none; } ''; -in -{ - xdg.configFile."qt5ct/colors/tokyonight.conf" = { - text = "${color}"; - }; - xdg.configFile."qt6ct/colors/tokyonight.conf" = { - text = "${color}"; - }; - xdg.configFile."qt5ct/qss/tab.qss" = { - text = "${qss}"; - }; +in { + xdg.configFile."qt5ct/colors/tokyonight.conf" = { text = "${color}"; }; + xdg.configFile."qt6ct/colors/tokyonight.conf" = { text = "${color}"; }; + xdg.configFile."qt5ct/qss/tab.qss" = { text = "${qss}"; }; xdg.configFile."qt5ct/qt5ct.conf" = { - text = - '' - [Appearance] - color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf - custom_palette=true - icon_theme=MoreWaita - standard_dialogs=gtk3 - style=Breeze + text = '' + [Appearance] + color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf + custom_palette=true + icon_theme=MoreWaita + standard_dialogs=gtk3 + style=Breeze - [Fonts] - fixed="Noto Sans,12,-1,5,50,0,0,0,0,0" - general="Noto Sans,12,-1,5,50,0,0,0,0,0" + [Fonts] + fixed="Noto Sans,12,-1,5,50,0,0,0,0,0" + general="Noto Sans,12,-1,5,50,0,0,0,0,0" - [Interface] - activate_item_on_single_click=2 - buttonbox_layout=3 - cursor_flash_time=1000 - dialog_buttons_have_icons=0 - double_click_interval=400 - gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox - keyboard_scheme=4 - menus_have_icons=true - show_shortcuts_in_context_menus=true - stylesheets=/home/${username}/.config/qt5ct/qss/tab.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/fusion-fixes.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/scrollbar-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/sliders-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/tooltip-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/traynotification-simple.qss - toolbutton_style=4 - underline_shortcut=0 - wheel_scroll_lines=3 + [Interface] + activate_item_on_single_click=2 + buttonbox_layout=3 + cursor_flash_time=1000 + dialog_buttons_have_icons=0 + double_click_interval=400 + gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox + keyboard_scheme=4 + menus_have_icons=true + show_shortcuts_in_context_menus=true + stylesheets=/home/${username}/.config/qt5ct/qss/tab.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/fusion-fixes.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/scrollbar-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/sliders-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/tooltip-simple.qss, /nix/store/5713p1pv913a6fsn8j7z6ndikcwikbcd-qt5ct-1.8/share/qt5ct/qss/traynotification-simple.qss + toolbutton_style=4 + underline_shortcut=0 + wheel_scroll_lines=3 - [SettingsWindow] - geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q\0\0\n\0\0\0\0\0\0\0\r[\0\0\x5\x7f\0\0\0\0\x2\0\0\0\rp\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q) + [SettingsWindow] + geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q\0\0\n\0\0\0\0\0\0\0\r[\0\0\x5\x7f\0\0\0\0\x2\0\0\0\rp\0\0\n\0\0\0\0\0\0\0\rK\0\0\x5q) - [Troubleshooting] - force_raster_widgets=1 - ignored_applications=@Invalid() - ''; + [Troubleshooting] + force_raster_widgets=1 + ignored_applications=@Invalid() + ''; }; xdg.configFile."qt6ct/qt6ct.conf" = { - text = - '' - [Appearance] - color_scheme_path=/home/${username}/.config/qt6ct/colors/toykonight.conf - custom_palette=true - standard_dialogs=default - style=Adwaita-Dark + text = '' + [Appearance] + color_scheme_path=/home/${username}/.config/qt6ct/colors/toykonight.conf + custom_palette=true + standard_dialogs=default + style=Adwaita-Dark - [Fonts] - fixed="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1" - general="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1" + [Fonts] + fixed="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1" + general="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1" - [Interface] - activate_item_on_single_click=2 - buttonbox_layout=3 - cursor_flash_time=1000 - dialog_buttons_have_icons=0 - double_click_interval=400 - gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox - keyboard_scheme=4 - menus_have_icons=true - show_shortcuts_in_context_menus=true - stylesheets=@Invalid() - toolbutton_style=4 - underline_shortcut=1 - wheel_scroll_lines=3 + [Interface] + activate_item_on_single_click=2 + buttonbox_layout=3 + cursor_flash_time=1000 + dialog_buttons_have_icons=0 + double_click_interval=400 + gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox + keyboard_scheme=4 + menus_have_icons=true + show_shortcuts_in_context_menus=true + stylesheets=@Invalid() + toolbutton_style=4 + underline_shortcut=1 + wheel_scroll_lines=3 - [PaletteEditor] - geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4\0\0\0\0\0\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4) + [PaletteEditor] + geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4\0\0\0\0\0\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x2\x30\0\0\x1\xf4) - [SettingsWindow] - geometry="@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,\0\0\0\0\0\0\0\0\rp\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,)" + [SettingsWindow] + geometry="@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,\0\0\0\0\0\0\0\0\rp\0\0\0\0\0\0\0\0\0\0\x3\xec\0\0\x3,)" - [Troubleshooting] - force_raster_widgets=1 - ignored_applications=@Invalid() - ''; + [Troubleshooting] + force_raster_widgets=1 + ignored_applications=@Invalid() + ''; }; } diff --git a/programs/xdg.nix b/programs/xdg.nix index 9433496..eaaae39 100644 --- a/programs/xdg.nix +++ b/programs/xdg.nix @@ -1,8 +1,6 @@ # Copyright (c) 2020-2021 Mihai Fufezan # credits to fufexan https://github.com/fufexan/dotfiles/blob/main/home/terminal/programs/xdg.nix -{ config -, ... -}: +{ config, ... }: let browser = [ "firefox" ]; imageViewer = [ "imv" ]; @@ -10,32 +8,28 @@ let audioPlayer = [ "io.bassi.Amberol" ]; xdgAssociations = type: program: list: - builtins.listToAttrs (map - (e: { - name = "${type}/${e}"; - value = program; - }) - list); + builtins.listToAttrs (map (e: { + name = "${type}/${e}"; + value = program; + }) list); image = xdgAssociations "image" imageViewer [ "png" "svg" "jpeg" "gif" ]; video = xdgAssociations "video" videoPlayer [ "mp4" "avi" "mkv" ]; audio = xdgAssociations "audio" audioPlayer [ "mp3" "flac" "wav" "aac" ]; - browserTypes = - (xdgAssociations "application" browser [ - "json" - "x-extension-htm" - "x-extension-html" - "x-extension-shtml" - "x-extension-xht" - "x-extension-xhtml" - ]) - // (xdgAssociations "x-scheme-handler" browser [ - "about" - "ftp" - "http" - "https" - "unknown" - ]); + browserTypes = (xdgAssociations "application" browser [ + "json" + "x-extension-htm" + "x-extension-html" + "x-extension-shtml" + "x-extension-xht" + "x-extension-xhtml" + ]) // (xdgAssociations "x-scheme-handler" browser [ + "about" + "ftp" + "http" + "https" + "unknown" + ]); # XDG MIME types associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ({ @@ -44,13 +38,8 @@ let "text/plain" = [ "neovide" ]; "x-scheme-handler/chrome" = [ "com.brave.browser" ]; "inode/directory" = [ "yazi" ]; - } - // image - // video - // audio - // browserTypes); -in -{ + } // image // video // audio // browserTypes); +in { xdg = { enable = true; cacheHome = config.home.homeDirectory + "/.local/cache";