From ac51db1c7eb2ff1381639a0f5c0951025a588626 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 14 May 2024 11:47:29 +0200 Subject: [PATCH 001/330] code: Add bear --- nix/programs/coding.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/nix/programs/coding.nix b/nix/programs/coding.nix index 16edde3..bac1958 100644 --- a/nix/programs/coding.nix +++ b/nix/programs/coding.nix @@ -19,6 +19,20 @@ plantuml d-spy + # cpp + bear + + #yaml + yamlfmt + yamllint + + #json + jsonfmt + + #css + tailwindcss + tailwindcss-language-server + #editors neovide ##fallback From fcf4fc3064baf93dec7e6c43113a77c76affd469 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 14 May 2024 20:38:33 +0200 Subject: [PATCH 002/330] programs: add sops --- nix/.sops.yaml | 7 ++ nix/base/base_packages.nix | 1 + nix/flake.lock | 110 ++++++++++++++------ nix/flake.nix | 2 + nix/hardware/overheating/configuration.nix | 6 ++ nix/programs/common.nix | 13 +++ nix/programs/default.nix | 1 + nix/programs/individual_configs/default.nix | 1 + nix/programs/individual_configs/ssh.nix | 10 ++ nix/secrets/secrets.yaml | 29 ++++++ 10 files changed, 151 insertions(+), 29 deletions(-) create mode 100644 nix/.sops.yaml create mode 100644 nix/programs/individual_configs/ssh.nix create mode 100644 nix/secrets/secrets.yaml diff --git a/nix/.sops.yaml b/nix/.sops.yaml new file mode 100644 index 0000000..57234fa --- /dev/null +++ b/nix/.sops.yaml @@ -0,0 +1,7 @@ +keys: + - &dashie 92D29D420B5D95FCA46A12FE778CFA7A623614F3 +creation_rules: + - path_regex: secrets/[^/]+\.(yaml|json|env|ini)$ + key_groups: + - pgp: + - *dashie diff --git a/nix/base/base_packages.nix b/nix/base/base_packages.nix index ebde6aa..99c0efa 100644 --- a/nix/base/base_packages.nix +++ b/nix/base/base_packages.nix @@ -74,5 +74,6 @@ }; }; programs.ssh.startAgent = true; + programs.gnupg.agent.enable = true; } diff --git a/nix/flake.lock b/nix/flake.lock index 42051be..9637b39 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -124,11 +124,11 @@ ] }, "locked": { - "lastModified": 1715380449, - "narHash": "sha256-716+f9Rj3wjSyD1xitCv2FcYbgPz1WIVDj+ZBclH99Y=", + "lastModified": 1715486357, + "narHash": "sha256-4pRuzsHZOW5W4CsXI9uhKtiJeQSUoe1d2M9mWU98HC4=", "owner": "nix-community", "repo": "home-manager", - "rev": "d7682620185f213df384c363288093b486b2883f", + "rev": "44677a1c96810a8e8c4ffaeaad10c842402647c1", "type": "github" }, "original": { @@ -176,11 +176,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1715448710, - "narHash": "sha256-ntVaQOHnfejEiqHUY07kWrytdXVlXtg1RLv65T9w2/c=", + "lastModified": 1715635266, + "narHash": "sha256-c4l89M8/x4h0VHds7IC1W8yfu27lVN4uoeY57/OmI5Q=", "ref": "refs/heads/main", - "rev": "494b9415a1157279a1e1782ba635fc2ef6a18155", - "revCount": 4668, + "rev": "ba696521930059aa489ac6ffabe28553edaf2fa3", + "revCount": 4683, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -272,11 +272,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1714843107, - "narHash": "sha256-89WxndRGO3CGuWE5XCaHKnsV3IKBRdOWqScp6o8enT4=", + "lastModified": 1715610114, + "narHash": "sha256-ffGEiaL5bVR559adZNHsYBWMefhX8G9oyTrKorbx3h8=", "owner": "hyprwm", "repo": "hyprlock", - "rev": "c87af3aa1f6e6bd06cffaabcc400bd45e26d565a", + "rev": "386a1e6fc290fc33177d0b44cd393e32c5433925", "type": "github" }, "original": { @@ -297,11 +297,11 @@ ] }, "locked": { - "lastModified": 1715287423, - "narHash": "sha256-B7AJIjOyWgVMKhu7DlOnWa0VprdhywUVHuB/j+EwSxM=", + "lastModified": 1715608589, + "narHash": "sha256-vimNaLjLcoNIvBhF37GaB6PRYEvKMamY3UnDE9M5MW8=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "e2fc1c0eb8b392110588f478cce644348ead7271", + "rev": "65c2636484e5cb00583b8a7446c3fb657f568883", "type": "github" }, "original": { @@ -318,11 +318,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1715272723, - "narHash": "sha256-/pHq16sUYKOpwtSDDlnQ3M3lBy9abQq39UNSzadFd8w=", + "lastModified": 1715676519, + "narHash": "sha256-JQywRoP+oPLP+vMH4X8DCmiwE2kp2GC0kdHlejUvRTo=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "386955c1ea07869277b646c203f7b976d83db427", + "rev": "407d58606d6bd45b4ab73322cefb08f460431897", "type": "github" }, "original": { @@ -380,13 +380,29 @@ "type": "github" } }, - "nixpkgs_2": { + "nixpkgs-stable": { "locked": { - "lastModified": 1715087517, - "narHash": "sha256-CLU5Tsg24Ke4+7sH8azHWXKd0CFd4mhLWfhYgUiDBpQ=", + "lastModified": 1715458492, + "narHash": "sha256-q0OFeZqKQaik2U8wwGDsELEkgoZMK7gvfF6tTXkpsqE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b211b392b8486ee79df6cdfb1157ad2133427a29", + "rev": "8e47858badee5594292921c2668c11004c3b0142", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1715534503, + "narHash": "sha256-5ZSVkFadZbFP1THataCaSf0JH2cAH3S29hU9rrxTEqk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2057814051972fa1453ddfb0d98badbea9b83c06", "type": "github" }, "original": { @@ -398,11 +414,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1715266358, - "narHash": "sha256-doPgfj+7FFe9rfzWo1siAV2mVCasW+Bh8I1cToAXEE4=", + "lastModified": 1712963716, + "narHash": "sha256-WKm9CvgCldeIVvRz87iOMi8CFVB1apJlkUT4GGvA0iM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f1010e0469db743d14519a1efd37e23f8513d714", + "rev": "cfd6b5fc90b15709b780a5a1619695a88505a176", "type": "github" }, "original": { @@ -444,11 +460,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1715266358, - "narHash": "sha256-doPgfj+7FFe9rfzWo1siAV2mVCasW+Bh8I1cToAXEE4=", + "lastModified": 1715534503, + "narHash": "sha256-5ZSVkFadZbFP1THataCaSf0JH2cAH3S29hU9rrxTEqk=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "f1010e0469db743d14519a1efd37e23f8513d714", + "rev": "2057814051972fa1453ddfb0d98badbea9b83c06", "type": "github" }, "original": { @@ -474,6 +490,22 @@ "type": "github" } }, + "nixpkgs_8": { + "locked": { + "lastModified": 1715413075, + "narHash": "sha256-FCi3R1MeS5bVp0M0xTheveP6hhcCYfW/aghSTPebYL4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e4e7a43a9db7e22613accfeb1005cca1b2b1ee0d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "Hyprspace": "Hyprspace", @@ -484,7 +516,8 @@ "ironbar": "ironbar", "nix-flatpak": "nix-flatpak", "nixpkgs": "nixpkgs_6", - "rust-overlay": "rust-overlay_2" + "rust-overlay": "rust-overlay_2", + "sops-nix": "sops-nix" } }, "rust-overlay": { @@ -515,8 +548,8 @@ "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1715393623, - "narHash": "sha256-nSUFcUqyTQQ/aYFIB05mpCzytcKvfKMy3ZQAe0fP26A=", + "lastModified": 1715652909, + "narHash": "sha256-aCLEDvzL1j51Rf2mCFOqK1mieMO3pAn5ItCIdr5h2LA=", "type": "tarball", "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" }, @@ -525,6 +558,25 @@ "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" } }, + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_8", + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1715482972, + "narHash": "sha256-y1uMzXNlrVOWYj1YNcsGYLm4TOC2aJrwoUY1NjQs9fM=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "b6cb5de2ce57acb10ecdaaf9bbd62a5ff24fa02e", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1689347949, diff --git a/nix/flake.nix b/nix/flake.nix index 58f47c2..4735efa 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -14,6 +14,8 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + sops-nix.url = "github:Mic92/sops-nix"; + hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; hyprlock.url = "github:hyprwm/hyprlock"; diff --git a/nix/hardware/overheating/configuration.nix b/nix/hardware/overheating/configuration.nix index bf150ce..5e5e01f 100644 --- a/nix/hardware/overheating/configuration.nix +++ b/nix/hardware/overheating/configuration.nix @@ -1,5 +1,11 @@ { pkgs, ... }: { + imports = [ + ../../modules/ironbar_config.nix + ../../modules/boot_params.nix + ]; boot.kernelPackages = pkgs.linuxPackages_latest; networking.hostName = "overheating"; + programs.ironbar.monitor = "eDP-1"; + programs.boot.boot_params = []; } diff --git a/nix/programs/common.nix b/nix/programs/common.nix index b4f59d3..e29247c 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -47,6 +47,7 @@ in neofetch brave greetd.regreet + sops (callPackage ../override/oxinoti.nix { }) @@ -110,4 +111,16 @@ in { FLAKE = "home/dasshie/gits/dotFiles/nix"; }; + + sops = { + gnupg = { + home = "~/.gnupg"; + sshKeyPaths = [ ]; + }; + defaultSopsFile = ../secrets/secrets.yaml; + secrets.hub = { }; + secrets.lab = { }; + secrets.dashie = { }; + }; + systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ]; } diff --git a/nix/programs/default.nix b/nix/programs/default.nix index 1418c7b..c8c231a 100644 --- a/nix/programs/default.nix +++ b/nix/programs/default.nix @@ -6,6 +6,7 @@ let inputs.anyrun.homeManagerModules.default inputs.ironbar.homeManagerModules.default inputs.nix-flatpak.homeManagerModules.nix-flatpak + inputs.sops-nix.homeManagerModules.sops ]; in { diff --git a/nix/programs/individual_configs/default.nix b/nix/programs/individual_configs/default.nix index 8c7425d..4416c73 100644 --- a/nix/programs/individual_configs/default.nix +++ b/nix/programs/individual_configs/default.nix @@ -4,5 +4,6 @@ ./yazi.nix ./fish.nix ./ncspot.nix + ./ssh.nix ]; } diff --git a/nix/programs/individual_configs/ssh.nix b/nix/programs/individual_configs/ssh.nix new file mode 100644 index 0000000..68bdb00 --- /dev/null +++ b/nix/programs/individual_configs/ssh.nix @@ -0,0 +1,10 @@ +{ config, ... }: { + home.file.".ssh/config".text = '' + Host github.com + IdentityFile ${config.sops.secrets.hub.path} + Host gitlab.com + IdentityFile ${config.sops.secrets.lab.path} + Host dashie.org + IdentityFile ${config.sops.secrets.dashie.path} + ''; +} diff --git a/nix/secrets/secrets.yaml b/nix/secrets/secrets.yaml new file mode 100644 index 0000000..7cdb58d --- /dev/null +++ b/nix/secrets/secrets.yaml @@ -0,0 +1,29 @@ +hub: ENC[AES256_GCM,data:69czN3kqTYCbiwXPPUpaThm7lrpM/43nUcE0Ee3m1AscB0Huqp1LzmgVBVZ6X/NVamNipfRzN4KePmFqkGBT7V6qIewX0L6vYpLBJ7pwdv1xRF+FEkrfikqfdec28AwNCOXIOQZq3oknPpGoAVAQAsQo+SxwPaP4vZKbYpS9EA727E9REd4dVcBRW2GN3ystiX+L/Rz+mizHQfVGb6LHhj6AZWB/SGhcfGJZCfoKgwIFekjiSJhdSQemmtX1x+b7yxUwQqsUBPVtSf73zUCIYVjLwx4bdZ5OF8kITRF8ZIfp+YLN24Lt5Qeatd4FBO5AJTFOgjRjU38z6Xy3CwZMv0hp3IwqfXUd+47wiGSXSs2lygntWodcG96/KUubrChWQQxfE0vNIAu/l2sjwwre32E9mXBYn6uHFD+/kroL531KscdKdnpAACnwsomMSiJIWz3JQa6aljDeUd90VFH2kOf8VtGbqkFL9VfTrtx/dnTMaK2VJmO+bZTge+evIBgtH0Y2DP/GmaempeZIyJydx03uVCFDi+uEfGx10HMty0sUS0k=,iv:1/+m6CmUojTS4d7B76zzrwC3k5M18qkQ6q1458kG1QI=,tag:463IcCP3Tfb4JWS5K7hCjw==,type:str] +lab: ENC[AES256_GCM,data:IbIHYKp7kAP09r2t6bppLZraRIxjEsIXbfIG/R5QTGzy1uVk5LZivzepkJP6kOf3qWt/wZiBb5qLcNyL/+RZMfaV5KvlvtKhCVQ/D5qS3qB/4wKvPTdMiMzc9VTnLzUaDExMAtiYV/tcJGC/xgpkrwizJwy5WEA/d8EKUDs1p//vpv8b6035k1oV/49sw3cJ/eMGgvnuJ3sKMKpkXbUJ4zyyHKPCFoaCGdplCJDn5hZloaqxBjdZctAEgsVvKiq2HyIMNqH3YaKEJZhwMrwQMSioHA1WnBQMc0tnqWAi9rhpm8pY553HaQe0U/lpS1W5IvLj7MVxat3911WK/s95oEVLY7b7dZAzmdMau4IF/ozhxC6i2oSELw+VNqiZ/yJwfqJ7e+89UnxZdi7xMJpikOfE1qzGIPaEHj2caSf+U2sldqsRyqdf+oJK9Sof4djn5diEPkhTyLkqFCGC6QakEbprcbstBcjwu65G4BTTDy/3FJYUt0NZTHy7HDjsn/7b2Sxa1XgWbWOGBwbmMqpsSE6eJC2WmWDWtrjgO7rV6XWwzm8=,iv:uVkMdjENhj2OnHnmCyfpQAdQeXwnvTIdExDxxWVIRKc=,tag:+3lf+T2Gpa4fLC3FhbLa6A==,type:str] +dashie: ENC[AES256_GCM,data:P/+ZEelpLFrcsk8hx7CF999Wlv5OWiybjPVT1ULogCECpBAxYJglisINyJGGBSBLnp4FF45kCpFb/xsuLZGwe/o4LK6Lbf6/uwE2HSXNMMXjkD8lk3zINNXfWls6s9f/XnHsKjwp0gDGhcfMM+mbg8EAyCfkdLUWYapNQc+CIr1ilAvjzDpGhrjYw2j7FEEKiteUxPTg34DY6iKlxkuGuon4Yb2r1d5+KMiHKouomjRkvS3cAgCyTKIVybYEhCQthHJh0j76Z7O5wvfXeOkLFWE68arvOci2MC7ecx6bVUrJQDTyUSpyO9TqJneIh36STZQs9Zk24sSY8jdt59roaJPylfRmbSRnlH0Wg5vzbuu4zM/ffTaiYRZkKBYbX9wmyNh4nW7EJOD9i4lE+65VxWYI4M0EuJXqI4vaIEo2PexAWci9cp0Ui6BmY2G4PoEz0P48p2WXPnQOwSSBYY9HfeAs+oXhB4Bi+I1VUAR/BkzihBvb+d9AWcbZIurMc2h7Vlz58/2E8+QVzljHfN+pakU/FhWCt2VRhhimyF8h3Nacbk0=,iv:kmFBTzx9BNHRGv+FzdwrIvVMORprhilG8tN2C3J4BRY=,tag:jRvRDkvUE14JZZem13/5Vw==,type:str] +hub_pub: ENC[AES256_GCM,data:6vIAQWFMIR+HnERg+A4jKu/MW+e7eLQplmdJyBeuBL9tvxH1idT8C6zvMEyIPhelU6+ZYQghAlvuC4MtktI/Te0f40XvdK3Gq/DmfBrLRUgLdSjUvMeGuuKnpRX0mjCaw77YW5ES4ptZ,iv:PC9hELA0234JCk2rx6FJhMlKKaKO8WrIezJ2Q2nv6EE=,tag:R8oPaH3Sbr23oRX++OP/qg==,type:str] +lab_pub: ENC[AES256_GCM,data:rlHCiqGnoaPiQBaZQRT+bEjfNF7jNO4CGPoCOKJ1o7nv7i2jPy6Bq9OMBHXsMHI9oGfEhyKCDHdpJ65aI07KJC/fMoMoAyiNmalwNOn26jbgj84mfENS3IYbfKxQVXAUCJHE5m1cFsm7,iv:8SLdHLYq2tlfHBjdeDoByEzGuu3TURj4+KJvQfPuaWA=,tag:mmGXlRwQ0UoVIAJE6d1OUQ==,type:str] +dashie_pub: ENC[AES256_GCM,data:k6JIJOKDJcGSW47Z8y0EYxNl/vaPRVbIn35CSA57snEzYnk5GpU+1NfPDniWoAGRkpIwicgN6kpzssRlKOmVudvwMejSLv4VkLRBjrsApVFECwoIBLUNGUSDaMcIwC/BYu4jfjGaozBj,iv:0EZ0rptLdmcuTU1BGOILaaDTrc7aZGJCCxgjUESqi0M=,tag:dlQs/ugBGxnSrNj/bRSJSw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: [] + lastmodified: "2024-05-14T18:34:33Z" + mac: ENC[AES256_GCM,data:ZOmH7VOtapecA3wr0p4M8SfC5zKybsXZdI67rE8SHFyeHDq+6In0ekPs4uTun1lBT4ly4ijjK2XWsRdrkTI76P4yKD5o850Mi7RDHTZzzP3AmlIrMgFbKTZkxuY1wnLJvcuHnbzq4e7s5ZJYPRx/lDd5dnYB+Xa5yyv4zCXXwqg=,iv:cqSPKZp/SNYnKU1QT2eOmKPe0oFTgVI6r8UMTYModnk=,tag:bHUhfnlHq8UGG8Z50cCQcw==,type:str] + pgp: + - created_at: "2024-05-14T14:35:02Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + hF4DnA7H9LSNcZ4SAQdAJZzOF6GZ1VTNt2rccso305pkL5AGeeAPV0LtfpZkkVEw + 2GTK/N4MmE0YyjUAP+W3fkGawgzQDRsjSF+AB936DcL3BtfGktChl3agFBfWqprs + 1GgBCQIQ7rj9kooZpsYX93x5TSz2ZN3aeu/dcx3lHYwyqtTxdTMjK44LngfhO0qZ + zc/951nhmt6Vkj0PJY4QRkKiLPoVo/lgG4+1dv9hSJULRuZwvFQfv/7UXzq0tKrl + /xqggA6uP/rogA== + =zJOX + -----END PGP MESSAGE----- + fp: 92D29D420B5D95FCA46A12FE778CFA7A623614F3 + unencrypted_suffix: _unencrypted + version: 3.8.1 From d79f6366696e09a71dc0adc39814a94faffb0870 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 17 May 2024 12:54:52 +0200 Subject: [PATCH 003/330] overheating: set scale of login screen to 2.0 --- nix/base/login_manager.nix | 2 +- nix/hardware/overheating/base_config.nix | 2 +- nix/hardware/overheating/configuration.nix | 5 ++++- nix/modules/ironbar_config.nix | 14 +++++++++++--- nix/programs/coding.nix | 9 +++++++++ nix/programs/nvim/lua/plugins/lsp.lua | 4 ++++ 6 files changed, 30 insertions(+), 6 deletions(-) diff --git a/nix/base/login_manager.nix b/nix/base/login_manager.nix index 34d3280..ef13bbf 100644 --- a/nix/base/login_manager.nix +++ b/nix/base/login_manager.nix @@ -45,7 +45,7 @@ in environment.etc."greetd/hyprgreet.conf".text = '' exec-once=gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' - monitor=${config.programs.ironbar.monitor},3440x1440@180,0x0,1 + monitor=${config.programs.ironbar.monitor},3440x1440@180,0x0,${config.programs.ironbar.scale} monitor=_,disable input { diff --git a/nix/hardware/overheating/base_config.nix b/nix/hardware/overheating/base_config.nix index ee120c7..8f511ab 100644 --- a/nix/hardware/overheating/base_config.nix +++ b/nix/hardware/overheating/base_config.nix @@ -7,7 +7,7 @@ "eDP-1,2944x1840@90,0x0,2" # all others - ",highrr,auto,1" + ",highres,auto,1" ]; programs.ironbar.monitor = "eDP-1"; programs.ironbar.battery = [ diff --git a/nix/hardware/overheating/configuration.nix b/nix/hardware/overheating/configuration.nix index 5e5e01f..13161fa 100644 --- a/nix/hardware/overheating/configuration.nix +++ b/nix/hardware/overheating/configuration.nix @@ -7,5 +7,8 @@ boot.kernelPackages = pkgs.linuxPackages_latest; networking.hostName = "overheating"; programs.ironbar.monitor = "eDP-1"; - programs.boot.boot_params = []; + programs.ironbar.scale = "2.0"; + programs.boot.boot_params = [ ]; + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; } diff --git a/nix/modules/ironbar_config.nix b/nix/modules/ironbar_config.nix index f77886c..3ea7d1c 100644 --- a/nix/modules/ironbar_config.nix +++ b/nix/modules/ironbar_config.nix @@ -5,13 +5,21 @@ example = "eDP-1"; type = lib.types.str; description = '' - Extra settings for foo. + main monitor + ''; + }; + scale = lib.mkOption { + default = "1.0"; + example = "1.0"; + type = lib.types.str; + description = '' + Scale for the monitor ''; }; battery = lib.mkOption { - default = []; - example = []; + default = [ ]; + example = [ ]; }; }; } diff --git a/nix/programs/coding.nix b/nix/programs/coding.nix index bac1958..4bc34d4 100644 --- a/nix/programs/coding.nix +++ b/nix/programs/coding.nix @@ -25,6 +25,13 @@ #yaml yamlfmt yamllint + yaml-language-server + + #markdown + marksman + + #html + html-tidy #json jsonfmt @@ -32,6 +39,7 @@ #css tailwindcss tailwindcss-language-server + nodePackages_latest.vscode-css-languageserver-bin #editors neovide @@ -74,6 +82,7 @@ dotnet-sdk_8 omnisharp-roslyn csharpier + netcoredbg #zig zig diff --git a/nix/programs/nvim/lua/plugins/lsp.lua b/nix/programs/nvim/lua/plugins/lsp.lua index 52f7d55..dbae6e0 100644 --- a/nix/programs/nvim/lua/plugins/lsp.lua +++ b/nix/programs/nvim/lua/plugins/lsp.lua @@ -118,6 +118,10 @@ return { yamlls = { mason = false, }, + cssls = { + mason = false, + cmd = { "css-languageserver", '--stdio' }, + }, lua_ls = { mason = false, { From cd44f31f459035fa28c349620f0e0d579f9227b3 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 20 May 2024 21:31:07 +0200 Subject: [PATCH 004/330] chore: Move several programs to flakes --- nix/base/login_manager.nix | 4 - nix/flake.lock | 957 ++++++++++++++++++++++++++----------- nix/flake.nix | 21 +- nix/override/oxicalc.nix | 48 -- nix/override/oxidash.nix | 46 -- nix/override/oxinoti.nix | 44 -- nix/override/oxipaste.nix | 45 -- nix/override/oxishut.nix | 45 -- nix/override/reset.nix | 53 -- nix/programs/common.nix | 27 +- nix/programs/default.nix | 7 +- 11 files changed, 708 insertions(+), 589 deletions(-) delete mode 100644 nix/override/oxicalc.nix delete mode 100644 nix/override/oxidash.nix delete mode 100644 nix/override/oxinoti.nix delete mode 100644 nix/override/oxipaste.nix delete mode 100644 nix/override/oxishut.nix delete mode 100644 nix/override/reset.nix diff --git a/nix/base/login_manager.nix b/nix/base/login_manager.nix index ef13bbf..8b7d114 100644 --- a/nix/base/login_manager.nix +++ b/nix/base/login_manager.nix @@ -14,10 +14,6 @@ let }; in { - imports = [ - inputs.hyprland.nixosModules.default - ]; - services.xserver.displayManager.session = [ { manage = "desktop"; diff --git a/nix/flake.lock b/nix/flake.lock index 9637b39..1c2fdff 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -3,7 +3,7 @@ "Hyprspace": { "inputs": { "hyprland": [ - "hyprland" + "nixpkgs" ] }, "locked": { @@ -81,9 +81,135 @@ "type": "github" } }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "oxicalc", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "oxidash", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": [ + "oxinoti", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": [ + "oxipaste", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_6": { + "inputs": { + "nixpkgs-lib": [ + "oxishut", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ + "reset", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { - "systems": "systems_4" + "systems": "systems_3" }, "locked": { "lastModified": 1705309234, @@ -100,6 +226,24 @@ } }, "flake-utils_2": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { "inputs": { "systems": "systems_5" }, @@ -117,6 +261,60 @@ "type": "github" } }, + "flake-utils_4": { + "inputs": { + "systems": "systems_6" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "inputs": { + "systems": "systems_7" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "inputs": { + "systems": "systems_8" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -124,11 +322,11 @@ ] }, "locked": { - "lastModified": 1715486357, - "narHash": "sha256-4pRuzsHZOW5W4CsXI9uhKtiJeQSUoe1d2M9mWU98HC4=", + "lastModified": 1715930644, + "narHash": "sha256-W9pyM3/vePxrffHtzlJI6lDS3seANQ+Nqp+i58O46LI=", "owner": "nix-community", "repo": "home-manager", - "rev": "44677a1c96810a8e8c4ffaeaad10c842402647c1", + "rev": "e3ad5108f54177e6520535768ddbf1e6af54b59d", "type": "github" }, "original": { @@ -137,119 +335,13 @@ "type": "github" } }, - "hyprcursor": { - "inputs": { - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1713612213, - "narHash": "sha256-zJboXgWNpNhKyNF8H/3UYzWkx7w00TOCGKi3cwi+tsw=", - "owner": "hyprwm", - "repo": "hyprcursor", - "rev": "cab4746180f210a3c1dd3d53e45c510e309e90e1", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprcursor", - "type": "github" - } - }, - "hyprland": { - "inputs": { - "hyprcursor": "hyprcursor", - "hyprlang": "hyprlang", - "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_2", - "systems": "systems", - "xdph": "xdph" - }, - "locked": { - "lastModified": 1715635266, - "narHash": "sha256-c4l89M8/x4h0VHds7IC1W8yfu27lVN4uoeY57/OmI5Q=", - "ref": "refs/heads/main", - "rev": "ba696521930059aa489ac6ffabe28553edaf2fa3", - "revCount": 4683, - "submodules": true, - "type": "git", - "url": "https://github.com/hyprwm/Hyprland" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://github.com/hyprwm/Hyprland" - } - }, - "hyprland-protocols": { - "inputs": { - "nixpkgs": [ - "hyprland", - "xdph", - "nixpkgs" - ], - "systems": [ - "hyprland", - "xdph", - "systems" - ] - }, - "locked": { - "lastModified": 1691753796, - "narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=", - "owner": "hyprwm", - "repo": "hyprland-protocols", - "rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-protocols", - "type": "github" - } - }, "hyprlang": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1713121246, - "narHash": "sha256-502X0Q0fhN6tJK7iEUA8CghONKSatW/Mqj4Wappd++0=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "78fcaa27ae9e1d782faa3ff06c8ea55ddce63706", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprlang_2": { "inputs": { "nixpkgs": [ "hyprlock", "nixpkgs" ], - "systems": "systems_2" + "systems": "systems" }, "locked": { "lastModified": 1713121246, @@ -267,16 +359,16 @@ }, "hyprlock": { "inputs": { - "hyprlang": "hyprlang_2", - "nixpkgs": "nixpkgs_3", - "systems": "systems_3" + "hyprlang": "hyprlang", + "nixpkgs": "nixpkgs_2", + "systems": "systems_2" }, "locked": { - "lastModified": 1715610114, - "narHash": "sha256-ffGEiaL5bVR559adZNHsYBWMefhX8G9oyTrKorbx3h8=", + "lastModified": 1715970545, + "narHash": "sha256-WD6Iyb9DV1R5a2A0UIVT8GyzRhs9ntOPGKDubEUUVNs=", "owner": "hyprwm", "repo": "hyprlock", - "rev": "386a1e6fc290fc33177d0b44cd393e32c5433925", + "rev": "997f222b0fec6ac74ec718b53600e77c2b26860a", "type": "github" }, "original": { @@ -285,44 +377,19 @@ "type": "github" } }, - "hyprwayland-scanner": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1715608589, - "narHash": "sha256-vimNaLjLcoNIvBhF37GaB6PRYEvKMamY3UnDE9M5MW8=", - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "rev": "65c2636484e5cb00583b8a7446c3fb657f568883", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "type": "github" - } - }, "ironbar": { "inputs": { "crane": "crane", "naersk": "naersk", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_4", "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1715676519, - "narHash": "sha256-JQywRoP+oPLP+vMH4X8DCmiwE2kp2GC0kdHlejUvRTo=", + "lastModified": 1716154552, + "narHash": "sha256-JZqgSOeU2MalRnF75gQ1vZu3VftGfmIgkxPMpkd218o=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "407d58606d6bd45b4ab73322cefb08f460431897", + "rev": "4ad4b0e070cc4e271251763db7210e70857d68ca", "type": "github" }, "original": { @@ -333,7 +400,7 @@ }, "naersk": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1713520724, @@ -382,11 +449,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1715458492, - "narHash": "sha256-q0OFeZqKQaik2U8wwGDsELEkgoZMK7gvfF6tTXkpsqE=", + "lastModified": 1716061101, + "narHash": "sha256-H0eCta7ahEgloGIwE/ihkyGstOGu+kQwAiHvwVoXaA0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8e47858badee5594292921c2668c11004c3b0142", + "rev": "e7cc61784ddf51c81487637b3031a6dd2d6673a2", "type": "github" }, "original": { @@ -396,85 +463,7 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1715534503, - "narHash": "sha256-5ZSVkFadZbFP1THataCaSf0JH2cAH3S29hU9rrxTEqk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "2057814051972fa1453ddfb0d98badbea9b83c06", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1712963716, - "narHash": "sha256-WKm9CvgCldeIVvRz87iOMi8CFVB1apJlkUT4GGvA0iM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "cfd6b5fc90b15709b780a5a1619695a88505a176", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1714314149, - "narHash": "sha256-yNAevSKF4krRWacmLUsLK7D7PlfuY3zF0lYnGYNi9vQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "cf8cc1201be8bc71b7cbbbdaf349b22f4f99c7ae", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1714253743, - "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1715534503, - "narHash": "sha256-5ZSVkFadZbFP1THataCaSf0JH2cAH3S29hU9rrxTEqk=", - "owner": "NixOs", - "repo": "nixpkgs", - "rev": "2057814051972fa1453ddfb0d98badbea9b83c06", - "type": "github" - }, - "original": { - "owner": "NixOs", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_7": { + "nixpkgs_10": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -490,13 +479,29 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_11": { "locked": { - "lastModified": 1715413075, - "narHash": "sha256-FCi3R1MeS5bVp0M0xTheveP6hhcCYfW/aghSTPebYL4=", + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e4e7a43a9db7e22613accfeb1005cca1b2b1ee0d", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_12": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", "type": "github" }, "original": { @@ -506,17 +511,346 @@ "type": "github" } }, + "nixpkgs_13": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_15": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_16": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_17": { + "locked": { + "lastModified": 1716062047, + "narHash": "sha256-OhysviwHQz4p2HZL4g7XGMLoUbWMjkMr/ogaR3VUYNA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "02923630b89aa1ab36ef8e422501a6f4fd4b2016", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1712963716, + "narHash": "sha256-WKm9CvgCldeIVvRz87iOMi8CFVB1apJlkUT4GGvA0iM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cfd6b5fc90b15709b780a5a1619695a88505a176", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1714314149, + "narHash": "sha256-yNAevSKF4krRWacmLUsLK7D7PlfuY3zF0lYnGYNi9vQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cf8cc1201be8bc71b7cbbbdaf349b22f4f99c7ae", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1714253743, + "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOs", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOs", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "oxicalc": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1716225554, + "narHash": "sha256-IenHIQgKdKJTt02VJLQ+q8EunIkMwQ57XFWyKO+rb7s=", + "owner": "DashieTM", + "repo": "OxiCalc", + "rev": "a3fa5d76941278fd0f586817dcd04be134159bd8", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiCalc", + "type": "github" + } + }, + "oxidash": { + "inputs": { + "flake-parts": "flake-parts_3", + "nixpkgs": "nixpkgs_7", + "rust-overlay": "rust-overlay_2" + }, + "locked": { + "lastModified": 1716232192, + "narHash": "sha256-V5tQMMUc4zDWfY/91KWagutrfmyDOEOo0vWkhFvMJeQ=", + "owner": "DashieTM", + "repo": "OxiDash", + "rev": "aae01f9feadd9111869bdc940ca7404862d4957f", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiDash", + "type": "github" + } + }, + "oxinoti": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_9", + "rust-overlay": "rust-overlay_3" + }, + "locked": { + "lastModified": 1716232356, + "narHash": "sha256-2dvL/U5TnWkpd0f+GASwg1Bhnt0f8p3dfOk0lYJ6iL8=", + "owner": "DashieTM", + "repo": "OxiNoti", + "rev": "e07315309d901ae41aefae758bd590d92ccf3106", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiNoti", + "type": "github" + } + }, + "oxipaste": { + "inputs": { + "flake-parts": "flake-parts_5", + "nixpkgs": "nixpkgs_11", + "rust-overlay": "rust-overlay_4" + }, + "locked": { + "lastModified": 1716233251, + "narHash": "sha256-+WE1qMd4N4CElo/vm/WZ0Aex77kzm5nyWkr2PAD7Gus=", + "owner": "DashieTM", + "repo": "OxiPaste", + "rev": "5d357c6fc8f4dd84a4a850dab3485bfe5a6a078c", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiPaste", + "type": "github" + } + }, + "oxishut": { + "inputs": { + "flake-parts": "flake-parts_6", + "nixpkgs": "nixpkgs_13", + "rust-overlay": "rust-overlay_5" + }, + "locked": { + "lastModified": 1716232799, + "narHash": "sha256-Pzm45/GZ0Tn38EIx2ojxpwEFUWfy0XSe01UGILGJdvA=", + "owner": "DashieTM", + "repo": "OxiShut", + "rev": "2a123b8710da615be3d5d59a367c49c802a36430", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiShut", + "type": "github" + } + }, + "reset": { + "inputs": { + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_15", + "rust-overlay": "rust-overlay_6" + }, + "locked": { + "lastModified": 1716233038, + "narHash": "sha256-JuK1NvxtoC58/9RM70ClkCzXPHYipPiRonlGPO3JXcQ=", + "owner": "Xetibo", + "repo": "ReSet", + "rev": "397c48ae43e177203d5799aabec145e938d63a57", + "type": "github" + }, + "original": { + "owner": "Xetibo", + "repo": "ReSet", + "type": "github" + } + }, "root": { "inputs": { "Hyprspace": "Hyprspace", "anyrun": "anyrun", "home-manager": "home-manager", - "hyprland": "hyprland", "hyprlock": "hyprlock", "ironbar": "ironbar", "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_6", - "rust-overlay": "rust-overlay_2", + "nixpkgs": "nixpkgs_5", + "oxicalc": "oxicalc", + "oxidash": "oxidash", + "oxinoti": "oxinoti", + "oxipaste": "oxipaste", + "oxishut": "oxishut", + "reset": "reset", "sops-nix": "sops-nix" } }, @@ -545,11 +879,75 @@ "rust-overlay_2": { "inputs": { "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_7" + "nixpkgs": "nixpkgs_8" }, "locked": { - "lastModified": 1715652909, - "narHash": "sha256-aCLEDvzL1j51Rf2mCFOqK1mieMO3pAn5ItCIdr5h2LA=", + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "type": "tarball", + "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + } + }, + "rust-overlay_3": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_10" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "type": "tarball", + "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + } + }, + "rust-overlay_4": { + "inputs": { + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_12" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "type": "tarball", + "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + } + }, + "rust-overlay_5": { + "inputs": { + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_14" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "type": "tarball", + "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + } + }, + "rust-overlay_6": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_16" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", "type": "tarball", "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" }, @@ -560,15 +958,15 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_8", + "nixpkgs": "nixpkgs_17", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1715482972, - "narHash": "sha256-y1uMzXNlrVOWYj1YNcsGYLm4TOC2aJrwoUY1NjQs9fM=", + "lastModified": 1716087663, + "narHash": "sha256-zuSAGlx8Qk0OILGCC2GUyZ58/SJ5R3GZdeUNQ6IS0fQ=", "owner": "Mic92", "repo": "sops-nix", - "rev": "b6cb5de2ce57acb10ecdaaf9bbd62a5ff24fa02e", + "rev": "0bf1808e70ce80046b0cff821c019df2b19aabf5", "type": "github" }, "original": { @@ -609,16 +1007,16 @@ }, "systems_3": { "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default-linux", + "repo": "default", "type": "github" } }, @@ -652,33 +1050,48 @@ "type": "github" } }, - "xdph": { - "inputs": { - "hyprland-protocols": "hyprland-protocols", - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, + "systems_6": { "locked": { - "lastModified": 1714662532, - "narHash": "sha256-Pj2xGSYhapYbXL7sk7TTlOtCZcTfPQoL3fPbZeg7L4Y=", - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "rev": "1f228ba2f1f254195c0b571302b37482861abee3", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_7": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_8": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", "type": "github" } } diff --git a/nix/flake.nix b/nix/flake.nix index 4735efa..c73e40c 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -16,24 +16,25 @@ sops-nix.url = "github:Mic92/sops-nix"; - hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; - hyprlock.url = "github:hyprwm/hyprlock"; Hyprspace = { url = "github:KZDKM/Hyprspace"; - inputs.hyprland.follows = "hyprland"; + # Hyprspace uses latest Hyprland. We declare this to keep them in sync. + inputs.hyprland.follows = "nixpkgs"; }; ironbar = { url = "github:JakeStanger/ironbar"; }; - rust-overlay = { - url = "https://github.com/oxalica/rust-overlay/archive/master.tar.gz"; - }; - 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"; + reset.url = "github:Xetibo/ReSet"; }; outputs = { ... }@inputs: @@ -43,12 +44,6 @@ config = { allowUnfree = true; }; - overlays = [ - # because allowing rust nightly is too hard by default.... - (import - inputs.rust-overlay - ) - ]; }; base_imports = [ inputs.home-manager.nixosModules.home-manager diff --git a/nix/override/oxicalc.nix b/nix/override/oxicalc.nix deleted file mode 100644 index 7f4e20c..0000000 --- a/nix/override/oxicalc.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ pkgs -, lib -, fetchFromGitHub -}: -let - toolchain = pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.minimal); - rustPlatform = pkgs.makeRustPlatform { - cargo = toolchain; - rustc = toolchain; - }; -in -rustPlatform.buildRustPackage rec { - pname = "oxicalc"; - version = "0.2.4"; - - src = fetchFromGitHub { - owner = "DashieTM"; - repo = "OxiCalc"; - rev = "${version}"; - hash = "sha256-7qrnA0jnLg2mckpxCe66+axU3jE6nOBu7HefmP8I2Xc="; - }; - - cargoHash = "sha256-nxLXT9SVorsgj7qzwX8Ipx8SDvyTYMAcpepTg62QL7o="; - - nativeBuildInputs = with pkgs;[ - pkg-config - wrapGAppsHook4 - ]; - - buildInputs = with pkgs;[ - gtk4 - libadwaita - ]; - - postInstall = '' - install -D --mode=444 $src/${pname}.desktop $out/share/applications/${pname}.desktop - install -D --mode=444 $src/${pname}.svg $out/share/pixmaps/${pname}.svg - ''; - - meta = with lib; { - description = "A small, simple calculator written in rust/gtk4"; - homepage = "https://github.com/DashieTM/OxiCalc"; - changelog = "https://github.com/DashieTM/OxiCalc/releases/tag/${version}"; - license = licenses.gpl3; - maintainers = with maintainers; [ DashieTM ]; - mainProgram = "oxicalc"; - }; -} diff --git a/nix/override/oxidash.nix b/nix/override/oxidash.nix deleted file mode 100644 index 60b78a1..0000000 --- a/nix/override/oxidash.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ pkgs -, lib -, fetchFromGitHub -}: -let - toolchain = pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.minimal); - rustPlatform = pkgs.makeRustPlatform { - cargo = toolchain; - rustc = toolchain; - }; -in -rustPlatform.buildRustPackage rec { - pname = "oxidash"; - version = "1.0"; - - src = fetchFromGitHub { - owner = "DashieTM"; - repo = "OxiDash"; - rev = "${version}"; - hash = "sha256-GVkmqwn3mHriMHUfEej4LW0MaYURqtsftC5L+Cox+5E="; - }; - - cargoHash = "sha256-seFHiBht0vc+iqQw5bd22qVvdhCMqDthWuth3NTm8OY="; - - nativeBuildInputs = with pkgs;[ - pkg-config - glib - wrapGAppsHook4 - ]; - - buildInputs = with pkgs;[ - dbus - gtk4 - gtk4-layer-shell - libadwaita - ]; - - meta = with lib; { - description = "A work in progress notification daemon made with rust and gtk."; - homepage = "https://github.com/DashieTM/OxiDash"; - changelog = "https://github.com/DashieTM/OxiDash/releases/tag/${version}"; - license = licenses.gpl3; - maintainers = with maintainers; [ DashieTM ]; - mainProgram = "oxidash"; - }; -} diff --git a/nix/override/oxinoti.nix b/nix/override/oxinoti.nix deleted file mode 100644 index 30c76b2..0000000 --- a/nix/override/oxinoti.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ pkgs -, lib -, fetchFromGitHub -}: -let - toolchain = pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.minimal); - rustPlatform = pkgs.makeRustPlatform { - cargo = toolchain; - rustc = toolchain; - }; -in -rustPlatform.buildRustPackage rec { - pname = "oxinoti"; - version = "1.0"; - - src = fetchFromGitHub { - owner = "DashieTM"; - repo = "OxiNoti"; - rev = "${version}"; - hash = "sha256-fsrtLb14mCuYb1ibJAzPCrPNXdlcU/J7ZGYoVfppFBM="; - }; - - cargoHash = "sha256-jIdev6K5MQ8jASDo1KWU89rSLd9UhI2MhTT4l7pP+tA="; - - nativeBuildInputs = with pkgs;[ - pkg-config - wrapGAppsHook4 - ]; - - buildInputs = with pkgs;[ - dbus - gtk3 - gtk-layer-shell - ]; - - meta = with lib; { - description = "A work in progress notification daemon made with rust and gtk."; - homepage = "https://github.com/DashieTM/OxiNoti"; - changelog = "https://github.com/DashieTM/OxiNoti/releases/tag/${version}"; - license = licenses.gpl3; - maintainers = with maintainers; [ DashieTM ]; - mainProgram = "oxinoti"; - }; -} diff --git a/nix/override/oxipaste.nix b/nix/override/oxipaste.nix deleted file mode 100644 index 463fe95..0000000 --- a/nix/override/oxipaste.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ pkgs -, lib -, fetchFromGitHub -}: -let - toolchain = pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.minimal); - rustPlatform = pkgs.makeRustPlatform { - cargo = toolchain; - rustc = toolchain; - }; -in -rustPlatform.buildRustPackage rec { - pname = "oxipaste"; - version = "1.0"; - - src = fetchFromGitHub { - owner = "DashieTM"; - repo = "OxiPaste"; - rev = "${version}"; - hash = "sha256-2copt808b4cpmE8HO2H960xLs7OegvOUYYS/6z7fNMk="; - }; - - cargoHash = "sha256-RXaL5y0hohP9VJ7IJCEfdJjyxwY2l555xSwRa9ZiNKc="; - - nativeBuildInputs = with pkgs;[ - pkg-config - wrapGAppsHook4 - ]; - - buildInputs = with pkgs;[ - dbus - gtk4 - libadwaita - gtk4-layer-shell - ]; - - meta = with lib; { - description = "A work in progress notification daemon made with rust and gtk."; - homepage = "https://github.com/DashieTM/OxiPaste"; - changelog = "https://github.com/DashieTM/OxiPaste/releases/tag/${version}"; - license = licenses.gpl3; - maintainers = with maintainers; [ DashieTM ]; - mainProgram = "oxipaste"; - }; -} diff --git a/nix/override/oxishut.nix b/nix/override/oxishut.nix deleted file mode 100644 index 98036bb..0000000 --- a/nix/override/oxishut.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ pkgs -, lib -, fetchFromGitHub -}: -let - toolchain = pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.minimal); - rustPlatform = pkgs.makeRustPlatform { - cargo = toolchain; - rustc = toolchain; - }; -in -rustPlatform.buildRustPackage rec { - pname = "oxishut"; - version = "1.0"; - - src = fetchFromGitHub { - owner = "DashieTM"; - repo = "OxiShut"; - rev = "${version}"; - hash = "sha256-aCNnNxmIHq+IjjviWNGSHfdXT55s367GTAeQoaTZ/KA="; - }; - - cargoHash = "sha256-UeoBSHwMGfhkgRT7kmelcG3/omtB03Wh4IZrTy3yf3Y="; - - nativeBuildInputs = with pkgs;[ - pkg-config - glib - wrapGAppsHook4 - ]; - - buildInputs = with pkgs;[ - gtk4 - libadwaita - gtk4-layer-shell - ]; - - meta = with lib; { - description = ""; - homepage = "https://github.com/DashieTM/OxiShut"; - changelog = "https://github.com/DashieTM/OxiShut/releases/tag/${version}"; - license = licenses.gpl3; - maintainers = with maintainers; [ DashieTM ]; - mainProgram = "oxishut"; - }; -} diff --git a/nix/override/reset.nix b/nix/override/reset.nix deleted file mode 100644 index 50f4f83..0000000 --- a/nix/override/reset.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ pkgs -, lib -, fetchFromGitHub -}: -let - toolchain = pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.minimal); - rustPlatform = pkgs.makeRustPlatform { - cargo = toolchain; - rustc = toolchain; - }; -in -rustPlatform.buildRustPackage rec { - pname = "reset"; - version = "1.2.0"; - - src = fetchFromGitHub { - owner = "Xetibo"; - repo = "ReSet"; - rev = "${version}"; - hash = "sha256-6n7IaYQAw0VSkQFO1wXwQjuGbhvheiV6ZJDkpaEIeLU="; - }; - - cargoHash = "sha256-S3Z2tHQuv17Dvg2VMFDeOvDzyLfIPROcFMsYOoCscqM="; - - nativeBuildInputs = with pkgs;[ - pkg-config - glib - wrapGAppsHook4 - ]; - - buildInputs = with pkgs;[ - gtk4 - libadwaita - pulseaudio - dbus - gdk-pixbuf - gnome.adwaita-icon-theme - ]; - - postInstall = '' - install -D --mode=444 $src/${pname}.desktop $out/share/applications/${pname}.desktop - install -D --mode=444 $src/src/resources/icons/ReSet.svg $out/share/pixmaps/ReSet.svg - ''; - - meta = with lib; { - description = ""; - homepage = "https://github.com/Xetibo/ReSet"; - changelog = "https://github.com/Xetibo/ReSet/releases/tag/${version}"; - license = licenses.gpl3; - maintainers = with maintainers; [ DashieTM ]; - mainProgram = "reset"; - }; -} diff --git a/nix/programs/common.nix b/nix/programs/common.nix index e29247c..b089acf 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -48,32 +48,23 @@ in brave greetd.regreet sops - (callPackage - ../override/oxinoti.nix - { }) - (callPackage - ../override/oxidash.nix - { }) - (callPackage - ../override/oxicalc.nix - { }) - (callPackage - ../override/oxipaste.nix - { }) - (callPackage - ../override/oxishut.nix - { }) + flake-checker (callPackage ../override/streamdeck.nix { }) - (callPackage - ../override/reset.nix - { }) (callPackage ../override/cambalache.nix { }) ]; + #my own programs + programs.oxicalc.enable = true; + programs.oxinoti.enable = true; + programs.oxidash.enable = true; + programs.oxishut.enable = true; + programs.oxipaste.enable = true; + programs.reset.enable = true; + home.username = "dashie"; home.homeDirectory = "/home/dashie"; home.stateVersion = "24.05"; diff --git a/nix/programs/default.nix b/nix/programs/default.nix index c8c231a..c23ce99 100644 --- a/nix/programs/default.nix +++ b/nix/programs/default.nix @@ -1,10 +1,15 @@ { inputs, pkgs, mod, ... }: let base_imports = [ - inputs.hyprland.homeManagerModules.default inputs.hyprlock.homeManagerModules.default inputs.anyrun.homeManagerModules.default inputs.ironbar.homeManagerModules.default + inputs.oxicalc.homeManagerModules.default + inputs.oxishut.homeManagerModules.default + inputs.oxinoti.homeManagerModules.default + inputs.oxidash.homeManagerModules.default + inputs.oxipaste.homeManagerModules.default + inputs.reset.homeManagerModules.default inputs.nix-flatpak.homeManagerModules.nix-flatpak inputs.sops-nix.homeManagerModules.sops ]; From a5cc3a6056465112021e4f4a359e5fca4f44d70d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 20 May 2024 21:36:58 +0200 Subject: [PATCH 005/330] chore: update penguin spam macro --- scripts/penguin1.sh | 1 + scripts/penguin2.sh | 3 +++ streamdeck_ui_export.json | 8 ++++---- 3 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 scripts/penguin1.sh create mode 100644 scripts/penguin2.sh diff --git a/scripts/penguin1.sh b/scripts/penguin1.sh new file mode 100644 index 0000000..87dcf8e --- /dev/null +++ b/scripts/penguin1.sh @@ -0,0 +1 @@ +echo "Do you have time to talk about the lord and savior PenguinOS?" | wl-copy diff --git a/scripts/penguin2.sh b/scripts/penguin2.sh new file mode 100644 index 0000000..c256142 --- /dev/null +++ b/scripts/penguin2.sh @@ -0,0 +1,3 @@ +echo "Are you tired about ads on your operating system? About forced telemetry? About arbitrary intallation requirements like online accounts or forced hardware upgrades? +Fear not penguin is for you, free of charge and free to change. Penguin does not control you, you control penguin. +Don't delay, install penguin today: https://distrochooser.de/" | wl-copy diff --git a/streamdeck_ui_export.json b/streamdeck_ui_export.json index 8497fa5..5ef6493 100644 --- a/streamdeck_ui_export.json +++ b/streamdeck_ui_export.json @@ -283,8 +283,8 @@ "text": "", "icon": "/home/dashie/Pictures/random/Birblux/SmartSelect_20220307-191307_Samsung Internet.jpg", "keys": "", - "write": "Do you have time to talk about the lord and savior PenguinOS?", - "command": "", + "write": "", + "command": "sh /home/dashie/.config/scripts/penguin1.sh", "brightness_change": 0, "switch_page": 0, "switch_state": 0, @@ -304,8 +304,8 @@ "text": "", "icon": "/home/dashie/Pictures/random/Birblux/SmartSelect_20220307-191307_Samsung Internet.jpg", "keys": "", - "write": "Are you tired about ads on your operating system? About forced telemetry? About arbitrary intallation requirements like online accounts or forced hardware upgrades?\nFear not penguin is for you, free of charge and free to change. Penguin does not control you, you control penguin.\nDon't delay, install penguin today: https://distrochooser.de/", - "command": "", + "write": "", + "command": "sh /home/dashie/.config/scripts/penguin2.sh", "brightness_change": 0, "switch_page": 0, "switch_state": 0, From 5c0e02004382429df5a4f623b09943e3ca0a6352 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 20 May 2024 22:10:13 +0200 Subject: [PATCH 006/330] chore: downgrade rust because ldd funny.... --- nix/flake.lock | 91 ++++++++++++--------- nix/programs/individual_configs/default.nix | 1 + nix/programs/individual_configs/direnv.nix | 7 ++ 3 files changed, 61 insertions(+), 38 deletions(-) create mode 100644 nix/programs/individual_configs/direnv.nix diff --git a/nix/flake.lock b/nix/flake.lock index 1c2fdff..d196fd1 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -497,11 +497,11 @@ }, "nixpkgs_12": { "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "lastModified": 1716190602, + "narHash": "sha256-xYRimrR0duWvokWQEvB87bSsICeCvvX9DxpUOzCfsDE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "rev": "5a5ac83292c7842072318f57d68a48474f8bd34d", "type": "github" }, "original": { @@ -743,11 +743,11 @@ "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1716232192, - "narHash": "sha256-V5tQMMUc4zDWfY/91KWagutrfmyDOEOo0vWkhFvMJeQ=", + "lastModified": 1716235599, + "narHash": "sha256-6LDrLEfPzwbd5nEcis8us4BA18YhoWkzMVwafCJ5N/A=", "owner": "DashieTM", "repo": "OxiDash", - "rev": "aae01f9feadd9111869bdc940ca7404862d4957f", + "rev": "fe6984abc73f75a64b0a03231068c20f53ec4f76", "type": "github" }, "original": { @@ -763,11 +763,11 @@ "rust-overlay": "rust-overlay_3" }, "locked": { - "lastModified": 1716232356, - "narHash": "sha256-2dvL/U5TnWkpd0f+GASwg1Bhnt0f8p3dfOk0lYJ6iL8=", + "lastModified": 1716235566, + "narHash": "sha256-1U4/h0YyuoOERjQE68yQZVsDdIGl43OprDplSGBMhYY=", "owner": "DashieTM", "repo": "OxiNoti", - "rev": "e07315309d901ae41aefae758bd590d92ccf3106", + "rev": "c52c330d59a3b066e94618adbe9a7be5b9cfde24", "type": "github" }, "original": { @@ -783,11 +783,11 @@ "rust-overlay": "rust-overlay_4" }, "locked": { - "lastModified": 1716233251, - "narHash": "sha256-+WE1qMd4N4CElo/vm/WZ0Aex77kzm5nyWkr2PAD7Gus=", + "lastModified": 1716235097, + "narHash": "sha256-kTsSNciMnp3y/QOPseB/QlhRqVxrm7teRCMl05OIiBs=", "owner": "DashieTM", "repo": "OxiPaste", - "rev": "5d357c6fc8f4dd84a4a850dab3485bfe5a6a078c", + "rev": "3f494c1a3dd093e3c5761520554977a9dec33a3a", "type": "github" }, "original": { @@ -803,11 +803,11 @@ "rust-overlay": "rust-overlay_5" }, "locked": { - "lastModified": 1716232799, - "narHash": "sha256-Pzm45/GZ0Tn38EIx2ojxpwEFUWfy0XSe01UGILGJdvA=", + "lastModified": 1716235696, + "narHash": "sha256-qqN2ev97ff1Yftr+8YS7Pm2/kk8SpQU8uxplbQYJGho=", "owner": "DashieTM", "repo": "OxiShut", - "rev": "2a123b8710da615be3d5d59a367c49c802a36430", + "rev": "d38d5c892b7ae2420715cbb6b4944abb76b49f9d", "type": "github" }, "original": { @@ -823,11 +823,11 @@ "rust-overlay": "rust-overlay_6" }, "locked": { - "lastModified": 1716233038, - "narHash": "sha256-JuK1NvxtoC58/9RM70ClkCzXPHYipPiRonlGPO3JXcQ=", + "lastModified": 1716235655, + "narHash": "sha256-tTMaRDleLa7oBBwjlELt3NefpE1iwz4OLzyNIDGFjmY=", "owner": "Xetibo", "repo": "ReSet", - "rev": "397c48ae43e177203d5799aabec145e938d63a57", + "rev": "3cb7cd2d7f24bd1f270c9cdb5e519dde7936a6f4", "type": "github" }, "original": { @@ -884,12 +884,15 @@ "locked": { "lastModified": 1716171463, "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "type": "tarball", - "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, "rust-overlay_3": { @@ -900,12 +903,15 @@ "locked": { "lastModified": 1716171463, "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "type": "tarball", - "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, "rust-overlay_4": { @@ -916,12 +922,15 @@ "locked": { "lastModified": 1716171463, "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "type": "tarball", - "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, "rust-overlay_5": { @@ -932,12 +941,15 @@ "locked": { "lastModified": 1716171463, "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "type": "tarball", - "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, "rust-overlay_6": { @@ -948,12 +960,15 @@ "locked": { "lastModified": 1716171463, "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "type": "tarball", - "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/oxalica/rust-overlay/archive/master.tar.gz" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, "sops-nix": { diff --git a/nix/programs/individual_configs/default.nix b/nix/programs/individual_configs/default.nix index 4416c73..34dd147 100644 --- a/nix/programs/individual_configs/default.nix +++ b/nix/programs/individual_configs/default.nix @@ -5,5 +5,6 @@ ./fish.nix ./ncspot.nix ./ssh.nix + ./direnv.nix ]; } diff --git a/nix/programs/individual_configs/direnv.nix b/nix/programs/individual_configs/direnv.nix new file mode 100644 index 0000000..615b570 --- /dev/null +++ b/nix/programs/individual_configs/direnv.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: { + xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" { + global = { + warn_timeout = "-1s"; + }; + }; +} From e536387ffe8c9fc3214571dc1260e50761d3c455 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 21 May 2024 18:23:59 +0200 Subject: [PATCH 007/330] overheating: add patched ssdt --- nix/flake.lock | 12 ++++++------ nix/hardware/overheating/configuration.nix | 3 ++- nix/hardware/overheating/dsdt.nix | 20 ++++++++++++++++++++ nix/hardware/overheating/ssdt6.aml | Bin 0 -> 5404 bytes nix/programs/coding.nix | 2 +- nix/programs/hyprland/config.nix | 3 ++- nix/programs/individual_configs/default.nix | 1 + nix/programs/individual_configs/git.nix | 16 ++++++++++++++++ nix/programs/nvim/lua/plugins/plugins.lua | 7 +++++++ 9 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 nix/hardware/overheating/dsdt.nix create mode 100644 nix/hardware/overheating/ssdt6.aml create mode 100644 nix/programs/individual_configs/git.nix diff --git a/nix/flake.lock b/nix/flake.lock index d196fd1..e54dc3b 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -364,11 +364,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1715970545, - "narHash": "sha256-WD6Iyb9DV1R5a2A0UIVT8GyzRhs9ntOPGKDubEUUVNs=", + "lastModified": 1716242428, + "narHash": "sha256-9itkgx3Sl8xPToweCHQoLfvyiTX/b5PZb7clYcKYyIs=", "owner": "hyprwm", "repo": "hyprlock", - "rev": "997f222b0fec6ac74ec718b53600e77c2b26860a", + "rev": "18d2d2ba6af6ac76e4714fae2737a55d223716f8", "type": "github" }, "original": { @@ -977,11 +977,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1716087663, - "narHash": "sha256-zuSAGlx8Qk0OILGCC2GUyZ58/SJ5R3GZdeUNQ6IS0fQ=", + "lastModified": 1716244104, + "narHash": "sha256-XXbqfkyWe0d0O+zqRQWi2oXi6wYDmTzXedFkBRwx1VI=", "owner": "Mic92", "repo": "sops-nix", - "rev": "0bf1808e70ce80046b0cff821c019df2b19aabf5", + "rev": "fddd52460e3332eedd8a0043af5675338a5b3e0b", "type": "github" }, "original": { diff --git a/nix/hardware/overheating/configuration.nix b/nix/hardware/overheating/configuration.nix index 13161fa..f213933 100644 --- a/nix/hardware/overheating/configuration.nix +++ b/nix/hardware/overheating/configuration.nix @@ -3,12 +3,13 @@ imports = [ ../../modules/ironbar_config.nix ../../modules/boot_params.nix + ./dsdt.nix ]; boot.kernelPackages = pkgs.linuxPackages_latest; networking.hostName = "overheating"; programs.ironbar.monitor = "eDP-1"; programs.ironbar.scale = "2.0"; - programs.boot.boot_params = [ ]; + programs.boot.boot_params = [ "rtc_cmos.use_acpi_alarm=1" ]; hardware.bluetooth.enable = true; hardware.bluetooth.powerOnBoot = true; } diff --git a/nix/hardware/overheating/dsdt.nix b/nix/hardware/overheating/dsdt.nix new file mode 100644 index 0000000..285cb33 --- /dev/null +++ b/nix/hardware/overheating/dsdt.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: +let + # credit to benley: https://github.com/benley/dotfiles/commit/325748c3a8553d55c9fab08654a77b252aa0fde7 + patched_ssdt = pkgs.stdenv.mkDerivation { + name = "patched_ssdt"; + src = ./.; + buildInputs = [ pkgs.libarchive ]; + installPhase = '' + mkdir -p kernel/firmware/acpi + cp ${./ssdt6.aml} kernel/firmware/acpi/ssdt6.aml + mkdir -p $out + echo kernel/firmware/acpi/ssdt6.aml | bsdcpio -v -o -H newc -R 0:0 > $out/lenotrolli-ssdt.img + ''; + }; +in + +{ + boot.kernelParams = [ "mem_sleep_default=deep" ]; + boot.initrd.prepend = [ "${patched_ssdt}/lenotrolli-ssdt.img" ]; +} diff --git a/nix/hardware/overheating/ssdt6.aml b/nix/hardware/overheating/ssdt6.aml new file mode 100644 index 0000000000000000000000000000000000000000..d8cbadda6fec281fadd009acd8451d39c76cb2bb GIT binary patch literal 5404 zcmWFzb_tOYWnf@>>Er6>ALbt#;2OZdz`(%Dz`)??7vdw%uAs2MFN#4lMlU|tDL%m2 z(}0aZG)A8V#&Zt{Fm-Va!xXjf3-fgat7V0$^$Bn`aCJ6_cXssgW&oLjA>-=o>yKT= z-O$7UmyD??P8oCTG9KP8PS|C9J)M2A%LMqix?q3ys+6=1S3@UC06*q_4V-B^)9IDP7YQ8ztd~>Mz z=1}v^q2`!F&9Q)*V*xeC!ibdtgOQ?C4Q1dLI=2=3`vxJyuXaF(K&;Vkdp#j7^Lj#C;h6WJx3=JUW85%&$Gcm_e4)KpM)Sbo_5O*6x)0r_eof%s|?YDs1ZvhDx zV+*ML7EtpnpyomSYitQM&l2Jv69W@)yqXwTaDw91#1LYxi3yB`=r=Ki_}j!3DsBp~ z*TfWJuZbzdUK29|4tCKPUlV6YIGeaZXftT|nnAXXA0hKQT zvWT*pBi_X|K!}GCD&iUtFCY-Zz!B^dVZs&45$qFS!YJVRF$PpXM>jcq3~&vI=ZN?4 zbm4XMb@4PXFtB9chjc+rSYY>gmGB;o=(RBjjVl%)q548etVR$0}+G5*1@%L@_tOjDd@ZQAiq1*w9cfI6O3%fq{z|Q_cvt zT!5KgxR0YBR($~$dZ5Y+EGLC-pSfO`yCYZ%!zt!^j!}+2U^y(>9GwHeQdqQkxHyL5 zl8f+gHUP`1V!8w*rx)ZA>ZBJC6k-Zig~jv;4`)NL9EPJT^gIJ_SZt{m;o)oq)`npu zSk4%aoCz*DKMzlcXRw&*=iv!)CL-p2LfrJ64Gatz7`d2*FoX@U3mah(!vZ5vJHyw+%z#%x z!Qa(a*D=^f7m~AG1N1;j6l@g?D%`k0?L!6zh9zA53v~%9H-IZ=5b6_6$(lWsAW8;?%-m^A`UKy7U+NsF?2CzSfB(l#L&eUt0Cr~(g&j0 z7_QhDhhj^xVn2}kK+SK41^ z8O*|J7_=&3SYQBB5B8WENIl47*eo~KgH#j@3&8Gm1N#o_UJw(96`(qTfdQL)%|S&x zsJ4c<*Ax_1VE3B37~?PuT!%s3YX(vecCQ(3_2Bvtq5;(FVORjt0AgXa09>(vS_%*k zg8E0$2mvv1Yca;|L9lTqpnM7rFHkoNW*jarTIxZnC~V;cmIH;?OkWdId3o$YzqYH5{F{EIKF*BsX^QD4< zYKnp`h)@j%lPO#bGZPq+l2cL{N)zD9VC4+Rm58DR#9Qdgw?H49U%8k-Jy32DI}BY0 z6$S0gD7^fCYzy zsVOcA^Cb)m-Lw`sNfy", "Yazi", desc = "Toggle Yazi" }, }, }, + { + "sindrets/diffview.nvim", + keys = { + { "gd", "DiffviewOpen", desc = "Toggle Difftool" }, + }, + }, + { "akinsho/git-conflict.nvim", version = "*", config = true }, } From 61e08fe876b3ae90aa083e70a6ba160ffe1d580d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 21 May 2024 19:19:35 +0200 Subject: [PATCH 008/330] overheating: Add binary firmware for speakers --- nix/hardware/overheating/configuration.nix | 1 + nix/hardware/overheating/firmware.nix | 18 ++++++++++++++++++ .../overheating/firmware/TAS2XXX38BB.bin | Bin 0 -> 64504 bytes .../overheating/firmware/TIAS2781RCA4.bin | Bin 0 -> 2740 bytes .../firmware/TIAS2781RCA4.bin.orig | Bin 0 -> 2740 bytes nix/hardware/overheating/overheating.nix | 2 +- 6 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 nix/hardware/overheating/firmware.nix create mode 100644 nix/hardware/overheating/firmware/TAS2XXX38BB.bin create mode 100644 nix/hardware/overheating/firmware/TIAS2781RCA4.bin create mode 100644 nix/hardware/overheating/firmware/TIAS2781RCA4.bin.orig diff --git a/nix/hardware/overheating/configuration.nix b/nix/hardware/overheating/configuration.nix index f213933..576010f 100644 --- a/nix/hardware/overheating/configuration.nix +++ b/nix/hardware/overheating/configuration.nix @@ -4,6 +4,7 @@ ../../modules/ironbar_config.nix ../../modules/boot_params.nix ./dsdt.nix + ./firmware.nix ]; boot.kernelPackages = pkgs.linuxPackages_latest; networking.hostName = "overheating"; diff --git a/nix/hardware/overheating/firmware.nix b/nix/hardware/overheating/firmware.nix new file mode 100644 index 0000000..d46f8b4 --- /dev/null +++ b/nix/hardware/overheating/firmware.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: +{ + hardware.firmware = [ + ( + # lenovo is such a good manufacturer!!1!11! + # credit for the binary files: https://github.com/darinpp/yoga-slim-7 + pkgs.stdenv.mkDerivation { + name = "firmware-lenotrolli"; + src = ./firmware; + installPhase = '' + mkdir -p $out/lib/firmware + cp ${./firmware/TAS2XXX38BB.bin} $out/lib/firmware/TAS2XXX38BB.bin + cp ${./firmware/TIAS2781RCA4.bin} $out/lib/firmware/TIAS2781RCA4.bin + ''; + } + ) + ]; +} diff --git a/nix/hardware/overheating/firmware/TAS2XXX38BB.bin b/nix/hardware/overheating/firmware/TAS2XXX38BB.bin new file mode 100644 index 0000000000000000000000000000000000000000..d729b9771f31a9652f9e0096394109fc869c4405 GIT binary patch literal 64504 zcmXptH8o;j`28ct@IW;KqZ|Q3!{Lfk9^p1B1>H z2zTU>A*FeldFcwi`6;Pnd7hDhpC77`6%@{ln;C@|7~~un7#Q3bm>48_7&#ai{yC^H z{9#}~-~b4liNTghT0kAzx3>7`h91JZUENoys9xM$lUM$Q^8Vn1W zE-+*<9biykI>Er)a*2hZOIj|mFt;3HVPtaPp2QTu?$Dye!oUEspM`^g z;lK77uo(v!7<&FQtYuRWM1-%JLk>u;?=SbHHdclWEo_S1Z6_Hvwq0ac-{#1$uH}>> zPs=4m&K4&{j<&-L+Zg`q$b-}~9pGSSbz*4b_@f}e!63lEUB2(K1MdqG=j6zHS3;_)PwSV^g zVSEpg@B7Oj*>ZqU7)gyPQvgE{R1G7O1FICnf2Kl^nNap3F#7-l6WD$>4u+PK4Dvjj zY8*@+3_F+{81h>VGsrXim&paIb71IW@?cIc;-6D2lFqMH}0#kni14GLpO@@|3jGPSr9atFtIDo>j0T!-3{~5M19bjN&QxIeUnFGd3 z4mX)J7zBF$GwfkHz`%eecO9grsaoDneiGk@bg9t1x`~EUGfYdW6Ii7Dh$Y9U$hoz$DKhpxHYz7IY1O~>I z7H)=?7HtNm2<}}>0Zi8!82T7n4uJfW$-s1g;Q*5dgE>eH?0-%UhL#hY3@xWX@+=HY z9^8jOX_Vo=t|G_|P~o`zYO5C#h~WM&2)f)qva&XZk3%q|G8(kBrr1f{AW1C zRLmgR639KfrG=M)DT9H9fuWD7<%B0g%PDSf9%e~k-~p#cP(B3tpNj)5&YaBtdR!b6{kEn;*cy&=Lend#s&I9t?5} z|9Lz>YCvh3=>WqHP&#aJVqxg}3yKd0Glu^%g+2edcY*Ea;Q+;>E(ibbzrGY*r8pJCg(VE+!AwLk$0AdBJuaV7r%K;X44h9`iJhOxHXp096M@s|?Cqt6sG>{$8e0GD$gCPnW z7amO4nUWbKm;x9~TD(}8T7p1oy2LM{xZBF7NyPvM?|Ourx6IXZhOFqR9X? zr?TfiO9R+`0S*SHWCqE81BRTwzYGN+HDG@_FxZ2`?u0i(%PDP!R!;_bP`$$N&tVsj zf(%E`e+GLHAH)XbPjK9MurM&N`~#O?Odbpem;xBW85p2^2c{3;JjF1Nq2&-K1Cs-* z0s|96NRJ=~1Jelxc?PIBDD0RV7_u1t>uv{y7c8!r9Egh}ko!RT7?>DJ7?^k%Kn;h~ zH9h+Ezqg4ruz0?y|DK}(ZC^0FJEF<(s)UV!;c0>+)0s18VB#P>FgA!r)ho@w!eh?B zz?lG&0^+)53=#)pkU^50 z7;gT##UOU@5(76#P;%x>2FaN-nZ5ED{>Sk#us^*35@isOwFlMTA`HwqApQpi1_ls* zz+h}_3=#mvEdvV&1G86Pj&4?4z6k>Zg9rlygSN4;u>b=D1NY3Cv$)QjISaO5ob@26 zt)+MK^+FI<^3m8^aqZ811_q`GH=Rw7EE^aYKxWj$`7v>r=Z4swJ-ws;-(Po-bN~HY zvIS%xliQXj9Kx-MApe0d*nU<)+-%5d z>Ano)j-Yj3tRU?5!utXUJ1hCl24U+M|1=Obo)%~b!rB*t{(!IwSIBV?mT?K21i}mq z4Eq@v82CWuGB7dZFtBlenGFpL3oHsypXU7SdvU2k$llrr5DtWm!l_YlwPI}&vnJZB~ebJnvwqmZC z%2^R#!W!ml-KxJD`naOm29A?dRrTAUWK?u7VISw~-TGVEcJE7(ihL!VnW7B+Oi_;RaCxCSmHp z94LWL3>04ZY5(_5n91M_wx5@S0mRP>iu9S!v3UuI4Uz-VFtJL}bE3_?Yo~(Dttkr1 zZhK|;no(p~Aq>OR!T2B=CRS57XLoaBvMY#&=>@StVqp9EI2b^Dm>dI-R{#v-6>~8H z ztkVYD&ksre|G&gafXzABk@aVFY6r-W|F8B&V>5?Ic6L2Ohy6vcIh>L=z-lirF#KP& zYBks$juJi$_QyYh#6e}%x7#{)Ah*EW!EkdIAA|PF7_j{U91I|HK=#PADr^8@<>!;_ zL3&}BG5E3izq?;AgXpUFd0L%&3wMFo#E5~+m7FCI*UYP~3xPu>C?D z46t|xiNWMxVz9ITqVb7=%101puA6=ZMAyHxn*zd~IS1E*FsQHvVFpkI0>exU6%4{0 z3}7*_{b>xycx#sy!`3b>R%y;Z$e8hamnFzt7zUXQ!yxlv7!;nBGiS~M_sc->1;U`TB)qI< zA&h2n?66`G;&H0~|8^Eg3}om3-Em(S7`S(U+72K+rsup5L(|G75DiT~J3(x4_=|Ed z{JZ-VLyj1++I{86Kz49h{}DjOU_XN#gM=ApwVE@=6zi@=5)buq6!4Zg&_Mf**ru9u~f7KeZZd7#BUWU|sT& zpY@R9V~}132FrSOu@WY>iQUUU`J934_1>Sm8N69uURuR0rW?jq@-mdcK!cHi!TK)) z`@=n8`^7mJ7?>V^XPW!9ncJuy|mw->jrQ3cWA#g<3+ z{8f&b8LKr{mrgA0QU2LsFukQhu3CdQ!H9uLEK#h4fz7<9m?go}ZJQJsN-aUTN%$9!-( z&%kh)fq^H8fq{E70|T270|SRG1B32%P&i>=P@2#MhY3^)RHAVog7lEMCowR9*i3U7 z7#KhjGZ+{^Vho}T3=BOC450oYLkOhZ3uc3QFq0Sx|E2#99g&Gc%4`N_o z+Q7iTU;>U4J&^q%b3tQL4D%QmK>bs6K0_7*16V#BYA?b_N?1$`8Vvd%`-wD!i9v@! z7UX5PdUgf|29W=l85r0-85r0T7OW5eRY|5G|ARaa_M;r6+=GUVG)Ol%_8{TPP;u?g zJO>8986a^`Is;)48-^kMK5$n7+&KY>L-Qc0ISk@5)c-ew_mx3$!rL~b9)!X6%Y*y~ zi$_*51_o9O1_o9G1_o9s21sOsy2Nm^7#LV5K`?^>1E|9awgFu9fmoolz{mjVOoJwH zAo@Y#Ff$549B7&WrGg3u1(5yVZZ{(X1Jgnjc}S58vik&756FCw5|9`OLxT#O20?sK z_Ge^ZV26o=!W*QX3FL1E2KG!4hk*e!&IpPHh6)Bnu>Bx)jL`w;<22POoJQ*0cK;r^u zq3!~y1*Jid+e|?mjByoE9#;n04{+8dYjX6x2TROLhr| zi+Cm+6_B;pp|k{Ns#^8VEe%?rxO7xi?@N}go#0bK?h_%GpL*c)s+w@FfuSQ zFfxI}m>4%R{$pTJXklPrNE)3_9-U7folhQ}Pad65W?&edPad659-U8SVL+erADvGg zolgcgB1h+wSr|s=lfg*=L_qtXASN8+69dhUf;wa5%)f*CwWIUNqw~q2LHE)5WCm<= z$JoS1=acQgbJd_ZW!PLYhz5-)!7!-s8l6uDg#rYF=8;F|lSk*1LG#M6Ic9MEJ35~{ zI-ktIFgl+MT{jAy{}`Q5hRjQk&L@K>nMdc7L2LCv80&id(fQ;=*qrj{eDdggGIX64 zbbcAjx~suHpUlL-0a{iirRd0@z{w;9-gCjg!yxdP2~;aEGB60VK*WR@IJg)bK(o*c z4C0`DS1b$+QVa}9W*y*NpbYYi3=9f-5Va-@Yp0 z!!#xaMh12UhGGr|hSCQN4CM?A3{?sYjN&I47!?^97&Rd38R5&_L1r^DFuH=oB^X!) z7;x<)0=u2X0Mv;B?L`q`U~vGo4KVf)fz`2!Fo5;~LD-;ac}7r}1Te5_Fi?Fz5NPiU zJ@)~D_uWAD+JODXp#k1!17>r1fHOUW9RU$%U|?q4%&0WFCSi1s`{*8b$k_p-d)yfq zM%N^au1Of(<375_9dxe4=$eGlJ?^0W?I1k5$9-_^ac>mlv#1aJDA*Vpy$>}1U;AW1 zJ~?}~LHo2p7}SA+VUT$sHrBn`puX`C+~ZEI@B+`tjP7wC-Q(W=HW0MO2eiK(glV(K zeWT^*9(T}&A0!Mae+cbym;7ABiiAno;|?nOia~p-K>LQp4(2c#-JT5I<8B~(fdPa; z_Jj7g8^~U$z5U{BbNhA`*#349J-Wvo#~%0CwSRw{nVZJ={l6Nsxn(r7`>kuBumZ>TGP%m zN}gQ^%7>u(3Pi&&XwMgDFF9zxI;DHu)j{b2%N}zZkS{Z*-44cs?CGT`;=Goq=I=k2~lP6wo<>pmxvb9{15b z?$kR=5VSXZbdNi+XTgB--(cS3j%!WAWUOlvoFMBAP}U?gj;=`<@oN%T7&kLM99@$z zx+YN85o#G&)pwAcOP^I!sxmC;JYS9*CdRtNdT=!0O8R!38QNghVr@l zqiYgI&)pw-=k9COjIK#QT8{uaU=%bqM`%sLf*YNzNSKs0383`|APhQlAA}jzk7+>G zB>2o`Fz}fTo)ZVJN${Cnd+bzA^G1ugptT4vJXF>sfadFwF=TxJbcPN}QT3bz=lk(L zK6vpmE;9ea(#sjbvSiXkh@F=8>@Evr*{=V(315@2%lSLYtDmo!McKsIN^8C{=xZ-v zV6e$YU6UYC#FTYJo8c{EIcOaM$jKlYhN-zGL8a=U2i9}<1;4X6bufC#I7W+5eN6(R z)Jg^hw^a;GhgL9%R6PXwkJxkf8Nqi)VBYHhK6jtzpzr9KgwZt#qiYgSj%XiUlK@$Z z04iochfsr#F&kZzFuEoIlper$?10-nqiYgI*CdRtNdTR-52`#sWh96VT3a!C?mp_8 z1TFCXchETr*w-YuU|EweYjjP*h+mVy%D9;^Y;;Y+=$eGlH3_3@5=Pe~jIK#wy1_WQ zCSi0<0s~V3!|0j>CI%4(=Fv3?p!EnKJh~=fbWOtOnuP5M;IX;Ua}q|+Nub9$32aTz zN7p2fz9xaCI6V~^ld>iOG*1q~p!EnK%&7Qa4R}q0kzh9i2!qx{fYu}!33k_3ypL>g zy{!yej{u@a*CgOLCxP*Y>`#TjJ&bFf&t?r4>1WNG#|92(2FrSOx!z-JbFW6i*Cg!R zJ(=b8`Af_q26}9z&tEba%HL;Tu>8Ql{%{Yt`~{zrV6cEG>p~dAxBb?jbqJuz6A%r< z)LfIG%w=1MZB2r#rMsWg3Y{2f^(AscW=(?lnS-Ni5*jym2i%usy#9g()isoeeO0^zH`mxh$YL{;kk51azI+b}(BZ zdMg71%P(-dPZM+(Jwq4+0|OTW1EV?v1LHmh29EilYy21(7!ETq@B}e1aBpT{U=w0s z;IL(2&;^+RE}XCvAZxe}fwLS^d7r6Z61eZS`_kb}-J%}-SKJNejIKvGTKu}Ccc!9%zbli7z+?O8XzN{PA zN5_3hANOUI=KO<P0l8J#M zB?WW=9lRf`gvgCxmLmfLBdF~u1InHZj0|iHjOJDhe|dQs{<0lpV3d3SWnX1rU~pw% zV60?dU;r5i>YcHmsQt?ZQX|a3z*t78O*|R3P3$yS+r-p5Zvb>(1PFse97@32jH7o( zEETA4St`(|u6(%ehKP2P&*)kRaG!vWW3)|7mp1X}oe`kXN(RvA1`LD7Bnh3*fOKC3 z=2HYzYIi+Z_gm;Kv}EXY|g9^9;G%RSXQ> z=Y^NmEM(w%y_bP^SsMe}z1S99|44&- zUpAmJI4kPzsi{kq%s@13JuirjE>^N$;c@HhI$uy9ZV0uBRltFOAe>2P6T1`9CKhF2 zV3a4ZP3$(>CLV1QkB$=?zOJd8v%9%5*%e$SjkbyD(GY4AW#z1PD7P5W2|9dV32{VL#F*2WtfvdG`Rc*F_19HVxaj*9BY)3j0Mk^f%pxb z?*!_LnyxqU?0s8bCinq_n@!^QY7XuC+ZOiDu;%o_Paq6Z3&VKb1hStC-1mbihuZ}g zfZh9wEPy1&0$yOlz<_N{H?kIN?f|#*xFPd_$ZA1sZ0boBBNSd>`*}DRKw$>LAbVk$ zRJ&mMKr}wRpzz91`@eU>Oa^DL{k$9uAbws@q|bbg%}YRRkQ|7HiB*c86K(EYI~8PZ zO;J#G+pE$0GKSuL86#wka@g+OpfrxYUIH}k48kP0vp=f`upnV#+u5MJ0>hv-HV8AS z?)3nlO<_1YmjQ%980 zj6wbel|#rFv<_o*jq>nWqs;iaRh~KfP|oPt6hmY^254n5gB>VK(qpZ%83O|s-nKE? zx(tffDuX-*!`R9nlEpw}^Jv?c$79>nj+n7pgl|k*%5#2T(U8_vm7&HymDudg`O4UB2ZQ~)= zHm1j#<Kv+$8;`D8CarBugEh{*Wv-+BP0-8;`E30B5QH!@X@hQr0e0xoyni-Es^WQ`9!5(tRHzzHL0Z ec6o5LjT;X<7;PI5xwbJ)*D!-CQwE0rga7~n^)Oig literal 0 HcmV?d00001 diff --git a/nix/hardware/overheating/firmware/TIAS2781RCA4.bin b/nix/hardware/overheating/firmware/TIAS2781RCA4.bin new file mode 100644 index 0000000000000000000000000000000000000000..481d133059a6a44a225e085ffe7b37ff6a35bde5 GIT binary patch literal 2740 zcmZQz;M%f`rJ|RCfsvJgfsrxQDRes{0|N^qBO@aN1h6nLFfD;##uNqyrY8{LkwYd` z78ENKrRL_Br79%mCFbO(E2Jl8=8+Nr9E>cC9~c-IDi|0TxEL52SQr@ijxaFrJ1{WB zNHQ=a2r#fP7%(t!$uTf8Ff%alGBPlTIWRDapI~5OU}0b}0NKR|W^+h@*bEGe42%pM zG7Jzg4F(60C`c`r2Z#j`=Zb)cgVZuGF)%VS@-Z+la4!wCRV-GCeb literal 0 HcmV?d00001 diff --git a/nix/hardware/overheating/firmware/TIAS2781RCA4.bin.orig b/nix/hardware/overheating/firmware/TIAS2781RCA4.bin.orig new file mode 100644 index 0000000000000000000000000000000000000000..8698e928e650cb56131767c6504791e1bbbc0007 GIT binary patch literal 2740 zcmZQz;M%f`rJ|RCfsvJgfsrxQDRes{0|N^qBO@aN1h6nLFfD;##uNqyrY8{LkwYd` z78ENKrRL_Br79%mCFbO(E2Jl8=8+Nr9E>cC9~c-IDi|0TxEL52SQr@ijxaFrJ1{WB z++<)#5MW?oFkoQd(qmv`U}j+8Wn^Fwb6{W;Kf%Dnz{0>{0J4h_%;t~)u^AW`85kKj zWEdb~8Vn8~QIJ|L4-g9?&J_U>2dQOXVqj!u!8je>Oz&5|-pbW@Wv@{3Z_Qj1dal2dhybMi~TsRxoO z@R1zMER2hh(kL@Z8ik}!ElAo0rB4ACx}{OV?vkRlyRhXGM#Ao*d3a&XtAyP}^YFq} zUZfNkK+`A*sS-8Cg38fS1_lNV1_lOZa2W_HKOt$;ih+@V6<&5SfQmYP22eqWwcKN2 zB-tEnX@Hpwb8y5N$?m}x#-O?iHONTjfx`GR0|P?`0|NsOB#aqBwGt~NkI}W>Vq#!m r7Q-2bSn4FKVT(l_6AL4$exz0T4fi86>29J`y#{v^3+Zm6c{l+8r{# Date: Wed, 22 May 2024 02:48:39 +0200 Subject: [PATCH 009/330] nvim: include more formatters and lsps --- nix/flake.lock | 269 ++++++++-------------- nix/flake.nix | 2 - nix/programs/coding.nix | 14 +- nix/programs/common.nix | 2 + nix/programs/default.nix | 3 - nix/programs/hyprland/hyprlock.nix | 4 +- nix/programs/nvim/default.nix | 1 - nix/programs/nvim/lua/plugins/lsp.lua | 59 ++++- nix/programs/nvim/lua/plugins/plugins.lua | 1 + 9 files changed, 160 insertions(+), 195 deletions(-) diff --git a/nix/flake.lock b/nix/flake.lock index e54dc3b..348abc4 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -209,7 +209,7 @@ }, "flake-utils": { "inputs": { - "systems": "systems_3" + "systems": "systems" }, "locked": { "lastModified": 1705309234, @@ -227,7 +227,7 @@ }, "flake-utils_2": { "inputs": { - "systems": "systems_4" + "systems": "systems_2" }, "locked": { "lastModified": 1705309234, @@ -245,7 +245,7 @@ }, "flake-utils_3": { "inputs": { - "systems": "systems_5" + "systems": "systems_3" }, "locked": { "lastModified": 1705309234, @@ -263,7 +263,7 @@ }, "flake-utils_4": { "inputs": { - "systems": "systems_6" + "systems": "systems_4" }, "locked": { "lastModified": 1705309234, @@ -281,7 +281,7 @@ }, "flake-utils_5": { "inputs": { - "systems": "systems_7" + "systems": "systems_5" }, "locked": { "lastModified": 1705309234, @@ -299,7 +299,7 @@ }, "flake-utils_6": { "inputs": { - "systems": "systems_8" + "systems": "systems_6" }, "locked": { "lastModified": 1705309234, @@ -335,61 +335,19 @@ "type": "github" } }, - "hyprlang": { - "inputs": { - "nixpkgs": [ - "hyprlock", - "nixpkgs" - ], - "systems": "systems" - }, - "locked": { - "lastModified": 1713121246, - "narHash": "sha256-502X0Q0fhN6tJK7iEUA8CghONKSatW/Mqj4Wappd++0=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "78fcaa27ae9e1d782faa3ff06c8ea55ddce63706", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprlock": { - "inputs": { - "hyprlang": "hyprlang", - "nixpkgs": "nixpkgs_2", - "systems": "systems_2" - }, - "locked": { - "lastModified": 1716242428, - "narHash": "sha256-9itkgx3Sl8xPToweCHQoLfvyiTX/b5PZb7clYcKYyIs=", - "owner": "hyprwm", - "repo": "hyprlock", - "rev": "18d2d2ba6af6ac76e4714fae2737a55d223716f8", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlock", - "type": "github" - } - }, "ironbar": { "inputs": { "crane": "crane", "naersk": "naersk", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_3", "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1716154552, - "narHash": "sha256-JZqgSOeU2MalRnF75gQ1vZu3VftGfmIgkxPMpkd218o=", + "lastModified": 1716298131, + "narHash": "sha256-3gK89CiryG8PAXZvtWo+2rrwfyMApQOB5trNrM+cUUY=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "4ad4b0e070cc4e271251763db7210e70857d68ca", + "rev": "fd58ce771d3494b3cc034ac49c88af72aab57bf3", "type": "github" }, "original": { @@ -400,7 +358,7 @@ }, "naersk": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1713520724, @@ -464,22 +422,6 @@ } }, "nixpkgs_10": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -495,7 +437,7 @@ "type": "github" } }, - "nixpkgs_12": { + "nixpkgs_11": { "locked": { "lastModified": 1716190602, "narHash": "sha256-xYRimrR0duWvokWQEvB87bSsICeCvvX9DxpUOzCfsDE=", @@ -511,7 +453,7 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_12": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -527,23 +469,23 @@ "type": "github" } }, + "nixpkgs_13": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_14": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_15": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -559,7 +501,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_15": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -575,7 +517,7 @@ "type": "github" } }, - "nixpkgs_17": { + "nixpkgs_16": { "locked": { "lastModified": 1716062047, "narHash": "sha256-OhysviwHQz4p2HZL4g7XGMLoUbWMjkMr/ogaR3VUYNA=", @@ -592,22 +534,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1712963716, - "narHash": "sha256-WKm9CvgCldeIVvRz87iOMi8CFVB1apJlkUT4GGvA0iM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "cfd6b5fc90b15709b780a5a1619695a88505a176", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1714314149, "narHash": "sha256-yNAevSKF4krRWacmLUsLK7D7PlfuY3zF0lYnGYNi9vQ=", @@ -621,7 +547,7 @@ "type": "indirect" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { "lastModified": 1714253743, "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", @@ -637,17 +563,33 @@ "type": "github" } }, + "nixpkgs_4": { + "locked": { + "lastModified": 1716293225, + "narHash": "sha256-pU9ViBVE3XYb70xZx+jK6SEVphvt7xMTbm6yDIF4xPs=", + "owner": "NixOs", + "repo": "nixpkgs", + "rev": "3eaeaeb6b1e08a016380c279f8846e0bd8808916", + "type": "github" + }, + "original": { + "owner": "NixOs", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_5": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOs", + "owner": "NixOS", "repo": "nixpkgs", "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", "type": "github" }, "original": { - "owner": "NixOs", + "owner": "NixOS", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -670,6 +612,22 @@ } }, "nixpkgs_7": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -685,7 +643,7 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_9": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -701,26 +659,10 @@ "type": "github" } }, - "nixpkgs_9": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "oxicalc": { "inputs": { "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_6" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1716225554, @@ -739,7 +681,7 @@ "oxidash": { "inputs": { "flake-parts": "flake-parts_3", - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_6", "rust-overlay": "rust-overlay_2" }, "locked": { @@ -759,7 +701,7 @@ "oxinoti": { "inputs": { "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_9", + "nixpkgs": "nixpkgs_8", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -779,7 +721,7 @@ "oxipaste": { "inputs": { "flake-parts": "flake-parts_5", - "nixpkgs": "nixpkgs_11", + "nixpkgs": "nixpkgs_10", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -799,7 +741,7 @@ "oxishut": { "inputs": { "flake-parts": "flake-parts_6", - "nixpkgs": "nixpkgs_13", + "nixpkgs": "nixpkgs_12", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -819,7 +761,7 @@ "reset": { "inputs": { "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_15", + "nixpkgs": "nixpkgs_14", "rust-overlay": "rust-overlay_6" }, "locked": { @@ -841,10 +783,9 @@ "Hyprspace": "Hyprspace", "anyrun": "anyrun", "home-manager": "home-manager", - "hyprlock": "hyprlock", "ironbar": "ironbar", "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_4", "oxicalc": "oxicalc", "oxidash": "oxidash", "oxinoti": "oxinoti", @@ -879,7 +820,7 @@ "rust-overlay_2": { "inputs": { "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_8" + "nixpkgs": "nixpkgs_7" }, "locked": { "lastModified": 1716171463, @@ -898,7 +839,7 @@ "rust-overlay_3": { "inputs": { "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_10" + "nixpkgs": "nixpkgs_9" }, "locked": { "lastModified": 1716171463, @@ -917,7 +858,7 @@ "rust-overlay_4": { "inputs": { "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_12" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1716171463, @@ -936,7 +877,7 @@ "rust-overlay_5": { "inputs": { "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_14" + "nixpkgs": "nixpkgs_13" }, "locked": { "lastModified": 1716171463, @@ -955,7 +896,7 @@ "rust-overlay_6": { "inputs": { "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_16" + "nixpkgs": "nixpkgs_15" }, "locked": { "lastModified": 1716171463, @@ -973,7 +914,7 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_17", + "nixpkgs": "nixpkgs_16", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { @@ -992,31 +933,31 @@ }, "systems": { "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default-linux", + "repo": "default", "type": "github" } }, "systems_2": { "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default-linux", + "repo": "default", "type": "github" } }, @@ -1079,36 +1020,6 @@ "repo": "default", "type": "github" } - }, - "systems_7": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_8": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } } }, "root": "root", diff --git a/nix/flake.nix b/nix/flake.nix index c73e40c..ec07b17 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -16,8 +16,6 @@ sops-nix.url = "github:Mic92/sops-nix"; - hyprlock.url = "github:hyprwm/hyprlock"; - Hyprspace = { url = "github:KZDKM/Hyprspace"; # Hyprspace uses latest Hyprland. We declare this to keep them in sync. diff --git a/nix/programs/coding.nix b/nix/programs/coding.nix index 2a8ac9b..041d3bc 100644 --- a/nix/programs/coding.nix +++ b/nix/programs/coding.nix @@ -22,6 +22,13 @@ # cpp bear + #sql + nodePackages.sql-formatter + sqls + + #assembly + asm-lsp + #yaml yamlfmt yamllint @@ -29,12 +36,17 @@ #markdown marksman + mdformat + + #bash + nodePackages.bash-language-server + shfmt #html html-tidy #json - jsonfmt + jq #css tailwindcss diff --git a/nix/programs/common.nix b/nix/programs/common.nix index b089acf..a90f7ad 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -101,6 +101,8 @@ in home.sessionVariables = { FLAKE = "home/dasshie/gits/dotFiles/nix"; + # don't ask... marksman somehow requires this + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = 1; }; sops = { diff --git a/nix/programs/default.nix b/nix/programs/default.nix index c23ce99..fb482c7 100644 --- a/nix/programs/default.nix +++ b/nix/programs/default.nix @@ -1,7 +1,6 @@ { inputs, pkgs, mod, ... }: let base_imports = [ - inputs.hyprlock.homeManagerModules.default inputs.anyrun.homeManagerModules.default inputs.ironbar.homeManagerModules.default inputs.oxicalc.homeManagerModules.default @@ -26,8 +25,6 @@ in home-manager.useUserPackages = true; home-manager.users.dashie = { - #home-manager overlap -> use flake instead - disabledModules = [ "programs/hyprlock.nix" ]; imports = [ { _module = { args = { inherit inputs; }; }; diff --git a/nix/programs/hyprland/hyprlock.nix b/nix/programs/hyprland/hyprlock.nix index 99ed9d9..641f078 100644 --- a/nix/programs/hyprland/hyprlock.nix +++ b/nix/programs/hyprland/hyprlock.nix @@ -5,8 +5,7 @@ }: { programs.hyprlock.enable = true; - programs.hyprlock = { - + programs.hyprlock.settings = { backgrounds = [ { monitor = ""; @@ -32,6 +31,5 @@ halign = "center"; } ]; - }; } diff --git a/nix/programs/nvim/default.nix b/nix/programs/nvim/default.nix index c0f7885..8fe815f 100644 --- a/nix/programs/nvim/default.nix +++ b/nix/programs/nvim/default.nix @@ -134,7 +134,6 @@ { import = "lazyvim.plugins.extras.lang.markdown" }, { import = "lazyvim.plugins.extras.lang.cmake" }, { import = "lazyvim.plugins.extras.lang.omnisharp" }, - { import = "lazyvim.plugins.extras.lang.json" }, { import = "lazyvim.plugins.extras.lang.tex" }, { import = "lazyvim.plugins.extras.util.dot" }, { import = "lazyvim.plugins.extras.dap.core" }, diff --git a/nix/programs/nvim/lua/plugins/lsp.lua b/nix/programs/nvim/lua/plugins/lsp.lua index dbae6e0..cb2ff7c 100644 --- a/nix/programs/nvim/lua/plugins/lsp.lua +++ b/nix/programs/nvim/lua/plugins/lsp.lua @@ -11,9 +11,6 @@ return { "neovim/nvim-lspconfig", ---@class PluginLspOpts opts = { - -- inlay_hints = { - -- enabled = true, - -- }, format_notify = false, -- LSP Server Settings ---@type lspconfig.options @@ -66,7 +63,49 @@ return { }, omnisharp = { mason = false, - cmd = { "OmniSharp" }, + handlers = { + ["textDocument/definition"] = function(...) + return require("omnisharp_extended").handler(...) + end, + }, + keys = { + { + "oe", + function() + require("omnisharp_extended").telescope_lsp_definitions() + end, + desc = "Goto Definition", + }, + }, + cmd = { + -- no comment + "OmniSharp", + "-z", + "--hostPID", + tostring(vim.fn.getpid()), + "DotNet:enablePackageRestore=false", + "--encoding", + "utf-8", + "--languageserver", + "FormattingOptions:EnableEditorConfigSupport=true", + "FormattingOptions:OrganizeImports=true", + "RoslynExtensionsOptions:EnableAnalyzersSupport=true", + "RoslynExtensionsOptions:EnableImportCompletion=true", + -- inlay hints are bugged until next release..... + -- "RoslynExtensionsOptions:InlayHintsOptions:EnableForParameters=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForLiteralParameters=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForIndexerParameters=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForObjectCreationParameters=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForOtherParameters=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:SuppressForParametersThatDifferOnlyBySuffix=false", + -- "RoslynExtensionsOptions:InlayHintsOptions:SuppressForParametersThatMatchMethodIntent=false", + -- "RoslynExtensionsOptions:InlayHintsOptions:SuppressForParametersThatMatchArgumentName=false", + -- "RoslynExtensionsOptions:InlayHintsOptions:EnableForTypes=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForImplicitVariableTypes=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForLambdaParameterTypes=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForImplicitObjectCreation=true", + "Sdk:IncludePrereleases=true", + }, }, typst_lsp = { settings = { @@ -106,7 +145,7 @@ return { }, mason = false, }, - sqlls = { + sqls = { mason = false, }, lemminx = { @@ -118,9 +157,12 @@ return { yamlls = { mason = false, }, + zls = { + mason = false, + }, cssls = { mason = false, - cmd = { "css-languageserver", '--stdio' }, + cmd = { "css-languageserver", "--stdio" }, }, lua_ls = { mason = false, @@ -167,6 +209,11 @@ return { lua = { "stylua" }, sh = { "shfmt" }, cs = { "dotnet-csharpier" }, + markdown = { "mdformat" }, + sql = { "sql-formatter" }, + -- json doesn't work? + json = { "jq" }, + yaml = { "yamlfmt" }, }, }, }, diff --git a/nix/programs/nvim/lua/plugins/plugins.lua b/nix/programs/nvim/lua/plugins/plugins.lua index 45460c0..de330e6 100644 --- a/nix/programs/nvim/lua/plugins/plugins.lua +++ b/nix/programs/nvim/lua/plugins/plugins.lua @@ -280,4 +280,5 @@ return { }, }, { "akinsho/git-conflict.nvim", version = "*", config = true }, + { "Hoffs/omnisharp-extended-lsp.nvim" }, } From 1f76c7359e51491ca0772ab88af118ecb80f4151 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 22 May 2024 09:21:35 +0200 Subject: [PATCH 010/330] nvim: include more formatters and lsps --- nix/programs/coding.nix | 1 + nix/programs/nvim/lua/plugins/lsp.lua | 11 ++++------- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/nix/programs/coding.nix b/nix/programs/coding.nix index 041d3bc..be3e5d6 100644 --- a/nix/programs/coding.nix +++ b/nix/programs/coding.nix @@ -47,6 +47,7 @@ #json jq + nodePackages.vscode-json-languageserver #css tailwindcss diff --git a/nix/programs/nvim/lua/plugins/lsp.lua b/nix/programs/nvim/lua/plugins/lsp.lua index cb2ff7c..59ca30a 100644 --- a/nix/programs/nvim/lua/plugins/lsp.lua +++ b/nix/programs/nvim/lua/plugins/lsp.lua @@ -1,11 +1,6 @@ return { { "williamboman/mason.nvim", - --opts = function() - -- return { - -- ensure_installed = {}, - -- } - --end, }, { "neovim/nvim-lspconfig", @@ -160,6 +155,10 @@ return { zls = { mason = false, }, + jsonls = { + mason = false, + cmd = { "vscode-json-languageserver", "--stdio" }, + }, cssls = { mason = false, cmd = { "css-languageserver", "--stdio" }, @@ -194,7 +193,6 @@ return { opts = { keys = { { - -- Customize or remove this keymap to your liking "cF", function() require("conform").format({ async = true, lsp_fallback = true }) @@ -211,7 +209,6 @@ return { cs = { "dotnet-csharpier" }, markdown = { "mdformat" }, sql = { "sql-formatter" }, - -- json doesn't work? json = { "jq" }, yaml = { "yamlfmt" }, }, From a5226f566e941406b00245575c14b4662a31a573 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 25 May 2024 14:26:39 +0200 Subject: [PATCH 011/330] firefox: add addons per nix --- nix/flake.lock | 221 ++++++++----- nix/flake.nix | 9 + nix/hardware/overheating/base_config.nix | 1 + nix/hardware/overheating/configuration.nix | 3 + nix/programs/coding.nix | 1 + nix/programs/common.nix | 5 +- nix/programs/default.nix | 2 + nix/programs/hyprland/config.nix | 3 +- nix/programs/individual_configs/default.nix | 2 + nix/programs/individual_configs/firefox.nix | 29 ++ nix/programs/individual_configs/keepass.nix | 26 ++ nix/programs/nvim/lua/config/options.lua | 1 + nix/programs/nvim/lua/plugins/lsp.lua | 349 +++++++++++--------- nix/programs/nvim/lua/plugins/plugins.lua | 11 + 14 files changed, 422 insertions(+), 241 deletions(-) create mode 100644 nix/programs/individual_configs/firefox.nix create mode 100644 nix/programs/individual_configs/keepass.nix diff --git a/nix/flake.lock b/nix/flake.lock index 348abc4..20a2d8b 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -84,7 +84,7 @@ "flake-parts_2": { "inputs": { "nixpkgs-lib": [ - "oxicalc", + "hyprdock", "nixpkgs" ] }, @@ -105,7 +105,7 @@ "flake-parts_3": { "inputs": { "nixpkgs-lib": [ - "oxidash", + "oxicalc", "nixpkgs" ] }, @@ -126,7 +126,7 @@ "flake-parts_4": { "inputs": { "nixpkgs-lib": [ - "oxinoti", + "oxidash", "nixpkgs" ] }, @@ -147,7 +147,7 @@ "flake-parts_5": { "inputs": { "nixpkgs-lib": [ - "oxipaste", + "oxinoti", "nixpkgs" ] }, @@ -168,7 +168,7 @@ "flake-parts_6": { "inputs": { "nixpkgs-lib": [ - "oxishut", + "oxipaste", "nixpkgs" ] }, @@ -187,6 +187,27 @@ } }, "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ + "oxishut", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_8": { "inputs": { "nixpkgs-lib": [ "reset", @@ -335,11 +356,30 @@ "type": "github" } }, + "hyprdock": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1716453478, + "narHash": "sha256-EoKGnKvYKoe9geFoK0wyEAMTPGOfRtjXibt4GUCfvBA=", + "owner": "DashieTM", + "repo": "hyprdock", + "rev": "8d07dbdf446e6b21528cc994547cc8f173a70330", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "hyprdock", + "type": "github" + } + }, "ironbar": { "inputs": { "crane": "crane", "naersk": "naersk", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_4", "rust-overlay": "rust-overlay" }, "locked": { @@ -358,7 +398,7 @@ }, "naersk": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1713520724, @@ -422,6 +462,22 @@ } }, "nixpkgs_10": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -437,7 +493,7 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_12": { "locked": { "lastModified": 1716190602, "narHash": "sha256-xYRimrR0duWvokWQEvB87bSsICeCvvX9DxpUOzCfsDE=", @@ -453,7 +509,7 @@ "type": "github" } }, - "nixpkgs_12": { + "nixpkgs_13": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -469,23 +525,23 @@ "type": "github" } }, - "nixpkgs_13": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_14": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_15": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -501,7 +557,7 @@ "type": "github" } }, - "nixpkgs_15": { + "nixpkgs_16": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -517,7 +573,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_17": { "locked": { "lastModified": 1716062047, "narHash": "sha256-OhysviwHQz4p2HZL4g7XGMLoUbWMjkMr/ogaR3VUYNA=", @@ -534,6 +590,22 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1716330097, + "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1714314149, "narHash": "sha256-yNAevSKF4krRWacmLUsLK7D7PlfuY3zF0lYnGYNi9vQ=", @@ -547,7 +619,7 @@ "type": "indirect" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1714253743, "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", @@ -563,7 +635,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1716293225, "narHash": "sha256-pU9ViBVE3XYb70xZx+jK6SEVphvt7xMTbm6yDIF4xPs=", @@ -579,22 +651,6 @@ "type": "github" } }, - "nixpkgs_5": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_6": { "locked": { "lastModified": 1716137900, @@ -612,6 +668,22 @@ } }, "nixpkgs_7": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -627,7 +699,7 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_9": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -643,26 +715,25 @@ "type": "github" } }, - "nixpkgs_9": { + "nur": { "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "lastModified": 1716637573, + "narHash": "sha256-i7KOcVGJE3oRvjF4r45/GvbrKHaxtSc4K9DCJ+DR9DQ=", + "owner": "nix-community", + "repo": "nur", + "rev": "a619ed4c9346515d8a9665cd3d44909944a1fc8e", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nur", "type": "github" } }, "oxicalc": { "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_5" + "flake-parts": "flake-parts_3", + "nixpkgs": "nixpkgs_6" }, "locked": { "lastModified": 1716225554, @@ -680,8 +751,8 @@ }, "oxidash": { "inputs": { - "flake-parts": "flake-parts_3", - "nixpkgs": "nixpkgs_6", + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_7", "rust-overlay": "rust-overlay_2" }, "locked": { @@ -700,8 +771,8 @@ }, "oxinoti": { "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_8", + "flake-parts": "flake-parts_5", + "nixpkgs": "nixpkgs_9", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -720,8 +791,8 @@ }, "oxipaste": { "inputs": { - "flake-parts": "flake-parts_5", - "nixpkgs": "nixpkgs_10", + "flake-parts": "flake-parts_6", + "nixpkgs": "nixpkgs_11", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -740,8 +811,8 @@ }, "oxishut": { "inputs": { - "flake-parts": "flake-parts_6", - "nixpkgs": "nixpkgs_12", + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_13", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -760,8 +831,8 @@ }, "reset": { "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_14", + "flake-parts": "flake-parts_8", + "nixpkgs": "nixpkgs_15", "rust-overlay": "rust-overlay_6" }, "locked": { @@ -783,9 +854,11 @@ "Hyprspace": "Hyprspace", "anyrun": "anyrun", "home-manager": "home-manager", + "hyprdock": "hyprdock", "ironbar": "ironbar", "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", + "nur": "nur", "oxicalc": "oxicalc", "oxidash": "oxidash", "oxinoti": "oxinoti", @@ -820,7 +893,7 @@ "rust-overlay_2": { "inputs": { "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_7" + "nixpkgs": "nixpkgs_8" }, "locked": { "lastModified": 1716171463, @@ -839,7 +912,7 @@ "rust-overlay_3": { "inputs": { "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_9" + "nixpkgs": "nixpkgs_10" }, "locked": { "lastModified": 1716171463, @@ -858,7 +931,7 @@ "rust-overlay_4": { "inputs": { "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1716171463, @@ -877,7 +950,7 @@ "rust-overlay_5": { "inputs": { "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_13" + "nixpkgs": "nixpkgs_14" }, "locked": { "lastModified": 1716171463, @@ -896,7 +969,7 @@ "rust-overlay_6": { "inputs": { "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_15" + "nixpkgs": "nixpkgs_16" }, "locked": { "lastModified": 1716171463, @@ -914,7 +987,7 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_16", + "nixpkgs": "nixpkgs_17", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { diff --git a/nix/flake.nix b/nix/flake.nix index ec07b17..e4a3bf8 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -22,6 +22,11 @@ inputs.hyprland.follows = "nixpkgs"; }; + nur.url = "github:nix-community/nur"; + # hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; + # hyprland.url = "git+https://github.com/hyprwm/Hyprland?rev=2f1735bd93adb9e153758cd4171d8fd3ae610357"; + # hyprland.url = "github:hyprwm/Hyprland/xwayland-rewrite?submodules=1"; + ironbar = { url = "github:JakeStanger/ironbar"; }; @@ -32,6 +37,7 @@ 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"; }; @@ -39,6 +45,9 @@ let pkgs = import inputs.nixpkgs { system = "x86_64-linux"; + overlays = [ + inputs.nur.overlay + ]; config = { allowUnfree = true; }; diff --git a/nix/hardware/overheating/base_config.nix b/nix/hardware/overheating/base_config.nix index 8f511ab..15d5330 100644 --- a/nix/hardware/overheating/base_config.nix +++ b/nix/hardware/overheating/base_config.nix @@ -13,4 +13,5 @@ programs.ironbar.battery = [ { type = "upower"; class = "memory-usage"; } ]; + programs.hyprland.extra_autostart = [ "hyprdock --server" ]; } diff --git a/nix/hardware/overheating/configuration.nix b/nix/hardware/overheating/configuration.nix index 576010f..becdaa5 100644 --- a/nix/hardware/overheating/configuration.nix +++ b/nix/hardware/overheating/configuration.nix @@ -13,4 +13,7 @@ programs.boot.boot_params = [ "rtc_cmos.use_acpi_alarm=1" ]; hardware.bluetooth.enable = true; hardware.bluetooth.powerOnBoot = true; + + # for hyprdock + services.acpid.enable = true; } diff --git a/nix/programs/coding.nix b/nix/programs/coding.nix index be3e5d6..fbaad83 100644 --- a/nix/programs/coding.nix +++ b/nix/programs/coding.nix @@ -21,6 +21,7 @@ # cpp bear + clang-tools #sql nodePackages.sql-formatter diff --git a/nix/programs/common.nix b/nix/programs/common.nix index a90f7ad..f07f500 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -15,7 +15,6 @@ in home.packages = with pkgs; [ vesktop kitty - firefox fish ripgrep rm-improved @@ -49,6 +48,7 @@ in greetd.regreet sops flake-checker + ffmpeg (callPackage ../override/streamdeck.nix { }) @@ -63,8 +63,11 @@ in programs.oxidash.enable = true; programs.oxishut.enable = true; programs.oxipaste.enable = true; + programs.hyprdock.enable = true; programs.reset.enable = true; + nixpkgs.config.allowUnfree = true; + home.username = "dashie"; home.homeDirectory = "/home/dashie"; home.stateVersion = "24.05"; diff --git a/nix/programs/default.nix b/nix/programs/default.nix index fb482c7..e0f5ed0 100644 --- a/nix/programs/default.nix +++ b/nix/programs/default.nix @@ -8,6 +8,8 @@ let inputs.oxinoti.homeManagerModules.default inputs.oxidash.homeManagerModules.default inputs.oxipaste.homeManagerModules.default + inputs.hyprdock.homeManagerModules.default + # inputs.hyprland.homeManagerModules.default inputs.reset.homeManagerModules.default inputs.nix-flatpak.homeManagerModules.nix-flatpak inputs.sops-nix.homeManagerModules.sops diff --git a/nix/programs/hyprland/config.nix b/nix/programs/hyprland/config.nix index f74649f..81acdb2 100644 --- a/nix/programs/hyprland/config.nix +++ b/nix/programs/hyprland/config.nix @@ -30,6 +30,7 @@ "$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" @@ -242,8 +243,6 @@ "ironbar" "firefox" "oxipaste_daemon" - # TODO: is this necessary? - #"/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1" "nextcloud --background" "oxinoti" ] ++ config.programs.hyprland.extra_autostart; diff --git a/nix/programs/individual_configs/default.nix b/nix/programs/individual_configs/default.nix index a3ac262..3c2a87d 100644 --- a/nix/programs/individual_configs/default.nix +++ b/nix/programs/individual_configs/default.nix @@ -7,5 +7,7 @@ ./ssh.nix ./direnv.nix ./git.nix + ./firefox.nix + ./keepass.nix ]; } diff --git a/nix/programs/individual_configs/firefox.nix b/nix/programs/individual_configs/firefox.nix new file mode 100644 index 0000000..9016730 --- /dev/null +++ b/nix/programs/individual_configs/firefox.nix @@ -0,0 +1,29 @@ +{ inputs, pkgs, ... }: { + programs.firefox = { + enable = true; + + policies = { + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + DisplayBookmarksToolbar = "never"; + DisplayMenuBar = "default-off"; + }; + profiles.dashie = { + extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + ublock-origin + darkreader + privacy-badger + vimium + keepassxc-browser + i-dont-care-about-cookies + tokyo-night-v2 + + ]; + }; + }; +} diff --git a/nix/programs/individual_configs/keepass.nix b/nix/programs/individual_configs/keepass.nix new file mode 100644 index 0000000..58ffdb3 --- /dev/null +++ b/nix/programs/individual_configs/keepass.nix @@ -0,0 +1,26 @@ +{ + xdg.configFile."keepassxc/keepassxc.ini" = { + text = + '' + [General] + ConfigVersion=2 + + [Browser] + CustomProxyLocation= + Enabled=true + + [GUI] + ApplicationTheme=classic + HidePasswords=true + TrayIconAppearance=monochrome-light + + [PasswordGenerator] + AdditionalChars= + ExcludedChars= + Length=18 + + [Security] + EnableCopyOnDoubleClick=true + ''; + }; +} diff --git a/nix/programs/nvim/lua/config/options.lua b/nix/programs/nvim/lua/config/options.lua index e9c9543..7f5ec59 100644 --- a/nix/programs/nvim/lua/config/options.lua +++ b/nix/programs/nvim/lua/config/options.lua @@ -28,6 +28,7 @@ vim.g.mkdp_auto_start = 1 vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 vim.g.autoformat = false + for k, v in pairs(options) do vim.opt[k] = v end diff --git a/nix/programs/nvim/lua/plugins/lsp.lua b/nix/programs/nvim/lua/plugins/lsp.lua index 59ca30a..64c3f09 100644 --- a/nix/programs/nvim/lua/plugins/lsp.lua +++ b/nix/programs/nvim/lua/plugins/lsp.lua @@ -5,179 +5,200 @@ return { { "neovim/nvim-lspconfig", ---@class PluginLspOpts - opts = { - format_notify = false, - -- LSP Server Settings - ---@type lspconfig.options - servers = { - rust_analyzer = { - mason = false, - }, - marksman = { - mason = false, - }, - clangd = { - mason = false, - }, - jdtls = { - mason = false, - }, - gopls = { - mason = false, - }, - pyright = { - mason = false, - }, - ruff_lsp = { - mason = false, - }, - texlab = { - mason = false, - }, - taplo = { - keys = { - { - "K", - function() - if vim.fn.expand("%:t") == "Cargo.toml" and require("crates").popup_available() then - require("crates").show_popup() - else - vim.lsp.buf.hover() - end + opts = function(_, opts) + local path = vim.fn.stdpath("config") .. "/spell/ltex.dictionary.en-US.txt" + local words = {} + + local file, err = io.open(path, "r") + if err ~= nil then + os.execute("mkdir " .. vim.fn.stdpath("config") .. "/spell") + file = io.open(path, "w") + file:write("") + file:close() + file = io.open(path, "r") + end + for word in file:lines() do + table.insert(words, word) + end + local new_opts = { + format_notify = false, + -- LSP Server Settings + ---@type lspconfig.options + servers = { + rust_analyzer = { + mason = false, + }, + marksman = { + mason = false, + }, + clangd = { + mason = false, + }, + jdtls = { + mason = false, + }, + gopls = { + mason = false, + }, + pyright = { + mason = false, + }, + ruff_lsp = { + mason = false, + }, + texlab = { + mason = false, + }, + taplo = { + keys = { + { + "K", + function() + if vim.fn.expand("%:t") == "Cargo.toml" and require("crates").popup_available() then + require("crates").show_popup() + else + vim.lsp.buf.hover() + end + end, + desc = "Show Crate Documentation", + }, + }, + mason = false, + }, + bashls = { + mason = false, + }, + ansiblels = { + mason = false, + }, + omnisharp = { + mason = false, + handlers = { + ["textDocument/definition"] = function(...) + return require("omnisharp_extended").handler(...) end, - desc = "Show Crate Documentation", + }, + keys = { + { + "oe", + function() + require("omnisharp_extended").telescope_lsp_definitions() + end, + desc = "Goto Definition", + }, + }, + cmd = { + -- no comment + "OmniSharp", + "-z", + "--hostPID", + tostring(vim.fn.getpid()), + "DotNet:enablePackageRestore=false", + "--encoding", + "utf-8", + "--languageserver", + "FormattingOptions:EnableEditorConfigSupport=true", + "FormattingOptions:OrganizeImports=true", + "RoslynExtensionsOptions:EnableAnalyzersSupport=true", + "RoslynExtensionsOptions:EnableImportCompletion=true", + -- inlay hints are bugged until next release..... + -- "RoslynExtensionsOptions:InlayHintsOptions:EnableForParameters=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForLiteralParameters=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForIndexerParameters=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForObjectCreationParameters=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForOtherParameters=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:SuppressForParametersThatDifferOnlyBySuffix=false", + -- "RoslynExtensionsOptions:InlayHintsOptions:SuppressForParametersThatMatchMethodIntent=false", + -- "RoslynExtensionsOptions:InlayHintsOptions:SuppressForParametersThatMatchArgumentName=false", + -- "RoslynExtensionsOptions:InlayHintsOptions:EnableForTypes=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForImplicitVariableTypes=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForLambdaParameterTypes=true", + -- "RoslynExtensionsOptions:InlayHintsOptions:ForImplicitObjectCreation=true", + "Sdk:IncludePrereleases=true", }, }, - mason = false, - }, - bashls = { - mason = false, - }, - ansiblels = { - mason = false, - }, - omnisharp = { - mason = false, - handlers = { - ["textDocument/definition"] = function(...) - return require("omnisharp_extended").handler(...) - end, + typst_lsp = { + settings = { + experimentalFormatterMode = "on", + exportPdf = "onSave", + }, + mason = false, }, - keys = { + nil_ls = { + settings = { + ["nil"] = { + formatting = { + command = { "nixpkgs-fmt" }, + }, + }, + }, + mason = false, + }, + ltex = { + settings = { + ltex = { + checkFrequency = "save", + dictionary = { + ["en-US"] = words, + }, + }, + }, + filetypes = { + "bib", + "gitcommit", + "markdown", + "org", + "plaintex", + "rst", + "rnoweb", + "tex", + "pandoc", + "typst", + "typ", + "text", + }, + mason = false, + }, + sqls = { + mason = false, + }, + lemminx = { + mason = false, + }, + opencl_ls = { + mason = false, + }, + yamlls = { + mason = false, + }, + zls = { + mason = false, + }, + jsonls = { + mason = false, + cmd = { "vscode-json-languageserver", "--stdio" }, + }, + cssls = { + mason = false, + cmd = { "css-languageserver", "--stdio" }, + }, + lua_ls = { + mason = false, { - "oe", - function() - require("omnisharp_extended").telescope_lsp_definitions() - end, - desc = "Goto Definition", - }, - }, - cmd = { - -- no comment - "OmniSharp", - "-z", - "--hostPID", - tostring(vim.fn.getpid()), - "DotNet:enablePackageRestore=false", - "--encoding", - "utf-8", - "--languageserver", - "FormattingOptions:EnableEditorConfigSupport=true", - "FormattingOptions:OrganizeImports=true", - "RoslynExtensionsOptions:EnableAnalyzersSupport=true", - "RoslynExtensionsOptions:EnableImportCompletion=true", - -- inlay hints are bugged until next release..... - -- "RoslynExtensionsOptions:InlayHintsOptions:EnableForParameters=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForLiteralParameters=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForIndexerParameters=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForObjectCreationParameters=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForOtherParameters=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:SuppressForParametersThatDifferOnlyBySuffix=false", - -- "RoslynExtensionsOptions:InlayHintsOptions:SuppressForParametersThatMatchMethodIntent=false", - -- "RoslynExtensionsOptions:InlayHintsOptions:SuppressForParametersThatMatchArgumentName=false", - -- "RoslynExtensionsOptions:InlayHintsOptions:EnableForTypes=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForImplicitVariableTypes=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForLambdaParameterTypes=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForImplicitObjectCreation=true", - "Sdk:IncludePrereleases=true", - }, - }, - typst_lsp = { - settings = { - experimentalFormatterMode = "on", - exportPdf = "onSave", - }, - mason = false, - }, - nil_ls = { - settings = { - ["nil"] = { - formatting = { - command = { "nixpkgs-fmt" }, - }, - }, - }, - mason = false, - }, - ltex = { - settings = { - ltex = { - checkFrequency = "save", - }, - }, - filetypes = { - "bib", - "gitcommit", - "markdown", - "org", - "plaintex", - "rst", - "rnoweb", - "tex", - "pandoc", - "typst", - "typ", - }, - mason = false, - }, - sqls = { - mason = false, - }, - lemminx = { - mason = false, - }, - opencl_ls = { - mason = false, - }, - yamlls = { - mason = false, - }, - zls = { - mason = false, - }, - jsonls = { - mason = false, - cmd = { "vscode-json-languageserver", "--stdio" }, - }, - cssls = { - mason = false, - cmd = { "css-languageserver", "--stdio" }, - }, - lua_ls = { - mason = false, - { - Lua = { - workspace = { - checkThirdParty = false, - }, - completion = { - callSnippet = "Replace", + Lua = { + workspace = { + checkThirdParty = false, + }, + completion = { + callSnippet = "Replace", + }, }, }, }, }, - }, - }, + } + return vim.tbl_deep_extend("keep", new_opts, opts) + end, init = function() local keys = require("lazyvim.plugins.lsp.keymaps").get() local my_keys = require("config.lsp-keymap").get() diff --git a/nix/programs/nvim/lua/plugins/plugins.lua b/nix/programs/nvim/lua/plugins/plugins.lua index de330e6..830c74f 100644 --- a/nix/programs/nvim/lua/plugins/plugins.lua +++ b/nix/programs/nvim/lua/plugins/plugins.lua @@ -281,4 +281,15 @@ return { }, { "akinsho/git-conflict.nvim", version = "*", config = true }, { "Hoffs/omnisharp-extended-lsp.nvim" }, + { + "barreiroleo/ltex_extra.nvim", + branch = "dev", + ft = { "markdown", "tex", "typst", "typ", "text" }, + config = function() + require("ltex_extra").setup({ + load_langs = { "en-US" }, + path = vim.fn.stdpath("config") .. "/spell", + }) + end, + }, } From 76eb550425cdadd7c30a1d04cd18cf32df2608df Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 26 May 2024 09:16:09 +0200 Subject: [PATCH 012/330] hyprland: move back to git --- nix/flake.nix | 6 ++---- nix/programs/default.nix | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/nix/flake.nix b/nix/flake.nix index e4a3bf8..698a98b 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -18,14 +18,12 @@ Hyprspace = { url = "github:KZDKM/Hyprspace"; - # Hyprspace uses latest Hyprland. We declare this to keep them in sync. inputs.hyprland.follows = "nixpkgs"; }; nur.url = "github:nix-community/nur"; - # hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; - # hyprland.url = "git+https://github.com/hyprwm/Hyprland?rev=2f1735bd93adb9e153758cd4171d8fd3ae610357"; - # hyprland.url = "github:hyprwm/Hyprland/xwayland-rewrite?submodules=1"; + + hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; ironbar = { url = "github:JakeStanger/ironbar"; diff --git a/nix/programs/default.nix b/nix/programs/default.nix index e0f5ed0..bacef2d 100644 --- a/nix/programs/default.nix +++ b/nix/programs/default.nix @@ -9,7 +9,7 @@ let inputs.oxidash.homeManagerModules.default inputs.oxipaste.homeManagerModules.default inputs.hyprdock.homeManagerModules.default - # inputs.hyprland.homeManagerModules.default + inputs.hyprland.homeManagerModules.default inputs.reset.homeManagerModules.default inputs.nix-flatpak.homeManagerModules.nix-flatpak inputs.sops-nix.homeManagerModules.sops From c7f3f8ddfa8298c3e10dbf87c66ed3640af6ad79 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 26 May 2024 19:09:08 +0200 Subject: [PATCH 013/330] lsp: Add fsharp and haskell --- nix/flake.lock | 427 ++++++++++++++++------ nix/programs/coding.nix | 9 + nix/programs/common.nix | 2 +- nix/programs/nvim/default.nix | 2 + nix/programs/nvim/lua/plugins/plugins.lua | 10 +- 5 files changed, 331 insertions(+), 119 deletions(-) diff --git a/nix/flake.lock b/nix/flake.lock index 20a2d8b..c096245 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -230,7 +230,7 @@ }, "flake-utils": { "inputs": { - "systems": "systems" + "systems": "systems_2" }, "locked": { "lastModified": 1705309234, @@ -248,7 +248,7 @@ }, "flake-utils_2": { "inputs": { - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1705309234, @@ -266,7 +266,7 @@ }, "flake-utils_3": { "inputs": { - "systems": "systems_3" + "systems": "systems_4" }, "locked": { "lastModified": 1705309234, @@ -284,7 +284,7 @@ }, "flake-utils_4": { "inputs": { - "systems": "systems_4" + "systems": "systems_5" }, "locked": { "lastModified": 1705309234, @@ -302,7 +302,7 @@ }, "flake-utils_5": { "inputs": { - "systems": "systems_5" + "systems": "systems_6" }, "locked": { "lastModified": 1705309234, @@ -320,7 +320,7 @@ }, "flake-utils_6": { "inputs": { - "systems": "systems_6" + "systems": "systems_7" }, "locked": { "lastModified": 1705309234, @@ -343,11 +343,11 @@ ] }, "locked": { - "lastModified": 1715930644, - "narHash": "sha256-W9pyM3/vePxrffHtzlJI6lDS3seANQ+Nqp+i58O46LI=", + "lastModified": 1716679503, + "narHash": "sha256-aX8AEWHLwuiYX8OCpTnHGrQeei1Gb+AGbk1hq+RIClg=", "owner": "nix-community", "repo": "home-manager", - "rev": "e3ad5108f54177e6520535768ddbf1e6af54b59d", + "rev": "e4611630c3cc8ed618b48d92f6291f65be9f7913", "type": "github" }, "original": { @@ -356,6 +356,35 @@ "type": "github" } }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1716576411, + "narHash": "sha256-FIN1wMoyePBTtibCbaeJaoKNLuAYIGwLCWAYC1DJanw=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "57298fc4f13c807e50ada2c986a3114b7fc2e621", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, "hyprdock": { "inputs": { "flake-parts": "flake-parts_2", @@ -375,19 +404,121 @@ "type": "github" } }, + "hyprland": { + "inputs": { + "hyprcursor": "hyprcursor", + "hyprlang": "hyprlang", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs_3", + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1716669967, + "narHash": "sha256-wq91XpwR0tv7e7KwSp0qzvu31EMssznl8DzbNy4M4Hk=", + "ref": "refs/heads/main", + "rev": "553232a3e4c112c8511309e6b685cb614895e714", + "revCount": 4743, + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "xdph", + "nixpkgs" + ], + "systems": [ + "hyprland", + "xdph", + "systems" + ] + }, + "locked": { + "lastModified": 1691753796, + "narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1716473782, + "narHash": "sha256-+qLn4lsHU6iL3+HTo1gTQ1tWzet8K9h+IfVemzEQZj8=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "87d5d984109c839482b88b4795db073eb9ed446f", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1716058375, + "narHash": "sha256-CwjWoVnBZE5SBpRx9dgSQGCr4Goxyfcyv3zZbOhVqzk=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "3afed4364790aebe0426077631af1e164a9650cc", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "ironbar": { "inputs": { "crane": "crane", "naersk": "naersk", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1716298131, - "narHash": "sha256-3gK89CiryG8PAXZvtWo+2rrwfyMApQOB5trNrM+cUUY=", + "lastModified": 1716498188, + "narHash": "sha256-tHE2jWpRUrGk0mCCeVmfL3tHa7S5RRXj/Ec3bPNZNxg=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "fd58ce771d3494b3cc034ac49c88af72aab57bf3", + "rev": "a47ef0c763cc61811a5fb21c03669e1bf2445f98", "type": "github" }, "original": { @@ -398,7 +529,7 @@ }, "naersk": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { "lastModified": 1713520724, @@ -447,11 +578,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1716061101, - "narHash": "sha256-H0eCta7ahEgloGIwE/ihkyGstOGu+kQwAiHvwVoXaA0=", + "lastModified": 1716655032, + "narHash": "sha256-kQ25DAiCGigsNR/Quxm3v+JGXAEXZ8I7RAF4U94bGzE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e7cc61784ddf51c81487637b3031a6dd2d6673a2", + "rev": "59a450646ec8ee0397f5fa54a08573e8240eb91f", "type": "github" }, "original": { @@ -462,22 +593,6 @@ } }, "nixpkgs_10": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -493,7 +608,39 @@ "type": "github" } }, + "nixpkgs_11": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_12": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_13": { "locked": { "lastModified": 1716190602, "narHash": "sha256-xYRimrR0duWvokWQEvB87bSsICeCvvX9DxpUOzCfsDE=", @@ -509,7 +656,7 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_14": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -525,23 +672,23 @@ "type": "github" } }, - "nixpkgs_14": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_15": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_16": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -557,7 +704,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_17": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -573,13 +720,13 @@ "type": "github" } }, - "nixpkgs_17": { + "nixpkgs_18": { "locked": { - "lastModified": 1716062047, - "narHash": "sha256-OhysviwHQz4p2HZL4g7XGMLoUbWMjkMr/ogaR3VUYNA=", + "lastModified": 1716651315, + "narHash": "sha256-iMgzIeedMqf30TXZ439zW3Yvng1Xm9QTGO+ZwG1IWSw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "02923630b89aa1ab36ef8e422501a6f4fd4b2016", + "rev": "c5187508b11177ef4278edf19616f44f21cc8c69", "type": "github" }, "original": { @@ -606,6 +753,22 @@ } }, "nixpkgs_3": { + "locked": { + "lastModified": 1716330097, + "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1714314149, "narHash": "sha256-yNAevSKF4krRWacmLUsLK7D7PlfuY3zF0lYnGYNi9vQ=", @@ -619,7 +782,7 @@ "type": "indirect" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1714253743, "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", @@ -635,33 +798,17 @@ "type": "github" } }, - "nixpkgs_5": { - "locked": { - "lastModified": 1716293225, - "narHash": "sha256-pU9ViBVE3XYb70xZx+jK6SEVphvt7xMTbm6yDIF4xPs=", - "owner": "NixOs", - "repo": "nixpkgs", - "rev": "3eaeaeb6b1e08a016380c279f8846e0bd8808916", - "type": "github" - }, - "original": { - "owner": "NixOs", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_6": { "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", + "lastModified": 1716509168, + "narHash": "sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8=", + "owner": "NixOs", "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "rev": "bfb7a882678e518398ce9a31a881538679f6f092", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "NixOs", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -684,22 +831,6 @@ } }, "nixpkgs_8": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_9": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -715,13 +846,29 @@ "type": "github" } }, + "nixpkgs_9": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nur": { "locked": { - "lastModified": 1716637573, - "narHash": "sha256-i7KOcVGJE3oRvjF4r45/GvbrKHaxtSc4K9DCJ+DR9DQ=", + "lastModified": 1716706473, + "narHash": "sha256-ObCen0feITe8AZh8mQacBtGI2OAhvYtG1CHcsz/dhSk=", "owner": "nix-community", "repo": "nur", - "rev": "a619ed4c9346515d8a9665cd3d44909944a1fc8e", + "rev": "e0913887c8e2ae0ef5513e107011de46482a54fd", "type": "github" }, "original": { @@ -733,7 +880,7 @@ "oxicalc": { "inputs": { "flake-parts": "flake-parts_3", - "nixpkgs": "nixpkgs_6" + "nixpkgs": "nixpkgs_7" }, "locked": { "lastModified": 1716225554, @@ -752,7 +899,7 @@ "oxidash": { "inputs": { "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_8", "rust-overlay": "rust-overlay_2" }, "locked": { @@ -772,7 +919,7 @@ "oxinoti": { "inputs": { "flake-parts": "flake-parts_5", - "nixpkgs": "nixpkgs_9", + "nixpkgs": "nixpkgs_10", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -792,7 +939,7 @@ "oxipaste": { "inputs": { "flake-parts": "flake-parts_6", - "nixpkgs": "nixpkgs_11", + "nixpkgs": "nixpkgs_12", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -812,7 +959,7 @@ "oxishut": { "inputs": { "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_13", + "nixpkgs": "nixpkgs_14", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -832,7 +979,7 @@ "reset": { "inputs": { "flake-parts": "flake-parts_8", - "nixpkgs": "nixpkgs_15", + "nixpkgs": "nixpkgs_16", "rust-overlay": "rust-overlay_6" }, "locked": { @@ -855,9 +1002,10 @@ "anyrun": "anyrun", "home-manager": "home-manager", "hyprdock": "hyprdock", + "hyprland": "hyprland", "ironbar": "ironbar", "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_6", "nur": "nur", "oxicalc": "oxicalc", "oxidash": "oxidash", @@ -893,7 +1041,7 @@ "rust-overlay_2": { "inputs": { "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_8" + "nixpkgs": "nixpkgs_9" }, "locked": { "lastModified": 1716171463, @@ -912,7 +1060,7 @@ "rust-overlay_3": { "inputs": { "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_10" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1716171463, @@ -931,7 +1079,7 @@ "rust-overlay_4": { "inputs": { "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_12" + "nixpkgs": "nixpkgs_13" }, "locked": { "lastModified": 1716171463, @@ -950,7 +1098,7 @@ "rust-overlay_5": { "inputs": { "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_14" + "nixpkgs": "nixpkgs_15" }, "locked": { "lastModified": 1716171463, @@ -969,7 +1117,7 @@ "rust-overlay_6": { "inputs": { "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_16" + "nixpkgs": "nixpkgs_17" }, "locked": { "lastModified": 1716171463, @@ -987,15 +1135,15 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_17", + "nixpkgs": "nixpkgs_18", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1716244104, - "narHash": "sha256-XXbqfkyWe0d0O+zqRQWi2oXi6wYDmTzXedFkBRwx1VI=", + "lastModified": 1716692524, + "narHash": "sha256-sALodaA7Zkp/JD6ehgwc0UCBrSBfB4cX66uFGTsqeFU=", "owner": "Mic92", "repo": "sops-nix", - "rev": "fddd52460e3332eedd8a0043af5675338a5b3e0b", + "rev": "962797a8d7f15ed7033031731d0bb77244839960", "type": "github" }, "original": { @@ -1006,16 +1154,16 @@ }, "systems": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default", + "repo": "default-linux", "type": "github" } }, @@ -1093,6 +1241,51 @@ "repo": "default", "type": "github" } + }, + "systems_7": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": "hyprland-protocols", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1716290197, + "narHash": "sha256-1u9Exrc7yx9qtES2brDh7/DDZ8w8ap1nboIOAtCgeuM=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "91e48d6acd8a5a611d26f925e51559ab743bc438", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } } }, "root": "root", diff --git a/nix/programs/coding.nix b/nix/programs/coding.nix index fbaad83..55d8eee 100644 --- a/nix/programs/coding.nix +++ b/nix/programs/coding.nix @@ -43,6 +43,15 @@ nodePackages.bash-language-server shfmt + #fsharp + fsharp + fsautocomplete + + #haskell + haskellPackages.cabal-install + ghc + haskellPackages.haskell-language-server + #html html-tidy diff --git a/nix/programs/common.nix b/nix/programs/common.nix index f07f500..b3fbd05 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -103,7 +103,7 @@ in }; home.sessionVariables = { - FLAKE = "home/dasshie/gits/dotFiles/nix"; + FLAKE = "home/dashie/gits/dotFiles/nix"; # don't ask... marksman somehow requires this DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = 1; }; diff --git a/nix/programs/nvim/default.nix b/nix/programs/nvim/default.nix index 8fe815f..8dbcc33 100644 --- a/nix/programs/nvim/default.nix +++ b/nix/programs/nvim/default.nix @@ -81,6 +81,8 @@ vim-illuminate vim-startuptime which-key-nvim + haskell-tools-nvim + Ionide-vim { name = "LuaSnip"; path = luasnip; } #{ name = "catppuccin"; path = catppuccin-nvim; } { name = "mini.ai"; path = mini-nvim; } diff --git a/nix/programs/nvim/lua/plugins/plugins.lua b/nix/programs/nvim/lua/plugins/plugins.lua index 830c74f..1a3d63b 100644 --- a/nix/programs/nvim/lua/plugins/plugins.lua +++ b/nix/programs/nvim/lua/plugins/plugins.lua @@ -284,7 +284,9 @@ return { { "barreiroleo/ltex_extra.nvim", branch = "dev", - ft = { "markdown", "tex", "typst", "typ", "text" }, + ft = { "tex", "typst", "text" }, + -- this causes an error with fsharp since + -- they use markdown to show lsp messages config = function() require("ltex_extra").setup({ load_langs = { "en-US" }, @@ -292,4 +294,10 @@ return { }) end, }, + { "ionide/Ionide-vim", ft = "fsharp" }, + { + "mrcjkb/haskell-tools.nvim", + version = "^3", + lazy = false, + }, } From 608a8f682c63032c9aaec788e83ddfd4a2345196 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 27 May 2024 09:01:24 +0200 Subject: [PATCH 014/330] merge --- nix/flake.lock | 1293 ------------------------------------------------ nix/flake.nix | 1 - 2 files changed, 1294 deletions(-) delete mode 100644 nix/flake.lock diff --git a/nix/flake.lock b/nix/flake.lock deleted file mode 100644 index c096245..0000000 --- a/nix/flake.lock +++ /dev/null @@ -1,1293 +0,0 @@ -{ - "nodes": { - "Hyprspace": { - "inputs": { - "hyprland": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715376791, - "narHash": "sha256-QKecFhWAB7sagSE+FXztINDqYqLro2nYp94f+ZtE/f4=", - "owner": "KZDKM", - "repo": "Hyprspace", - "rev": "8049b2794ca19d49320093426677d8c2911e7327", - "type": "github" - }, - "original": { - "owner": "KZDKM", - "repo": "Hyprspace", - "type": "github" - } - }, - "anyrun": { - "inputs": { - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1713259062, - "narHash": "sha256-WTO84hUL8IlNuHDK2yOCeJ38EewFzGt5E0kzBjNWxa8=", - "owner": "Kirottu", - "repo": "anyrun", - "rev": "f9d30e34fa4ccb2797c6becec37e8bcff6585d39", - "type": "github" - }, - "original": { - "owner": "Kirottu", - "repo": "anyrun", - "type": "github" - } - }, - "crane": { - "inputs": { - "nixpkgs": [ - "ironbar", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1713979152, - "narHash": "sha256-apdecPuh8SOQnkEET/kW/UcfjCRb8JbV5BKjoH+DcP4=", - "owner": "ipetkov", - "repo": "crane", - "rev": "a5eca68a2cf11adb32787fc141cddd29ac8eb79c", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "anyrun", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1696343447, - "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "hyprdock", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_3": { - "inputs": { - "nixpkgs-lib": [ - "oxicalc", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": [ - "oxidash", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_5": { - "inputs": { - "nixpkgs-lib": [ - "oxinoti", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_6": { - "inputs": { - "nixpkgs-lib": [ - "oxipaste", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_7": { - "inputs": { - "nixpkgs-lib": [ - "oxishut", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_8": { - "inputs": { - "nixpkgs-lib": [ - "reset", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-utils": { - "inputs": { - "systems": "systems_2" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { - "inputs": { - "systems": "systems_3" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "inputs": { - "systems": "systems_4" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { - "inputs": { - "systems": "systems_5" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { - "inputs": { - "systems": "systems_6" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_6": { - "inputs": { - "systems": "systems_7" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "home-manager": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1716679503, - "narHash": "sha256-aX8AEWHLwuiYX8OCpTnHGrQeei1Gb+AGbk1hq+RIClg=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "e4611630c3cc8ed618b48d92f6291f65be9f7913", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "hyprcursor": { - "inputs": { - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1716576411, - "narHash": "sha256-FIN1wMoyePBTtibCbaeJaoKNLuAYIGwLCWAYC1DJanw=", - "owner": "hyprwm", - "repo": "hyprcursor", - "rev": "57298fc4f13c807e50ada2c986a3114b7fc2e621", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprcursor", - "type": "github" - } - }, - "hyprdock": { - "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_2" - }, - "locked": { - "lastModified": 1716453478, - "narHash": "sha256-EoKGnKvYKoe9geFoK0wyEAMTPGOfRtjXibt4GUCfvBA=", - "owner": "DashieTM", - "repo": "hyprdock", - "rev": "8d07dbdf446e6b21528cc994547cc8f173a70330", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "hyprdock", - "type": "github" - } - }, - "hyprland": { - "inputs": { - "hyprcursor": "hyprcursor", - "hyprlang": "hyprlang", - "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_3", - "systems": "systems", - "xdph": "xdph" - }, - "locked": { - "lastModified": 1716669967, - "narHash": "sha256-wq91XpwR0tv7e7KwSp0qzvu31EMssznl8DzbNy4M4Hk=", - "ref": "refs/heads/main", - "rev": "553232a3e4c112c8511309e6b685cb614895e714", - "revCount": 4743, - "submodules": true, - "type": "git", - "url": "https://github.com/hyprwm/Hyprland" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://github.com/hyprwm/Hyprland" - } - }, - "hyprland-protocols": { - "inputs": { - "nixpkgs": [ - "hyprland", - "xdph", - "nixpkgs" - ], - "systems": [ - "hyprland", - "xdph", - "systems" - ] - }, - "locked": { - "lastModified": 1691753796, - "narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=", - "owner": "hyprwm", - "repo": "hyprland-protocols", - "rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-protocols", - "type": "github" - } - }, - "hyprlang": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1716473782, - "narHash": "sha256-+qLn4lsHU6iL3+HTo1gTQ1tWzet8K9h+IfVemzEQZj8=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "87d5d984109c839482b88b4795db073eb9ed446f", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprwayland-scanner": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1716058375, - "narHash": "sha256-CwjWoVnBZE5SBpRx9dgSQGCr4Goxyfcyv3zZbOhVqzk=", - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "rev": "3afed4364790aebe0426077631af1e164a9650cc", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "type": "github" - } - }, - "ironbar": { - "inputs": { - "crane": "crane", - "naersk": "naersk", - "nixpkgs": "nixpkgs_5", - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1716498188, - "narHash": "sha256-tHE2jWpRUrGk0mCCeVmfL3tHa7S5RRXj/Ec3bPNZNxg=", - "owner": "JakeStanger", - "repo": "ironbar", - "rev": "a47ef0c763cc61811a5fb21c03669e1bf2445f98", - "type": "github" - }, - "original": { - "owner": "JakeStanger", - "repo": "ironbar", - "type": "github" - } - }, - "naersk": { - "inputs": { - "nixpkgs": "nixpkgs_4" - }, - "locked": { - "lastModified": 1713520724, - "narHash": "sha256-CO8MmVDmqZX2FovL75pu5BvwhW+Vugc7Q6ze7Hj8heI=", - "owner": "nix-community", - "repo": "naersk", - "rev": "c5037590290c6c7dae2e42e7da1e247e54ed2d49", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "naersk", - "type": "github" - } - }, - "nix-flatpak": { - "locked": { - "lastModified": 1711997375, - "narHash": "sha256-KvU4gOtuFMS9Il67glRGtdNfguAINT9pCaXtvCL8uI8=", - "owner": "gmodena", - "repo": "nix-flatpak", - "rev": "45bf66f7068db79b552da864c0e87452be624d6c", - "type": "github" - }, - "original": { - "owner": "gmodena", - "repo": "nix-flatpak", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1696193975, - "narHash": "sha256-mnQjUcYgp9Guu3RNVAB2Srr1TqKcPpRXmJf4LJk6KRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fdd898f8f79e8d2f99ed2ab6b3751811ef683242", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1716655032, - "narHash": "sha256-kQ25DAiCGigsNR/Quxm3v+JGXAEXZ8I7RAF4U94bGzE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "59a450646ec8ee0397f5fa54a08573e8240eb91f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_10": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_12": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_13": { - "locked": { - "lastModified": 1716190602, - "narHash": "sha256-xYRimrR0duWvokWQEvB87bSsICeCvvX9DxpUOzCfsDE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5a5ac83292c7842072318f57d68a48474f8bd34d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_14": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_15": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_16": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_17": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_18": { - "locked": { - "lastModified": 1716651315, - "narHash": "sha256-iMgzIeedMqf30TXZ439zW3Yvng1Xm9QTGO+ZwG1IWSw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c5187508b11177ef4278edf19616f44f21cc8c69", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1716330097, - "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1716330097, - "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1714314149, - "narHash": "sha256-yNAevSKF4krRWacmLUsLK7D7PlfuY3zF0lYnGYNi9vQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "cf8cc1201be8bc71b7cbbbdaf349b22f4f99c7ae", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1714253743, - "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1716509168, - "narHash": "sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8=", - "owner": "NixOs", - "repo": "nixpkgs", - "rev": "bfb7a882678e518398ce9a31a881538679f6f092", - "type": "github" - }, - "original": { - "owner": "NixOs", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_7": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_8": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_9": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nur": { - "locked": { - "lastModified": 1716706473, - "narHash": "sha256-ObCen0feITe8AZh8mQacBtGI2OAhvYtG1CHcsz/dhSk=", - "owner": "nix-community", - "repo": "nur", - "rev": "e0913887c8e2ae0ef5513e107011de46482a54fd", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nur", - "type": "github" - } - }, - "oxicalc": { - "inputs": { - "flake-parts": "flake-parts_3", - "nixpkgs": "nixpkgs_7" - }, - "locked": { - "lastModified": 1716225554, - "narHash": "sha256-IenHIQgKdKJTt02VJLQ+q8EunIkMwQ57XFWyKO+rb7s=", - "owner": "DashieTM", - "repo": "OxiCalc", - "rev": "a3fa5d76941278fd0f586817dcd04be134159bd8", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiCalc", - "type": "github" - } - }, - "oxidash": { - "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_8", - "rust-overlay": "rust-overlay_2" - }, - "locked": { - "lastModified": 1716235599, - "narHash": "sha256-6LDrLEfPzwbd5nEcis8us4BA18YhoWkzMVwafCJ5N/A=", - "owner": "DashieTM", - "repo": "OxiDash", - "rev": "fe6984abc73f75a64b0a03231068c20f53ec4f76", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiDash", - "type": "github" - } - }, - "oxinoti": { - "inputs": { - "flake-parts": "flake-parts_5", - "nixpkgs": "nixpkgs_10", - "rust-overlay": "rust-overlay_3" - }, - "locked": { - "lastModified": 1716235566, - "narHash": "sha256-1U4/h0YyuoOERjQE68yQZVsDdIGl43OprDplSGBMhYY=", - "owner": "DashieTM", - "repo": "OxiNoti", - "rev": "c52c330d59a3b066e94618adbe9a7be5b9cfde24", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiNoti", - "type": "github" - } - }, - "oxipaste": { - "inputs": { - "flake-parts": "flake-parts_6", - "nixpkgs": "nixpkgs_12", - "rust-overlay": "rust-overlay_4" - }, - "locked": { - "lastModified": 1716235097, - "narHash": "sha256-kTsSNciMnp3y/QOPseB/QlhRqVxrm7teRCMl05OIiBs=", - "owner": "DashieTM", - "repo": "OxiPaste", - "rev": "3f494c1a3dd093e3c5761520554977a9dec33a3a", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiPaste", - "type": "github" - } - }, - "oxishut": { - "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_14", - "rust-overlay": "rust-overlay_5" - }, - "locked": { - "lastModified": 1716235696, - "narHash": "sha256-qqN2ev97ff1Yftr+8YS7Pm2/kk8SpQU8uxplbQYJGho=", - "owner": "DashieTM", - "repo": "OxiShut", - "rev": "d38d5c892b7ae2420715cbb6b4944abb76b49f9d", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiShut", - "type": "github" - } - }, - "reset": { - "inputs": { - "flake-parts": "flake-parts_8", - "nixpkgs": "nixpkgs_16", - "rust-overlay": "rust-overlay_6" - }, - "locked": { - "lastModified": 1716235655, - "narHash": "sha256-tTMaRDleLa7oBBwjlELt3NefpE1iwz4OLzyNIDGFjmY=", - "owner": "Xetibo", - "repo": "ReSet", - "rev": "3cb7cd2d7f24bd1f270c9cdb5e519dde7936a6f4", - "type": "github" - }, - "original": { - "owner": "Xetibo", - "repo": "ReSet", - "type": "github" - } - }, - "root": { - "inputs": { - "Hyprspace": "Hyprspace", - "anyrun": "anyrun", - "home-manager": "home-manager", - "hyprdock": "hyprdock", - "hyprland": "hyprland", - "ironbar": "ironbar", - "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_6", - "nur": "nur", - "oxicalc": "oxicalc", - "oxidash": "oxidash", - "oxinoti": "oxinoti", - "oxipaste": "oxipaste", - "oxishut": "oxishut", - "reset": "reset", - "sops-nix": "sops-nix" - } - }, - "rust-overlay": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": [ - "ironbar", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1714443211, - "narHash": "sha256-lKTA3XqRo4aVgkyTSCtpcALpGXdmkilHTtN00eRg0QU=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "ce35c36f58f82cee6ec959e0d44c587d64281b6f", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { - "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_9" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_3": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_11" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_4": { - "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_13" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_5": { - "inputs": { - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_15" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_6": { - "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_17" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "sops-nix": { - "inputs": { - "nixpkgs": "nixpkgs_18", - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1716692524, - "narHash": "sha256-sALodaA7Zkp/JD6ehgwc0UCBrSBfB4cX66uFGTsqeFU=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "962797a8d7f15ed7033031731d0bb77244839960", - "type": "github" - }, - "original": { - "owner": "Mic92", - "repo": "sops-nix", - "type": "github" - } - }, - "systems": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_4": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_5": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_6": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_7": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "xdph": { - "inputs": { - "hyprland-protocols": "hyprland-protocols", - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1716290197, - "narHash": "sha256-1u9Exrc7yx9qtES2brDh7/DDZ8w8ap1nboIOAtCgeuM=", - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "rev": "91e48d6acd8a5a611d26f925e51559ab743bc438", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/nix/flake.nix b/nix/flake.nix index 698a98b..669375a 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -22,7 +22,6 @@ }; nur.url = "github:nix-community/nur"; - hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; ironbar = { From d379c60bdfd4d17639d0a8edda6ac543c0339480 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 28 May 2024 12:29:16 +0200 Subject: [PATCH 015/330] update lock --- nix/flake.lock | 1293 +++++++++++++++++++ nix/programs/individual_configs/default.nix | 1 + nix/programs/individual_configs/neovide.nix | 3 + 3 files changed, 1297 insertions(+) create mode 100644 nix/flake.lock create mode 100644 nix/programs/individual_configs/neovide.nix diff --git a/nix/flake.lock b/nix/flake.lock new file mode 100644 index 0000000..cf1f40c --- /dev/null +++ b/nix/flake.lock @@ -0,0 +1,1293 @@ +{ + "nodes": { + "Hyprspace": { + "inputs": { + "hyprland": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715376791, + "narHash": "sha256-QKecFhWAB7sagSE+FXztINDqYqLro2nYp94f+ZtE/f4=", + "owner": "KZDKM", + "repo": "Hyprspace", + "rev": "8049b2794ca19d49320093426677d8c2911e7327", + "type": "github" + }, + "original": { + "owner": "KZDKM", + "repo": "Hyprspace", + "type": "github" + } + }, + "anyrun": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1713259062, + "narHash": "sha256-WTO84hUL8IlNuHDK2yOCeJ38EewFzGt5E0kzBjNWxa8=", + "owner": "Kirottu", + "repo": "anyrun", + "rev": "f9d30e34fa4ccb2797c6becec37e8bcff6585d39", + "type": "github" + }, + "original": { + "owner": "Kirottu", + "repo": "anyrun", + "type": "github" + } + }, + "crane": { + "inputs": { + "nixpkgs": [ + "ironbar", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1713979152, + "narHash": "sha256-apdecPuh8SOQnkEET/kW/UcfjCRb8JbV5BKjoH+DcP4=", + "owner": "ipetkov", + "repo": "crane", + "rev": "a5eca68a2cf11adb32787fc141cddd29ac8eb79c", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "anyrun", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1696343447, + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "hyprdock", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "oxicalc", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": [ + "oxidash", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": [ + "oxinoti", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_6": { + "inputs": { + "nixpkgs-lib": [ + "oxipaste", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ + "oxishut", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_8": { + "inputs": { + "nixpkgs-lib": [ + "reset", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "inputs": { + "systems": "systems_5" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "inputs": { + "systems": "systems_6" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "inputs": { + "systems": "systems_7" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1716736760, + "narHash": "sha256-h3RmnNknKYtVA+EvUSra6QAwfZjC2q1G8YA7W0gat8Y=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "5d151429e1e79107acf6d06dcc5ace4e642ec239", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1716576411, + "narHash": "sha256-FIN1wMoyePBTtibCbaeJaoKNLuAYIGwLCWAYC1DJanw=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "57298fc4f13c807e50ada2c986a3114b7fc2e621", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprdock": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1716453478, + "narHash": "sha256-EoKGnKvYKoe9geFoK0wyEAMTPGOfRtjXibt4GUCfvBA=", + "owner": "DashieTM", + "repo": "hyprdock", + "rev": "8d07dbdf446e6b21528cc994547cc8f173a70330", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "hyprdock", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "hyprcursor": "hyprcursor", + "hyprlang": "hyprlang", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs_3", + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1716669967, + "narHash": "sha256-wq91XpwR0tv7e7KwSp0qzvu31EMssznl8DzbNy4M4Hk=", + "ref": "refs/heads/main", + "rev": "553232a3e4c112c8511309e6b685cb614895e714", + "revCount": 4743, + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "xdph", + "nixpkgs" + ], + "systems": [ + "hyprland", + "xdph", + "systems" + ] + }, + "locked": { + "lastModified": 1691753796, + "narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1716473782, + "narHash": "sha256-+qLn4lsHU6iL3+HTo1gTQ1tWzet8K9h+IfVemzEQZj8=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "87d5d984109c839482b88b4795db073eb9ed446f", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1716058375, + "narHash": "sha256-CwjWoVnBZE5SBpRx9dgSQGCr4Goxyfcyv3zZbOhVqzk=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "3afed4364790aebe0426077631af1e164a9650cc", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "ironbar": { + "inputs": { + "crane": "crane", + "naersk": "naersk", + "nixpkgs": "nixpkgs_5", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1716498188, + "narHash": "sha256-tHE2jWpRUrGk0mCCeVmfL3tHa7S5RRXj/Ec3bPNZNxg=", + "owner": "JakeStanger", + "repo": "ironbar", + "rev": "a47ef0c763cc61811a5fb21c03669e1bf2445f98", + "type": "github" + }, + "original": { + "owner": "JakeStanger", + "repo": "ironbar", + "type": "github" + } + }, + "naersk": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1713520724, + "narHash": "sha256-CO8MmVDmqZX2FovL75pu5BvwhW+Vugc7Q6ze7Hj8heI=", + "owner": "nix-community", + "repo": "naersk", + "rev": "c5037590290c6c7dae2e42e7da1e247e54ed2d49", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "naersk", + "type": "github" + } + }, + "nix-flatpak": { + "locked": { + "lastModified": 1711997375, + "narHash": "sha256-KvU4gOtuFMS9Il67glRGtdNfguAINT9pCaXtvCL8uI8=", + "owner": "gmodena", + "repo": "nix-flatpak", + "rev": "45bf66f7068db79b552da864c0e87452be624d6c", + "type": "github" + }, + "original": { + "owner": "gmodena", + "repo": "nix-flatpak", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1696193975, + "narHash": "sha256-mnQjUcYgp9Guu3RNVAB2Srr1TqKcPpRXmJf4LJk6KRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fdd898f8f79e8d2f99ed2ab6b3751811ef683242", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1716655032, + "narHash": "sha256-kQ25DAiCGigsNR/Quxm3v+JGXAEXZ8I7RAF4U94bGzE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "59a450646ec8ee0397f5fa54a08573e8240eb91f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_10": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_12": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_13": { + "locked": { + "lastModified": 1716190602, + "narHash": "sha256-xYRimrR0duWvokWQEvB87bSsICeCvvX9DxpUOzCfsDE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5a5ac83292c7842072318f57d68a48474f8bd34d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_15": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_16": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_17": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_18": { + "locked": { + "lastModified": 1716651315, + "narHash": "sha256-iMgzIeedMqf30TXZ439zW3Yvng1Xm9QTGO+ZwG1IWSw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c5187508b11177ef4278edf19616f44f21cc8c69", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1716330097, + "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1716330097, + "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1714314149, + "narHash": "sha256-yNAevSKF4krRWacmLUsLK7D7PlfuY3zF0lYnGYNi9vQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cf8cc1201be8bc71b7cbbbdaf349b22f4f99c7ae", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1714253743, + "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1716509168, + "narHash": "sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8=", + "owner": "NixOs", + "repo": "nixpkgs", + "rev": "bfb7a882678e518398ce9a31a881538679f6f092", + "type": "github" + }, + "original": { + "owner": "NixOs", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nur": { + "locked": { + "lastModified": 1716793287, + "narHash": "sha256-z6su/MUjfL+iuL2rjLnKmmAlUaYfOe5I2if26ad/4Ps=", + "owner": "nix-community", + "repo": "nur", + "rev": "2d0c993c47deccf8aa4cf7614c397c856042816d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nur", + "type": "github" + } + }, + "oxicalc": { + "inputs": { + "flake-parts": "flake-parts_3", + "nixpkgs": "nixpkgs_7" + }, + "locked": { + "lastModified": 1716225554, + "narHash": "sha256-IenHIQgKdKJTt02VJLQ+q8EunIkMwQ57XFWyKO+rb7s=", + "owner": "DashieTM", + "repo": "OxiCalc", + "rev": "a3fa5d76941278fd0f586817dcd04be134159bd8", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiCalc", + "type": "github" + } + }, + "oxidash": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_8", + "rust-overlay": "rust-overlay_2" + }, + "locked": { + "lastModified": 1716235599, + "narHash": "sha256-6LDrLEfPzwbd5nEcis8us4BA18YhoWkzMVwafCJ5N/A=", + "owner": "DashieTM", + "repo": "OxiDash", + "rev": "fe6984abc73f75a64b0a03231068c20f53ec4f76", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiDash", + "type": "github" + } + }, + "oxinoti": { + "inputs": { + "flake-parts": "flake-parts_5", + "nixpkgs": "nixpkgs_10", + "rust-overlay": "rust-overlay_3" + }, + "locked": { + "lastModified": 1716235566, + "narHash": "sha256-1U4/h0YyuoOERjQE68yQZVsDdIGl43OprDplSGBMhYY=", + "owner": "DashieTM", + "repo": "OxiNoti", + "rev": "c52c330d59a3b066e94618adbe9a7be5b9cfde24", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiNoti", + "type": "github" + } + }, + "oxipaste": { + "inputs": { + "flake-parts": "flake-parts_6", + "nixpkgs": "nixpkgs_12", + "rust-overlay": "rust-overlay_4" + }, + "locked": { + "lastModified": 1716235097, + "narHash": "sha256-kTsSNciMnp3y/QOPseB/QlhRqVxrm7teRCMl05OIiBs=", + "owner": "DashieTM", + "repo": "OxiPaste", + "rev": "3f494c1a3dd093e3c5761520554977a9dec33a3a", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiPaste", + "type": "github" + } + }, + "oxishut": { + "inputs": { + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_14", + "rust-overlay": "rust-overlay_5" + }, + "locked": { + "lastModified": 1716235696, + "narHash": "sha256-qqN2ev97ff1Yftr+8YS7Pm2/kk8SpQU8uxplbQYJGho=", + "owner": "DashieTM", + "repo": "OxiShut", + "rev": "d38d5c892b7ae2420715cbb6b4944abb76b49f9d", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiShut", + "type": "github" + } + }, + "reset": { + "inputs": { + "flake-parts": "flake-parts_8", + "nixpkgs": "nixpkgs_16", + "rust-overlay": "rust-overlay_6" + }, + "locked": { + "lastModified": 1716722679, + "narHash": "sha256-ZqjpLydOcLkCnA6MA+b59k70yv6IqCyC0xxQA76HoJc=", + "owner": "Xetibo", + "repo": "ReSet", + "rev": "ecfaf2baddfa6da6823fb67d2fdd1db8ec0e1f21", + "type": "github" + }, + "original": { + "owner": "Xetibo", + "repo": "ReSet", + "type": "github" + } + }, + "root": { + "inputs": { + "Hyprspace": "Hyprspace", + "anyrun": "anyrun", + "home-manager": "home-manager", + "hyprdock": "hyprdock", + "hyprland": "hyprland", + "ironbar": "ironbar", + "nix-flatpak": "nix-flatpak", + "nixpkgs": "nixpkgs_6", + "nur": "nur", + "oxicalc": "oxicalc", + "oxidash": "oxidash", + "oxinoti": "oxinoti", + "oxipaste": "oxipaste", + "oxishut": "oxishut", + "reset": "reset", + "sops-nix": "sops-nix" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "ironbar", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1714443211, + "narHash": "sha256-lKTA3XqRo4aVgkyTSCtpcALpGXdmkilHTtN00eRg0QU=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "ce35c36f58f82cee6ec959e0d44c587d64281b6f", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_9" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_3": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_11" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_4": { + "inputs": { + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_13" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_5": { + "inputs": { + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_15" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_6": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_17" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_18", + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1716692524, + "narHash": "sha256-sALodaA7Zkp/JD6ehgwc0UCBrSBfB4cX66uFGTsqeFU=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "962797a8d7f15ed7033031731d0bb77244839960", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_7": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": "hyprland-protocols", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1716290197, + "narHash": "sha256-1u9Exrc7yx9qtES2brDh7/DDZ8w8ap1nboIOAtCgeuM=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "91e48d6acd8a5a611d26f925e51559ab743bc438", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nix/programs/individual_configs/default.nix b/nix/programs/individual_configs/default.nix index 3c2a87d..1e4e895 100644 --- a/nix/programs/individual_configs/default.nix +++ b/nix/programs/individual_configs/default.nix @@ -9,5 +9,6 @@ ./git.nix ./firefox.nix ./keepass.nix + ./neovide.nix ]; } diff --git a/nix/programs/individual_configs/neovide.nix b/nix/programs/individual_configs/neovide.nix new file mode 100644 index 0000000..c9125e7 --- /dev/null +++ b/nix/programs/individual_configs/neovide.nix @@ -0,0 +1,3 @@ +{ pkgs, ... }: { + xdg.configFile."neovide/config.toml".source = (pkgs.formats.toml { }).generate "neovide" { }; +} From 5ed1986caa04440548b9d7e149f55ceed344c858 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 28 May 2024 13:14:48 +0200 Subject: [PATCH 016/330] hyprlock: fix config --- nix/programs/hyprland/hyprlock.nix | 55 +++++++++++++++--------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/nix/programs/hyprland/hyprlock.nix b/nix/programs/hyprland/hyprlock.nix index 641f078..1153adf 100644 --- a/nix/programs/hyprland/hyprlock.nix +++ b/nix/programs/hyprland/hyprlock.nix @@ -1,35 +1,36 @@ -{ pkgs -, inputs -, config +{ config , ... }: { - programs.hyprlock.enable = true; - programs.hyprlock.settings = { - backgrounds = [ - { - monitor = ""; - path = ""; - color = "rgba(26, 27, 38, 1.0)"; - } - ]; + programs.hyprlock = { + enable = true; + settings = { + background = [ + { + monitor = ""; + path = ""; + color = "rgba(26, 27, 38, 1.0)"; + } + ]; - input-fields = [ - { - monitor = "${config.programs.ironbar.monitor}"; + input-field = [ + { + monitor = "${config.programs.ironbar.monitor}"; - placeholder_text = "password or something"; - } - ]; + placeholder_text = "password or something"; + } + ]; - labels = [ - { - monitor = ""; - text = "$TIME"; - font_size = 50; - valign = "center"; - halign = "center"; - } - ]; + label = [ + { + monitor = "${config.programs.ironbar.monitor}"; + text = "$TIME"; + font_size = 50; + position = "0, 200"; + valign = "center"; + halign = "center"; + } + ]; + }; }; } From a8377b6dccd94be71407d2ca17cc78d078ae1683 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 28 May 2024 13:48:51 +0200 Subject: [PATCH 017/330] mdformat: add --number -> 1,2,3,4 to 1,1,1,1 is a good idea right? --- nix/base/env.nix | 3 +++ nix/programs/common.nix | 6 ------ nix/programs/nvim/lua/plugins/lsp.lua | 7 ++++++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/nix/base/env.nix b/nix/base/env.nix index 5166603..4fb53bd 100644 --- a/nix/base/env.nix +++ b/nix/base/env.nix @@ -12,5 +12,8 @@ environment.sessionVariables = { NIXOS_OZONE_WL = "1"; GOPATH = "$HOME/.go"; + FLAKE = "home/dashie/gits/dotFiles/nix"; + # don't ask... marksman somehow requires this + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = 1; }; } diff --git a/nix/programs/common.nix b/nix/programs/common.nix index b3fbd05..9f73918 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -101,12 +101,6 @@ in enable = true; enableFishIntegration = true; }; - home.sessionVariables = - { - FLAKE = "home/dashie/gits/dotFiles/nix"; - # don't ask... marksman somehow requires this - DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = 1; - }; sops = { gnupg = { diff --git a/nix/programs/nvim/lua/plugins/lsp.lua b/nix/programs/nvim/lua/plugins/lsp.lua index 64c3f09..73be574 100644 --- a/nix/programs/nvim/lua/plugins/lsp.lua +++ b/nix/programs/nvim/lua/plugins/lsp.lua @@ -219,7 +219,12 @@ return { require("conform").format({ async = true, lsp_fallback = true }) end, mode = "", - desc = "Format buffer", + numberdesc = "Format buffer", + }, + }, + formatters = { + mdformat = { + prepend_args = { "--number" }, }, }, formatters_by_ft = { From b9c687d62ea94679a90ec01ee8cac3ad864bad31 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 30 May 2024 21:34:19 +0200 Subject: [PATCH 018/330] nix: use plugin for reset --- nix/flake.lock | 173 ++++++++++++++++++++++++++++++++++------ nix/flake.nix | 1 + nix/programs/common.nix | 5 ++ nix/programs/media.nix | 2 + 4 files changed, 158 insertions(+), 23 deletions(-) diff --git a/nix/flake.lock b/nix/flake.lock index cf1f40c..0ff08ba 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -228,6 +228,27 @@ "type": "github" } }, + "flake-parts_9": { + "inputs": { + "nixpkgs-lib": [ + "reset-plugins", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems_2" @@ -336,6 +357,24 @@ "type": "github" } }, + "flake-utils_7": { + "inputs": { + "systems": "systems_8" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -343,11 +382,11 @@ ] }, "locked": { - "lastModified": 1716736760, - "narHash": "sha256-h3RmnNknKYtVA+EvUSra6QAwfZjC2q1G8YA7W0gat8Y=", + "lastModified": 1717052710, + "narHash": "sha256-LRhOxzXmOza5SymhOgnEzA8EAQp+94kkeUYWKKpLJ/U=", "owner": "nix-community", "repo": "home-manager", - "rev": "5d151429e1e79107acf6d06dcc5ace4e642ec239", + "rev": "29c69d9a466e41d46fd3a7a9d0591ef9c113c2ae", "type": "github" }, "original": { @@ -414,11 +453,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1716669967, - "narHash": "sha256-wq91XpwR0tv7e7KwSp0qzvu31EMssznl8DzbNy4M4Hk=", + "lastModified": 1716968065, + "narHash": "sha256-kuVKS98JUgJ71Z3sRUo+YnQgmX8xdXoZZbBPyIZMWYs=", "ref": "refs/heads/main", - "rev": "553232a3e4c112c8511309e6b685cb614895e714", - "revCount": 4743, + "rev": "a60c7283e677ed81a466d1c0c864c8a05e192cac", + "revCount": 4750, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -514,11 +553,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1716498188, - "narHash": "sha256-tHE2jWpRUrGk0mCCeVmfL3tHa7S5RRXj/Ec3bPNZNxg=", + "lastModified": 1717013290, + "narHash": "sha256-ObYq1f7DaYaTEhujqg+nAOjoH2XgMRDrfe1dGjRofzM=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "a47ef0c763cc61811a5fb21c03669e1bf2445f98", + "rev": "b5755ef9d495bdf623965562725a7c0b1d27ea04", "type": "github" }, "original": { @@ -722,11 +761,27 @@ }, "nixpkgs_18": { "locked": { - "lastModified": 1716651315, - "narHash": "sha256-iMgzIeedMqf30TXZ439zW3Yvng1Xm9QTGO+ZwG1IWSw=", + "lastModified": 1716948383, + "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c5187508b11177ef4278edf19616f44f21cc8c69", + "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_19": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", "type": "github" }, "original": { @@ -752,6 +807,22 @@ "type": "github" } }, + "nixpkgs_20": { + "locked": { + "lastModified": 1716651315, + "narHash": "sha256-iMgzIeedMqf30TXZ439zW3Yvng1Xm9QTGO+ZwG1IWSw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c5187508b11177ef4278edf19616f44f21cc8c69", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_3": { "locked": { "lastModified": 1716330097, @@ -800,11 +871,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1716509168, - "narHash": "sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8=", + "lastModified": 1716769173, + "narHash": "sha256-7EXDb5WBw+d004Agt+JHC/Oyh/KTUglOaQ4MNjBbo5w=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "bfb7a882678e518398ce9a31a881538679f6f092", + "rev": "9ca3f649614213b2aaf5f1e16ec06952fe4c2632", "type": "github" }, "original": { @@ -864,11 +935,11 @@ }, "nur": { "locked": { - "lastModified": 1716793287, - "narHash": "sha256-z6su/MUjfL+iuL2rjLnKmmAlUaYfOe5I2if26ad/4Ps=", + "lastModified": 1717054761, + "narHash": "sha256-LBrHEBC0S7C6zjQTsjahAvxxlDH3cbZmEgHiri9o4SM=", "owner": "nix-community", "repo": "nur", - "rev": "2d0c993c47deccf8aa4cf7614c397c856042816d", + "rev": "a4eff07f9bbcf74522c642c72047ed03c3831501", "type": "github" }, "original": { @@ -983,11 +1054,11 @@ "rust-overlay": "rust-overlay_6" }, "locked": { - "lastModified": 1716722679, - "narHash": "sha256-ZqjpLydOcLkCnA6MA+b59k70yv6IqCyC0xxQA76HoJc=", + "lastModified": 1717097255, + "narHash": "sha256-X6V0Pq0111uCeMn5jh/T2+hO2qz0TkF+os9X8wkKS+M=", "owner": "Xetibo", "repo": "ReSet", - "rev": "ecfaf2baddfa6da6823fb67d2fdd1db8ec0e1f21", + "rev": "40beca475ff60718308767c213b480734559a836", "type": "github" }, "original": { @@ -996,6 +1067,27 @@ "type": "github" } }, + "reset-plugins": { + "inputs": { + "flake-parts": "flake-parts_9", + "nixpkgs": "nixpkgs_18", + "rust-overlay": "rust-overlay_7" + }, + "locked": { + "lastModified": 1717092514, + "narHash": "sha256-aifR0Jdk1S9OzLYVlJEm4V+Dvm3MXpHYqRDfq2U66uQ=", + "owner": "Xetibo", + "repo": "ReSet-Plugins", + "rev": "97543b19c416578a83ac68ca010d4b032d87593a", + "type": "github" + }, + "original": { + "owner": "Xetibo", + "ref": "dashie", + "repo": "ReSet-Plugins", + "type": "github" + } + }, "root": { "inputs": { "Hyprspace": "Hyprspace", @@ -1013,6 +1105,7 @@ "oxipaste": "oxipaste", "oxishut": "oxishut", "reset": "reset", + "reset-plugins": "reset-plugins", "sops-nix": "sops-nix" } }, @@ -1133,9 +1226,28 @@ "type": "github" } }, + "rust-overlay_7": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_19" + }, + "locked": { + "lastModified": 1717035469, + "narHash": "sha256-MzH+yjKULH3HCRj9QCTwBvqq4LZkR0ZqRE/QfGOGC2E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "095702e63a40e86f339d11864da9dc965b70a01e", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_18", + "nixpkgs": "nixpkgs_20", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { @@ -1257,6 +1369,21 @@ "type": "github" } }, + "systems_8": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": "hyprland-protocols", diff --git a/nix/flake.nix b/nix/flake.nix index 669375a..efddb9d 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -36,6 +36,7 @@ oxipaste.url = "github:DashieTM/OxiPaste"; hyprdock.url = "github:DashieTM/hyprdock"; reset.url = "github:Xetibo/ReSet"; + reset-plugins.url = "github:Xetibo/ReSet-Plugins?ref=dashie"; }; outputs = { ... }@inputs: diff --git a/nix/programs/common.nix b/nix/programs/common.nix index 9f73918..d0d28b8 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -1,4 +1,5 @@ { pkgs +, inputs , lib , ... }: @@ -65,6 +66,10 @@ in programs.oxipaste.enable = true; programs.hyprdock.enable = true; programs.reset.enable = true; + programs.reset.config.plugins = [ + inputs.reset-plugins.packages."x86_64-linux".monitor + ]; + # inputs.reset-plugins.packages#.keyboard_plugin nixpkgs.config.allowUnfree = true; diff --git a/nix/programs/media.nix b/nix/programs/media.nix index 8f6dc12..9d01d83 100644 --- a/nix/programs/media.nix +++ b/nix/programs/media.nix @@ -24,6 +24,8 @@ inkscape gimp krita + yt-dlp + spotdl ]; programs.obs-studio.enable = true; programs.obs-studio.plugins = with pkgs; [ From 7e65c8e62aeaa729ccf1aaef1b1a480fdc22b6ae Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 1 Jul 2024 16:29:51 +0200 Subject: [PATCH 019/330] packages: Add polylux and pdfpc --- nix/base/common_hardware.nix | 10 +- nix/flake.lock | 233 ++++++++++++-------- nix/flake.nix | 4 +- nix/hardware/spaceship/base_config.nix | 2 +- nix/hardware/spaceship/configuration.nix | 8 +- nix/programs/coding.nix | 2 +- nix/programs/common.nix | 15 +- nix/programs/hyprland/config.nix | 24 +- nix/programs/hyprland/default.nix | 1 + nix/programs/individual_configs/firefox.nix | 2 +- nix/programs/media.nix | 2 + nix/programs/nvim/default.nix | 50 ++++- nix/programs/nvim/flake.lock | 69 ++++++ nix/programs/nvim/flake.nix | 31 +++ nix/programs/nvim/lua/config/autocmds.lua | 1 - nix/programs/nvim/lua/config/lazy.lua | 1 - nix/programs/nvim/lua/plugins/cmp.lua | 1 - nix/programs/nvim/lua/plugins/lsp.lua | 3 - nix/programs/nvim/lua/plugins/plugins.lua | 41 ++-- nix/programs/oxi/oxinoti.nix | 2 +- nix/programs/themes/kvantum.nix | 154 +++++++++++++ nix/programs/themes/qt.nix | 14 +- 22 files changed, 506 insertions(+), 164 deletions(-) create mode 100644 nix/programs/nvim/flake.lock create mode 100644 nix/programs/nvim/flake.nix create mode 100644 nix/programs/themes/kvantum.nix diff --git a/nix/base/common_hardware.nix b/nix/base/common_hardware.nix index d514dc0..3ab990b 100644 --- a/nix/base/common_hardware.nix +++ b/nix/base/common_hardware.nix @@ -25,6 +25,14 @@ # 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; + }; # Enable sound with pipewire. sound.enable = true; @@ -51,7 +59,7 @@ users.users.dashie = { isNormalUser = true; description = "dashie"; - extraGroups = [ "networkmanager" "wheel" "gamemode" "docker" ]; + extraGroups = [ "networkmanager" "wheel" "gamemode" "docker" "vboxusers" ]; packages = with pkgs; [ home-manager xdg-desktop-portal-gtk diff --git a/nix/flake.lock b/nix/flake.lock index 0ff08ba..2e24b48 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -3,15 +3,15 @@ "Hyprspace": { "inputs": { "hyprland": [ - "nixpkgs" + "hyprland" ] }, "locked": { - "lastModified": 1715376791, - "narHash": "sha256-QKecFhWAB7sagSE+FXztINDqYqLro2nYp94f+ZtE/f4=", + "lastModified": 1718642173, + "narHash": "sha256-iyj4D6c77uROAH9QdZjPd9SKnS/DuACMESqaEKnBgI8=", "owner": "KZDKM", "repo": "Hyprspace", - "rev": "8049b2794ca19d49320093426677d8c2911e7327", + "rev": "2f3edb68f47a8f5d99d10b322e9a85a285f53cc7", "type": "github" }, "original": { @@ -23,14 +23,15 @@ "anyrun": { "inputs": { "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "systems": "systems" }, "locked": { - "lastModified": 1713259062, - "narHash": "sha256-WTO84hUL8IlNuHDK2yOCeJ38EewFzGt5E0kzBjNWxa8=", + "lastModified": 1717576207, + "narHash": "sha256-LU6d1xX7jN1zt10YU7Oym07MtzVfziSmUEznGFdbuaw=", "owner": "Kirottu", "repo": "anyrun", - "rev": "f9d30e34fa4ccb2797c6becec37e8bcff6585d39", + "rev": "7aabad8d5bb7d1bffae903ce86427b888ab824b4", "type": "github" }, "original": { @@ -47,11 +48,11 @@ ] }, "locked": { - "lastModified": 1713979152, - "narHash": "sha256-apdecPuh8SOQnkEET/kW/UcfjCRb8JbV5BKjoH+DcP4=", + "lastModified": 1717025063, + "narHash": "sha256-dIubLa56W9sNNz0e8jGxrX3CAkPXsq7snuFA/Ie6dn8=", "owner": "ipetkov", "repo": "crane", - "rev": "a5eca68a2cf11adb32787fc141cddd29ac8eb79c", + "rev": "480dff0be03dac0e51a8dfc26e882b0d123a450e", "type": "github" }, "original": { @@ -68,11 +69,11 @@ ] }, "locked": { - "lastModified": 1696343447, - "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "lastModified": 1717285511, + "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", "type": "github" }, "original": { @@ -251,7 +252,7 @@ }, "flake-utils": { "inputs": { - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1705309234, @@ -269,7 +270,7 @@ }, "flake-utils_2": { "inputs": { - "systems": "systems_3" + "systems": "systems_4" }, "locked": { "lastModified": 1705309234, @@ -287,7 +288,7 @@ }, "flake-utils_3": { "inputs": { - "systems": "systems_4" + "systems": "systems_5" }, "locked": { "lastModified": 1705309234, @@ -305,7 +306,7 @@ }, "flake-utils_4": { "inputs": { - "systems": "systems_5" + "systems": "systems_6" }, "locked": { "lastModified": 1705309234, @@ -323,7 +324,7 @@ }, "flake-utils_5": { "inputs": { - "systems": "systems_6" + "systems": "systems_7" }, "locked": { "lastModified": 1705309234, @@ -341,7 +342,7 @@ }, "flake-utils_6": { "inputs": { - "systems": "systems_7" + "systems": "systems_8" }, "locked": { "lastModified": 1705309234, @@ -359,7 +360,7 @@ }, "flake-utils_7": { "inputs": { - "systems": "systems_8" + "systems": "systems_9" }, "locked": { "lastModified": 1705309234, @@ -382,11 +383,11 @@ ] }, "locked": { - "lastModified": 1717052710, - "narHash": "sha256-LRhOxzXmOza5SymhOgnEzA8EAQp+94kkeUYWKKpLJ/U=", + "lastModified": 1719180626, + "narHash": "sha256-vZAzm5KQpR6RGple1dzmSJw5kPivES2heCFM+ZWkt0I=", "owner": "nix-community", "repo": "home-manager", - "rev": "29c69d9a466e41d46fd3a7a9d0591ef9c113c2ae", + "rev": "6b1f90a8ff92e81638ae6eb48cd62349c3e387bb", "type": "github" }, "original": { @@ -411,11 +412,11 @@ ] }, "locked": { - "lastModified": 1716576411, - "narHash": "sha256-FIN1wMoyePBTtibCbaeJaoKNLuAYIGwLCWAYC1DJanw=", + "lastModified": 1718450675, + "narHash": "sha256-jpsns6buS4bK+1sF8sL8AaixAiCRjA+nldTKvcwmvUs=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "57298fc4f13c807e50ada2c986a3114b7fc2e621", + "rev": "66d5b46ff94efbfa6fa3d1d1b66735f1779c34a6", "type": "github" }, "original": { @@ -447,17 +448,18 @@ "inputs": { "hyprcursor": "hyprcursor", "hyprlang": "hyprlang", + "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", "nixpkgs": "nixpkgs_3", - "systems": "systems", + "systems": "systems_2", "xdph": "xdph" }, "locked": { - "lastModified": 1716968065, - "narHash": "sha256-kuVKS98JUgJ71Z3sRUo+YnQgmX8xdXoZZbBPyIZMWYs=", + "lastModified": 1719164993, + "narHash": "sha256-FABhTnL6CBNrvsHVrEXWYoH+zrNfA4yPmgorQupUSZo=", "ref": "refs/heads/main", - "rev": "a60c7283e677ed81a466d1c0c864c8a05e192cac", - "revCount": 4750, + "rev": "8a68199a0ceb2894a5d9cc300961c38123ac0312", + "revCount": 4879, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -482,11 +484,11 @@ ] }, "locked": { - "lastModified": 1691753796, - "narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=", + "lastModified": 1714869498, + "narHash": "sha256-vbLVOWvQqo4n1yvkg/Q70VTlPbMmTiCQfNTgcWDCfJM=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03", + "rev": "e06482e0e611130cd1929f75e8c1cf679e57d161", "type": "github" }, "original": { @@ -496,6 +498,35 @@ } }, "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1717881852, + "narHash": "sha256-XeeVoKHQgfKuXoP6q90sUqKyl7EYy3ol2dVZGM+Jj94=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "ec6938c66253429192274d612912649a0cfe4d28", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { "inputs": { "nixpkgs": [ "hyprland", @@ -507,16 +538,16 @@ ] }, "locked": { - "lastModified": 1716473782, - "narHash": "sha256-+qLn4lsHU6iL3+HTo1gTQ1tWzet8K9h+IfVemzEQZj8=", + "lastModified": 1718804078, + "narHash": "sha256-CqRZne63BpYlPd/i8lXV0UInUt59oKogiwdVtBRHt60=", "owner": "hyprwm", - "repo": "hyprlang", - "rev": "87d5d984109c839482b88b4795db073eb9ed446f", + "repo": "hyprutils", + "rev": "4f1351295c55a8f51219b25aa4a6497a067989d0", "type": "github" }, "original": { "owner": "hyprwm", - "repo": "hyprlang", + "repo": "hyprutils", "type": "github" } }, @@ -532,11 +563,11 @@ ] }, "locked": { - "lastModified": 1716058375, - "narHash": "sha256-CwjWoVnBZE5SBpRx9dgSQGCr4Goxyfcyv3zZbOhVqzk=", + "lastModified": 1718119275, + "narHash": "sha256-nqDYXATNkyGXVmNMkT19fT4sjtSPBDS1LLOxa3Fueo4=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "3afed4364790aebe0426077631af1e164a9650cc", + "rev": "1419520d5f7f38d35e05504da5c1b38212a38525", "type": "github" }, "original": { @@ -553,11 +584,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1717013290, - "narHash": "sha256-ObYq1f7DaYaTEhujqg+nAOjoH2XgMRDrfe1dGjRofzM=", + "lastModified": 1718914518, + "narHash": "sha256-wjL7KiQFGRbf2CnCDi/VeSIr30ndOVt/PUpBauI+RAE=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "b5755ef9d495bdf623965562725a7c0b1d27ea04", + "rev": "a9d728f1911007afa1edf6aac2ca1148b4c22d6c", "type": "github" }, "original": { @@ -571,11 +602,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1713520724, - "narHash": "sha256-CO8MmVDmqZX2FovL75pu5BvwhW+Vugc7Q6ze7Hj8heI=", + "lastModified": 1717067539, + "narHash": "sha256-oIs5EF+6VpHJRvvpVWuqCYJMMVW/6h59aYUv9lABLtY=", "owner": "nix-community", "repo": "naersk", - "rev": "c5037590290c6c7dae2e42e7da1e247e54ed2d49", + "rev": "fa19d8c135e776dc97f4dcca08656a0eeb28d5c0", "type": "github" }, "original": { @@ -601,11 +632,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1696193975, - "narHash": "sha256-mnQjUcYgp9Guu3RNVAB2Srr1TqKcPpRXmJf4LJk6KRY=", + "lastModified": 1717196966, + "narHash": "sha256-yZKhxVIKd2lsbOqYd5iDoUIwsRZFqE87smE2Vzf6Ck0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fdd898f8f79e8d2f99ed2ab6b3751811ef683242", + "rev": "57610d2f8f0937f39dbd72251e9614b1561942d8", "type": "github" }, "original": { @@ -617,11 +648,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1716655032, - "narHash": "sha256-kQ25DAiCGigsNR/Quxm3v+JGXAEXZ8I7RAF4U94bGzE=", + "lastModified": 1719099622, + "narHash": "sha256-YzJECAxFt+U5LPYf/pCwW/e1iUd2PF21WITHY9B/BAs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "59a450646ec8ee0397f5fa54a08573e8240eb91f", + "rev": "5e8e3b89adbd0be63192f6e645e0a54080004924", "type": "github" }, "original": { @@ -809,11 +840,11 @@ }, "nixpkgs_20": { "locked": { - "lastModified": 1716651315, - "narHash": "sha256-iMgzIeedMqf30TXZ439zW3Yvng1Xm9QTGO+ZwG1IWSw=", + "lastModified": 1718983919, + "narHash": "sha256-+1xgeIow4gJeiwo4ETvMRvWoircnvb0JOt7NS9kUhoM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c5187508b11177ef4278edf19616f44f21cc8c69", + "rev": "90338afd6177fc683a04d934199d693708c85a3b", "type": "github" }, "original": { @@ -825,11 +856,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1716330097, - "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", + "lastModified": 1718530797, + "narHash": "sha256-pup6cYwtgvzDpvpSCFh1TEUjw2zkNpk8iolbKnyFmmU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", + "rev": "b60ebf54c15553b393d144357375ea956f89e9a9", "type": "github" }, "original": { @@ -841,11 +872,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1714314149, - "narHash": "sha256-yNAevSKF4krRWacmLUsLK7D7PlfuY3zF0lYnGYNi9vQ=", + "lastModified": 1717112898, + "narHash": "sha256-7R2ZvOnvd9h8fDd65p0JnB7wXfUvreox3xFdYWd1BnY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cf8cc1201be8bc71b7cbbbdaf349b22f4f99c7ae", + "rev": "6132b0f6e344ce2fe34fc051b72fb46e34f668e0", "type": "github" }, "original": { @@ -855,11 +886,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1714253743, - "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", + "lastModified": 1716948383, + "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", + "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", "type": "github" }, "original": { @@ -871,11 +902,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1716769173, - "narHash": "sha256-7EXDb5WBw+d004Agt+JHC/Oyh/KTUglOaQ4MNjBbo5w=", + "lastModified": 1719075281, + "narHash": "sha256-CyyxvOwFf12I91PBWz43iGT1kjsf5oi6ax7CrvaMyAo=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "9ca3f649614213b2aaf5f1e16ec06952fe4c2632", + "rev": "a71e967ef3694799d0c418c98332f7ff4cc5f6af", "type": "github" }, "original": { @@ -935,11 +966,11 @@ }, "nur": { "locked": { - "lastModified": 1717054761, - "narHash": "sha256-LBrHEBC0S7C6zjQTsjahAvxxlDH3cbZmEgHiri9o4SM=", + "lastModified": 1719261983, + "narHash": "sha256-J9/+U1U/WdVEBRyPD+FTwgs6TBHED9JTUen8QpkYObA=", "owner": "nix-community", "repo": "nur", - "rev": "a4eff07f9bbcf74522c642c72047ed03c3831501", + "rev": "a21a417c111a1e8263cd0d9b9fe137df17004665", "type": "github" }, "original": { @@ -1054,11 +1085,11 @@ "rust-overlay": "rust-overlay_6" }, "locked": { - "lastModified": 1717097255, - "narHash": "sha256-X6V0Pq0111uCeMn5jh/T2+hO2qz0TkF+os9X8wkKS+M=", + "lastModified": 1718284469, + "narHash": "sha256-6cZjFyjhGTOj9r8eprCWZy1v2o1Tqcl6H6g/LTgHhp4=", "owner": "Xetibo", "repo": "ReSet", - "rev": "40beca475ff60718308767c213b480734559a836", + "rev": "6c1291bd19383ea45d0610dcdc17e8491b8e20ea", "type": "github" }, "original": { @@ -1074,16 +1105,15 @@ "rust-overlay": "rust-overlay_7" }, "locked": { - "lastModified": 1717092514, - "narHash": "sha256-aifR0Jdk1S9OzLYVlJEm4V+Dvm3MXpHYqRDfq2U66uQ=", + "lastModified": 1718300175, + "narHash": "sha256-kPeJJ/au+jV4jhyAhkLI3uwqK7pEDjdVJvwDmtQq8/k=", "owner": "Xetibo", "repo": "ReSet-Plugins", - "rev": "97543b19c416578a83ac68ca010d4b032d87593a", + "rev": "8d3af2fab9425f8b89fb7b82b4e23eba12a42f85", "type": "github" }, "original": { "owner": "Xetibo", - "ref": "dashie", "repo": "ReSet-Plugins", "type": "github" } @@ -1118,11 +1148,11 @@ ] }, "locked": { - "lastModified": 1714443211, - "narHash": "sha256-lKTA3XqRo4aVgkyTSCtpcALpGXdmkilHTtN00eRg0QU=", + "lastModified": 1717121863, + "narHash": "sha256-/3sxIe7MZqF/jw1RTQCSmgTjwVod43mmrk84m50MJQ4=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "ce35c36f58f82cee6ec959e0d44c587d64281b6f", + "rev": "2a7b53172ed08f856b8382d7dcfd36a4e0cbd866", "type": "github" }, "original": { @@ -1251,11 +1281,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1716692524, - "narHash": "sha256-sALodaA7Zkp/JD6ehgwc0UCBrSBfB4cX66uFGTsqeFU=", + "lastModified": 1719111739, + "narHash": "sha256-kr2QzRrplzlCP87ddayCZQS+dhGW98kw2zy7+jUXtF4=", "owner": "Mic92", "repo": "sops-nix", - "rev": "962797a8d7f15ed7033031731d0bb77244839960", + "rev": "5e2e9421e9ed2b918be0a441c4535cfa45e04811", "type": "github" }, "original": { @@ -1281,16 +1311,16 @@ }, "systems_2": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default", + "repo": "default-linux", "type": "github" } }, @@ -1384,6 +1414,21 @@ "type": "github" } }, + "systems_9": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": "hyprland-protocols", @@ -1401,11 +1446,11 @@ ] }, "locked": { - "lastModified": 1716290197, - "narHash": "sha256-1u9Exrc7yx9qtES2brDh7/DDZ8w8ap1nboIOAtCgeuM=", + "lastModified": 1718619174, + "narHash": "sha256-FWW68AVYmB91ZDQnhLMBNCUUTCjb1ZpO2k2KIytHtkA=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "91e48d6acd8a5a611d26f925e51559ab743bc438", + "rev": "c7894aa54f9a7dbd16df5cd24d420c8af22d5623", "type": "github" }, "original": { diff --git a/nix/flake.nix b/nix/flake.nix index efddb9d..f87085f 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -18,7 +18,7 @@ Hyprspace = { url = "github:KZDKM/Hyprspace"; - inputs.hyprland.follows = "nixpkgs"; + inputs.hyprland.follows = "hyprland"; }; nur.url = "github:nix-community/nur"; @@ -36,7 +36,7 @@ oxipaste.url = "github:DashieTM/OxiPaste"; hyprdock.url = "github:DashieTM/hyprdock"; reset.url = "github:Xetibo/ReSet"; - reset-plugins.url = "github:Xetibo/ReSet-Plugins?ref=dashie"; + reset-plugins.url = "github:Xetibo/ReSet-Plugins"; }; outputs = { ... }@inputs: diff --git a/nix/hardware/spaceship/base_config.nix b/nix/hardware/spaceship/base_config.nix index da11987..b890e87 100644 --- a/nix/hardware/spaceship/base_config.nix +++ b/nix/hardware/spaceship/base_config.nix @@ -5,7 +5,7 @@ wayland.windowManager.hyprland.settings.monitor = [ # default "DP-2,2560x1440@165,0x0,1" - "DP-1,3440x1440@180,2560x0,1" + "DP-1,3440x1440@180,2560x0,1,vrr,1" "HDMI-A-1,1920x1200@60,6000x0,1" "HDMI-A-1,transform,1" diff --git a/nix/hardware/spaceship/configuration.nix b/nix/hardware/spaceship/configuration.nix index a13352f..012145d 100644 --- a/nix/hardware/spaceship/configuration.nix +++ b/nix/hardware/spaceship/configuration.nix @@ -14,21 +14,19 @@ programs.gamemode = { device = 0; }; - users.extraGroups.vboxusers.members = [ "dashie" ]; virtualisation.virtualbox.host.enable = true; # enable hardware acceleration and rocm hardware.xone.enable = true; - hardware.opengl.extraPackages = with pkgs; [ + hardware.graphics.extraPackages = with pkgs; [ libvdpau-va-gl vaapiVdpau rocmPackages.clr.icd rocm-opencl-runtime ]; - hardware.opengl = { + hardware.graphics = { enable = true; - driSupport = lib.mkDefault true; - driSupport32Bit = lib.mkDefault true; + enable32Bit = lib.mkDefault true; }; boot.initrd.kernelModules = [ "amdgpu" ]; programs.ironbar.monitor = "DP-1"; diff --git a/nix/programs/coding.nix b/nix/programs/coding.nix index 55d8eee..b93c94b 100644 --- a/nix/programs/coding.nix +++ b/nix/programs/coding.nix @@ -40,7 +40,7 @@ mdformat #bash - nodePackages.bash-language-server + bash-language-server shfmt #fsharp diff --git a/nix/programs/common.nix b/nix/programs/common.nix index d0d28b8..5d75166 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -23,6 +23,7 @@ in fd lsd (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; }) + noto-fonts flatpak networkmanager zoxide @@ -50,6 +51,7 @@ in sops flake-checker ffmpeg + system-config-printer (callPackage ../override/streamdeck.nix { }) @@ -65,11 +67,18 @@ in programs.oxishut.enable = true; programs.oxipaste.enable = true; programs.hyprdock.enable = true; - programs.reset.enable = true; - programs.reset.config.plugins = [ + programs.ReSet.enable = true; + programs.ReSet.config.plugins = [ inputs.reset-plugins.packages."x86_64-linux".monitor + inputs.reset-plugins.packages."x86_64-linux".keyboard ]; - # inputs.reset-plugins.packages#.keyboard_plugin + programs.ReSet.config.plugin_config = { + Keyboard = { + path = "/home/dashie/.config/reset/keyboard.conf"; + }; + }; + + nixpkgs.config.allowUnfree = true; diff --git a/nix/programs/hyprland/config.nix b/nix/programs/hyprland/config.nix index 81acdb2..3d2b43f 100644 --- a/nix/programs/hyprland/config.nix +++ b/nix/programs/hyprland/config.nix @@ -7,6 +7,7 @@ wayland.windowManager.hyprland.enable = true; wayland.windowManager.hyprland.settings = { "$mod" = "SUPER"; + "source" = "/home/dashie/.config/reset/keyboard.conf"; bindm = [ "$mod, mouse:272, movewindow" @@ -151,7 +152,7 @@ }; input = { - kb_layout = "dashie"; + #kb_layout = "dashie"; repeat_delay = 200; force_no_accel = true; touchpad = { @@ -162,7 +163,6 @@ }; misc = { - vrr = 1; animate_manual_resizes = 1; enable_swallow = true; disable_splash_rendering = true; @@ -247,15 +247,15 @@ "oxinoti" ] ++ config.programs.hyprland.extra_autostart; - #plugin = { - # hyprspace = { - # bind = [ - # "SUPER, W, overview:toggle, toggle" - # ]; - # }; - #}; + # plugin = { + # hyprspace = { + # bind = [ + # "SUPER, W, overview:toggle, toggle" + # ]; + # }; + # }; }; - #wayland.windowManager.hyprland.plugins = [ - # inputs.Hyprspace.packages.${pkgs.system}.Hyprspace - #]; + # wayland.windowManager.hyprland.plugins = [ + # inputs.Hyprspace.packages.${pkgs.system}.Hyprspace + # ]; } diff --git a/nix/programs/hyprland/default.nix b/nix/programs/hyprland/default.nix index 6a444ca..5c25085 100644 --- a/nix/programs/hyprland/default.nix +++ b/nix/programs/hyprland/default.nix @@ -20,6 +20,7 @@ copyq gnome.nautilus gnome.sushi + gnome.nautilus-python wl-clipboard hyprcursor hyprpaper diff --git a/nix/programs/individual_configs/firefox.nix b/nix/programs/individual_configs/firefox.nix index 9016730..d55a072 100644 --- a/nix/programs/individual_configs/firefox.nix +++ b/nix/programs/individual_configs/firefox.nix @@ -1,4 +1,4 @@ -{ inputs, pkgs, ... }: { +{ pkgs, ... }: { programs.firefox = { enable = true; diff --git a/nix/programs/media.nix b/nix/programs/media.nix index 9d01d83..70c5a4f 100644 --- a/nix/programs/media.nix +++ b/nix/programs/media.nix @@ -16,6 +16,8 @@ libreoffice-fresh onlyoffice-bin pdftk + pdfpc + polylux2pdfpc # spotify #ncspot # video editing diff --git a/nix/programs/nvim/default.nix b/nix/programs/nvim/default.nix index 8dbcc33..fc19224 100644 --- a/nix/programs/nvim/default.nix +++ b/nix/programs/nvim/default.nix @@ -22,7 +22,7 @@ nixpkgs-fmt crate2nix ruff-lsp - nodePackages.pyright + pyright lemminx marksman clang-tools_18 @@ -42,12 +42,15 @@ cmp-nvim-lsp cmp-path cmp_luasnip + cmp-async-path conform-nvim dashboard-nvim dressing-nvim flash-nvim friendly-snippets gitsigns-nvim + git-conflict-nvim + ltex_extra-nvim indent-blankline-nvim lualine-nvim neo-tree-nvim @@ -56,6 +59,12 @@ noice-nvim nui-nvim nvim-cmp + nvim-dap + nvim-dap-ui + nvim-dap-python + nvim-dap-go + nvim-dap-virtual-text + nvim-nio nvim-lint nvim-lspconfig nvim-notify @@ -67,6 +76,22 @@ nvim-ts-context-commentstring nvim-web-devicons nvim-jdtls + rustaceanvim + typst-vim + instant-nvim + git-blame-nvim + neoscroll-nvim + mason-nvim + neotest + neotest-zig + neotest-python + neotest-rust + neotest-java + neotest-haskell + neotest-go + neotest-dotnet + neotest-bash + neotest-dart omnisharp-extended-lsp-nvim neotest neotest-java @@ -75,7 +100,23 @@ plenary-nvim telescope-fzf-native-nvim telescope-nvim + telescope-zoxide + telescope-file-browser-nvim + telescope-project-nvim todo-comments-nvim + vimtex + inc-rename-nvim + headlines-nvim + diffview-nvim + crates-nvim + cmake-tools-nvim + clangd_extensions-nvim + alpha-nvim + vim-visual-multi + ts-comments-nvim + nvim-tree-lua + nvim-snippets + markdown-preview-nvim tokyonight-nvim trouble-nvim vim-illuminate @@ -84,7 +125,6 @@ haskell-tools-nvim Ionide-vim { name = "LuaSnip"; path = luasnip; } - #{ name = "catppuccin"; path = catppuccin-nvim; } { name = "mini.ai"; path = mini-nvim; } { name = "mini.bufremove"; path = mini-nvim; } { name = "mini.comment"; path = mini-nvim; } @@ -131,8 +171,8 @@ { import = "lazyvim.plugins.extras.lang.java" }, { import = "lazyvim.plugins.extras.lang.go" }, { import = "lazyvim.plugins.extras.lang.clangd" }, - { import = "lazyvim.plugins.extras.lang.typescript" }, - { import = "lazyvim.plugins.extras.lang.python" }, + -- { import = "lazyvim.plugins.extras.lang.typescript" }, + -- { import = "lazyvim.plugins.extras.lang.python" }, { import = "lazyvim.plugins.extras.lang.markdown" }, { import = "lazyvim.plugins.extras.lang.cmake" }, { import = "lazyvim.plugins.extras.lang.omnisharp" }, @@ -145,7 +185,7 @@ { "williamboman/mason-lspconfig.nvim", enabled = false }, --{ "williamboman/mason.nvim", enabled = false }, -- treesitter handled by xdg.configFile."nvim/parser", put this line at the end of spec to clear ensure_installed - { "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = {} } }, + --{ "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = {} } }, { import = "plugins" }, { import = "plugins.plugins" }, }, diff --git a/nix/programs/nvim/flake.lock b/nix/programs/nvim/flake.lock new file mode 100644 index 0000000..c9ed8d7 --- /dev/null +++ b/nix/programs/nvim/flake.lock @@ -0,0 +1,69 @@ +{ + "nodes": { + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717285511, + "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717316182, + "narHash": "sha256-Xi0EpZcu39N0eW7apLjFfUOR9y80toyjYizez7J1wMI=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "9b53a10f4c91892f5af87cf55d08fba59ca086af", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1717196966, + "narHash": "sha256-yZKhxVIKd2lsbOqYd5iDoUIwsRZFqE87smE2Vzf6Ck0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "57610d2f8f0937f39dbd72251e9614b1561942d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-parts": "flake-parts", + "home-manager": "home-manager", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nix/programs/nvim/flake.nix b/nix/programs/nvim/flake.nix new file mode 100644 index 0000000..ab67de9 --- /dev/null +++ b/nix/programs/nvim/flake.nix @@ -0,0 +1,31 @@ +{ + description = "Dashies neovim config"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + flake-parts = { + url = "github:hercules-ci/flake-parts"; + inputs.nixpkgs-lib.follows = "nixpkgs"; + }; + }; + outputs = + { ... + }@inputs: + let + pkgs = import inputs.nixpkgs { + system = "x86_64-linux"; + overlays = [ + inputs.nur.overlay + ]; + config = { + allowUnfree = true; + }; + }; + in + { + imports = [ ./default.nix { inherit pkgs; } ]; + }; +} diff --git a/nix/programs/nvim/lua/config/autocmds.lua b/nix/programs/nvim/lua/config/autocmds.lua index 291710e..e8da00f 100644 --- a/nix/programs/nvim/lua/config/autocmds.lua +++ b/nix/programs/nvim/lua/config/autocmds.lua @@ -5,7 +5,6 @@ local function open_nvim_tree(data) if not directory then return end - print("FUCK") -- change to the directory vim.cmd.cd(data.file) diff --git a/nix/programs/nvim/lua/config/lazy.lua b/nix/programs/nvim/lua/config/lazy.lua index 858e048..de32dd1 100644 --- a/nix/programs/nvim/lua/config/lazy.lua +++ b/nix/programs/nvim/lua/config/lazy.lua @@ -38,7 +38,6 @@ require("lazy").setup({ lazy = true, version = false, }, - install = { colorscheme = { "tokyonight", "catppuccin-mocha" } }, checker = { enabled = true, notify = false }, change_detection = { enabled = true, notify = false }, performance = { diff --git a/nix/programs/nvim/lua/plugins/cmp.lua b/nix/programs/nvim/lua/plugins/cmp.lua index d8650fc..4b4d467 100644 --- a/nix/programs/nvim/lua/plugins/cmp.lua +++ b/nix/programs/nvim/lua/plugins/cmp.lua @@ -33,7 +33,6 @@ return { "FelipeLema/cmp-async-path", "saadparwaiz1/cmp_luasnip", "Saecki/crates.nvim", - { "roobert/tailwindcss-colorizer-cmp.nvim", config = true }, }, opts = function() vim.api.nvim_set_hl(0, "CmpGhostText", { link = "Comment", default = true }) diff --git a/nix/programs/nvim/lua/plugins/lsp.lua b/nix/programs/nvim/lua/plugins/lsp.lua index 73be574..025637c 100644 --- a/nix/programs/nvim/lua/plugins/lsp.lua +++ b/nix/programs/nvim/lua/plugins/lsp.lua @@ -25,9 +25,6 @@ return { -- LSP Server Settings ---@type lspconfig.options servers = { - rust_analyzer = { - mason = false, - }, marksman = { mason = false, }, diff --git a/nix/programs/nvim/lua/plugins/plugins.lua b/nix/programs/nvim/lua/plugins/plugins.lua index 1a3d63b..a9f20f3 100644 --- a/nix/programs/nvim/lua/plugins/plugins.lua +++ b/nix/programs/nvim/lua/plugins/plugins.lua @@ -5,7 +5,6 @@ return { "LazyVim/LazyVim", opts = { colorscheme = "tokyonight-night", - -- colorscheme = "catppuccin-mocha", }, }, { @@ -94,21 +93,26 @@ return { }, { "nvim-treesitter/nvim-treesitter", - opts = { - textobjects = { - select = { - enable = true, - lookahead = true, - keymaps = { - -- You can use the capture groups defined in textobjects.scm - ["af"] = "@function.outer", - ["if"] = "@function.inner", - ["ac"] = "@class.outer", - ["ic"] = "@class.inner", + config = function(_, _) + local opts = { + ensure_installed = {}, + -- parser_install_dir = "~/.config/nvim", + textobjects = { + select = { + enable = true, + lookahead = true, + keymaps = { + -- You can use the capture groups defined in textobjects.scm + ["af"] = "@function.outer", + ["if"] = "@function.inner", + ["ac"] = "@class.outer", + ["ic"] = "@class.inner", + }, }, }, - }, - }, + } + require("nvim-treesitter.configs").setup(opts) + end, }, { "karb94/neoscroll.nvim", @@ -162,7 +166,7 @@ return { }, { "barreiroleo/ltex_extra.nvim", - ft = { "markdown", "tex", "typst", "typ" }, + ft = { "tex", "typst", "typ" }, lazy = true, }, { @@ -256,13 +260,6 @@ return { }, }, }, - { - "DashieTM/test_plugin", - lazy = false, - opts = { - what = 0, - }, - }, { "DreamMaoMao/yazi.nvim", dependencies = { diff --git a/nix/programs/oxi/oxinoti.nix b/nix/programs/oxi/oxinoti.nix index 9ccf6cb..9e2d4e8 100644 --- a/nix/programs/oxi/oxinoti.nix +++ b/nix/programs/oxi/oxinoti.nix @@ -1,6 +1,6 @@ { xdg.configFile."oxinoti/style.css" = { - text = + text = /*css*/ '' @import url("/home/dashie/.config/gtk-3.0/gtk.css"); diff --git a/nix/programs/themes/kvantum.nix b/nix/programs/themes/kvantum.nix new file mode 100644 index 0000000..233def3 --- /dev/null +++ b/nix/programs/themes/kvantum.nix @@ -0,0 +1,154 @@ +{ + xdg.configFile."kvantum/colors/tokyonight.colors" = { + text = + '' + [ColorEffects:Disabled] + Color=56,56,56 + ColorAmount=0.15000000000000002 + ColorEffect=2 + ContrastAmount=0.8 + ContrastEffect=1 + IntensityAmount=-1 + IntensityEffect=2 + + [ColorEffects:Inactive] + ChangeSelectionColor=true + Color=112,111,110 + ColorAmount=0.025 + ColorEffect=2 + ContrastAmount=0.1 + ContrastEffect=2 + Enable=false + IntensityAmount=0 + IntensityEffect=0 + + [Colors:Button] + BackgroundAlternate=157,221,203 + BackgroundNormal=44,45,55 + DecorationFocus=164,185,239 + DecorationHover=164,185,239 + ForegroundActive=164,185,239 + ForegroundInactive=120,124,153 + ForegroundLink=164,185,239 + ForegroundNegative=226,140,140 + ForegroundNeutral=247,193,150 + ForegroundNormal=215,218,224 + ForegroundPositive=179,225,163 + ForegroundVisited=173,142,230 + + [Colors:Complementary] + BackgroundAlternate=157,221,203 + BackgroundNormal=30,30,41 + DecorationFocus=164,185,239 + DecorationHover=164,185,239 + ForegroundActive=164,185,239 + ForegroundInactive=110,108,124 + ForegroundLink=164,185,239 + ForegroundNegative=226,140,140 + ForegroundNeutral=247,193,150 + ForegroundNormal=215,218,224 + ForegroundPositive=179,225,163 + ForegroundVisited=198,170,232 + + [Colors:Header] + BackgroundAlternate=30,30,41 + BackgroundNormal=30,30,41 + DecorationFocus=164,185,239 + DecorationHover=164,185,239 + ForegroundActive=164,185,239 + ForegroundInactive=110,108,124 + ForegroundLink=164,185,239 + ForegroundNegative=226,140,140 + ForegroundNeutral=247,193,150 + ForegroundNormal=215,218,224 + ForegroundPositive=179,225,163 + ForegroundVisited=198,170,232 + + [Colors:Header][Inactive] + BackgroundAlternate=49,54,59 + BackgroundNormal=22,22,29 + DecorationFocus=61,174,233 + DecorationHover=61,174,233 + ForegroundActive=61,174,233 + ForegroundInactive=161,169,177 + ForegroundLink=29,153,243 + ForegroundNegative=218,68,83 + ForegroundNeutral=246,116,0 + ForegroundNormal=252,252,252 + ForegroundPositive=39,174,96 + ForegroundVisited=155,89,182 + + [Colors:Selection] + BackgroundAlternate=157,221,203 + BackgroundNormal=164,187,239 + DecorationFocus=30,30,41 + DecorationHover=30,30,41 + ForegroundActive=21,18,28 + ForegroundInactive=120,124,153 + ForegroundLink=21,18,28 + ForegroundNegative=225,139,139 + ForegroundNeutral=247,193,150 + ForegroundNormal=20,21,30 + ForegroundPositive=179,225,163 + ForegroundVisited=173,142,230 + + [Colors:Tooltip] + BackgroundAlternate=22,22,29 + BackgroundNormal=26,27,38 + DecorationFocus=164,185,239 + DecorationHover=164,185,239 + ForegroundActive=164,185,239 + ForegroundInactive=120,124,153 + ForegroundLink=164,185,239 + ForegroundNegative=226,140,140 + ForegroundNeutral=247,193,150 + ForegroundNormal=215,218,224 + ForegroundPositive=179,225,163 + ForegroundVisited=173,142,230 + + [Colors:View] + BackgroundAlternate=22,22,29 + BackgroundNormal=26,27,38 + DecorationFocus=164,185,239 + DecorationHover=164,185,239 + ForegroundActive=164,185,239 + ForegroundInactive=120,124,153 + ForegroundLink=164,185,239 + ForegroundNegative=226,140,140 + ForegroundNeutral=247,193,150 + ForegroundNormal=215,218,224 + ForegroundPositive=179,225,163 + ForegroundVisited=173,142,230 + + [Colors:Window] + BackgroundAlternate=22,22,29 + BackgroundNormal=26,27,38 + DecorationFocus=164,185,239 + DecorationHover=164,185,239 + ForegroundActive=164,185,239 + ForegroundInactive=120,124,153 + ForegroundLink=164,185,239 + ForegroundNegative=226,140,140 + ForegroundNeutral=247,193,150 + ForegroundNormal=215,218,224 + ForegroundPositive=179,225,163 + ForegroundVisited=173,142,230 + + [General] + ColorScheme=BreezeDark + Name=Tokyo Night + shadeSortColumn=true + + [KDE] + contrast=4 + + [WM] + activeBackground=26,27,38 + activeBlend=215,218,224 + activeForeground=215,218,224 + inactiveBackground=26,27,38 + inactiveBlend=110,108,124 + inactiveForeground=110,108,124 + ''; + }; +} diff --git a/nix/programs/themes/qt.nix b/nix/programs/themes/qt.nix index 68fb5e5..13a003a 100644 --- a/nix/programs/themes/qt.nix +++ b/nix/programs/themes/qt.nix @@ -30,8 +30,8 @@ in [Appearance] color_scheme_path=/home/dashie/.config/qt5ct/colors/tokyonight.conf custom_palette=true - icon_theme=breeze - standard_dialogs=default + icon_theme=MoreWaita + standard_dialogs=gtk3 style=Breeze [Fonts] @@ -48,19 +48,13 @@ in keyboard_scheme=4 menus_have_icons=true show_shortcuts_in_context_menus=true - stylesheets=/home/dashie/.config/qt5ct/qss/tab.qss + stylesheets=/home/dashie/.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 - [PaletteEditor] - geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\n\0\0\0\0\0\0\0\fv\0\0\x2\x10\0\0\n\0\0\0\0\0\0\0\fv\0\0\x2\x10\0\0\0\0\x2\0\0\0\rp\0\0\n\0\0\0\0\0\0\0\fv\0\0\x2\x10) - - [QSSEditor] - geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\x82\0\0\x1\xf2\0\0\0\0\0\0\0\0\0\0\x2\x82\0\0\x1\xf2\0\0\0\x2\x2\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\x2\x82\0\0\x1\xf2) - [SettingsWindow] - geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\n\0\0\0\0\0\0\0\r\x83\0\0\x2\x94\0\0\n\0\0\0\0\0\0\0\fO\0\0\x2\xbf\0\0\0\0\x2\0\0\0\rp\0\0\n\0\0\0\0\0\0\0\r\x83\0\0\x2\x94) + 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 From f5bc28970832044fc03ed73494d751b965333192 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 3 Jul 2024 21:27:12 +0200 Subject: [PATCH 020/330] merge 2nd pc --- nix/flake.lock | 1465 -------------------------- nix/flake.nix | 8 +- nix/hardware/marmo/configuration.nix | 2 + nix/programs/common.nix | 2 - 4 files changed, 6 insertions(+), 1471 deletions(-) delete mode 100644 nix/flake.lock diff --git a/nix/flake.lock b/nix/flake.lock deleted file mode 100644 index 2e24b48..0000000 --- a/nix/flake.lock +++ /dev/null @@ -1,1465 +0,0 @@ -{ - "nodes": { - "Hyprspace": { - "inputs": { - "hyprland": [ - "hyprland" - ] - }, - "locked": { - "lastModified": 1718642173, - "narHash": "sha256-iyj4D6c77uROAH9QdZjPd9SKnS/DuACMESqaEKnBgI8=", - "owner": "KZDKM", - "repo": "Hyprspace", - "rev": "2f3edb68f47a8f5d99d10b322e9a85a285f53cc7", - "type": "github" - }, - "original": { - "owner": "KZDKM", - "repo": "Hyprspace", - "type": "github" - } - }, - "anyrun": { - "inputs": { - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs", - "systems": "systems" - }, - "locked": { - "lastModified": 1717576207, - "narHash": "sha256-LU6d1xX7jN1zt10YU7Oym07MtzVfziSmUEznGFdbuaw=", - "owner": "Kirottu", - "repo": "anyrun", - "rev": "7aabad8d5bb7d1bffae903ce86427b888ab824b4", - "type": "github" - }, - "original": { - "owner": "Kirottu", - "repo": "anyrun", - "type": "github" - } - }, - "crane": { - "inputs": { - "nixpkgs": [ - "ironbar", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1717025063, - "narHash": "sha256-dIubLa56W9sNNz0e8jGxrX3CAkPXsq7snuFA/Ie6dn8=", - "owner": "ipetkov", - "repo": "crane", - "rev": "480dff0be03dac0e51a8dfc26e882b0d123a450e", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "anyrun", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1717285511, - "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "hyprdock", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_3": { - "inputs": { - "nixpkgs-lib": [ - "oxicalc", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": [ - "oxidash", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_5": { - "inputs": { - "nixpkgs-lib": [ - "oxinoti", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_6": { - "inputs": { - "nixpkgs-lib": [ - "oxipaste", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_7": { - "inputs": { - "nixpkgs-lib": [ - "oxishut", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_8": { - "inputs": { - "nixpkgs-lib": [ - "reset", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_9": { - "inputs": { - "nixpkgs-lib": [ - "reset-plugins", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-utils": { - "inputs": { - "systems": "systems_3" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { - "inputs": { - "systems": "systems_4" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "inputs": { - "systems": "systems_5" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { - "inputs": { - "systems": "systems_6" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { - "inputs": { - "systems": "systems_7" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_6": { - "inputs": { - "systems": "systems_8" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_7": { - "inputs": { - "systems": "systems_9" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "home-manager": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1719180626, - "narHash": "sha256-vZAzm5KQpR6RGple1dzmSJw5kPivES2heCFM+ZWkt0I=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "6b1f90a8ff92e81638ae6eb48cd62349c3e387bb", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "hyprcursor": { - "inputs": { - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1718450675, - "narHash": "sha256-jpsns6buS4bK+1sF8sL8AaixAiCRjA+nldTKvcwmvUs=", - "owner": "hyprwm", - "repo": "hyprcursor", - "rev": "66d5b46ff94efbfa6fa3d1d1b66735f1779c34a6", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprcursor", - "type": "github" - } - }, - "hyprdock": { - "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_2" - }, - "locked": { - "lastModified": 1716453478, - "narHash": "sha256-EoKGnKvYKoe9geFoK0wyEAMTPGOfRtjXibt4GUCfvBA=", - "owner": "DashieTM", - "repo": "hyprdock", - "rev": "8d07dbdf446e6b21528cc994547cc8f173a70330", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "hyprdock", - "type": "github" - } - }, - "hyprland": { - "inputs": { - "hyprcursor": "hyprcursor", - "hyprlang": "hyprlang", - "hyprutils": "hyprutils", - "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_3", - "systems": "systems_2", - "xdph": "xdph" - }, - "locked": { - "lastModified": 1719164993, - "narHash": "sha256-FABhTnL6CBNrvsHVrEXWYoH+zrNfA4yPmgorQupUSZo=", - "ref": "refs/heads/main", - "rev": "8a68199a0ceb2894a5d9cc300961c38123ac0312", - "revCount": 4879, - "submodules": true, - "type": "git", - "url": "https://github.com/hyprwm/Hyprland" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://github.com/hyprwm/Hyprland" - } - }, - "hyprland-protocols": { - "inputs": { - "nixpkgs": [ - "hyprland", - "xdph", - "nixpkgs" - ], - "systems": [ - "hyprland", - "xdph", - "systems" - ] - }, - "locked": { - "lastModified": 1714869498, - "narHash": "sha256-vbLVOWvQqo4n1yvkg/Q70VTlPbMmTiCQfNTgcWDCfJM=", - "owner": "hyprwm", - "repo": "hyprland-protocols", - "rev": "e06482e0e611130cd1929f75e8c1cf679e57d161", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-protocols", - "type": "github" - } - }, - "hyprlang": { - "inputs": { - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1717881852, - "narHash": "sha256-XeeVoKHQgfKuXoP6q90sUqKyl7EYy3ol2dVZGM+Jj94=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "ec6938c66253429192274d612912649a0cfe4d28", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprutils": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1718804078, - "narHash": "sha256-CqRZne63BpYlPd/i8lXV0UInUt59oKogiwdVtBRHt60=", - "owner": "hyprwm", - "repo": "hyprutils", - "rev": "4f1351295c55a8f51219b25aa4a6497a067989d0", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprutils", - "type": "github" - } - }, - "hyprwayland-scanner": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1718119275, - "narHash": "sha256-nqDYXATNkyGXVmNMkT19fT4sjtSPBDS1LLOxa3Fueo4=", - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "rev": "1419520d5f7f38d35e05504da5c1b38212a38525", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "type": "github" - } - }, - "ironbar": { - "inputs": { - "crane": "crane", - "naersk": "naersk", - "nixpkgs": "nixpkgs_5", - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1718914518, - "narHash": "sha256-wjL7KiQFGRbf2CnCDi/VeSIr30ndOVt/PUpBauI+RAE=", - "owner": "JakeStanger", - "repo": "ironbar", - "rev": "a9d728f1911007afa1edf6aac2ca1148b4c22d6c", - "type": "github" - }, - "original": { - "owner": "JakeStanger", - "repo": "ironbar", - "type": "github" - } - }, - "naersk": { - "inputs": { - "nixpkgs": "nixpkgs_4" - }, - "locked": { - "lastModified": 1717067539, - "narHash": "sha256-oIs5EF+6VpHJRvvpVWuqCYJMMVW/6h59aYUv9lABLtY=", - "owner": "nix-community", - "repo": "naersk", - "rev": "fa19d8c135e776dc97f4dcca08656a0eeb28d5c0", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "naersk", - "type": "github" - } - }, - "nix-flatpak": { - "locked": { - "lastModified": 1711997375, - "narHash": "sha256-KvU4gOtuFMS9Il67glRGtdNfguAINT9pCaXtvCL8uI8=", - "owner": "gmodena", - "repo": "nix-flatpak", - "rev": "45bf66f7068db79b552da864c0e87452be624d6c", - "type": "github" - }, - "original": { - "owner": "gmodena", - "repo": "nix-flatpak", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1717196966, - "narHash": "sha256-yZKhxVIKd2lsbOqYd5iDoUIwsRZFqE87smE2Vzf6Ck0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "57610d2f8f0937f39dbd72251e9614b1561942d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1719099622, - "narHash": "sha256-YzJECAxFt+U5LPYf/pCwW/e1iUd2PF21WITHY9B/BAs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5e8e3b89adbd0be63192f6e645e0a54080004924", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_10": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_12": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_13": { - "locked": { - "lastModified": 1716190602, - "narHash": "sha256-xYRimrR0duWvokWQEvB87bSsICeCvvX9DxpUOzCfsDE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5a5ac83292c7842072318f57d68a48474f8bd34d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_14": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_15": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_16": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_17": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_18": { - "locked": { - "lastModified": 1716948383, - "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_19": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1716330097, - "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_20": { - "locked": { - "lastModified": 1718983919, - "narHash": "sha256-+1xgeIow4gJeiwo4ETvMRvWoircnvb0JOt7NS9kUhoM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90338afd6177fc683a04d934199d693708c85a3b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1718530797, - "narHash": "sha256-pup6cYwtgvzDpvpSCFh1TEUjw2zkNpk8iolbKnyFmmU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b60ebf54c15553b393d144357375ea956f89e9a9", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1717112898, - "narHash": "sha256-7R2ZvOnvd9h8fDd65p0JnB7wXfUvreox3xFdYWd1BnY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6132b0f6e344ce2fe34fc051b72fb46e34f668e0", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1716948383, - "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1719075281, - "narHash": "sha256-CyyxvOwFf12I91PBWz43iGT1kjsf5oi6ax7CrvaMyAo=", - "owner": "NixOs", - "repo": "nixpkgs", - "rev": "a71e967ef3694799d0c418c98332f7ff4cc5f6af", - "type": "github" - }, - "original": { - "owner": "NixOs", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_7": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_8": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_9": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nur": { - "locked": { - "lastModified": 1719261983, - "narHash": "sha256-J9/+U1U/WdVEBRyPD+FTwgs6TBHED9JTUen8QpkYObA=", - "owner": "nix-community", - "repo": "nur", - "rev": "a21a417c111a1e8263cd0d9b9fe137df17004665", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nur", - "type": "github" - } - }, - "oxicalc": { - "inputs": { - "flake-parts": "flake-parts_3", - "nixpkgs": "nixpkgs_7" - }, - "locked": { - "lastModified": 1716225554, - "narHash": "sha256-IenHIQgKdKJTt02VJLQ+q8EunIkMwQ57XFWyKO+rb7s=", - "owner": "DashieTM", - "repo": "OxiCalc", - "rev": "a3fa5d76941278fd0f586817dcd04be134159bd8", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiCalc", - "type": "github" - } - }, - "oxidash": { - "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_8", - "rust-overlay": "rust-overlay_2" - }, - "locked": { - "lastModified": 1716235599, - "narHash": "sha256-6LDrLEfPzwbd5nEcis8us4BA18YhoWkzMVwafCJ5N/A=", - "owner": "DashieTM", - "repo": "OxiDash", - "rev": "fe6984abc73f75a64b0a03231068c20f53ec4f76", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiDash", - "type": "github" - } - }, - "oxinoti": { - "inputs": { - "flake-parts": "flake-parts_5", - "nixpkgs": "nixpkgs_10", - "rust-overlay": "rust-overlay_3" - }, - "locked": { - "lastModified": 1716235566, - "narHash": "sha256-1U4/h0YyuoOERjQE68yQZVsDdIGl43OprDplSGBMhYY=", - "owner": "DashieTM", - "repo": "OxiNoti", - "rev": "c52c330d59a3b066e94618adbe9a7be5b9cfde24", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiNoti", - "type": "github" - } - }, - "oxipaste": { - "inputs": { - "flake-parts": "flake-parts_6", - "nixpkgs": "nixpkgs_12", - "rust-overlay": "rust-overlay_4" - }, - "locked": { - "lastModified": 1716235097, - "narHash": "sha256-kTsSNciMnp3y/QOPseB/QlhRqVxrm7teRCMl05OIiBs=", - "owner": "DashieTM", - "repo": "OxiPaste", - "rev": "3f494c1a3dd093e3c5761520554977a9dec33a3a", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiPaste", - "type": "github" - } - }, - "oxishut": { - "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_14", - "rust-overlay": "rust-overlay_5" - }, - "locked": { - "lastModified": 1716235696, - "narHash": "sha256-qqN2ev97ff1Yftr+8YS7Pm2/kk8SpQU8uxplbQYJGho=", - "owner": "DashieTM", - "repo": "OxiShut", - "rev": "d38d5c892b7ae2420715cbb6b4944abb76b49f9d", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiShut", - "type": "github" - } - }, - "reset": { - "inputs": { - "flake-parts": "flake-parts_8", - "nixpkgs": "nixpkgs_16", - "rust-overlay": "rust-overlay_6" - }, - "locked": { - "lastModified": 1718284469, - "narHash": "sha256-6cZjFyjhGTOj9r8eprCWZy1v2o1Tqcl6H6g/LTgHhp4=", - "owner": "Xetibo", - "repo": "ReSet", - "rev": "6c1291bd19383ea45d0610dcdc17e8491b8e20ea", - "type": "github" - }, - "original": { - "owner": "Xetibo", - "repo": "ReSet", - "type": "github" - } - }, - "reset-plugins": { - "inputs": { - "flake-parts": "flake-parts_9", - "nixpkgs": "nixpkgs_18", - "rust-overlay": "rust-overlay_7" - }, - "locked": { - "lastModified": 1718300175, - "narHash": "sha256-kPeJJ/au+jV4jhyAhkLI3uwqK7pEDjdVJvwDmtQq8/k=", - "owner": "Xetibo", - "repo": "ReSet-Plugins", - "rev": "8d3af2fab9425f8b89fb7b82b4e23eba12a42f85", - "type": "github" - }, - "original": { - "owner": "Xetibo", - "repo": "ReSet-Plugins", - "type": "github" - } - }, - "root": { - "inputs": { - "Hyprspace": "Hyprspace", - "anyrun": "anyrun", - "home-manager": "home-manager", - "hyprdock": "hyprdock", - "hyprland": "hyprland", - "ironbar": "ironbar", - "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_6", - "nur": "nur", - "oxicalc": "oxicalc", - "oxidash": "oxidash", - "oxinoti": "oxinoti", - "oxipaste": "oxipaste", - "oxishut": "oxishut", - "reset": "reset", - "reset-plugins": "reset-plugins", - "sops-nix": "sops-nix" - } - }, - "rust-overlay": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": [ - "ironbar", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1717121863, - "narHash": "sha256-/3sxIe7MZqF/jw1RTQCSmgTjwVod43mmrk84m50MJQ4=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "2a7b53172ed08f856b8382d7dcfd36a4e0cbd866", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { - "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_9" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_3": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_11" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_4": { - "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_13" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_5": { - "inputs": { - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_15" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_6": { - "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_17" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_7": { - "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_19" - }, - "locked": { - "lastModified": 1717035469, - "narHash": "sha256-MzH+yjKULH3HCRj9QCTwBvqq4LZkR0ZqRE/QfGOGC2E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "095702e63a40e86f339d11864da9dc965b70a01e", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "sops-nix": { - "inputs": { - "nixpkgs": "nixpkgs_20", - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1719111739, - "narHash": "sha256-kr2QzRrplzlCP87ddayCZQS+dhGW98kw2zy7+jUXtF4=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "5e2e9421e9ed2b918be0a441c4535cfa45e04811", - "type": "github" - }, - "original": { - "owner": "Mic92", - "repo": "sops-nix", - "type": "github" - } - }, - "systems": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_2": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_4": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_5": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_6": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_7": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_8": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_9": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "xdph": { - "inputs": { - "hyprland-protocols": "hyprland-protocols", - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1718619174, - "narHash": "sha256-FWW68AVYmB91ZDQnhLMBNCUUTCjb1ZpO2k2KIytHtkA=", - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "rev": "c7894aa54f9a7dbd16df5cd24d420c8af22d5623", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/nix/flake.nix b/nix/flake.nix index f87085f..64a2966 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -16,10 +16,10 @@ sops-nix.url = "github:Mic92/sops-nix"; - Hyprspace = { - url = "github:KZDKM/Hyprspace"; - inputs.hyprland.follows = "hyprland"; - }; + # 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"; diff --git a/nix/hardware/marmo/configuration.nix b/nix/hardware/marmo/configuration.nix index 89ca0f6..9a0ac5b 100644 --- a/nix/hardware/marmo/configuration.nix +++ b/nix/hardware/marmo/configuration.nix @@ -3,12 +3,14 @@ imports = [ ../../modules/gamemode.nix ../../modules/boot_params.nix + ../../modules/ironbar_config.nix ]; boot.kernelPackages = pkgs.linuxPackages_zen; programs.boot.boot_params = [ "amdgpu.ppfeaturemask=0xffffffff" ]; networking.hostName = "marmo"; + programs.ironbar.monitor = "DP-1"; programs.gamemode = { device = 1; }; diff --git a/nix/programs/common.nix b/nix/programs/common.nix index 5d75166..c8b848f 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -78,8 +78,6 @@ in }; }; - - nixpkgs.config.allowUnfree = true; home.username = "dashie"; From 791e2a69dd20606d933c99a7246324600f78cd87 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 6 Jul 2024 22:58:41 +0200 Subject: [PATCH 021/330] merge --- nix/base/common_hardware.nix | 8 ++++---- nix/base/env.nix | 3 ++- nix/base/login_manager.nix | 11 ++++------- nix/flake.nix | 7 ++++--- nix/hardware/spaceship/base_config.nix | 14 +++++++------- nix/programs/common.nix | 9 +++++---- nix/programs/default.nix | 6 +++--- nix/programs/hyprland/config.nix | 3 ++- nix/programs/hyprland/ironbar.nix | 10 +++++----- nix/programs/individual_configs/firefox.nix | 4 ++-- nix/programs/individual_configs/fish.nix | 4 ++-- nix/programs/media.nix | 1 - nix/programs/oxi/oxinoti.nix | 4 ++-- nix/programs/themes/qt.nix | 7 ++++--- 14 files changed, 46 insertions(+), 45 deletions(-) diff --git a/nix/base/common_hardware.nix b/nix/base/common_hardware.nix index 3ab990b..389af63 100644 --- a/nix/base/common_hardware.nix +++ b/nix/base/common_hardware.nix @@ -1,4 +1,4 @@ -{ pkgs, config, ... }: +{ pkgs, config, username, ... }: { # Bootloader. boot.loader.systemd-boot.enable = true; @@ -51,14 +51,14 @@ }; nix.settings.trusted-users = [ - "dashie" + username ]; # allows user change later on users.mutableUsers = true; - users.users.dashie = { + users.users.${username} = { isNormalUser = true; - description = "dashie"; + description = username; extraGroups = [ "networkmanager" "wheel" "gamemode" "docker" "vboxusers" ]; packages = with pkgs; [ home-manager diff --git a/nix/base/env.nix b/nix/base/env.nix index 4fb53bd..2235673 100644 --- a/nix/base/env.nix +++ b/nix/base/env.nix @@ -1,4 +1,5 @@ { pkgs +, username , ... }: { environment.variables = { @@ -12,7 +13,7 @@ environment.sessionVariables = { NIXOS_OZONE_WL = "1"; GOPATH = "$HOME/.go"; - FLAKE = "home/dashie/gits/dotFiles/nix"; + FLAKE = "home/${username}/gits/dotFiles/nix"; # don't ask... marksman somehow requires this DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = 1; }; diff --git a/nix/base/login_manager.nix b/nix/base/login_manager.nix index 8b7d114..5c35483 100644 --- a/nix/base/login_manager.nix +++ b/nix/base/login_manager.nix @@ -1,16 +1,13 @@ -{ inputs -, lib +{ lib , config , pkgs +, username , ... }: let - regreet_override = pkgs.greetd.regreet.overrideAttrs (final: prev: { - SESSION_DIRS = "${config.services.xserver.displayManager.sessionData.desktops}/share"; - }); session = { command = "${lib.getExe pkgs.hyprland} --config /etc/greetd/hyprgreet.conf"; - user = "dashie"; + user = username; }; in { @@ -53,7 +50,7 @@ in disable_hyprland_logo = true } - exec-once=regreet --style /home/dashie/.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 diff --git a/nix/flake.nix b/nix/flake.nix index 64a2966..b97c93a 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -55,11 +55,12 @@ ./base/default.nix ./programs ]; + username = "dashie"; in { nixosConfigurations."marmo" = inputs.nixpkgs.lib.nixosSystem { specialArgs = { - inherit inputs pkgs; + inherit inputs pkgs username; mod = ./hardware/marmo/base_config.nix; }; modules = [ @@ -69,7 +70,7 @@ }; nixosConfigurations."overheating" = inputs.nixpkgs.lib.nixosSystem { specialArgs = { - inherit inputs pkgs; + inherit inputs pkgs username; mod = ./hardware/overheating/base_config.nix; }; modules = [ @@ -78,7 +79,7 @@ }; nixosConfigurations."spaceship" = inputs.nixpkgs.lib.nixosSystem { specialArgs = { - inherit inputs pkgs; + inherit inputs pkgs username; mod = ./hardware/spaceship/base_config.nix; }; modules = [ diff --git a/nix/hardware/spaceship/base_config.nix b/nix/hardware/spaceship/base_config.nix index b890e87..ab1b6b7 100644 --- a/nix/hardware/spaceship/base_config.nix +++ b/nix/hardware/spaceship/base_config.nix @@ -1,4 +1,4 @@ -{ +{ username, ... }: { imports = [ ../../modules ]; @@ -33,14 +33,14 @@ programs.ironbar.monitor = "DP-1"; programs.hyprland.hyprpaper = '' #load - preload = /home/dashie/Pictures/backgrounds/shinobu_2k.jpg - preload = /home/dashie/Pictures/backgrounds/shino_wide.png - preload = /home/dashie/Pictures/backgrounds/shinobu_1200.jpg + preload = /home/${username}/Pictures/backgrounds/shinobu_2k.jpg + preload = /home/${username}/Pictures/backgrounds/shino_wide.png + preload = /home/${username}/Pictures/backgrounds/shinobu_1200.jpg #set - wallpaper = DP-2,/home/dashie/Pictures/backgrounds/shinobu_2k.jpg - wallpaper = DP-1,/home/dashie/Pictures/backgrounds/shino_wide.png - wallpaper = HDMI-A-1,/home/dashie/Pictures/backgrounds/shinobu_1200.jpg + wallpaper = DP-2,/home/${username}/Pictures/backgrounds/shinobu_2k.jpg + wallpaper = DP-1,/home/${username}/Pictures/backgrounds/shino_wide.png + wallpaper = HDMI-A-1,/home/${username}/Pictures/backgrounds/shinobu_1200.jpg splash = true ''; programs.hyprland.extra_autostart = [ "streamdeck -n" ]; diff --git a/nix/programs/common.nix b/nix/programs/common.nix index c8b848f..2d40813 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -1,6 +1,7 @@ { pkgs , inputs , lib +, username , ... }: let callPackage = lib.callPackageWith (pkgs); @@ -74,14 +75,14 @@ in ]; programs.ReSet.config.plugin_config = { Keyboard = { - path = "/home/dashie/.config/reset/keyboard.conf"; + path = "/home/${username}/.config/reset/keyboard.conf"; }; }; nixpkgs.config.allowUnfree = true; - home.username = "dashie"; - home.homeDirectory = "/home/dashie"; + home.username = username; + home.homeDirectory = "/home/${username}"; home.stateVersion = "24.05"; home.sessionPath = [ @@ -122,7 +123,7 @@ in defaultSopsFile = ../secrets/secrets.yaml; secrets.hub = { }; secrets.lab = { }; - secrets.dashie = { }; + secrets.${username} = { }; }; systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ]; } diff --git a/nix/programs/default.nix b/nix/programs/default.nix index bacef2d..2926153 100644 --- a/nix/programs/default.nix +++ b/nix/programs/default.nix @@ -1,4 +1,4 @@ -{ inputs, pkgs, mod, ... }: +{ inputs, pkgs, mod, username, ... }: let base_imports = [ inputs.anyrun.homeManagerModules.default @@ -26,10 +26,10 @@ in home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.dashie = { + home-manager.users.${username} = { imports = [ { - _module = { args = { inherit inputs; }; }; + _module = { args = { inherit inputs username; }; }; } ./hyprland/default.nix ./flatpak.nix diff --git a/nix/programs/hyprland/config.nix b/nix/programs/hyprland/config.nix index 3d2b43f..7fc48f0 100644 --- a/nix/programs/hyprland/config.nix +++ b/nix/programs/hyprland/config.nix @@ -1,5 +1,6 @@ { pkgs , inputs +, username , config , ... }: @@ -7,7 +8,7 @@ wayland.windowManager.hyprland.enable = true; wayland.windowManager.hyprland.settings = { "$mod" = "SUPER"; - "source" = "/home/dashie/.config/reset/keyboard.conf"; + "source" = "/home/${username}/.config/reset/keyboard.conf"; bindm = [ "$mod, mouse:272, movewindow" diff --git a/nix/programs/hyprland/ironbar.nix b/nix/programs/hyprland/ironbar.nix index 0682d27..c4c5438 100644 --- a/nix/programs/hyprland/ironbar.nix +++ b/nix/programs/hyprland/ironbar.nix @@ -1,10 +1,10 @@ -{ config, ... }: { +{ config, username, ... }: { programs.ironbar = { enable = true; style = '' - @import url("/home/dashie/.config/gtk-3.0/gtk.css"); + @import url("/home/${username}/.config/gtk-3.0/gtk.css"); * { color: #71bbe6; @@ -176,13 +176,13 @@ type = "button"; class = "audio-button"; label = ""; - on_click = "!/home/dashie/.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/dashie/.config/eww/scripts/audio_control.sh internal"; + on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh internal"; } ]; class = "audio-button-box"; @@ -222,7 +222,7 @@ type = "button"; class = "popup-button"; label = ""; - on_click = "!oxidash --css /home/dashie/gits/oxidash/style.css"; + on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css"; } ]; class = "popup-button-box"; diff --git a/nix/programs/individual_configs/firefox.nix b/nix/programs/individual_configs/firefox.nix index d55a072..7bfa8e7 100644 --- a/nix/programs/individual_configs/firefox.nix +++ b/nix/programs/individual_configs/firefox.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: { +{ pkgs, username, ... }: { programs.firefox = { enable = true; @@ -13,7 +13,7 @@ DisplayBookmarksToolbar = "never"; DisplayMenuBar = "default-off"; }; - profiles.dashie = { + profiles.${username} = { extensions = with pkgs.nur.repos.rycee.firefox-addons; [ ublock-origin darkreader diff --git a/nix/programs/individual_configs/fish.nix b/nix/programs/individual_configs/fish.nix index 1859164..0463d8d 100644 --- a/nix/programs/individual_configs/fish.nix +++ b/nix/programs/individual_configs/fish.nix @@ -1,4 +1,4 @@ -{ +{ username, ... }: { xdg.configFile."fish/config.fish" = { text = '' @@ -15,7 +15,7 @@ set EDITOR "neovide --no-fork" - alias rebuild='sudo nixos-rebuild switch --flake /home/dashie/gits/dotFiles/nix/.' + alias rebuild='sudo nixos-rebuild switch --flake /home/${username}/gits/dotFiles/nix/.' abbr --add ls 'lsd' abbr --add :q 'exit' abbr --add gh 'git push origin' diff --git a/nix/programs/media.nix b/nix/programs/media.nix index 70c5a4f..409e0b7 100644 --- a/nix/programs/media.nix +++ b/nix/programs/media.nix @@ -27,7 +27,6 @@ gimp krita yt-dlp - spotdl ]; programs.obs-studio.enable = true; programs.obs-studio.plugins = with pkgs; [ diff --git a/nix/programs/oxi/oxinoti.nix b/nix/programs/oxi/oxinoti.nix index 9e2d4e8..b1fe112 100644 --- a/nix/programs/oxi/oxinoti.nix +++ b/nix/programs/oxi/oxinoti.nix @@ -1,8 +1,8 @@ -{ +{ username, ... }: { xdg.configFile."oxinoti/style.css" = { text = /*css*/ '' - @import url("/home/dashie/.config/gtk-3.0/gtk.css"); + @import url("/home/${username}/.config/gtk-3.0/gtk.css"); #MainWindow { background-color: transparent; diff --git a/nix/programs/themes/qt.nix b/nix/programs/themes/qt.nix index 13a003a..007337d 100644 --- a/nix/programs/themes/qt.nix +++ b/nix/programs/themes/qt.nix @@ -1,3 +1,4 @@ +{ username, ... }: let color = '' [ColorScheme] @@ -28,7 +29,7 @@ in text = '' [Appearance] - color_scheme_path=/home/dashie/.config/qt5ct/colors/tokyonight.conf + color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf custom_palette=true icon_theme=MoreWaita standard_dialogs=gtk3 @@ -48,7 +49,7 @@ in keyboard_scheme=4 menus_have_icons=true show_shortcuts_in_context_menus=true - stylesheets=/home/dashie/.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 + 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 @@ -65,7 +66,7 @@ in text = '' [Appearance] - color_scheme_path=/home/dashie/.config/qt6ct/colors/toykonight.conf + color_scheme_path=/home/${username}/.config/qt6ct/colors/toykonight.conf custom_palette=true standard_dialogs=default style=Adwaita-Dark From bd5b5e11ff5bac1b8131ede912fce812c6ebbbe8 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 6 Jul 2024 23:02:27 +0200 Subject: [PATCH 022/330] remove lock --- nix/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/nix/.gitignore b/nix/.gitignore index e69de29..301d47e 100644 --- a/nix/.gitignore +++ b/nix/.gitignore @@ -0,0 +1 @@ +flake.lock From 09c4625fbbabe6b19109339f468ccee0f38fac25 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 6 Jul 2024 23:12:12 +0200 Subject: [PATCH 023/330] add back lock... --- nix/.gitignore | 1 - nix/base/base_packages.nix | 6 +- nix/flake.lock | 1444 +++++++++++++++++++++++++++++ nix/programs/coding.nix | 2 +- nix/programs/common.nix | 2 +- nix/programs/hyprland/default.nix | 9 +- nix/programs/nvim/default.nix | 2 +- 7 files changed, 1454 insertions(+), 12 deletions(-) delete mode 100644 nix/.gitignore create mode 100644 nix/flake.lock diff --git a/nix/.gitignore b/nix/.gitignore deleted file mode 100644 index 301d47e..0000000 --- a/nix/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flake.lock diff --git a/nix/base/base_packages.nix b/nix/base/base_packages.nix index 99c0efa..83e16b8 100644 --- a/nix/base/base_packages.nix +++ b/nix/base/base_packages.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ pkgs, ... }: { environment.systemPackages = with pkgs; [ openssl @@ -17,11 +17,11 @@ xorg.xkbutils libxkbcommon icon-library - gnome.adwaita-icon-theme + adwaita-icon-theme hicolor-icon-theme morewaita-icon-theme kdePackages.breeze-icons - gnome.seahorse + seahorse upower ]; diff --git a/nix/flake.lock b/nix/flake.lock new file mode 100644 index 0000000..fac5973 --- /dev/null +++ b/nix/flake.lock @@ -0,0 +1,1444 @@ +{ + "nodes": { + "anyrun": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs", + "systems": "systems" + }, + "locked": { + "lastModified": 1717576207, + "narHash": "sha256-LU6d1xX7jN1zt10YU7Oym07MtzVfziSmUEznGFdbuaw=", + "owner": "Kirottu", + "repo": "anyrun", + "rev": "7aabad8d5bb7d1bffae903ce86427b888ab824b4", + "type": "github" + }, + "original": { + "owner": "Kirottu", + "repo": "anyrun", + "type": "github" + } + }, + "crane": { + "inputs": { + "nixpkgs": [ + "ironbar", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717025063, + "narHash": "sha256-dIubLa56W9sNNz0e8jGxrX3CAkPXsq7snuFA/Ie6dn8=", + "owner": "ipetkov", + "repo": "crane", + "rev": "480dff0be03dac0e51a8dfc26e882b0d123a450e", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "anyrun", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717285511, + "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "hyprdock", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "oxicalc", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": [ + "oxidash", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": [ + "oxinoti", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_6": { + "inputs": { + "nixpkgs-lib": [ + "oxipaste", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ + "oxishut", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_8": { + "inputs": { + "nixpkgs-lib": [ + "reset", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_9": { + "inputs": { + "nixpkgs-lib": [ + "reset-plugins", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "inputs": { + "systems": "systems_5" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "inputs": { + "systems": "systems_6" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "inputs": { + "systems": "systems_7" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "inputs": { + "systems": "systems_8" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { + "inputs": { + "systems": "systems_9" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1720289319, + "narHash": "sha256-E3CjSsXNDWYqoNjrKQLPdEZDLR+mVI9HMa+jY//FjBY=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "10486e6b311b3c5ae1c3477fee058704cea7cb4a", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1718450675, + "narHash": "sha256-jpsns6buS4bK+1sF8sL8AaixAiCRjA+nldTKvcwmvUs=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "66d5b46ff94efbfa6fa3d1d1b66735f1779c34a6", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprdock": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1716453478, + "narHash": "sha256-EoKGnKvYKoe9geFoK0wyEAMTPGOfRtjXibt4GUCfvBA=", + "owner": "DashieTM", + "repo": "hyprdock", + "rev": "8d07dbdf446e6b21528cc994547cc8f173a70330", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "hyprdock", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "hyprcursor": "hyprcursor", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs_3", + "systems": "systems_2", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1720213509, + "narHash": "sha256-aPYf8Jnu1fMgMYMgQnH433/Fcqfky1Z5ZuzCkNKcR1U=", + "ref": "refs/heads/main", + "rev": "cc98594c3aed0b542e03818371a4636f549f80e1", + "revCount": 4908, + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "xdph", + "nixpkgs" + ], + "systems": [ + "hyprland", + "xdph", + "systems" + ] + }, + "locked": { + "lastModified": 1714869498, + "narHash": "sha256-vbLVOWvQqo4n1yvkg/Q70VTlPbMmTiCQfNTgcWDCfJM=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "e06482e0e611130cd1929f75e8c1cf679e57d161", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1717881852, + "narHash": "sha256-XeeVoKHQgfKuXoP6q90sUqKyl7EYy3ol2dVZGM+Jj94=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "ec6938c66253429192274d612912649a0cfe4d28", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1719316102, + "narHash": "sha256-dmRz128j/lJmMuTYeCYPfSBRHHQO3VeH4PbmoyAhHzw=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "1f6bbec5954f623ff8d68e567bddcce97cd2f085", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1719067853, + "narHash": "sha256-mAnZG/eQy72Fp1ImGtqCgUrDumnR1rMZv2E/zgP4U74=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "914f083741e694092ee60a39d31f693d0a6dc734", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "ironbar": { + "inputs": { + "crane": "crane", + "naersk": "naersk", + "nixpkgs": "nixpkgs_5", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1719927553, + "narHash": "sha256-8DBU91zfxyEZF1mCy1qmvA7mb/ee7AwqEUAT6ScJu40=", + "owner": "JakeStanger", + "repo": "ironbar", + "rev": "bcaa13deae4e47caa5fffa7fdaa0981af1fec297", + "type": "github" + }, + "original": { + "owner": "JakeStanger", + "repo": "ironbar", + "type": "github" + } + }, + "naersk": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1717067539, + "narHash": "sha256-oIs5EF+6VpHJRvvpVWuqCYJMMVW/6h59aYUv9lABLtY=", + "owner": "nix-community", + "repo": "naersk", + "rev": "fa19d8c135e776dc97f4dcca08656a0eeb28d5c0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "naersk", + "type": "github" + } + }, + "nix-flatpak": { + "locked": { + "lastModified": 1711997375, + "narHash": "sha256-KvU4gOtuFMS9Il67glRGtdNfguAINT9pCaXtvCL8uI8=", + "owner": "gmodena", + "repo": "nix-flatpak", + "rev": "45bf66f7068db79b552da864c0e87452be624d6c", + "type": "github" + }, + "original": { + "owner": "gmodena", + "repo": "nix-flatpak", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1717196966, + "narHash": "sha256-yZKhxVIKd2lsbOqYd5iDoUIwsRZFqE87smE2Vzf6Ck0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "57610d2f8f0937f39dbd72251e9614b1561942d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1719720450, + "narHash": "sha256-57+R2Uj3wPeDeq8p8un19tzFFlgWiXJ8PbzgKtBgBX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "78f8641796edff3bfabbf1ef5029deadfe4a21d0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_10": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_12": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_13": { + "locked": { + "lastModified": 1716190602, + "narHash": "sha256-xYRimrR0duWvokWQEvB87bSsICeCvvX9DxpUOzCfsDE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5a5ac83292c7842072318f57d68a48474f8bd34d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_15": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_16": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_17": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_18": { + "locked": { + "lastModified": 1716948383, + "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_19": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1716330097, + "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_20": { + "locked": { + "lastModified": 1719468428, + "narHash": "sha256-vN5xJAZ4UGREEglh3lfbbkIj+MPEYMuqewMn4atZFaQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1e3deb3d8a86a870d925760db1a5adecc64d329d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1719075281, + "narHash": "sha256-CyyxvOwFf12I91PBWz43iGT1kjsf5oi6ax7CrvaMyAo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a71e967ef3694799d0c418c98332f7ff4cc5f6af", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1717112898, + "narHash": "sha256-7R2ZvOnvd9h8fDd65p0JnB7wXfUvreox3xFdYWd1BnY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6132b0f6e344ce2fe34fc051b72fb46e34f668e0", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1716948383, + "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1720031269, + "narHash": "sha256-rwz8NJZV+387rnWpTYcXaRNvzUSnnF9aHONoJIYmiUQ=", + "owner": "NixOs", + "repo": "nixpkgs", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "type": "github" + }, + "original": { + "owner": "NixOs", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nur": { + "locked": { + "lastModified": 1720295364, + "narHash": "sha256-clwkx3bqmlWPbAtywxJoqw0K7pEVUvQj5BArCqZxcUQ=", + "owner": "nix-community", + "repo": "nur", + "rev": "196f75d02c4a5662ac22763c1be690f91e21ef7b", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nur", + "type": "github" + } + }, + "oxicalc": { + "inputs": { + "flake-parts": "flake-parts_3", + "nixpkgs": "nixpkgs_7" + }, + "locked": { + "lastModified": 1716225554, + "narHash": "sha256-IenHIQgKdKJTt02VJLQ+q8EunIkMwQ57XFWyKO+rb7s=", + "owner": "DashieTM", + "repo": "OxiCalc", + "rev": "a3fa5d76941278fd0f586817dcd04be134159bd8", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiCalc", + "type": "github" + } + }, + "oxidash": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_8", + "rust-overlay": "rust-overlay_2" + }, + "locked": { + "lastModified": 1716235599, + "narHash": "sha256-6LDrLEfPzwbd5nEcis8us4BA18YhoWkzMVwafCJ5N/A=", + "owner": "DashieTM", + "repo": "OxiDash", + "rev": "fe6984abc73f75a64b0a03231068c20f53ec4f76", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiDash", + "type": "github" + } + }, + "oxinoti": { + "inputs": { + "flake-parts": "flake-parts_5", + "nixpkgs": "nixpkgs_10", + "rust-overlay": "rust-overlay_3" + }, + "locked": { + "lastModified": 1716235566, + "narHash": "sha256-1U4/h0YyuoOERjQE68yQZVsDdIGl43OprDplSGBMhYY=", + "owner": "DashieTM", + "repo": "OxiNoti", + "rev": "c52c330d59a3b066e94618adbe9a7be5b9cfde24", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiNoti", + "type": "github" + } + }, + "oxipaste": { + "inputs": { + "flake-parts": "flake-parts_6", + "nixpkgs": "nixpkgs_12", + "rust-overlay": "rust-overlay_4" + }, + "locked": { + "lastModified": 1716235097, + "narHash": "sha256-kTsSNciMnp3y/QOPseB/QlhRqVxrm7teRCMl05OIiBs=", + "owner": "DashieTM", + "repo": "OxiPaste", + "rev": "3f494c1a3dd093e3c5761520554977a9dec33a3a", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiPaste", + "type": "github" + } + }, + "oxishut": { + "inputs": { + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_14", + "rust-overlay": "rust-overlay_5" + }, + "locked": { + "lastModified": 1716235696, + "narHash": "sha256-qqN2ev97ff1Yftr+8YS7Pm2/kk8SpQU8uxplbQYJGho=", + "owner": "DashieTM", + "repo": "OxiShut", + "rev": "d38d5c892b7ae2420715cbb6b4944abb76b49f9d", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiShut", + "type": "github" + } + }, + "reset": { + "inputs": { + "flake-parts": "flake-parts_8", + "nixpkgs": "nixpkgs_16", + "rust-overlay": "rust-overlay_6" + }, + "locked": { + "lastModified": 1718284469, + "narHash": "sha256-6cZjFyjhGTOj9r8eprCWZy1v2o1Tqcl6H6g/LTgHhp4=", + "owner": "Xetibo", + "repo": "ReSet", + "rev": "6c1291bd19383ea45d0610dcdc17e8491b8e20ea", + "type": "github" + }, + "original": { + "owner": "Xetibo", + "repo": "ReSet", + "type": "github" + } + }, + "reset-plugins": { + "inputs": { + "flake-parts": "flake-parts_9", + "nixpkgs": "nixpkgs_18", + "rust-overlay": "rust-overlay_7" + }, + "locked": { + "lastModified": 1718300175, + "narHash": "sha256-kPeJJ/au+jV4jhyAhkLI3uwqK7pEDjdVJvwDmtQq8/k=", + "owner": "Xetibo", + "repo": "ReSet-Plugins", + "rev": "8d3af2fab9425f8b89fb7b82b4e23eba12a42f85", + "type": "github" + }, + "original": { + "owner": "Xetibo", + "repo": "ReSet-Plugins", + "type": "github" + } + }, + "root": { + "inputs": { + "anyrun": "anyrun", + "home-manager": "home-manager", + "hyprdock": "hyprdock", + "hyprland": "hyprland", + "ironbar": "ironbar", + "nix-flatpak": "nix-flatpak", + "nixpkgs": "nixpkgs_6", + "nur": "nur", + "oxicalc": "oxicalc", + "oxidash": "oxidash", + "oxinoti": "oxinoti", + "oxipaste": "oxipaste", + "oxishut": "oxishut", + "reset": "reset", + "reset-plugins": "reset-plugins", + "sops-nix": "sops-nix" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "ironbar", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717121863, + "narHash": "sha256-/3sxIe7MZqF/jw1RTQCSmgTjwVod43mmrk84m50MJQ4=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "2a7b53172ed08f856b8382d7dcfd36a4e0cbd866", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_9" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_3": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_11" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_4": { + "inputs": { + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_13" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_5": { + "inputs": { + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_15" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_6": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_17" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_7": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_19" + }, + "locked": { + "lastModified": 1717035469, + "narHash": "sha256-MzH+yjKULH3HCRj9QCTwBvqq4LZkR0ZqRE/QfGOGC2E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "095702e63a40e86f339d11864da9dc965b70a01e", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_20", + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1720187017, + "narHash": "sha256-Zq+T1Bvd0ShZB9XM+bP0VJK3HjsSVQBLolkaCLBQnfQ=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "1b11e208cee97c47677439625dc22e5289dcdead", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_7": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_8": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_9": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": "hyprland-protocols", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1718619174, + "narHash": "sha256-FWW68AVYmB91ZDQnhLMBNCUUTCjb1ZpO2k2KIytHtkA=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "c7894aa54f9a7dbd16df5cd24d420c8af22d5623", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nix/programs/coding.nix b/nix/programs/coding.nix index b93c94b..d50c219 100644 --- a/nix/programs/coding.nix +++ b/nix/programs/coding.nix @@ -62,7 +62,7 @@ #css tailwindcss tailwindcss-language-server - nodePackages_latest.vscode-css-languageserver-bin + vscode-langservers-extracted #editors neovide diff --git a/nix/programs/common.nix b/nix/programs/common.nix index 2d40813..29099a0 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -29,7 +29,7 @@ in networkmanager zoxide fastfetch - pkgs.gnome.gnome-keyring + pkgs.gnome-keyring dbus killall adw-gtk3 diff --git a/nix/programs/hyprland/default.nix b/nix/programs/hyprland/default.nix index 5c25085..c0873de 100644 --- a/nix/programs/hyprland/default.nix +++ b/nix/programs/hyprland/default.nix @@ -1,5 +1,4 @@ -{ inputs -, pkgs +{ pkgs , ... }: { imports = [ @@ -18,9 +17,9 @@ xdg-desktop-portal-gtk # xdg-desktop-portal-hyprland copyq - gnome.nautilus - gnome.sushi - gnome.nautilus-python + nautilus + sushi + nautilus-python wl-clipboard hyprcursor hyprpaper diff --git a/nix/programs/nvim/default.nix b/nix/programs/nvim/default.nix index fc19224..2578c5d 100644 --- a/nix/programs/nvim/default.nix +++ b/nix/programs/nvim/default.nix @@ -68,7 +68,7 @@ nvim-lint nvim-lspconfig nvim-notify - nvim-spectre + #nvim-spectre nvim-treesitter.withAllGrammars nvim-treesitter-context nvim-treesitter-textobjects From 7a4e46e04fa838d64d6508e93a70ad978d0960f5 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 10 Jul 2024 17:03:31 +0200 Subject: [PATCH 024/330] modularize config --- nix/base/base_packages.nix | 36 +++---- nix/base/big_g.nix | 1 - nix/base/common_hardware.nix | 18 ++-- nix/base/env.nix | 4 +- nix/base/login_manager.nix | 4 +- nix/base/xkb_layout.nix | 4 +- nix/flake.nix | 10 +- nix/hardware/marmo/base_config.nix | 2 +- nix/hardware/marmo/configuration.nix | 21 ++-- nix/hardware/overheating/base_config.nix | 10 +- nix/hardware/overheating/configuration.nix | 16 +-- nix/hardware/overheating/overheating.nix | 2 +- nix/hardware/spaceship/base_config.nix | 8 +- nix/hardware/spaceship/configuration.nix | 30 +++--- nix/hardware/streamdeck.nix | 6 -- nix/modules/boot_params.nix | 11 -- nix/modules/conf.nix | 106 ++++++++++++++++++++ nix/modules/default.nix | 2 +- nix/modules/gamemode.nix | 11 -- nix/modules/ironbar_config.nix | 25 ----- nix/programs/coding.nix | 3 +- nix/programs/common.nix | 9 +- nix/programs/default.nix | 3 +- nix/programs/gaming/default.nix | 10 +- nix/programs/hyprland/config.nix | 7 +- nix/programs/hyprland/hyprlock.nix | 4 +- nix/programs/hyprland/ironbar.nix | 10 +- nix/programs/individual_configs/firefox.nix | 4 +- nix/programs/individual_configs/fish.nix | 4 +- nix/programs/nvim/lua/plugins/lsp.lua | 5 +- nix/programs/oxi/oxinoti.nix | 4 +- nix/programs/themes/qt.nix | 3 +- nix/secrets/secrets.yaml | 5 +- 33 files changed, 230 insertions(+), 168 deletions(-) delete mode 100644 nix/hardware/streamdeck.nix delete mode 100644 nix/modules/boot_params.nix create mode 100644 nix/modules/conf.nix delete mode 100644 nix/modules/gamemode.nix delete mode 100644 nix/modules/ironbar_config.nix diff --git a/nix/base/base_packages.nix b/nix/base/base_packages.nix index 83e16b8..7367597 100644 --- a/nix/base/base_packages.nix +++ b/nix/base/base_packages.nix @@ -1,5 +1,10 @@ -{ pkgs, ... }: +{ pkgs, config, ... }: { + imports = [ + # is wrapped in if statement to enable when needed + ../programs/gaming/default.nix + ]; + environment.systemPackages = with pkgs; [ openssl dbus @@ -23,6 +28,9 @@ kdePackages.breeze-icons seahorse upower + (lib.mkIf config.conf.streamdeck.enable (callPackage + ../override/streamdeck.nix + { })) ]; gtk.iconCache.enable = false; @@ -32,19 +40,9 @@ ]; nix.settings.experimental-features = "nix-command flakes"; - 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 - ]; virtualisation.docker.enable = true; - programs.dconf.enable = true; services.upower.enable = true; services.printing.enable = true; services.dbus.enable = true; @@ -56,13 +54,17 @@ nssmdns4 = true; openFirewall = true; }; - # services.xserver.desktopManager.gnome.extraGSettingsOverrides = '' - # [org.gnome.desktop.interface] - # gtk-theme='adw-gtk3' - # cursor-theme='Bibata-Modern-Classsic' - # cursor-size=24 - # ''; + 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.dconf.enable = true; programs.direnv = { package = pkgs.direnv; silent = false; diff --git a/nix/base/big_g.nix b/nix/base/big_g.nix index f5cc767..0b1fe1d 100644 --- a/nix/base/big_g.nix +++ b/nix/base/big_g.nix @@ -7,7 +7,6 @@ ]; gnome.gnome-keyring.enable = true; - gvfs.enable = true; }; } diff --git a/nix/base/common_hardware.nix b/nix/base/common_hardware.nix index 389af63..3ca1b2c 100644 --- a/nix/base/common_hardware.nix +++ b/nix/base/common_hardware.nix @@ -1,4 +1,7 @@ -{ pkgs, config, username, ... }: +{ pkgs, config, ... }: +let + username = config.conf.username; +in { # Bootloader. boot.loader.systemd-boot.enable = true; @@ -54,6 +57,14 @@ username ]; + 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; + + networking.hostName = config.conf.hostname; + # allows user change later on users.mutableUsers = true; users.users.${username} = { @@ -70,7 +81,6 @@ }; system.stateVersion = "unstable"; - boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; fileSystems."/" = { @@ -103,8 +113,4 @@ swapDevices = [{ device = "/dev/disk/by-label/SWAP"; }]; - - boot.kernelParams = [ - "resume=\"PARTLABEL=SWAP\"" - ] ++ config.programs.boot.boot_params; } diff --git a/nix/base/env.nix b/nix/base/env.nix index 2235673..0591a20 100644 --- a/nix/base/env.nix +++ b/nix/base/env.nix @@ -1,5 +1,5 @@ { pkgs -, username +, config , ... }: { environment.variables = { @@ -13,7 +13,7 @@ environment.sessionVariables = { NIXOS_OZONE_WL = "1"; GOPATH = "$HOME/.go"; - FLAKE = "home/${username}/gits/dotFiles/nix"; + FLAKE = "home/${config.conf.username}/gits/dotFiles/nix"; # don't ask... marksman somehow requires this DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = 1; }; diff --git a/nix/base/login_manager.nix b/nix/base/login_manager.nix index 5c35483..6d7ab14 100644 --- a/nix/base/login_manager.nix +++ b/nix/base/login_manager.nix @@ -1,10 +1,10 @@ { lib , config , pkgs -, username , ... }: let + username = config.conf.username; session = { command = "${lib.getExe pkgs.hyprland} --config /etc/greetd/hyprgreet.conf"; user = username; @@ -38,7 +38,7 @@ in environment.etc."greetd/hyprgreet.conf".text = '' exec-once=gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' - monitor=${config.programs.ironbar.monitor},3440x1440@180,0x0,${config.programs.ironbar.scale} + monitor=${config.conf.monitor},3440x1440@180,0x0,${config.conf.scale} monitor=_,disable input { diff --git a/nix/base/xkb_layout.nix b/nix/base/xkb_layout.nix index 0370e17..8238484 100644 --- a/nix/base/xkb_layout.nix +++ b/nix/base/xkb_layout.nix @@ -1,6 +1,6 @@ { pkgs, ... }: let - dashie = pkgs.writeText "dashie" '' + layout = pkgs.writeText "dashie" '' xkb_symbols "dashie" { include "us(basic)" @@ -16,7 +16,7 @@ in services.xserver.xkb.extraLayouts.dashie = { description = "US layout with 'umlaut'"; languages = [ "eng" ]; - symbolsFile = "${dashie}"; + symbolsFile = "${layout}"; }; } diff --git a/nix/flake.nix b/nix/flake.nix index b97c93a..310295b 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -55,22 +55,20 @@ ./base/default.nix ./programs ]; - username = "dashie"; in { nixosConfigurations."marmo" = inputs.nixpkgs.lib.nixosSystem { specialArgs = { - inherit inputs pkgs username; + inherit inputs pkgs; mod = ./hardware/marmo/base_config.nix; }; modules = [ ./hardware/marmo/default.nix - ./programs/gaming/default.nix ] ++ base_imports; }; nixosConfigurations."overheating" = inputs.nixpkgs.lib.nixosSystem { specialArgs = { - inherit inputs pkgs username; + inherit inputs pkgs; mod = ./hardware/overheating/base_config.nix; }; modules = [ @@ -79,13 +77,11 @@ }; nixosConfigurations."spaceship" = inputs.nixpkgs.lib.nixosSystem { specialArgs = { - inherit inputs pkgs username; + inherit inputs pkgs; mod = ./hardware/spaceship/base_config.nix; }; modules = [ ./hardware/spaceship/default.nix - ./hardware/streamdeck.nix - ./programs/gaming/default.nix ] ++ base_imports; }; }; diff --git a/nix/hardware/marmo/base_config.nix b/nix/hardware/marmo/base_config.nix index 2276588..a410c1e 100644 --- a/nix/hardware/marmo/base_config.nix +++ b/nix/hardware/marmo/base_config.nix @@ -8,5 +8,5 @@ # all others ",highrr,auto,1" ]; - programs.ironbar.monitor = "DP-1"; + conf.monitor = "DP-1"; } diff --git a/nix/hardware/marmo/configuration.nix b/nix/hardware/marmo/configuration.nix index 9a0ac5b..d10bf51 100644 --- a/nix/hardware/marmo/configuration.nix +++ b/nix/hardware/marmo/configuration.nix @@ -1,17 +1,14 @@ -{ pkgs, ... }: { imports = [ - ../../modules/gamemode.nix - ../../modules/boot_params.nix - ../../modules/ironbar_config.nix + ../../modules/conf.nix ]; - boot.kernelPackages = pkgs.linuxPackages_zen; - programs.boot.boot_params = [ - "amdgpu.ppfeaturemask=0xffffffff" - ]; - networking.hostName = "marmo"; - programs.ironbar.monitor = "DP-1"; - programs.gamemode = { - device = 1; + # variables for system + conf = { + monitor = "DP-1"; + gaming = { + enable = true; + device = 1; + }; + hostname = "marmo"; }; } diff --git a/nix/hardware/overheating/base_config.nix b/nix/hardware/overheating/base_config.nix index 15d5330..f291f3b 100644 --- a/nix/hardware/overheating/base_config.nix +++ b/nix/hardware/overheating/base_config.nix @@ -9,9 +9,11 @@ # all others ",highres,auto,1" ]; - programs.ironbar.monitor = "eDP-1"; - programs.ironbar.battery = [ - { type = "upower"; class = "memory-usage"; } - ]; + conf = { + monitor = "eDP-1"; + battery = [ + { type = "upower"; class = "memory-usage"; } + ]; + }; programs.hyprland.extra_autostart = [ "hyprdock --server" ]; } diff --git a/nix/hardware/overheating/configuration.nix b/nix/hardware/overheating/configuration.nix index becdaa5..ca0b2b4 100644 --- a/nix/hardware/overheating/configuration.nix +++ b/nix/hardware/overheating/configuration.nix @@ -1,16 +1,16 @@ -{ pkgs, ... }: { imports = [ - ../../modules/ironbar_config.nix - ../../modules/boot_params.nix + ../../modules/conf.nix ./dsdt.nix ./firmware.nix ]; - boot.kernelPackages = pkgs.linuxPackages_latest; - networking.hostName = "overheating"; - programs.ironbar.monitor = "eDP-1"; - programs.ironbar.scale = "2.0"; - programs.boot.boot_params = [ "rtc_cmos.use_acpi_alarm=1" ]; + conf = { + monitor = "eDP-1"; + scale = "2.0"; + hostname = "overheating"; + boot_params = [ "rtc_cmos.use_acpi_alarm=1" ]; + }; + hardware.bluetooth.enable = true; hardware.bluetooth.powerOnBoot = true; diff --git a/nix/hardware/overheating/overheating.nix b/nix/hardware/overheating/overheating.nix index cc8e470..e30f979 100644 --- a/nix/hardware/overheating/overheating.nix +++ b/nix/hardware/overheating/overheating.nix @@ -1,4 +1,4 @@ -{ pkgs, config, lib, modulesPath, ... }: +{ config, lib, modulesPath, ... }: { imports = [ diff --git a/nix/hardware/spaceship/base_config.nix b/nix/hardware/spaceship/base_config.nix index ab1b6b7..145448c 100644 --- a/nix/hardware/spaceship/base_config.nix +++ b/nix/hardware/spaceship/base_config.nix @@ -1,4 +1,8 @@ -{ username, ... }: { +{ config, ... }: +let + username = config.conf.username; +in +{ imports = [ ../../modules ]; @@ -30,7 +34,7 @@ # monitor right "3,monitor:HDMI-A-1, default:true" ]; - programs.ironbar.monitor = "DP-1"; + conf.monitor = "DP-1"; programs.hyprland.hyprpaper = '' #load preload = /home/${username}/Pictures/backgrounds/shinobu_2k.jpg diff --git a/nix/hardware/spaceship/configuration.nix b/nix/hardware/spaceship/configuration.nix index 012145d..32efe02 100644 --- a/nix/hardware/spaceship/configuration.nix +++ b/nix/hardware/spaceship/configuration.nix @@ -1,19 +1,19 @@ { pkgs, lib, ... }: { imports = [ - ../../modules/gamemode.nix - ../../modules/boot_params.nix - ../../modules/ironbar_config.nix + ../../modules/conf.nix ]; - boot.kernelPackages = pkgs.linuxPackages_xanmod_latest; - programs.boot.boot_params = [ - "amdgpu.ppfeaturemask=0xffffffff" - ]; - networking.hostName = "spaceship"; - programs.gamemode = { - device = 0; + # config variables + conf = { + monitor = "DP-1"; + gaming = { + enable = true; + }; + streamdeck.enable = true; + hostname = "spaceship"; }; + virtualisation.virtualbox.host.enable = true; # enable hardware acceleration and rocm @@ -28,6 +28,12 @@ enable = true; enable32Bit = lib.mkDefault true; }; - boot.initrd.kernelModules = [ "amdgpu" ]; - programs.ironbar.monitor = "DP-1"; + networking.firewall = { + allowedTCPPortRanges = [ + { from = 1714; to = 1764; } # KDE Connect + ]; + allowedUDPPortRanges = [ + { from = 1714; to = 1764; } # KDE Connect + ]; + }; } diff --git a/nix/hardware/streamdeck.nix b/nix/hardware/streamdeck.nix deleted file mode 100644 index c8a082f..0000000 --- a/nix/hardware/streamdeck.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - #programs.streamdeck-ui = { - # enable = true; - # autoStart = false; # optional - #}; -} diff --git a/nix/modules/boot_params.nix b/nix/modules/boot_params.nix deleted file mode 100644 index 6df3ee5..0000000 --- a/nix/modules/boot_params.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ lib, ... }: { - options.programs.boot = { - boot_params = lib.mkOption { - default = [ ]; - example = [ "resume=something" ]; - description = '' - Boot params - ''; - }; - }; -} diff --git a/nix/modules/conf.nix b/nix/modules/conf.nix new file mode 100644 index 0000000..40463dd --- /dev/null +++ b/nix/modules/conf.nix @@ -0,0 +1,106 @@ +{ lib, config, pkgs, ... }: { + options.conf = { + monitor = lib.mkOption { + default = ""; + example = "eDP-1"; + type = lib.types.str; + description = '' + main monitor + ''; + }; + scale = lib.mkOption { + default = "1.0"; + example = "1.0"; + type = lib.types.str; + description = '' + Scale for the monitor + ''; + }; + battery = lib.mkOption { + default = [ ]; + example = [ ]; + }; + + amdGpu = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Enables drivers, optimizations and kernel parameters for AMD gpus. + ''; + }; + + boot_params = lib.mkOption { + default = [ ]; + example = [ "resume=something" ]; + description = '' + Boot params + ''; + }; + + gaming = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Install gaming related programs such as steam, gamemode, and more + ''; + }; + + device = lib.mkOption { + default = 0; + example = 0; + description = '' + GPU device number + ''; + }; + }; + + streamdeck = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Install streamdeck configuration program. + ''; + }; + }; + + kernel = lib.mkOption { + default = pkgs.linuxPackages_latest; + example = pkgs.linuxPackages_xanmod_latest; + # type = lib.types.package; + description = '' + kernel to be used + ''; + }; + + hostname = lib.mkOption { + default = "nixos"; + example = "spaceship"; + type = lib.types.str; + description = '' + The name of the system + ''; + }; + + username = lib.mkOption { + default = "dashie"; + example = "pingpang"; + type = lib.types.str; + description = '' + The username. + ''; + }; + }; + + config = { + conf.boot_params = lib.mkIf config.conf.amdGpu [ + "amdgpu.ppfeaturemask=0xffffffff" + ]; + + conf.kernel = lib.mkIf config.conf.gaming.enable pkgs.linuxPackages_xanmod_latest; + }; +} diff --git a/nix/modules/default.nix b/nix/modules/default.nix index 8c9ce42..5ca55d0 100644 --- a/nix/modules/default.nix +++ b/nix/modules/default.nix @@ -1,6 +1,6 @@ { imports = [ - ./ironbar_config.nix ./hyprpaper_config.nix + ./conf.nix ]; } diff --git a/nix/modules/gamemode.nix b/nix/modules/gamemode.nix deleted file mode 100644 index 220dcef..0000000 --- a/nix/modules/gamemode.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ lib, ... }: { - options.programs.gamemode = { - device = lib.mkOption { - default = 0; - example = 0; - description = '' - GPU device number - ''; - }; - }; -} diff --git a/nix/modules/ironbar_config.nix b/nix/modules/ironbar_config.nix deleted file mode 100644 index 3ea7d1c..0000000 --- a/nix/modules/ironbar_config.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ lib, ... }: { - options.programs.ironbar = { - monitor = lib.mkOption { - default = ""; - example = "eDP-1"; - type = lib.types.str; - description = '' - main monitor - ''; - }; - scale = lib.mkOption { - default = "1.0"; - example = "1.0"; - type = lib.types.str; - description = '' - Scale for the monitor - ''; - }; - - battery = lib.mkOption { - default = [ ]; - example = [ ]; - }; - }; -} diff --git a/nix/programs/coding.nix b/nix/programs/coding.nix index d50c219..ff39ce6 100644 --- a/nix/programs/coding.nix +++ b/nix/programs/coding.nix @@ -91,8 +91,7 @@ #typst typst - typst-lsp - typstfmt + tinymist ltex-ls #java diff --git a/nix/programs/common.nix b/nix/programs/common.nix index 29099a0..522479e 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -1,10 +1,12 @@ { pkgs , inputs , lib -, username +, config , ... }: -let callPackage = lib.callPackageWith (pkgs); +let + callPackage = lib.callPackageWith (pkgs); + username = config.conf.username; in { manual = { @@ -53,9 +55,6 @@ in flake-checker ffmpeg system-config-printer - (callPackage - ../override/streamdeck.nix - { }) (callPackage ../override/cambalache.nix { }) diff --git a/nix/programs/default.nix b/nix/programs/default.nix index 2926153..20faa02 100644 --- a/nix/programs/default.nix +++ b/nix/programs/default.nix @@ -1,4 +1,4 @@ -{ inputs, pkgs, mod, username, ... }: +{ inputs, pkgs, mod, config, ... }: let base_imports = [ inputs.anyrun.homeManagerModules.default @@ -14,6 +14,7 @@ let inputs.nix-flatpak.homeManagerModules.nix-flatpak inputs.sops-nix.homeManagerModules.sops ]; + username = config.conf.username; in { xdg.portal.config.common.default = "*"; diff --git a/nix/programs/gaming/default.nix b/nix/programs/gaming/default.nix index 5216390..fa34c60 100644 --- a/nix/programs/gaming/default.nix +++ b/nix/programs/gaming/default.nix @@ -1,12 +1,8 @@ { pkgs +, lib , config , ... -}: { - imports = [ - # ./anyrun.nix - # ./config.nix - ]; - +}: lib.mkIf config.conf.gaming.enable { environment.systemPackages = with pkgs; [ gamemode steam @@ -25,7 +21,7 @@ }; gpu = { apply_gpu_optimisations = "accept-responsibility"; - gpu_device = config.programs.gamemode.device; + gpu_device = config.conf.gaming.device; amd_performance_level = "high"; }; custom = { diff --git a/nix/programs/hyprland/config.nix b/nix/programs/hyprland/config.nix index 7fc48f0..cb4990a 100644 --- a/nix/programs/hyprland/config.nix +++ b/nix/programs/hyprland/config.nix @@ -1,14 +1,11 @@ -{ pkgs -, inputs -, username -, config +{ config , ... }: { wayland.windowManager.hyprland.enable = true; wayland.windowManager.hyprland.settings = { "$mod" = "SUPER"; - "source" = "/home/${username}/.config/reset/keyboard.conf"; + "source" = "/home/${config.conf.username}/.config/reset/keyboard.conf"; bindm = [ "$mod, mouse:272, movewindow" diff --git a/nix/programs/hyprland/hyprlock.nix b/nix/programs/hyprland/hyprlock.nix index 1153adf..70e01b7 100644 --- a/nix/programs/hyprland/hyprlock.nix +++ b/nix/programs/hyprland/hyprlock.nix @@ -15,7 +15,7 @@ input-field = [ { - monitor = "${config.programs.ironbar.monitor}"; + monitor = "${config.conf.monitor}"; placeholder_text = "password or something"; } @@ -23,7 +23,7 @@ label = [ { - monitor = "${config.programs.ironbar.monitor}"; + monitor = "${config.conf.monitor}"; text = "$TIME"; font_size = 50; position = "0, 200"; diff --git a/nix/programs/hyprland/ironbar.nix b/nix/programs/hyprland/ironbar.nix index c4c5438..0c9673c 100644 --- a/nix/programs/hyprland/ironbar.nix +++ b/nix/programs/hyprland/ironbar.nix @@ -1,4 +1,8 @@ -{ config, username, ... }: { +{ config, ... }: +let + username = config.conf.username; +in +{ programs.ironbar = { @@ -141,8 +145,8 @@ #"another_feature" ]; config = { - monitors."${config.programs.ironbar.monitor}" = { - end = config.programs.ironbar.battery ++ [ + monitors."${config.conf.monitor}" = { + end = config.conf.battery ++ [ { type = "sys_info"; format = [ diff --git a/nix/programs/individual_configs/firefox.nix b/nix/programs/individual_configs/firefox.nix index 7bfa8e7..6457c05 100644 --- a/nix/programs/individual_configs/firefox.nix +++ b/nix/programs/individual_configs/firefox.nix @@ -1,4 +1,4 @@ -{ pkgs, username, ... }: { +{ pkgs, config, ... }: { programs.firefox = { enable = true; @@ -13,7 +13,7 @@ DisplayBookmarksToolbar = "never"; DisplayMenuBar = "default-off"; }; - profiles.${username} = { + profiles.${config.conf.username} = { extensions = with pkgs.nur.repos.rycee.firefox-addons; [ ublock-origin darkreader diff --git a/nix/programs/individual_configs/fish.nix b/nix/programs/individual_configs/fish.nix index 0463d8d..2c955e7 100644 --- a/nix/programs/individual_configs/fish.nix +++ b/nix/programs/individual_configs/fish.nix @@ -1,4 +1,4 @@ -{ username, ... }: { +{ config, ... }: { xdg.configFile."fish/config.fish" = { text = '' @@ -15,7 +15,7 @@ set EDITOR "neovide --no-fork" - alias rebuild='sudo nixos-rebuild switch --flake /home/${username}/gits/dotFiles/nix/.' + alias rebuild='sudo nixos-rebuild switch --flake /home/${config.conf.username}/gits/dotFiles/nix/.' abbr --add ls 'lsd' abbr --add :q 'exit' abbr --add gh 'git push origin' diff --git a/nix/programs/nvim/lua/plugins/lsp.lua b/nix/programs/nvim/lua/plugins/lsp.lua index 025637c..a4b277f 100644 --- a/nix/programs/nvim/lua/plugins/lsp.lua +++ b/nix/programs/nvim/lua/plugins/lsp.lua @@ -114,9 +114,9 @@ return { "Sdk:IncludePrereleases=true", }, }, - typst_lsp = { + tinymist = { settings = { - experimentalFormatterMode = "on", + formatterMode = "typstyle", exportPdf = "onSave", }, mason = false, @@ -225,7 +225,6 @@ return { }, }, formatters_by_ft = { - typst = { "typstfmt" }, nix = { "nixpkgs-fmt" }, lua = { "stylua" }, sh = { "shfmt" }, diff --git a/nix/programs/oxi/oxinoti.nix b/nix/programs/oxi/oxinoti.nix index b1fe112..f6b91b9 100644 --- a/nix/programs/oxi/oxinoti.nix +++ b/nix/programs/oxi/oxinoti.nix @@ -1,8 +1,8 @@ -{ username, ... }: { +{ config, ... }: { xdg.configFile."oxinoti/style.css" = { text = /*css*/ '' - @import url("/home/${username}/.config/gtk-3.0/gtk.css"); + @import url("/home/${config.conf.username}/.config/gtk-3.0/gtk.css"); #MainWindow { background-color: transparent; diff --git a/nix/programs/themes/qt.nix b/nix/programs/themes/qt.nix index 007337d..5a36969 100644 --- a/nix/programs/themes/qt.nix +++ b/nix/programs/themes/qt.nix @@ -1,5 +1,6 @@ -{ username, ... }: +{ config, ... }: let + username = config.conf.username; color = '' [ColorScheme] active_colors=#ffc0caf5, #ff1a1b26, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5 diff --git a/nix/secrets/secrets.yaml b/nix/secrets/secrets.yaml index 7cdb58d..6be4816 100644 --- a/nix/secrets/secrets.yaml +++ b/nix/secrets/secrets.yaml @@ -4,14 +4,15 @@ dashie: ENC[AES256_GCM,data:P/+ZEelpLFrcsk8hx7CF999Wlv5OWiybjPVT1ULogCECpBAxYJgl hub_pub: ENC[AES256_GCM,data:6vIAQWFMIR+HnERg+A4jKu/MW+e7eLQplmdJyBeuBL9tvxH1idT8C6zvMEyIPhelU6+ZYQghAlvuC4MtktI/Te0f40XvdK3Gq/DmfBrLRUgLdSjUvMeGuuKnpRX0mjCaw77YW5ES4ptZ,iv:PC9hELA0234JCk2rx6FJhMlKKaKO8WrIezJ2Q2nv6EE=,tag:R8oPaH3Sbr23oRX++OP/qg==,type:str] lab_pub: ENC[AES256_GCM,data:rlHCiqGnoaPiQBaZQRT+bEjfNF7jNO4CGPoCOKJ1o7nv7i2jPy6Bq9OMBHXsMHI9oGfEhyKCDHdpJ65aI07KJC/fMoMoAyiNmalwNOn26jbgj84mfENS3IYbfKxQVXAUCJHE5m1cFsm7,iv:8SLdHLYq2tlfHBjdeDoByEzGuu3TURj4+KJvQfPuaWA=,tag:mmGXlRwQ0UoVIAJE6d1OUQ==,type:str] dashie_pub: ENC[AES256_GCM,data:k6JIJOKDJcGSW47Z8y0EYxNl/vaPRVbIn35CSA57snEzYnk5GpU+1NfPDniWoAGRkpIwicgN6kpzssRlKOmVudvwMejSLv4VkLRBjrsApVFECwoIBLUNGUSDaMcIwC/BYu4jfjGaozBj,iv:0EZ0rptLdmcuTU1BGOILaaDTrc7aZGJCCxgjUESqi0M=,tag:dlQs/ugBGxnSrNj/bRSJSw==,type:str] +server_pub: ENC[AES256_GCM,data:87nTYzA8CykOPjfZS2As8+JB/ysJvHXFYbPIBA8Nus8Y3nI3Tl2F/f7mUVFBT+4mmOFTTwxghEnkpgTg/vzUm6W4wb19rIcv11eM7HYaGl5oI44a44rBJn2+PKlfIgXVgaY=,iv:O7I7kkZ44McXzCt3wH1cM3MJCShxu2O+0U0+Y6rwePo=,tag:q5D5AGMmFyiNhQNR8dRB+g==,type:str] sops: kms: [] gcp_kms: [] azure_kv: [] hc_vault: [] age: [] - lastmodified: "2024-05-14T18:34:33Z" - mac: ENC[AES256_GCM,data:ZOmH7VOtapecA3wr0p4M8SfC5zKybsXZdI67rE8SHFyeHDq+6In0ekPs4uTun1lBT4ly4ijjK2XWsRdrkTI76P4yKD5o850Mi7RDHTZzzP3AmlIrMgFbKTZkxuY1wnLJvcuHnbzq4e7s5ZJYPRx/lDd5dnYB+Xa5yyv4zCXXwqg=,iv:cqSPKZp/SNYnKU1QT2eOmKPe0oFTgVI6r8UMTYModnk=,tag:bHUhfnlHq8UGG8Z50cCQcw==,type:str] + lastmodified: "2024-07-08T18:00:49Z" + mac: ENC[AES256_GCM,data:66P0uEUhQit+EjBEhAoQP3yVAt988eYwwxnOPGahPfKDw5ud+b8atc9mT6vGK3TfQFoZfjwhRxEOmc/Wx/PA+L01S7gAFctKrnbADAfRn7HJmtX3pXunhDxI6hGyJW+CrFNiLhViMJSXHljhj/QfDmxkJ/6TSSi8uMr2iNlLA3I=,iv:AJ4RB0CV0QAumZ6o36loeR51GUxQKnEsUklIGJnn5qI=,tag:or1MamtafGlwBRr/JsL9Eg==,type:str] pgp: - created_at: "2024-05-14T14:35:02Z" enc: |- From 755392bdb8ef3f167995459fab53e97ccc51f1d9 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 10 Jul 2024 21:50:39 +0200 Subject: [PATCH 025/330] update lock --- nix/flake.lock | 30 +++++++++++++++--------------- nix/programs/common.nix | 1 + 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/nix/flake.lock b/nix/flake.lock index fac5973..a9fa5d6 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -363,11 +363,11 @@ ] }, "locked": { - "lastModified": 1720289319, - "narHash": "sha256-E3CjSsXNDWYqoNjrKQLPdEZDLR+mVI9HMa+jY//FjBY=", + "lastModified": 1720327769, + "narHash": "sha256-kAsg3Lg4YKKpGw+f1W2s5hzjP8B0y/juowvjK8utIag=", "owner": "nix-community", "repo": "home-manager", - "rev": "10486e6b311b3c5ae1c3477fee058704cea7cb4a", + "rev": "6b7ce96f34b324e4e104abc30d06955d216bac71", "type": "github" }, "original": { @@ -628,11 +628,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1719720450, - "narHash": "sha256-57+R2Uj3wPeDeq8p8un19tzFFlgWiXJ8PbzgKtBgBX8=", + "lastModified": 1720282526, + "narHash": "sha256-dudRkHPRivMNOhd04YI+v4sWvn2SnN5ODSPIu5IVbco=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "78f8641796edff3bfabbf1ef5029deadfe4a21d0", + "rev": "550ac3e955c30fe96dd8b2223e37e0f5d225c927", "type": "github" }, "original": { @@ -820,11 +820,11 @@ }, "nixpkgs_20": { "locked": { - "lastModified": 1719468428, - "narHash": "sha256-vN5xJAZ4UGREEglh3lfbbkIj+MPEYMuqewMn4atZFaQ=", + "lastModified": 1720181791, + "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1e3deb3d8a86a870d925760db1a5adecc64d329d", + "rev": "4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb", "type": "github" }, "original": { @@ -946,11 +946,11 @@ }, "nur": { "locked": { - "lastModified": 1720295364, - "narHash": "sha256-clwkx3bqmlWPbAtywxJoqw0K7pEVUvQj5BArCqZxcUQ=", + "lastModified": 1720340553, + "narHash": "sha256-yltkWY9tbcTO1E9lsegEUcqcHdF+F3Yb8O79CjSAHrg=", "owner": "nix-community", "repo": "nur", - "rev": "196f75d02c4a5662ac22763c1be690f91e21ef7b", + "rev": "64eb60afcb54464e61d34fda417e7a5c7a935c21", "type": "github" }, "original": { @@ -1260,11 +1260,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1720187017, - "narHash": "sha256-Zq+T1Bvd0ShZB9XM+bP0VJK3HjsSVQBLolkaCLBQnfQ=", + "lastModified": 1720321395, + "narHash": "sha256-kcI8q9Nh8/CSj0ygfWq1DLckHl8IHhFarL8ie6g7OEk=", "owner": "Mic92", "repo": "sops-nix", - "rev": "1b11e208cee97c47677439625dc22e5289dcdead", + "rev": "c184aca4db5d71c3db0c8cbfcaaec337a5d065ea", "type": "github" }, "original": { diff --git a/nix/programs/common.nix b/nix/programs/common.nix index 522479e..be77e8d 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -55,6 +55,7 @@ in flake-checker ffmpeg system-config-printer + brightnessctl (callPackage ../override/cambalache.nix { }) From 27511925f3cb6070b21a2e610a039c34346facf8 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 11 Jul 2024 01:33:07 +0200 Subject: [PATCH 026/330] merge --- nix/base/base_packages.nix | 4 +- nix/base/common_hardware.nix | 4 +- nix/flake.lock | 1444 -------------------- nix/flake.nix | 60 +- nix/hardware/marmo/base_config.nix | 12 - nix/hardware/marmo/configuration.nix | 6 + nix/hardware/marmo/default.nix | 6 - nix/hardware/overheating/base_config.nix | 19 - nix/hardware/overheating/configuration.nix | 13 + nix/hardware/overheating/default.nix | 6 - nix/hardware/spaceship/base_config.nix | 51 - nix/hardware/spaceship/configuration.nix | 67 +- nix/hardware/spaceship/default.nix | 6 - nix/hardware/spaceship/spaceship.nix | 27 +- nix/modules/conf.nix | 69 +- nix/modules/default.nix | 6 - nix/modules/hyprpaper_config.nix | 22 - nix/programs/common.nix | 1 - nix/programs/default.nix | 16 +- nix/programs/hyprland/config.nix | 5 +- nix/programs/hyprland/hyprpaper.nix | 2 +- nix/programs/hyprland/ironbar.nix | 2 +- 22 files changed, 198 insertions(+), 1650 deletions(-) delete mode 100644 nix/flake.lock delete mode 100644 nix/hardware/marmo/base_config.nix delete mode 100644 nix/hardware/marmo/default.nix delete mode 100644 nix/hardware/overheating/base_config.nix delete mode 100644 nix/hardware/overheating/default.nix delete mode 100644 nix/hardware/spaceship/base_config.nix delete mode 100644 nix/hardware/spaceship/default.nix delete mode 100644 nix/modules/default.nix delete mode 100644 nix/modules/hyprpaper_config.nix diff --git a/nix/base/base_packages.nix b/nix/base/base_packages.nix index 7367597..4484588 100644 --- a/nix/base/base_packages.nix +++ b/nix/base/base_packages.nix @@ -29,8 +29,8 @@ seahorse upower (lib.mkIf config.conf.streamdeck.enable (callPackage - ../override/streamdeck.nix - { })) + ../override/streamdeck.nix + { })) ]; gtk.iconCache.enable = false; diff --git a/nix/base/common_hardware.nix b/nix/base/common_hardware.nix index 3ca1b2c..ac4e20e 100644 --- a/nix/base/common_hardware.nix +++ b/nix/base/common_hardware.nix @@ -29,7 +29,9 @@ in # Enable CUPS to print documents. services.printing.enable = true; services.printing.browsing = true; - services.printing.drivers = [ pkgs.hplip ]; + # fucking fun + # TODO: https://github.com/NixOS/nixpkgs/pull/325825 .... + # services.printing.drivers = [ pkgs.hplip ]; services.printing.startWhenNeeded = true; # optional services.avahi = { enable = true; diff --git a/nix/flake.lock b/nix/flake.lock deleted file mode 100644 index a9fa5d6..0000000 --- a/nix/flake.lock +++ /dev/null @@ -1,1444 +0,0 @@ -{ - "nodes": { - "anyrun": { - "inputs": { - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs", - "systems": "systems" - }, - "locked": { - "lastModified": 1717576207, - "narHash": "sha256-LU6d1xX7jN1zt10YU7Oym07MtzVfziSmUEznGFdbuaw=", - "owner": "Kirottu", - "repo": "anyrun", - "rev": "7aabad8d5bb7d1bffae903ce86427b888ab824b4", - "type": "github" - }, - "original": { - "owner": "Kirottu", - "repo": "anyrun", - "type": "github" - } - }, - "crane": { - "inputs": { - "nixpkgs": [ - "ironbar", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1717025063, - "narHash": "sha256-dIubLa56W9sNNz0e8jGxrX3CAkPXsq7snuFA/Ie6dn8=", - "owner": "ipetkov", - "repo": "crane", - "rev": "480dff0be03dac0e51a8dfc26e882b0d123a450e", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "anyrun", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1717285511, - "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "hyprdock", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_3": { - "inputs": { - "nixpkgs-lib": [ - "oxicalc", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": [ - "oxidash", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_5": { - "inputs": { - "nixpkgs-lib": [ - "oxinoti", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_6": { - "inputs": { - "nixpkgs-lib": [ - "oxipaste", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_7": { - "inputs": { - "nixpkgs-lib": [ - "oxishut", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_8": { - "inputs": { - "nixpkgs-lib": [ - "reset", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_9": { - "inputs": { - "nixpkgs-lib": [ - "reset-plugins", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-utils": { - "inputs": { - "systems": "systems_3" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { - "inputs": { - "systems": "systems_4" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "inputs": { - "systems": "systems_5" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { - "inputs": { - "systems": "systems_6" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { - "inputs": { - "systems": "systems_7" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_6": { - "inputs": { - "systems": "systems_8" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_7": { - "inputs": { - "systems": "systems_9" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "home-manager": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1720327769, - "narHash": "sha256-kAsg3Lg4YKKpGw+f1W2s5hzjP8B0y/juowvjK8utIag=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "6b7ce96f34b324e4e104abc30d06955d216bac71", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "hyprcursor": { - "inputs": { - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1718450675, - "narHash": "sha256-jpsns6buS4bK+1sF8sL8AaixAiCRjA+nldTKvcwmvUs=", - "owner": "hyprwm", - "repo": "hyprcursor", - "rev": "66d5b46ff94efbfa6fa3d1d1b66735f1779c34a6", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprcursor", - "type": "github" - } - }, - "hyprdock": { - "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_2" - }, - "locked": { - "lastModified": 1716453478, - "narHash": "sha256-EoKGnKvYKoe9geFoK0wyEAMTPGOfRtjXibt4GUCfvBA=", - "owner": "DashieTM", - "repo": "hyprdock", - "rev": "8d07dbdf446e6b21528cc994547cc8f173a70330", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "hyprdock", - "type": "github" - } - }, - "hyprland": { - "inputs": { - "hyprcursor": "hyprcursor", - "hyprlang": "hyprlang", - "hyprutils": "hyprutils", - "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_3", - "systems": "systems_2", - "xdph": "xdph" - }, - "locked": { - "lastModified": 1720213509, - "narHash": "sha256-aPYf8Jnu1fMgMYMgQnH433/Fcqfky1Z5ZuzCkNKcR1U=", - "ref": "refs/heads/main", - "rev": "cc98594c3aed0b542e03818371a4636f549f80e1", - "revCount": 4908, - "submodules": true, - "type": "git", - "url": "https://github.com/hyprwm/Hyprland" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://github.com/hyprwm/Hyprland" - } - }, - "hyprland-protocols": { - "inputs": { - "nixpkgs": [ - "hyprland", - "xdph", - "nixpkgs" - ], - "systems": [ - "hyprland", - "xdph", - "systems" - ] - }, - "locked": { - "lastModified": 1714869498, - "narHash": "sha256-vbLVOWvQqo4n1yvkg/Q70VTlPbMmTiCQfNTgcWDCfJM=", - "owner": "hyprwm", - "repo": "hyprland-protocols", - "rev": "e06482e0e611130cd1929f75e8c1cf679e57d161", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-protocols", - "type": "github" - } - }, - "hyprlang": { - "inputs": { - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1717881852, - "narHash": "sha256-XeeVoKHQgfKuXoP6q90sUqKyl7EYy3ol2dVZGM+Jj94=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "ec6938c66253429192274d612912649a0cfe4d28", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprutils": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1719316102, - "narHash": "sha256-dmRz128j/lJmMuTYeCYPfSBRHHQO3VeH4PbmoyAhHzw=", - "owner": "hyprwm", - "repo": "hyprutils", - "rev": "1f6bbec5954f623ff8d68e567bddcce97cd2f085", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprutils", - "type": "github" - } - }, - "hyprwayland-scanner": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1719067853, - "narHash": "sha256-mAnZG/eQy72Fp1ImGtqCgUrDumnR1rMZv2E/zgP4U74=", - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "rev": "914f083741e694092ee60a39d31f693d0a6dc734", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "type": "github" - } - }, - "ironbar": { - "inputs": { - "crane": "crane", - "naersk": "naersk", - "nixpkgs": "nixpkgs_5", - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1719927553, - "narHash": "sha256-8DBU91zfxyEZF1mCy1qmvA7mb/ee7AwqEUAT6ScJu40=", - "owner": "JakeStanger", - "repo": "ironbar", - "rev": "bcaa13deae4e47caa5fffa7fdaa0981af1fec297", - "type": "github" - }, - "original": { - "owner": "JakeStanger", - "repo": "ironbar", - "type": "github" - } - }, - "naersk": { - "inputs": { - "nixpkgs": "nixpkgs_4" - }, - "locked": { - "lastModified": 1717067539, - "narHash": "sha256-oIs5EF+6VpHJRvvpVWuqCYJMMVW/6h59aYUv9lABLtY=", - "owner": "nix-community", - "repo": "naersk", - "rev": "fa19d8c135e776dc97f4dcca08656a0eeb28d5c0", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "naersk", - "type": "github" - } - }, - "nix-flatpak": { - "locked": { - "lastModified": 1711997375, - "narHash": "sha256-KvU4gOtuFMS9Il67glRGtdNfguAINT9pCaXtvCL8uI8=", - "owner": "gmodena", - "repo": "nix-flatpak", - "rev": "45bf66f7068db79b552da864c0e87452be624d6c", - "type": "github" - }, - "original": { - "owner": "gmodena", - "repo": "nix-flatpak", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1717196966, - "narHash": "sha256-yZKhxVIKd2lsbOqYd5iDoUIwsRZFqE87smE2Vzf6Ck0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "57610d2f8f0937f39dbd72251e9614b1561942d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1720282526, - "narHash": "sha256-dudRkHPRivMNOhd04YI+v4sWvn2SnN5ODSPIu5IVbco=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "550ac3e955c30fe96dd8b2223e37e0f5d225c927", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-24.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_10": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_12": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_13": { - "locked": { - "lastModified": 1716190602, - "narHash": "sha256-xYRimrR0duWvokWQEvB87bSsICeCvvX9DxpUOzCfsDE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5a5ac83292c7842072318f57d68a48474f8bd34d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_14": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_15": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_16": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_17": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_18": { - "locked": { - "lastModified": 1716948383, - "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_19": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1716330097, - "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_20": { - "locked": { - "lastModified": 1720181791, - "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1719075281, - "narHash": "sha256-CyyxvOwFf12I91PBWz43iGT1kjsf5oi6ax7CrvaMyAo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a71e967ef3694799d0c418c98332f7ff4cc5f6af", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1717112898, - "narHash": "sha256-7R2ZvOnvd9h8fDd65p0JnB7wXfUvreox3xFdYWd1BnY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6132b0f6e344ce2fe34fc051b72fb46e34f668e0", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1716948383, - "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1720031269, - "narHash": "sha256-rwz8NJZV+387rnWpTYcXaRNvzUSnnF9aHONoJIYmiUQ=", - "owner": "NixOs", - "repo": "nixpkgs", - "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", - "type": "github" - }, - "original": { - "owner": "NixOs", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_7": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_8": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_9": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nur": { - "locked": { - "lastModified": 1720340553, - "narHash": "sha256-yltkWY9tbcTO1E9lsegEUcqcHdF+F3Yb8O79CjSAHrg=", - "owner": "nix-community", - "repo": "nur", - "rev": "64eb60afcb54464e61d34fda417e7a5c7a935c21", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nur", - "type": "github" - } - }, - "oxicalc": { - "inputs": { - "flake-parts": "flake-parts_3", - "nixpkgs": "nixpkgs_7" - }, - "locked": { - "lastModified": 1716225554, - "narHash": "sha256-IenHIQgKdKJTt02VJLQ+q8EunIkMwQ57XFWyKO+rb7s=", - "owner": "DashieTM", - "repo": "OxiCalc", - "rev": "a3fa5d76941278fd0f586817dcd04be134159bd8", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiCalc", - "type": "github" - } - }, - "oxidash": { - "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_8", - "rust-overlay": "rust-overlay_2" - }, - "locked": { - "lastModified": 1716235599, - "narHash": "sha256-6LDrLEfPzwbd5nEcis8us4BA18YhoWkzMVwafCJ5N/A=", - "owner": "DashieTM", - "repo": "OxiDash", - "rev": "fe6984abc73f75a64b0a03231068c20f53ec4f76", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiDash", - "type": "github" - } - }, - "oxinoti": { - "inputs": { - "flake-parts": "flake-parts_5", - "nixpkgs": "nixpkgs_10", - "rust-overlay": "rust-overlay_3" - }, - "locked": { - "lastModified": 1716235566, - "narHash": "sha256-1U4/h0YyuoOERjQE68yQZVsDdIGl43OprDplSGBMhYY=", - "owner": "DashieTM", - "repo": "OxiNoti", - "rev": "c52c330d59a3b066e94618adbe9a7be5b9cfde24", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiNoti", - "type": "github" - } - }, - "oxipaste": { - "inputs": { - "flake-parts": "flake-parts_6", - "nixpkgs": "nixpkgs_12", - "rust-overlay": "rust-overlay_4" - }, - "locked": { - "lastModified": 1716235097, - "narHash": "sha256-kTsSNciMnp3y/QOPseB/QlhRqVxrm7teRCMl05OIiBs=", - "owner": "DashieTM", - "repo": "OxiPaste", - "rev": "3f494c1a3dd093e3c5761520554977a9dec33a3a", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiPaste", - "type": "github" - } - }, - "oxishut": { - "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_14", - "rust-overlay": "rust-overlay_5" - }, - "locked": { - "lastModified": 1716235696, - "narHash": "sha256-qqN2ev97ff1Yftr+8YS7Pm2/kk8SpQU8uxplbQYJGho=", - "owner": "DashieTM", - "repo": "OxiShut", - "rev": "d38d5c892b7ae2420715cbb6b4944abb76b49f9d", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiShut", - "type": "github" - } - }, - "reset": { - "inputs": { - "flake-parts": "flake-parts_8", - "nixpkgs": "nixpkgs_16", - "rust-overlay": "rust-overlay_6" - }, - "locked": { - "lastModified": 1718284469, - "narHash": "sha256-6cZjFyjhGTOj9r8eprCWZy1v2o1Tqcl6H6g/LTgHhp4=", - "owner": "Xetibo", - "repo": "ReSet", - "rev": "6c1291bd19383ea45d0610dcdc17e8491b8e20ea", - "type": "github" - }, - "original": { - "owner": "Xetibo", - "repo": "ReSet", - "type": "github" - } - }, - "reset-plugins": { - "inputs": { - "flake-parts": "flake-parts_9", - "nixpkgs": "nixpkgs_18", - "rust-overlay": "rust-overlay_7" - }, - "locked": { - "lastModified": 1718300175, - "narHash": "sha256-kPeJJ/au+jV4jhyAhkLI3uwqK7pEDjdVJvwDmtQq8/k=", - "owner": "Xetibo", - "repo": "ReSet-Plugins", - "rev": "8d3af2fab9425f8b89fb7b82b4e23eba12a42f85", - "type": "github" - }, - "original": { - "owner": "Xetibo", - "repo": "ReSet-Plugins", - "type": "github" - } - }, - "root": { - "inputs": { - "anyrun": "anyrun", - "home-manager": "home-manager", - "hyprdock": "hyprdock", - "hyprland": "hyprland", - "ironbar": "ironbar", - "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_6", - "nur": "nur", - "oxicalc": "oxicalc", - "oxidash": "oxidash", - "oxinoti": "oxinoti", - "oxipaste": "oxipaste", - "oxishut": "oxishut", - "reset": "reset", - "reset-plugins": "reset-plugins", - "sops-nix": "sops-nix" - } - }, - "rust-overlay": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": [ - "ironbar", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1717121863, - "narHash": "sha256-/3sxIe7MZqF/jw1RTQCSmgTjwVod43mmrk84m50MJQ4=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "2a7b53172ed08f856b8382d7dcfd36a4e0cbd866", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { - "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_9" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_3": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_11" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_4": { - "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_13" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_5": { - "inputs": { - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_15" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_6": { - "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_17" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_7": { - "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_19" - }, - "locked": { - "lastModified": 1717035469, - "narHash": "sha256-MzH+yjKULH3HCRj9QCTwBvqq4LZkR0ZqRE/QfGOGC2E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "095702e63a40e86f339d11864da9dc965b70a01e", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "sops-nix": { - "inputs": { - "nixpkgs": "nixpkgs_20", - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1720321395, - "narHash": "sha256-kcI8q9Nh8/CSj0ygfWq1DLckHl8IHhFarL8ie6g7OEk=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "c184aca4db5d71c3db0c8cbfcaaec337a5d065ea", - "type": "github" - }, - "original": { - "owner": "Mic92", - "repo": "sops-nix", - "type": "github" - } - }, - "systems": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_2": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_4": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_5": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_6": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_7": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_8": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_9": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "xdph": { - "inputs": { - "hyprland-protocols": "hyprland-protocols", - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1718619174, - "narHash": "sha256-FWW68AVYmB91ZDQnhLMBNCUUTCjb1ZpO2k2KIytHtkA=", - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "rev": "c7894aa54f9a7dbd16df5cd24d420c8af22d5623", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/nix/flake.nix b/nix/flake.nix index 310295b..ff67740 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -45,45 +45,41 @@ system = "x86_64-linux"; overlays = [ inputs.nur.overlay + # DUDE FOR FUCK SAKE + # https://github.com/NixOS/nixpkgs/pull/325825 .... + # fucking fun + # TODO: https://github.com/NixOS/nixpkgs/pull/325825 .... + (_: prev: { + python312 = prev.python312.override { packageOverrides = _: pysuper: { nose = pysuper.pynose; }; }; + }) ]; config = { allowUnfree = true; }; }; - base_imports = [ - inputs.home-manager.nixosModules.home-manager - ./base/default.nix - ./programs - ]; in { - nixosConfigurations."marmo" = inputs.nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs pkgs; - mod = ./hardware/marmo/base_config.nix; - }; - modules = [ - ./hardware/marmo/default.nix - ] ++ base_imports; - }; - nixosConfigurations."overheating" = inputs.nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs pkgs; - mod = ./hardware/overheating/base_config.nix; - }; - modules = [ - ./hardware/overheating/default.nix - ] ++ base_imports; - }; - nixosConfigurations."spaceship" = inputs.nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs pkgs; - mod = ./hardware/spaceship/base_config.nix; - }; - modules = [ - ./hardware/spaceship/default.nix - ] ++ base_imports; - }; + nixosConfigurations = (builtins.listToAttrs (map + (name: { + name = name; + value = + let + mod = ./hardware/${name}/configuration.nix; + in + inputs.nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs pkgs mod; + }; + modules = [ + mod + + inputs.home-manager.nixosModules.home-manager + ./base/default.nix + ./programs + ] ++ inputs.nixpkgs.lib.optional (builtins.pathExists ./hardware/${name}/${name}.nix) ./hardware/${name}/${name}.nix + ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; + }; + }) [ "marmo" "overheating" "spaceship" ])); }; nixConfig = { diff --git a/nix/hardware/marmo/base_config.nix b/nix/hardware/marmo/base_config.nix deleted file mode 100644 index a410c1e..0000000 --- a/nix/hardware/marmo/base_config.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - imports = [ - ../../modules - ]; - wayland.windowManager.hyprland.settings.monitor = [ - # default - "DP-1,1920x1080@144,0x0,1" - # all others - ",highrr,auto,1" - ]; - conf.monitor = "DP-1"; -} diff --git a/nix/hardware/marmo/configuration.nix b/nix/hardware/marmo/configuration.nix index d10bf51..3fbaf27 100644 --- a/nix/hardware/marmo/configuration.nix +++ b/nix/hardware/marmo/configuration.nix @@ -10,5 +10,11 @@ device = 1; }; hostname = "marmo"; + hyprland.monitor = [ + # default + "DP-1,1920x1080@144,0x0,1" + # all others + ",highrr,auto,1" + ]; }; } diff --git a/nix/hardware/marmo/default.nix b/nix/hardware/marmo/default.nix deleted file mode 100644 index 2e9bfbc..0000000 --- a/nix/hardware/marmo/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./marmo.nix - ./configuration.nix - ]; -} diff --git a/nix/hardware/overheating/base_config.nix b/nix/hardware/overheating/base_config.nix deleted file mode 100644 index f291f3b..0000000 --- a/nix/hardware/overheating/base_config.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - imports = [ - ../../modules - ]; - wayland.windowManager.hyprland.settings.monitor = [ - # default - "eDP-1,2944x1840@90,0x0,2" - - # all others - ",highres,auto,1" - ]; - conf = { - monitor = "eDP-1"; - battery = [ - { type = "upower"; class = "memory-usage"; } - ]; - }; - programs.hyprland.extra_autostart = [ "hyprdock --server" ]; -} diff --git a/nix/hardware/overheating/configuration.nix b/nix/hardware/overheating/configuration.nix index ca0b2b4..bbfa866 100644 --- a/nix/hardware/overheating/configuration.nix +++ b/nix/hardware/overheating/configuration.nix @@ -9,6 +9,19 @@ scale = "2.0"; hostname = "overheating"; boot_params = [ "rtc_cmos.use_acpi_alarm=1" ]; + ironbar.modules = [ + { type = "upower"; class = "memory-usage"; } + ]; + hyprland = { + monitor = [ + # default + "eDP-1,2944x1840@90,0x0,2" + + # all others + ",highres,auto,1" + ]; + extra_autostart = [ "hyprdock --server" ]; + }; }; hardware.bluetooth.enable = true; diff --git a/nix/hardware/overheating/default.nix b/nix/hardware/overheating/default.nix deleted file mode 100644 index 3091cdc..0000000 --- a/nix/hardware/overheating/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./overheating.nix - ./configuration.nix - ]; -} diff --git a/nix/hardware/spaceship/base_config.nix b/nix/hardware/spaceship/base_config.nix deleted file mode 100644 index 145448c..0000000 --- a/nix/hardware/spaceship/base_config.nix +++ /dev/null @@ -1,51 +0,0 @@ -{ config, ... }: -let - username = config.conf.username; -in -{ - imports = [ - ../../modules - ]; - wayland.windowManager.hyprland.settings.monitor = [ - # default - "DP-2,2560x1440@165,0x0,1" - "DP-1,3440x1440@180,2560x0,1,vrr,1" - "HDMI-A-1,1920x1200@60,6000x0,1" - "HDMI-A-1,transform,1" - - # all others - ",highrr,auto,1" - ]; - wayland.windowManager.hyprland.settings.workspace = [ - # workspaces - # monitor middle - "2,monitor:DP-1, default:true" - "4,monitor:DP-1" - "6,monitor:DP-1" - "8,monitor:DP-1" - "9,monitor:DP-1" - "10,monitor:DP-1" - - # monitor left - "1,monitor:DP-2, default:true" - "5,monitor:DP-2" - "7,monitor:DP-2" - - # monitor right - "3,monitor:HDMI-A-1, default:true" - ]; - conf.monitor = "DP-1"; - programs.hyprland.hyprpaper = '' - #load - preload = /home/${username}/Pictures/backgrounds/shinobu_2k.jpg - preload = /home/${username}/Pictures/backgrounds/shino_wide.png - preload = /home/${username}/Pictures/backgrounds/shinobu_1200.jpg - - #set - wallpaper = DP-2,/home/${username}/Pictures/backgrounds/shinobu_2k.jpg - wallpaper = DP-1,/home/${username}/Pictures/backgrounds/shino_wide.png - wallpaper = HDMI-A-1,/home/${username}/Pictures/backgrounds/shinobu_1200.jpg - splash = true - ''; - programs.hyprland.extra_autostart = [ "streamdeck -n" ]; -} diff --git a/nix/hardware/spaceship/configuration.nix b/nix/hardware/spaceship/configuration.nix index 32efe02..50d7c8b 100644 --- a/nix/hardware/spaceship/configuration.nix +++ b/nix/hardware/spaceship/configuration.nix @@ -1,4 +1,7 @@ -{ pkgs, lib, ... }: +{ config, ... }: +let + username = config.conf.username; +in { imports = [ ../../modules/conf.nix @@ -12,28 +15,48 @@ }; streamdeck.enable = true; hostname = "spaceship"; - }; + hyprland = { + monitor = [ + # default + "DP-2,2560x1440@165,0x0,1" + "DP-1,3440x1440@180,2560x0,1,vrr,1" + "HDMI-A-1,1920x1200@60,6000x0,1" + "HDMI-A-1,transform,1" - virtualisation.virtualbox.host.enable = true; + # all others + ",highrr,auto,1" + ]; + workspace = [ + # workspaces + # monitor middle + "2,monitor:DP-1, default:true" + "4,monitor:DP-1" + "6,monitor:DP-1" + "8,monitor:DP-1" + "9,monitor:DP-1" + "10,monitor:DP-1" - # enable hardware acceleration and rocm - hardware.xone.enable = true; - hardware.graphics.extraPackages = with pkgs; [ - libvdpau-va-gl - vaapiVdpau - rocmPackages.clr.icd - rocm-opencl-runtime - ]; - hardware.graphics = { - enable = true; - enable32Bit = lib.mkDefault true; - }; - networking.firewall = { - allowedTCPPortRanges = [ - { from = 1714; to = 1764; } # KDE Connect - ]; - allowedUDPPortRanges = [ - { from = 1714; to = 1764; } # KDE Connect - ]; + # monitor left + "1,monitor:DP-2, default:true" + "5,monitor:DP-2" + "7,monitor:DP-2" + + # monitor right + "3,monitor:HDMI-A-1, default:true" + ]; + hyprpaper = '' + #load + preload = /home/${username}/Pictures/backgrounds/shinobu_2k.jpg + preload = /home/${username}/Pictures/backgrounds/shino_wide.png + preload = /home/${username}/Pictures/backgrounds/shinobu_1200.jpg + + #set + wallpaper = DP-2,/home/${username}/Pictures/backgrounds/shinobu_2k.jpg + wallpaper = DP-1,/home/${username}/Pictures/backgrounds/shino_wide.png + wallpaper = HDMI-A-1,/home/${username}/Pictures/backgrounds/shinobu_1200.jpg + splash = true + ''; + extra_autostart = [ "streamdeck -n" ]; + }; }; } diff --git a/nix/hardware/spaceship/default.nix b/nix/hardware/spaceship/default.nix deleted file mode 100644 index 5ac7293..0000000 --- a/nix/hardware/spaceship/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./spaceship.nix - ./configuration.nix - ]; -} diff --git a/nix/hardware/spaceship/spaceship.nix b/nix/hardware/spaceship/spaceship.nix index 43ae303..62f5ee2 100644 --- a/nix/hardware/spaceship/spaceship.nix +++ b/nix/hardware/spaceship/spaceship.nix @@ -1,4 +1,4 @@ -{ config, lib, modulesPath, ... }: +{ pkgs, config, lib, modulesPath, ... }: { imports = [ @@ -32,4 +32,29 @@ hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; services.fstrim.enable = lib.mkDefault true; nix.settings.auto-optimise-store = true; + + virtualisation.virtualbox.host.enable = true; + + # enable hardware acceleration and rocm + hardware.xone.enable = true; + hardware.graphics.extraPackages = with pkgs; [ + libvdpau-va-gl + vaapiVdpau + # DUDE FOR FUCK SAKE + # TODO: + # rocmPackages.clr.icd + # rocm-opencl-runtime + ]; + hardware.graphics = { + enable = true; + enable32Bit = lib.mkDefault true; + }; + networking.firewall = { + allowedTCPPortRanges = [ + { from = 1714; to = 1764; } # KDE Connect + ]; + allowedUDPPortRanges = [ + { from = 1714; to = 1764; } # KDE Connect + ]; + }; } diff --git a/nix/modules/conf.nix b/nix/modules/conf.nix index 40463dd..227f805 100644 --- a/nix/modules/conf.nix +++ b/nix/modules/conf.nix @@ -8,6 +8,7 @@ main monitor ''; }; + scale = lib.mkOption { default = "1.0"; example = "1.0"; @@ -16,9 +17,18 @@ Scale for the monitor ''; }; - battery = lib.mkOption { - default = [ ]; - example = [ ]; + + ironbar = { + modules = lib.mkOption { + default = [ ]; + example = [ + { type = "upower"; class = "memory-usage"; } + ]; + type = with lib.types; listOf attrs; + description = '' + Adds modules to ironbar. + ''; + }; }; amdGpu = lib.mkOption { @@ -33,6 +43,7 @@ boot_params = lib.mkOption { default = [ ]; example = [ "resume=something" ]; + type = with lib.types; listOf str; description = '' Boot params ''; @@ -51,6 +62,7 @@ device = lib.mkOption { default = 0; example = 0; + type = lib.types.int; description = '' GPU device number ''; @@ -71,7 +83,7 @@ kernel = lib.mkOption { default = pkgs.linuxPackages_latest; example = pkgs.linuxPackages_xanmod_latest; - # type = lib.types.package; + type = with lib.types; nullOr attrs; description = '' kernel to be used ''; @@ -87,13 +99,54 @@ }; username = lib.mkOption { - default = "dashie"; - example = "pingpang"; - type = lib.types.str; + default = "dashie"; + example = "pingpang"; + type = lib.types.str; + description = '' + The username. + ''; + }; + + hyprland = { + monitor = lib.mkOption { + default = [ ]; + example = [ + "DP-1,3440x1440@180,2560x0,1,vrr,1" + ]; + type = with lib.types; listOf str; description = '' - The username. + The monitor configuration for hyprland. ''; }; + workspace = lib.mkOption { + default = [ ]; + example = [ + "2,monitor:DP-1, default:true" + ]; + type = with lib.types; listOf str; + description = '' + The workspace configuration for hyprland. + ''; + }; + hyprpaper = lib.mkOption { + default = ''''; + example = '' + hyprpaper stuff + ''; + type = lib.types.lines; + description = '' + hyprpaper + ''; + }; + extra_autostart = lib.mkOption { + default = [ ]; + example = [ "your application" ]; + type = lib.types.listOf lib.types.str; + description = '' + Extra exec_once. + ''; + }; + }; }; config = { diff --git a/nix/modules/default.nix b/nix/modules/default.nix deleted file mode 100644 index 5ca55d0..0000000 --- a/nix/modules/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./hyprpaper_config.nix - ./conf.nix - ]; -} diff --git a/nix/modules/hyprpaper_config.nix b/nix/modules/hyprpaper_config.nix deleted file mode 100644 index 3f9776c..0000000 --- a/nix/modules/hyprpaper_config.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ lib, ... }: { - options.programs.hyprland = { - hyprpaper = lib.mkOption { - default = ''''; - example = '' - hyprpaper stuff - ''; - type = lib.types.lines; - description = '' - hyprpaper - ''; - }; - extra_autostart = lib.mkOption { - default = [ ]; - example = [ "your application" ]; - type = lib.types.listOf lib.types.str; - description = '' - Extra exec_once. - ''; - }; - }; -} diff --git a/nix/programs/common.nix b/nix/programs/common.nix index be77e8d..5061c43 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -48,7 +48,6 @@ in playerctl ncspot poppler_utils - neofetch brave greetd.regreet sops diff --git a/nix/programs/default.nix b/nix/programs/default.nix index 20faa02..69fb5c8 100644 --- a/nix/programs/default.nix +++ b/nix/programs/default.nix @@ -1,4 +1,4 @@ -{ inputs, pkgs, mod, config, ... }: +{ inputs, pkgs, config, lib, mod, ... }: let base_imports = [ inputs.anyrun.homeManagerModules.default @@ -14,7 +14,6 @@ let inputs.nix-flatpak.homeManagerModules.nix-flatpak inputs.sops-nix.homeManagerModules.sops ]; - username = config.conf.username; in { xdg.portal.config.common.default = "*"; @@ -26,12 +25,13 @@ in }; home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = { + inherit inputs; + }; - home-manager.users.${username} = { + home-manager.users.${config.conf.username} = { imports = [ - { - _module = { args = { inherit inputs username; }; }; - } + ./hyprland/default.nix ./flatpak.nix ./common.nix @@ -42,7 +42,7 @@ in ./oxi/default.nix ./themes/default.nix ./individual_configs/default.nix - mod - ] ++ base_imports; + ] ++ base_imports + ++ lib.optional (builtins.pathExists mod) mod; }; } diff --git a/nix/programs/hyprland/config.nix b/nix/programs/hyprland/config.nix index cb4990a..b9881fb 100644 --- a/nix/programs/hyprland/config.nix +++ b/nix/programs/hyprland/config.nix @@ -178,6 +178,9 @@ workspace_swipe = true; }; + monitor = config.conf.hyprland.monitor; + workspace = config.conf.hyprland.workspace; + env = [ "GTK_CSD,0" "TERM,\"kitty /bin/fish\"" @@ -243,7 +246,7 @@ "oxipaste_daemon" "nextcloud --background" "oxinoti" - ] ++ config.programs.hyprland.extra_autostart; + ] ++ config.conf.hyprland.extra_autostart; # plugin = { # hyprspace = { diff --git a/nix/programs/hyprland/hyprpaper.nix b/nix/programs/hyprland/hyprpaper.nix index 8b93285..802a963 100644 --- a/nix/programs/hyprland/hyprpaper.nix +++ b/nix/programs/hyprland/hyprpaper.nix @@ -1,5 +1,5 @@ { config, ... }: { xdg.configFile."hypr/hyprpaper.conf" = { - text = config.programs.hyprland.hyprpaper; + text = config.conf.hyprland.hyprpaper; }; } diff --git a/nix/programs/hyprland/ironbar.nix b/nix/programs/hyprland/ironbar.nix index 0c9673c..0b8a070 100644 --- a/nix/programs/hyprland/ironbar.nix +++ b/nix/programs/hyprland/ironbar.nix @@ -146,7 +146,7 @@ in ]; config = { monitors."${config.conf.monitor}" = { - end = config.conf.battery ++ [ + end = config.conf.ironbar.modules ++ [ { type = "sys_info"; format = [ From 3cd2f6fb687b2e544e9b14e842715b7234cfed32 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 11 Jul 2024 01:34:12 +0200 Subject: [PATCH 027/330] Update lock --- nix/flake.lock | 1444 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1444 insertions(+) create mode 100644 nix/flake.lock diff --git a/nix/flake.lock b/nix/flake.lock new file mode 100644 index 0000000..ccd91e0 --- /dev/null +++ b/nix/flake.lock @@ -0,0 +1,1444 @@ +{ + "nodes": { + "anyrun": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs", + "systems": "systems" + }, + "locked": { + "lastModified": 1717576207, + "narHash": "sha256-LU6d1xX7jN1zt10YU7Oym07MtzVfziSmUEznGFdbuaw=", + "owner": "Kirottu", + "repo": "anyrun", + "rev": "7aabad8d5bb7d1bffae903ce86427b888ab824b4", + "type": "github" + }, + "original": { + "owner": "Kirottu", + "repo": "anyrun", + "type": "github" + } + }, + "crane": { + "inputs": { + "nixpkgs": [ + "ironbar", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717025063, + "narHash": "sha256-dIubLa56W9sNNz0e8jGxrX3CAkPXsq7snuFA/Ie6dn8=", + "owner": "ipetkov", + "repo": "crane", + "rev": "480dff0be03dac0e51a8dfc26e882b0d123a450e", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "anyrun", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717285511, + "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "hyprdock", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "oxicalc", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": [ + "oxidash", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": [ + "oxinoti", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_6": { + "inputs": { + "nixpkgs-lib": [ + "oxipaste", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ + "oxishut", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_8": { + "inputs": { + "nixpkgs-lib": [ + "reset", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_9": { + "inputs": { + "nixpkgs-lib": [ + "reset-plugins", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "inputs": { + "systems": "systems_5" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "inputs": { + "systems": "systems_6" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "inputs": { + "systems": "systems_7" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "inputs": { + "systems": "systems_8" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { + "inputs": { + "systems": "systems_9" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1720646128, + "narHash": "sha256-BivO5yIQukDlJL+1875Sqf3GuOPxZDdA48dYDi3PkL8=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "c085b984ff2808bf322f375b10fea5a415a9c43d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1720108799, + "narHash": "sha256-AxRkTJlbB8r7aG6gvc7IaLhc2T9TO4/8uqanKRxukBQ=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "a5c0d57325c5f0814c39110a70ca19c070ae9486", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprdock": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1716453478, + "narHash": "sha256-EoKGnKvYKoe9geFoK0wyEAMTPGOfRtjXibt4GUCfvBA=", + "owner": "DashieTM", + "repo": "hyprdock", + "rev": "8d07dbdf446e6b21528cc994547cc8f173a70330", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "hyprdock", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "hyprcursor": "hyprcursor", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs_3", + "systems": "systems_2", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1720453602, + "narHash": "sha256-7+PjJZn/jpqNkVKJ3AGVT9G601rVj/R8KkT+WWjhwyk=", + "ref": "refs/heads/main", + "rev": "b03f41efec14273cf25c42d4cef326acc36cb319", + "revCount": 4913, + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "xdph", + "nixpkgs" + ], + "systems": [ + "hyprland", + "xdph", + "systems" + ] + }, + "locked": { + "lastModified": 1718746314, + "narHash": "sha256-HUklK5u86w2Yh9dOkk4FdsL8eehcOZ95jPhLixGDRQY=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "1b61f0093afff20ab44d88ad707aed8bf2215290", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1720381373, + "narHash": "sha256-lyC/EZdHULsaAKVryK11lgHY9u6pXr7qR4irnxNWC7k=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "5df0174fd09de4ac5475233d65ffc703e89b82eb", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1720203444, + "narHash": "sha256-lq2dPPPcwMHTLsFrQ2pRp4c2LwDZWoqzSyjuPdeJCP4=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "a8c3a135701a7b64db0a88ec353a392f402d2a87", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1720215857, + "narHash": "sha256-JPdL+Qul+jEueAn8CARfcWP83eJgwkhMejQYfDvrgvU=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "d5fa094ca27e0039be5e94c0a80ae433145af8bb", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "ironbar": { + "inputs": { + "crane": "crane", + "naersk": "naersk", + "nixpkgs": "nixpkgs_5", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1719927553, + "narHash": "sha256-8DBU91zfxyEZF1mCy1qmvA7mb/ee7AwqEUAT6ScJu40=", + "owner": "JakeStanger", + "repo": "ironbar", + "rev": "bcaa13deae4e47caa5fffa7fdaa0981af1fec297", + "type": "github" + }, + "original": { + "owner": "JakeStanger", + "repo": "ironbar", + "type": "github" + } + }, + "naersk": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1717067539, + "narHash": "sha256-oIs5EF+6VpHJRvvpVWuqCYJMMVW/6h59aYUv9lABLtY=", + "owner": "nix-community", + "repo": "naersk", + "rev": "fa19d8c135e776dc97f4dcca08656a0eeb28d5c0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "naersk", + "type": "github" + } + }, + "nix-flatpak": { + "locked": { + "lastModified": 1711997375, + "narHash": "sha256-KvU4gOtuFMS9Il67glRGtdNfguAINT9pCaXtvCL8uI8=", + "owner": "gmodena", + "repo": "nix-flatpak", + "rev": "45bf66f7068db79b552da864c0e87452be624d6c", + "type": "github" + }, + "original": { + "owner": "gmodena", + "repo": "nix-flatpak", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1717196966, + "narHash": "sha256-yZKhxVIKd2lsbOqYd5iDoUIwsRZFqE87smE2Vzf6Ck0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "57610d2f8f0937f39dbd72251e9614b1561942d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1720282526, + "narHash": "sha256-dudRkHPRivMNOhd04YI+v4sWvn2SnN5ODSPIu5IVbco=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "550ac3e955c30fe96dd8b2223e37e0f5d225c927", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_10": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_12": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_13": { + "locked": { + "lastModified": 1716190602, + "narHash": "sha256-xYRimrR0duWvokWQEvB87bSsICeCvvX9DxpUOzCfsDE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5a5ac83292c7842072318f57d68a48474f8bd34d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_15": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_16": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_17": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_18": { + "locked": { + "lastModified": 1716948383, + "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_19": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1716330097, + "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_20": { + "locked": { + "lastModified": 1720181791, + "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1720031269, + "narHash": "sha256-rwz8NJZV+387rnWpTYcXaRNvzUSnnF9aHONoJIYmiUQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1717112898, + "narHash": "sha256-7R2ZvOnvd9h8fDd65p0JnB7wXfUvreox3xFdYWd1BnY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6132b0f6e344ce2fe34fc051b72fb46e34f668e0", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1716948383, + "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1720418205, + "narHash": "sha256-cPJoFPXU44GlhWg4pUk9oUPqurPlCFZ11ZQPk21GTPU=", + "owner": "NixOs", + "repo": "nixpkgs", + "rev": "655a58a72a6601292512670343087c2d75d859c1", + "type": "github" + }, + "original": { + "owner": "NixOs", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nur": { + "locked": { + "lastModified": 1720653960, + "narHash": "sha256-7Z8NTGholkQ2iQvNGyWMdnvRkzUKJnplVNjZDyf1ztE=", + "owner": "nix-community", + "repo": "nur", + "rev": "477b0d6ac43b0dbb332ad5ea3cfeb82221925d20", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nur", + "type": "github" + } + }, + "oxicalc": { + "inputs": { + "flake-parts": "flake-parts_3", + "nixpkgs": "nixpkgs_7" + }, + "locked": { + "lastModified": 1716225554, + "narHash": "sha256-IenHIQgKdKJTt02VJLQ+q8EunIkMwQ57XFWyKO+rb7s=", + "owner": "DashieTM", + "repo": "OxiCalc", + "rev": "a3fa5d76941278fd0f586817dcd04be134159bd8", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiCalc", + "type": "github" + } + }, + "oxidash": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_8", + "rust-overlay": "rust-overlay_2" + }, + "locked": { + "lastModified": 1716235599, + "narHash": "sha256-6LDrLEfPzwbd5nEcis8us4BA18YhoWkzMVwafCJ5N/A=", + "owner": "DashieTM", + "repo": "OxiDash", + "rev": "fe6984abc73f75a64b0a03231068c20f53ec4f76", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiDash", + "type": "github" + } + }, + "oxinoti": { + "inputs": { + "flake-parts": "flake-parts_5", + "nixpkgs": "nixpkgs_10", + "rust-overlay": "rust-overlay_3" + }, + "locked": { + "lastModified": 1716235566, + "narHash": "sha256-1U4/h0YyuoOERjQE68yQZVsDdIGl43OprDplSGBMhYY=", + "owner": "DashieTM", + "repo": "OxiNoti", + "rev": "c52c330d59a3b066e94618adbe9a7be5b9cfde24", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiNoti", + "type": "github" + } + }, + "oxipaste": { + "inputs": { + "flake-parts": "flake-parts_6", + "nixpkgs": "nixpkgs_12", + "rust-overlay": "rust-overlay_4" + }, + "locked": { + "lastModified": 1716235097, + "narHash": "sha256-kTsSNciMnp3y/QOPseB/QlhRqVxrm7teRCMl05OIiBs=", + "owner": "DashieTM", + "repo": "OxiPaste", + "rev": "3f494c1a3dd093e3c5761520554977a9dec33a3a", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiPaste", + "type": "github" + } + }, + "oxishut": { + "inputs": { + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_14", + "rust-overlay": "rust-overlay_5" + }, + "locked": { + "lastModified": 1716235696, + "narHash": "sha256-qqN2ev97ff1Yftr+8YS7Pm2/kk8SpQU8uxplbQYJGho=", + "owner": "DashieTM", + "repo": "OxiShut", + "rev": "d38d5c892b7ae2420715cbb6b4944abb76b49f9d", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiShut", + "type": "github" + } + }, + "reset": { + "inputs": { + "flake-parts": "flake-parts_8", + "nixpkgs": "nixpkgs_16", + "rust-overlay": "rust-overlay_6" + }, + "locked": { + "lastModified": 1718284469, + "narHash": "sha256-6cZjFyjhGTOj9r8eprCWZy1v2o1Tqcl6H6g/LTgHhp4=", + "owner": "Xetibo", + "repo": "ReSet", + "rev": "6c1291bd19383ea45d0610dcdc17e8491b8e20ea", + "type": "github" + }, + "original": { + "owner": "Xetibo", + "repo": "ReSet", + "type": "github" + } + }, + "reset-plugins": { + "inputs": { + "flake-parts": "flake-parts_9", + "nixpkgs": "nixpkgs_18", + "rust-overlay": "rust-overlay_7" + }, + "locked": { + "lastModified": 1718300175, + "narHash": "sha256-kPeJJ/au+jV4jhyAhkLI3uwqK7pEDjdVJvwDmtQq8/k=", + "owner": "Xetibo", + "repo": "ReSet-Plugins", + "rev": "8d3af2fab9425f8b89fb7b82b4e23eba12a42f85", + "type": "github" + }, + "original": { + "owner": "Xetibo", + "repo": "ReSet-Plugins", + "type": "github" + } + }, + "root": { + "inputs": { + "anyrun": "anyrun", + "home-manager": "home-manager", + "hyprdock": "hyprdock", + "hyprland": "hyprland", + "ironbar": "ironbar", + "nix-flatpak": "nix-flatpak", + "nixpkgs": "nixpkgs_6", + "nur": "nur", + "oxicalc": "oxicalc", + "oxidash": "oxidash", + "oxinoti": "oxinoti", + "oxipaste": "oxipaste", + "oxishut": "oxishut", + "reset": "reset", + "reset-plugins": "reset-plugins", + "sops-nix": "sops-nix" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "ironbar", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717121863, + "narHash": "sha256-/3sxIe7MZqF/jw1RTQCSmgTjwVod43mmrk84m50MJQ4=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "2a7b53172ed08f856b8382d7dcfd36a4e0cbd866", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_9" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_3": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_11" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_4": { + "inputs": { + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_13" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_5": { + "inputs": { + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_15" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_6": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_17" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_7": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_19" + }, + "locked": { + "lastModified": 1717035469, + "narHash": "sha256-MzH+yjKULH3HCRj9QCTwBvqq4LZkR0ZqRE/QfGOGC2E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "095702e63a40e86f339d11864da9dc965b70a01e", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_20", + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1720479166, + "narHash": "sha256-jqvhLDXzTLTHq9ZviFOpcTmXXmnbLfz7mWhgMNipMN4=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "67035a355b1d52d2d238501f8cc1a18706979760", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_7": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_8": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_9": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": "hyprland-protocols", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1720194466, + "narHash": "sha256-Rizg9efi6ue95zOp0MeIV2ZedNo+5U9G2l6yirgBUnA=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "b9b97e5ba23fe7bd5fa4df54696102e8aa863cf6", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} From e5e23373dad7a53908746a654a419001b0601f40 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 11 Jul 2024 15:40:58 +0200 Subject: [PATCH 028/330] Make theming modular --- nix/base/base_packages.nix | 1 + nix/flake.lock | 231 ++++++++++- nix/flake.nix | 6 +- nix/modules/conf.nix | 32 ++ nix/programs/common.nix | 18 +- nix/programs/hyprland/config.nix | 5 +- nix/programs/individual_configs/kitty.nix | 78 ++-- nix/programs/individual_configs/yazi.nix | 460 +++++++++++----------- nix/programs/themes/default.nix | 5 +- nix/programs/themes/qt.nix | 10 +- nix/programs/themes/stylix.nix | 38 ++ 11 files changed, 596 insertions(+), 288 deletions(-) create mode 100644 nix/programs/themes/stylix.nix diff --git a/nix/base/base_packages.nix b/nix/base/base_packages.nix index 4484588..4175297 100644 --- a/nix/base/base_packages.nix +++ b/nix/base/base_packages.nix @@ -3,6 +3,7 @@ imports = [ # is wrapped in if statement to enable when needed ../programs/gaming/default.nix + ../programs/themes/stylix.nix ]; environment.systemPackages = with pkgs; [ diff --git a/nix/flake.lock b/nix/flake.lock index ccd91e0..7969627 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -20,6 +20,120 @@ "type": "github" } }, + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1708890466, + "narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "665b3c6748534eb766c777298721cece9453fdae", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1622559957, + "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "type": "github" + } + }, + "base16-foot": { + "flake": false, + "locked": { + "lastModified": 1696725948, + "narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=", + "owner": "tinted-theming", + "repo": "base16-foot", + "rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-foot", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1696727917, + "narHash": "sha256-FVrbPk+NtMra0jtlC5oxyNchbm8FosmvXIatkRbYy1g=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "dbe1480d99fe80f08df7970e471fac24c05f2ddb", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-kitty": { + "flake": false, + "locked": { + "lastModified": 1665001328, + "narHash": "sha256-aRaizTYPpuWEcvoYE9U+YRX+Wsc8+iG0guQJbvxEdJY=", + "owner": "kdrag0n", + "repo": "base16-kitty", + "rev": "06bb401fa9a0ffb84365905ffbb959ae5bf40805", + "type": "github" + }, + "original": { + "owner": "kdrag0n", + "repo": "base16-kitty", + "type": "github" + } + }, + "base16-tmux": { + "flake": false, + "locked": { + "lastModified": 1696725902, + "narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=", + "owner": "tinted-theming", + "repo": "base16-tmux", + "rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-tmux", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1716150083, + "narHash": "sha256-ZMhnNmw34ogE5rJZrjRv5MtG3WaqKd60ds2VXvT6hEc=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "6e955d704d046b0dc3e5c2d68a2a6eeffd2b5d3d", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "type": "github" + } + }, "crane": { "inputs": { "nixpkgs": [ @@ -41,6 +155,22 @@ "type": "github" } }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -356,6 +486,39 @@ "type": "github" } }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1689549921, + "narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "gnome-shell": { + "flake": false, + "locked": { + "lastModified": 1713702291, + "narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934", + "type": "github" + }, + "original": { + "owner": "GNOME", + "ref": "46.1", + "repo": "gnome-shell", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -376,6 +539,27 @@ "type": "github" } }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715930644, + "narHash": "sha256-W9pyM3/vePxrffHtzlJI6lDS3seANQ+Nqp+i58O46LI=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "e3ad5108f54177e6520535768ddbf1e6af54b59d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, "hyprcursor": { "inputs": { "hyprlang": [ @@ -834,6 +1018,22 @@ "type": "github" } }, + "nixpkgs_21": { + "locked": { + "lastModified": 1714912032, + "narHash": "sha256-clkcOIkg8G4xuJh+1onLG4HPMpbtzdLv4rHxFzgsH9c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ee4a6e0f566fe5ec79968c57a9c2c3c25f2cf41d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_3": { "locked": { "lastModified": 1720031269, @@ -1115,7 +1315,8 @@ "oxishut": "oxishut", "reset": "reset", "reset-plugins": "reset-plugins", - "sops-nix": "sops-nix" + "sops-nix": "sops-nix", + "stylix": "stylix" } }, "rust-overlay": { @@ -1273,6 +1474,34 @@ "type": "github" } }, + "stylix": { + "inputs": { + "base16": "base16", + "base16-fish": "base16-fish", + "base16-foot": "base16-foot", + "base16-helix": "base16-helix", + "base16-kitty": "base16-kitty", + "base16-tmux": "base16-tmux", + "base16-vim": "base16-vim", + "flake-compat": "flake-compat", + "gnome-shell": "gnome-shell", + "home-manager": "home-manager_2", + "nixpkgs": "nixpkgs_21" + }, + "locked": { + "lastModified": 1719525570, + "narHash": "sha256-xSO/H67GAHEW0siD2PHoO/e97MbROL3r3s5SpF6A6Dc=", + "owner": "danth", + "repo": "stylix", + "rev": "1ff9d37d27377bfe8994c24a8d6c6c1734ffa116", + "type": "github" + }, + "original": { + "owner": "danth", + "repo": "stylix", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1689347949, diff --git a/nix/flake.nix b/nix/flake.nix index ff67740..9a91ee0 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -28,6 +28,8 @@ url = "github:JakeStanger/ironbar"; }; + stylix.url = "github:danth/stylix"; + anyrun.url = "github:Kirottu/anyrun"; oxicalc.url = "github:DashieTM/OxiCalc"; oxishut.url = "github:DashieTM/OxiShut"; @@ -71,11 +73,11 @@ inherit inputs pkgs mod; }; modules = [ - mod - inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix ./base/default.nix ./programs + mod ] ++ inputs.nixpkgs.lib.optional (builtins.pathExists ./hardware/${name}/${name}.nix) ./hardware/${name}/${name}.nix ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; }; diff --git a/nix/modules/conf.nix b/nix/modules/conf.nix index 227f805..a3da21e 100644 --- a/nix/modules/conf.nix +++ b/nix/modules/conf.nix @@ -147,6 +147,38 @@ ''; }; }; + + colorscheme = lib.mkOption { + default = { + base00 = "1A1B26"; + # base01 = "16161E"; + # base01 = "15161e"; + base01 = "191a25"; + base02 = "2F3549"; + base03 = "444B6A"; + base04 = "787C99"; + base05 = "A9B1D6"; + base06 = "CBCCD1"; + base07 = "D5D6DB"; + base08 = "C0CAF5"; + base09 = "A9B1D6"; + base0A = "0DB9D7"; + base0B = "9ECE6A"; + base0C = "B4F9F8"; + # base0D = "2AC3DE"; + # base0D = "A9B1D6"; + # base0D = "62A0EA"; + # base0D = "779EF1"; + base0D = "366fea"; + base0E = "BB9AF7"; + base0F = "F7768E"; + }; + example = { base00 = "FFFFFF"; }; + type = with lib.types; attrs; + description = '' + Base16 colorscheme. + ''; + }; }; config = { diff --git a/nix/programs/common.nix b/nix/programs/common.nix index 5061c43..5b4f35c 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -98,15 +98,15 @@ in [Context] filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0 ''; - - dconf.settings = { - "org/gnome/desktop/interface" = { - gtk-theme = "adw-gtk3"; - cursor-theme = "Bibata-Modern-Classic"; - cursor-size = 24; - icon-theme = "MoreWaita"; - }; - }; + # + # dconf.settings = { + # "org/gnome/desktop/interface" = { + # gtk-theme = "adw-gtk3"; + # cursor-theme = "Bibata-Modern-Classic"; + # cursor-size = 24; + # icon-theme = "MoreWaita"; + # }; + # }; programs.nix-index = { diff --git a/nix/programs/hyprland/config.nix b/nix/programs/hyprland/config.nix index b9881fb..6dd74d5 100644 --- a/nix/programs/hyprland/config.nix +++ b/nix/programs/hyprland/config.nix @@ -1,4 +1,5 @@ { config +, lib , ... }: { @@ -121,8 +122,8 @@ general = { gaps_out = "3,5,5,5"; border_size = 3; - "col.active_border" = "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; - "col.inactive_border" = "0x66333333"; + "col.active_border" = lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; + # "col.inactive_border" = "0x66333333"; allow_tearing = true; }; diff --git a/nix/programs/individual_configs/kitty.nix b/nix/programs/individual_configs/kitty.nix index 60ef324..838edfc 100644 --- a/nix/programs/individual_configs/kitty.nix +++ b/nix/programs/individual_configs/kitty.nix @@ -1,11 +1,11 @@ -{ +{ lib, ... }: { programs.kitty = { enable = true; settings = { enable_audio_bell = "no"; window_alert_on_bell = "no"; - background_opacity = "0.8"; + background_opacity = lib.mkForce "0.8"; cursor_blink_interval = "0"; window_padding_width = "1"; shell_integration = "yes"; @@ -16,44 +16,44 @@ italic_font = "JetBrainsMono Nerd Font Mono Extra Italic"; bold_italic_font = "JetBrainsMono Nerd Font Mono Extra Bold Italic"; - background = "#1a1b25"; - foreground = "#c5c8c6"; + background = lib.mkForce "#1a1b25"; + # foreground = "#c5c8c6"; + # + # selection_background = "#b2ceee"; + # selection_foreground = "#080808"; + # + # url_color = "#73daca"; + # cursor = "#c0caf5"; + # cursor_text_color = "#1a1b25"; + # + # active_tab_background = "#7aa2f7"; + # active_tab_foreground = "#16161e"; + # inactive_tab_background = "#292e42"; + # inactive_tab_foreground = "#545c7e"; + # + # active_border_color = "#7aa2f7"; + # inactive_border_color = "#292e42"; - selection_background = "#b2ceee"; - selection_foreground = "#080808"; - - url_color = "#73daca"; - cursor = "#c0caf5"; - cursor_text_color = "#1a1b25"; - - active_tab_background = "#7aa2f7"; - active_tab_foreground = "#16161e"; - inactive_tab_background = "#292e42"; - inactive_tab_foreground = "#545c7e"; - - active_border_color = "#7aa2f7"; - inactive_border_color = "#292e42"; - - color0 = "#15161e"; - color1 = "#c94448"; - color2 = "#9ece6a"; - color3 = "#e0af68"; - color4 = "#7aa2f7"; - color5 = "#bb9af7"; - color6 = "#7dcfff"; - color7 = "#a9b1d6"; - - color8 = "#414868"; - color9 = "#f2201f"; - color10 = "#9ece6a"; - color11 = "#e0af68"; - color12 = "#7aa2f7"; - color13 = "#bb9af7"; - color14 = "#7dcfff"; - color15 = "#c0caf5"; - - color16 = "#ff9e64"; - color17 = "#db4b4b"; + # color0 = "#15161e"; + # color1 = "#c94448"; + # color2 = "#9ece6a"; + # color3 = "#e0af68"; + # color4 = "#7aa2f7"; + # color5 = "#bb9af7"; + # color6 = "#7dcfff"; + # color7 = "#a9b1d6"; + # + # color8 = "#414868"; + # color9 = "#f2201f"; + # color10 = "#9ece6a"; + # color11 = "#e0af68"; + # color12 = "#7aa2f7"; + # color13 = "#bb9af7"; + # color14 = "#7dcfff"; + # color15 = "#c0caf5"; + # + # color16 = "#ff9e64"; + # color17 = "#db4b4b"; shell = "fish"; }; diff --git a/nix/programs/individual_configs/yazi.nix b/nix/programs/individual_configs/yazi.nix index 486c94a..b04a7a7 100644 --- a/nix/programs/individual_configs/yazi.nix +++ b/nix/programs/individual_configs/yazi.nix @@ -1250,236 +1250,236 @@ } ]; }; - 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"; - } - ]; - }; - }; + # 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/nix/programs/themes/default.nix b/nix/programs/themes/default.nix index 9236af2..331246a 100644 --- a/nix/programs/themes/default.nix +++ b/nix/programs/themes/default.nix @@ -1,8 +1,9 @@ { imports = [ ./qt.nix - ./gtk3.nix - ./gtk4.nix + ./stylix.nix + # ./gtk3.nix + # ./gtk4.nix ]; } diff --git a/nix/programs/themes/qt.nix b/nix/programs/themes/qt.nix index 5a36969..2c394fe 100644 --- a/nix/programs/themes/qt.nix +++ b/nix/programs/themes/qt.nix @@ -1,11 +1,15 @@ { config, ... }: let username = config.conf.username; + scheme = config.conf.colorscheme; + # active_colors=#ffc0caf5, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5 + # disabled_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d + # inactive_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d color = '' [ColorScheme] - active_colors=#ffc0caf5, #ff1a1b26, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5 - disabled_colors=#ff6d728d, #ff1a1b26, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d - inactive_colors=#ff6d728d, #ff1a1b26, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d + active_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} + disabled_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} + inactive_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} ''; qss = '' QTabBar::tab:selected { diff --git a/nix/programs/themes/stylix.nix b/nix/programs/themes/stylix.nix new file mode 100644 index 0000000..3e2860d --- /dev/null +++ b/nix/programs/themes/stylix.nix @@ -0,0 +1,38 @@ +{ pkgs, config, ... }: { + stylix = { + enable = true; + image = /home/${config.conf.username}/Pictures/backgrounds/shinobu_2k.jpg; + polarity = "dark"; + + fonts = { + serif = { + package = pkgs.dejavu_fonts; + name = "DejaVu Serif"; + }; + + sansSerif = { + package = pkgs.dejavu_fonts; + name = "DejaVu Sans"; + }; + + monospace = { + package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; }); + # name = "JetBrains Mono Nerd"; + name = "JetBrainsMono Nerd Font Mono"; + }; + + emoji = { + package = pkgs.noto-fonts-emoji; + name = "Noto Color Emoji"; + }; + }; + + cursor = { + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; + size = 24; + }; + + base16Scheme = config.conf.colorscheme; + }; +} From 8e9ee08e09f4351e302421bd53da77691736d0ac Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 11 Jul 2024 18:20:05 +0200 Subject: [PATCH 029/330] Modularize hardware config --- nix/base/common_hardware.nix | 11 +++++++++- nix/hardware/marmo/marmo.nix | 23 -------------------- nix/hardware/overheating/configuration.nix | 7 ------ nix/hardware/overheating/overheating.nix | 25 +++++++--------------- nix/hardware/spaceship/spaceship.nix | 23 ++------------------ nix/modules/conf.nix | 10 +++++++++ 6 files changed, 30 insertions(+), 69 deletions(-) delete mode 100644 nix/hardware/marmo/marmo.nix diff --git a/nix/base/common_hardware.nix b/nix/base/common_hardware.nix index ac4e20e..e64801b 100644 --- a/nix/base/common_hardware.nix +++ b/nix/base/common_hardware.nix @@ -1,8 +1,11 @@ -{ pkgs, config, ... }: +{ pkgs, config, lib, modulesPath, ... }: let username = config.conf.username; in { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; @@ -115,4 +118,10 @@ in swapDevices = [{ device = "/dev/disk/by-label/SWAP"; }]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + services.fstrim.enable = lib.mkDefault true; + nix.settings.auto-optimise-store = true; + networking.useDHCP = lib.mkDefault true; } diff --git a/nix/hardware/marmo/marmo.nix b/nix/hardware/marmo/marmo.nix deleted file mode 100644 index 3969c18..0000000 --- a/nix/hardware/marmo/marmo.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, lib, modulesPath, ... }: -{ - imports = - [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; - - boot.initrd.kernelModules = [ ]; - boot.extraModulePackages = [ ]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp15s0.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp16s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - services.fstrim.enable = lib.mkDefault true; - nix.settings.auto-optimise-store = true; -} diff --git a/nix/hardware/overheating/configuration.nix b/nix/hardware/overheating/configuration.nix index bbfa866..941b63e 100644 --- a/nix/hardware/overheating/configuration.nix +++ b/nix/hardware/overheating/configuration.nix @@ -1,8 +1,6 @@ { imports = [ ../../modules/conf.nix - ./dsdt.nix - ./firmware.nix ]; conf = { monitor = "eDP-1"; @@ -24,9 +22,4 @@ }; }; - hardware.bluetooth.enable = true; - hardware.bluetooth.powerOnBoot = true; - - # for hyprdock - services.acpid.enable = true; } diff --git a/nix/hardware/overheating/overheating.nix b/nix/hardware/overheating/overheating.nix index e30f979..0ca9ea1 100644 --- a/nix/hardware/overheating/overheating.nix +++ b/nix/hardware/overheating/overheating.nix @@ -1,24 +1,15 @@ -{ config, lib, modulesPath, ... }: { imports = [ - (modulesPath + "/installer/scan/not-detected.nix") + ./dsdt.nix + ./firmware.nix ]; - - boot.initrd.kernelModules = [ ]; + # special hardware modules + # TODO: needed? boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp15s0.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp16s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - services.fstrim.enable = lib.mkDefault true; - nix.settings.auto-optimise-store = true; + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + # for hyprdock + services.acpid.enable = true; } diff --git a/nix/hardware/spaceship/spaceship.nix b/nix/hardware/spaceship/spaceship.nix index 62f5ee2..191def7 100644 --- a/nix/hardware/spaceship/spaceship.nix +++ b/nix/hardware/spaceship/spaceship.nix @@ -1,13 +1,7 @@ -{ pkgs, config, lib, modulesPath, ... }: +{ pkgs, lib, ... }: { - imports = - [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; - - boot.initrd.kernelModules = [ ]; +# TODO: needed? boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; fileSystems."/drive2" = { @@ -20,19 +14,6 @@ ]; }; - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp15s0.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp16s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - services.fstrim.enable = lib.mkDefault true; - nix.settings.auto-optimise-store = true; - virtualisation.virtualbox.host.enable = true; # enable hardware acceleration and rocm diff --git a/nix/modules/conf.nix b/nix/modules/conf.nix index a3da21e..ded538b 100644 --- a/nix/modules/conf.nix +++ b/nix/modules/conf.nix @@ -1,5 +1,15 @@ { lib, config, pkgs, ... }: { options.conf = { + cpu = lib.mkOption { + # TODO: how to enable arm? + default = "amd"; + type = with lib.types; (enum [ "amd" "intel" ]); + example = "intel"; + description = '' + cpu microcode. + ''; + }; + monitor = lib.mkOption { default = ""; example = "eDP-1"; From 9109a98e9bb661dfbd46d7b547c6bbb3c0a1def5 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 11 Jul 2024 22:26:57 +0200 Subject: [PATCH 030/330] themes: Allow yaml paths --- nix/base/common_hardware.nix | 2 +- nix/base/login_manager.nix | 3 +- nix/flake.lock | 43 +++++- nix/flake.nix | 32 +--- nix/hardware/overheating/configuration.nix | 1 + nix/lib/default.nix | 22 +++ nix/modules/conf.nix | 19 ++- nix/override/default.nix | 4 - nix/override/ncspot.nix | 77 ---------- nix/programs/individual_configs/default.nix | 1 - nix/programs/media.nix | 1 - nix/programs/themes/gtk3.nix | 103 ------------- nix/programs/themes/gtk4.nix | 109 -------------- nix/programs/themes/kvantum.nix | 154 -------------------- nix/programs/themes/qt.nix | 7 +- nix/programs/themes/stylix.nix | 6 +- 16 files changed, 95 insertions(+), 489 deletions(-) create mode 100644 nix/lib/default.nix delete mode 100644 nix/override/default.nix delete mode 100644 nix/override/ncspot.nix delete mode 100644 nix/programs/themes/gtk3.nix delete mode 100644 nix/programs/themes/gtk4.nix delete mode 100644 nix/programs/themes/kvantum.nix diff --git a/nix/base/common_hardware.nix b/nix/base/common_hardware.nix index e64801b..61d88c6 100644 --- a/nix/base/common_hardware.nix +++ b/nix/base/common_hardware.nix @@ -119,7 +119,7 @@ in swapDevices = [{ device = "/dev/disk/by-label/SWAP"; }]; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + nixpkgs.hostPlatform = lib.mkDefault config.conf.system; hardware.cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; services.fstrim.enable = lib.mkDefault true; nix.settings.auto-optimise-store = true; diff --git a/nix/base/login_manager.nix b/nix/base/login_manager.nix index 6d7ab14..1ea4ab6 100644 --- a/nix/base/login_manager.nix +++ b/nix/base/login_manager.nix @@ -1,12 +1,13 @@ { lib , config , pkgs +, inputs , ... }: let username = config.conf.username; session = { - command = "${lib.getExe pkgs.hyprland} --config /etc/greetd/hyprgreet.conf"; + command = "${lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland} --config /etc/greetd/hyprgreet.conf"; user = username; }; in diff --git a/nix/flake.lock b/nix/flake.lock index 7969627..9356cfb 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -25,11 +25,11 @@ "fromYaml": "fromYaml" }, "locked": { - "lastModified": 1708890466, - "narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=", + "lastModified": 1709025227, + "narHash": "sha256-KXcORItjYJTdEO/BlBd0Uym1Xa3eBu43uvpFiWjJOdY=", "owner": "SenchoPens", "repo": "base16.nix", - "rev": "665b3c6748534eb766c777298721cece9453fdae", + "rev": "4e9b16c8b44958bc6bf46d99c3bb1b59c9c9c764", "type": "github" }, "original": { @@ -134,6 +134,24 @@ "type": "github" } }, + "base16_2": { + "inputs": { + "fromYaml": "fromYaml_2" + }, + "locked": { + "lastModified": 1708890466, + "narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "665b3c6748534eb766c777298721cece9453fdae", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, "crane": { "inputs": { "nixpkgs": [ @@ -502,6 +520,22 @@ "type": "github" } }, + "fromYaml_2": { + "flake": false, + "locked": { + "lastModified": 1689549921, + "narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, "gnome-shell": { "flake": false, "locked": { @@ -1301,6 +1335,7 @@ "root": { "inputs": { "anyrun": "anyrun", + "base16": "base16", "home-manager": "home-manager", "hyprdock": "hyprdock", "hyprland": "hyprland", @@ -1476,7 +1511,7 @@ }, "stylix": { "inputs": { - "base16": "base16", + "base16": "base16_2", "base16-fish": "base16-fish", "base16-foot": "base16-foot", "base16-helix": "base16-helix", diff --git a/nix/flake.nix b/nix/flake.nix index 9a91ee0..194c042 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -29,6 +29,7 @@ }; stylix.url = "github:danth/stylix"; + base16.url = "github:SenchoPens/base16.nix"; anyrun.url = "github:Kirottu/anyrun"; oxicalc.url = "github:DashieTM/OxiCalc"; @@ -39,6 +40,7 @@ hyprdock.url = "github:DashieTM/hyprdock"; reset.url = "github:Xetibo/ReSet"; reset-plugins.url = "github:Xetibo/ReSet-Plugins"; + }; outputs = { ... }@inputs: @@ -47,41 +49,15 @@ system = "x86_64-linux"; overlays = [ inputs.nur.overlay - # DUDE FOR FUCK SAKE - # https://github.com/NixOS/nixpkgs/pull/325825 .... - # fucking fun - # TODO: https://github.com/NixOS/nixpkgs/pull/325825 .... - (_: prev: { - python312 = prev.python312.override { packageOverrides = _: pysuper: { nose = pysuper.pynose; }; }; - }) ]; config = { allowUnfree = true; }; }; + dashielib = import ./lib { inherit inputs pkgs; }; in { - nixosConfigurations = (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/default.nix - ./programs - mod - ] ++ inputs.nixpkgs.lib.optional (builtins.pathExists ./hardware/${name}/${name}.nix) ./hardware/${name}/${name}.nix - ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; - }; - }) [ "marmo" "overheating" "spaceship" ])); + nixosConfigurations = (dashielib.build_systems [ "marmo" "overheating" "spaceship" ]); }; nixConfig = { diff --git a/nix/hardware/overheating/configuration.nix b/nix/hardware/overheating/configuration.nix index 941b63e..c06e2af 100644 --- a/nix/hardware/overheating/configuration.nix +++ b/nix/hardware/overheating/configuration.nix @@ -20,6 +20,7 @@ ]; extra_autostart = [ "hyprdock --server" ]; }; + colorscheme = "catppuccin-mocha"; }; } diff --git a/nix/lib/default.nix b/nix/lib/default.nix new file mode 100644 index 0000000..91b3acc --- /dev/null +++ b/nix/lib/default.nix @@ -0,0 +1,22 @@ +{ inputs, pkgs, ... }: { + 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 + ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; + }; + } )systems); +} diff --git a/nix/modules/conf.nix b/nix/modules/conf.nix index ded538b..6a59abf 100644 --- a/nix/modules/conf.nix +++ b/nix/modules/conf.nix @@ -1,5 +1,16 @@ { lib, config, pkgs, ... }: { options.conf = { + + system = lib.mkOption { + default = "x86_64-linux"; + # no fisherprice unix support + type = with lib.types; (enum [ "x86_64-linux" "aarch64-linux" "aarch64-linux-android" ]); + example = "aarch64-linux"; + description = '' + System architecture. + ''; + }; + cpu = lib.mkOption { # TODO: how to enable arm? default = "amd"; @@ -160,6 +171,7 @@ colorscheme = lib.mkOption { default = { + # custom tokyo night base00 = "1A1B26"; # base01 = "16161E"; # base01 = "15161e"; @@ -183,10 +195,13 @@ base0E = "BB9AF7"; base0F = "F7768E"; }; - example = { base00 = "FFFFFF"; }; - type = with lib.types; attrs; + example = "catppuccin-mocha"; + type = with lib.types; oneOf [ str attrs path ]; description = '' Base16 colorscheme. + Can be an attribute set with base00 to base0F, + a string that leads to a yaml file in base16-schemes path, + or a path to a custom yaml file. ''; }; }; diff --git a/nix/override/default.nix b/nix/override/default.nix deleted file mode 100644 index b34cd63..0000000 --- a/nix/override/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -#{pkgs, ...}:{ -# hello = pkgs.callPackage ./ncspot.nix; -#} -{ } diff --git a/nix/override/ncspot.nix b/nix/override/ncspot.nix deleted file mode 100644 index 837a7ed..0000000 --- a/nix/override/ncspot.nix +++ /dev/null @@ -1,77 +0,0 @@ -{ pkgs -, stdenv -, lib -, fetchFromGitHub -, rustPlatform -, withALSA ? false -, withClipboard ? true -, withCover ? false -, withPulseAudio ? true -, withPortAudio ? false -, withMPRIS ? true -, withNotify ? true -, withCross ? true -, nix-update-script -, testers -, ncspot -}: - -rustPlatform.buildRustPackage rec { - pname = "ncspot"; - version = "1.1.0"; - - src = fetchFromGitHub { - owner = "hrkfdn"; - repo = "ncspot"; - rev = "v${version}"; - hash = "sha256-RgA3jV/vD6qgIVQCZ0Sm+9CST4SlqN4MUurVM3nIdh0="; - }; - - cargoHash = "sha256-8ZUgm1O4NmZpxgNRKnh1MNhiFNoBWQHo22kyP3hWJwI="; - - nativeBuildInputs = [ pkgs.pkg-config ] - ++ lib.optional withClipboard pkgs.python3; - - buildInputs = [ pkgs.ncurses ] - ++ lib.optional stdenv.isLinux pkgs.openssl - ++ lib.optional withALSA pkgs.alsa-lib - ++ lib.optional withClipboard pkgs.xorg.libxcb - ++ lib.optional withCover pkgs.ueberzug - ++ lib.optional withPulseAudio pkgs.libpulseaudio - ++ lib.optional withPortAudio pkgs.portaudio - ++ lib.optional (withMPRIS || withNotify) pkgs.dbus - ++ lib.optional stdenv.isDarwin pkgs.Cocoa; - - env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-DNCURSES_UNCTRL_H_incl"; - - buildNoDefaultFeatures = true; - - buildFeatures = [ "cursive/pancurses-backend" ] - ++ lib.optional withALSA "alsa_backend" - ++ lib.optional withClipboard "share_clipboard" - ++ lib.optional withCover "cover" - ++ lib.optional withPulseAudio "pulseaudio_backend" - ++ lib.optional withPortAudio "portaudio_backend" - ++ lib.optional withMPRIS "mpris" - ++ lib.optional withCross "crossterm_backend" - ++ lib.optional withNotify "notify"; - - postInstall = '' - install -D --mode=444 $src/misc/ncspot.desktop $out/share/applications/${pname}.desktop - install -D --mode=444 $src/images/logo.svg $out/share/icons/hicolor/scalable/apps/${pname}.png - ''; - - passthru = { - updateScript = nix-update-script { }; - tests.version = testers.testVersion { package = ncspot; }; - }; - - meta = with lib; { - description = "Cross-platform ncurses Spotify client written in Rust, inspired by ncmpc and the likes"; - homepage = "https://github.com/hrkfdn/ncspot"; - changelog = "https://github.com/hrkfdn/ncspot/releases/tag/v${version}"; - license = licenses.bsd2; - maintainers = with maintainers; [ marsam liff ]; - mainProgram = "ncspot"; - }; -} diff --git a/nix/programs/individual_configs/default.nix b/nix/programs/individual_configs/default.nix index 1e4e895..f705a7b 100644 --- a/nix/programs/individual_configs/default.nix +++ b/nix/programs/individual_configs/default.nix @@ -3,7 +3,6 @@ ./kitty.nix ./yazi.nix ./fish.nix - ./ncspot.nix ./ssh.nix ./direnv.nix ./git.nix diff --git a/nix/programs/media.nix b/nix/programs/media.nix index 409e0b7..cf205c6 100644 --- a/nix/programs/media.nix +++ b/nix/programs/media.nix @@ -19,7 +19,6 @@ pdfpc polylux2pdfpc # spotify - #ncspot # video editing kdenlive # image creation diff --git a/nix/programs/themes/gtk3.nix b/nix/programs/themes/gtk3.nix deleted file mode 100644 index f19c2d0..0000000 --- a/nix/programs/themes/gtk3.nix +++ /dev/null @@ -1,103 +0,0 @@ -{ - xdg.configFile."gtk-3.0/gtk.css" = { - text = - '' - /* - Generated with Gradience - - Issues caused by theming should be reported to Gradience repository, and not to upstream - - https://github.com/GradienceTeam/Gradience - */ - - @define-color accent_color #a9b1d6; - @define-color accent_bg_color #a9b1d6; - @define-color accent_fg_color rgba(0, 0, 0, 0.87); - @define-color destructive_color #F28B82; - @define-color destructive_bg_color #F28B82; - @define-color destructive_fg_color rgba(0, 0, 0, 0.87); - @define-color success_color #81C995; - @define-color success_bg_color #81C995; - @define-color success_fg_color rgba(0, 0, 0, 0.87); - @define-color warning_color #FDD633; - @define-color warning_bg_color #FDD633; - @define-color warning_fg_color rgba(0, 0, 0, 0.87); - @define-color error_color #F28B82; - @define-color error_bg_color #F28B82; - @define-color error_fg_color rgba(0, 0, 0, 0.87); - @define-color window_bg_color #1a1b26; - @define-color window_fg_color #c0caf5; - @define-color view_bg_color #1a1b26; - @define-color view_fg_color #c0caf5; - @define-color headerbar_bg_color #1a1b26; - @define-color headerbar_fg_color #c0caf5; - @define-color headerbar_border_color rgba(192, 202, 245, 0.12); - @define-color headerbar_backdrop_color @window_bg_color; - @define-color headerbar_shade_color rgba(0, 0, 0, 0.36); - @define-color card_bg_color #1a1b26; - @define-color card_fg_color #c0caf5; - @define-color card_shade_color rgba(0, 0, 0, 0.36); - @define-color dialog_bg_color #1a1b26; - @define-color dialog_fg_color #c0caf5; - @define-color popover_bg_color #1a1b26; - @define-color popover_fg_color #c0caf5; - @define-color shade_color rgba(0, 0, 0, 0.36); - @define-color scrollbar_outline_color rgba(0, 0, 0, 0.5); - @define-color secondary_sidebar_backdrop_color #1a1b26; - @define-color secondary_sidebar_shade_color rgba(0,0,0,0.5); - @define-color sidebar_backdrop_color #1a1b26; - @define-color sidebar_shade_color rgba(0,0,0,0.5); - @define-color sidebar_bg_color #1a1b26; - @define-color sidebar_fg_color #c0caf5; - @define-color secondary_sidebar_bg_color #1a1b26; - @define-color secondary_sidebar_fg_color #c0caf5; - @define-color thumbnail_bg_color #1a1b26; - @define-color thumbnail_fg_color #c0caf5; - @define-color blue_1 #99c1f1; - @define-color blue_2 #62a0ea; - @define-color blue_3 #3584e4; - @define-color blue_4 #1c71d8; - @define-color blue_5 #1a5fb4; - @define-color green_1 #8ff0a4; - @define-color green_2 #57e389; - @define-color green_3 #33d17a; - @define-color green_4 #2ec27e; - @define-color green_5 #26a269; - @define-color yellow_1 #f9f06b; - @define-color yellow_2 #f8e45c; - @define-color yellow_3 #f6d32d; - @define-color yellow_4 #f5c211; - @define-color yellow_5 #e5a50a; - @define-color orange_1 #ffbe6f; - @define-color orange_2 #ffa348; - @define-color orange_3 #ff7800; - @define-color orange_4 #e66100; - @define-color orange_5 #c64600; - @define-color red_1 #f66151; - @define-color red_2 #ed333b; - @define-color red_3 #e01b24; - @define-color red_4 #c01c28; - @define-color red_5 #a51d2d; - @define-color purple_1 #dc8add; - @define-color purple_2 #c061cb; - @define-color purple_3 #9141ac; - @define-color purple_4 #813d9c; - @define-color purple_5 #613583; - @define-color brown_1 #cdab8f; - @define-color brown_2 #b5835a; - @define-color brown_3 #986a44; - @define-color brown_4 #865e3c; - @define-color brown_5 #63452c; - @define-color light_1 #ffffff; - @define-color light_2 #f6f5f4; - @define-color light_3 #deddda; - @define-color light_4 #c0bfbc; - @define-color light_5 #9a9996; - @define-color dark_1 #77767b; - @define-color dark_2 #5e5c64; - @define-color dark_3 #3d3846; - @define-color dark_4 #241f31; - @define-color dark_5 #000000; - ''; - }; -} diff --git a/nix/programs/themes/gtk4.nix b/nix/programs/themes/gtk4.nix deleted file mode 100644 index e9caa0a..0000000 --- a/nix/programs/themes/gtk4.nix +++ /dev/null @@ -1,109 +0,0 @@ -{ - # TODO: reenable this again - # right now its broken because flatpak... - xdg.configFile."gtk-4.0/gtk.css" = { - text = - '' - /* - Generated with Gradience - - Issues caused by theming should be reported to Gradience repository, and not to upstream - - https://github.com/GradienceTeam/Gradience - */ - - @define-color accent_color #a9b1d6; - @define-color accent_bg_color #a9b1d6; - @define-color accent_fg_color rgba(0, 0, 0, 0.87); - @define-color destructive_color #F28B82; - @define-color destructive_bg_color #F28B82; - @define-color destructive_fg_color rgba(0, 0, 0, 0.87); - @define-color success_color #81C995; - @define-color success_bg_color #81C995; - @define-color success_fg_color rgba(0, 0, 0, 0.87); - @define-color warning_color #FDD633; - @define-color warning_bg_color #FDD633; - @define-color warning_fg_color rgba(0, 0, 0, 0.87); - @define-color error_color #F28B82; - @define-color error_bg_color #F28B82; - @define-color error_fg_color rgba(0, 0, 0, 0.87); - @define-color window_bg_color #1a1b26; - @define-color window_fg_color #c0caf5; - @define-color view_bg_color #1a1b26; - @define-color view_fg_color #c0caf5; - @define-color headerbar_bg_color #1a1b26; - @define-color headerbar_fg_color #c0caf5; - @define-color headerbar_border_color rgba(192, 202, 245, 0.12); - @define-color headerbar_backdrop_color @window_bg_color; - @define-color headerbar_shade_color rgba(0, 0, 0, 0.36); - @define-color card_bg_color #1a1b26; - @define-color card_fg_color #c0caf5; - @define-color card_shade_color rgba(0, 0, 0, 0.36); - @define-color dialog_bg_color #1a1b26; - @define-color dialog_fg_color #c0caf5; - @define-color popover_bg_color #1a1b26; - @define-color popover_fg_color #c0caf5; - @define-color shade_color rgba(0, 0, 0, 0.36); - @define-color scrollbar_outline_color rgba(0, 0, 0, 0.5); - @define-color sidebar_bg_color #1a1b26; - @define-color sidebar_fg_color #c0caf5; - @define-color secondary_sidebar_bg_color #1a1b26; - @define-color secondary_sidebar_fg_color #c0caf5; - @define-color sidebar_shade_color rgba(0, 0, 0, 0.36); - @define-color secondary_sidebar_shade_color rgba(0, 0, 0, 0.36); - @define-color thumbnail_bg_color #1a1b26; - @define-color thumbnail_fg_color #c0caf5; - @define-color sidebar_backdrop_color @sidebar_bg_color; - @define-color secondary_sidebar_backdrop_color @sidebar_bg_color; - @define-color blue_1 #99c1f1; - @define-color blue_2 #62a0ea; - @define-color blue_3 #3584e4; - @define-color blue_4 #1c71d8; - @define-color blue_5 #1a5fb4; - @define-color green_1 #8ff0a4; - @define-color green_2 #57e389; - @define-color green_3 #33d17a; - @define-color green_4 #2ec27e; - @define-color green_5 #26a269; - @define-color yellow_1 #f9f06b; - @define-color yellow_2 #f8e45c; - @define-color yellow_3 #f6d32d; - @define-color yellow_4 #f5c211; - @define-color yellow_5 #e5a50a; - @define-color orange_1 #ffbe6f; - @define-color orange_2 #ffa348; - @define-color orange_3 #ff7800; - @define-color orange_4 #e66100; - @define-color orange_5 #c64600; - @define-color red_1 #f66151; - @define-color red_2 #ed333b; - @define-color red_3 #e01b24; - @define-color red_4 #c01c28; - @define-color red_5 #a51d2d; - @define-color purple_1 #dc8add; - @define-color purple_2 #c061cb; - @define-color purple_3 #9141ac; - @define-color purple_4 #813d9c; - @define-color purple_5 #613583; - @define-color brown_1 #cdab8f; - @define-color brown_2 #b5835a; - @define-color brown_3 #986a44; - @define-color brown_4 #865e3c; - @define-color brown_5 #63452c; - @define-color light_1 #ffffff; - @define-color light_2 #f6f5f4; - @define-color light_3 #deddda; - @define-color light_4 #c0bfbc; - @define-color light_5 #9a9996; - @define-color dark_1 #77767b; - @define-color dark_2 #5e5c64; - @define-color dark_3 #3d3846; - @define-color dark_4 #241f31; - @define-color dark_5 #000000; - - .navigation-sidebar { - background-color: #1a1b26; - } - ''; - }; -} diff --git a/nix/programs/themes/kvantum.nix b/nix/programs/themes/kvantum.nix deleted file mode 100644 index 233def3..0000000 --- a/nix/programs/themes/kvantum.nix +++ /dev/null @@ -1,154 +0,0 @@ -{ - xdg.configFile."kvantum/colors/tokyonight.colors" = { - text = - '' - [ColorEffects:Disabled] - Color=56,56,56 - ColorAmount=0.15000000000000002 - ColorEffect=2 - ContrastAmount=0.8 - ContrastEffect=1 - IntensityAmount=-1 - IntensityEffect=2 - - [ColorEffects:Inactive] - ChangeSelectionColor=true - Color=112,111,110 - ColorAmount=0.025 - ColorEffect=2 - ContrastAmount=0.1 - ContrastEffect=2 - Enable=false - IntensityAmount=0 - IntensityEffect=0 - - [Colors:Button] - BackgroundAlternate=157,221,203 - BackgroundNormal=44,45,55 - DecorationFocus=164,185,239 - DecorationHover=164,185,239 - ForegroundActive=164,185,239 - ForegroundInactive=120,124,153 - ForegroundLink=164,185,239 - ForegroundNegative=226,140,140 - ForegroundNeutral=247,193,150 - ForegroundNormal=215,218,224 - ForegroundPositive=179,225,163 - ForegroundVisited=173,142,230 - - [Colors:Complementary] - BackgroundAlternate=157,221,203 - BackgroundNormal=30,30,41 - DecorationFocus=164,185,239 - DecorationHover=164,185,239 - ForegroundActive=164,185,239 - ForegroundInactive=110,108,124 - ForegroundLink=164,185,239 - ForegroundNegative=226,140,140 - ForegroundNeutral=247,193,150 - ForegroundNormal=215,218,224 - ForegroundPositive=179,225,163 - ForegroundVisited=198,170,232 - - [Colors:Header] - BackgroundAlternate=30,30,41 - BackgroundNormal=30,30,41 - DecorationFocus=164,185,239 - DecorationHover=164,185,239 - ForegroundActive=164,185,239 - ForegroundInactive=110,108,124 - ForegroundLink=164,185,239 - ForegroundNegative=226,140,140 - ForegroundNeutral=247,193,150 - ForegroundNormal=215,218,224 - ForegroundPositive=179,225,163 - ForegroundVisited=198,170,232 - - [Colors:Header][Inactive] - BackgroundAlternate=49,54,59 - BackgroundNormal=22,22,29 - DecorationFocus=61,174,233 - DecorationHover=61,174,233 - ForegroundActive=61,174,233 - ForegroundInactive=161,169,177 - ForegroundLink=29,153,243 - ForegroundNegative=218,68,83 - ForegroundNeutral=246,116,0 - ForegroundNormal=252,252,252 - ForegroundPositive=39,174,96 - ForegroundVisited=155,89,182 - - [Colors:Selection] - BackgroundAlternate=157,221,203 - BackgroundNormal=164,187,239 - DecorationFocus=30,30,41 - DecorationHover=30,30,41 - ForegroundActive=21,18,28 - ForegroundInactive=120,124,153 - ForegroundLink=21,18,28 - ForegroundNegative=225,139,139 - ForegroundNeutral=247,193,150 - ForegroundNormal=20,21,30 - ForegroundPositive=179,225,163 - ForegroundVisited=173,142,230 - - [Colors:Tooltip] - BackgroundAlternate=22,22,29 - BackgroundNormal=26,27,38 - DecorationFocus=164,185,239 - DecorationHover=164,185,239 - ForegroundActive=164,185,239 - ForegroundInactive=120,124,153 - ForegroundLink=164,185,239 - ForegroundNegative=226,140,140 - ForegroundNeutral=247,193,150 - ForegroundNormal=215,218,224 - ForegroundPositive=179,225,163 - ForegroundVisited=173,142,230 - - [Colors:View] - BackgroundAlternate=22,22,29 - BackgroundNormal=26,27,38 - DecorationFocus=164,185,239 - DecorationHover=164,185,239 - ForegroundActive=164,185,239 - ForegroundInactive=120,124,153 - ForegroundLink=164,185,239 - ForegroundNegative=226,140,140 - ForegroundNeutral=247,193,150 - ForegroundNormal=215,218,224 - ForegroundPositive=179,225,163 - ForegroundVisited=173,142,230 - - [Colors:Window] - BackgroundAlternate=22,22,29 - BackgroundNormal=26,27,38 - DecorationFocus=164,185,239 - DecorationHover=164,185,239 - ForegroundActive=164,185,239 - ForegroundInactive=120,124,153 - ForegroundLink=164,185,239 - ForegroundNegative=226,140,140 - ForegroundNeutral=247,193,150 - ForegroundNormal=215,218,224 - ForegroundPositive=179,225,163 - ForegroundVisited=173,142,230 - - [General] - ColorScheme=BreezeDark - Name=Tokyo Night - shadeSortColumn=true - - [KDE] - contrast=4 - - [WM] - activeBackground=26,27,38 - activeBlend=215,218,224 - activeForeground=215,218,224 - inactiveBackground=26,27,38 - inactiveBlend=110,108,124 - inactiveForeground=110,108,124 - ''; - }; -} diff --git a/nix/programs/themes/qt.nix b/nix/programs/themes/qt.nix index 2c394fe..5fb1956 100644 --- a/nix/programs/themes/qt.nix +++ b/nix/programs/themes/qt.nix @@ -1,7 +1,10 @@ -{ config, ... }: +{ config, inputs, pkgs, ... }: let username = config.conf.username; - scheme = config.conf.colorscheme; + # at time of using this here, stylix might not be evaluated yet + # hence ensure it is by using base16 mkSchemeAttrs + base16 = pkgs.callPackage inputs.base16.lib { }; + scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); # active_colors=#ffc0caf5, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5 # disabled_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d # inactive_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d diff --git a/nix/programs/themes/stylix.nix b/nix/programs/themes/stylix.nix index 3e2860d..4a210e2 100644 --- a/nix/programs/themes/stylix.nix +++ b/nix/programs/themes/stylix.nix @@ -1,4 +1,5 @@ -{ pkgs, config, ... }: { +{ pkgs, config, ... }: +{ stylix = { enable = true; image = /home/${config.conf.username}/Pictures/backgrounds/shinobu_2k.jpg; @@ -33,6 +34,7 @@ size = 24; }; - base16Scheme = config.conf.colorscheme; + base16Scheme = + (if builtins.isAttrs config.conf.colorscheme then config.conf.colorscheme else "${pkgs.base16-schemes}/share/themes/${config.conf.colorscheme}.yaml"); }; } From fc11a4ed7cff9acd9a3861448312ec59f8491446 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 11 Jul 2024 22:39:23 +0200 Subject: [PATCH 031/330] LSP: move to nixd --- nix/hardware/overheating/configuration.nix | 1 - nix/programs/nvim/default.nix | 2 +- nix/programs/nvim/lua/plugins/lsp.lua | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/nix/hardware/overheating/configuration.nix b/nix/hardware/overheating/configuration.nix index c06e2af..70d4cc7 100644 --- a/nix/hardware/overheating/configuration.nix +++ b/nix/hardware/overheating/configuration.nix @@ -22,5 +22,4 @@ }; colorscheme = "catppuccin-mocha"; }; - } diff --git a/nix/programs/nvim/default.nix b/nix/programs/nvim/default.nix index 2578c5d..c0d15ff 100644 --- a/nix/programs/nvim/default.nix +++ b/nix/programs/nvim/default.nix @@ -9,7 +9,7 @@ lua-language-server stylua # nix - nil + nixd # go gopls # jafuck diff --git a/nix/programs/nvim/lua/plugins/lsp.lua b/nix/programs/nvim/lua/plugins/lsp.lua index a4b277f..984fdd1 100644 --- a/nix/programs/nvim/lua/plugins/lsp.lua +++ b/nix/programs/nvim/lua/plugins/lsp.lua @@ -121,9 +121,9 @@ return { }, mason = false, }, - nil_ls = { + nixd = { settings = { - ["nil"] = { + ["nixd"] = { formatting = { command = { "nixpkgs-fmt" }, }, From cd0bfe5cd5478015519625b6abd6243c1d090699 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 12 Jul 2024 02:34:45 +0200 Subject: [PATCH 032/330] Update lazyvim --- nix/flake.lock | 20 ++++----- nix/flake.nix | 3 ++ nix/hardware/spaceship/configuration.nix | 1 + nix/hardware/spaceship/spaceship.nix | 3 +- nix/programs/coding.nix | 6 ++- nix/programs/individual_configs/kitty.nix | 2 +- nix/programs/nvim/default.nix | 18 ++++---- nix/programs/nvim/flake.lock | 53 +++++++++-------------- nix/programs/nvim/flake.nix | 52 ++++++++++++---------- nix/programs/nvim/lua/plugins/plugins.lua | 8 ---- 10 files changed, 79 insertions(+), 87 deletions(-) diff --git a/nix/flake.lock b/nix/flake.lock index 9356cfb..f87db2b 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -653,11 +653,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1720453602, - "narHash": "sha256-7+PjJZn/jpqNkVKJ3AGVT9G601rVj/R8KkT+WWjhwyk=", + "lastModified": 1720731503, + "narHash": "sha256-Qlm0IRnOrI64RW/SEvW9rA1ytVvPS1CsVvRataNvStI=", "ref": "refs/heads/main", - "rev": "b03f41efec14273cf25c42d4cef326acc36cb319", - "revCount": 4913, + "rev": "e728e56cbc6af0a9be1276b2cf8e019a894016e7", + "revCount": 4917, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -736,11 +736,11 @@ ] }, "locked": { - "lastModified": 1720203444, - "narHash": "sha256-lq2dPPPcwMHTLsFrQ2pRp4c2LwDZWoqzSyjuPdeJCP4=", + "lastModified": 1720545076, + "narHash": "sha256-Pxacc2uoxI00koXp5+CyNqHOTQlqNlK0rlRHDBHX4+g=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "a8c3a135701a7b64db0a88ec353a392f402d2a87", + "rev": "6174a2a25f4e216c0f1d0c4278adc23c476b1d09", "type": "github" }, "original": { @@ -1070,11 +1070,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1720031269, - "narHash": "sha256-rwz8NJZV+387rnWpTYcXaRNvzUSnnF9aHONoJIYmiUQ=", + "lastModified": 1720542800, + "narHash": "sha256-ZgnNHuKV6h2+fQ5LuqnUaqZey1Lqqt5dTUAiAnqH0QQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev": "feb2849fdeb70028c70d73b848214b00d324a497", "type": "github" }, "original": { diff --git a/nix/flake.nix b/nix/flake.nix index 194c042..71d80b6 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -49,6 +49,9 @@ system = "x86_64-linux"; overlays = [ inputs.nur.overlay + (_: prev: { + python312 = prev.python312.override { packageOverrides = _: pysuper: { nose = pysuper.pynose; }; }; + }) ]; config = { allowUnfree = true; diff --git a/nix/hardware/spaceship/configuration.nix b/nix/hardware/spaceship/configuration.nix index 50d7c8b..348eb9f 100644 --- a/nix/hardware/spaceship/configuration.nix +++ b/nix/hardware/spaceship/configuration.nix @@ -58,5 +58,6 @@ in ''; extra_autostart = [ "streamdeck -n" ]; }; + colorscheme = "catppuccin-mocha"; }; } diff --git a/nix/hardware/spaceship/spaceship.nix b/nix/hardware/spaceship/spaceship.nix index 191def7..461e54c 100644 --- a/nix/hardware/spaceship/spaceship.nix +++ b/nix/hardware/spaceship/spaceship.nix @@ -1,7 +1,8 @@ { pkgs, lib, ... }: { -# TODO: needed? + # TODO: needed? boot.kernelModules = [ "kvm-amd" ]; + boot.initrd.kernelModules = [ "amdgpu" ]; fileSystems."/drive2" = { diff --git a/nix/programs/coding.nix b/nix/programs/coding.nix index ff39ce6..e3a9c6c 100644 --- a/nix/programs/coding.nix +++ b/nix/programs/coding.nix @@ -1,9 +1,11 @@ { pkgs +, lib +, config , ... }: { imports = [ - ./nvim/default.nix + (import ./nvim/default.nix { inherit lib pkgs; colorscheme = config.conf.colorscheme; }) ]; home.packages = with pkgs; [ @@ -49,7 +51,7 @@ #haskell haskellPackages.cabal-install - ghc + ghc haskellPackages.haskell-language-server #html diff --git a/nix/programs/individual_configs/kitty.nix b/nix/programs/individual_configs/kitty.nix index 838edfc..301d747 100644 --- a/nix/programs/individual_configs/kitty.nix +++ b/nix/programs/individual_configs/kitty.nix @@ -16,7 +16,7 @@ italic_font = "JetBrainsMono Nerd Font Mono Extra Italic"; bold_italic_font = "JetBrainsMono Nerd Font Mono Extra Bold Italic"; - background = lib.mkForce "#1a1b25"; + # background = lib.mkForce "#1a1b25"; # foreground = "#c5c8c6"; # # selection_background = "#b2ceee"; diff --git a/nix/programs/nvim/default.nix b/nix/programs/nvim/default.nix index c0d15ff..43fdc23 100644 --- a/nix/programs/nvim/default.nix +++ b/nix/programs/nvim/default.nix @@ -1,4 +1,5 @@ -{ lib, pkgs, ... }: +# please nixvim enable lazyloading +{ lib, pkgs, colorscheme, ... }: { programs.neovim = { enable = true; @@ -164,15 +165,17 @@ fallback = true, }, spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + { "LazyVim/LazyVim", + opts = { + ${if colorscheme != "" then "colorscheme = '${colorscheme}'," else ""} + }, + import = "lazyvim.plugins" }, { import = "lazyvim.plugins.extras.ui.alpha" }, { import = "lazyvim.plugins.extras.lang.rust" }, { import = "lazyvim.plugins.extras.lang.tailwind" }, { import = "lazyvim.plugins.extras.lang.java" }, { import = "lazyvim.plugins.extras.lang.go" }, { import = "lazyvim.plugins.extras.lang.clangd" }, - -- { import = "lazyvim.plugins.extras.lang.typescript" }, - -- { import = "lazyvim.plugins.extras.lang.python" }, { import = "lazyvim.plugins.extras.lang.markdown" }, { import = "lazyvim.plugins.extras.lang.cmake" }, { import = "lazyvim.plugins.extras.lang.omnisharp" }, @@ -181,15 +184,12 @@ { import = "lazyvim.plugins.extras.dap.core" }, { import = "lazyvim.plugins.extras.test.core" }, { "nvim-telescope/telescope-fzf-native.nvim", enabled = true }, - -- disable mason.nvim, use programs.neovim.extraPackages { "williamboman/mason-lspconfig.nvim", enabled = false }, - --{ "williamboman/mason.nvim", enabled = false }, - -- treesitter handled by xdg.configFile."nvim/parser", put this line at the end of spec to clear ensure_installed - --{ "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = {} } }, { import = "plugins" }, { import = "plugins.plugins" }, }, - install = { colorscheme = { "tokyonight" } }, + + ${if colorscheme != "" then "install = { colorscheme = { '${colorscheme}' } }," else ""} checker = { enabled = true, notify = false }, change_detection = { enabled = true, notify = false }, }) diff --git a/nix/programs/nvim/flake.lock b/nix/programs/nvim/flake.lock index c9ed8d7..01dcb75 100644 --- a/nix/programs/nvim/flake.lock +++ b/nix/programs/nvim/flake.lock @@ -2,16 +2,14 @@ "nodes": { "flake-parts": { "inputs": { - "nixpkgs-lib": [ - "nixpkgs" - ] + "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1717285511, - "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", + "lastModified": 1719994518, + "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", + "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", "type": "github" }, "original": { @@ -20,46 +18,37 @@ "type": "github" } }, - "home-manager": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1717316182, - "narHash": "sha256-Xi0EpZcu39N0eW7apLjFfUOR9y80toyjYizez7J1wMI=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "9b53a10f4c91892f5af87cf55d08fba59ca086af", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1717196966, - "narHash": "sha256-yZKhxVIKd2lsbOqYd5iDoUIwsRZFqE87smE2Vzf6Ck0=", - "owner": "NixOS", + "lastModified": 1720542800, + "narHash": "sha256-ZgnNHuKV6h2+fQ5LuqnUaqZey1Lqqt5dTUAiAnqH0QQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "57610d2f8f0937f39dbd72251e9614b1561942d8", + "rev": "feb2849fdeb70028c70d73b848214b00d324a497", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1719876945, + "narHash": "sha256-Fm2rDDs86sHy0/1jxTOKB1118Q0O3Uc7EC0iXvXKpbI=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz" + } + }, "root": { "inputs": { "flake-parts": "flake-parts", - "home-manager": "home-manager", "nixpkgs": "nixpkgs" } } diff --git a/nix/programs/nvim/flake.nix b/nix/programs/nvim/flake.nix index ab67de9..6b79831 100644 --- a/nix/programs/nvim/flake.nix +++ b/nix/programs/nvim/flake.nix @@ -1,31 +1,35 @@ { - description = "Dashies neovim config"; + description = "A lazyvim configuration"; + inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - home-manager = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - flake-parts = { - url = "github:hercules-ci/flake-parts"; - inputs.nixpkgs-lib.follows = "nixpkgs"; - }; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + flake-parts.url = "github:hercules-ci/flake-parts"; }; + outputs = - { ... - }@inputs: - let - pkgs = import inputs.nixpkgs { - system = "x86_64-linux"; - overlays = [ - inputs.nur.overlay - ]; - config = { - allowUnfree = true; + { flake-parts, ... }@inputs: + flake-parts.lib.mkFlake { inherit inputs; } { + systems = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + + perSystem = + { pkgs, ... }: + let + colorscheme = "catppuccin-mocha"; + dashieVimModule = { + inherit pkgs colorscheme; + module = import ./default.nix; + nvim = pkgs.neovim; + }; + in + { + packages = { + default = dashieVimModule.nvim; + }; }; - }; - in - { - imports = [ ./default.nix { inherit pkgs; } ]; }; } diff --git a/nix/programs/nvim/lua/plugins/plugins.lua b/nix/programs/nvim/lua/plugins/plugins.lua index a9f20f3..833d72f 100644 --- a/nix/programs/nvim/lua/plugins/plugins.lua +++ b/nix/programs/nvim/lua/plugins/plugins.lua @@ -1,12 +1,4 @@ -local Util = require("lazyvim.util") - return { - { - "LazyVim/LazyVim", - opts = { - colorscheme = "tokyonight-night", - }, - }, { "nvim-telescope/telescope.nvim", cmd = "Telescope", From e8fa641a155004abf5cae85de53b4ae6c770654d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 15 Jul 2024 01:57:04 +0200 Subject: [PATCH 033/330] Move to DashVim --- nix/base/common_hardware.nix | 4 +- nix/flake.lock | 858 +++++++++++++++------- nix/flake.nix | 9 +- nix/hardware/spaceship/spaceship.nix | 6 +- nix/modules/conf.nix | 9 + nix/programs/coding.nix | 8 +- nix/programs/common.nix | 12 +- nix/programs/default.nix | 2 +- nix/programs/hyprland/config.nix | 2 - nix/programs/individual_configs/kitty.nix | 99 ++- nix/programs/themes/stylix.nix | 12 +- 11 files changed, 682 insertions(+), 339 deletions(-) diff --git a/nix/base/common_hardware.nix b/nix/base/common_hardware.nix index 61d88c6..356e054 100644 --- a/nix/base/common_hardware.nix +++ b/nix/base/common_hardware.nix @@ -32,9 +32,7 @@ in # Enable CUPS to print documents. services.printing.enable = true; services.printing.browsing = true; - # fucking fun - # TODO: https://github.com/NixOS/nixpkgs/pull/325825 .... - # services.printing.drivers = [ pkgs.hplip ]; + services.printing.drivers = [ pkgs.hplip ]; services.printing.startWhenNeeded = true; # optional services.avahi = { enable = true; diff --git a/nix/flake.lock b/nix/flake.lock index f87db2b..b10b6fe 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -73,11 +73,11 @@ "base16-helix": { "flake": false, "locked": { - "lastModified": 1696727917, - "narHash": "sha256-FVrbPk+NtMra0jtlC5oxyNchbm8FosmvXIatkRbYy1g=", + "lastModified": 1720809814, + "narHash": "sha256-numb3xigRGnr/deF7wdjBwVg7fpbTH7reFDkJ75AJkY=", "owner": "tinted-theming", "repo": "base16-helix", - "rev": "dbe1480d99fe80f08df7970e471fac24c05f2ddb", + "rev": "34f41987bec14c0f3f6b2155c19787b1f6489625", "type": "github" }, "original": { @@ -173,7 +173,66 @@ "type": "github" } }, + "dashvim": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "nixpkgs" + ], + "nixvim": "nixvim" + }, + "locked": { + "lastModified": 1721001253, + "narHash": "sha256-5Nfky4JhjM865jbvrueY/+fByUT8meUCHWuuwhaIUcw=", + "owner": "DashieTM", + "repo": "DashVim", + "rev": "276041dee43e85f0223b08041a842ba38c3e1ad3", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "DashVim", + "type": "github" + } + }, + "devshell": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "dashvim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717408969, + "narHash": "sha256-Q0OEFqe35fZbbRPPRdrjTUUChKVhhWXz3T9ZSKmaoVY=", + "owner": "numtide", + "repo": "devshell", + "rev": "1ebbe68d57457c8cae98145410b164b5477761f4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, "flake-compat": { + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-compat_2": { "flake": false, "locked": { "lastModified": 1673956053, @@ -210,133 +269,7 @@ "type": "github" } }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "hyprdock", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_3": { - "inputs": { - "nixpkgs-lib": [ - "oxicalc", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": [ - "oxidash", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_5": { - "inputs": { - "nixpkgs-lib": [ - "oxinoti", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_6": { - "inputs": { - "nixpkgs-lib": [ - "oxipaste", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_7": { - "inputs": { - "nixpkgs-lib": [ - "oxishut", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_8": { + "flake-parts_10": { "inputs": { "nixpkgs-lib": [ "reset", @@ -357,7 +290,7 @@ "type": "github" } }, - "flake-parts_9": { + "flake-parts_11": { "inputs": { "nixpkgs-lib": [ "reset-plugins", @@ -378,16 +311,182 @@ "type": "github" } }, - "flake-utils": { + "flake-parts_2": { "inputs": { - "systems": "systems_3" + "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1719994518, + "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "dashvim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1719877454, + "narHash": "sha256-g5N1yyOSsPNiOlFfkuI/wcUjmtah+nxdImJqrSATjOU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "4e3583423212f9303aa1a6337f8dffb415920e4f", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": [ + "hyprdock", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": [ + "oxicalc", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_6": { + "inputs": { + "nixpkgs-lib": [ + "oxidash", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ + "oxinoti", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_8": { + "inputs": { + "nixpkgs-lib": [ + "oxipaste", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_9": { + "inputs": { + "nixpkgs-lib": [ + "oxishut", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -504,6 +603,24 @@ "type": "github" } }, + "flake-utils_8": { + "inputs": { + "systems": "systems_10" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "fromYaml": { "flake": false, "locked": { @@ -536,6 +653,62 @@ "type": "github" } }, + "git-hooks": { + "inputs": { + "flake-compat": [ + "dashvim", + "nixvim", + "flake-compat" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "dashvim", + "nixvim", + "nixpkgs" + ], + "nixpkgs-stable": [ + "dashvim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1719259945, + "narHash": "sha256-F1h+XIsGKT9TkGO3omxDLEb/9jOOsI6NnzsXFsZhry4=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "dashvim", + "nixvim", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "gnome-shell": { "flake": false, "locked": { @@ -556,15 +729,17 @@ "home-manager": { "inputs": { "nixpkgs": [ + "dashvim", + "nixvim", "nixpkgs" ] }, "locked": { - "lastModified": 1720646128, - "narHash": "sha256-BivO5yIQukDlJL+1875Sqf3GuOPxZDdA48dYDi3PkL8=", + "lastModified": 1719827439, + "narHash": "sha256-tneHOIv1lEavZ0vQ+rgz67LPNCgOZVByYki3OkSshFU=", "owner": "nix-community", "repo": "home-manager", - "rev": "c085b984ff2808bf322f375b10fea5a415a9c43d", + "rev": "59ce796b2563e19821361abbe2067c3bb4143a7d", "type": "github" }, "original": { @@ -574,6 +749,26 @@ } }, "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1720734513, + "narHash": "sha256-neWQ8eNtLTd+YMesb7WjKl1SVCbDyCm46LUgP/g/hdo=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "90ae324e2c56af10f20549ab72014804a3064c7f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_3": { "inputs": { "nixpkgs": [ "stylix", @@ -625,8 +820,8 @@ }, "hyprdock": { "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_2" + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1716453478, @@ -648,16 +843,16 @@ "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_3", - "systems": "systems_2", + "nixpkgs": "nixpkgs_4", + "systems": "systems_3", "xdph": "xdph" }, "locked": { - "lastModified": 1720731503, - "narHash": "sha256-Qlm0IRnOrI64RW/SEvW9rA1ytVvPS1CsVvRataNvStI=", + "lastModified": 1720896272, + "narHash": "sha256-zo1lDMsxjEyko/P+KfCLNYZrCAWQOrX90/J31nqzpy4=", "ref": "refs/heads/main", - "rev": "e728e56cbc6af0a9be1276b2cf8e019a894016e7", - "revCount": 4917, + "rev": "bc6b0880dda2607a80f000c134f573c970452a0f", + "revCount": 4925, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -778,15 +973,15 @@ "inputs": { "crane": "crane", "naersk": "naersk", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_6", "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1719927553, - "narHash": "sha256-8DBU91zfxyEZF1mCy1qmvA7mb/ee7AwqEUAT6ScJu40=", + "lastModified": 1720904669, + "narHash": "sha256-Se+Pg81W8R+SFGFlhF1dU+NnMWSdLo3nC9TdPHa2IL4=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "bcaa13deae4e47caa5fffa7fdaa0981af1fec297", + "rev": "58190ab079d00dd53babb72346f1da6e1cc9ac72", "type": "github" }, "original": { @@ -797,7 +992,7 @@ }, "naersk": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1717067539, @@ -813,6 +1008,28 @@ "type": "github" } }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "dashvim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1719845423, + "narHash": "sha256-ZLHDmWAsHQQKnmfyhYSHJDlt8Wfjv6SQhl2qek42O7A=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "ec12b88104d6c117871fad55e931addac4626756", + "type": "github" + }, + "original": { + "owner": "lnl7", + "repo": "nix-darwin", + "type": "github" + } + }, "nix-flatpak": { "locked": { "lastModified": 1711997375, @@ -844,6 +1061,18 @@ "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1719876945, + "narHash": "sha256-Fm2rDDs86sHy0/1jxTOKB1118Q0O3Uc7EC0iXvXKpbI=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz" + } + }, "nixpkgs-stable": { "locked": { "lastModified": 1720282526, @@ -861,6 +1090,22 @@ } }, "nixpkgs_10": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -876,7 +1121,7 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_12": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -892,7 +1137,7 @@ "type": "github" } }, - "nixpkgs_12": { + "nixpkgs_13": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -908,7 +1153,7 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_14": { "locked": { "lastModified": 1716190602, "narHash": "sha256-xYRimrR0duWvokWQEvB87bSsICeCvvX9DxpUOzCfsDE=", @@ -924,7 +1169,7 @@ "type": "github" } }, - "nixpkgs_14": { + "nixpkgs_15": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -940,23 +1185,23 @@ "type": "github" } }, - "nixpkgs_15": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_16": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_17": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -972,7 +1217,7 @@ "type": "github" } }, - "nixpkgs_17": { + "nixpkgs_18": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -988,7 +1233,7 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_19": { "locked": { "lastModified": 1716948383, "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", @@ -1004,7 +1249,23 @@ "type": "github" } }, - "nixpkgs_19": { + "nixpkgs_2": { + "locked": { + "lastModified": 1719848872, + "narHash": "sha256-H3+EC5cYuq+gQW8y0lSrrDZfH71LB4DAf+TDFyvwCNA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "00d80d13810dbfea8ab4ed1009b09100cca86ba8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_20": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1020,23 +1281,7 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1716330097, - "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_20": { + "nixpkgs_21": { "locked": { "lastModified": 1720181791, "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", @@ -1052,7 +1297,7 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_22": { "locked": { "lastModified": 1714912032, "narHash": "sha256-clkcOIkg8G4xuJh+1onLG4HPMpbtzdLv4rHxFzgsH9c=", @@ -1069,6 +1314,22 @@ } }, "nixpkgs_3": { + "locked": { + "lastModified": 1716330097, + "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1720542800, "narHash": "sha256-ZgnNHuKV6h2+fQ5LuqnUaqZey1Lqqt5dTUAiAnqH0QQ=", @@ -1084,7 +1345,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1717112898, "narHash": "sha256-7R2ZvOnvd9h8fDd65p0JnB7wXfUvreox3xFdYWd1BnY=", @@ -1098,7 +1359,7 @@ "type": "indirect" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { "lastModified": 1716948383, "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", @@ -1114,33 +1375,17 @@ "type": "github" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1720418205, - "narHash": "sha256-cPJoFPXU44GlhWg4pUk9oUPqurPlCFZ11ZQPk21GTPU=", - "owner": "NixOs", - "repo": "nixpkgs", - "rev": "655a58a72a6601292512670343087c2d75d859c1", - "type": "github" - }, - "original": { - "owner": "NixOs", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_7": { "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", + "lastModified": 1720768451, + "narHash": "sha256-EYekUHJE2gxeo2pM/zM9Wlqw1Uw2XTJXOSAO79ksc4Y=", + "owner": "NixOs", "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "rev": "7e7c39ea35c5cdd002cd4588b03a3fb9ece6fad9", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "NixOs", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -1164,27 +1409,52 @@ }, "nixpkgs_9": { "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, + "nixvim": { + "inputs": { + "devshell": "devshell", + "flake-compat": "flake-compat", + "flake-parts": "flake-parts_3", + "git-hooks": "git-hooks", + "home-manager": "home-manager", + "nix-darwin": "nix-darwin", + "nixpkgs": "nixpkgs_2", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1720898451, + "narHash": "sha256-T7JAUYx7WZrEEItqRb9Bh6rj0Njffir4XHJUNwhQMiY=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "06a44e9e8814ab13ea013e222637a497a50e96e4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, "nur": { "locked": { - "lastModified": 1720653960, - "narHash": "sha256-7Z8NTGholkQ2iQvNGyWMdnvRkzUKJnplVNjZDyf1ztE=", + "lastModified": 1720908054, + "narHash": "sha256-nRmtu5zaYvzvonEZaQlORbIoZvctVy3P3YraH/ChzG0=", "owner": "nix-community", "repo": "nur", - "rev": "477b0d6ac43b0dbb332ad5ea3cfeb82221925d20", + "rev": "fc076c6c1c848d6f950303f937b26d202b23d4b0", "type": "github" }, "original": { @@ -1195,8 +1465,8 @@ }, "oxicalc": { "inputs": { - "flake-parts": "flake-parts_3", - "nixpkgs": "nixpkgs_7" + "flake-parts": "flake-parts_5", + "nixpkgs": "nixpkgs_8" }, "locked": { "lastModified": 1716225554, @@ -1214,8 +1484,8 @@ }, "oxidash": { "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_8", + "flake-parts": "flake-parts_6", + "nixpkgs": "nixpkgs_9", "rust-overlay": "rust-overlay_2" }, "locked": { @@ -1234,8 +1504,8 @@ }, "oxinoti": { "inputs": { - "flake-parts": "flake-parts_5", - "nixpkgs": "nixpkgs_10", + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_11", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -1254,8 +1524,8 @@ }, "oxipaste": { "inputs": { - "flake-parts": "flake-parts_6", - "nixpkgs": "nixpkgs_12", + "flake-parts": "flake-parts_8", + "nixpkgs": "nixpkgs_13", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -1274,8 +1544,8 @@ }, "oxishut": { "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_14", + "flake-parts": "flake-parts_9", + "nixpkgs": "nixpkgs_15", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -1294,8 +1564,8 @@ }, "reset": { "inputs": { - "flake-parts": "flake-parts_8", - "nixpkgs": "nixpkgs_16", + "flake-parts": "flake-parts_10", + "nixpkgs": "nixpkgs_17", "rust-overlay": "rust-overlay_6" }, "locked": { @@ -1314,8 +1584,8 @@ }, "reset-plugins": { "inputs": { - "flake-parts": "flake-parts_9", - "nixpkgs": "nixpkgs_18", + "flake-parts": "flake-parts_11", + "nixpkgs": "nixpkgs_19", "rust-overlay": "rust-overlay_7" }, "locked": { @@ -1336,12 +1606,13 @@ "inputs": { "anyrun": "anyrun", "base16": "base16", - "home-manager": "home-manager", + "dashvim": "dashvim", + "home-manager": "home-manager_2", "hyprdock": "hyprdock", "hyprland": "hyprland", "ironbar": "ironbar", "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_7", "nur": "nur", "oxicalc": "oxicalc", "oxidash": "oxidash", @@ -1356,7 +1627,7 @@ }, "rust-overlay": { "inputs": { - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "nixpkgs": [ "ironbar", "nixpkgs" @@ -1378,8 +1649,8 @@ }, "rust-overlay_2": { "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_9" + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_10" }, "locked": { "lastModified": 1716171463, @@ -1397,8 +1668,8 @@ }, "rust-overlay_3": { "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_11" + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1716171463, @@ -1416,8 +1687,8 @@ }, "rust-overlay_4": { "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_13" + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_14" }, "locked": { "lastModified": 1716171463, @@ -1435,8 +1706,8 @@ }, "rust-overlay_5": { "inputs": { - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_15" + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_16" }, "locked": { "lastModified": 1716171463, @@ -1454,8 +1725,8 @@ }, "rust-overlay_6": { "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_17" + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_18" }, "locked": { "lastModified": 1716171463, @@ -1473,8 +1744,8 @@ }, "rust-overlay_7": { "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_19" + "flake-utils": "flake-utils_8", + "nixpkgs": "nixpkgs_20" }, "locked": { "lastModified": 1717035469, @@ -1492,7 +1763,7 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_20", + "nixpkgs": "nixpkgs_21", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { @@ -1518,17 +1789,17 @@ "base16-kitty": "base16-kitty", "base16-tmux": "base16-tmux", "base16-vim": "base16-vim", - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "gnome-shell": "gnome-shell", - "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_21" + "home-manager": "home-manager_3", + "nixpkgs": "nixpkgs_22" }, "locked": { - "lastModified": 1719525570, - "narHash": "sha256-xSO/H67GAHEW0siD2PHoO/e97MbROL3r3s5SpF6A6Dc=", + "lastModified": 1720818679, + "narHash": "sha256-u9PqY7O6TN42SLeb0e6mnYAgQOoQmclaVSHfLKMpmu0=", "owner": "danth", "repo": "stylix", - "rev": "1ff9d37d27377bfe8994c24a8d6c6c1734ffa116", + "rev": "29148118cc33f08b71058e1cda7ca017f5300b51", "type": "github" }, "original": { @@ -1552,22 +1823,7 @@ "type": "github" } }, - "systems_2": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_3": { + "systems_10": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1582,6 +1838,36 @@ "type": "github" } }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, "systems_4": { "locked": { "lastModified": 1681028828, @@ -1672,6 +1958,28 @@ "type": "github" } }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "dashvim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1719887753, + "narHash": "sha256-p0B2r98UtZzRDM5miGRafL4h7TwGRC4DII+XXHDHqek=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "bdb6355009562d8f9313d9460c0d3860f525bc6c", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": "hyprland-protocols", diff --git a/nix/flake.nix b/nix/flake.nix index 71d80b6..ada2006 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -40,7 +40,11 @@ hyprdock.url = "github:DashieTM/hyprdock"; reset.url = "github:Xetibo/ReSet"; reset-plugins.url = "github:Xetibo/ReSet-Plugins"; - + # nixvim.url = "github:nix-community/nixvim"; + dashvim = { + url = "github:DashieTM/DashVim"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = { ... }@inputs: @@ -49,9 +53,6 @@ system = "x86_64-linux"; overlays = [ inputs.nur.overlay - (_: prev: { - python312 = prev.python312.override { packageOverrides = _: pysuper: { nose = pysuper.pynose; }; }; - }) ]; config = { allowUnfree = true; diff --git a/nix/hardware/spaceship/spaceship.nix b/nix/hardware/spaceship/spaceship.nix index 461e54c..482de77 100644 --- a/nix/hardware/spaceship/spaceship.nix +++ b/nix/hardware/spaceship/spaceship.nix @@ -22,10 +22,8 @@ hardware.graphics.extraPackages = with pkgs; [ libvdpau-va-gl vaapiVdpau - # DUDE FOR FUCK SAKE - # TODO: - # rocmPackages.clr.icd - # rocm-opencl-runtime + rocmPackages.clr.icd + rocm-opencl-runtime ]; hardware.graphics = { enable = true; diff --git a/nix/modules/conf.nix b/nix/modules/conf.nix index 6a59abf..27a99fd 100644 --- a/nix/modules/conf.nix +++ b/nix/modules/conf.nix @@ -169,6 +169,15 @@ }; }; + nvim-colorscheme = lib.mkOption { + default = { tokyonight = { enable = true; }; }; + example = { catppuccin = { enable = true; }; }; + type = lib.types.attrs; + description = '' + nixvim colorscheme. + ''; + }; + colorscheme = lib.mkOption { default = { # custom tokyo night diff --git a/nix/programs/coding.nix b/nix/programs/coding.nix index e3a9c6c..305439d 100644 --- a/nix/programs/coding.nix +++ b/nix/programs/coding.nix @@ -5,9 +5,15 @@ }: { imports = [ - (import ./nvim/default.nix { inherit lib pkgs; colorscheme = config.conf.colorscheme; }) + # old neovim config + # (import ./nvim/default.nix { inherit lib pkgs; colorscheme = config.conf.colorscheme; }) ]; + programs.dashvim = { + enable = true; + colorscheme = config.conf.colorscheme; + }; + home.packages = with pkgs; [ #basics gitui diff --git a/nix/programs/common.nix b/nix/programs/common.nix index 5b4f35c..49f0074 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -100,12 +100,12 @@ in ''; # # dconf.settings = { - # "org/gnome/desktop/interface" = { - # gtk-theme = "adw-gtk3"; - # cursor-theme = "Bibata-Modern-Classic"; - # cursor-size = 24; - # icon-theme = "MoreWaita"; - # }; + # "org/gnome/desktop/interface" = { + # gtk-theme = "adw-gtk3"; + # cursor-theme = "Bibata-Modern-Classic"; + # cursor-size = 24; + # icon-theme = "MoreWaita"; + # }; # }; programs.nix-index = diff --git a/nix/programs/default.nix b/nix/programs/default.nix index 69fb5c8..a0e4b2f 100644 --- a/nix/programs/default.nix +++ b/nix/programs/default.nix @@ -13,6 +13,7 @@ let inputs.reset.homeManagerModules.default inputs.nix-flatpak.homeManagerModules.nix-flatpak inputs.sops-nix.homeManagerModules.sops + inputs.dashvim.homeManagerModules.dashvim ]; in { @@ -31,7 +32,6 @@ in home-manager.users.${config.conf.username} = { imports = [ - ./hyprland/default.nix ./flatpak.nix ./common.nix diff --git a/nix/programs/hyprland/config.nix b/nix/programs/hyprland/config.nix index 6dd74d5..4673dd6 100644 --- a/nix/programs/hyprland/config.nix +++ b/nix/programs/hyprland/config.nix @@ -230,8 +230,6 @@ "immediate,class:^(.*)(Pal)$" "immediate,class:^(.*)(dota2)$" "immediate,class:^(.*)(needforspeedheat.exe)$" - "forceinput,class:^(.*)(Pal)$" - "forceinput,class:^(.*)(Battlefield 4)$" ]; exec-once = [ diff --git a/nix/programs/individual_configs/kitty.nix b/nix/programs/individual_configs/kitty.nix index 301d747..4bdaf35 100644 --- a/nix/programs/individual_configs/kitty.nix +++ b/nix/programs/individual_configs/kitty.nix @@ -1,59 +1,80 @@ -{ lib, ... }: { +{ lib, config, inputs, pkgs, ... }: +let + base16 = pkgs.callPackage inputs.base16.lib { }; + scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); + hexTable = { + "0" = "1"; + "1" = "0"; + "2" = "1"; + "3" = "2"; + "4" = "3"; + "5" = "4"; + "6" = "5"; + "7" = "6"; + "8" = "7"; + "9" = "8"; + "a" = "9"; + "b" = "a"; + "c" = "b"; + "d" = "c"; + "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 +{ + + stylix.targets.kitty = { + enable = false; + }; programs.kitty = { enable = true; settings = { enable_audio_bell = "no"; window_alert_on_bell = "no"; - background_opacity = lib.mkForce "0.8"; cursor_blink_interval = "0"; window_padding_width = "1"; shell_integration = "yes"; sync_with_monitor = "no"; + background_opacity = "0.8"; font_family = "JetBrainsMono Nerd Font Mono"; bold_font = "JetBrainsMono Nerd Font Mono Extra Bold"; italic_font = "JetBrainsMono Nerd Font Mono Extra Italic"; bold_italic_font = "JetBrainsMono Nerd Font Mono Extra Bold Italic"; - # background = lib.mkForce "#1a1b25"; - # foreground = "#c5c8c6"; - # - # selection_background = "#b2ceee"; - # selection_foreground = "#080808"; - # - # url_color = "#73daca"; - # cursor = "#c0caf5"; - # cursor_text_color = "#1a1b25"; - # - # active_tab_background = "#7aa2f7"; - # active_tab_foreground = "#16161e"; - # inactive_tab_background = "#292e42"; - # inactive_tab_foreground = "#545c7e"; - # - # active_border_color = "#7aa2f7"; - # inactive_border_color = "#292e42"; + background = base; + foreground = "#" + scheme.base05; + selection_foreground = "#" + scheme.base05; + selection_background = base; + url_color = "#" + scheme.base04; + cursor = "#" + scheme.base05; + active_border_color = "#" + scheme.base03; + inactive_border_color = "#" + scheme.base01; + active_tab_background = base; + active_tab_foreground = "#" + scheme.base05; + inactive_tab_background = "#" + scheme.base01; + inactive_tab_foreground = "#" + scheme.base04; + tab_bar_background = "#" + scheme.base01; - # color0 = "#15161e"; - # color1 = "#c94448"; - # color2 = "#9ece6a"; - # color3 = "#e0af68"; - # color4 = "#7aa2f7"; - # color5 = "#bb9af7"; - # color6 = "#7dcfff"; - # color7 = "#a9b1d6"; - # - # color8 = "#414868"; - # color9 = "#f2201f"; - # color10 = "#9ece6a"; - # color11 = "#e0af68"; - # color12 = "#7aa2f7"; - # color13 = "#bb9af7"; - # color14 = "#7dcfff"; - # color15 = "#c0caf5"; - # - # color16 = "#ff9e64"; - # color17 = "#db4b4b"; + color0 = base; + color1 = "#" + scheme.base08; + color2 = "#" + scheme.base0B; + color3 = "#" + scheme.base0A; + color4 = "#" + scheme.base0D; + color5 = "#" + scheme.base0E; + color6 = "#" + scheme.base0C; + color7 = "#" + scheme.base05; + + color8 = "#" + scheme.base03; + color9 = "#" + scheme.base08; + color10 = "#" + scheme.base0B; + color11 = "#" + scheme.base0A; + color12 = "#" + scheme.base0D; + color13 = "#" + scheme.base0E; + color14 = "#" + scheme.base0C; + color15 = "#" + scheme.base07; shell = "fish"; }; diff --git a/nix/programs/themes/stylix.nix b/nix/programs/themes/stylix.nix index 4a210e2..7675e25 100644 --- a/nix/programs/themes/stylix.nix +++ b/nix/programs/themes/stylix.nix @@ -4,16 +4,20 @@ enable = true; image = /home/${config.conf.username}/Pictures/backgrounds/shinobu_2k.jpg; polarity = "dark"; + targets = { + nixvim.enable = false; + fish.enable = false; + }; fonts = { serif = { - package = pkgs.dejavu_fonts; - name = "DejaVu Serif"; + package = pkgs.cantarell-fonts; + name = "Cantarell"; }; sansSerif = { - package = pkgs.dejavu_fonts; - name = "DejaVu Sans"; + package = pkgs.cantarell-fonts; + name = "Cantarell"; }; monospace = { From 062d5701cbe75e02139b6cb9f7f215754b92e396 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 17 Jul 2024 23:04:51 +0200 Subject: [PATCH 034/330] Set empty background as default --- nix/base/black.jpg | Bin 0 -> 130290 bytes nix/flake.lock | 9 ++++++--- nix/flake.nix | 1 + nix/hardware/marmo/configuration.nix | 1 + nix/programs/themes/stylix.nix | 2 +- 5 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 nix/base/black.jpg diff --git a/nix/base/black.jpg b/nix/base/black.jpg new file mode 100644 index 0000000000000000000000000000000000000000..730b0b6af586aadb3b8ef942e81b5479927e747e GIT binary patch literal 130290 zcmex=Fy#d4{|6WZIXDXV8JHQB7?=bZnFSgDA7PMZU|?j0n9TqMj7-cdtZeKY zoLt=hk1%W%U|?coW@chxW@TkzVPIgaWn^MzU=d^$QZ#gA6AnydS1J@SYMi)`L)mHL zLD8U#A5@H!ikdjN#Ka{erBv0_H8izMOwG(KEUlbfT;1F~JiUTLLc_u%BBPR1Qq$5i zGP89XZ3R<7E#dCS&q+js2Tb?ESs zqsNY)IC<*QVP<4t5@Z%+uxI$sVE;>FQ3KZ~9u0%h zG%%V5M$^D(8W>FjqiJ9?4UDFN(KIlc21e7sXc`zz1EXnRG!2ZVfzdQDng&MGz-Ss6 zO#`E8U^ESkrh(BkFq#HN)4*sN7)=ACX<#%BjHZFnG%%V5M$^D(8W>FjqiJ9?4UDFN z(KIlc21e7sXc`zz1EXnRG!2ZVfzdQDng&MGz-Ss6O#`E8U^ESkrh(BkFq#HN)4*sN z7)=ACX<#%BjHZFnG%%V5M$^D(8W>FjqiJ9?4UDFN(KIlc21e7sXc`zz1EXnRG!2ZV zfzdQDng&MGz-Ss6O#`E8U^ESkrh(BkFq#HN)4*sN7)=ACX<#%BjHZFnG%%V5M$^D( z8W>FjqiJ9?4UDFN(KIlc21e7sXc`zz1EXnRG!2ZVfzdQDng&MGz-Ss6O#`E8U^ESk zrh(BkFq#HN)4*sN7)=ACX<#%BjHZFnG%%V5M$^D(8W>FjqiJ9?4UDFN(KIlc21e7s zXc`zz1EXnRG!2ZVfzdQDng&MGz-Ss6O#`E8U^ESkrh(BkFq#HN)4*sN7)=ACX<#%B zjHZFnG%%V5M$^D(8W>FjqiJ9?4UDFN(KIlc21e7sXc`zz1EXnRG!2ZVfzdQDng&MG zz-Ss6O#`E8U^ESkrh(BkFq#HN)4*sN7)=ACX<#%BjHZFnG%%V5M$^D(8W>FjqiJ9? z4UDFN(KIlc21e7sXc`zz1EXnRG!2ZVfzdQDng&MGz-Ss6O#`E8U^ESkrh(BkFq#HN z)4*sN7)=ACX<#%BjHZFnG%%V5M$^D(8W>FjqiJ9?4UDFN(KIlc21e7sXc`zz1EXnR zG!2ZVfzdQDng&MGz-Ss6O#`E8U^ESkrh(BkFq#HN)4*sN7)=ACX<#%BjHZFnG%%V5 zM$^D(8W>FjqiJ9?4UDFN(KIlc21e7sXc`zz1EXnRG!2ZVfzdQDng&MGz-Ss6O#`E8 zU^ESkrh(BkFq#HN)4*sN7)=ACX<#%BjHZFnG%%V5M$^D(8W>FjqiJ9?4UDFN(KIlc z21e7sXc`zz1EXnRG!2ZVfzdQDng&MGz-Ss6O#`E8U^ESkrh(BkFq#HN)4*sN7)=AC zX<#%BjHZFnG%%V5M$^D(8W>FjqiJ9?4UDFN(KIlc21e7sXc`zz1EXnRG!2ZVfzdQD zng&MGz-Ss6O#`E8U^ESkrh(BkFq#HN)4*sN7)=ACX<#%BjHZFnG%%V5M$^D(8W>Fj zqiJ9?4UDFN(KIlc21e7sXc`zz1EXnRG!2ZVfzdQDng&MGz-Ss6O#`E8U^ESkrh(Bk zFq#HN)4*sN7)=ACX<#%BjHZFnG%%V5M$^D(8W>FjqiJ9?4UDFN(KIlc21e7sXc`zz z1EXnRG!2ZVfzdQDng&MGz-Ss6O#`E8U^ESkrh(BkFq#HN)4*sN7)=ACX<#%BjHZFn zG%%V5M$^D(8W>FjqiJ9?4UDFN(KIlc21e7sXc`zz1EXnRG!2ZVfzdQDng&MGz-Ss6 zO#`E8U^ESkrh(BkFq#HN)4*sN7)=ACX<#%BjHZFnG%%V5M$^D(8W>FjqiJ9?4UDFN z(KIlc21e7sXc`zz1EXnRG!2ZVfzdQDng&MGz-Ss6O#`E8U^ESkrh(BkFq#HN)4*sN z7)=ACX<#%BjHZFnG%%V5M$^D(8W>FjqiJ9?4UDFN(KIlc21e7sXc`zz1EXnRG!2ZV WfzdQDng&MGz-StvavHGze-i+4>hMMY literal 0 HcmV?d00001 diff --git a/nix/flake.lock b/nix/flake.lock index b10b6fe..ffb16be 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -175,6 +175,9 @@ }, "dashvim": { "inputs": { + "base16": [ + "base16" + ], "flake-parts": "flake-parts_2", "nixpkgs": [ "nixpkgs" @@ -182,11 +185,11 @@ "nixvim": "nixvim" }, "locked": { - "lastModified": 1721001253, - "narHash": "sha256-5Nfky4JhjM865jbvrueY/+fByUT8meUCHWuuwhaIUcw=", + "lastModified": 1721163124, + "narHash": "sha256-Ib3q42fxtCPFzLqKVWkTGGxrUFC9eGwCKTWuYCuSBBg=", "owner": "DashieTM", "repo": "DashVim", - "rev": "276041dee43e85f0223b08041a842ba38c3e1ad3", + "rev": "69f6406e6dd73d059a7d28f81183914704f70f9e", "type": "github" }, "original": { diff --git a/nix/flake.nix b/nix/flake.nix index ada2006..2793a63 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -44,6 +44,7 @@ dashvim = { url = "github:DashieTM/DashVim"; inputs.nixpkgs.follows = "nixpkgs"; + inputs.base16.follows = "base16"; }; }; diff --git a/nix/hardware/marmo/configuration.nix b/nix/hardware/marmo/configuration.nix index 3fbaf27..d8de5cb 100644 --- a/nix/hardware/marmo/configuration.nix +++ b/nix/hardware/marmo/configuration.nix @@ -16,5 +16,6 @@ # all others ",highrr,auto,1" ]; + colorscheme="catppuccin-mocha"; }; } diff --git a/nix/programs/themes/stylix.nix b/nix/programs/themes/stylix.nix index 7675e25..fcb04ce 100644 --- a/nix/programs/themes/stylix.nix +++ b/nix/programs/themes/stylix.nix @@ -2,7 +2,7 @@ { stylix = { enable = true; - image = /home/${config.conf.username}/Pictures/backgrounds/shinobu_2k.jpg; + image = ../../base/black.jpg; polarity = "dark"; targets = { nixvim.enable = false; From dba12b15b8791d2311a3f6e46938cd0891d68716 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 17 Jul 2024 23:32:11 +0200 Subject: [PATCH 035/330] Add readme --- README.md | 9 + gtk-4.0/gtk.css | 100 -- nix/base/common_hardware.nix | 1 - nix/flake.lock | 80 +- scripts/README.md | 7 - scripts/carpkg.txt | 1 - scripts/flatpkg.txt | 69 - scripts/pac | 91 -- scripts/pacmanpkg.txt | 2352 ---------------------------------- 9 files changed, 49 insertions(+), 2661 deletions(-) create mode 100644 README.md delete mode 100644 gtk-4.0/gtk.css delete mode 100644 scripts/README.md delete mode 100644 scripts/carpkg.txt delete mode 100644 scripts/flatpkg.txt delete mode 100755 scripts/pac delete mode 100644 scripts/pacmanpkg.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..385fa4f --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ + _____ _ _____ _ + | __ \ | | | __ \ | | + | | | | __ _ ___| |__ | | | | ___ | |_ ___ + | | | |/ _` / __| '_ \| | | |/ _ \| __/ __| + | |__| | (_| \__ \ | | | |__| | (_) | |_\__ \ + |_____/ \__,_|___/_| |_|_____/ \___/ \__|___/ + +My personal configuration for NixOS/home-manager. +While not intended to be used by someone else, feel free to do so anyway or use it as a template for your configuration if you wish to. diff --git a/gtk-4.0/gtk.css b/gtk-4.0/gtk.css deleted file mode 100644 index ef7f654..0000000 --- a/gtk-4.0/gtk.css +++ /dev/null @@ -1,100 +0,0 @@ -/* -Generated with Gradience - -Issues caused by theming should be reported to Gradience repository, and not to upstream - -https://github.com/GradienceTeam/Gradience -*/ - -@define-color accent_color #a9b1d6; -@define-color accent_bg_color #a9b1d6; -@define-color accent_fg_color rgba(0, 0, 0, 0.87); -@define-color destructive_color #F28B82; -@define-color destructive_bg_color #F28B82; -@define-color destructive_fg_color rgba(0, 0, 0, 0.87); -@define-color success_color #81C995; -@define-color success_bg_color #81C995; -@define-color success_fg_color rgba(0, 0, 0, 0.87); -@define-color warning_color #FDD633; -@define-color warning_bg_color #FDD633; -@define-color warning_fg_color rgba(0, 0, 0, 0.87); -@define-color error_color #F28B82; -@define-color error_bg_color #F28B82; -@define-color error_fg_color rgba(0, 0, 0, 0.87); -@define-color window_bg_color #1a1b26; -@define-color window_fg_color #c0caf5; -@define-color view_bg_color #1a1b26; -@define-color view_fg_color #c0caf5; -@define-color headerbar_bg_color #1a1b26; -@define-color headerbar_fg_color #c0caf5; -@define-color headerbar_border_color rgba(192, 202, 245, 0.12); -@define-color headerbar_backdrop_color @window_bg_color; -@define-color headerbar_shade_color rgba(0, 0, 0, 0.36); -@define-color card_bg_color #1a1b26; -@define-color card_fg_color #c0caf5; -@define-color card_shade_color rgba(0, 0, 0, 0.36); -@define-color dialog_bg_color #1a1b26; -@define-color dialog_fg_color #c0caf5; -@define-color popover_bg_color #1a1b26; -@define-color popover_fg_color #c0caf5; -@define-color shade_color rgba(0, 0, 0, 0.36); -@define-color scrollbar_outline_color rgba(0, 0, 0, 0.5); -@define-color sidebar_bg_color #1a1b26; -@define-color sidebar_fg_color #c0caf5; -@define-color secondary_sidebar_bg_color #1a1b26; -@define-color secondary_sidebar_fg_color #c0caf5; -@define-color sidebar_shade_color rgba(0, 0, 0, 0.36); -@define-color secondary_sidebar_shade_color rgba(0, 0, 0, 0.36); -@define-color thumbnail_bg_color #1a1b26; -@define-color thumbnail_fg_color #c0caf5; -@define-color sidebar_backdrop_color rgba(192, 202, 245, 0.12); -@define-color secondary_sidebar_backdrop_color rgba(192, 202, 245, 0.12); -@define-color blue_1 #99c1f1; -@define-color blue_2 #62a0ea; -@define-color blue_3 #3584e4; -@define-color blue_4 #1c71d8; -@define-color blue_5 #1a5fb4; -@define-color green_1 #8ff0a4; -@define-color green_2 #57e389; -@define-color green_3 #33d17a; -@define-color green_4 #2ec27e; -@define-color green_5 #26a269; -@define-color yellow_1 #f9f06b; -@define-color yellow_2 #f8e45c; -@define-color yellow_3 #f6d32d; -@define-color yellow_4 #f5c211; -@define-color yellow_5 #e5a50a; -@define-color orange_1 #ffbe6f; -@define-color orange_2 #ffa348; -@define-color orange_3 #ff7800; -@define-color orange_4 #e66100; -@define-color orange_5 #c64600; -@define-color red_1 #f66151; -@define-color red_2 #ed333b; -@define-color red_3 #e01b24; -@define-color red_4 #c01c28; -@define-color red_5 #a51d2d; -@define-color purple_1 #dc8add; -@define-color purple_2 #c061cb; -@define-color purple_3 #9141ac; -@define-color purple_4 #813d9c; -@define-color purple_5 #613583; -@define-color brown_1 #cdab8f; -@define-color brown_2 #b5835a; -@define-color brown_3 #986a44; -@define-color brown_4 #865e3c; -@define-color brown_5 #63452c; -@define-color light_1 #ffffff; -@define-color light_2 #f6f5f4; -@define-color light_3 #deddda; -@define-color light_4 #c0bfbc; -@define-color light_5 #9a9996; -@define-color dark_1 #77767b; -@define-color dark_2 #5e5c64; -@define-color dark_3 #3d3846; -@define-color dark_4 #241f31; -@define-color dark_5 #000000; - -.navigation-sidebar { -background-color: #1a1b26; -} diff --git a/nix/base/common_hardware.nix b/nix/base/common_hardware.nix index 356e054..2cd48a9 100644 --- a/nix/base/common_hardware.nix +++ b/nix/base/common_hardware.nix @@ -41,7 +41,6 @@ in }; # Enable sound with pipewire. - sound.enable = true; hardware.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { diff --git a/nix/flake.lock b/nix/flake.lock index ffb16be..1ef4295 100644 --- a/nix/flake.lock +++ b/nix/flake.lock @@ -7,11 +7,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1717576207, - "narHash": "sha256-LU6d1xX7jN1zt10YU7Oym07MtzVfziSmUEznGFdbuaw=", + "lastModified": 1721135360, + "narHash": "sha256-ZhSA0e45UxiOAjEVqkym/aULh0Dt+KHJLNda7bjx9UI=", "owner": "Kirottu", "repo": "anyrun", - "rev": "7aabad8d5bb7d1bffae903ce86427b888ab824b4", + "rev": "c6101a31a80b51e32e96f6a77616b609770172e0", "type": "github" }, "original": { @@ -25,11 +25,11 @@ "fromYaml": "fromYaml" }, "locked": { - "lastModified": 1709025227, - "narHash": "sha256-KXcORItjYJTdEO/BlBd0Uym1Xa3eBu43uvpFiWjJOdY=", + "lastModified": 1721224776, + "narHash": "sha256-iakVQHg2DSmdOc5dNBwrDt9JLRxX5MT+IIbxfZEpGdo=", "owner": "SenchoPens", "repo": "base16.nix", - "rev": "4e9b16c8b44958bc6bf46d99c3bb1b59c9c9c764", + "rev": "c89c8123310257f3ddc04cc59aa4b5573c6d515f", "type": "github" }, "original": { @@ -185,11 +185,11 @@ "nixvim": "nixvim" }, "locked": { - "lastModified": 1721163124, - "narHash": "sha256-Ib3q42fxtCPFzLqKVWkTGGxrUFC9eGwCKTWuYCuSBBg=", + "lastModified": 1721250623, + "narHash": "sha256-w80Q5dvELC7W5rGx0gu9Jp+B2qxUA7irGIN3zAZcbiI=", "owner": "DashieTM", "repo": "DashVim", - "rev": "69f6406e6dd73d059a7d28f81183914704f70f9e", + "rev": "f4da99286b729a4300697c53c3a4b9ab9f8979aa", "type": "github" }, "original": { @@ -627,11 +627,11 @@ "fromYaml": { "flake": false, "locked": { - "lastModified": 1689549921, - "narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=", + "lastModified": 1721222302, + "narHash": "sha256-5vL4w9+tS9yd8WpIiDUtxN1IuxCVK2nebZMs/hCXXis=", "owner": "SenchoPens", "repo": "fromYaml", - "rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84", + "rev": "93bad85d1633b8b27287b438c0bd394094c24d06", "type": "github" }, "original": { @@ -758,11 +758,11 @@ ] }, "locked": { - "lastModified": 1720734513, - "narHash": "sha256-neWQ8eNtLTd+YMesb7WjKl1SVCbDyCm46LUgP/g/hdo=", + "lastModified": 1721135958, + "narHash": "sha256-H548rpPMsn25LDKn1PCFmPxmWlClJJGnvdzImHkqjuY=", "owner": "nix-community", "repo": "home-manager", - "rev": "90ae324e2c56af10f20549ab72014804a3064c7f", + "rev": "afd2021bedff2de92dfce0e257a3d03ae65c603d", "type": "github" }, "original": { @@ -851,11 +851,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1720896272, - "narHash": "sha256-zo1lDMsxjEyko/P+KfCLNYZrCAWQOrX90/J31nqzpy4=", + "lastModified": 1721248202, + "narHash": "sha256-VAhuQQ4EKbw/6z7K2IoR83+gXUdMksLWFQOhJNhSvQE=", "ref": "refs/heads/main", - "rev": "bc6b0880dda2607a80f000c134f573c970452a0f", - "revCount": 4925, + "rev": "300228b503b36e5977b0d58713c5b4cf1f07b8a9", + "revCount": 4930, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -934,11 +934,11 @@ ] }, "locked": { - "lastModified": 1720545076, - "narHash": "sha256-Pxacc2uoxI00koXp5+CyNqHOTQlqNlK0rlRHDBHX4+g=", + "lastModified": 1721071737, + "narHash": "sha256-qmC9jGfbE4+EIBbbSAkrfR/p49wShjpv4/KztgE/P54=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "6174a2a25f4e216c0f1d0c4278adc23c476b1d09", + "rev": "eb1ceff2b87f6820789249f63faa8e9dcb54d05f", "type": "github" }, "original": { @@ -1078,11 +1078,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1720282526, - "narHash": "sha256-dudRkHPRivMNOhd04YI+v4sWvn2SnN5ODSPIu5IVbco=", + "lastModified": 1720915306, + "narHash": "sha256-6vuViC56+KSr+945bCV8akHK+7J5k6n/epYg/W3I5eQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "550ac3e955c30fe96dd8b2223e37e0f5d225c927", + "rev": "74348da2f3a312ee25cea09b98cdba4cb9fa5d5d", "type": "github" }, "original": { @@ -1286,11 +1286,11 @@ }, "nixpkgs_21": { "locked": { - "lastModified": 1720181791, - "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", + "lastModified": 1720781449, + "narHash": "sha256-po3TZO9kcZwzvkyMJKb0WCzzDtiHWD34XeRaX1lWXp0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb", + "rev": "8b5a3d5a1d951344d683b442c0739010b80039db", "type": "github" }, "original": { @@ -1334,11 +1334,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1720542800, - "narHash": "sha256-ZgnNHuKV6h2+fQ5LuqnUaqZey1Lqqt5dTUAiAnqH0QQ=", + "lastModified": 1720957393, + "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "feb2849fdeb70028c70d73b848214b00d324a497", + "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", "type": "github" }, "original": { @@ -1380,11 +1380,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1720768451, - "narHash": "sha256-EYekUHJE2gxeo2pM/zM9Wlqw1Uw2XTJXOSAO79ksc4Y=", + "lastModified": 1720957393, + "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "7e7c39ea35c5cdd002cd4588b03a3fb9ece6fad9", + "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", "type": "github" }, "original": { @@ -1453,11 +1453,11 @@ }, "nur": { "locked": { - "lastModified": 1720908054, - "narHash": "sha256-nRmtu5zaYvzvonEZaQlORbIoZvctVy3P3YraH/ChzG0=", + "lastModified": 1721241063, + "narHash": "sha256-jBAuwmtJmSNT6xwjtGINslFK0m3R3+Ydw+xrd+a3tSE=", "owner": "nix-community", "repo": "nur", - "rev": "fc076c6c1c848d6f950303f937b26d202b23d4b0", + "rev": "f33f46c1e38b07b20a978ac39208058ab9ddedb1", "type": "github" }, "original": { @@ -1770,11 +1770,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1720479166, - "narHash": "sha256-jqvhLDXzTLTHq9ZviFOpcTmXXmnbLfz7mWhgMNipMN4=", + "lastModified": 1720926522, + "narHash": "sha256-eTpnrT6yu1vp8C0B5fxHXhgKxHoYMoYTEikQx///jxY=", "owner": "Mic92", "repo": "sops-nix", - "rev": "67035a355b1d52d2d238501f8cc1a18706979760", + "rev": "0703ba03fd9c1665f8ab68cc3487302475164617", "type": "github" }, "original": { diff --git a/scripts/README.md b/scripts/README.md deleted file mode 100644 index 117b6b8..0000000 --- a/scripts/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Packages - -All packages used are within the respective text files: - -- pacman -> pacmanpkg.txt -- crates.io -> carpkg.txt -- flatpak -> flatpkg.txt diff --git a/scripts/carpkg.txt b/scripts/carpkg.txt deleted file mode 100644 index 07fc7a6..0000000 --- a/scripts/carpkg.txt +++ /dev/null @@ -1 +0,0 @@ -paru diff --git a/scripts/flatpkg.txt b/scripts/flatpkg.txt deleted file mode 100644 index 62e07b8..0000000 --- a/scripts/flatpkg.txt +++ /dev/null @@ -1,69 +0,0 @@ -com.atlauncher.ATLauncher -com.brave.Browser -com.github.tchx84.Flatseal -com.heroicgameslauncher.hgl -com.lakoliu.Furtherance -com.obsproject.Studio -com.rustdesk.RustDesk -com.usebottles.bottles -com.valvesoftware.Steam.Utility.gamescope -de.haeckerfelix.Fragments -de.shorsh.discord-screenaudio -dev.lapce.lapce -dev.vencord.Vesktop -im.fluffychat.Fluffychat -info.beyondallreason.bar -io.freetubeapp.FreeTube -io.github.Foldex.AdwSteamGtk -io.github.lainsce.Colorway -io.github.realmazharhussain.GdmSettings -io.gitlab.theevilskeleton.Upscaler -net.ankiweb.Anki -net.davidotek.pupgui2 -nl.hjdskes.gcolor3 -one.ablaze.floorp -org.Xetibo.ReSet -org.flatpak.Builder -org.freedesktop.Platform -org.freedesktop.Platform -org.freedesktop.Platform -org.freedesktop.Platform.Compat.i386 -org.freedesktop.Platform.GL.default -org.freedesktop.Platform.GL.default -org.freedesktop.Platform.GL.default -org.freedesktop.Platform.GL.default -org.freedesktop.Platform.GL.default -org.freedesktop.Platform.GL32.default -org.freedesktop.Platform.GStreamer.gstreamer-vaapi -org.freedesktop.Platform.ffmpeg-full -org.freedesktop.Platform.ffmpeg_full.i386 -org.freedesktop.Platform.openh264 -org.freedesktop.Platform.openh264 -org.freedesktop.Sdk -org.freedesktop.Sdk -org.freedesktop.Sdk.Extension.rust-stable -org.gnome.Calendar -org.gnome.Platform -org.gnome.Platform -org.gnome.Platform -org.gnome.Platform.Compat.i386 -org.gnome.Sdk -org.gnome.Sdk -org.gnome.design.IconLibrary -org.gnome.dspy -org.gtk.Gtk3theme.adw-gtk3 -org.gtk.Gtk3theme.adw-gtk3-dark -org.kde.Platform -org.kde.Platform -org.kde.PlatformTheme.QGnomePlatform -org.kde.PlatformTheme.QGnomePlatform -org.kde.WaylandDecoration.QAdwaitaDecorations -org.kde.WaylandDecoration.QAdwaitaDecorations -org.kde.WaylandDecoration.QGnomePlatform-decoration -org.kde.WaylandDecoration.QGnomePlatform-decoration -org.onlyoffice.desktopeditors -org.pulseaudio.pavucontrol -org.winehq.Wine.DLLs.dxvk -org.winehq.Wine.gecko -org.winehq.Wine.mono -re.sonny.Workbench diff --git a/scripts/pac b/scripts/pac deleted file mode 100755 index 9a27b87..0000000 --- a/scripts/pac +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/bash - -pacfile="$HOME/.config/scripts/pacmanpkg.txt" -flatfile="$HOME/.config/scripts/flatpkg.txt" -carfile="$HOME/.config/scripts/carpkg.txt" - -save() { - pacvar=$(pacman -Q) - flatvar=$(flatpak list --columns=application | tail -n +2) - if [ "$pacfile" != ' ' ]; then - touch "$pacfile" - fi - if [ "$flatfile" != ' ' ]; then - touch "$flatfile" - fi - if [ "$carfile" != ' ' ]; then - touch "$carfile" - fi - echo "$pacvar" | awk '{ print $1 }' >"$pacfile" - echo "$flatvar" >"$flatfile" - mkdir -p $HOME/.local/bin/cargo/ - ls $HOME/.local/bin/cargo/bin/ >"$carfile" -} - -load() { - paru -S - <"$pacfile" - while read app; do - flatpak install "$app" -y - done <"$flatfile" -} - -install() { - PKG=$(pacman -Ss "^$1$") - if [ "$PKG" == '' ]; then - CHOICE="F" - read -p "Flatpak, cargo or aur? [F/c/a] " CHOICE - if [ "$CHOICE" == 'F' ] || [ "$CHOICE" == '' ]; then - flatpak install "$1" - elif [ "$CHOICE" == 'c' ]; then - mkdir -p $HOME/.local/bin/cargo/ - cargo install "$1" --root $HOME/.local/bin/cargo/ - else - echo "warning, this is an aur package!" - paru -S "$1" - fi - else - paru -S "$1" - fi - save -} - -remove() { - PKG=$(pacman -Qs "$1") - if [ "$PKG" == '' ]; then - flatpak uninstall "$1" - else - sudo pacman -R "$1" - fi - save -} - -update() { - CHOICE="Y" - read -p "Update pacman? [Y/n] " CHOICE - if [ "$CHOICE" == 'Y' ] || [ "$CHOICE" == 'y' ]; then - sudo pacman -Suy - fi - CHOICE="Y" - read -p "Update flatpak? [Y/n] " CHOICE - if [ "$CHOICE" == 'Y' ] || [ "$CHOICE" == 'y' ]; then - flatpak update - fi - CHOICE="Y" - read -p "Update AUR? [Y/n] " CHOICE - if [ "$CHOICE" == 'Y' ] || [ "$CHOICE" == 'y' ]; then - paru -Suy - fi - CHOICE="Y" -} - -if [ "$1" == "-S" ]; then - install "$2" -elif [ "$1" == "-R" ]; then - remove "$2" -elif [ "$1" == "-Suy" ]; then - update -elif [ "$1" == "save" ]; then - save -elif [ "$1" == "load" ]; then - load -fi diff --git a/scripts/pacmanpkg.txt b/scripts/pacmanpkg.txt deleted file mode 100644 index 019d5c4..0000000 --- a/scripts/pacmanpkg.txt +++ /dev/null @@ -1,2352 +0,0 @@ -Calculator -a52dec -aalib -abseil-cpp -accounts-qml-module -accountsservice -acl -acorn -acpid -adobe-source-code-pro-fonts -adw-gtk-theme -adw-gtk3 -adwaita-color-schemes -adwaita-cursors -adwaita-icon-theme -adwaita-qt5 -adwaita-qt6 -airshipper -alacritty -alembic -alsa-card-profiles -alsa-lib -alsa-plugins -alsa-topology-conf -alsa-ucm-conf -amd-ucode -amf-headers -android-tools -android-udev -ansible -ansible-core -aom -appstream -appstream-glib -appstream-qt -appstream-qt5 -archlinux-keyring -argon2 -aribb24 -aribb25 -arm-none-eabi-binutils -arm-none-eabi-gcc -arm-none-eabi-newlib -asciidoc -asio -aspnet-runtime-7.0 -assimp -at-spi2-core -atkmm -attica -attica5 -attr -aubio -audacity -audiofile -audit -autoconf -autoconf-archive -automake -avahi -avisynthplus -avr-binutils -avr-gcc -avr-libc -avrdude -awesome-terminal-fonts -aws-c-auth -aws-c-cal -aws-c-common -aws-c-compression -aws-c-event-stream -aws-c-http -aws-c-io -aws-c-mqtt -aws-c-s3 -aws-c-sdkutils -aws-checksums -aws-crt-cpp -aws-sdk-cpp -ayatana-ido -babl -baloo -baloo-widgets -base -bash -bat -bc -bcprov -bear -biber -binutils -bison -blas -blender -blosc -blueman -blueprint-compiler -bluez -bluez-libs -bolt -boost -boost-libs -botan -botan2 -box2d -breeze -breeze-icons -breezy -bridge-utils -brightnessctl -brotli -btrfs-progs -bubblewrap -bzip2 -c-ares -ca-certificates -ca-certificates-mozilla -ca-certificates-utils -cabextract -cage -cairo -cairomm -cairomm-1.16 -calf -cambalache-git -cantarell-fonts -capstone -catimg -cblas -cdparanoia -cdrtools -chafa -check -chromaprint -chrono-date -cifs-utils -cjson -clamav -clang -clang15 -clang16 -clinfo -clucene -cmake -cmark -cmatrix -cmocka -cmus -code -coeurl -colord -colord-gtk-common -colord-gtk4 -comgr -compiler-rt -compiler-rt15 -compiler-rt16 -confuse -containerd -convertlit -copyq -corectrl -coreutils -cpio -cppdap -cpupower -cracklib -cronie -cryptsetup -ctags -cups -cups-filters -cups-pk-helper -curl -cython -d-spy -dash -dav1d -db -db5.3 -dbus -dbus-broker -dbus-broker-units -dbus-glib -dbus-python -dconf -dconf-editor -debootstrap -debugedit -default-cursors -deno -desktop-file-utils -devhelp -device-mapper -dfu-programmer -dfu-util -diffutils -djvulibre -dkms -dmidecode -dmraid -dnssec-anchors -docbook-xml -docbook-xsl -docker -docker-compose -dos2unix -dosfstools -dotnet-host -dotnet-runtime -dotnet-runtime-6.0 -dotnet-runtime-7.0 -dotnet-sdk -dotnet-sdk-6.0 -dotnet-sdk-7.0 -dotnet-targeting-pack -dotnet-targeting-pack-6.0 -dotnet-targeting-pack-7.0 -double-conversion -draco -drawing -dtc -duktape -e2fsprogs -easyeffects -ebook-tools -editline -editorconfig-core-c -edk2-ovmf -efibootmgr -efivar -electron -electron25 -electron27 -electron28 -electron29 -element-web -elfutils -embree -embree3 -enchant -eslint -ethtool -evince -evolution -evolution-data-server -exempi -exiv2 -exo -expat -eza -faac -faad2 -fakeroot -fastfetch -faudio -fcft -fd -ffmpeg -ffmpeg-obs-debug -ffmpegthumbnailer -ffnvcodec-headers -fftw -file -filesystem -findutils -firefox -firefox-developer-edition -fish -fisher -flac -flatpak -flatpak-builder -flex -fluidsynth -fmt -foliate -fontconfig -foomatic-db-engine -foot -frameworkintegration -frameworkintegration5 -freeglut -freeimage -freerdp -freetype2 -frei0r-plugins -fribidi -ftgl -ftl-sdk -fuse-common -fuse2 -fuse3 -fzf -gamemode -gamescope -gavl -gawk -gc -gcc -gcc-libs -gcr -gcr-4 -gd -gdb -gdb-common -gdbm -gdk-pixbuf2 -gdm -gegl -gendesk -geoclue -geocode-glib -geocode-glib-2 -geocode-glib-common -gettext -ghc-libs -ghostscript -giflib -gimp -girara -git -gitoxide -gitui -gjs -gklib -glade -glava -glew -glfw -glib-networking -glib2 -glib2-docs -glibc -glibmm -glibmm-2.68 -glm -glow -glslang -glu -gmp -gnome-autoar -gnome-bluetooth-3.0 -gnome-boxes -gnome-builder -gnome-color-manager -gnome-control-center -gnome-desktop -gnome-desktop-4 -gnome-desktop-common -gnome-disk-utility -gnome-keyring -gnome-online-accounts -gnome-remote-desktop -gnome-session -gnome-settings-daemon -gnome-shell -gnome-software -gnome-tweaks -gnupg -gnutls -go -gobject-introspection -gobject-introspection-runtime -godot -gperftools -gpgme -gpm -gptfdisk -gradience-git -gradle -graphene -graphicsmagick -graphite -graphviz -greetd -greetd-agreety -greetd-regreet -grep -grilo -grim -groff -grpc -gsettings-desktop-schemas -gsfonts -gsl -gsm -gsound -gspell -gssdp -gst-libav -gst-plugin-gtk -gst-plugin-pipewire -gst-plugin-qmlgl -gst-plugin-va -gst-plugins-bad -gst-plugins-bad-libs -gst-plugins-base -gst-plugins-base-libs -gst-plugins-good -gst-plugins-ugly -gstreamer -gstreamer-vaapi -gtk-doc -gtk-engine-murrine -gtk-layer-shell -gtk-update-icon-cache -gtk-vnc -gtk2 -gtk3 -gtk4 -gtkdatabox -gtkmm -gtkmm-4.0 -gtkmm3 -gtksourceview3 -gtksourceview4 -gtksourceview5 -gts -gucharmap -guile -gumbo-parser -gupnp -gupnp-dlna -gupnp-igd -gvfs -gvfs-gphoto2 -gvfs-smb -gzip -harfbuzz -harfbuzz-icu -haskell-aeson -haskell-aeson-pretty -haskell-ansi-terminal -haskell-ansi-wl-pprint -haskell-appar -haskell-asn1-encoding -haskell-asn1-parse -haskell-asn1-types -haskell-assoc -haskell-async -haskell-attoparsec -haskell-attoparsec-aeson -haskell-attoparsec-iso8601 -haskell-auto-update -haskell-base-compat -haskell-base-compat-batteries -haskell-base-orphans -haskell-base-unicode-symbols -haskell-base16-bytestring -haskell-base64 -haskell-base64-bytestring -haskell-basement -haskell-bifunctors -haskell-bitvec -haskell-blaze-builder -haskell-blaze-html -haskell-blaze-markup -haskell-boring -haskell-bsb-http-chunked -haskell-byteorder -haskell-call-stack -haskell-case-insensitive -haskell-cassava -haskell-cereal -haskell-citeproc -haskell-cmdargs -haskell-colour -haskell-commonmark -haskell-commonmark-extensions -haskell-commonmark-pandoc -haskell-comonad -haskell-conduit -haskell-conduit-extra -haskell-constraints -haskell-contravariant -haskell-cookie -haskell-crypton -haskell-crypton-connection -haskell-crypton-x509 -haskell-crypton-x509-store -haskell-crypton-x509-system -haskell-crypton-x509-validation -haskell-data-array-byte -haskell-data-default -haskell-data-default-class -haskell-data-default-instances-containers -haskell-data-default-instances-dlist -haskell-data-default-instances-old-locale -haskell-data-fix -haskell-dec -haskell-digest -haskell-digits -haskell-distributive -haskell-dlist -haskell-doclayout -haskell-doctemplates -haskell-easy-file -haskell-emojis -haskell-erf -haskell-fast-logger -haskell-file-embed -haskell-foldable1-classes-compat -haskell-generically -haskell-ghc-bignum-orphans -haskell-glob -haskell-gridtables -haskell-haddock-library -haskell-hashable -haskell-hourglass -haskell-hslua -haskell-hslua-aeson -haskell-hslua-classes -haskell-hslua-core -haskell-hslua-list -haskell-hslua-marshalling -haskell-hslua-module-doclayout -haskell-hslua-module-path -haskell-hslua-module-system -haskell-hslua-module-text -haskell-hslua-module-version -haskell-hslua-module-zip -haskell-hslua-objectorientation -haskell-hslua-packaging -haskell-hslua-repl -haskell-hslua-typing -haskell-http-api-data -haskell-http-client -haskell-http-client-tls -haskell-http-date -haskell-http-media -haskell-http-types -haskell-http2 -haskell-hunit -haskell-indexed-traversable -haskell-indexed-traversable-instances -haskell-integer-logarithms -haskell-iproute -haskell-ipynb -haskell-isocline -haskell-jira-wiki-markup -haskell-juicypixels -haskell-lexer -haskell-libyaml -haskell-lpeg -haskell-lua -haskell-memory -haskell-mime-types -haskell-mmorph -haskell-monad-control -haskell-mono-traversable -haskell-network -haskell-network-byte-order -haskell-network-uri -haskell-old-locale -haskell-old-time -haskell-onetuple -haskell-only -haskell-optparse-applicative -haskell-ordered-containers -haskell-pandoc -haskell-pandoc-lua-engine -haskell-pandoc-lua-marshal -haskell-pandoc-server -haskell-pandoc-types -haskell-pem -haskell-pretty-show -haskell-prettyprinter -haskell-primitive -haskell-psqueues -haskell-quickcheck -haskell-random -haskell-recv -haskell-regex-base -haskell-regex-tdfa -haskell-resourcet -haskell-safe -haskell-safe-exceptions -haskell-scientific -haskell-semialign -haskell-semigroupoids -haskell-servant -haskell-servant-server -haskell-sha -haskell-simple-sendfile -haskell-singleton-bool -haskell-skylighting -haskell-skylighting-core -haskell-skylighting-format-ansi -haskell-skylighting-format-blaze-html -haskell-skylighting-format-context -haskell-skylighting-format-latex -haskell-socks -haskell-some -haskell-sop-core -haskell-split -haskell-splitmix -haskell-statevar -haskell-streaming-commons -haskell-strict -haskell-string-conversions -haskell-syb -haskell-tagged -haskell-tagsoup -haskell-temporary -haskell-texmath -haskell-text-conversions -haskell-text-icu -haskell-text-short -haskell-th-abstraction -haskell-th-compat -haskell-th-lift -haskell-th-lift-instances -haskell-these -haskell-time-compat -haskell-time-manager -haskell-tls -haskell-toml-parser -haskell-transformers-base -haskell-transformers-compat -haskell-type-equality -haskell-typed-process -haskell-typst -haskell-typst-symbols -haskell-unicode-collation -haskell-unicode-data -haskell-unicode-transforms -haskell-uniplate -haskell-unix-compat -haskell-unix-time -haskell-unliftio -haskell-unliftio-core -haskell-unordered-containers -haskell-utf8-string -haskell-uuid-types -haskell-vault -haskell-vector -haskell-vector-algorithms -haskell-vector-stream -haskell-wai -haskell-wai-app-static -haskell-wai-cors -haskell-wai-extra -haskell-wai-logger -haskell-warp -haskell-witherable -haskell-word8 -haskell-xml -haskell-xml-conduit -haskell-xml-types -haskell-yaml -haskell-zip-archive -haskell-zlib -hdf5 -helix -hexyl -hicolor-icon-theme -hidapi -highway -hplip -hsa-rocr -hsakmt-roct -hslua-cli -http-parser -hunspell -hunspell-en_us -hwdata -hwloc -hyphen -hyprcursor-git -hyprdock -hyprlang-git -iana-etc -icu -iio-sensor-proxy -ijs -imagemagick -imath -imlib2 -imv -iniparser -inkscape -intel-oneapi-common -intel-oneapi-compiler-dpcpp-cpp-runtime-libs -intel-oneapi-compiler-shared-runtime-libs -intel-oneapi-tbb -iproute2 -iptables -iputils -iso-codes -jansson -jasper -java-commons-lang -java-environment-common -java-runtime-common -jbig2dec -jbigkit -jdk17-openjdk -jemalloc -jq -jre17-openjdk -jre17-openjdk-headless -js102 -js115 -js91 -json-c -json-glib -jsoncpp -jsonrpc-glib -just -jxrlib -kaccounts-integration -kactivities-stats5 -kactivities5 -kactivitymanagerd -kanshi -karchive -karchive5 -kauth -kauth5 -kbd -kbookmarks -kbookmarks5 -kcmutils -kcmutils5 -kcodecs -kcodecs5 -kcolorscheme -kcompletion -kcompletion5 -kconfig -kconfig5 -kconfigwidgets -kconfigwidgets5 -kcontacts -kcontacts5 -kcoreaddons -kcoreaddons5 -kcrash -kcrash5 -kdbusaddons -kdbusaddons5 -kde-cli-tools -kdeclarative -kdeclarative5 -kdeconnect -kdecoration -kded -kded5 -kdenlive -kdesu -kdesu5 -kdnssd -kdnssd5 -kdsoap-qt5 -kdsoap-qt6 -kdsoap-ws-discovery-client -keepassxc -keyutils -kfilemetadata -kfilemetadata5 -kglobalaccel -kglobalaccel5 -kglobalacceld -kguiaddons -kguiaddons5 -kholidays -kholidays5 -ki18n -ki18n5 -kiconthemes -kiconthemes5 -kidletime -kidletime5 -kio -kio-fuse -kio5 -kirigami -kirigami-addons -kirigami-addons5 -kirigami2 -kitemmodels -kitemmodels5 -kitemviews -kitemviews5 -kitty -kitty-shell-integration -kitty-terminfo -kjobwidgets -kjobwidgets5 -klavaro -kmod -knewstuff -knewstuff5 -knotifications -knotifications5 -knotifyconfig -knotifyconfig5 -kooha -kpackage -kpackage5 -kparts -kparts5 -kpeople -kpeople5 -kpeoplevcard -kpipewire -kpty -kpty5 -kquickcharts -kquickcharts5 -krb5 -krita -krunner -krunner5 -kscreenlocker -kservice -kservice5 -kstatusnotifieritem -ksvg -ksystemstats -ktexteditor -ktexteditor5 -ktextwidgets -ktextwidgets5 -kuserfeedback -kwallet -kwallet5 -kwayland -kwayland5 -kwidgetsaddons -kwidgetsaddons5 -kwin -kwindowsystem -kwindowsystem5 -kxmlgui -kxmlgui5 -l-smash -ladspa -lame -lapack -layer-shell-qt -lazygit -lcms2 -ldb -ldns -lensfun -leptonica -less -level-zero-loader -lib2geom -lib32-acl -lib32-alsa-lib -lib32-alsa-plugins -lib32-at-spi2-core -lib32-attr -lib32-brotli -lib32-bzip2 -lib32-cairo -lib32-clang -lib32-curl -lib32-dbus -lib32-e2fsprogs -lib32-expat -lib32-faudio -lib32-flac -lib32-fontconfig -lib32-freetype2 -lib32-fribidi -lib32-gcc-libs -lib32-gdk-pixbuf2 -lib32-gettext -lib32-glib2 -lib32-glibc -lib32-glu -lib32-gmp -lib32-gnutls -lib32-gtk2 -lib32-harfbuzz -lib32-icu -lib32-keyutils -lib32-krb5 -lib32-lcms2 -lib32-libasyncns -lib32-libcap -lib32-libcups -lib32-libdatrie -lib32-libdrm -lib32-libelf -lib32-libffi -lib32-libgcrypt -lib32-libglvnd -lib32-libgpg-error -lib32-libice -lib32-libidn2 -lib32-libjpeg-turbo -lib32-libldap -lib32-libnghttp2 -lib32-libnghttp3 -lib32-libnl -lib32-libogg -lib32-libpcap -lib32-libpciaccess -lib32-libpng -lib32-libpsl -lib32-libpulse -lib32-libsm -lib32-libsndfile -lib32-libssh2 -lib32-libtasn1 -lib32-libthai -lib32-libtiff -lib32-libtirpc -lib32-libunistring -lib32-libunwind -lib32-libvorbis -lib32-libx11 -lib32-libxau -lib32-libxcb -lib32-libxcomposite -lib32-libxcrypt -lib32-libxcrypt-compat -lib32-libxcursor -lib32-libxdamage -lib32-libxdmcp -lib32-libxext -lib32-libxfixes -lib32-libxft -lib32-libxi -lib32-libxinerama -lib32-libxkbcommon -lib32-libxml2 -lib32-libxrandr -lib32-libxrender -lib32-libxshmfence -lib32-libxss -lib32-libxtst -lib32-libxxf86vm -lib32-llvm-libs -lib32-lm_sensors -lib32-mesa -lib32-ncurses -lib32-nettle -lib32-nspr -lib32-nss -lib32-opencl-clover-mesa -lib32-opencl-rusticl-mesa -lib32-openssl -lib32-opus -lib32-p11-kit -lib32-pam -lib32-pango -lib32-pcre2 -lib32-pixman -lib32-sdl2 -lib32-spirv-llvm-translator -lib32-spirv-tools -lib32-sqlite -lib32-systemd -lib32-util-linux -lib32-vulkan-icd-loader -lib32-vulkan-radeon -lib32-wayland -lib32-xcb-util-keysyms -lib32-xz -lib32-zlib -lib32-zstd -libabw -libaccounts-glib -libaccounts-qt -libadwaita -libaec -libaio -libajantv2-debug -libao -libappindicator-gtk3 -libarchive -libass -libassuan -libasyncns -libatasmart -libatomic_ops -libavc1394 -libavif -libavtp -libayatana-appindicator -libayatana-indicator -libb2 -libblockdev -libblockdev-crypto -libblockdev-fs -libblockdev-loop -libblockdev-mdraid -libblockdev-nvme -libblockdev-part -libblockdev-swap -libbluray -libbpf -libbs2b -libbsd -libburn -libbytesize -libc++ -libc++abi -libcaca -libcacard -libcamera -libcamera-ipa -libcanberra -libcap -libcap-ng -libcddb -libcdio -libcdio-paranoia -libcdr -libclc -libcloudproviders -libcmis -libcolord -libconfig -libcpuid -libcue -libcups -libcupsfilters -libdaemon -libdatrie -libdbusmenu-glib -libdbusmenu-gtk3 -libdbusmenu-qt5 -libdc1394 -libdca -libde265 -libdecor -libdeflate -libdex -libdiscid -libdisplay-info -libdmtx -libdovi -libdrm -libdv -libdvbpsi -libdvdcss -libdvdnav -libdvdread -libe-book -libebml -libebur128 -libedit -libei -libelf -libepoxy -libepubgen -libetonyek -libevdev -libevent -libexif -libexttextcat -libfabric -libfakekey -libfdk-aac -libffi -libfontenc -libfreeaptx -libfreehand -libftdi -libgcrypt -libgdm -libgee -libgexiv2 -libgirepository -libgit2 -libgit2-glib -libglvnd -libgme -libgnomekbd -libgoa -libgoom2 -libgpg-error -libgphoto2 -libgrss -libgsf -libgssglue -libgtop -libgudev -libgusb -libgweather-4 -libgxps -libhandy -libharu -libheif -libibus -libical -libice -libid3tag -libidn -libidn2 -libiec61883 -libimagequant -libimobiledevice -libindicator-gtk3 -libinih -libinput -libinstpatch -libiptcdata -libisl -libisoburn -libisofs -libixion -libjpeg-turbo -libjxl -libkate -libkdcraw5 -libkexiv2 -libksba -libkscreen -libksysguard -liblangtag -liblc3 -libldac -libldap -libliftoff -liblo -liblqr -liblrdf -liblsp-r3d-glx-lib -libltc -libluv -liblzf -libmad -libmalcontent -libmanette -libmatroska -libmbim -libmd -libmfx -libmicrodns -libmikmod -libmm-glib -libmms -libmng -libmnl -libmodplug -libmpc -libmpcdec -libmpdclient -libmpeg2 -libmspack -libmspub -libmtp -libmupdf -libmwaw -libmypaint -libmysofa -libnautilus-extension -libnbd -libndp -libnet -libnetfilter_conntrack -libnewt -libnfnetlink -libnfs -libnftnl -libnghttp2 -libnghttp3 -libngtcp2 -libnice -libnl -libnm -libnma -libnma-common -libnma-gtk4 -libnotify -libnsgif -libnsl -libnumbertext -libnvme -liboauth -libodfgen -libogg -libolm -libomxil-bellagio -libopenmpt -liborcus -libosinfo -libotf -libp11-kit -libpackagekit-glib -libpagemaker -libpanel -libpaper -libpcap -libpciaccess -libpeas -libpeas-2 -libpgm -libphonenumber -libpipeline -libpipewire -libplacebo -libplasma -libplist -libpng -libportal -libportal-gtk3 -libportal-gtk4 -libppd -libproxy -libpsl -libpst -libpulse -libpwquality -libqaccessibilityclient-qt5 -libqaccessibilityclient-qt6 -libqalculate -libqmi -libqrtr-glib -libqxp -libraqm -libraw -libraw1394 -libreoffice-fresh -librest -librevenge -librist -librsvg -librsync -libsamplerate -libsasl -libsass -libsbsms -libscfg -libseccomp -libsecret -libshout -libsidplay -libsidplayfp -libsigc++ -libsigc++-3.0 -libsixel -libslirp -libsm -libsndfile -libsodium -libsoup -libsoup3 -libsoxr -libspecbleach -libspectre -libspeechd -libspiro -libspnav -libsquish -libsrtp -libssh -libssh2 -libstaroffice -libstemmer -libsynctex -libsysprof-capture -libtar -libtasn1 -libteam -libtermkey -libthai -libtheora -libtiff -libtiger -libtirpc -libtommath -libtool -libtorrent -libtpms -libtraceevent -libtracefs -libunibreak -libunistring -libunwind -libupnp -liburcu -liburing -libusb -libusb-compat -libusbmuxd -libutempter -libutf8proc -libuv -libva -libva-mesa-driver -libva-utils -libvarlink -libvdpau -libverto -libvirt -libvirt-glib -libvirt-python -libvisio -libvisual -libvncserver -libvorbis -libvpl -libvpx -libvterm -libvterm01 -libwacom -libwbclient -libwebp -libwireplumber -libwmf -libwpd -libwpe -libwpg -libwps -libwslay -libx11 -libxau -libxaw -libxcb -libxcomposite -libxcrypt -libxcrypt-compat -libxcursor -libxcvt -libxdamage -libxdg-basedir -libxdmcp -libxdp -libxext -libxfce4ui -libxfce4util -libxfixes -libxfont2 -libxft -libxi -libxinerama -libxkbcommon -libxkbcommon-x11 -libxkbfile -libxklavier -libxml2 -libxmlb -libxmlrpc -libxmu -libxpm -libxpresent -libxrandr -libxrender -libxres -libxshmfence -libxslt -libxss -libxt -libxtst -libxv -libxxf86vm -libyaml -libytnef -libyuv -libzip -libzmf -licenses -lilv -linux-api-headers -linux-firmware -linux-firmware-whence -linux-headers -linux-zen -linux-zen-headers -lirc -live-media -lld -lld16 -lldb -llvm -llvm-libs -llvm15-libs -llvm16-libs -lm_sensors -lmdb -log4cplus -lowdown -lpsolve -lsb-release -lsd -lsof -lua -lua-lpeg -lua51 -lua51-lgi -lua51-lpeg -luajit -lutris -lv2 -lvm2 -lxappearance -lz4 -lzo -m17n-db -m17n-lib -m4 -mailcap -make -man-db -mangohud -materialx -mbedtls -mbedtls2 -md4c -mdadm -media-player-info -mesa -mesa-utils -meson -metis -miller -milou -mimalloc -mingw-w64-binutils -mingw-w64-crt -mingw-w64-gcc -mingw-w64-headers -mingw-w64-winpthreads -miniupnpc -minizip -minizip-ng -mjpegtools -mkinitcpio -mkinitcpio-busybox -mlt -mobile-broadband-provider-info -modemmanager -modemmanager-qt -modemmanager-qt5 -mold -mpc -mpd -mpfr -mpg123 -mpv -msgpack-c -mtdev -mtools -mtpfs -mtxclient -mujs -multipath-tools -mutter -mypaint-brushes1 -nasm -nautilus -nautilus-image-converter -nautilus-sendto -nautilus-share -ncmpcpp -ncurses -ndctl -neon -neovide -neovim-git -net-snmp -netpbm -netstandard-targeting-pack -nettle -network-manager-applet -networkmanager -networkmanager-openconnect -networkmanager-openvpn -nextcloud-client -nheko -ninja -nix -nix-busybox -nlohmann-json -nm-connection-editor -nnn -node-gyp -nodejs -nodejs-nopt -noise-suppression-for-voice -noto-fonts -noto-fonts-emoji -npm -npth -nspr -nss -ntfs-3g -numactl -nushell -nuspell -oath-toolkit -ocean-sound-theme -ocl-icd -onefetch -onetbb -oniguruma -openal -opencl-clover-mesa -opencl-headers -opencl-rusticl-mesa -opencollada -opencolorio -openconnect -opencore-amr -openexr -openimagedenoise -openimageio -openjpeg2 -openmpi -openpgl -openpmix -openshadinglanguage -openssh -openssl -opensubdiv -openucx -openvdb -openvpn -openvr -openxr -opus -opusfile -orc -osinfo-db -ostree -oxicalc -oxygen-sounds -p11-kit -p7zip -pacman -pacman-contrib -pacman-mirrorlist -pahole -pam -pambase -pandoc-cli -pango -pangomm -pangomm-2.48 -papirus-icon-theme -parted -pass -patch -pavucontrol -pavucontrol-qt -pciutils -pcre -pcre2 -pcsclite -pdf2svg -pdfgrep -pdftk -perl -perl-alien-build -perl-alien-libxml2 -perl-autovivification -perl-b-hooks-endofscope -perl-business-isbn -perl-business-isbn-data -perl-business-ismn -perl-business-issn -perl-capture-tiny -perl-class-accessor -perl-class-data-inheritable -perl-class-inspector -perl-class-load -perl-class-singleton -perl-clone -perl-data-compare -perl-data-dump -perl-data-optlist -perl-data-uniqid -perl-datetime -perl-datetime-calendar-julian -perl-datetime-format-builder -perl-datetime-format-strptime -perl-datetime-locale -perl-datetime-timezone -perl-dbi -perl-devel-stacktrace -perl-dist-checkconflicts -perl-encode-locale -perl-error -perl-eval-closure -perl-exception-class -perl-exporter-tiny -perl-ffi-checklib -perl-file-chdir -perl-file-find-rule -perl-file-homedir -perl-file-listing -perl-file-sharedir -perl-file-sharedir-install -perl-file-slurp-tiny -perl-file-slurper -perl-file-which -perl-html-parser -perl-html-tagset -perl-http-cookiejar -perl-http-cookies -perl-http-daemon -perl-http-date -perl-http-message -perl-http-negotiate -perl-io-html -perl-io-socket-ssl -perl-io-string -perl-ipc-run3 -perl-libwww -perl-lingua-translit -perl-list-allutils -perl-list-moreutils -perl-list-moreutils-xs -perl-list-someutils -perl-list-utilsby -perl-log-log4perl -perl-lwp-mediatypes -perl-lwp-protocol-https -perl-mailtools -perl-math-round -perl-mime-charset -perl-module-implementation -perl-module-runtime -perl-mozilla-ca -perl-mro-compat -perl-namespace-autoclean -perl-namespace-clean -perl-net-http -perl-net-ssleay -perl-number-compare -perl-package-deprecationmanager -perl-package-stash -perl-package-stash-xs -perl-params-util -perl-params-validate -perl-params-validationcompiler -perl-parse-recdescent -perl-parse-yapp -perl-path-tiny -perl-perlio-utf8-strict -perl-regexp-common -perl-role-tiny -perl-sort-key -perl-specio -perl-sub-exporter -perl-sub-exporter-progressive -perl-sub-identify -perl-sub-install -perl-sub-name -perl-test-fatal -perl-text-bibtex -perl-text-csv -perl-text-glob -perl-text-roman -perl-tie-cycle -perl-timedate -perl-try-tiny -perl-unicode-linebreak -perl-uri -perl-variable-magic -perl-www-robotrules -perl-xml-libxml -perl-xml-libxml-simple -perl-xml-libxslt -perl-xml-namespacesupport -perl-xml-sax -perl-xml-sax-base -perl-xml-writer -perl-yaml-tiny -phodav -phonon-qt5 -phonon-qt5-gstreamer -pinentry -pipewire -pipewire-alsa -pipewire-audio -pipewire-jack -pipewire-pulse -pixman -pkcs11-helper -pkgconf -plantuml -plasma-activities -plasma-activities-stats -plasma-framework5 -plasma5support -playerctl -pnpm -polkit -polkit-gnome -polkit-qt5 -polkit-qt6 -poppler -poppler-data -poppler-glib -poppler-qt5 -poppler-qt6 -popt -portaudio -portmidi -portsmf -postgresql-libs -potrace -powerline -powerline-common -ppp -prison -prison5 -procps-ng -projectm -protobuf -prrte -psmisc -ptex -pugixml -pulseaudio-qt -purpose -purpose5 -pybind11 -pyside2 -pyside6 -pystring -python -python-aiohttp -python-aiosignal -python-annotated-types -python-anyascii -python-anytree -python-appdirs -python-argcomplete -python-argon2-cffi-bindings -python-argon2_cffi -python-async-timeout -python-attrs -python-autocommand -python-babel -python-bcrypt -python-beautifulsoup4 -python-build -python-cachecontrol -python-cachy -python-cairo -python-certifi -python-cffi -python-chardet -python-charset-normalizer -python-cleo -python-click -python-cmake-build-extension -python-colorama -python-configobj -python-construct -python-contourpy -python-coverage -python-crashtest -python-cryptography -python-cssselect -python-cssselect2 -python-cssutils -python-cycler -python-dacite -python-dateutil -python-decorator -python-distlib -python-distro -python-docopt -python-docutils -python-dotty-dict -python-dulwich -python-evdev -python-fastbencode -python-fastjsonschema -python-filelock -python-fonttools -python-frozenlist -python-future -python-gitdb -python-gitpython -python-gobject -python-halo -python-hid -python-hjson -python-html5lib -python-idna -python-imagesize -python-importlib-metadata -python-inflect -python-iniconfig -python-installer -python-jaraco.classes -python-jaraco.context -python-jaraco.functools -python-jaraco.test -python-jaraco.text -python-jeepney -python-jinja -python-jsonschema -python-jsonschema-specifications -python-keyring -python-kiwisolver -python-lark-parser -python-libsass -python-lockfile -python-log_symbols -python-lxml -python-mako -python-markdown -python-markupsafe -python-material-color-utilities -python-matplotlib -python-merge3 -python-milc -python-mock -python-moddb -python-more-itertools -python-msgpack -python-multidict -python-nautilus -python-nspektr -python-numpy -python-opengl -python-ordered-set -python-packaging -python-paramiko -python-patiencediff -python-pbr -python-pexpect -python-pillow -python-pip -python-pipenv -python-pipx -python-pkginfo -python-platformdirs -python-pluggy -python-ply -python-poetry -python-poetry-core -python-poetry-plugin-export -python-powerline -python-psutil -python-ptyprocess -python-pycparser -python-pycryptodomex -python-pycups -python-pycurl -python-pydantic -python-pydantic-core -python-pygments -python-pykeepass -python-pynacl -python-pyotp -python-pyparsing -python-pyproject-hooks -python-pyrate-limiter -python-pyrsistent -python-pyserial -python-pytest -python-pytz -python-pyusb -python-rapidfuzz -python-referencing -python-regex -python-reportlab -python-requests -python-requests-toolbelt -python-resolvelib -python-rpds-py -python-secretstorage -python-setuptools -python-setuptools-scm -python-shellingham -python-shiboken2 -python-six -python-smmap -python-snowballstemmer -python-soupsieve -python-sphinx -python-sphinx-alabaster-theme -python-sphinxcontrib-applehelp -python-sphinxcontrib-devhelp -python-sphinxcontrib-htmlhelp -python-sphinxcontrib-jsmath -python-sphinxcontrib-qthelp -python-sphinxcontrib-serializinghtml -python-spinners -python-svglib -python-termcolor -python-tinycss2 -python-toml -python-tomli -python-tomlkit -python-toolz -python-tqdm -python-trove-classifiers -python-typing_extensions -python-urllib3 -python-userpath -python-validate-pyproject -python-validators -python-virtualenv -python-virtualenv-clone -python-webencodings -python-werkzeug -python-wheel -python-xlib -python-yaml -python-yapsy -python-yarl -python-zipp -python-zstandard -python-zxcvbn -qca-qt5 -qca-qt6 -qemu-audio-alsa -qemu-audio-dbus -qemu-audio-jack -qemu-audio-oss -qemu-audio-pa -qemu-audio-pipewire -qemu-audio-sdl -qemu-audio-spice -qemu-base -qemu-block-curl -qemu-block-dmg -qemu-block-nfs -qemu-block-ssh -qemu-chardev-spice -qemu-common -qemu-desktop -qemu-hw-display-qxl -qemu-hw-display-virtio-gpu -qemu-hw-display-virtio-gpu-gl -qemu-hw-display-virtio-gpu-pci -qemu-hw-display-virtio-gpu-pci-gl -qemu-hw-display-virtio-vga -qemu-hw-display-virtio-vga-gl -qemu-hw-s390x-virtio-gpu-ccw -qemu-hw-usb-host -qemu-hw-usb-redirect -qemu-hw-usb-smartcard -qemu-img -qemu-pr-helper -qemu-system-x86 -qemu-system-x86-firmware -qemu-tools -qemu-ui-curses -qemu-ui-dbus -qemu-ui-egl-headless -qemu-ui-gtk -qemu-ui-opengl -qemu-ui-sdl -qemu-ui-spice-app -qemu-ui-spice-core -qemu-vhost-user-gpu -qgnomeplatform-qt5 -qgnomeplatform-qt6 -qhull -qmk -qpdf -qqc2-breeze-style -qqc2-desktop-style -qqc2-desktop-style5 -qrencode -qt5-3d -qt5-base -qt5-charts -qt5-connectivity -qt5-datavis3d -qt5-declarative -qt5-doc -qt5-examples -qt5-gamepad -qt5-graphicaleffects -qt5-imageformats -qt5-location -qt5-lottie -qt5-multimedia -qt5-networkauth -qt5-purchasing -qt5-quick3d -qt5-quickcontrols -qt5-quickcontrols2 -qt5-quicktimeline -qt5-remoteobjects -qt5-script -qt5-scxml -qt5-sensors -qt5-serialbus -qt5-serialport -qt5-speech -qt5-svg -qt5-tools -qt5-translations -qt5-virtualkeyboard -qt5-wayland -qt5-webchannel -qt5-webengine -qt5-webglplugin -qt5-websockets -qt5-webview -qt5-x11extras -qt5-xmlpatterns -qt5ct -qt6-3d -qt6-5compat -qt6-base -qt6-charts -qt6-connectivity -qt6-datavis3d -qt6-declarative -qt6-doc -qt6-examples -qt6-imageformats -qt6-languageserver -qt6-lottie -qt6-multimedia -qt6-multimedia-ffmpeg -qt6-networkauth -qt6-positioning -qt6-quick3d -qt6-quicktimeline -qt6-remoteobjects -qt6-scxml -qt6-sensors -qt6-serialbus -qt6-serialport -qt6-shadertools -qt6-speech -qt6-svg -qt6-tools -qt6-translations -qt6-virtualkeyboard -qt6-wayland -qt6-webchannel -qt6-webengine -qt6-websockets -qt6-webview -qt6ct -qtkeychain-qt5 -qtractor -quazip-qt5 -ragel -rapidjson -rapidyaml -raptor -rasqal -rav1e -re2 -readline -redland -remmina -rest -rhash -rio -rio-terminfo -ripgrep -rkhunter -rnnoise -rnote -rocm-core -rocm-device-libs -rocm-opencl-runtime -rocm-opencl-sdk -rofi-calc -rofi-lbonn-wayland-git -rpm-sequoia -rpm-tools -rsync -rtkit -rtmpdump -rtorrent -rubberband -run-parts -runc -rust-bindgen -rustup -s2n-tls -samba -sassc -sbc -scdoc -schedtool -scour -sdbus-cpp -sdl12-compat -sdl2 -sdl2_image -sdl_image -seabios -seahorse -seatd -sed -semver -sequoia-sq -serd -shaderc -shadow -shared-mime-info -shiboken6 -signon-kwallet-extension -signon-plugin-oauth2 -signon-ui -signond -slang -slurp -smbclient -snapper -snappy -snapshot -sndio -solid -solid5 -sonnet -sonnet5 -sord -sound-theme-freedesktop -soundtouch -source-highlight -spandsp -spdlog -speex -speexdsp -spice -spice-gtk -spice-protocol -spirv-llvm-translator -spirv-tools -spotifyd -sqlcipher -sqlite -sratom -srt -startup-notification -steam -steamtinkerlaunch -stoken -sudo -suil -suitesparse -sushi -svt-av1 -svt-hevc -swappy -sway -swayimg -swaylock -swig -syndication -syndication5 -syntax-highlighting -syntax-highlighting5 -sysfsutils -sysprof -system-config-printer -systemd -systemd-libs -systemd-sysvcompat -systemsettings -taglib -talloc -tar -tcl -tdb -tecla -tectonic -template-glib -tesseract -tesseract-data-eng -tesseract-data-osd -testdisk -tevent -texinfo -thin-provisioning-tools -threadweaver5 -thunar -thunderbird -timeshift -tinycompress -tinyxml -tomlplusplus -totem -totem-pl-parser -tpm2-tss -tracker3 -tracker3-miners -tree -tree-sitter-git -ts-node -tslib -ttc-iosevka -ttf-hack -ttf-jetbrains-mono -ttf-jetbrains-mono-nerd -ttf-liberation -ttf-linux-libertine -ttf-monofur -ttf-nerd-fonts-symbols -ttf-nerd-fonts-symbols-common -ttf-noto-nerd -twolame -typescript -typescript-language-server -typst -tzdata -uchardet -udisks2 -ufw -unibilium -unoconv -unrar -unzip -upower -usbmuxd -usbredir -usbutils -usd -util-linux -util-linux-libs -uutils-coreutils -v4l-utils -v4l2loopback-dkms -vala -valabind -vamp-plugin-sdk -vapoursynth -vcdimager -vde2 -vid.stab -vim -vim-runtime -virglrenderer -virt-install -virt-manager -virtiofsd -virtualbox -virtualbox-host-dkms -vlc-luajit-debug -vmaf -volume_key -vpnc -vte-common -vte3 -vte4 -vulkan-headers -vulkan-icd-loader -vulkan-radeon -vulkan-validation-layers -wavpack -waybar -wayland -wayland-protocols -wayland-utils -webkit2gtk -webkit2gtk-4.1 -webkitgtk-6.0 -webrtc-audio-processing -webrtc-audio-processing-1 -websocketpp -wget -which -wildmidi -wine -wireplumber -wl-clipboard -wlroots -wlroots0.16 -woff2 -wofi -wolfssl -wpa_supplicant -wpebackend-fdo -wtype -wxwidgets-common -wxwidgets-gtk3 -x264 -x265 -xapp -xcb-proto -xcb-util -xcb-util-cursor -xcb-util-errors -xcb-util-image -xcb-util-keysyms -xcb-util-renderutil -xcb-util-wm -xcb-util-xrm -xdg-dbus-proxy -xdg-desktop-portal -xdg-desktop-portal-gtk -xdg-desktop-portal-hyprland-git -xdg-user-dirs -xdg-utils -xdotool -xf86-input-libinput -xfconf -xfsprogs -xkeyboard-config -xmlsec -xone-dkms-git -xone-dongle-firmware -xorg-fonts-alias-misc -xorg-fonts-encodings -xorg-fonts-misc -xorg-server -xorg-server-common -xorg-setxkbmap -xorg-xhost -xorg-xinput -xorg-xkbcomp -xorg-xmessage -xorg-xprop -xorg-xrandr -xorg-xrdb -xorg-xset -xorg-xsetroot -xorg-xwayland -xorg-xwininfo -xorgproto -xosd -xournalpp -xvidcore -xxhash -xz -yad -yajl -yaml-cpp -yarn -yasm -yazi -youtube-dl -yt-dlp -zathura -zathura-pdf-mupdf -zbar -zenith -zenity -zeromq -zig -zimg -zip -zita-convolver -zix -zlib -zoxide -zsh -zsh-autosuggestions -zsh-completions -zsh-syntax-highlighting -zsh-theme-powerlevel10k -zstd -zvbi -zxing-cpp -zziplib From 759bad45a6c89734da2745f59e9ff2ea86ac17e3 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 17 Jul 2024 23:32:43 +0200 Subject: [PATCH 036/330] Update Readme --- README.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 385fa4f..e9a047a 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,12 @@ - _____ _ _____ _ - | __ \ | | | __ \ | | - | | | | __ _ ___| |__ | | | | ___ | |_ ___ +``` + _____ _ _____ _ + | __ \ | | | __ \ | | + | | | | __ _ ___| |__ | | | | ___ | |_ ___ | | | |/ _` / __| '_ \| | | |/ _ \| __/ __| | |__| | (_| \__ \ | | | |__| | (_) | |_\__ \ |_____/ \__,_|___/_| |_|_____/ \___/ \__|___/ - + +``` + My personal configuration for NixOS/home-manager. While not intended to be used by someone else, feel free to do so anyway or use it as a template for your configuration if you wish to. From c1cb314be12c3c4dd5c520c50699d2e5cc292c30 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 17 Jul 2024 23:33:52 +0200 Subject: [PATCH 037/330] Remove nvim-lua --- nix/programs/coding.nix | 5 - nix/programs/nvim/default.nix | 212 -------------- nix/programs/nvim/flake.lock | 58 ---- nix/programs/nvim/flake.nix | 35 --- nix/programs/nvim/ftplugin/java.lua | 5 - nix/programs/nvim/lua/config/autocmds.lua | 15 - nix/programs/nvim/lua/config/keymaps.lua | 202 -------------- nix/programs/nvim/lua/config/lazy.lua | 55 ---- nix/programs/nvim/lua/config/lsp-keymap.lua | 126 --------- nix/programs/nvim/lua/config/options.lua | 34 --- nix/programs/nvim/lua/plugins/cmp.lua | 143 ---------- nix/programs/nvim/lua/plugins/dashboard.lua | 100 ------- nix/programs/nvim/lua/plugins/disabled.lua | 9 - nix/programs/nvim/lua/plugins/lsp.lua | 239 ---------------- nix/programs/nvim/lua/plugins/plugins.lua | 292 -------------------- 15 files changed, 1530 deletions(-) delete mode 100644 nix/programs/nvim/default.nix delete mode 100644 nix/programs/nvim/flake.lock delete mode 100644 nix/programs/nvim/flake.nix delete mode 100644 nix/programs/nvim/ftplugin/java.lua delete mode 100644 nix/programs/nvim/lua/config/autocmds.lua delete mode 100644 nix/programs/nvim/lua/config/keymaps.lua delete mode 100644 nix/programs/nvim/lua/config/lazy.lua delete mode 100644 nix/programs/nvim/lua/config/lsp-keymap.lua delete mode 100644 nix/programs/nvim/lua/config/options.lua delete mode 100644 nix/programs/nvim/lua/plugins/cmp.lua delete mode 100644 nix/programs/nvim/lua/plugins/dashboard.lua delete mode 100644 nix/programs/nvim/lua/plugins/disabled.lua delete mode 100644 nix/programs/nvim/lua/plugins/lsp.lua delete mode 100644 nix/programs/nvim/lua/plugins/plugins.lua diff --git a/nix/programs/coding.nix b/nix/programs/coding.nix index 305439d..5bb53d8 100644 --- a/nix/programs/coding.nix +++ b/nix/programs/coding.nix @@ -4,11 +4,6 @@ , ... }: { - imports = [ - # old neovim config - # (import ./nvim/default.nix { inherit lib pkgs; colorscheme = config.conf.colorscheme; }) - ]; - programs.dashvim = { enable = true; colorscheme = config.conf.colorscheme; diff --git a/nix/programs/nvim/default.nix b/nix/programs/nvim/default.nix deleted file mode 100644 index 43fdc23..0000000 --- a/nix/programs/nvim/default.nix +++ /dev/null @@ -1,212 +0,0 @@ -# please nixvim enable lazyloading -{ lib, pkgs, colorscheme, ... }: -{ - programs.neovim = { - enable = true; - extraPackages = with pkgs; [ - # Telescope - ripgrep - # lua - lua-language-server - stylua - # nix - nixd - # go - gopls - # jafuck - jdt-language-server - taplo - typst-lsp - sqls - shfmt - texlab - nixpkgs-fmt - crate2nix - ruff-lsp - pyright - lemminx - marksman - clang-tools_18 - ]; - - plugins = with pkgs.vimPlugins; [ - lazy-nvim - ]; - - extraLuaConfig = - let - plugins = with pkgs.vimPlugins; [ - # LazyVim - LazyVim - bufferline-nvim - cmp-buffer - cmp-nvim-lsp - cmp-path - cmp_luasnip - cmp-async-path - conform-nvim - dashboard-nvim - dressing-nvim - flash-nvim - friendly-snippets - gitsigns-nvim - git-conflict-nvim - ltex_extra-nvim - indent-blankline-nvim - lualine-nvim - neo-tree-nvim - neoconf-nvim - neodev-nvim - noice-nvim - nui-nvim - nvim-cmp - nvim-dap - nvim-dap-ui - nvim-dap-python - nvim-dap-go - nvim-dap-virtual-text - nvim-nio - nvim-lint - nvim-lspconfig - nvim-notify - #nvim-spectre - nvim-treesitter.withAllGrammars - nvim-treesitter-context - nvim-treesitter-textobjects - nvim-ts-autotag - nvim-ts-context-commentstring - nvim-web-devicons - nvim-jdtls - rustaceanvim - typst-vim - instant-nvim - git-blame-nvim - neoscroll-nvim - mason-nvim - neotest - neotest-zig - neotest-python - neotest-rust - neotest-java - neotest-haskell - neotest-go - neotest-dotnet - neotest-bash - neotest-dart - omnisharp-extended-lsp-nvim - neotest - neotest-java - neotest-rust - persistence-nvim - plenary-nvim - telescope-fzf-native-nvim - telescope-nvim - telescope-zoxide - telescope-file-browser-nvim - telescope-project-nvim - todo-comments-nvim - vimtex - inc-rename-nvim - headlines-nvim - diffview-nvim - crates-nvim - cmake-tools-nvim - clangd_extensions-nvim - alpha-nvim - vim-visual-multi - ts-comments-nvim - nvim-tree-lua - nvim-snippets - markdown-preview-nvim - tokyonight-nvim - trouble-nvim - vim-illuminate - vim-startuptime - which-key-nvim - haskell-tools-nvim - Ionide-vim - { name = "LuaSnip"; path = luasnip; } - { name = "mini.ai"; path = mini-nvim; } - { name = "mini.bufremove"; path = mini-nvim; } - { name = "mini.comment"; path = mini-nvim; } - { name = "mini.indentscope"; path = mini-nvim; } - { name = "mini.pairs"; path = mini-nvim; } - { name = "mini.surround"; path = mini-nvim; } - ]; - mkEntryFromDrv = drv: - if lib.isDerivation drv then - { name = "${lib.getName drv}"; path = drv; } - else - drv; - lazyPath = pkgs.linkFarm "lazy-plugins" (builtins.map mkEntryFromDrv plugins); - in - '' - require("lazy").setup({ - defaults = { - lazy = true, - }, - performance = { - rtp = { - disabled_plugins = { - "gzip", - "netrw", - "tarPlugin", - "tohtml", - "tutor", - "zipPlugin", - }, - }, - }, - dev = { - -- reuse files from pkgs.vimPlugins.* - path = "${lazyPath}", - patterns = { "." }, - -- fallback to download - fallback = true, - }, - spec = { - { "LazyVim/LazyVim", - opts = { - ${if colorscheme != "" then "colorscheme = '${colorscheme}'," else ""} - }, - import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.ui.alpha" }, - { import = "lazyvim.plugins.extras.lang.rust" }, - { import = "lazyvim.plugins.extras.lang.tailwind" }, - { import = "lazyvim.plugins.extras.lang.java" }, - { import = "lazyvim.plugins.extras.lang.go" }, - { import = "lazyvim.plugins.extras.lang.clangd" }, - { import = "lazyvim.plugins.extras.lang.markdown" }, - { import = "lazyvim.plugins.extras.lang.cmake" }, - { import = "lazyvim.plugins.extras.lang.omnisharp" }, - { import = "lazyvim.plugins.extras.lang.tex" }, - { import = "lazyvim.plugins.extras.util.dot" }, - { import = "lazyvim.plugins.extras.dap.core" }, - { import = "lazyvim.plugins.extras.test.core" }, - { "nvim-telescope/telescope-fzf-native.nvim", enabled = true }, - { "williamboman/mason-lspconfig.nvim", enabled = false }, - { import = "plugins" }, - { import = "plugins.plugins" }, - }, - - ${if colorscheme != "" then "install = { colorscheme = { '${colorscheme}' } }," else ""} - checker = { enabled = true, notify = false }, - change_detection = { enabled = true, notify = false }, - }) - ''; - }; - - # https://github.com/nvim-treesitter/nvim-treesitter#i-get-query-error-invalid-node-type-at-position - xdg.configFile."nvim/parser".source = - let - parsers = pkgs.symlinkJoin { - name = "treesitter-parsers"; - paths = (pkgs.vimPlugins.nvim-treesitter.withAllGrammars).dependencies; - }; - in - "${parsers}/parser"; - - # Normal LazyVim config here, see https://github.com/LazyVim/starter/tree/main/lua - xdg.configFile."nvim/lua".source = ./lua; - xdg.configFile."nvim/ftplugin".source = ./ftplugin; -} diff --git a/nix/programs/nvim/flake.lock b/nix/programs/nvim/flake.lock deleted file mode 100644 index 01dcb75..0000000 --- a/nix/programs/nvim/flake.lock +++ /dev/null @@ -1,58 +0,0 @@ -{ - "nodes": { - "flake-parts": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, - "locked": { - "lastModified": 1719994518, - "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1720542800, - "narHash": "sha256-ZgnNHuKV6h2+fQ5LuqnUaqZey1Lqqt5dTUAiAnqH0QQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "feb2849fdeb70028c70d73b848214b00d324a497", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib": { - "locked": { - "lastModified": 1719876945, - "narHash": "sha256-Fm2rDDs86sHy0/1jxTOKB1118Q0O3Uc7EC0iXvXKpbI=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz" - } - }, - "root": { - "inputs": { - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/nix/programs/nvim/flake.nix b/nix/programs/nvim/flake.nix deleted file mode 100644 index 6b79831..0000000 --- a/nix/programs/nvim/flake.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ - description = "A lazyvim configuration"; - - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - flake-parts.url = "github:hercules-ci/flake-parts"; - }; - - outputs = - { flake-parts, ... }@inputs: - flake-parts.lib.mkFlake { inherit inputs; } { - systems = [ - "x86_64-linux" - "aarch64-linux" - "x86_64-darwin" - "aarch64-darwin" - ]; - - perSystem = - { pkgs, ... }: - let - colorscheme = "catppuccin-mocha"; - dashieVimModule = { - inherit pkgs colorscheme; - module = import ./default.nix; - nvim = pkgs.neovim; - }; - in - { - packages = { - default = dashieVimModule.nvim; - }; - }; - }; -} diff --git a/nix/programs/nvim/ftplugin/java.lua b/nix/programs/nvim/ftplugin/java.lua deleted file mode 100644 index 1a4f22e..0000000 --- a/nix/programs/nvim/ftplugin/java.lua +++ /dev/null @@ -1,5 +0,0 @@ -local config = { - cmd = { "jdtls" }, - root_dir = vim.fs.dirname(vim.fs.find({ "gradlew", ".git", "mvnw" }, { upward = true })[1]), -} -require("jdtls").start_or_attach(config) diff --git a/nix/programs/nvim/lua/config/autocmds.lua b/nix/programs/nvim/lua/config/autocmds.lua deleted file mode 100644 index e8da00f..0000000 --- a/nix/programs/nvim/lua/config/autocmds.lua +++ /dev/null @@ -1,15 +0,0 @@ --- nvimtree -local function open_nvim_tree(data) - local directory = vim.fn.isdirectory(data.file) == 1 - - if not directory then - return - end - -- change to the directory - vim.cmd.cd(data.file) - - -- open the tree - require("nvim-tree.api").tree.open() -end - -vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree }) diff --git a/nix/programs/nvim/lua/config/keymaps.lua b/nix/programs/nvim/lua/config/keymaps.lua deleted file mode 100644 index b325537..0000000 --- a/nix/programs/nvim/lua/config/keymaps.lua +++ /dev/null @@ -1,202 +0,0 @@ -local Util = require("lazyvim.util") - -local function map(mode, lhs, rhs, opts) - local keys = require("lazy.core.handler").handlers.keys - ---@cast keys LazyKeysHandler - -- do not create the map if a lazy keys handler exists - if not keys.active[keys.parse({ lhs, mode = mode }).id] then - opts = opts or {} - opts.silent = opts.silent ~= false - vim.keymap.set(mode, lhs, rhs, opts) - end -end -local opts = { noremap = true, silent = true } -local term_opts = { silent = true } - --- crimes against humanity, but I don't care -map("n", "j", "h", opts) -map("n", "l", "k", opts) -map("n", "k", "j", opts) -map("n", ";", "l", opts) -map("v", "j", "h", opts) -map("v", "k", "j", opts) -map("v", "l", "k", opts) -map("v", ";", "l", opts) - --- test plugin -map("n", "OO", ':lua require("test_plugin").test()', { desc = "Toggle breakpoint" }) - --- debug -map("n", "db", ':lua require("dap").toggle_breakpoint()', { desc = "Toggle breakpoint" }) -map("n", "do", ':lua require("dap").step_over()', { desc = "Step over" }) -map("n", "di", ':lua require("dap").step_into()', { desc = "Step into" }) -map("n", "dc", ':lua require("dap").continue()', { desc = "Continue" }) -map("n", "du", function() - require("dapui").toggle() -end, { desc = "Toggle DAP UI" }) -map("n", "de", function() - require("dapui").eval() -end, { desc = "DAP Eval" }) - --- window movement -map("n", "", [[wincmd h]], opts) -map("n", "", [[wincmd l]], opts) -map("n", "", [[wincmd j]], opts) -map("i", "", [[wincmd h]], opts) -map("i", "", [[wincmd l]], opts) -map("i", "", [[wincmd j]], opts) - --- toggle terminal -local lazyterm = function() - Util.terminal(nil, { cwd = Util.root(), esc_esc = false, ctrl_hjkl = false }) -end -map("n", "", lazyterm, { desc = "Terminal (root dir)" }) -map("t", "", "close", { desc = "Hide Terminal" }) - --- semicolon thing --- map("i","" ,"A;", {desc = "add semi and newline"}) --- map("i","" ,"A;", {desc = "add semi"}) -map("n", "m", "$a;", { desc = "add semi and newline" }) -map("n", "n", "$a;", { desc = "add semi" }) - --- tab switching -map("n", "", ":BufferLineCyclePrev", opts) -map("n", "", ":BufferLineCycleNext", opts) - --- git -map("n", "gq", function() - require("telescope.builtin").git_commits() -end, { desc = "Commits" }) -map("n", "gw", function() - require("telescope.builtin").git_bcommits() -end, { desc = "Commits in branch" }) -map("n", "gb", function() - require("telescope.builtin").git_branches() -end, { desc = "Branches" }) -map("n", "gr", function() - require("telescope.builtin").git_status() -end, { desc = "Git status" }) -map("n", "ga", function() - require("telescope.builtin").git_stash() -end, { desc = "Git stash" }) -map("n", "gg", function() - Util.terminal({ "gitui" }, { cwd = Util.root() }) -end, { desc = "gitui (root dir)" }) -map("n", "gG", function() - Util.terminal({ "gitui" }) -end, { desc = "gitui (cwd)" }) -map("n", "gB", function() - require("gitblame") - vim.cmd(":GitBlameToggle") -end, { desc = "git blame" }) - --- harpoon man -map("n", "h1", function() - require("harpoon.ui").nav_file(1) -end, { desc = "First Harpoon File" }) -map("n", "h2", function() - require("harpoon.ui").nav_file(2) -end, { desc = "Second Harpoon File" }) -map("n", "h3", function() - require("harpoon.ui").nav_file(3) -end, { desc = "First Harpoon File" }) -map("n", "ha", function() - require("harpoon.mark").add_file() -end, { desc = "First Harpoon File" }) -map("n", "hd", function() - require("harpoon.mark").remove_file() -end, { desc = "First Harpoon File" }) -map("n", "hm", ":Telescope harpoon marks", { noremap = true, silent = true, desc = "Show harpoon marks" }) - --- telescope -map("n", "fb", function() - require("telescope").extensions.file_browser.file_browser({}) -end, { desc = "File Browser" }) -map("n", "ff", function() - require("telescope.builtin").find_files() -end, { desc = "Find Files" }) -map("n", "fg", function() - Live_grep_from_project_git_root() -end, { desc = "Live Grep (root)" }) -map("n", "fG", function() - require("telescope.builtin").live_grep() -end, { desc = "Live Grep (cwd)" }) -map("n", "fh", function() - require("telescope.builtin").help_tags() -end, { desc = "Help" }) -map("n", "fp", function() - require("telescope").extensions.project.project({}) -end, { noremap = true, silent = true, desc = "Projects" }) -map("n", "z", function() - require("telescope").extensions.zoxide.list({}) -end, { desc = "Zoxide" }) - --- neoscroll -local t = {} -t[""] = { "scroll", { "-vim.wo.scroll", "true", "250" } } -t[""] = { "scroll", { "vim.wo.scroll", "true", "250" } } -require("neoscroll.config").set_mappings(t) - --- trouble -map("n", "t", "TroubleToggle", term_opts) - --- format -map({ "n", "v" }, "", function() - Util.format({ force = true }) -end, { desc = "Format" }) - --- better yank -function Better_yank(opts) - local current_line = unpack(vim.api.nvim_win_get_cursor(0)) - vim.api.nvim_command(current_line .. "," .. (opts.count - (current_line - 1)) .. "y") -end - -vim.api.nvim_create_user_command("BetterYank", Better_yank, { count = 1 }) -map("n", "by", ":BetterYank", term_opts) - --- better delete -function Better_delete(opts) - local current_line = unpack(vim.api.nvim_win_get_cursor(0)) - vim.api.nvim_command(current_line .. "," .. (opts.count - (current_line - 1)) .. "d") -end - -vim.api.nvim_create_user_command("BetterDelete", Better_delete, { count = 1 }) -map("n", "bd", ":BetterDelete", term_opts) - --- neovide zoom -local change_scale_factor = function(delta) - vim.g.neovide_scale_factor = vim.g.neovide_scale_factor * delta -end -vim.keymap.set("n", "", function() - change_scale_factor(1.25) -end) -vim.keymap.set("n", "", function() - change_scale_factor(1 / 1.25) -end) - --- neovide paste -vim.g.neovide_input_use_logo = 1 -vim.api.nvim_set_keymap("i", "", "pI", { noremap = true, silent = true }) - -function Get_git_root() - local opts = {} - local function is_git_repo() - vim.fn.system("git rev-parse --is-inside-work-tree") - - return vim.v.shell_error == 0 - end - if is_git_repo() then - local dot_git_path = vim.fn.finddir(".git", ".;") - local root = vim.fn.fnamemodify(dot_git_path, ":h") - opts = { - cwd = root, - } - end - return opts -end - -function Live_grep_from_project_git_root() - local opts = Get_git_root() - require("telescope.builtin").live_grep(opts) -end - diff --git a/nix/programs/nvim/lua/config/lazy.lua b/nix/programs/nvim/lua/config/lazy.lua deleted file mode 100644 index de32dd1..0000000 --- a/nix/programs/nvim/lua/config/lazy.lua +++ /dev/null @@ -1,55 +0,0 @@ -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not vim.loop.fs_stat(lazypath) then - vim.fn.system({ - "git", - "clone", - "--filter=blob:none", - "https://github.com/folke/lazy.nvim.git", - "--branch=stable", - lazypath, - }) -end -vim.opt.rtp:prepend(vim.env.LAZY or lazypath) - -require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.ui.alpha" }, - -- { import = "lazyvim.plugins.extras.ui.edgy" }, - { import = "plugins" }, - { import = "plugins.plugins" }, - { import = "lazyvim.plugins.extras.lang.rust" }, - { import = "lazyvim.plugins.extras.lang.tailwind" }, - { import = "lazyvim.plugins.extras.lang.java" }, - { import = "lazyvim.plugins.extras.lang.go" }, - { import = "lazyvim.plugins.extras.lang.clangd" }, - { import = "lazyvim.plugins.extras.lang.typescript" }, - { import = "lazyvim.plugins.extras.lang.python" }, - { import = "lazyvim.plugins.extras.lang.markdown" }, - { import = "lazyvim.plugins.extras.lang.cmake" }, - { import = "lazyvim.plugins.extras.lang.omnisharp" }, - { import = "lazyvim.plugins.extras.lang.json" }, - { import = "lazyvim.plugins.extras.lang.tex" }, - { import = "lazyvim.plugins.extras.util.dot" }, - { import = "lazyvim.plugins.extras.dap.core" }, - { import = "lazyvim.plugins.extras.test.core" }, - }, - defaults = { - lazy = true, - version = false, - }, - checker = { enabled = true, notify = false }, - change_detection = { enabled = true, notify = false }, - performance = { - rtp = { - disabled_plugins = { - "gzip", - "netrw", - "tarPlugin", - "tohtml", - "tutor", - "zipPlugin", - }, - }, - }, -}) diff --git a/nix/programs/nvim/lua/config/lsp-keymap.lua b/nix/programs/nvim/lua/config/lsp-keymap.lua deleted file mode 100644 index df316e9..0000000 --- a/nix/programs/nvim/lua/config/lsp-keymap.lua +++ /dev/null @@ -1,126 +0,0 @@ -local M = {} - ----@type PluginLspKeys -M._keys = nil - ----@return (LazyKeys|{has?:string})[] -function M.get() - local format = function() - require("lazyvim.util").format({ force = true }) - end - if not M._keys then - ---@class PluginLspKeys - M._keys = { - { "cld", vim.diagnostic.open_float, desc = "Line Diagnostics" }, - { "cl", "LspInfo", desc = "Lsp Info" }, - { "ca", "Telescope lsp_definitions", desc = "Goto Definition", has = "definition" }, - { "cs", "Telescope lsp_references", desc = "References" }, - { "cA", vim.lsp.buf.declaration, desc = "Goto Declaration" }, - { "cf", "Telescope lsp_implementations", desc = "Goto Implementation" }, - { "cd", "Telescope lsp_type_definitions", desc = "Goto Type Definition" }, - { "ce", vim.lsp.buf.hover, desc = "Hover" }, - { "cw", vim.lsp.buf.signature_help, desc = "Signature Help", has = "signatureHelp" }, - { "", vim.lsp.buf.signature_help, mode = "i", desc = "Signature Help", has = "signatureHelp" }, - { "]d", M.diagnostic_goto(true), desc = "Next Diagnostic" }, - { "[d", M.diagnostic_goto(false), desc = "Prev Diagnostic" }, - { "]e", M.diagnostic_goto(true, "ERROR"), desc = "Next Error" }, - { "[e", M.diagnostic_goto(false, "ERROR"), desc = "Prev Error" }, - { "]w", M.diagnostic_goto(true, "WARN"), desc = "Next Warning" }, - { "[w", M.diagnostic_goto(false, "WARN"), desc = "Prev Warning" }, - { "", format, desc = "Format Range", mode = "v", has = "documentRangeFormatting" }, - { "cr", ":IncRename ", desc = "Rename", has = "rename" }, - { - "cq", - function() - vim.lsp.buf.code_action({ - context = { - only = { - "quickfix", - "quickfix.ltex", - "source", - "source.fixAll", - "source.organizeImports", - "", - }, - }, - }) - end, - desc = "Fix", - mode = { "n", "v" }, - has = "codeAction", - }, - { - "cQ", - function() - vim.lsp.buf.code_action({ - context = { - only = { - "refactor", - "refactor.inline", - "refactor.extract", - "refactor.rewrite", - }, - }, - }) - end, - desc = "Refactor", - mode = { "n", "v" }, - has = "codeAction", - }, - } - end - return M._keys -end - ----@param method string -function M.has(buffer, method) - method = method:find("/") and method or "textDocument/" .. method - local clients = require("lazyvim.util").lsp.get_clients({ bufnr = buffer }) - for _, client in ipairs(clients) do - if client.supports_method(method) then - return true - end - end - return false -end - ----@return (LazyKeys|{has?:string})[] -function M.resolve(buffer) - local Keys = require("lazy.core.handler.keys") - if not Keys.resolve then - return {} - end - local spec = M.get() - local opts = require("lazyvim.util").opts("nvim-lspconfig") - local clients = require("lazyvim.util").lsp.get_clients({ bufnr = buffer }) - for _, client in ipairs(clients) do - local maps = opts.servers[client.name] and opts.servers[client.name].keys or {} - vim.list_extend(spec, maps) - end - return Keys.resolve(spec) -end - -function M.on_attach(_, buffer) - local Keys = require("lazy.core.handler.keys") - local keymaps = M.resolve(buffer) - - for _, keys in pairs(keymaps) do - if not keys.has or M.has(buffer, keys.has) then - local opts = Keys.opts(keys) - opts.has = nil - opts.silent = opts.silent ~= false - opts.buffer = buffer - vim.keymap.set(keys.mode or "n", keys.lhs, keys.rhs, opts) - end - end -end - -function M.diagnostic_goto(next, severity) - local go = next and vim.diagnostic.goto_next or vim.diagnostic.goto_prev - severity = severity and vim.diagnostic.severity[severity] or nil - return function() - go({ severity = severity }) - end -end - -return M diff --git a/nix/programs/nvim/lua/config/options.lua b/nix/programs/nvim/lua/config/options.lua deleted file mode 100644 index 7f5ec59..0000000 --- a/nix/programs/nvim/lua/config/options.lua +++ /dev/null @@ -1,34 +0,0 @@ --- Options are automatically loaded before lazy.nvim startup --- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua --- Add any additional options here -local options = { - fileencoding = "utf-8", - number = true, - showmode = true, - termguicolors = true, - spelllang = "en_us", - shell = "fish", - relativenumber = false, - scrolloff = 5, - scrolljump = 5, - wrap = false, -} -vim.filetype.add({ - extension = { - typst = "typst", - typ = "typst", - }, -}) -vim.o.guifont = "JetBrainsMono Nerd Font:h14" -vim.g.neovide_refresh_rate_idle = 180 -vim.g.neovide_refresh_rate_idle = 5 -vim.g.neovide_hide_mouse_when_typing = true -vim.g.mkdp_browser = "/usr/bin/firefox" -vim.g.mkdp_auto_start = 1 -vim.g.loaded_netrw = 1 -vim.g.loaded_netrwPlugin = 1 -vim.g.autoformat = false - -for k, v in pairs(options) do - vim.opt[k] = v -end diff --git a/nix/programs/nvim/lua/plugins/cmp.lua b/nix/programs/nvim/lua/plugins/cmp.lua deleted file mode 100644 index 4b4d467..0000000 --- a/nix/programs/nvim/lua/plugins/cmp.lua +++ /dev/null @@ -1,143 +0,0 @@ -return { - { - "L3MON4D3/LuaSnip", - build = (not jit.os:find("Windows")) - and "echo -e 'NOTE: jsregexp is optional, so not a big deal if it fails to build\n'; make install_jsregexp" - or nil, - dependencies = { - "rafamadriz/friendly-snippets", - config = function() - require("luasnip.loaders.from_vscode").lazy_load() - end, - }, - opts = { - history = true, - delete_check_events = "TextChanged", - updateevents = "TextChanged,TextChangedI", - enable_autosnippets = true, - }, - keys = function() - return {} - end, - config = function(_, opts) - require("luasnip").setup(opts) - end, - }, - { - "hrsh7th/nvim-cmp", - version = false, - event = "InsertEnter", - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - "FelipeLema/cmp-async-path", - "saadparwaiz1/cmp_luasnip", - "Saecki/crates.nvim", - }, - opts = function() - vim.api.nvim_set_hl(0, "CmpGhostText", { link = "Comment", default = true }) - local cmp = require("cmp") - local defaults = require("cmp.config.default")() - local luasnip = require("luasnip") - local compare = require("cmp.config.compare") - return { - preselect = cmp.PreselectMode.None, - completion = { - -- completeopt = "menu,menuone,noinsert", - }, - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - mapping = { - [""] = cmp.mapping.scroll_docs(-4), - [""] = cmp.mapping.scroll_docs(4), - [""] = cmp.mapping.complete(), - [""] = cmp.mapping.abort(), - [""] = cmp.mapping.confirm({ select = false }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - [""] = cmp.mapping.confirm({ - behavior = cmp.ConfirmBehavior.Replace, - select = false, - }), -- Accept cur - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item({ behavior = cmp.SelectBehavior.Insert }) - else - fallback() - end - end, { "i", "s" }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item({ behavior = cmp.SelectBehavior.Insert }) - else - fallback() - end - end, { - "i", - "s", - }), - [""] = cmp.mapping(function(fallback) - if luasnip.expandable() then - luasnip.expand() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - else - fallback() - end - end, { - "i", - "s", - }), - [""] = cmp.mapping(function(fallback) - if luasnip.expand_or_jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { - "i", - "s", - }), - }, - sources = cmp.config.sources({ - { name = "nvim_lsp", priority = 99 }, - { name = "luasnip", priority = 3, max_item_count = 3 }, - { name = "buffer", priority = 2, max_item_count = 2, keyword_length = 5 }, - { name = "async_path", priority = 1, max_item_count = 2, keyword_length = 3, trigger_characters = {} }, - { name = "crates" }, - }), - sorting = { - priority_weight = 90, - comparators = { - compare.exact, - compare.score, - compare.offset, - compare.kind, - }, - }, - formatting = { - preselect = cmp.PreselectMode.None, - format = function(entry, item) - local icons = require("lazyvim.config").icons.kinds - if icons[item.kind] then - item.kind = icons[item.kind] .. item.kind - end - return require("tailwindcss-colorizer-cmp").formatter(entry, item) - end, - }, - experimental = { - ghost_text = { - hl_group = "CmpGhostText", - }, - }, - } - end, - config = function(_, opts) - local cmp = require("cmp") - require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/snippets" }) - cmp.setup(opts) - end, - }, -} - diff --git a/nix/programs/nvim/lua/plugins/dashboard.lua b/nix/programs/nvim/lua/plugins/dashboard.lua deleted file mode 100644 index 82715ad..0000000 --- a/nix/programs/nvim/lua/plugins/dashboard.lua +++ /dev/null @@ -1,100 +0,0 @@ -return { - { - "goolord/alpha-nvim", - event = "VimEnter", - opts = function() - local alpha = require("alpha") - local dashboard = require("alpha.themes.dashboard") - dashboard.section.header.val = { - [[ _______ ___ _______. __ __ __ _______ ]], - [[| \ / \ / || | | | | | | ____|]], - [[| .--. | / ^ \ | (----`| |__| | | | | |__ ]], - [[| | | | / /_\ \ \ \ | __ | | | | __| ]], - [[| '--' | / _____ \ .----) | | | | | | | | |____ ]], - [[|_______/ /__/ \__\ |_______/ |__| |__| |__| |_______|]], - [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠪⣍⣒⠒⠦⠤⠤⠤⠄⠠⡜⡐⠁⠪⡢⡀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠤⢄⠀⠀⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠈⠛⠯⣉⠁⣐⣂⠐⠮⠥⠟⣓⣲⣾⣿⣿⣿⣶⡃⠀⠀⠈⢞⢆⠀⠀⠀⠀⠀⠀⡰⢁⠂⠄⣇⠀⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠀⣠⠤⠤⠭⠷⠎⡡⠔⠒⠘⠀⢹⣿⣿⣿⣿⣿⠀⠈⠀⠀⠀⢢⢣⠀⠀⠀⠀⢀⡇⠈⠀⢰⢰⠀⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⢸⢰⠀⠀⠀⡩⢋⣀⣤⣤⣤⣤⣤⣿⣿⠟⠿⣿⡀⠀⠀⠀⠀⠀⠆⢳⠀⠀⠀⢸⠀⠂⠀⠀⡈⡆⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠀⢣⢂⠀⠮⡪⠛⠉⢋⠝⠻⢿⢿⡿⢁⠔⢋⣸⠇⠀⠀⠀⠀⠀⡘⣆⢣⠀⠀⡼⠀⠀⠀⠀⡇⣇⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠀⠀⡣⢲⡊⠀⠀⠀⠀⠀⡴⠃⣼⠡⢪⠔⠋⠀⠀⠀⢀⠀⠀⠀⢸⣿⡄⢆⠀⡇⠀⠀⠀⠀⠁⢸⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠀⢰⢡⡇⠀⠀⢀⠔⠠⠊⣰⠞⡇⢠⠃⠀⣠⣶⣿⣷⣷⣷⠄⠀⠈⡟⣷⡸⡄⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠀⡇⣾⠀⣀⠔⣁⣤⣦⢺⣿⡆⡆⡃⠀⢨⠃⢸⣿⣿⣿⠏⠀⠠⢀⢠⣿⡇⣧⡇⠀⠀⠀⠀⠀⢸⣆⢔⡲⡆⠀ ]], - [[ ⠀⠀⣠⠞⠼⠧⢙⡒⣾⣿⣿⡷⡘⣟⣷⣜⡃⠀⡼⠀⠀⠷⠗⠋⠀⠀⠀⢀⡟⣿⣿⢀⠓⠀⠀⠀⠀⠀⢸⢋⠊⠀⡇⠀ ]], - [[ ⠘⠛⠒⠒⠉⠉⠁⡇⣿⣽⣿⡇⠈⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⣠⠟⠀⣷⣿⣇⠱⡀⠀⠀⠀⡄⢀⠃⠀⡄⡇⠀ ]], - [[ ⠀⠀⠀⠀⠀⠀⠀⡇⢸⣏⢀⣧⠀⠈⠆⠀⠀⠀⠀⠀⠀⠀⠀⡠⢊⡴⡟⠀⡼⢁⢸⡙⣠⠁⠀⠀⠀⢇⠆⠀⢀⢳⡇⠀ ]], - [[ ⠀⠀⠀⠀⠀⠀⠀⢳⢀⣵⢸⣯⣷⣤⣀⠀⠀⠀⠀⠀⢀⣐⠮⠔⡎⠘⠀⠈⢀⢮⣿⣷⠁⠇⠠⠀⢰⠎⠀⠀⡘⣸⠀⠀ ]], - [[ ⠀⠀⠀⠀⠀⠀⢀⠎⢬⢘⣯⠛⢻⠏⣿⣿⣶⣶⡶⠋⠉⠀⠀⢸⠀⠀⡔⠀⣪⣿⣿⢻⠀⠸⠈⡇⠛⠀⠠⢀⢃⡇⠀⠀ ]], - [[ ⠀⠀⠀⠀⠀⠈⡹⡡⣪⡏⠛⠀⠀⢠⡟⢻⣿⣿⡇⠀⠀⠀⠀⢼⡆⠠⡇⢰⣿⣿⣿⣻⡄⠀⡆⠁⠀⣠⠃⠌⠼⠤⠤⡀ ]], - [[ ⠀⠀⠀⣀⡠⢞⣳⣽⢸⡇⠀⡇⠀⠸⠀⣼⣿⣿⡇⠀⠀⠀⠀⠈⡇⣰⠃⣶⡍⣼⣿⣏⠃⠀⠁⢠⠊⣀⣜⠤⠐⢂⢆⠇ ]], - [[ ⠀⠀⠈⠉⠉⠁⠀⢇⢸⡟⠀⡇⠀⡇⢸⢷⣹⣿⡇⠀⠀⠀⠀⠀⢳⡽⠃⡞⣇⣿⣧⣿⠀⠀⢸⠃⢠⠃⠀⢀⠤⢢⠞⠀ ]], - [[ ⠀⠀⠀⠀⠀⠀⠀⢸⡀⡇⠀⠁⢠⠁⣿⠈⣿⣿⠇⠀⠀⠀⠀⠀⠀⠁⡆⡇⣾⠿⣹⣿⠀⠀⠃⡰⠃⡰⢔⣡⠞⠁⠀⠀ ]], - [[ ⠀⠀⠀⠀⠀⠀⠀⠀⢇⢠⠀⠂⡌⠀⢽⠁⣟⡟⠀⠀⠀⠀⠀⠀⠀⠀⣇⢶⢹⣤⣿⠇⠀⣀⣈⠝⡱⠒⠉⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠈⣎⡄⠀⡷⠀⢸⠀⢹⠇⠀⠀⠀⠀⠀⠀⠀⠀⠫⣼⣾⣿⢋⠤⠤⠥⢆⡞⠀⠀⠀⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠀⠀⠀⠀⠀⢀⢫⣡⢸⠎⢃⢘⠀⢈⡄⠀⠀⠀⠀⠀⠀⠀⠀⢀⡽⣽⢀⡋⠉⠑⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠘⠉⠳⡯⣇⢆⠻⣆⠈⣤⠀⠀⠀⠀⣀⡀⠤⢚⡨⠷⣝⠗⠑⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠫⣗⠳⡜⠵⠀⡍⡥⠤⠤⠤⠄⠒⠉⠀⠀⠀⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠫⡆⣇⠇⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡙⡰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]], - [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣦⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]], - } - dashboard.section.buttons.val = { - dashboard.button("f", " Find file", ":lua require('telescope.builtin').find_files()"), - dashboard.button("y", " Yazi", ":lua require('yazi').yazi()"), - dashboard.button("p", " Find project", ":lua require('telescope').extensions.project.project{}"), - dashboard.button("t", " Zoxide", ":lua require('telescope').extensions.zoxide.list{}"), - dashboard.button("c", " Configuration", ":e ~/.config/nvim/init.lua "), - dashboard.button("q", " Quit Neovim", ":qa"), - } - - local function footer() - return "dashie@dashie.org" - end - - dashboard.section.footer.val = footer() - - dashboard.section.footer.opts.hl = "Type" - dashboard.section.header.opts.hl = "Include" - dashboard.section.buttons.opts.hl = "Keyword" - - dashboard.opts.opts.noautocmd = true - - -- alpha.pad_margin(dashboard.section.header.val, dashboard.opts , 0, 0) - alpha.setup(dashboard.opts) - end, - config = function(_, dashboard) - -- close Lazy and re-open when the dashboard is ready - if vim.o.filetype == "lazy" then - vim.cmd.close() - vim.api.nvim_create_autocmd("User", { - pattern = "AlphaReady", - callback = function() - require("lazy").show() - end, - }) - end - - require("alpha").setup({ - layout = { - { type = "padding", val = 1 }, - dashboard.section.header, - { type = "padding", val = 1 }, - dashboard.section.buttons, - { type = "padding", val = 1 }, - dashboard.section.footer, - }, - }) - - vim.api.nvim_create_autocmd("User", { - pattern = "LazyVimStarted", - callback = function() - local stats = require("lazy").stats() - local ms = (math.floor(stats.startuptime * 100 + 0.5) / 100) - dashboard.section.footer.val = "⚡ Neovim loaded " .. stats.count .. " plugins in " .. ms .. "ms" - pcall(vim.cmd.AlphaRedraw) - end, - }) - end, - }, -} diff --git a/nix/programs/nvim/lua/plugins/disabled.lua b/nix/programs/nvim/lua/plugins/disabled.lua deleted file mode 100644 index 76dc307..0000000 --- a/nix/programs/nvim/lua/plugins/disabled.lua +++ /dev/null @@ -1,9 +0,0 @@ -return { - { - { "rcarriga/nvim-notify", enabled = false }, - }, - { { "folke/noice.nvim", enabled = false } }, - { { "nvimtools/none-ls.nvim", enabled = false } }, - { { "nvimdev/dashboard-nvim", enabled = false } }, - { { "nvim-neo-tree/neo-tree.nvim", enabled = false } }, -} diff --git a/nix/programs/nvim/lua/plugins/lsp.lua b/nix/programs/nvim/lua/plugins/lsp.lua deleted file mode 100644 index 984fdd1..0000000 --- a/nix/programs/nvim/lua/plugins/lsp.lua +++ /dev/null @@ -1,239 +0,0 @@ -return { - { - "williamboman/mason.nvim", - }, - { - "neovim/nvim-lspconfig", - ---@class PluginLspOpts - opts = function(_, opts) - local path = vim.fn.stdpath("config") .. "/spell/ltex.dictionary.en-US.txt" - local words = {} - - local file, err = io.open(path, "r") - if err ~= nil then - os.execute("mkdir " .. vim.fn.stdpath("config") .. "/spell") - file = io.open(path, "w") - file:write("") - file:close() - file = io.open(path, "r") - end - for word in file:lines() do - table.insert(words, word) - end - local new_opts = { - format_notify = false, - -- LSP Server Settings - ---@type lspconfig.options - servers = { - marksman = { - mason = false, - }, - clangd = { - mason = false, - }, - jdtls = { - mason = false, - }, - gopls = { - mason = false, - }, - pyright = { - mason = false, - }, - ruff_lsp = { - mason = false, - }, - texlab = { - mason = false, - }, - taplo = { - keys = { - { - "K", - function() - if vim.fn.expand("%:t") == "Cargo.toml" and require("crates").popup_available() then - require("crates").show_popup() - else - vim.lsp.buf.hover() - end - end, - desc = "Show Crate Documentation", - }, - }, - mason = false, - }, - bashls = { - mason = false, - }, - ansiblels = { - mason = false, - }, - omnisharp = { - mason = false, - handlers = { - ["textDocument/definition"] = function(...) - return require("omnisharp_extended").handler(...) - end, - }, - keys = { - { - "oe", - function() - require("omnisharp_extended").telescope_lsp_definitions() - end, - desc = "Goto Definition", - }, - }, - cmd = { - -- no comment - "OmniSharp", - "-z", - "--hostPID", - tostring(vim.fn.getpid()), - "DotNet:enablePackageRestore=false", - "--encoding", - "utf-8", - "--languageserver", - "FormattingOptions:EnableEditorConfigSupport=true", - "FormattingOptions:OrganizeImports=true", - "RoslynExtensionsOptions:EnableAnalyzersSupport=true", - "RoslynExtensionsOptions:EnableImportCompletion=true", - -- inlay hints are bugged until next release..... - -- "RoslynExtensionsOptions:InlayHintsOptions:EnableForParameters=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForLiteralParameters=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForIndexerParameters=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForObjectCreationParameters=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForOtherParameters=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:SuppressForParametersThatDifferOnlyBySuffix=false", - -- "RoslynExtensionsOptions:InlayHintsOptions:SuppressForParametersThatMatchMethodIntent=false", - -- "RoslynExtensionsOptions:InlayHintsOptions:SuppressForParametersThatMatchArgumentName=false", - -- "RoslynExtensionsOptions:InlayHintsOptions:EnableForTypes=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForImplicitVariableTypes=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForLambdaParameterTypes=true", - -- "RoslynExtensionsOptions:InlayHintsOptions:ForImplicitObjectCreation=true", - "Sdk:IncludePrereleases=true", - }, - }, - tinymist = { - settings = { - formatterMode = "typstyle", - exportPdf = "onSave", - }, - mason = false, - }, - nixd = { - settings = { - ["nixd"] = { - formatting = { - command = { "nixpkgs-fmt" }, - }, - }, - }, - mason = false, - }, - ltex = { - settings = { - ltex = { - checkFrequency = "save", - dictionary = { - ["en-US"] = words, - }, - }, - }, - filetypes = { - "bib", - "gitcommit", - "markdown", - "org", - "plaintex", - "rst", - "rnoweb", - "tex", - "pandoc", - "typst", - "typ", - "text", - }, - mason = false, - }, - sqls = { - mason = false, - }, - lemminx = { - mason = false, - }, - opencl_ls = { - mason = false, - }, - yamlls = { - mason = false, - }, - zls = { - mason = false, - }, - jsonls = { - mason = false, - cmd = { "vscode-json-languageserver", "--stdio" }, - }, - cssls = { - mason = false, - cmd = { "css-languageserver", "--stdio" }, - }, - lua_ls = { - mason = false, - { - Lua = { - workspace = { - checkThirdParty = false, - }, - completion = { - callSnippet = "Replace", - }, - }, - }, - }, - }, - } - return vim.tbl_deep_extend("keep", new_opts, opts) - end, - init = function() - local keys = require("lazyvim.plugins.lsp.keymaps").get() - local my_keys = require("config.lsp-keymap").get() - local count = 0 - for _ in pairs(my_keys) do - keys[#keys + 1] = my_keys[count] - count = count + 1 - end - end, - }, - { - "stevearc/conform.nvim", - opts = { - keys = { - { - "cF", - function() - require("conform").format({ async = true, lsp_fallback = true }) - end, - mode = "", - numberdesc = "Format buffer", - }, - }, - formatters = { - mdformat = { - prepend_args = { "--number" }, - }, - }, - formatters_by_ft = { - nix = { "nixpkgs-fmt" }, - lua = { "stylua" }, - sh = { "shfmt" }, - cs = { "dotnet-csharpier" }, - markdown = { "mdformat" }, - sql = { "sql-formatter" }, - json = { "jq" }, - yaml = { "yamlfmt" }, - }, - }, - }, -} diff --git a/nix/programs/nvim/lua/plugins/plugins.lua b/nix/programs/nvim/lua/plugins/plugins.lua deleted file mode 100644 index 833d72f..0000000 --- a/nix/programs/nvim/lua/plugins/plugins.lua +++ /dev/null @@ -1,292 +0,0 @@ -return { - { - "nvim-telescope/telescope.nvim", - cmd = "Telescope", - keys = function() - return {} - end, - opts = { - defaults = { - layout_strategy = "flex", - layout_config = { - flex = { - height = 0.95, - width = 0.95, - flip_columns = 100, - }, - vertical = { preview_height = 0.5, preview_cutoff = 5 }, - horizontal = { preview_width = 0.7, preview_cutoff = 99 }, - }, - }, - }, - }, - { - "nvim-telescope/telescope-project.nvim", - lazy = true, - }, - { - "nvim-telescope/telescope-file-browser.nvim", - lazy = true, - config = function() - require("telescope").load_extension("file_browser") - end, - }, - { - "jvgrootveld/telescope-zoxide", - lazy = true, - config = function() - local z_utils = require("telescope._extensions.zoxide.utils") - local t = require("telescope") - -- Configure the extension - t.setup({ - extensions = { - zoxide = { - prompt_title = "[ Queries ]", - mappings = { - default = { - after_action = function(selection) - print("Update to (" .. selection.z_score .. ") " .. selection.path) - end, - }, - [""] = { - before_action = function(selection) - print("before C-s") - end, - action = function(selection) - vim.cmd("edit " .. selection.path) - end, - }, - [""] = { action = z_utils.create_basic_command("split") }, - }, - }, - }, - }) - - -- Load the extension - t.load_extension("zoxide") - end, - }, - { - "lervag/vimtex", - config = function() - vim.cmd("let g:vimtex_quickfix_mode=0") - vim.cmd("let g:vimtex_view_general_viewer = 'evince'") - vim.cmd("let g:vimtex_compiler_method = 'latexmk'") - vim.cmd( - "let g:vimtex_compiler_latexmk = {'options': ['-pdf', '-shell-escape', '-file-line-error', '--extra-mem-bot=10000000', '-synctex=1', '-interaction=nonstopmode',],}" - ) - end, - }, - { - "jbyuki/instant.nvim", - config = function() - vim.cmd("let g:instant_username = 'dashie'") - end, - }, - { - "nvim-treesitter/nvim-treesitter", - config = function(_, _) - local opts = { - ensure_installed = {}, - -- parser_install_dir = "~/.config/nvim", - textobjects = { - select = { - enable = true, - lookahead = true, - keymaps = { - -- You can use the capture groups defined in textobjects.scm - ["af"] = "@function.outer", - ["if"] = "@function.inner", - ["ac"] = "@class.outer", - ["ic"] = "@class.inner", - }, - }, - }, - } - require("nvim-treesitter.configs").setup(opts) - end, - }, - { - "karb94/neoscroll.nvim", - config = function() - require("neoscroll").setup() - end, - }, - { - "kaarmu/typst.vim", - lazy = true, - event = "FileType typst", - }, - { - "folke/which-key.nvim", - event = "VeryLazy", - opts = { - plugins = { spelling = true }, - defaults = { - mode = { "n", "v" }, - ["g"] = { name = "+goto" }, - ["gz"] = { name = "+surround" }, - ["]"] = { name = "+next" }, - ["["] = { name = "+prev" }, - [""] = { name = "+tabs" }, - ["b"] = { name = "+buffer" }, - ["c"] = { name = "+code" }, - ["f"] = { name = "+file/find" }, - ["g"] = { name = "+git" }, - ["gh"] = { name = "+hunks" }, - ["q"] = { name = "+quit/session" }, - ["s"] = { name = "+search" }, - ["u"] = { name = "+ui" }, - ["w"] = { name = "+windows" }, - ["x"] = { name = "+diagnostics/quickfix" }, - ["h"] = { name = "+harpoon" }, - ["d"] = { name = "+DAP" }, - }, - }, - config = function(_, opts) - local wk = require("which-key") - wk.setup(opts) - wk.register(opts.defaults) - end, - }, - { - "f-person/git-blame.nvim", - lazy = true, - }, - { - "mg979/vim-visual-multi", - }, - { - "barreiroleo/ltex_extra.nvim", - ft = { "tex", "typst", "typ" }, - lazy = true, - }, - { - "smjonas/inc-rename.nvim", - lazy = true, - event = "BufEnter", - config = function() - require("inc_rename").setup({ - cmd_name = "IncRename", -- the name of the command - hl_group = "Substitute", -- the highlight group used for highlighting the identifier's new name - preview_empty_name = true, -- whether an empty new name should be previewed; if false the command preview will be cancelled instead - show_message = true, -- whether to display a `Renamed m instances in n files` message after a rename operation - input_buffer_type = nil, -- the type of the external input buffer to use (the only supported value is currently "dressing") - post_hook = nil, -- callback to run after renaming, receives the result table (from LSP handler) as an argument - }) - end, - }, - { - "nvim-tree/nvim-tree.lua", - dependencies = { "nvim-tree/nvim-web-devicons" }, - config = function() - require("nvim-tree").setup({ - renderer = { - group_empty = true, - }, - view = { - side = "right", - }, - diagnostics = { - enable = true, - }, - }) - end, - keys = { - { - "fe", - function() - require("nvim-tree.api").tree.toggle() - end, - desc = "Explorer NvimTree (root dir)", - }, - { - "fE", - function() - require("nvim-tree.api").tree.toggle() - end, - desc = "Explorer NvimTree (cwd)", - }, - { "", "fe", desc = "Explorer NvimTree (root dir)", remap = true }, - { "", "fE", desc = "Explorer NvimTree (cwd)", remap = true }, - }, - }, - { - "rcarriga/nvim-dap-ui", - keys = { - { - "dk", - function() - require("dap").down() - end, - desc = "Down", - }, - { - "dl", - function() - require("dap").up() - end, - desc = "Up", - }, - { - "d;", - function() - require("dap").run_last() - end, - desc = "Run Last", - }, - }, - }, - { - "nvim-neotest/neotest", - dependencies = { - "rcasia/neotest-java", - }, - opts = { - adapters = { - ["neotest-java"] = { - ignore_wrapper = false, -- whether to ignore maven/gradle wrapper - junit_jar = "/home/dashie/.local/share/nvim/mason/bin/junit-standalone.jar", - -- default: .local/share/nvim/neotest-java/junit-platform-console-standalone-[version].jar - }, - }, - }, - }, - { - "DreamMaoMao/yazi.nvim", - dependencies = { - "nvim-telescope/telescope.nvim", - "nvim-lua/plenary.nvim", - }, - keys = { - { "fy", "Yazi", desc = "Toggle Yazi" }, - }, - }, - { - "sindrets/diffview.nvim", - keys = { - { "gd", "DiffviewOpen", desc = "Toggle Difftool" }, - }, - }, - { "akinsho/git-conflict.nvim", version = "*", config = true }, - { "Hoffs/omnisharp-extended-lsp.nvim" }, - { - "barreiroleo/ltex_extra.nvim", - branch = "dev", - ft = { "tex", "typst", "text" }, - -- this causes an error with fsharp since - -- they use markdown to show lsp messages - config = function() - require("ltex_extra").setup({ - load_langs = { "en-US" }, - path = vim.fn.stdpath("config") .. "/spell", - }) - end, - }, - { "ionide/Ionide-vim", ft = "fsharp" }, - { - "mrcjkb/haskell-tools.nvim", - version = "^3", - lazy = false, - }, -} From a5042bb64510050f9c3c35b26b9aa1dcd83cd95f Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 17 Jul 2024 23:37:02 +0200 Subject: [PATCH 038/330] Add license --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From 9ac5b250369c7054dbe28c94ff2bc3ec496f35be Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 20 Jul 2024 01:56:54 +0200 Subject: [PATCH 039/330] Modularize hardware config and remove specific nix folder --- {nix/base => base}/base_packages.nix | 0 {nix/base => base}/big_g.nix | 0 {nix/base => base}/black.jpg | Bin {nix/base => base}/common_hardware.nix | 0 {nix/base => base}/default.nix | 0 {nix/base => base}/env.nix | 0 base/extra.nix | 1 + {nix/base => base}/login_manager.nix | 0 {nix/base => base}/xkb_layout.nix | 0 nix/flake.lock => flake.lock | 38 +++++----- nix/flake.nix => flake.nix | 0 .../marmo/configuration.nix | 7 +- .../overheating/configuration.nix | 6 ++ .../overheating/dsdt.nix | 0 .../overheating/firmware.nix | 0 .../overheating/firmware/TAS2XXX38BB.bin | Bin .../overheating/firmware/TIAS2781RCA4.bin | Bin .../firmware/TIAS2781RCA4.bin.orig | Bin hardware/overheating/overheating.nix | 9 +++ .../overheating/ssdt6.aml | Bin .../spaceship/configuration.nix | 28 ++++++- {nix/lib => lib}/default.nix | 0 {nix/modules => modules}/conf.nix | 15 +--- modules/default.nix | 6 ++ modules/programs/acpid.nix | 18 +++++ modules/programs/bluetooth.nix | 20 +++++ modules/programs/default.nix | 11 +++ modules/programs/drives.nix | 69 ++++++++++++++++++ modules/programs/gpu.nix | 63 ++++++++++++++++ modules/programs/kde_connect.nix | 30 ++++++++ modules/programs/virtualbox.nix | 17 +++++ modules/programs/xone.nix | 17 +++++ nix/.sops.yaml | 7 -- nix/hardware/overheating/overheating.nix | 15 ---- nix/hardware/spaceship/spaceship.nix | 40 ---------- {nix/override => override}/cambalache.nix | 0 {nix/override => override}/streamdeck.nix | 0 {nix/override => override}/streamdeck.patch | 0 {nix/programs => programs}/coding.nix | 0 {nix/programs => programs}/common.nix | 0 {nix/programs => programs}/default.nix | 0 {nix/programs => programs}/flatpak.nix | 0 {nix/programs => programs}/gaming/default.nix | 0 .../programs => programs}/hyprland/anyrun.nix | 0 .../programs => programs}/hyprland/config.nix | 0 .../hyprland/default.nix | 0 .../hyprland/hyprlock.nix | 0 .../hyprland/hyprpaper.nix | 0 .../hyprland/ironbar.nix | 0 .../individual_configs/default.nix | 0 .../individual_configs/direnv.nix | 0 .../individual_configs/firefox.nix | 0 .../individual_configs/fish.nix | 4 +- .../individual_configs/git.nix | 0 .../individual_configs/keepass.nix | 0 .../individual_configs/kitty.nix | 0 .../individual_configs/ncspot.nix | 0 .../individual_configs/neovide.nix | 0 .../individual_configs/ssh.nix | 0 .../individual_configs/yazi.nix | 0 {nix/programs => programs}/media.nix | 0 {nix/programs => programs}/oxi/default.nix | 0 {nix/programs => programs}/oxi/oxidash.nix | 0 {nix/programs => programs}/oxi/oxinoti.nix | 0 {nix/programs => programs}/oxi/oxipaste.nix | 0 {nix/programs => programs}/oxi/oxishut.nix | 0 {nix/programs => programs}/themes/default.nix | 0 {nix/programs => programs}/themes/qt.nix | 0 {nix/programs => programs}/themes/stylix.nix | 0 {nix/programs => programs}/utils.nix | 1 - {nix/programs => programs}/xdg.nix | 0 {nix/secrets => secrets}/secrets.yaml | 0 72 files changed, 322 insertions(+), 100 deletions(-) rename {nix/base => base}/base_packages.nix (100%) rename {nix/base => base}/big_g.nix (100%) rename {nix/base => base}/black.jpg (100%) rename {nix/base => base}/common_hardware.nix (100%) rename {nix/base => base}/default.nix (100%) rename {nix/base => base}/env.nix (100%) create mode 100644 base/extra.nix rename {nix/base => base}/login_manager.nix (100%) rename {nix/base => base}/xkb_layout.nix (100%) rename nix/flake.lock => flake.lock (98%) rename nix/flake.nix => flake.nix (100%) rename {nix/hardware => hardware}/marmo/configuration.nix (70%) rename {nix/hardware => hardware}/overheating/configuration.nix (80%) rename {nix/hardware => hardware}/overheating/dsdt.nix (100%) rename {nix/hardware => hardware}/overheating/firmware.nix (100%) rename {nix/hardware => hardware}/overheating/firmware/TAS2XXX38BB.bin (100%) rename {nix/hardware => hardware}/overheating/firmware/TIAS2781RCA4.bin (100%) rename {nix/hardware => hardware}/overheating/firmware/TIAS2781RCA4.bin.orig (100%) create mode 100644 hardware/overheating/overheating.nix rename {nix/hardware => hardware}/overheating/ssdt6.aml (100%) rename {nix/hardware => hardware}/spaceship/configuration.nix (75%) rename {nix/lib => lib}/default.nix (100%) rename {nix/modules => modules}/conf.nix (93%) create mode 100644 modules/default.nix create mode 100644 modules/programs/acpid.nix create mode 100644 modules/programs/bluetooth.nix create mode 100644 modules/programs/default.nix create mode 100644 modules/programs/drives.nix create mode 100644 modules/programs/gpu.nix create mode 100644 modules/programs/kde_connect.nix create mode 100644 modules/programs/virtualbox.nix create mode 100644 modules/programs/xone.nix delete mode 100644 nix/.sops.yaml delete mode 100644 nix/hardware/overheating/overheating.nix delete mode 100644 nix/hardware/spaceship/spaceship.nix rename {nix/override => override}/cambalache.nix (100%) rename {nix/override => override}/streamdeck.nix (100%) rename {nix/override => override}/streamdeck.patch (100%) rename {nix/programs => programs}/coding.nix (100%) rename {nix/programs => programs}/common.nix (100%) rename {nix/programs => programs}/default.nix (100%) rename {nix/programs => programs}/flatpak.nix (100%) rename {nix/programs => programs}/gaming/default.nix (100%) rename {nix/programs => programs}/hyprland/anyrun.nix (100%) rename {nix/programs => programs}/hyprland/config.nix (100%) rename {nix/programs => programs}/hyprland/default.nix (100%) rename {nix/programs => programs}/hyprland/hyprlock.nix (100%) rename {nix/programs => programs}/hyprland/hyprpaper.nix (100%) rename {nix/programs => programs}/hyprland/ironbar.nix (100%) rename {nix/programs => programs}/individual_configs/default.nix (100%) rename {nix/programs => programs}/individual_configs/direnv.nix (100%) rename {nix/programs => programs}/individual_configs/firefox.nix (100%) rename {nix/programs => programs}/individual_configs/fish.nix (97%) rename {nix/programs => programs}/individual_configs/git.nix (100%) rename {nix/programs => programs}/individual_configs/keepass.nix (100%) rename {nix/programs => programs}/individual_configs/kitty.nix (100%) rename {nix/programs => programs}/individual_configs/ncspot.nix (100%) rename {nix/programs => programs}/individual_configs/neovide.nix (100%) rename {nix/programs => programs}/individual_configs/ssh.nix (100%) rename {nix/programs => programs}/individual_configs/yazi.nix (100%) rename {nix/programs => programs}/media.nix (100%) rename {nix/programs => programs}/oxi/default.nix (100%) rename {nix/programs => programs}/oxi/oxidash.nix (100%) rename {nix/programs => programs}/oxi/oxinoti.nix (100%) rename {nix/programs => programs}/oxi/oxipaste.nix (100%) rename {nix/programs => programs}/oxi/oxishut.nix (100%) rename {nix/programs => programs}/themes/default.nix (100%) rename {nix/programs => programs}/themes/qt.nix (100%) rename {nix/programs => programs}/themes/stylix.nix (100%) rename {nix/programs => programs}/utils.nix (88%) rename {nix/programs => programs}/xdg.nix (100%) rename {nix/secrets => secrets}/secrets.yaml (100%) diff --git a/nix/base/base_packages.nix b/base/base_packages.nix similarity index 100% rename from nix/base/base_packages.nix rename to base/base_packages.nix diff --git a/nix/base/big_g.nix b/base/big_g.nix similarity index 100% rename from nix/base/big_g.nix rename to base/big_g.nix diff --git a/nix/base/black.jpg b/base/black.jpg similarity index 100% rename from nix/base/black.jpg rename to base/black.jpg diff --git a/nix/base/common_hardware.nix b/base/common_hardware.nix similarity index 100% rename from nix/base/common_hardware.nix rename to base/common_hardware.nix diff --git a/nix/base/default.nix b/base/default.nix similarity index 100% rename from nix/base/default.nix rename to base/default.nix diff --git a/nix/base/env.nix b/base/env.nix similarity index 100% rename from nix/base/env.nix rename to base/env.nix diff --git a/base/extra.nix b/base/extra.nix new file mode 100644 index 0000000..96fb09e --- /dev/null +++ b/base/extra.nix @@ -0,0 +1 @@ +{ options, ... }: options.extra.extraHardwareConfig diff --git a/nix/base/login_manager.nix b/base/login_manager.nix similarity index 100% rename from nix/base/login_manager.nix rename to base/login_manager.nix diff --git a/nix/base/xkb_layout.nix b/base/xkb_layout.nix similarity index 100% rename from nix/base/xkb_layout.nix rename to base/xkb_layout.nix diff --git a/nix/flake.lock b/flake.lock similarity index 98% rename from nix/flake.lock rename to flake.lock index 1ef4295..f8f965f 100644 --- a/nix/flake.lock +++ b/flake.lock @@ -185,11 +185,11 @@ "nixvim": "nixvim" }, "locked": { - "lastModified": 1721250623, - "narHash": "sha256-w80Q5dvELC7W5rGx0gu9Jp+B2qxUA7irGIN3zAZcbiI=", + "lastModified": 1721432745, + "narHash": "sha256-99fI3sZg/jojY42Z4VsdjdGuGgLsA6i4PiNSBQ7M+pg=", "owner": "DashieTM", "repo": "DashVim", - "rev": "f4da99286b729a4300697c53c3a4b9ab9f8979aa", + "rev": "a179c152e322084426d21a7e9152e1d679184b1a", "type": "github" }, "original": { @@ -851,11 +851,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1721248202, - "narHash": "sha256-VAhuQQ4EKbw/6z7K2IoR83+gXUdMksLWFQOhJNhSvQE=", + "lastModified": 1721428662, + "narHash": "sha256-fs5PV+LjzNizY/8fURUHOFHs/92JhzMPM7QQr4XsPtg=", "ref": "refs/heads/main", - "rev": "300228b503b36e5977b0d58713c5b4cf1f07b8a9", - "revCount": 4930, + "rev": "9b0993cc49b7285a2724a87fdb72bfc90cc75cc5", + "revCount": 4933, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -980,11 +980,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1720904669, - "narHash": "sha256-Se+Pg81W8R+SFGFlhF1dU+NnMWSdLo3nC9TdPHa2IL4=", + "lastModified": 1721405746, + "narHash": "sha256-ug0GSFb0/CIRZ3RE18wCvrNHXhUm8qiJ+W+mHnooQ+U=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "58190ab079d00dd53babb72346f1da6e1cc9ac72", + "rev": "73bdff656f09ebedf767c33bd28c5551b3423c44", "type": "github" }, "original": { @@ -1380,11 +1380,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1720957393, - "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", + "lastModified": 1721379653, + "narHash": "sha256-8MUgifkJ7lkZs3u99UDZMB4kbOxvMEXQZ31FO3SopZ0=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", + "rev": "1d9c2c9b3e71b9ee663d11c5d298727dace8d374", "type": "github" }, "original": { @@ -1453,11 +1453,11 @@ }, "nur": { "locked": { - "lastModified": 1721241063, - "narHash": "sha256-jBAuwmtJmSNT6xwjtGINslFK0m3R3+Ydw+xrd+a3tSE=", + "lastModified": 1721420802, + "narHash": "sha256-8kmavDJgzkEwUujFAJCkoLk79r5DRuyVfu5TlLap624=", "owner": "nix-community", "repo": "nur", - "rev": "f33f46c1e38b07b20a978ac39208058ab9ddedb1", + "rev": "3a24dfcc6b7bc383112e5a9e13d7c04cb659eff8", "type": "github" }, "original": { @@ -1798,11 +1798,11 @@ "nixpkgs": "nixpkgs_22" }, "locked": { - "lastModified": 1720818679, - "narHash": "sha256-u9PqY7O6TN42SLeb0e6mnYAgQOoQmclaVSHfLKMpmu0=", + "lastModified": 1721429336, + "narHash": "sha256-DTJUvI4Xkj4KC5tdq15OEUkPpk7Ebvqcz356dIT6jtY=", "owner": "danth", "repo": "stylix", - "rev": "29148118cc33f08b71058e1cda7ca017f5300b51", + "rev": "6bbae4f85b891df2e6e48b649919420434088507", "type": "github" }, "original": { diff --git a/nix/flake.nix b/flake.nix similarity index 100% rename from nix/flake.nix rename to flake.nix diff --git a/nix/hardware/marmo/configuration.nix b/hardware/marmo/configuration.nix similarity index 70% rename from nix/hardware/marmo/configuration.nix rename to hardware/marmo/configuration.nix index d8de5cb..fbecd6f 100644 --- a/nix/hardware/marmo/configuration.nix +++ b/hardware/marmo/configuration.nix @@ -16,6 +16,11 @@ # all others ",highrr,auto,1" ]; - colorscheme="catppuccin-mocha"; + colorscheme = "catppuccin-mocha"; + }; + mods = { + amdgpu.enable = true; + kde_connect.enable = true; + xone.enable = true; }; } diff --git a/nix/hardware/overheating/configuration.nix b/hardware/overheating/configuration.nix similarity index 80% rename from nix/hardware/overheating/configuration.nix rename to hardware/overheating/configuration.nix index 70d4cc7..027bff1 100644 --- a/nix/hardware/overheating/configuration.nix +++ b/hardware/overheating/configuration.nix @@ -22,4 +22,10 @@ }; colorscheme = "catppuccin-mocha"; }; + mods = { + amdgpu.enable = true; + kde_connect.enable = true; + bluetooth.enable = true; + acpid.enable = true; + }; } diff --git a/nix/hardware/overheating/dsdt.nix b/hardware/overheating/dsdt.nix similarity index 100% rename from nix/hardware/overheating/dsdt.nix rename to hardware/overheating/dsdt.nix diff --git a/nix/hardware/overheating/firmware.nix b/hardware/overheating/firmware.nix similarity index 100% rename from nix/hardware/overheating/firmware.nix rename to hardware/overheating/firmware.nix diff --git a/nix/hardware/overheating/firmware/TAS2XXX38BB.bin b/hardware/overheating/firmware/TAS2XXX38BB.bin similarity index 100% rename from nix/hardware/overheating/firmware/TAS2XXX38BB.bin rename to hardware/overheating/firmware/TAS2XXX38BB.bin diff --git a/nix/hardware/overheating/firmware/TIAS2781RCA4.bin b/hardware/overheating/firmware/TIAS2781RCA4.bin similarity index 100% rename from nix/hardware/overheating/firmware/TIAS2781RCA4.bin rename to hardware/overheating/firmware/TIAS2781RCA4.bin diff --git a/nix/hardware/overheating/firmware/TIAS2781RCA4.bin.orig b/hardware/overheating/firmware/TIAS2781RCA4.bin.orig similarity index 100% rename from nix/hardware/overheating/firmware/TIAS2781RCA4.bin.orig rename to hardware/overheating/firmware/TIAS2781RCA4.bin.orig diff --git a/hardware/overheating/overheating.nix b/hardware/overheating/overheating.nix new file mode 100644 index 0000000..55682d6 --- /dev/null +++ b/hardware/overheating/overheating.nix @@ -0,0 +1,9 @@ +{ + # special hardware modules + # mostly to fix firmare and dsts + imports = + [ + ./dsdt.nix + ./firmware.nix + ]; +} diff --git a/nix/hardware/overheating/ssdt6.aml b/hardware/overheating/ssdt6.aml similarity index 100% rename from nix/hardware/overheating/ssdt6.aml rename to hardware/overheating/ssdt6.aml diff --git a/nix/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix similarity index 75% rename from nix/hardware/spaceship/configuration.nix rename to hardware/spaceship/configuration.nix index 348eb9f..01f6193 100644 --- a/nix/hardware/spaceship/configuration.nix +++ b/hardware/spaceship/configuration.nix @@ -4,7 +4,7 @@ let in { imports = [ - ../../modules/conf.nix + ../../modules ]; # config variables @@ -26,6 +26,7 @@ in # all others ",highrr,auto,1" ]; + workspace = [ # workspaces # monitor middle @@ -60,4 +61,29 @@ in }; colorscheme = "catppuccin-mocha"; }; + mods = { + 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; + amdgpu.enable = true; + vapi = { + enable = true; + rocm.enable = true; + }; + }; } diff --git a/nix/lib/default.nix b/lib/default.nix similarity index 100% rename from nix/lib/default.nix rename to lib/default.nix diff --git a/nix/modules/conf.nix b/modules/conf.nix similarity index 93% rename from nix/modules/conf.nix rename to modules/conf.nix index 27a99fd..f9405b0 100644 --- a/nix/modules/conf.nix +++ b/modules/conf.nix @@ -1,4 +1,4 @@ -{ lib, config, pkgs, ... }: { +{ lib, config, pkgs, options, ... }: { options.conf = { system = lib.mkOption { @@ -52,15 +52,6 @@ }; }; - amdGpu = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = '' - Enables drivers, optimizations and kernel parameters for AMD gpus. - ''; - }; - boot_params = lib.mkOption { default = [ ]; example = [ "resume=something" ]; @@ -216,10 +207,6 @@ }; config = { - conf.boot_params = lib.mkIf config.conf.amdGpu [ - "amdgpu.ppfeaturemask=0xffffffff" - ]; - conf.kernel = lib.mkIf config.conf.gaming.enable pkgs.linuxPackages_xanmod_latest; }; } diff --git a/modules/default.nix b/modules/default.nix new file mode 100644 index 0000000..683596a --- /dev/null +++ b/modules/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./programs + ./conf.nix + ]; +} diff --git a/modules/programs/acpid.nix b/modules/programs/acpid.nix new file mode 100644 index 0000000..71999ea --- /dev/null +++ b/modules/programs/acpid.nix @@ -0,0 +1,18 @@ +{ lib, config, options, ... }: { + + options.mods = { + acpid.enable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables acpid. + ''; + }; + }; + + config = lib.mkIf config.mods.acpid.enable (lib.optionalAttrs (options?virtualisation.virtualbox.host) { + services.acpid.enable = true; + }); +} + diff --git a/modules/programs/bluetooth.nix b/modules/programs/bluetooth.nix new file mode 100644 index 0000000..5091835 --- /dev/null +++ b/modules/programs/bluetooth.nix @@ -0,0 +1,20 @@ +{ lib, config, options, ... }: { + options.mods = { + bluetooth.enable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables bluetooth. + ''; + }; + }; + + config = lib.mkIf config.mods.bluetooth.enable (lib.optionalAttrs (options?hardware.bluetooth) { + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + }; + }); +} + diff --git a/modules/programs/default.nix b/modules/programs/default.nix new file mode 100644 index 0000000..5d1864d --- /dev/null +++ b/modules/programs/default.nix @@ -0,0 +1,11 @@ +{ + imports = [ + ./virtualbox.nix + ./kde_connect.nix + ./gpu.nix + ./xone.nix + ./drives.nix + ./bluetooth.nix + ./acpid.nix + ]; +} diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix new file mode 100644 index 0000000..ccfc591 --- /dev/null +++ b/modules/programs/drives.nix @@ -0,0 +1,69 @@ +{ lib, config, options, ... }: +let + + driveModule = lib.types.submodule { + options = { + name = lib.mkOption { + type = lib.types.str; + description = '' + The path of the drive. + Note that a / is already added at the beginning. + ''; + default = ""; + example = "drive2"; + }; + drive = lib.mkOption { + type = lib.types.attrsOf lib.types.anything; + description = "The attrs of the drive"; + default = { }; + example = { + device = "/dev/disk/by-label/DRIVE2"; + fsType = "ext4"; + options = [ + "noatime" + "nodiratime" + "discard" + ]; + }; + }; + }; + }; +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. + ''; + }; + }; + + config = (lib.optionalAttrs (options?fileSystems) { + fileSystems = builtins.listToAttrs + (map + ({ name, drive }: { + name = "/" + name; + value = drive; + }) + config.mods.extraDrives); + }); +} diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix new file mode 100644 index 0000000..94e872a --- /dev/null +++ b/modules/programs/gpu.nix @@ -0,0 +1,63 @@ +{ lib, config, options, pkgs, ... }: { + + options.mods = { + amdgpu.enable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables amdgpu support. + ''; + }; + vapi = { + enable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables vapi. + ''; + }; + rocm.enable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables rocm support. + ''; + }; + }; + }; + + 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 + ]; + 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); + }; + }; + }); +} diff --git a/modules/programs/kde_connect.nix b/modules/programs/kde_connect.nix new file mode 100644 index 0000000..62f0a8b --- /dev/null +++ b/modules/programs/kde_connect.nix @@ -0,0 +1,30 @@ +{ lib, config, options, pkgs, ... }: { + + options.mods = { + kde_connect.enable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables kde_connect. + ''; + }; + }; + + config = lib.mkIf config.mods.kde_connect.enable + (lib.optionalAttrs (options?networking.firewall) + { + networking.firewall = { + allowedTCPPortRanges = [ + { from = 1714; to = 1764; } # KDE Connect + ]; + allowedUDPPortRanges = [ + { from = 1714; to = 1764; } # KDE Connect + ]; + }; + } // lib.optionalAttrs (options?home.packages) { + home.packages = with pkgs; [ + kdeconnect + ]; + }); +} diff --git a/modules/programs/virtualbox.nix b/modules/programs/virtualbox.nix new file mode 100644 index 0000000..ca7726f --- /dev/null +++ b/modules/programs/virtualbox.nix @@ -0,0 +1,17 @@ +{ lib, config, options, ... }: { + + options.mods = { + virtualbox.enable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables virtualbox. + ''; + }; + }; + + 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 new file mode 100644 index 0000000..dadbbf7 --- /dev/null +++ b/modules/programs/xone.nix @@ -0,0 +1,17 @@ +{ lib, config, options, ... }: { + + options.mods = { + xone.enable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables the xone driver for xbox controllers. + ''; + }; + }; + + config = lib.optionalAttrs (options?hardware) { + hardware.xone.enable = true; + }; +} diff --git a/nix/.sops.yaml b/nix/.sops.yaml deleted file mode 100644 index 57234fa..0000000 --- a/nix/.sops.yaml +++ /dev/null @@ -1,7 +0,0 @@ -keys: - - &dashie 92D29D420B5D95FCA46A12FE778CFA7A623614F3 -creation_rules: - - path_regex: secrets/[^/]+\.(yaml|json|env|ini)$ - key_groups: - - pgp: - - *dashie diff --git a/nix/hardware/overheating/overheating.nix b/nix/hardware/overheating/overheating.nix deleted file mode 100644 index 0ca9ea1..0000000 --- a/nix/hardware/overheating/overheating.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - imports = - [ - ./dsdt.nix - ./firmware.nix - ]; - # special hardware modules - # TODO: needed? - boot.kernelModules = [ "kvm-amd" ]; - - hardware.bluetooth.enable = true; - hardware.bluetooth.powerOnBoot = true; - # for hyprdock - services.acpid.enable = true; -} diff --git a/nix/hardware/spaceship/spaceship.nix b/nix/hardware/spaceship/spaceship.nix deleted file mode 100644 index 482de77..0000000 --- a/nix/hardware/spaceship/spaceship.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ pkgs, lib, ... }: -{ - # TODO: needed? - boot.kernelModules = [ "kvm-amd" ]; - boot.initrd.kernelModules = [ "amdgpu" ]; - - fileSystems."/drive2" = - { - device = "/dev/disk/by-label/DRIVE2"; - fsType = "ext4"; - options = [ - "noatime" - "nodiratime" - "discard" - ]; - }; - - virtualisation.virtualbox.host.enable = true; - - # enable hardware acceleration and rocm - hardware.xone.enable = true; - hardware.graphics.extraPackages = with pkgs; [ - libvdpau-va-gl - vaapiVdpau - rocmPackages.clr.icd - rocm-opencl-runtime - ]; - hardware.graphics = { - enable = true; - enable32Bit = lib.mkDefault true; - }; - networking.firewall = { - allowedTCPPortRanges = [ - { from = 1714; to = 1764; } # KDE Connect - ]; - allowedUDPPortRanges = [ - { from = 1714; to = 1764; } # KDE Connect - ]; - }; -} diff --git a/nix/override/cambalache.nix b/override/cambalache.nix similarity index 100% rename from nix/override/cambalache.nix rename to override/cambalache.nix diff --git a/nix/override/streamdeck.nix b/override/streamdeck.nix similarity index 100% rename from nix/override/streamdeck.nix rename to override/streamdeck.nix diff --git a/nix/override/streamdeck.patch b/override/streamdeck.patch similarity index 100% rename from nix/override/streamdeck.patch rename to override/streamdeck.patch diff --git a/nix/programs/coding.nix b/programs/coding.nix similarity index 100% rename from nix/programs/coding.nix rename to programs/coding.nix diff --git a/nix/programs/common.nix b/programs/common.nix similarity index 100% rename from nix/programs/common.nix rename to programs/common.nix diff --git a/nix/programs/default.nix b/programs/default.nix similarity index 100% rename from nix/programs/default.nix rename to programs/default.nix diff --git a/nix/programs/flatpak.nix b/programs/flatpak.nix similarity index 100% rename from nix/programs/flatpak.nix rename to programs/flatpak.nix diff --git a/nix/programs/gaming/default.nix b/programs/gaming/default.nix similarity index 100% rename from nix/programs/gaming/default.nix rename to programs/gaming/default.nix diff --git a/nix/programs/hyprland/anyrun.nix b/programs/hyprland/anyrun.nix similarity index 100% rename from nix/programs/hyprland/anyrun.nix rename to programs/hyprland/anyrun.nix diff --git a/nix/programs/hyprland/config.nix b/programs/hyprland/config.nix similarity index 100% rename from nix/programs/hyprland/config.nix rename to programs/hyprland/config.nix diff --git a/nix/programs/hyprland/default.nix b/programs/hyprland/default.nix similarity index 100% rename from nix/programs/hyprland/default.nix rename to programs/hyprland/default.nix diff --git a/nix/programs/hyprland/hyprlock.nix b/programs/hyprland/hyprlock.nix similarity index 100% rename from nix/programs/hyprland/hyprlock.nix rename to programs/hyprland/hyprlock.nix diff --git a/nix/programs/hyprland/hyprpaper.nix b/programs/hyprland/hyprpaper.nix similarity index 100% rename from nix/programs/hyprland/hyprpaper.nix rename to programs/hyprland/hyprpaper.nix diff --git a/nix/programs/hyprland/ironbar.nix b/programs/hyprland/ironbar.nix similarity index 100% rename from nix/programs/hyprland/ironbar.nix rename to programs/hyprland/ironbar.nix diff --git a/nix/programs/individual_configs/default.nix b/programs/individual_configs/default.nix similarity index 100% rename from nix/programs/individual_configs/default.nix rename to programs/individual_configs/default.nix diff --git a/nix/programs/individual_configs/direnv.nix b/programs/individual_configs/direnv.nix similarity index 100% rename from nix/programs/individual_configs/direnv.nix rename to programs/individual_configs/direnv.nix diff --git a/nix/programs/individual_configs/firefox.nix b/programs/individual_configs/firefox.nix similarity index 100% rename from nix/programs/individual_configs/firefox.nix rename to programs/individual_configs/firefox.nix diff --git a/nix/programs/individual_configs/fish.nix b/programs/individual_configs/fish.nix similarity index 97% rename from nix/programs/individual_configs/fish.nix rename to programs/individual_configs/fish.nix index 2c955e7..7f553de 100644 --- a/nix/programs/individual_configs/fish.nix +++ b/programs/individual_configs/fish.nix @@ -11,11 +11,11 @@ # Utility functions for zoxide. # - export NIX_PATH="$NIX_PATH:$HOME/gits/dotFiles/nix/." + export NIX_PATH="$NIX_PATH:$HOME/gits/dotFiles/." set EDITOR "neovide --no-fork" - alias rebuild='sudo nixos-rebuild switch --flake /home/${config.conf.username}/gits/dotFiles/nix/.' + 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' diff --git a/nix/programs/individual_configs/git.nix b/programs/individual_configs/git.nix similarity index 100% rename from nix/programs/individual_configs/git.nix rename to programs/individual_configs/git.nix diff --git a/nix/programs/individual_configs/keepass.nix b/programs/individual_configs/keepass.nix similarity index 100% rename from nix/programs/individual_configs/keepass.nix rename to programs/individual_configs/keepass.nix diff --git a/nix/programs/individual_configs/kitty.nix b/programs/individual_configs/kitty.nix similarity index 100% rename from nix/programs/individual_configs/kitty.nix rename to programs/individual_configs/kitty.nix diff --git a/nix/programs/individual_configs/ncspot.nix b/programs/individual_configs/ncspot.nix similarity index 100% rename from nix/programs/individual_configs/ncspot.nix rename to programs/individual_configs/ncspot.nix diff --git a/nix/programs/individual_configs/neovide.nix b/programs/individual_configs/neovide.nix similarity index 100% rename from nix/programs/individual_configs/neovide.nix rename to programs/individual_configs/neovide.nix diff --git a/nix/programs/individual_configs/ssh.nix b/programs/individual_configs/ssh.nix similarity index 100% rename from nix/programs/individual_configs/ssh.nix rename to programs/individual_configs/ssh.nix diff --git a/nix/programs/individual_configs/yazi.nix b/programs/individual_configs/yazi.nix similarity index 100% rename from nix/programs/individual_configs/yazi.nix rename to programs/individual_configs/yazi.nix diff --git a/nix/programs/media.nix b/programs/media.nix similarity index 100% rename from nix/programs/media.nix rename to programs/media.nix diff --git a/nix/programs/oxi/default.nix b/programs/oxi/default.nix similarity index 100% rename from nix/programs/oxi/default.nix rename to programs/oxi/default.nix diff --git a/nix/programs/oxi/oxidash.nix b/programs/oxi/oxidash.nix similarity index 100% rename from nix/programs/oxi/oxidash.nix rename to programs/oxi/oxidash.nix diff --git a/nix/programs/oxi/oxinoti.nix b/programs/oxi/oxinoti.nix similarity index 100% rename from nix/programs/oxi/oxinoti.nix rename to programs/oxi/oxinoti.nix diff --git a/nix/programs/oxi/oxipaste.nix b/programs/oxi/oxipaste.nix similarity index 100% rename from nix/programs/oxi/oxipaste.nix rename to programs/oxi/oxipaste.nix diff --git a/nix/programs/oxi/oxishut.nix b/programs/oxi/oxishut.nix similarity index 100% rename from nix/programs/oxi/oxishut.nix rename to programs/oxi/oxishut.nix diff --git a/nix/programs/themes/default.nix b/programs/themes/default.nix similarity index 100% rename from nix/programs/themes/default.nix rename to programs/themes/default.nix diff --git a/nix/programs/themes/qt.nix b/programs/themes/qt.nix similarity index 100% rename from nix/programs/themes/qt.nix rename to programs/themes/qt.nix diff --git a/nix/programs/themes/stylix.nix b/programs/themes/stylix.nix similarity index 100% rename from nix/programs/themes/stylix.nix rename to programs/themes/stylix.nix diff --git a/nix/programs/utils.nix b/programs/utils.nix similarity index 88% rename from nix/programs/utils.nix rename to programs/utils.nix index e2ef138..16960d3 100644 --- a/nix/programs/utils.nix +++ b/programs/utils.nix @@ -5,7 +5,6 @@ home.packages = with pkgs; [ keepassxc nheko - kdeconnect nextcloud-client xournalpp ]; diff --git a/nix/programs/xdg.nix b/programs/xdg.nix similarity index 100% rename from nix/programs/xdg.nix rename to programs/xdg.nix diff --git a/nix/secrets/secrets.yaml b/secrets/secrets.yaml similarity index 100% rename from nix/secrets/secrets.yaml rename to secrets/secrets.yaml From b0979afa530bea56c610de2c79d275a49576e6b3 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 2 Aug 2024 03:06:52 +0200 Subject: [PATCH 040/330] Add more configuration options --- base/login_manager.nix | 7 +- flake.lock | 237 +++++++++++++++++---------- hardware/spaceship/configuration.nix | 3 + modules/conf.nix | 49 +++++- programs/coding.nix | 2 +- programs/gaming/default.nix | 4 +- 6 files changed, 206 insertions(+), 96 deletions(-) diff --git a/base/login_manager.nix b/base/login_manager.nix index 1ea4ab6..37a3d7e 100644 --- a/base/login_manager.nix +++ b/base/login_manager.nix @@ -36,10 +36,11 @@ in 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' - monitor=${config.conf.monitor},3440x1440@180,0x0,${config.conf.scale} + monitor=${config.conf.login_manager.monitor},${config.conf.login_manager.resolution},0x0,${config.conf.login_manager.scale} monitor=_,disable input { @@ -47,8 +48,8 @@ in } misc { - disable_splash_rendering = true - disable_hyprland_logo = true + disable_splash_rendering = false + disable_hyprland_logo = false } exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit diff --git a/flake.lock b/flake.lock index f8f965f..ebbb13c 100644 --- a/flake.lock +++ b/flake.lock @@ -20,6 +20,39 @@ "type": "github" } }, + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1722347739, + "narHash": "sha256-rAoh+K6KG+b1DwSWtqRVocdojnH6nGk6q07mNltoUSM=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "7c3565f9bedc7cb601cc0baa14792247e4dc1d5a", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, "base16": { "inputs": { "fromYaml": "fromYaml" @@ -185,11 +218,11 @@ "nixvim": "nixvim" }, "locked": { - "lastModified": 1721432745, - "narHash": "sha256-99fI3sZg/jojY42Z4VsdjdGuGgLsA6i4PiNSBQ7M+pg=", + "lastModified": 1722560743, + "narHash": "sha256-e2FhudX6P+kwtYALgpmJG7l03ayhkGY9+j9Hrcyl7gQ=", "owner": "DashieTM", "repo": "DashVim", - "rev": "a179c152e322084426d21a7e9152e1d679184b1a", + "rev": "5a2c4fa3a7cd0718dc8c08d1c41cc6a44de9869f", "type": "github" }, "original": { @@ -200,7 +233,6 @@ }, "devshell": { "inputs": { - "flake-utils": "flake-utils", "nixpkgs": [ "dashvim", "nixvim", @@ -208,11 +240,11 @@ ] }, "locked": { - "lastModified": 1717408969, - "narHash": "sha256-Q0OEFqe35fZbbRPPRdrjTUUChKVhhWXz3T9ZSKmaoVY=", + "lastModified": 1722113426, + "narHash": "sha256-Yo/3loq572A8Su6aY5GP56knpuKYRvM2a1meP9oJZCw=", "owner": "numtide", "repo": "devshell", - "rev": "1ebbe68d57457c8cae98145410b164b5477761f4", + "rev": "67cce7359e4cd3c45296fb4aaf6a19e2a9c757ae", "type": "github" }, "original": { @@ -319,11 +351,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1719994518, - "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", + "lastModified": 1722555600, + "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", + "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", "type": "github" }, "original": { @@ -341,11 +373,11 @@ ] }, "locked": { - "lastModified": 1719877454, - "narHash": "sha256-g5N1yyOSsPNiOlFfkuI/wcUjmtah+nxdImJqrSATjOU=", + "lastModified": 1719994518, + "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "4e3583423212f9303aa1a6337f8dffb415920e4f", + "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", "type": "github" }, "original": { @@ -485,11 +517,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -676,11 +708,11 @@ ] }, "locked": { - "lastModified": 1719259945, - "narHash": "sha256-F1h+XIsGKT9TkGO3omxDLEb/9jOOsI6NnzsXFsZhry4=", + "lastModified": 1721042469, + "narHash": "sha256-6FPUl7HVtvRHCCBQne7Ylp4p+dpP3P/OYuzjztZ4s70=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07", + "rev": "f451c19376071a90d8c58ab1a953c6e9840527fd", "type": "github" }, "original": { @@ -738,11 +770,11 @@ ] }, "locked": { - "lastModified": 1719827439, - "narHash": "sha256-tneHOIv1lEavZ0vQ+rgz67LPNCgOZVByYki3OkSshFU=", + "lastModified": 1722407237, + "narHash": "sha256-wcpVHUc2nBSSgOM7UJSpcRbyus4duREF31xlzHV5T+A=", "owner": "nix-community", "repo": "home-manager", - "rev": "59ce796b2563e19821361abbe2067c3bb4143a7d", + "rev": "58cef3796271aaeabaed98884d4abaab5d9d162d", "type": "github" }, "original": { @@ -758,11 +790,11 @@ ] }, "locked": { - "lastModified": 1721135958, - "narHash": "sha256-H548rpPMsn25LDKn1PCFmPxmWlClJJGnvdzImHkqjuY=", + "lastModified": 1722462338, + "narHash": "sha256-ss0G8t8RJVDewA3MyqgAlV951cWRK6EtVhVKEZ7J5LU=", "owner": "nix-community", "repo": "home-manager", - "rev": "afd2021bedff2de92dfce0e257a3d03ae65c603d", + "rev": "6e090576c4824b16e8759ebca3958c5b09659ee8", "type": "github" }, "original": { @@ -808,11 +840,11 @@ ] }, "locked": { - "lastModified": 1720108799, - "narHash": "sha256-AxRkTJlbB8r7aG6gvc7IaLhc2T9TO4/8uqanKRxukBQ=", + "lastModified": 1721330371, + "narHash": "sha256-aYlHTWylczLt6ERJyg6E66Y/XSCbVL7leVcRuJmVbpI=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "a5c0d57325c5f0814c39110a70ca19c070ae9486", + "rev": "4493a972b48f9c3014befbbf381ed5fff91a65dc", "type": "github" }, "original": { @@ -842,6 +874,7 @@ }, "hyprland": { "inputs": { + "aquamarine": "aquamarine", "hyprcursor": "hyprcursor", "hyprlang": "hyprlang", "hyprutils": "hyprutils", @@ -851,11 +884,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1721428662, - "narHash": "sha256-fs5PV+LjzNizY/8fURUHOFHs/92JhzMPM7QQr4XsPtg=", + "lastModified": 1722551504, + "narHash": "sha256-/N8voFoU8ALTK8C1esM6MM+lj9zZGCG4lbvH0mNBQUE=", "ref": "refs/heads/main", - "rev": "9b0993cc49b7285a2724a87fdb72bfc90cc75cc5", - "revCount": 4933, + "rev": "09bb5658b7fa6c0dc4e2744797e51ad4dd25af42", + "revCount": 5041, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -880,11 +913,11 @@ ] }, "locked": { - "lastModified": 1718746314, - "narHash": "sha256-HUklK5u86w2Yh9dOkk4FdsL8eehcOZ95jPhLixGDRQY=", + "lastModified": 1721326555, + "narHash": "sha256-zCu4R0CSHEactW9JqYki26gy8h9f6rHmSwj4XJmlHgg=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "1b61f0093afff20ab44d88ad707aed8bf2215290", + "rev": "5a11232266bf1a1f5952d5b179c3f4b2facaaa84", "type": "github" }, "original": { @@ -909,11 +942,11 @@ ] }, "locked": { - "lastModified": 1720381373, - "narHash": "sha256-lyC/EZdHULsaAKVryK11lgHY9u6pXr7qR4irnxNWC7k=", + "lastModified": 1721324361, + "narHash": "sha256-BiJKO0IIdnSwHQBSrEJlKlFr753urkLE48wtt0UhNG4=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "5df0174fd09de4ac5475233d65ffc703e89b82eb", + "rev": "adbefbf49664a6c2c8bf36b6487fd31e3eb68086", "type": "github" }, "original": { @@ -934,11 +967,11 @@ ] }, "locked": { - "lastModified": 1721071737, - "narHash": "sha256-qmC9jGfbE4+EIBbbSAkrfR/p49wShjpv4/KztgE/P54=", + "lastModified": 1722098849, + "narHash": "sha256-D3wIZlBNh7LuZ0NaoCpY/Pvu+xHxIVtSN+KkWZYvvVs=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "eb1ceff2b87f6820789249f63faa8e9dcb54d05f", + "rev": "5dcbbc1e3de40b2cecfd2007434d86e924468f1f", "type": "github" }, "original": { @@ -959,11 +992,11 @@ ] }, "locked": { - "lastModified": 1720215857, - "narHash": "sha256-JPdL+Qul+jEueAn8CARfcWP83eJgwkhMejQYfDvrgvU=", + "lastModified": 1721324119, + "narHash": "sha256-SOOqIT27/X792+vsLSeFdrNTF+OSRp5qXv6Te+fb2Qg=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "d5fa094ca27e0039be5e94c0a80ae433145af8bb", + "rev": "a048a6cb015340bd82f97c1f40a4b595ca85cc30", "type": "github" }, "original": { @@ -980,11 +1013,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1721405746, - "narHash": "sha256-ug0GSFb0/CIRZ3RE18wCvrNHXhUm8qiJ+W+mHnooQ+U=", + "lastModified": 1721682203, + "narHash": "sha256-nCW+lmRn0m/xupLGYcJYslwI/DWrv1PAdlIISFYye8c=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "73bdff656f09ebedf767c33bd28c5551b3423c44", + "rev": "e1d55c697258b3a19973758b739c5f0c2867477f", "type": "github" }, "original": { @@ -1020,11 +1053,11 @@ ] }, "locked": { - "lastModified": 1719845423, - "narHash": "sha256-ZLHDmWAsHQQKnmfyhYSHJDlt8Wfjv6SQhl2qek42O7A=", + "lastModified": 1722082646, + "narHash": "sha256-od8dBWVP/ngg0cuoyEl/w9D+TCNDj6Kh4tr151Aax7w=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "ec12b88104d6c117871fad55e931addac4626756", + "rev": "0413754b3cdb879ba14f6e96915e5fdf06c6aab6", "type": "github" }, "original": { @@ -1035,11 +1068,11 @@ }, "nix-flatpak": { "locked": { - "lastModified": 1711997375, - "narHash": "sha256-KvU4gOtuFMS9Il67glRGtdNfguAINT9pCaXtvCL8uI8=", + "lastModified": 1721549352, + "narHash": "sha256-nlXJa8RSOX0kykrIYW33ukoHYq+FOSNztHLLgqKwOp8=", "owner": "gmodena", "repo": "nix-flatpak", - "rev": "45bf66f7068db79b552da864c0e87452be624d6c", + "rev": "dbce39ea8664820ba9037caaf1e2fad365ed6b4b", "type": "github" }, "original": { @@ -1066,23 +1099,23 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1719876945, - "narHash": "sha256-Fm2rDDs86sHy0/1jxTOKB1118Q0O3Uc7EC0iXvXKpbI=", + "lastModified": 1722555339, + "narHash": "sha256-uFf2QeW7eAHlYXuDktm9c25OxOyCoUOQmh5SZ9amE5Q=", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz" + "url": "https://github.com/NixOS/nixpkgs/archive/a5d394176e64ab29c852d03346c1fc9b0b7d33eb.tar.gz" }, "original": { "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz" + "url": "https://github.com/NixOS/nixpkgs/archive/a5d394176e64ab29c852d03346c1fc9b0b7d33eb.tar.gz" } }, "nixpkgs-stable": { "locked": { - "lastModified": 1720915306, - "narHash": "sha256-6vuViC56+KSr+945bCV8akHK+7J5k6n/epYg/W3I5eQ=", + "lastModified": 1721524707, + "narHash": "sha256-5NctRsoE54N86nWd0psae70YSLfrOek3Kv1e8KoXe/0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "74348da2f3a312ee25cea09b98cdba4cb9fa5d5d", + "rev": "556533a23879fc7e5f98dd2e0b31a6911a213171", "type": "github" }, "original": { @@ -1254,11 +1287,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1719848872, - "narHash": "sha256-H3+EC5cYuq+gQW8y0lSrrDZfH71LB4DAf+TDFyvwCNA=", + "lastModified": 1722185531, + "narHash": "sha256-veKR07psFoJjINLC8RK4DiLniGGMgF3QMlS4tb74S6k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "00d80d13810dbfea8ab4ed1009b09100cca86ba8", + "rev": "52ec9ac3b12395ad677e8b62106f0b98c1f8569d", "type": "github" }, "original": { @@ -1286,11 +1319,11 @@ }, "nixpkgs_21": { "locked": { - "lastModified": 1720781449, - "narHash": "sha256-po3TZO9kcZwzvkyMJKb0WCzzDtiHWD34XeRaX1lWXp0=", + "lastModified": 1721466660, + "narHash": "sha256-pFSxgSZqZ3h+5Du0KvEL1ccDZBwu4zvOil1zzrPNb3c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8b5a3d5a1d951344d683b442c0739010b80039db", + "rev": "6e14bbce7bea6c4efd7adfa88a40dac750d80100", "type": "github" }, "original": { @@ -1334,11 +1367,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1720957393, - "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", + "lastModified": 1722185531, + "narHash": "sha256-veKR07psFoJjINLC8RK4DiLniGGMgF3QMlS4tb74S6k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", + "rev": "52ec9ac3b12395ad677e8b62106f0b98c1f8569d", "type": "github" }, "original": { @@ -1380,11 +1413,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1721379653, - "narHash": "sha256-8MUgifkJ7lkZs3u99UDZMB4kbOxvMEXQZ31FO3SopZ0=", + "lastModified": 1722421184, + "narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "1d9c2c9b3e71b9ee663d11c5d298727dace8d374", + "rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58", "type": "github" }, "original": { @@ -1435,14 +1468,15 @@ "home-manager": "home-manager", "nix-darwin": "nix-darwin", "nixpkgs": "nixpkgs_2", + "nuschtosSearch": "nuschtosSearch", "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1720898451, - "narHash": "sha256-T7JAUYx7WZrEEItqRb9Bh6rj0Njffir4XHJUNwhQMiY=", + "lastModified": 1722492816, + "narHash": "sha256-aZe7oSm/+GM1whS6bxZy+DJgbcy8rDIkygBA0owCvmU=", "owner": "nix-community", "repo": "nixvim", - "rev": "06a44e9e8814ab13ea013e222637a497a50e96e4", + "rev": "820f8d58eafd7121989fea3ae9e71f29699d856b", "type": "github" }, "original": { @@ -1453,11 +1487,11 @@ }, "nur": { "locked": { - "lastModified": 1721420802, - "narHash": "sha256-8kmavDJgzkEwUujFAJCkoLk79r5DRuyVfu5TlLap624=", + "lastModified": 1722557227, + "narHash": "sha256-OoiYLF9q6RTBV6mEcjAyhzd/vt0J/oh11IcpXio7HdY=", "owner": "nix-community", "repo": "nur", - "rev": "3a24dfcc6b7bc383112e5a9e13d7c04cb659eff8", + "rev": "2f48eed087e71bcaf366221f7f10103d41004c03", "type": "github" }, "original": { @@ -1466,6 +1500,29 @@ "type": "github" } }, + "nuschtosSearch": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "dashvim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1722144272, + "narHash": "sha256-olZbfaEdd+zNPuuyYcYGaRzymA9rOmth8yXOlVm+LUs=", + "owner": "NuschtOS", + "repo": "search", + "rev": "16565307c267ec219c2b5d3494ba66df08e7d403", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "repo": "search", + "type": "github" + } + }, "oxicalc": { "inputs": { "flake-parts": "flake-parts_5", @@ -1770,11 +1827,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1720926522, - "narHash": "sha256-eTpnrT6yu1vp8C0B5fxHXhgKxHoYMoYTEikQx///jxY=", + "lastModified": 1722114803, + "narHash": "sha256-s6YhI8UHwQvO4cIFLwl1wZ1eS5Cuuw7ld2VzUchdFP0=", "owner": "Mic92", "repo": "sops-nix", - "rev": "0703ba03fd9c1665f8ab68cc3487302475164617", + "rev": "eb34eb588132d653e4c4925d862f1e5a227cc2ab", "type": "github" }, "original": { @@ -1798,11 +1855,11 @@ "nixpkgs": "nixpkgs_22" }, "locked": { - "lastModified": 1721429336, - "narHash": "sha256-DTJUvI4Xkj4KC5tdq15OEUkPpk7Ebvqcz356dIT6jtY=", + "lastModified": 1722295291, + "narHash": "sha256-3XpT9GMw50NCGT1Gd2YAwEjrEcFtDqnuQ7sRUcuU/Pc=", "owner": "danth", "repo": "stylix", - "rev": "6bbae4f85b891df2e6e48b649919420434088507", + "rev": "feb2973dfa8232c07efbd2b48f11a5cfa2276570", "type": "github" }, "original": { @@ -1970,11 +2027,11 @@ ] }, "locked": { - "lastModified": 1719887753, - "narHash": "sha256-p0B2r98UtZzRDM5miGRafL4h7TwGRC4DII+XXHDHqek=", + "lastModified": 1722330636, + "narHash": "sha256-uru7JzOa33YlSRwf9sfXpJG+UAV+bnBEYMjrzKrQZFw=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "bdb6355009562d8f9313d9460c0d3860f525bc6c", + "rev": "768acdb06968e53aa1ee8de207fd955335c754b7", "type": "github" }, "original": { @@ -2000,11 +2057,11 @@ ] }, "locked": { - "lastModified": 1720194466, - "narHash": "sha256-Rizg9efi6ue95zOp0MeIV2ZedNo+5U9G2l6yirgBUnA=", + "lastModified": 1722365976, + "narHash": "sha256-Khdm+mDzYA//XaU0M+hftod+rKr5q9SSHSEuiQ0/9ow=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "b9b97e5ba23fe7bd5fa4df54696102e8aa863cf6", + "rev": "7f2a77ddf60390248e2a3de2261d7102a13e5341", "type": "github" }, "original": { diff --git a/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix index 01f6193..f7e1ce7 100644 --- a/hardware/spaceship/configuration.nix +++ b/hardware/spaceship/configuration.nix @@ -10,6 +10,9 @@ in # config variables conf = { monitor = "DP-1"; + login_manager = { + resolution = "3440x1440@180"; + }; gaming = { enable = true; }; diff --git a/modules/conf.nix b/modules/conf.nix index f9405b0..7253eac 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -79,6 +79,24 @@ GPU device number ''; }; + + kernel = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Install the gaming(xanmod) kernel. + ''; + }; + + gamemode_gpu = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use GPU optimization. + ''; + }; }; streamdeck = { @@ -169,6 +187,35 @@ ''; }; + login_manager = { + monitor = lib.mkOption { + default = "${config.conf.monitor}"; + example = "eDP-1"; + type = lib.types.str; + description = '' + main monitor for the login screen. + By default the main monitor is used. + ''; + }; + scale = lib.mkOption { + default = "${config.conf.scale}"; + example = "1.5"; + type = lib.types.str; + description = '' + Scale used by the monitor in the login screen. + By default the scale of the main monitor is used. + ''; + }; + resolution = lib.mkOption { + default = "auto"; + example = "3440x1440@180"; + type = lib.types.str; + description = '' + Resolution/refreshrate used by the monitor in the login screen. + ''; + }; + }; + colorscheme = lib.mkOption { default = { # custom tokyo night @@ -207,6 +254,6 @@ }; config = { - conf.kernel = lib.mkIf config.conf.gaming.enable pkgs.linuxPackages_xanmod_latest; + conf.kernel = lib.mkIf (config.conf.gaming.enable && config.conf.gaming.kernel) pkgs.linuxPackages_xanmod_latest; }; } diff --git a/programs/coding.nix b/programs/coding.nix index 5bb53d8..68b4a38 100644 --- a/programs/coding.nix +++ b/programs/coding.nix @@ -101,7 +101,7 @@ gradle maven jdt-language-server - adoptopenjdk-jre-bin + temurin-jre-bin #.! dotnet-sdk_8 diff --git a/programs/gaming/default.nix b/programs/gaming/default.nix index fa34c60..74b08fc 100644 --- a/programs/gaming/default.nix +++ b/programs/gaming/default.nix @@ -9,6 +9,7 @@ lutris wine adwsteamgtk + heroic ]; programs.steam.enable = true; @@ -19,10 +20,11 @@ general = { governor = "performance"; }; - gpu = { + gpu = lib.mkIf config.conf.gaming.gamemode_gpu { apply_gpu_optimisations = "accept-responsibility"; gpu_device = config.conf.gaming.device; amd_performance_level = "high"; + nv_powermizer_mode = 1; }; custom = { start = "notify-send -a 'Gamemode' 'Optimizations activated'"; From 51d2c2aa7cf7539e04e729ef170ac19bc7f47037 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 3 Aug 2024 18:08:22 +0200 Subject: [PATCH 041/330] Modularize nixos and home-manager packages --- README.md | 24 +++++ base/base_packages.nix | 82 --------------- base/big_g.nix | 12 --- base/common_hardware.nix | 34 ++----- base/default.nix | 4 +- base/env.nix | 7 +- base/extra.nix | 1 - base/login_manager.nix | 60 ----------- base/theme.nix | 8 ++ base/xkb_layout.nix | 2 - hardware/marmo/configuration.nix | 3 + hardware/overheating/configuration.nix | 3 + hardware/spaceship/configuration.nix | 9 +- modules/conf.nix | 62 ++++++------ modules/programs/base_packages.nix | 104 +++++++++++++++++++ modules/programs/coding.nix | 134 +++++++++++++++++++++++++ modules/programs/default.nix | 9 ++ modules/programs/flatpak.nix | 31 ++++++ modules/programs/gnome_services.nix | 28 ++++++ modules/programs/greetd.nix | 99 ++++++++++++++++++ modules/programs/home_packages.nix | 93 +++++++++++++++++ modules/programs/layout.nix | 23 +++++ modules/programs/media.nix | 56 +++++++++++ modules/programs/piper.nix | 19 ++++ modules/programs/printing.nix | 24 +++++ programs/coding.nix | 116 --------------------- programs/common.nix | 79 +-------------- programs/default.nix | 4 - programs/flatpak.nix | 14 --- programs/hyprland/config.nix | 6 +- programs/media.nix | 34 ------- programs/utils.nix | 11 -- 32 files changed, 713 insertions(+), 482 deletions(-) delete mode 100644 base/base_packages.nix delete mode 100644 base/big_g.nix delete mode 100644 base/extra.nix delete mode 100644 base/login_manager.nix create mode 100644 base/theme.nix create mode 100644 modules/programs/base_packages.nix create mode 100644 modules/programs/coding.nix create mode 100644 modules/programs/flatpak.nix create mode 100644 modules/programs/gnome_services.nix create mode 100644 modules/programs/greetd.nix create mode 100644 modules/programs/home_packages.nix create mode 100644 modules/programs/layout.nix create mode 100644 modules/programs/media.nix create mode 100644 modules/programs/piper.nix create mode 100644 modules/programs/printing.nix delete mode 100644 programs/coding.nix delete mode 100644 programs/flatpak.nix delete mode 100644 programs/media.nix delete mode 100644 programs/utils.nix diff --git a/README.md b/README.md index e9a047a..2fdca1b 100644 --- a/README.md +++ b/README.md @@ -10,3 +10,27 @@ My personal configuration for NixOS/home-manager. While not intended to be used by someone else, feel free to do so anyway or use it as a template for your configuration if you wish to. + +# Modules + +This configuration features several modules that can be used as preconfigured "recipies". +These modules attempt to combine the home-manager and nixos packages/options to one single configuration file for each new system. +For package lists, please check the individual modules, as the lists can be long. + +- base packages : A list of system packages to be installed by default +- home packages : A list of home packages to be installed by default +- media packages : A list of media packages to be installed by default +- coding packages : A list of coding packages to be installed by default +- acpid : Enables the acpid daemon +- bluetooth : Configures/enables bluetooth and installs tools for bluetooth +- drives : A drive configuration module +- flatpak : Installs and enables declarative flatpak +- gnome_services : Gnome services for minimal enviroments -> Window managers etc +- gpu : GPU settings (AMD) +- greetd : Enables and configures the greetd/regreet login manager with Hyprland +- kde_connect : Enables KDE connect and opens its ports +- layout : Modules to configure keyboard layout system wide +- piper : Installs and enables piper alongside its daemon +- printing : Enables and configures printing services +- virtualbox : Enables and configures virtualbox +- xone : Installs the xone driver diff --git a/base/base_packages.nix b/base/base_packages.nix deleted file mode 100644 index 4175297..0000000 --- a/base/base_packages.nix +++ /dev/null @@ -1,82 +0,0 @@ -{ pkgs, config, ... }: -{ - imports = [ - # is wrapped in if statement to enable when needed - ../programs/gaming/default.nix - ../programs/themes/stylix.nix - ]; - - 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 - (lib.mkIf config.conf.streamdeck.enable (callPackage - ../override/streamdeck.nix - { })) - ]; - - gtk.iconCache.enable = false; - - fonts.packages = with pkgs; [ - cantarell-fonts - ]; - - nix.settings.experimental-features = "nix-command flakes"; - - virtualisation.docker.enable = true; - - services.upower.enable = true; - services.printing.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.dconf.enable = true; - 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/base/big_g.nix b/base/big_g.nix deleted file mode 100644 index 0b1fe1d..0000000 --- a/base/big_g.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ pkgs, ... }: { - services = { - # needed for GNOME services outside of GNOME Desktop - dbus.packages = with pkgs; [ - gcr - gnome.gnome-settings-daemon - ]; - - gnome.gnome-keyring.enable = true; - gvfs.enable = true; - }; -} diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 2cd48a9..e8b4f88 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -11,7 +11,10 @@ in boot.loader.efi.canTouchEfiVariables = true; # Enable networking + networking.useDHCP = lib.mkDefault true; networking.networkmanager.enable = true; + networking.hostName = config.conf.hostname; + services.flatpak.enable = true; # Set your time zone. @@ -23,25 +26,14 @@ in # Enable the X11 windowing system. services.xserver.enable = true; - # Configure keymap in X11 - services.xserver = { - xkb.layout = "us"; - xkb.variant = ""; - }; - - # 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; - }; + nixpkgs.hostPlatform = lib.mkDefault config.conf.system; + nix.settings.auto-optimise-store = true; # Enable sound with pipewire. hardware.pulseaudio.enable = false; + hardware.cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + + services.fstrim.enable = lib.mkDefault true; security.rtkit.enable = true; services.pipewire = { enable = true; @@ -65,8 +57,6 @@ in "resume=\"PARTLABEL=SWAP\"" ] ++ config.conf.boot_params; - networking.hostName = config.conf.hostname; - # allows user change later on users.mutableUsers = true; users.users.${username} = { @@ -82,8 +72,6 @@ in password = "firstlogin"; }; - system.stateVersion = "unstable"; - fileSystems."/" = { device = "/dev/disk/by-label/ROOT"; @@ -115,10 +103,4 @@ in swapDevices = [{ device = "/dev/disk/by-label/SWAP"; }]; - - nixpkgs.hostPlatform = lib.mkDefault config.conf.system; - hardware.cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - services.fstrim.enable = lib.mkDefault true; - nix.settings.auto-optimise-store = true; - networking.useDHCP = lib.mkDefault true; } diff --git a/base/default.nix b/base/default.nix index 6a582dd..8fd4f86 100644 --- a/base/default.nix +++ b/base/default.nix @@ -1,10 +1,8 @@ { imports = [ - ./big_g.nix - ./login_manager.nix ./env.nix ./xkb_layout.nix - ./base_packages.nix ./common_hardware.nix + ./theme.nix ]; } diff --git a/base/env.nix b/base/env.nix index 0591a20..d8cf336 100644 --- a/base/env.nix +++ b/base/env.nix @@ -1,7 +1,4 @@ -{ pkgs -, config -, ... -}: { +{ pkgs, config, ... }: { environment.variables = { GSETTINGS_SCHEMA_DIR = "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; NEOVIDE_MAXIMIZED = "0"; @@ -13,7 +10,7 @@ environment.sessionVariables = { NIXOS_OZONE_WL = "1"; GOPATH = "$HOME/.go"; - FLAKE = "home/${config.conf.username}/gits/dotFiles/nix"; + FLAKE = config.conf.nix_path; # don't ask... marksman somehow requires this DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = 1; }; diff --git a/base/extra.nix b/base/extra.nix deleted file mode 100644 index 96fb09e..0000000 --- a/base/extra.nix +++ /dev/null @@ -1 +0,0 @@ -{ options, ... }: options.extra.extraHardwareConfig diff --git a/base/login_manager.nix b/base/login_manager.nix deleted file mode 100644 index 37a3d7e..0000000 --- a/base/login_manager.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ lib -, config -, pkgs -, inputs -, ... -}: -let - username = config.conf.username; - session = { - command = "${lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland} --config /etc/greetd/hyprgreet.conf"; - user = username; - }; -in -{ - 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 - ''; - - # 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.conf.login_manager.monitor},${config.conf.login_manager.resolution},0x0,${config.conf.login_manager.scale} - monitor=_,disable - - input { - force_no_accel = true - } - - misc { - disable_splash_rendering = false - disable_hyprland_logo = false - } - - 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; -} diff --git a/base/theme.nix b/base/theme.nix new file mode 100644 index 0000000..15d10c2 --- /dev/null +++ b/base/theme.nix @@ -0,0 +1,8 @@ +{ lib, config, ... }: { + # imports = lib.mkIf config.conf.default_base_packages.enable [ + imports = [ + # is wrapped in if statement to enable when needed + ../programs/gaming/default.nix + ../programs/themes/stylix.nix + ]; +} diff --git a/base/xkb_layout.nix b/base/xkb_layout.nix index 8238484..ecbc97c 100644 --- a/base/xkb_layout.nix +++ b/base/xkb_layout.nix @@ -19,5 +19,3 @@ in symbolsFile = "${layout}"; }; } - - diff --git a/hardware/marmo/configuration.nix b/hardware/marmo/configuration.nix index fbecd6f..3764ad0 100644 --- a/hardware/marmo/configuration.nix +++ b/hardware/marmo/configuration.nix @@ -22,5 +22,8 @@ amdgpu.enable = true; kde_connect.enable = true; xone.enable = true; + greetd = { + resolution = "3440x1440@180"; + }; }; } diff --git a/hardware/overheating/configuration.nix b/hardware/overheating/configuration.nix index 027bff1..6f79231 100644 --- a/hardware/overheating/configuration.nix +++ b/hardware/overheating/configuration.nix @@ -27,5 +27,8 @@ kde_connect.enable = true; bluetooth.enable = true; acpid.enable = true; + greetd = { + resolution = "3440x1440@180"; + }; }; } diff --git a/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix index f7e1ce7..cd2f8b7 100644 --- a/hardware/spaceship/configuration.nix +++ b/hardware/spaceship/configuration.nix @@ -10,9 +10,6 @@ in # config variables conf = { monitor = "DP-1"; - login_manager = { - resolution = "3440x1440@180"; - }; gaming = { enable = true; }; @@ -22,7 +19,7 @@ in monitor = [ # default "DP-2,2560x1440@165,0x0,1" - "DP-1,3440x1440@180,2560x0,1,vrr,1" + "DP-1,3440x1440@180,2560x0,1,vrr,0" "HDMI-A-1,1920x1200@60,6000x0,1" "HDMI-A-1,transform,1" @@ -84,9 +81,13 @@ in kde_connect.enable = true; xone.enable = true; amdgpu.enable = true; + piper.enable = true; vapi = { enable = true; rocm.enable = true; }; + greetd = { + resolution = "3440x1440@180"; + }; }; } diff --git a/modules/conf.nix b/modules/conf.nix index 7253eac..5e47826 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -141,7 +141,7 @@ monitor = lib.mkOption { default = [ ]; example = [ - "DP-1,3440x1440@180,2560x0,1,vrr,1" + "DP-1,3440x1440@180,2560x0,1,vrr,0" ]; type = with lib.types; listOf str; description = '' @@ -187,33 +187,31 @@ ''; }; - login_manager = { - monitor = lib.mkOption { - default = "${config.conf.monitor}"; - example = "eDP-1"; - type = lib.types.str; - description = '' - main monitor for the login screen. - By default the main monitor is used. - ''; - }; - scale = lib.mkOption { - default = "${config.conf.scale}"; - example = "1.5"; - type = lib.types.str; - description = '' - Scale used by the monitor in the login screen. - By default the scale of the main monitor is used. - ''; - }; - resolution = lib.mkOption { - default = "auto"; - example = "3440x1440@180"; - type = lib.types.str; - description = '' - Resolution/refreshrate used by the monitor in the login screen. - ''; - }; + nix_path = lib.mkOption { + default = "/home${config.conf.username}/gits/dotFiles"; + example = "yourpath"; + type = lib.types.str; + description = '' + The default path for your configuration. + ''; + }; + + kb_layout = lib.mkOption { + default = "dashie"; + example = "us"; + type = lib.types.str; + description = '' + The layout used in services. + ''; + }; + + system_state_version = lib.mkOption { + default = "unstable"; + example = "24.05"; + type = lib.types.str; + description = '' + System state version + ''; }; colorscheme = lib.mkOption { @@ -251,9 +249,15 @@ or a path to a custom yaml file. ''; }; + + }; config = { conf.kernel = lib.mkIf (config.conf.gaming.enable && config.conf.gaming.kernel) pkgs.linuxPackages_xanmod_latest; - }; + } // (lib.optionalAttrs (options?system.stateVersion) + { + system.stateVersion = "unstable"; + } + ); } diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix new file mode 100644 index 0000000..8186448 --- /dev/null +++ b/modules/programs/base_packages.nix @@ -0,0 +1,104 @@ +{ config, lib, options, pkgs, ... }: { + options.mods = { + default_base_packages = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables default system packages. + ''; + }; + additional_packages = lib.mkOption { + default = [ ]; + example = [ pkgs.openssl ]; + type = with lib.types; listOf packages; + description = '' + Additional packages to install. + Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. + ''; + }; + }; + }; + + + 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 + (lib.mkIf config.conf.streamdeck.enable (callPackage + ../../override/streamdeck.nix + { })) + ]; + + gtk.iconCache.enable = false; + + fonts.packages = with pkgs; [ + cantarell-fonts + ]; + + nix.settings.experimental-features = "nix-command flakes"; + + virtualisation.docker.enable = 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; + }))); +} diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix new file mode 100644 index 0000000..aa222ff --- /dev/null +++ b/modules/programs/coding.nix @@ -0,0 +1,134 @@ +{ lib, config, pkgs, options, ... }: { + options.mods = { + coding = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables coding packages. + ''; + }; + dashvim = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables dashvim package. + ''; + }; + }; + }; + + config = lib.mkIf config.mods.coding.enable (lib.optionalAttrs (options?home.packages) { + programs.dashvim = lib.mkIf config.mods.coding.dashvim { + enable = true; + colorscheme = config.conf.colorscheme; + }; + home.packages = with pkgs; [ + #basics + gitui + gcc + meson + ninja + tree-sitter + unzip + pkg-config + sqlite + plantuml + d-spy + + # cpp + bear + clang-tools + + #sql + nodePackages.sql-formatter + sqls + + #assembly + asm-lsp + + #yaml + yamlfmt + yamllint + yaml-language-server + + #markdown + marksman + mdformat + + #bash + bash-language-server + shfmt + + #fsharp + fsharp + fsautocomplete + + #haskell + haskellPackages.cabal-install + ghc + haskellPackages.haskell-language-server + + #html + html-tidy + + #json + jq + nodePackages.vscode-json-languageserver + + #css + tailwindcss + tailwindcss-language-server + vscode-langservers-extracted + + #editors + neovide + ##fallback + vscodium + + #rust + rustup + + #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 + + #go + go + gopls + + #typst + typst + tinymist + ltex-ls + + #java + gradle + maven + jdt-language-server + temurin-jre-bin + + #.! + dotnet-sdk_8 + omnisharp-roslyn + csharpier + netcoredbg + + #zig + zig + zls + ]; + + }); +} diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 5d1864d..92cc349 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -7,5 +7,14 @@ ./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 + ./flatpak.nix ]; } diff --git a/modules/programs/flatpak.nix b/modules/programs/flatpak.nix new file mode 100644 index 0000000..930cbef --- /dev/null +++ b/modules/programs/flatpak.nix @@ -0,0 +1,31 @@ +{ lib, config, options, pkgs, ... }: { + options.mods.flatpak = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables the flatpak package manager"; + }; + additional_packages = lib.mkOption { + default = [ ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Flatpak packages"; + }; + }; + 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) { + 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 + "com.github.tchx84.Flatseal" + ] ++ config.mods.flatpak.additional_packages; + }); +} diff --git a/modules/programs/gnome_services.nix b/modules/programs/gnome_services.nix new file mode 100644 index 0000000..96a6aa0 --- /dev/null +++ b/modules/programs/gnome_services.nix @@ -0,0 +1,28 @@ +{ lib, config, options, pkgs, ... }: { + + options.mods = { + gnome_services.enable = lib.mkOption { + default = true; + type = lib.types.bool; + example = false; + description = '' + Enables gnome services: keyring and settings daemon. + Note: Do not use these for environments which ship these functionalities by default: GNOME, KDE + ''; + }; + }; + + 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 + ]; + + gnome.gnome-keyring.enable = true; + gvfs.enable = true; + }; + }); +} diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix new file mode 100644 index 0000000..b5ae800 --- /dev/null +++ b/modules/programs/greetd.nix @@ -0,0 +1,99 @@ +{ config, lib, inputs, pkgs, options, ... }: { + options.mods = { + greetd = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables the greetd login manager. + ''; + }; + monitor = lib.mkOption { + default = "${config.conf.monitor}"; + example = "eDP-1"; + type = lib.types.str; + description = '' + main monitor for the login screen. + By default the main monitor is used. + ''; + }; + scale = lib.mkOption { + default = "${config.conf.scale}"; + example = "1.5"; + type = lib.types.str; + description = '' + Scale used by the monitor in the login screen. + By default the scale of the main monitor is used. + ''; + }; + resolution = lib.mkOption { + default = "auto"; + example = "3440x1440@180"; + type = lib.types.str; + description = '' + Resolution/refreshrate used by the monitor in the login screen. + ''; + }; + }; + }; + + 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; + }; + }; + + 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' + + 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 + } + + misc { + disable_splash_rendering = false + disable_hyprland_logo = false + } + + 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; + }); +} diff --git a/modules/programs/home_packages.nix b/modules/programs/home_packages.nix new file mode 100644 index 0000000..fe33b3e --- /dev/null +++ b/modules/programs/home_packages.nix @@ -0,0 +1,93 @@ +{ lib, options, config, pkgs, inputs, ... }: { + options.mods.home_packages = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Home manager packages"; + }; + additional_packages = lib.mkOption { + default = [ ]; + example = [ pkgs.flatpak ]; + type = lib.types.str; + description = '' + Additional Home manager packages. + Will be installed regardless of default home manager packages are installed. + ''; + }; + }; + 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) { + home.packages = with pkgs; [ + keepassxc + nheko + nextcloud-client + xournalpp + vesktop + kitty + fish + ripgrep + rm-improved + bat + fd + lsd + (nerdfonts.override { fonts = [ "JetBrainsMono" ]; }) + noto-fonts + flatpak + networkmanager + zoxide + fastfetch + gnome-keyring + dbus + killall + adw-gtk3 + qt5ct + qt6ct + gnutar + fishPlugins.tide + nix-index + libnotify + zenith + nh + amberol + pulseaudio + playerctl + ncspot + poppler_utils + brave + greetd.regreet + sops + flake-checker + ffmpeg + system-config-printer + brightnessctl + (callPackage + ../../override/cambalache.nix + { }) + ]; + + #my own programs + programs.oxicalc.enable = true; + programs.oxinoti.enable = true; + programs.oxidash.enable = true; + programs.oxishut.enable = true; + programs.oxipaste.enable = true; + programs.hyprdock.enable = true; + programs.ReSet.enable = true; + programs.ReSet.config.plugins = [ + inputs.reset-plugins.packages."x86_64-linux".monitor + inputs.reset-plugins.packages."x86_64-linux".keyboard + ]; + programs.ReSet.config.plugin_config = { + Keyboard = { + path = "/home/${config.conf.username}/.config/reset/keyboard.conf"; + }; + }; + }))); +} diff --git a/modules/programs/layout.nix b/modules/programs/layout.nix new file mode 100644 index 0000000..a6cb853 --- /dev/null +++ b/modules/programs/layout.nix @@ -0,0 +1,23 @@ +{ lib, options, config, ... }: { + options.mods.xkb = { + layout = lib.mkOption { + default = "dashie"; + example = "us"; + type = lib.types.str; + description = "Your layout"; + }; + variant = lib.mkOption { + default = ""; + example = ""; + type = lib.types.str; + description = "Your variant"; + }; + }; + config = (lib.optionalAttrs (options?services.xserver) { + # Configure keymap in X11 + services.xserver = { + xkb.layout = "${config.mods.xkb.layout}"; + xkb.variant = "${config.mods.xkb.variant}"; + }; + }); +} diff --git a/modules/programs/media.nix b/modules/programs/media.nix new file mode 100644 index 0000000..ff52e4d --- /dev/null +++ b/modules/programs/media.nix @@ -0,0 +1,56 @@ +{ lib, options, config, pkgs, ... }: { + options.mods.media_packages = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Default media packages"; + }; + additional_packages = lib.mkOption { + default = [ ]; + example = [ pkgs.flatpak ]; + type = lib.types.str; + description = '' + Additional media packages. + Will be installed regardless of default media packages are installed. + ''; + }; + }; + 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 + wireplumber + # audio control + playerctl + # images + imv + # videos + mpv + # pdf + zathura + evince + libreoffice-fresh + onlyoffice-bin + pdftk + pdfpc + polylux2pdfpc + # spotify + # video editing + kdenlive + # image creation + inkscape + gimp + krita + yt-dlp + ]; + programs.obs-studio.enable = true; + programs.obs-studio.plugins = with pkgs; [ + obs-studio-plugins.obs-vaapi + ]; + }))); +} diff --git a/modules/programs/piper.nix b/modules/programs/piper.nix new file mode 100644 index 0000000..fe45bfb --- /dev/null +++ b/modules/programs/piper.nix @@ -0,0 +1,19 @@ +{ lib, config, options, pkgs, ... }: { + options.mods.piper = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables the piper program and its daemon"; + }; + }; + 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 + ]; + }); +} diff --git a/modules/programs/printing.nix b/modules/programs/printing.nix new file mode 100644 index 0000000..cbb18e5 --- /dev/null +++ b/modules/programs/printing.nix @@ -0,0 +1,24 @@ +{ lib, config, options, pkgs, ... }: { + options.mods.printing = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables the piper program and its daemon"; + }; + }; + 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; + }; + }); +} diff --git a/programs/coding.nix b/programs/coding.nix deleted file mode 100644 index 68b4a38..0000000 --- a/programs/coding.nix +++ /dev/null @@ -1,116 +0,0 @@ -{ pkgs -, lib -, config -, ... -}: -{ - programs.dashvim = { - enable = true; - colorscheme = config.conf.colorscheme; - }; - - home.packages = with pkgs; [ - #basics - gitui - gcc - meson - ninja - tree-sitter - unzip - pkg-config - sqlite - plantuml - d-spy - - # cpp - bear - clang-tools - - #sql - nodePackages.sql-formatter - sqls - - #assembly - asm-lsp - - #yaml - yamlfmt - yamllint - yaml-language-server - - #markdown - marksman - mdformat - - #bash - bash-language-server - shfmt - - #fsharp - fsharp - fsautocomplete - - #haskell - haskellPackages.cabal-install - ghc - haskellPackages.haskell-language-server - - #html - html-tidy - - #json - jq - nodePackages.vscode-json-languageserver - - #css - tailwindcss - tailwindcss-language-server - vscode-langservers-extracted - - #editors - neovide - ##fallback - vscodium - - #rust - rustup - - #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 - - #go - go - gopls - - #typst - typst - tinymist - ltex-ls - - #java - gradle - maven - jdt-language-server - temurin-jre-bin - - #.! - dotnet-sdk_8 - omnisharp-roslyn - csharpier - netcoredbg - - #zig - zig - zls - ]; -} diff --git a/programs/common.nix b/programs/common.nix index 49f0074..02d3034 100644 --- a/programs/common.nix +++ b/programs/common.nix @@ -1,11 +1,5 @@ -{ pkgs -, inputs -, lib -, config -, ... -}: +{ config, ... }: let - callPackage = lib.callPackageWith (pkgs); username = config.conf.username; in { @@ -16,68 +10,6 @@ in }; fonts.fontconfig.enable = true; - home.packages = with pkgs; [ - vesktop - kitty - fish - ripgrep - rm-improved - bat - fd - lsd - (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; }) - noto-fonts - flatpak - networkmanager - zoxide - fastfetch - pkgs.gnome-keyring - dbus - killall - adw-gtk3 - qt5ct - qt6ct - gnutar - fishPlugins.tide - nix-index - libnotify - zenith - nh - amberol - pulseaudio - playerctl - ncspot - poppler_utils - brave - greetd.regreet - sops - flake-checker - ffmpeg - system-config-printer - brightnessctl - (callPackage - ../override/cambalache.nix - { }) - ]; - - #my own programs - programs.oxicalc.enable = true; - programs.oxinoti.enable = true; - programs.oxidash.enable = true; - programs.oxishut.enable = true; - programs.oxipaste.enable = true; - programs.hyprdock.enable = true; - programs.ReSet.enable = true; - programs.ReSet.config.plugins = [ - inputs.reset-plugins.packages."x86_64-linux".monitor - inputs.reset-plugins.packages."x86_64-linux".keyboard - ]; - programs.ReSet.config.plugin_config = { - Keyboard = { - path = "/home/${username}/.config/reset/keyboard.conf"; - }; - }; - nixpkgs.config.allowUnfree = true; home.username = username; @@ -98,15 +30,6 @@ in [Context] filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0 ''; - # - # dconf.settings = { - # "org/gnome/desktop/interface" = { - # gtk-theme = "adw-gtk3"; - # cursor-theme = "Bibata-Modern-Classic"; - # cursor-size = 24; - # icon-theme = "MoreWaita"; - # }; - # }; programs.nix-index = { diff --git a/programs/default.nix b/programs/default.nix index a0e4b2f..e0d86cd 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -33,12 +33,8 @@ in home-manager.users.${config.conf.username} = { imports = [ ./hyprland/default.nix - ./flatpak.nix ./common.nix - ./coding.nix ./xdg.nix - ./media.nix - ./utils.nix ./oxi/default.nix ./themes/default.nix ./individual_configs/default.nix diff --git a/programs/flatpak.nix b/programs/flatpak.nix deleted file mode 100644 index 4abc89d..0000000 --- a/programs/flatpak.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ lib, ... }: { - - services.flatpak.remotes = lib.mkOptionDefault [{ - name = "flathub-stable"; - location = "https://dl.flathub.org/repo/flathub.flatpakrepo"; - }]; - services.flatpak.uninstallUnmanaged = true; - services.flatpak.packages = [ - # fallback if necessary, but generally avoided as nix is superior :) - "com.github.tchx84.Flatseal" - "io.github.Foldex.AdwSteamGtk" - ]; -} - diff --git a/programs/hyprland/config.nix b/programs/hyprland/config.nix index 4673dd6..df90cfc 100644 --- a/programs/hyprland/config.nix +++ b/programs/hyprland/config.nix @@ -151,7 +151,8 @@ }; input = { - #kb_layout = "dashie"; + kb_layout = "{config.mods.xkb.layout}"; + kb_variant = "{config.mods.xkb.variant}"; repeat_delay = 200; force_no_accel = true; touchpad = { @@ -168,11 +169,14 @@ disable_hyprland_logo = true; swallow_regex = "^(.*)(kitty)(.*)$"; initial_workspace_tracking = 1; + no_direct_scanout = false; }; 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; }; gestures = { diff --git a/programs/media.nix b/programs/media.nix deleted file mode 100644 index cf205c6..0000000 --- a/programs/media.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - # base audio - pipewire - wireplumber - # audio control - playerctl - # images - imv - # videos - mpv - # pdf - zathura - evince - libreoffice-fresh - onlyoffice-bin - pdftk - pdfpc - polylux2pdfpc - # spotify - # video editing - kdenlive - # image creation - inkscape - gimp - krita - yt-dlp - ]; - programs.obs-studio.enable = true; - programs.obs-studio.plugins = with pkgs; [ - obs-studio-plugins.obs-vaapi - ]; -} diff --git a/programs/utils.nix b/programs/utils.nix deleted file mode 100644 index 16960d3..0000000 --- a/programs/utils.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ pkgs -, ... -}: -{ - home.packages = with pkgs; [ - keepassxc - nheko - nextcloud-client - xournalpp - ]; -} From 25eac3559fd235c26c6f5fc41c7027ed909ce5d4 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 3 Aug 2024 18:12:01 +0200 Subject: [PATCH 042/330] Readd qmk configuration --- dashie.json | 491 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 491 insertions(+) create mode 100644 dashie.json diff --git a/dashie.json b/dashie.json new file mode 100644 index 0000000..7e3e561 --- /dev/null +++ b/dashie.json @@ -0,0 +1,491 @@ +{ + "version": 1, + "notes": "", + "documentation": "\"This file is a QMK Configurator export. You can import this at . It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: \n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n", + "keyboard": "rgbkb/sol3/rev1", + "keymap": "dashie", + "layout": "LAYOUT", + "layers": [ + [ + "KC_ESC", + "KC_1", + "KC_2", + "KC_3", + "KC_4", + "KC_5", + "KC_MINS", + "KC_EQL", + "KC_6", + "KC_7", + "KC_8", + "KC_9", + "KC_0", + "KC_BSPC", + "KC_TAB", + "KC_Q", + "KC_W", + "KC_E", + "KC_R", + "KC_T", + "KC_LBRC", + "KC_RBRC", + "KC_Y", + "KC_U", + "KC_I", + "KC_O", + "KC_P", + "KC_BSLS", + "MO(1)", + "KC_A", + "KC_S", + "KC_D", + "KC_F", + "KC_G", + "KC_LPRN", + "KC_RPRN", + "KC_H", + "KC_J", + "KC_K", + "KC_L", + "KC_SCLN", + "KC_QUOT", + "KC_LSFT", + "KC_Z", + "KC_X", + "KC_C", + "KC_V", + "KC_B", + "KC_LCBR", + "KC_RCBR", + "KC_N", + "KC_M", + "KC_COMM", + "KC_DOT", + "KC_SLSH", + "KC_GRV", + "KC_LCTL", + "MO(4)", + "RGB_TOG", + "KC_LALT", + "KC_LGUI", + "KC_SPC", + "KC_PGDN", + "KC_DEL", + "KC_BSPC", + "KC_PGUP", + "KC_ENT", + "KC_RCTL", + "KC_RALT", + "KC_CAPS", + "KC_HOME", + "KC_RCTL", + "KC_VOLD", + "KC_VOLU", + "KC_VOLD", + "KC_VOLU", + "KC_VOLD", + "KC_VOLU", + "KC_VOLD", + "KC_VOLU", + "KC_VOLD", + "KC_VOLU", + "KC_VOLD", + "KC_VOLU", + "KC_VOLD", + "KC_VOLU", + "KC_MNXT", + "KC_MPLY", + "KC_MPRV", + "KC_VOLD", + "KC_VOLU", + "KC_MNXT", + "KC_MPLY", + "KC_MPRV" + ], + [ + "KC_ESC", + "KC_F1", + "KC_F2", + "KC_F3", + "KC_F4", + "KC_F5", + "KC_F6", + "KC_F7", + "KC_F8", + "KC_F9", + "KC_F10", + "KC_F11", + "KC_F12", + "KC_DEL", + "KC_TRNS", + "KC_MPRV", + "KC_MNXT", + "KC_MPLY", + "KC_MUTE", + "KC_G", + "KC_TRNS", + "KC_TRNS", + "KC_BTN2", + "KC_MS_L", + "KC_MS_D", + "KC_MS_U", + "KC_MS_R", + "KC_BTN1", + "KC_TRNS", + "KC_VOLD", + "KC_VOLU", + "KC_S", + "KC_T", + "KC_D", + "KC_TRNS", + "KC_TRNS", + "KC_H", + "KC_LEFT", + "KC_DOWN", + "KC_UP", + "KC_RGHT", + "KC_TRNS", + "KC_TRNS", + "KC_Z", + "KC_X", + "KC_C", + "KC_V", + "KC_B", + "KC_TRNS", + "KC_TRNS", + "KC_K", + "KC_M", + "KC_COMM", + "KC_DOT", + "KC_SLSH", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_CAPS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS" + ], + [ + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_F1", + "KC_F5", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_Q", + "KC_W", + "KC_E", + "KC_R", + "KC_T", + "KC_F2", + "KC_F6", + "KC_Y", + "KC_U", + "KC_I", + "KC_O", + "KC_P", + "KC_TRNS", + "KC_TRNS", + "KC_A", + "KC_S", + "KC_D", + "KC_F", + "KC_G", + "KC_F3", + "KC_F7", + "KC_H", + "KC_J", + "KC_K", + "KC_L", + "KC_SCLN", + "KC_TRNS", + "KC_TRNS", + "KC_Z", + "KC_X", + "KC_C", + "KC_V", + "KC_B", + "KC_F4", + "KC_F8", + "KC_N", + "KC_M", + "KC_COMM", + "KC_DOT", + "KC_SLSH", + "KC_TRNS", + "KC_TRNS", + "KC_NO", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS" + ], + [ + "KC_TRNS", + "KC_F1", + "KC_F2", + "KC_F3", + "KC_F4", + "KC_F5", + "KC_F11", + "KC_F12", + "KC_F6", + "KC_F7", + "KC_F8", + "KC_F9", + "KC_F10", + "KC_TRNS", + "KC_TRNS", + "KC_HOME", + "KC_UP", + "KC_END", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_HOME", + "KC_UP", + "KC_END", + "KC_PSCR", + "KC_PGUP", + "KC_TRNS", + "KC_LEFT", + "KC_DOWN", + "KC_RGHT", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_LEFT", + "KC_DOWN", + "KC_RGHT", + "KC_INS", + "KC_PGDN", + "KC_TRNS", + "ANY(AU_TOGG)", + "ANY(MU_TOGG)", + "ANY(MU_NEXT)", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "ANY(CK_TOGG)", + "ANY(CK_UP)", + "ANY(CK_DOWN)", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_MPLY", + "KC_MNXT", + "KC_MUTE", + "KC_VOLD", + "KC_VOLU", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS" + ], + [ + "KC_TRNS", + "KC_F1", + "KC_F2", + "KC_F3", + "KC_F4", + "KC_F5", + "KC_F11", + "KC_F12", + "KC_F6", + "KC_F7", + "KC_F8", + "KC_F9", + "KC_F10", + "KC_TRNS", + "KC_TRNS", + "RGB_SAD", + "RGB_VAI", + "RGB_SAI", + "QK_BOOT", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_P7", + "KC_P8", + "KC_P9", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "RGB_HUD", + "RGB_VAD", + "RGB_HUI", + "KC_NO", + "KC_TRNS", + "ANY(DM_REC1)", + "KC_TRNS", + "KC_TRNS", + "KC_P4", + "KC_P5", + "KC_P6", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "RGB_SPD", + "KC_TRNS", + "RGB_SPI", + "KC_TRNS", + "KC_TRNS", + "ANY(DM_RSTP)", + "KC_TRNS", + "KC_TRNS", + "KC_P1", + "KC_P2", + "KC_P3", + "KC_TRNS", + "DF(2)", + "KC_TRNS", + "RGB_RMOD", + "RGB_TOG", + "RGB_MOD", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_P0", + "KC_PDOT", + "KC_NUM", + "DF(0)", + "DF(1)", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS", + "KC_TRNS" + ] + ], + "author": "" +} \ No newline at end of file From bab352d00e51cfbff0a9671ac6795f284dfaab46 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 3 Aug 2024 19:06:59 +0200 Subject: [PATCH 043/330] Modularize Hyprland configuration --- hardware/marmo/configuration.nix | 6 +- hardware/overheating/configuration.nix | 6 +- hardware/spaceship/configuration.nix | 8 +- modules/conf.nix | 41 --- modules/programs/default.nix | 1 + modules/programs/gnome_services.nix | 29 +- modules/programs/hyprland/anyrun.nix | 83 +++++ modules/programs/hyprland/default.nix | 9 + modules/programs/hyprland/hyprland.nix | 324 ++++++++++++++++++ modules/programs/hyprland/hyprlock.nix | 48 +++ modules/programs/hyprland/hyprpaper.nix | 31 ++ .../programs}/hyprland/ironbar.nix | 25 +- programs/default.nix | 1 - programs/hyprland/anyrun.nix | 69 ---- programs/hyprland/config.nix | 265 -------------- programs/hyprland/default.nix | 28 -- programs/hyprland/hyprlock.nix | 36 -- programs/hyprland/hyprpaper.nix | 5 - 18 files changed, 543 insertions(+), 472 deletions(-) create mode 100644 modules/programs/hyprland/anyrun.nix create mode 100644 modules/programs/hyprland/default.nix create mode 100644 modules/programs/hyprland/hyprland.nix create mode 100644 modules/programs/hyprland/hyprlock.nix create mode 100644 modules/programs/hyprland/hyprpaper.nix rename {programs => modules/programs}/hyprland/ironbar.nix (94%) delete mode 100644 programs/hyprland/anyrun.nix delete mode 100644 programs/hyprland/config.nix delete mode 100644 programs/hyprland/default.nix delete mode 100644 programs/hyprland/hyprlock.nix delete mode 100644 programs/hyprland/hyprpaper.nix diff --git a/hardware/marmo/configuration.nix b/hardware/marmo/configuration.nix index 3764ad0..c505cf8 100644 --- a/hardware/marmo/configuration.nix +++ b/hardware/marmo/configuration.nix @@ -10,15 +10,15 @@ device = 1; }; hostname = "marmo"; + colorscheme = "catppuccin-mocha"; + }; + mods = { hyprland.monitor = [ # default "DP-1,1920x1080@144,0x0,1" # all others ",highrr,auto,1" ]; - colorscheme = "catppuccin-mocha"; - }; - mods = { amdgpu.enable = true; kde_connect.enable = true; xone.enable = true; diff --git a/hardware/overheating/configuration.nix b/hardware/overheating/configuration.nix index 6f79231..f2df9ca 100644 --- a/hardware/overheating/configuration.nix +++ b/hardware/overheating/configuration.nix @@ -10,6 +10,9 @@ ironbar.modules = [ { type = "upower"; class = "memory-usage"; } ]; + colorscheme = "catppuccin-mocha"; + }; + mods = { hyprland = { monitor = [ # default @@ -20,9 +23,6 @@ ]; extra_autostart = [ "hyprdock --server" ]; }; - colorscheme = "catppuccin-mocha"; - }; - mods = { amdgpu.enable = true; kde_connect.enable = true; bluetooth.enable = true; diff --git a/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix index cd2f8b7..1aff9cd 100644 --- a/hardware/spaceship/configuration.nix +++ b/hardware/spaceship/configuration.nix @@ -15,6 +15,9 @@ in }; streamdeck.enable = true; hostname = "spaceship"; + colorscheme = "catppuccin-mocha"; + }; + mods = { hyprland = { monitor = [ # default @@ -45,7 +48,7 @@ in # monitor right "3,monitor:HDMI-A-1, default:true" ]; - hyprpaper = '' + hyprpaper.config = '' #load preload = /home/${username}/Pictures/backgrounds/shinobu_2k.jpg preload = /home/${username}/Pictures/backgrounds/shino_wide.png @@ -59,9 +62,6 @@ in ''; extra_autostart = [ "streamdeck -n" ]; }; - colorscheme = "catppuccin-mocha"; - }; - mods = { extraDrives = [ { name = "drive2"; diff --git a/modules/conf.nix b/modules/conf.nix index 5e47826..ebeb0c4 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -137,47 +137,6 @@ ''; }; - hyprland = { - monitor = lib.mkOption { - default = [ ]; - example = [ - "DP-1,3440x1440@180,2560x0,1,vrr,0" - ]; - type = with lib.types; listOf str; - description = '' - The monitor configuration for hyprland. - ''; - }; - workspace = lib.mkOption { - default = [ ]; - example = [ - "2,monitor:DP-1, default:true" - ]; - type = with lib.types; listOf str; - description = '' - The workspace configuration for hyprland. - ''; - }; - hyprpaper = lib.mkOption { - default = ''''; - example = '' - hyprpaper stuff - ''; - type = lib.types.lines; - description = '' - hyprpaper - ''; - }; - extra_autostart = lib.mkOption { - default = [ ]; - example = [ "your application" ]; - type = lib.types.listOf lib.types.str; - description = '' - Extra exec_once. - ''; - }; - }; - nvim-colorscheme = lib.mkOption { default = { tokyonight = { enable = true; }; }; example = { catppuccin = { enable = true; }; }; diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 92cc349..2096c6a 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -16,5 +16,6 @@ ./home_packages.nix ./media.nix ./flatpak.nix + ./hyprland ]; } diff --git a/modules/programs/gnome_services.nix b/modules/programs/gnome_services.nix index 96a6aa0..39a0943 100644 --- a/modules/programs/gnome_services.nix +++ b/modules/programs/gnome_services.nix @@ -12,17 +12,24 @@ }; }; - 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 - ]; + 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 + ]; - gnome.gnome-keyring.enable = true; - gvfs.enable = true; - }; + gnome.gnome-keyring.enable = true; + gvfs.enable = true; + }; + } // lib.optionalAttrs (options?home.packages) { + home.packages = with pkgs; [ + nautilus + sushi + nautilus-python + ]; }); } diff --git a/modules/programs/hyprland/anyrun.nix b/modules/programs/hyprland/anyrun.nix new file mode 100644 index 0000000..f81687f --- /dev/null +++ b/modules/programs/hyprland/anyrun.nix @@ -0,0 +1,83 @@ +{ lib, config, pkgs, options, inputs, ... }: { + options.mods = { + hyprland.anyrun = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables anyrun"; + }; + }; + }; + + config = lib.mkIf config.mods.hyprland.anyrun.enable + (lib.optionalAttrs (options?programs.anyrun) { + programs.anyrun = { + enable = true; + config = { + plugins = [ + inputs.anyrun.packages.${pkgs.system}.applications + inputs.anyrun.packages.${pkgs.system}.rink + inputs.anyrun.packages.${pkgs.system}.translate + inputs.anyrun.packages.${pkgs.system}.websearch + ]; + #position = "center"; + hideIcons = false; + width = { fraction = 0.3; }; + y = { fraction = 0.5; }; + layer = "overlay"; + hidePluginInfo = true; + closeOnClick = true; + }; + + extraCss = '' + #window { + border-radius: 10px; + background-color: none; + } + + box#main { + border-radius: 10px; + } + + list#main { + border-radius: 10px; + margin: 0px 10px 10px 10px; + } + + list#plugin { + border-radius: 10px; + } + + list#match { + border-radius: 10px; + } + + entry#entry { + border: none; + border-radius: 10px; + margin: 10px 10px 0px 10px; + } + + label#match-desc { + font-size: 12px; + border-radius: 10px; + } + + label#match-title { + font-size: 12px; + border-radius: 10px; + } + + label#plugin { + font-size: 16px; + border-radius: 10px; + } + + * { + border-radius: 10px; + } + ''; + }; + }); +} diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix new file mode 100644 index 0000000..a181f64 --- /dev/null +++ b/modules/programs/hyprland/default.nix @@ -0,0 +1,9 @@ +{ + imports = [ + ./hyprland.nix + ./anyrun.nix + ./ironbar.nix + ./hyprlock.nix + ./hyprpaper.nix + ]; +} diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix new file mode 100644 index 0000000..a8034ee --- /dev/null +++ b/modules/programs/hyprland/hyprland.nix @@ -0,0 +1,324 @@ +{ config, lib, options, pkgs, ... }: { + imports = [ + + ]; + + options.mods = { + hyprland = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enable Hyprland + ''; + }; + monitor = lib.mkOption { + default = [ ]; + example = [ + "DP-1,3440x1440@180,2560x0,1,vrr,0" + ]; + type = with lib.types; listOf str; + description = '' + The monitor configuration for hyprland. + ''; + }; + workspace = lib.mkOption { + default = [ ]; + example = [ + "2,monitor:DP-1, default:true" + ]; + type = with lib.types; listOf str; + description = '' + The workspace configuration for hyprland. + ''; + }; + extra_autostart = lib.mkOption { + default = [ ]; + example = [ "your application" ]; + type = lib.types.listOf lib.types.str; + description = '' + Extra exec_once. + ''; + }; + }; + }; + + 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 + ]; + + wayland.windowManager.hyprland.enable = true; + wayland.windowManager.hyprland.settings = { + "$mod" = "SUPER"; + "source" = "/home/${config.conf.username}/.config/reset/keyboard.conf"; + + 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 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" + ]; + }; + + dwindle = { + preserve_split = true; + pseudotile = 0; + permanent_direction_override = false; + }; + + 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; + }; + }; + + misc = { + animate_manual_resizes = 1; + enable_swallow = true; + disable_splash_rendering = true; + disable_hyprland_logo = true; + swallow_regex = "^(.*)(kitty)(.*)$"; + initial_workspace_tracking = 1; + no_direct_scanout = false; + }; + + 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; + }; + + gestures = { + workspace_swipe = true; + }; + + monitor = config.mods.hyprland.monitor; + workspace = config.mods.hyprland.workspace; + + 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" + ]; + + layerrule = [ + # layer rules + # mainly to disable animations within slurp and grim + "noanim, selection" + ]; + + 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" + "nextcloud --background" + "oxinoti" + ] ++ config.mods.hyprland.extra_autostart; + + # plugin = { + # hyprspace = { + # bind = [ + # "SUPER, W, overview:toggle, toggle" + # ]; + # }; + # }; + }; + # wayland.windowManager.hyprland.plugins = [ + # inputs.Hyprspace.packages.${pkgs.system}.Hyprspace + # ]; + }); +} diff --git a/modules/programs/hyprland/hyprlock.nix b/modules/programs/hyprland/hyprlock.nix new file mode 100644 index 0000000..648b8e0 --- /dev/null +++ b/modules/programs/hyprland/hyprlock.nix @@ -0,0 +1,48 @@ +{ config, lib, options, pkgs, ... }: { + options.mods = { + hyprland.hyprlock = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables Hyprlock"; + }; + }; + }; + + config = lib.mkIf config.mods.hyprland.hyprlock.enable + (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)"; + } + ]; + + input-field = [ + { + monitor = "${config.conf.monitor}"; + + placeholder_text = "password or something"; + } + ]; + + 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 new file mode 100644 index 0000000..af7e2d9 --- /dev/null +++ b/modules/programs/hyprland/hyprpaper.nix @@ -0,0 +1,31 @@ +{ config, lib, options, pkgs, ... }: { + options.mods = { + hyprland.hyprpaper = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables Hyprpaper"; + }; + config = lib.mkOption { + default = ''''; + example = '' + Hyprpaper config + ''; + type = lib.types.lines; + description = '' + Hyprpaper config + ''; + }; + }; + }; + + 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 { + text = config.mods.hyprland.hyprpaper.config; + }; + }); +} diff --git a/programs/hyprland/ironbar.nix b/modules/programs/hyprland/ironbar.nix similarity index 94% rename from programs/hyprland/ironbar.nix rename to modules/programs/hyprland/ironbar.nix index 0b8a070..be32982 100644 --- a/programs/hyprland/ironbar.nix +++ b/modules/programs/hyprland/ironbar.nix @@ -1,11 +1,23 @@ -{ config, ... }: -let - username = config.conf.username; -in +{ lib, config, pkgs, options, ... }: + let + username = config.conf.username; + in { + options.mods = { + hyprland.ironbar = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables ironbar"; + }; + }; + }; + config = lib.mkIf config.mods.hyprland.ironbar.enable + (lib.optionalAttrs (options?programs.ironbar) + { - programs.ironbar = - { + programs.ironbar = { enable = true; style = '' @import url("/home/${username}/.config/gtk-3.0/gtk.css"); @@ -258,4 +270,5 @@ in }; }; }; + }); } diff --git a/programs/default.nix b/programs/default.nix index e0d86cd..406287c 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -32,7 +32,6 @@ in home-manager.users.${config.conf.username} = { imports = [ - ./hyprland/default.nix ./common.nix ./xdg.nix ./oxi/default.nix diff --git a/programs/hyprland/anyrun.nix b/programs/hyprland/anyrun.nix deleted file mode 100644 index 08d78dc..0000000 --- a/programs/hyprland/anyrun.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ inputs, pkgs, ... }: { - programs.anyrun = { - enable = true; - config = { - plugins = [ - inputs.anyrun.packages.${pkgs.system}.applications - inputs.anyrun.packages.${pkgs.system}.rink - inputs.anyrun.packages.${pkgs.system}.translate - inputs.anyrun.packages.${pkgs.system}.websearch - ]; - #position = "center"; - hideIcons = false; - width = { fraction = 0.3; }; - y = { fraction = 0.5; }; - layer = "overlay"; - hidePluginInfo = true; - closeOnClick = true; - }; - - extraCss = '' - #window { - border-radius: 10px; - background-color: none; - } - - box#main { - border-radius: 10px; - } - - list#main { - border-radius: 10px; - margin: 0px 10px 10px 10px; - } - - list#plugin { - border-radius: 10px; - } - - list#match { - border-radius: 10px; - } - - entry#entry { - border: none; - border-radius: 10px; - margin: 10px 10px 0px 10px; - } - - label#match-desc { - font-size: 12px; - border-radius: 10px; - } - - label#match-title { - font-size: 12px; - border-radius: 10px; - } - - label#plugin { - font-size: 16px; - border-radius: 10px; - } - - * { - border-radius: 10px; - } - ''; - }; -} diff --git a/programs/hyprland/config.nix b/programs/hyprland/config.nix deleted file mode 100644 index df90cfc..0000000 --- a/programs/hyprland/config.nix +++ /dev/null @@ -1,265 +0,0 @@ -{ config -, lib -, ... -}: -{ - wayland.windowManager.hyprland.enable = true; - wayland.windowManager.hyprland.settings = { - "$mod" = "SUPER"; - "source" = "/home/${config.conf.username}/.config/reset/keyboard.conf"; - - 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 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" - ]; - }; - - dwindle = { - preserve_split = true; - pseudotile = 0; - permanent_direction_override = false; - }; - - 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; - }; - }; - - misc = { - animate_manual_resizes = 1; - enable_swallow = true; - disable_splash_rendering = true; - disable_hyprland_logo = true; - swallow_regex = "^(.*)(kitty)(.*)$"; - initial_workspace_tracking = 1; - no_direct_scanout = false; - }; - - 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; - }; - - gestures = { - workspace_swipe = true; - }; - - monitor = config.conf.hyprland.monitor; - workspace = config.conf.hyprland.workspace; - - 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" - ]; - - layerrule = [ - # layer rules - # mainly to disable animations within slurp and grim - "noanim, selection" - ]; - - 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" - "nextcloud --background" - "oxinoti" - ] ++ config.conf.hyprland.extra_autostart; - - # plugin = { - # hyprspace = { - # bind = [ - # "SUPER, W, overview:toggle, toggle" - # ]; - # }; - # }; - }; - # wayland.windowManager.hyprland.plugins = [ - # inputs.Hyprspace.packages.${pkgs.system}.Hyprspace - # ]; -} diff --git a/programs/hyprland/default.nix b/programs/hyprland/default.nix deleted file mode 100644 index c0873de..0000000 --- a/programs/hyprland/default.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ pkgs -, ... -}: { - imports = [ - ./anyrun.nix - ./config.nix - ./ironbar.nix - ./hyprpaper.nix - ./hyprlock.nix - ]; - - home.packages = with pkgs; [ - xorg.xprop - grim - slurp - satty - xdg-desktop-portal-gtk - # xdg-desktop-portal-hyprland - copyq - nautilus - sushi - nautilus-python - wl-clipboard - hyprcursor - hyprpaper - hyprpicker - ]; -} diff --git a/programs/hyprland/hyprlock.nix b/programs/hyprland/hyprlock.nix deleted file mode 100644 index 70e01b7..0000000 --- a/programs/hyprland/hyprlock.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ config -, ... -}: -{ - programs.hyprlock = { - enable = true; - settings = { - background = [ - { - monitor = ""; - path = ""; - color = "rgba(26, 27, 38, 1.0)"; - } - ]; - - input-field = [ - { - monitor = "${config.conf.monitor}"; - - placeholder_text = "password or something"; - } - ]; - - label = [ - { - monitor = "${config.conf.monitor}"; - text = "$TIME"; - font_size = 50; - position = "0, 200"; - valign = "center"; - halign = "center"; - } - ]; - }; - }; -} diff --git a/programs/hyprland/hyprpaper.nix b/programs/hyprland/hyprpaper.nix deleted file mode 100644 index 802a963..0000000 --- a/programs/hyprland/hyprpaper.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ config, ... }: { - xdg.configFile."hypr/hyprpaper.conf" = { - text = config.conf.hyprland.hyprpaper; - }; -} From 75fa39fe598ab6377455d04aa75fb9dbc2d06fdd Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 3 Aug 2024 19:09:20 +0200 Subject: [PATCH 044/330] Add hyprland readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2fdca1b..bcd4cd6 100644 --- a/README.md +++ b/README.md @@ -34,3 +34,4 @@ For package lists, please check the individual modules, as the lists can be long - printing : Enables and configures printing services - virtualbox : Enables and configures virtualbox - xone : Installs the xone driver +- Hyprland: Installs and configures Hyprland with various additional packages From 8d35835f8988735a23e30fc9e565c43b374a100c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 3 Aug 2024 23:16:09 +0200 Subject: [PATCH 045/330] Fixup modules --- flake.lock | 26 ++++----- hardware/marmo/configuration.nix | 2 +- modules/programs/default.nix | 2 + modules/programs/hyprland/hyprland.nix | 4 +- modules/programs/nextcloud.nix | 81 ++++++++++++++++++++++++++ programs/common.nix | 1 + secrets/secrets.yaml | 7 ++- 7 files changed, 104 insertions(+), 19 deletions(-) create mode 100644 modules/programs/nextcloud.nix diff --git a/flake.lock b/flake.lock index ebbb13c..748aea8 100644 --- a/flake.lock +++ b/flake.lock @@ -790,11 +790,11 @@ ] }, "locked": { - "lastModified": 1722462338, - "narHash": "sha256-ss0G8t8RJVDewA3MyqgAlV951cWRK6EtVhVKEZ7J5LU=", + "lastModified": 1722630065, + "narHash": "sha256-QfM/9BMRkCmgWzrPDK+KbgJOUlSJnfX4OvsUupEUZvA=", "owner": "nix-community", "repo": "home-manager", - "rev": "6e090576c4824b16e8759ebca3958c5b09659ee8", + "rev": "afc892db74d65042031a093adb6010c4c3378422", "type": "github" }, "original": { @@ -884,11 +884,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1722551504, - "narHash": "sha256-/N8voFoU8ALTK8C1esM6MM+lj9zZGCG4lbvH0mNBQUE=", + "lastModified": 1722707408, + "narHash": "sha256-hyTuWhcid8UklJBC4Yh3dpf7Xhx4oJDyM/3n10E1wSk=", "ref": "refs/heads/main", - "rev": "09bb5658b7fa6c0dc4e2744797e51ad4dd25af42", - "revCount": 5041, + "rev": "51ffd7fa6f186419276e5d3d5fe141a3fdb3c55c", + "revCount": 5048, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -1013,11 +1013,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1721682203, - "narHash": "sha256-nCW+lmRn0m/xupLGYcJYslwI/DWrv1PAdlIISFYye8c=", + "lastModified": 1722698043, + "narHash": "sha256-Hsgi1DJP+oodbsULTrqpO6KPSJYeyswluNLVGxUtwJE=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "e1d55c697258b3a19973758b739c5f0c2867477f", + "rev": "6e43c7ae0cce4b8c6dfe2f74756574195b944abe", "type": "github" }, "original": { @@ -1487,11 +1487,11 @@ }, "nur": { "locked": { - "lastModified": 1722557227, - "narHash": "sha256-OoiYLF9q6RTBV6mEcjAyhzd/vt0J/oh11IcpXio7HdY=", + "lastModified": 1722709906, + "narHash": "sha256-I27FkJ3qSsxc5aZSwpYHMqJwLpvQt6eV4MrwGfVjCvM=", "owner": "nix-community", "repo": "nur", - "rev": "2f48eed087e71bcaf366221f7f10103d41004c03", + "rev": "ac1226f223779364c73f1a450654383768dab1b7", "type": "github" }, "original": { diff --git a/hardware/marmo/configuration.nix b/hardware/marmo/configuration.nix index c505cf8..4327b2e 100644 --- a/hardware/marmo/configuration.nix +++ b/hardware/marmo/configuration.nix @@ -1,6 +1,6 @@ { imports = [ - ../../modules/conf.nix + ../../modules ]; # variables for system conf = { diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 2096c6a..305ce4d 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -15,7 +15,9 @@ ./base_packages.nix ./home_packages.nix ./media.nix + ./coding.nix ./flatpak.nix + ./nextcloud.nix ./hyprland ]; } diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index a8034ee..a9edb5e 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -209,8 +209,8 @@ }; input = { - kb_layout = "{config.mods.xkb.layout}"; - kb_variant = "{config.mods.xkb.variant}"; + kb_layout = "${config.mods.xkb.layout}"; + kb_variant = "${config.mods.xkb.variant}"; repeat_delay = 200; force_no_accel = true; touchpad = { diff --git a/modules/programs/nextcloud.nix b/modules/programs/nextcloud.nix new file mode 100644 index 0000000..d6a0b10 --- /dev/null +++ b/modules/programs/nextcloud.nix @@ -0,0 +1,81 @@ +{ lib, config, pkgs, options, ... }: { + options.mods = { + nextcloud = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enable nextcloud"; + }; + username = lib.mkOption { + default = "DashieTM"; + example = "globi"; + type = lib.types.str; + description = "Your username"; + }; + url = lib.mkOption { + default = "cloud.dashie.org"; + example = "cloud.globi.org"; + type = lib.types.str; + description = "Your url"; + }; + synclist = lib.mkOption { + default = [ ]; + 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). + ''; + }; + }; + }; + + # config = + # let + # username = config.mods.nextcloud.username; + # password = config.sops.secrets.nextcloud; + # url = config.mods.nextcloud.url; + # synclist = config.mods.nextcloud.synclist; + # name = "test"; + # local = "test"; + # remote = "test"; + # in + # lib.mkIf config.mods.nextcloud.enable + # (lib.optionalAttrs (options?systemd.user.startServices) #{ + # builtins.listToAttrs + # (map + # ({ name, remote, local }: { + # systemd.user = { + # services."${name}" = { + # Unit = { + # Description = "Auto sync Nextcloud"; + # After = "network-online.target"; + # }; + # Service = { + # Type = "simple"; + # ExecStart = "${pkgs.nextcloud-client}/bin/nextcloudcmd -h --path ${remote} ${local} https://${username}:${password}@${url}"; + # TimeoutStopSec = "180"; + # KillMode = "process"; + # KillSignal = "SIGINT"; + # }; + # Install.WantedBy = [ "multi-user.target" ]; + # }; + # timers.${name} = { + # 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" ]; + # }; + # startServices = true; + # }; + # # }); + # })) + # synclist + # ); +} diff --git a/programs/common.nix b/programs/common.nix index 02d3034..b6d93b9 100644 --- a/programs/common.nix +++ b/programs/common.nix @@ -46,6 +46,7 @@ in secrets.hub = { }; secrets.lab = { }; secrets.${username} = { }; + secrets.nextcloud = { }; }; systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ]; } diff --git a/secrets/secrets.yaml b/secrets/secrets.yaml index 6be4816..b0d8ae7 100644 --- a/secrets/secrets.yaml +++ b/secrets/secrets.yaml @@ -5,14 +5,15 @@ hub_pub: ENC[AES256_GCM,data:6vIAQWFMIR+HnERg+A4jKu/MW+e7eLQplmdJyBeuBL9tvxH1idT lab_pub: ENC[AES256_GCM,data:rlHCiqGnoaPiQBaZQRT+bEjfNF7jNO4CGPoCOKJ1o7nv7i2jPy6Bq9OMBHXsMHI9oGfEhyKCDHdpJ65aI07KJC/fMoMoAyiNmalwNOn26jbgj84mfENS3IYbfKxQVXAUCJHE5m1cFsm7,iv:8SLdHLYq2tlfHBjdeDoByEzGuu3TURj4+KJvQfPuaWA=,tag:mmGXlRwQ0UoVIAJE6d1OUQ==,type:str] dashie_pub: ENC[AES256_GCM,data:k6JIJOKDJcGSW47Z8y0EYxNl/vaPRVbIn35CSA57snEzYnk5GpU+1NfPDniWoAGRkpIwicgN6kpzssRlKOmVudvwMejSLv4VkLRBjrsApVFECwoIBLUNGUSDaMcIwC/BYu4jfjGaozBj,iv:0EZ0rptLdmcuTU1BGOILaaDTrc7aZGJCCxgjUESqi0M=,tag:dlQs/ugBGxnSrNj/bRSJSw==,type:str] server_pub: ENC[AES256_GCM,data:87nTYzA8CykOPjfZS2As8+JB/ysJvHXFYbPIBA8Nus8Y3nI3Tl2F/f7mUVFBT+4mmOFTTwxghEnkpgTg/vzUm6W4wb19rIcv11eM7HYaGl5oI44a44rBJn2+PKlfIgXVgaY=,iv:O7I7kkZ44McXzCt3wH1cM3MJCShxu2O+0U0+Y6rwePo=,tag:q5D5AGMmFyiNhQNR8dRB+g==,type:str] +nextcloud: ENC[AES256_GCM,data:gJOgw6lYjEDt3Xgqm4Y2P8uqyCpP8hYXkbU=,iv:9J6ksbxnmWBqOMGcRzcV7/4pnEfeltn9JuSFownXZSk=,tag:trnz5520V01aPsef9sxJuw==,type:str] sops: kms: [] gcp_kms: [] azure_kv: [] hc_vault: [] age: [] - lastmodified: "2024-07-08T18:00:49Z" - mac: ENC[AES256_GCM,data:66P0uEUhQit+EjBEhAoQP3yVAt988eYwwxnOPGahPfKDw5ud+b8atc9mT6vGK3TfQFoZfjwhRxEOmc/Wx/PA+L01S7gAFctKrnbADAfRn7HJmtX3pXunhDxI6hGyJW+CrFNiLhViMJSXHljhj/QfDmxkJ/6TSSi8uMr2iNlLA3I=,iv:AJ4RB0CV0QAumZ6o36loeR51GUxQKnEsUklIGJnn5qI=,tag:or1MamtafGlwBRr/JsL9Eg==,type:str] + lastmodified: "2024-08-03T20:23:57Z" + mac: ENC[AES256_GCM,data:e3fQXTDmWZpPt0ymvVxbuE4FLusChsVKVDZqx1pOfXSZMTphosUW5nghoQnER6Yvi2V5paaAVFhSM/FTSu7/5YU0nffgaMFRSxsao9ds9YZV2b/4cWwveGRB07C0OKPDSYX3+NDIPBmDMM2hVLBexvS0Z0BC5bKloCFw1OFprcg=,iv:fniuutOwbeEvVObNI48TZmiv16WWYudeFMSmWo69h+g=,tag:P1z44JgBuTnXyZVCVgZwLg==,type:str] pgp: - created_at: "2024-05-14T14:35:02Z" enc: |- @@ -27,4 +28,4 @@ sops: -----END PGP MESSAGE----- fp: 92D29D420B5D95FCA46A12FE778CFA7A623614F3 unencrypted_suffix: _unencrypted - version: 3.8.1 + version: 3.9.0 From ee2b51bbc13626161d89612d638c38d0d115efeb Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 4 Aug 2024 03:48:07 +0200 Subject: [PATCH 046/330] Modularize nextcloud and remove need for GUI application --- hardware/spaceship/configuration.nix | 19 ++++++++++ modules/programs/hyprland/hyprland.nix | 5 +-- modules/programs/nextcloud.nix | 42 ---------------------- programs/default.nix | 1 + programs/sync.nix | 48 ++++++++++++++++++++++++++ secrets/secrets.yaml | 6 ++-- 6 files changed, 74 insertions(+), 47 deletions(-) create mode 100644 programs/sync.nix diff --git a/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix index 1aff9cd..e236f69 100644 --- a/hardware/spaceship/configuration.nix +++ b/hardware/spaceship/configuration.nix @@ -89,5 +89,24 @@ in greetd = { resolution = "3440x1440@180"; }; + nextcloud = { + synclist = [ + { + name = "document_sync"; + remote = "Documents"; + local = "/home/${config.conf.username}/Documents"; + } + { + name = "picture_sync"; + remote = "Pictures"; + local = "/home/${config.conf.username}/Pictures"; + } + { + name = "phone_sync"; + remote = "Phone/Stuff"; + local = "/home/${config.conf.username}/Videos/Phone/Stuff"; + } + ]; + }; }; } diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index a9edb5e..6a8c0c1 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -1,6 +1,6 @@ { config, lib, options, pkgs, ... }: { imports = [ - + ]; options.mods = { @@ -305,7 +305,8 @@ "ironbar" "firefox" "oxipaste_daemon" - "nextcloud --background" + # should be taken care of with the new systemd services + # "nextcloud --background" "oxinoti" ] ++ config.mods.hyprland.extra_autostart; diff --git a/modules/programs/nextcloud.nix b/modules/programs/nextcloud.nix index d6a0b10..7f91dce 100644 --- a/modules/programs/nextcloud.nix +++ b/modules/programs/nextcloud.nix @@ -36,46 +36,4 @@ }; }; - # config = - # let - # username = config.mods.nextcloud.username; - # password = config.sops.secrets.nextcloud; - # url = config.mods.nextcloud.url; - # synclist = config.mods.nextcloud.synclist; - # name = "test"; - # local = "test"; - # remote = "test"; - # in - # lib.mkIf config.mods.nextcloud.enable - # (lib.optionalAttrs (options?systemd.user.startServices) #{ - # builtins.listToAttrs - # (map - # ({ name, remote, local }: { - # systemd.user = { - # services."${name}" = { - # Unit = { - # Description = "Auto sync Nextcloud"; - # After = "network-online.target"; - # }; - # Service = { - # Type = "simple"; - # ExecStart = "${pkgs.nextcloud-client}/bin/nextcloudcmd -h --path ${remote} ${local} https://${username}:${password}@${url}"; - # TimeoutStopSec = "180"; - # KillMode = "process"; - # KillSignal = "SIGINT"; - # }; - # Install.WantedBy = [ "multi-user.target" ]; - # }; - # timers.${name} = { - # 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" ]; - # }; - # startServices = true; - # }; - # # }); - # })) - # synclist - # ); } diff --git a/programs/default.nix b/programs/default.nix index 406287c..355d768 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -37,6 +37,7 @@ in ./oxi/default.nix ./themes/default.nix ./individual_configs/default.nix + ./sync.nix ] ++ base_imports ++ lib.optional (builtins.pathExists mod) mod; }; diff --git a/programs/sync.nix b/programs/sync.nix new file mode 100644 index 0000000..281e4eb --- /dev/null +++ b/programs/sync.nix @@ -0,0 +1,48 @@ +{ config, pkgs, options, lib, ... }: +let + username = config.mods.nextcloud.username; + password = config.sops.secrets.nextcloud.path; + url = config.mods.nextcloud.url; + synclist = config.mods.nextcloud.synclist; +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.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/secrets/secrets.yaml b/secrets/secrets.yaml index b0d8ae7..9c2f429 100644 --- a/secrets/secrets.yaml +++ b/secrets/secrets.yaml @@ -5,15 +5,15 @@ hub_pub: ENC[AES256_GCM,data:6vIAQWFMIR+HnERg+A4jKu/MW+e7eLQplmdJyBeuBL9tvxH1idT lab_pub: ENC[AES256_GCM,data:rlHCiqGnoaPiQBaZQRT+bEjfNF7jNO4CGPoCOKJ1o7nv7i2jPy6Bq9OMBHXsMHI9oGfEhyKCDHdpJ65aI07KJC/fMoMoAyiNmalwNOn26jbgj84mfENS3IYbfKxQVXAUCJHE5m1cFsm7,iv:8SLdHLYq2tlfHBjdeDoByEzGuu3TURj4+KJvQfPuaWA=,tag:mmGXlRwQ0UoVIAJE6d1OUQ==,type:str] dashie_pub: ENC[AES256_GCM,data:k6JIJOKDJcGSW47Z8y0EYxNl/vaPRVbIn35CSA57snEzYnk5GpU+1NfPDniWoAGRkpIwicgN6kpzssRlKOmVudvwMejSLv4VkLRBjrsApVFECwoIBLUNGUSDaMcIwC/BYu4jfjGaozBj,iv:0EZ0rptLdmcuTU1BGOILaaDTrc7aZGJCCxgjUESqi0M=,tag:dlQs/ugBGxnSrNj/bRSJSw==,type:str] server_pub: ENC[AES256_GCM,data:87nTYzA8CykOPjfZS2As8+JB/ysJvHXFYbPIBA8Nus8Y3nI3Tl2F/f7mUVFBT+4mmOFTTwxghEnkpgTg/vzUm6W4wb19rIcv11eM7HYaGl5oI44a44rBJn2+PKlfIgXVgaY=,iv:O7I7kkZ44McXzCt3wH1cM3MJCShxu2O+0U0+Y6rwePo=,tag:q5D5AGMmFyiNhQNR8dRB+g==,type:str] -nextcloud: ENC[AES256_GCM,data:gJOgw6lYjEDt3Xgqm4Y2P8uqyCpP8hYXkbU=,iv:9J6ksbxnmWBqOMGcRzcV7/4pnEfeltn9JuSFownXZSk=,tag:trnz5520V01aPsef9sxJuw==,type:str] +nextcloud: ENC[AES256_GCM,data:hjpS1WKsQJ6U2XX3GAbVP93VBAE8hKUdBRD9nI5Yiw==,iv:QaJNScNaxLLArzHLutIWdgN4m+9F0+Ym0FOcL53ygeQ=,tag:PamHgZJ+rsb3Dno2kEZRpQ==,type:str] sops: kms: [] gcp_kms: [] azure_kv: [] hc_vault: [] age: [] - lastmodified: "2024-08-03T20:23:57Z" - mac: ENC[AES256_GCM,data:e3fQXTDmWZpPt0ymvVxbuE4FLusChsVKVDZqx1pOfXSZMTphosUW5nghoQnER6Yvi2V5paaAVFhSM/FTSu7/5YU0nffgaMFRSxsao9ds9YZV2b/4cWwveGRB07C0OKPDSYX3+NDIPBmDMM2hVLBexvS0Z0BC5bKloCFw1OFprcg=,iv:fniuutOwbeEvVObNI48TZmiv16WWYudeFMSmWo69h+g=,tag:P1z44JgBuTnXyZVCVgZwLg==,type:str] + lastmodified: "2024-08-04T00:37:58Z" + mac: ENC[AES256_GCM,data:zpPT060VGVh16KA70at4k2Q57zmT6PpYwHgGLfXLoPTu+aq3UhwQDnV/7gOUEquzopAT/lanbYjZ70uZZkXgU/HkBHNF3MLLULPK4HrOWgcsm277WPrgLqT9yUG2H8yxZGxDmKvFA7wHQ4TWyvqOmfuGv89UPoyV9PBGZ7anO6s=,iv:JtPVYsvg+2qgUlf6IF157lmorK2FrK1A6Fo15rkEnXA=,tag:iLWhUcFqY5Mip++SUZEj3Q==,type:str] pgp: - created_at: "2024-05-14T14:35:02Z" enc: |- From 8ee4ea7fe14398e78f236882e60f6fc5358b5ca5 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 4 Aug 2024 13:59:13 +0200 Subject: [PATCH 047/330] Add server configuration --- flake.nix | 18 +- hardware/marmo/configuration.nix | 11 +- hardware/overheating/configuration.nix | 19 +- hardware/server/configuration.nix | 345 +++++++++++++++++++++ hardware/server/hardware-configuration.nix | 62 ++++ hardware/server/mautrix-discord.nix | 250 +++++++++++++++ hardware/server/mautrix-whatsapp.nix | 250 +++++++++++++++ hardware/spaceship/configuration.nix | 4 +- modules/programs/nextcloud.nix | 2 +- programs/individual_configs/firefox.nix | 20 +- programs/individual_configs/keepass.nix | 8 +- programs/sync.nix | 5 +- secrets/secrets.yaml | 11 +- 13 files changed, 988 insertions(+), 17 deletions(-) create mode 100644 hardware/server/configuration.nix create mode 100644 hardware/server/hardware-configuration.nix create mode 100644 hardware/server/mautrix-discord.nix create mode 100644 hardware/server/mautrix-whatsapp.nix diff --git a/flake.nix b/flake.nix index 2793a63..f392710 100644 --- a/flake.nix +++ b/flake.nix @@ -4,6 +4,7 @@ inputs = { nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; + stable.url = "github:NixOs/nixpkgs/nixos-24.05"; nix-flatpak = { url = "github:gmodena/nix-flatpak"; @@ -50,6 +51,12 @@ outputs = { ... }@inputs: let + stable = import inputs.stable { + system = "x86_64-linux"; + config = { + allowUnfree = true; + }; + }; pkgs = import inputs.nixpkgs { system = "x86_64-linux"; overlays = [ @@ -62,7 +69,16 @@ dashielib = import ./lib { inherit inputs pkgs; }; in { - nixosConfigurations = (dashielib.build_systems [ "marmo" "overheating" "spaceship" ]); + nixosConfigurations = (dashielib.build_systems [ "marmo" "overheating" "spaceship" ]) // { + server = { + specialArgs = { + inherit inputs; pkgs = stable; + }; + modules = [ + ./hardware/server/configuration.nix + ]; + }; + }; }; nixConfig = { diff --git a/hardware/marmo/configuration.nix b/hardware/marmo/configuration.nix index 4327b2e..b9b90b2 100644 --- a/hardware/marmo/configuration.nix +++ b/hardware/marmo/configuration.nix @@ -1,4 +1,4 @@ -{ +{ config, ... }: { imports = [ ../../modules ]; @@ -25,5 +25,14 @@ greetd = { resolution = "3440x1440@180"; }; + nextcloud = { + synclist = [ + { + name = "document_sync"; + remote = "/Documents"; + local = "/home/${config.conf.username}/Documents"; + } + ]; + }; }; } diff --git a/hardware/overheating/configuration.nix b/hardware/overheating/configuration.nix index f2df9ca..5c4380d 100644 --- a/hardware/overheating/configuration.nix +++ b/hardware/overheating/configuration.nix @@ -1,4 +1,4 @@ -{ +{ config, ... }: { imports = [ ../../modules/conf.nix ]; @@ -30,5 +30,18 @@ greetd = { resolution = "3440x1440@180"; }; - }; -} + nextcloud = { + synclist = [ + { + name = "document_sync"; + remote = "/Documents"; + local = "/home/${config.conf.username}/Documents"; + } + { + name = "picture_sync"; + remote = "/Pictures"; + local = "/home/${config.conf.username}/Pictures"; + } + ]; + }; + } diff --git a/hardware/server/configuration.nix b/hardware/server/configuration.nix new file mode 100644 index 0000000..34c6bbe --- /dev/null +++ b/hardware/server/configuration.nix @@ -0,0 +1,345 @@ +{ config, pkgs, ... }: +let + nextcloud_pw = (builtins.readFile config.sops.secrets.nextcloud_server.path); + forgejo_pw = (builtins.readFile config.sops.secrets.forgejo_server.path); + matrix_pw = (builtins.readFile config.sops.secrets.matrix_server.path); + mautrix_signal_pw = (builtins.readFile config.sops.secrets.mautrix_signal_server.path); + mautrix_whatsapp_pw = (builtins.readFile config.sops.secrets.mautrix_whatsapp_server.path); + mautrix_discord_pw = (builtins.readFile config.sops.secrets.mautrix_discord_server.path); + + fqdn = "matrix.${config.networking.domain}"; + baseUrl = "https://${fqdn}"; + clientConfig."m.homeserver".base_url = baseUrl; + serverConfig."m.server" = "${fqdn}:443"; + mkWellKnown = data: '' + default_type application/json; + add_header Access-Control-Allow-Origin *; + return 200 '${builtins.toJSON data}'; + ''; +in +{ + networking.hostName = "dashie"; + networking.domain = "dashie.org"; + imports = [ + ./hardware-configuration.nix + ./mautrix-whatsapp.nix + ./mautrix-discord.nix + ]; + + sops = { + gnupg = { + home = "~/.gnupg"; + sshKeyPaths = [ ]; + }; + defaultSopsFile = ../../secrets/secrets.yaml; + secrets.nextcloud_server = { }; + secrets.nextcloud_admin = { }; + secrets.forgejo_server = { }; + secrets.matrix_server = { }; + secrets.mautrix_signal_server = { }; + secrets.mautrix_whatsapp_server = { }; + secrets.mautrix_discord_server = { }; + }; + + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.supportedFilesystems = [ "ntfs" ]; + + + # Set your time zone. + time.timeZone = "Europe/Zurich"; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.root.hashedPassword = "!"; + users.users.dashie = { + isNormalUser = true; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + packages = with pkgs; [ + neovim + fuse + ntfs3g + rsync + ]; + openssh.authorizedKeys.keyFiles = [ + /home/dashie/server.pub + ]; + }; + + services.openssh = { + enable = true; + settings.PasswordAuthentication = false; + }; + services.mautrix-whatsapp-dashie.enable = true; + services.mautrix-discord-dashie.enable = true; + services.matrix-synapse.enable = true; + services.mautrix-signal.enable = true; + services.matrix-synapse.settings = { + server_name = "matrix.dashie.org"; + database.name = "psycopg2"; + database.args.user = "matrix-synapse"; + database.args.password = "${matrix_pw}"; + public_baseurl = "https://matrix.dashie.org"; + enable_registration = true; + 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; + } + ]; + } + ]; + }; + 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}"; + }; + }; + bridge = { + encryption = { + allow = true; + default = true; + required = true; + }; + displayname_template = "{{if .BusinessName}}{{.BusinessName}}{{else if .PushName}}{{.PushName}}{{else}}{{.JID}}{{end}}"; + permissions = { + "@fabio.lenherr:matrix.org" = "admin"; + "@dashie:matrix.dashie.org" = "admin"; + }; + }; + }; + services.mautrix-signal.settings = { + appservice = { + id = "signal"; + database = { + type = "postgres"; + uri = "postgresql:///mautrix_signal?host=/run/postgresql&sslmode=disable&user=mautrix_signal&password=${mautrix_signal_pw}"; + }; + }; + bridge = { + encryption = { + allow = true; + default = true; + required = true; + }; + displayname_template = "{{or .ProfileName .PhoneNumber \"Unknown user\"}}"; + permissions = { + "@fabio.lenherr:matrix.org" = "admin"; + "@dashie:matrix.dashie.org" = "admin"; + }; + }; + }; + services.mautrix-discord-dashie.settings = { + appservice = { + id = "discord"; + database = { + type = "postgres"; + 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}}"; + permissions = { + "@fabio.lenherr:matrix.org" = "admin"; + "@dashie:matrix.dashie.org" = "admin"; + }; + }; + }; + services.nginx = { + enable = true; + recommendedGzipSettings = true; + recommendedOptimisation = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + }; + services.nginx.virtualHosts."dashie.org" = { + addSSL = true; + 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" ]; + services.nginx.virtualHosts."cloud.dashie.org" = { + addSSL = true; + enableACME = true; + locations."/*".proxyPass = "http://127.0.0.1:12002"; + }; + services.nginx.virtualHosts."git.dashie.org" = { + forceSSL = true; + enableACME = true; + locations."/".proxyPass = "http://127.0.0.1:3000"; + }; + services.nginx.virtualHosts."navi.dashie.org" = { + addSSL = true; + enableACME = true; + locations."/".proxyPass = "http://127.0.0.1:4533"; + }; + + services.nginx.virtualHosts."localhost" = { + listen = [ + { + addr = "0.0.0.0"; + port = 8448; + } + ]; + locations."/".proxyPass = "http://[::1]:8008"; + }; + + services.nginx.virtualHosts."matrix.dashie.org" = { + #addSSL = true; + forceSSL = true; + enableACME = true; + #locations."*" = { + locations."/".extraConfig = '' + return 404; + ''; + locations."/_matrix" = { + proxyPass = "http://[::1]:8008"; + }; + locations."/_synapse/client".proxyPass = "http://[::1]:8008"; + + 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;" + ; + }; + + services.nextcloud.enable = true; + services.nextcloud.hostName = "cloud.dashie.org"; + services.nextcloud.https = true; + services.nextcloud.config = { + adminpassFile = "${config.sops.nextcloud_admin.path}"; + dbuser = "nextcloud"; + dbhost = "/run/postgresql"; + dbname = "nextcloud"; + dbtype = "pgsql"; + dbpassFile = "${config.sops.secrets.nextcloud_server.path}"; + }; + services.nextcloud.settings = { + port = 12001; + trusted_domains = [ "cloud.dashie.org" "192.168.1.23" ]; + }; + services.forgejo = { + enable = true; + database.passwordFile = ./dbpw/forgejo; + settings = { + server.DOMAIN = "git.dashie.org"; + server.SSH_PORT = 12008; + server.SSH_LISTEN_PORT = 12008; + server.START_SSH_SERVER = true; + service.DISABLE_REGISTRATION = true; + }; + }; + services.navidrome.enable = true; + services.navidrome.settings = { + MusicFolder = "/var/lib/nextcloud/data/DashieTM/files/Share/Music"; + }; + systemd.services."nextcloud-setup" = { + requires = [ "postgresql.service" ]; + after = [ "postgresql.service" ]; + }; + services.postgresql = { + enable = true; + authentication = pkgs.lib.mkOverride 10 '' + #type database DBuser auth-method + local all all trust + host all all 127.0.0.1/32 trust + host all all ::1/128 trust + ''; + initialScript = pkgs.writeText "backend-initScript" '' + CREATE DATABASE nextcloud; + CREATE USER nextcloud WITH ENCRYPTED PASSWORD '${nextcloud_pw}'; + GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud; + + CREATE DATABASE forgejo; + CREATE USER forgejo WITH ENCRYPTED PASSWORD '${forgejo_pw}'; + GRANT ALL PRIVILEGES ON DATABASE forgejo TO forgejo; + + + CREATE USER "matrix-synapse" WITH ENCRYPTED PASSWORD '${matrix_pw}' + SELECT 'CREATE DATABASE "matrix-synapse" LOCALE "C" ENCODING UTF8 TEMPLATE template0 OWNER "matrix-synapse"' + WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'matrix-synapse')\gexec + + CREATE USER mautrix_whatsapp WITH ENCRYPTED PASSWORD '${mautrix_whatsapp_pw}' + SELECT 'CREATE DATABASE "mautrix_whatsapp" LOCALE "C" ENCODING UTF8 TEMPLATE template0 OWNER "mautrix_whatsapp"' + WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mautrix_whatsapp')\gexec + + CREATE USER mautrix_signal WITH ENCRYPTED PASSWORD '${mautrix_signal_pw}' + SELECT 'CREATE DATABASE "mautrix_signal" LOCALE "C" ENCODING UTF8 TEMPLATE template0 OWNER "mautrix_signal"' + WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mautrix_signal')\gexec + + CREATE USER mautrix_discord WITH ENCRYPTED PASSWORD '${mautrix_discord_pw}' + SELECT 'CREATE DATABASE "mautrix_discord" LOCALE "C" ENCODING UTF8 TEMPLATE template0 OWNER "mautrix_discord"' + WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mautrix_discord')\gexec + ''; + }; + security.acme = { + acceptTerms = true; + defaults.email = "fabio.lenherr@gmail.com"; + }; + + networking.firewall = { + enable = true; + allowedTCPPorts = [ 22 80 443 4534 8448 12002 12004 12006 12008 ]; + }; + networking.firewall.allowPing = true; + services.samba = { + enable = true; + securityType = "user"; + openFirewall = true; + extraConfig = '' + workgroup = WORKGROUP + server string = smbnix + netbios name = smbnix + security = user + #use sendfile = yes + max protocol = smb3 + # note: localhost is the ipv6 localhost ::1 + hosts allow = 192.168.1. 127.0.0.1 localhost + hosts deny = 0.0.0.0/0 + guest account = nobody + map to guest = bad user + ''; + shares = { + public = { + path = "/mnt/Shares/Public"; + browseable = "yes"; + "read only" = "no"; + "guest ok" = "yes"; + "create mask" = "0644"; + "directory mask" = "0755"; + }; + }; + }; + services.samba-wsdd = { + enable = true; + openFirewall = true; + }; + services.cron = { + enable = true; + systemCronJobs = [ + "0 4 * * FRI nobody rsync -ato /var/lib/nextcloud/data /mnt/dump3/nextcloud" + "0 4 * * FRI nobody pg_dympall > /mnt/dump3/sqdump.sql" + ]; + }; + + hardware.cpu.intel.updateMicrocode = true; + system.stateVersion = "24.05"; +} + diff --git a/hardware/server/hardware-configuration.nix b/hardware/server/hardware-configuration.nix new file mode 100644 index 0000000..abbea50 --- /dev/null +++ b/hardware/server/hardware-configuration.nix @@ -0,0 +1,62 @@ +{ config, lib, modulesPath, ... }: { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + 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."/var/lib/nextcloud" = + { + device = "/dev/disk/by-label/nextcloud"; + 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/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" ]; + }; + + swapDevices = + [{ device = "/dev/disk/by-uuid/832dce11-b4c4-476c-ab28-bd98275a542c"; }]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hardware/server/mautrix-discord.nix b/hardware/server/mautrix-discord.nix new file mode 100644 index 0000000..99488dc --- /dev/null +++ b/hardware/server/mautrix-discord.nix @@ -0,0 +1,250 @@ +{ 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; + settingsFormat = pkgs.formats.json { }; + appservicePort = 29334; + + # to be used with a list of lib.mkIf values + optOneOf = lib.lists.findFirst (value: value.condition) (lib.mkIf false null); + mkDefaults = lib.mapAttrsRecursive (n: v: lib.mkDefault v); + defaultConfig = { + homeserver.address = "http://localhost:8448"; + appservice = { + hostname = "[::]"; + port = appservicePort; + database.type = "sqlite3"; + database.uri = "file:${dataDir}/mautrix-discord.db?_txlock=immediate"; + id = "discord"; + bot = { + username = "discordbot"; + displayname = "Discord Bridge Bot"; + }; + as_token = ""; + hs_token = ""; + }; + bridge = { + username_template = "discord_{{.}}"; + displayname_template = "{{or .ProfileName .PhoneNumber \"Unknown user\"}}"; + double_puppet_server_map = { }; + login_shared_secret_map = { }; + command_prefix = "!discord"; + permissions."*" = "relay"; + relay.enabled = true; + }; + logging = { + min_level = "info"; + writers = lib.singleton { + type = "stdout"; + format = "pretty-colored"; + time_format = " "; + }; + }; + }; + +in +{ + options.services.mautrix-discord-dashie = { + enable = lib.mkEnableOption "mautrix-discord, a Matrix-Discord puppeting bridge."; + + settings = lib.mkOption { + apply = lib.recursiveUpdate defaultConfig; + type = settingsFormat.type; + default = defaultConfig; + description = '' + {file}`config.yaml` configuration as a Nix attribute set. + Configuration options should match those described in + [example-config.yaml](https://github.com/mautrix/discord/blob/master/example-config.yaml). + Secret tokens should be specified using {option}`environmentFile` + instead of this world-readable attribute set. + ''; + example = { + appservice = { + database = { + type = "postgres"; + uri = "postgresql:///mautrix_discord?host=/run/postgresql"; + }; + id = "discord"; + ephemeral_events = false; + }; + bridge = { + history_sync = { + request_full_sync = true; + }; + private_chat_portal_meta = true; + mute_bridging = true; + encryption = { + allow = true; + default = true; + require = true; + }; + provisioning = { + shared_secret = "disable"; + }; + permissions = { + "example.com" = "user"; + }; + }; + }; + }; + + environmentFile = lib.mkOption { + type = lib.types.nullOr lib.types.path; + default = null; + description = '' + File containing environment variables to be passed to the mautrix-discord service. + If an environment variable `MAUTRIX_DISCORD_BRIDGE_LOGIN_SHARED_SECRET` is set, + then its value will be used in the configuration file for the option + `login_shared_secret_map` without leaking it to the store, using the configured + `homeserver.domain` as key. + See [here](https://github.com/mautrix/discord/blob/main/example-config.yaml) + for the documentation of `login_shared_secret_map`. + ''; + }; + + 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"); + defaultText = lib.literalExpression '' + (optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit) + ++ (optional config.services.matrix-conduit.enable "conduit.service") + ''; + description = '' + List of systemd units to require and wait for when starting the application service. + ''; + }; + + registerToSynapse = lib.mkOption { + type = lib.types.bool; + default = config.services.matrix-synapse.enable; + defaultText = lib.literalExpression '' + config.services.matrix-synapse.enable + ''; + description = '' + Whether to add the bridge's app service registration file to + `services.matrix-synapse.settings.app_service_config_files`. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + + users.users.mautrix-discord = { + isSystemUser = true; + group = "mautrix-discord"; + home = dataDir; + description = "mautrix-discord bridge user"; + }; + + users.groups.mautrix-discord = { }; + + services.matrix-synapse = lib.mkIf cfg.registerToSynapse { + settings.app_service_config_files = [ registrationFile ]; + }; + systemd.services.matrix-synapse = lib.mkIf cfg.registerToSynapse { + serviceConfig.SupplementaryGroups = [ "mautrix-discord" ]; + }; + + # 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}"; + })) + ]); + + systemd.services.mautrix-discord-dashie = { + description = "mautrix-discord, a Matrix-Discord puppeting bridge."; + + wantedBy = [ "multi-user.target" ]; + wants = [ "network-online.target" ] ++ cfg.serviceDependencies; + after = [ "network-online.target" ] ++ cfg.serviceDependencies; + # ffmpeg is required for conversion of voice messages + path = [ pkgs.ffmpeg-headless ]; + + preStart = '' + # substitute the settings file by environment variables + # in this case read from EnvironmentFile + test -f '${settingsFile}' && rm -f '${settingsFile}' + old_umask=$(umask) + umask 0177 + ${pkgs.envsubst}/bin/envsubst \ + -o '${settingsFile}' \ + -i '${settingsFileUnsubstituted}' + umask $old_umask + + # generate the appservice's registration file if absent + if [ ! -f '${registrationFile}' ]; then + ${pkgs.mautrix-discord}/bin/mautrix-discord \ + --generate-registration \ + --config='${settingsFile}' \ + --registration='${registrationFile}' + fi + chmod 640 ${registrationFile} + + umask 0177 + # 1. Overwrite registration tokens in config + # 2. If environment variable MAUTRIX_DISCORD_BRIDGE_LOGIN_SHARED_SECRET + # is set, set it as the login shared secret value for the configured + # homeserver domain. + ${pkgs.yq}/bin/yq -s '.[0].appservice.as_token = .[1].as_token + | .[0].appservice.hs_token = .[1].hs_token + | .[0] + | if env.MAUTRIX_DISCORD_BRIDGE_LOGIN_SHARED_SECRET then .bridge.login_shared_secret_map.[.homeserver.domain] = env.MAUTRIX_DISCORD_BRIDGE_LOGIN_SHARED_SECRET else . end' \ + '${settingsFile}' '${registrationFile}' > '${settingsFile}.tmp' + mv '${settingsFile}.tmp' '${settingsFile}' + umask $old_umask + ''; + + serviceConfig = { + User = "mautrix-discord"; + Group = "mautrix-discord"; + EnvironmentFile = cfg.environmentFile; + StateDirectory = baseNameOf dataDir; + WorkingDirectory = dataDir; + ExecStart = '' + ${pkgs.mautrix-discord}/bin/mautrix-discord \ + --config='${settingsFile}' \ + --registration='${registrationFile}' + ''; + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateDevices = true; + PrivateTmp = true; + PrivateUsers = true; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectSystem = "strict"; + Restart = "on-failure"; + RestartSec = "30s"; + RestrictRealtime = true; + RestrictSUIDSGID = true; + SystemCallArchitectures = "native"; + SystemCallErrorNumber = "EPERM"; + SystemCallFilter = [ "@system-service" ]; + Type = "simple"; + UMask = 0027; + }; + restartTriggers = [ settingsFileUnsubstituted ]; + }; + }; + meta.maintainers = with lib.maintainers; [ niklaskorz ]; +} + diff --git a/hardware/server/mautrix-whatsapp.nix b/hardware/server/mautrix-whatsapp.nix new file mode 100644 index 0000000..5c6832b --- /dev/null +++ b/hardware/server/mautrix-whatsapp.nix @@ -0,0 +1,250 @@ +{ 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; + settingsFormat = pkgs.formats.json { }; + appservicePort = 29318; + + # to be used with a list of lib.mkIf values + optOneOf = lib.lists.findFirst (value: value.condition) (lib.mkIf false null); + mkDefaults = lib.mapAttrsRecursive (n: v: lib.mkDefault v); + defaultConfig = { + homeserver.address = "http://localhost:8448"; + appservice = { + hostname = "[::]"; + port = appservicePort; + database.type = "sqlite3"; + database.uri = "file:${dataDir}/mautrix-whatsapp.db?_txlock=immediate"; + id = "whatsapp"; + bot = { + username = "whatsappbot"; + displayname = "Whatsapp Bridge Bot"; + }; + as_token = ""; + hs_token = ""; + }; + bridge = { + username_template = "whatsapp_{{.}}"; + displayname_template = "{{or .ProfileName .PhoneNumber \"Unknown user\"}}"; + double_puppet_server_map = { }; + login_shared_secret_map = { }; + command_prefix = "!whatsapp"; + permissions."*" = "relay"; + relay.enabled = true; + }; + logging = { + min_level = "info"; + writers = lib.singleton { + type = "stdout"; + format = "pretty-colored"; + time_format = " "; + }; + }; + }; + +in +{ + options.services.mautrix-whatsapp-dashie = { + enable = lib.mkEnableOption "mautrix-whatsapp, a Matrix-Whatsapp puppeting bridge."; + + settings = lib.mkOption { + apply = lib.recursiveUpdate defaultConfig; + type = settingsFormat.type; + default = defaultConfig; + description = '' + {file}`config.yaml` configuration as a Nix attribute set. + Configuration options should match those described in + [example-config.yaml](https://github.com/mautrix/whatsapp/blob/master/example-config.yaml). + Secret tokens should be specified using {option}`environmentFile` + instead of this world-readable attribute set. + ''; + example = { + appservice = { + database = { + type = "postgres"; + uri = "postgresql:///mautrix_whatsapp?host=/run/postgresql"; + }; + id = "whatsapp"; + ephemeral_events = false; + }; + bridge = { + history_sync = { + request_full_sync = true; + }; + private_chat_portal_meta = true; + mute_bridging = true; + encryption = { + allow = true; + default = true; + require = true; + }; + provisioning = { + shared_secret = "disable"; + }; + permissions = { + "example.com" = "user"; + }; + }; + }; + }; + + environmentFile = lib.mkOption { + type = lib.types.nullOr lib.types.path; + default = null; + description = '' + File containing environment variables to be passed to the mautrix-whatsapp service. + If an environment variable `MAUTRIX_WHATSAPP_BRIDGE_LOGIN_SHARED_SECRET` is set, + then its value will be used in the configuration file for the option + `login_shared_secret_map` without leaking it to the store, using the configured + `homeserver.domain` as key. + See [here](https://github.com/mautrix/whatsapp/blob/main/example-config.yaml) + for the documentation of `login_shared_secret_map`. + ''; + }; + + 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"); + defaultText = lib.literalExpression '' + (optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit) + ++ (optional config.services.matrix-conduit.enable "conduit.service") + ''; + description = '' + List of systemd units to require and wait for when starting the application service. + ''; + }; + + registerToSynapse = lib.mkOption { + type = lib.types.bool; + default = config.services.matrix-synapse.enable; + defaultText = lib.literalExpression '' + config.services.matrix-synapse.enable + ''; + description = '' + Whether to add the bridge's app service registration file to + `services.matrix-synapse.settings.app_service_config_files`. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + + users.users.mautrix-whatsapp = { + isSystemUser = true; + group = "mautrix-whatsapp"; + home = dataDir; + description = "mautrix-whatsapp bridge user"; + }; + + users.groups.mautrix-whatsapp = { }; + + services.matrix-synapse = lib.mkIf cfg.registerToSynapse { + settings.app_service_config_files = [ registrationFile ]; + }; + systemd.services.matrix-synapse = lib.mkIf cfg.registerToSynapse { + serviceConfig.SupplementaryGroups = [ "mautrix-whatsapp" ]; + }; + + # 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}"; + })) + ]); + + systemd.services.mautrix-whatsapp-dashie = { + description = "mautrix-whatsapp, a Matrix-Whatsapp puppeting bridge."; + + wantedBy = [ "multi-user.target" ]; + wants = [ "network-online.target" ] ++ cfg.serviceDependencies; + after = [ "network-online.target" ] ++ cfg.serviceDependencies; + # ffmpeg is required for conversion of voice messages + path = [ pkgs.ffmpeg-headless ]; + + preStart = '' + # substitute the settings file by environment variables + # in this case read from EnvironmentFile + test -f '${settingsFile}' && rm -f '${settingsFile}' + old_umask=$(umask) + umask 0177 + ${pkgs.envsubst}/bin/envsubst \ + -o '${settingsFile}' \ + -i '${settingsFileUnsubstituted}' + umask $old_umask + + # generate the appservice's registration file if absent + if [ ! -f '${registrationFile}' ]; then + ${pkgs.mautrix-whatsapp}/bin/mautrix-whatsapp \ + --generate-registration \ + --config='${settingsFile}' \ + --registration='${registrationFile}' + fi + chmod 640 ${registrationFile} + + umask 0177 + # 1. Overwrite registration tokens in config + # 2. If environment variable MAUTRIX_WHATSAPP_BRIDGE_LOGIN_SHARED_SECRET + # is set, set it as the login shared secret value for the configured + # homeserver domain. + ${pkgs.yq}/bin/yq -s '.[0].appservice.as_token = .[1].as_token + | .[0].appservice.hs_token = .[1].hs_token + | .[0] + | if env.MAUTRIX_WHATSAPP_BRIDGE_LOGIN_SHARED_SECRET then .bridge.login_shared_secret_map.[.homeserver.domain] = env.MAUTRIX_WHATSAPP_BRIDGE_LOGIN_SHARED_SECRET else . end' \ + '${settingsFile}' '${registrationFile}' > '${settingsFile}.tmp' + mv '${settingsFile}.tmp' '${settingsFile}' + umask $old_umask + ''; + + serviceConfig = { + User = "mautrix-whatsapp"; + Group = "mautrix-whatsapp"; + EnvironmentFile = cfg.environmentFile; + StateDirectory = baseNameOf dataDir; + WorkingDirectory = dataDir; + ExecStart = '' + ${pkgs.mautrix-whatsapp}/bin/mautrix-whatsapp \ + --config='${settingsFile}' \ + --registration='${registrationFile}' + ''; + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateDevices = true; + PrivateTmp = true; + PrivateUsers = true; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectSystem = "strict"; + Restart = "on-failure"; + RestartSec = "30s"; + RestrictRealtime = true; + RestrictSUIDSGID = true; + SystemCallArchitectures = "native"; + SystemCallErrorNumber = "EPERM"; + SystemCallFilter = [ "@system-service" ]; + Type = "simple"; + UMask = 0027; + }; + restartTriggers = [ settingsFileUnsubstituted ]; + }; + }; + meta.maintainers = with lib.maintainers; [ niklaskorz ]; +} + diff --git a/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix index e236f69..a2629e7 100644 --- a/hardware/spaceship/configuration.nix +++ b/hardware/spaceship/configuration.nix @@ -93,12 +93,12 @@ in synclist = [ { name = "document_sync"; - remote = "Documents"; + remote = "/Documents"; local = "/home/${config.conf.username}/Documents"; } { name = "picture_sync"; - remote = "Pictures"; + remote = "/Pictures"; local = "/home/${config.conf.username}/Pictures"; } { diff --git a/modules/programs/nextcloud.nix b/modules/programs/nextcloud.nix index 7f91dce..7298065 100644 --- a/modules/programs/nextcloud.nix +++ b/modules/programs/nextcloud.nix @@ -1,4 +1,4 @@ -{ lib, config, pkgs, options, ... }: { +{ lib, ... }: { options.mods = { nextcloud = { enable = lib.mkOption { diff --git a/programs/individual_configs/firefox.nix b/programs/individual_configs/firefox.nix index 6457c05..a4789e0 100644 --- a/programs/individual_configs/firefox.nix +++ b/programs/individual_configs/firefox.nix @@ -12,6 +12,25 @@ DisablePocket = true; DisplayBookmarksToolbar = "never"; DisplayMenuBar = "default-off"; + CaptivePortal = false; + DisableFirefoxStudies = true; + DisableTelemetry = true; + DisableFirefoxAccounts = false; + NoDefaultBookmarks = true; + OfferToSaveLogins = false; + OfferToSaveLoginsDefault = false; + PasswordManagerEnabled = false; + FirefoxHome = { + Search = true; + Pocket = false; + Snippets = false; + TopSites = false; + Highlights = false; + }; + UserMessaging = { + ExtensionRecommendations = false; + SkipOnboarding = true; + }; }; profiles.${config.conf.username} = { extensions = with pkgs.nur.repos.rycee.firefox-addons; [ @@ -22,7 +41,6 @@ keepassxc-browser i-dont-care-about-cookies tokyo-night-v2 - ]; }; }; diff --git a/programs/individual_configs/keepass.nix b/programs/individual_configs/keepass.nix index 58ffdb3..276f75f 100644 --- a/programs/individual_configs/keepass.nix +++ b/programs/individual_configs/keepass.nix @@ -6,18 +6,18 @@ ConfigVersion=2 [Browser] - CustomProxyLocation= Enabled=true [GUI] ApplicationTheme=classic HidePasswords=true + MinimizeOnClose=true + MinimizeToTray=true + ShowTrayIcon=true TrayIconAppearance=monochrome-light [PasswordGenerator] - AdditionalChars= - ExcludedChars= - Length=18 + Length=30 [Security] EnableCopyOnDoubleClick=true diff --git a/programs/sync.nix b/programs/sync.nix index 281e4eb..ec7755c 100644 --- a/programs/sync.nix +++ b/programs/sync.nix @@ -1,4 +1,5 @@ -{ config, pkgs, options, lib, ... }: +# derived from NixOS wiki +{ config, pkgs, lib, ... }: let username = config.mods.nextcloud.username; password = config.sops.secrets.nextcloud.path; @@ -19,7 +20,7 @@ lib.mkIf config.mods.nextcloud.enable { }; Service = { Type = "simple"; - ExecStart = "${pkgs.nextcloud-client}/bin/nextcloudcmd -h --path ${opts.remote} ${opts.local} https://${username}:$(bat ${password})@${url}"; + 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"; diff --git a/secrets/secrets.yaml b/secrets/secrets.yaml index 9c2f429..173df49 100644 --- a/secrets/secrets.yaml +++ b/secrets/secrets.yaml @@ -6,14 +6,21 @@ lab_pub: ENC[AES256_GCM,data:rlHCiqGnoaPiQBaZQRT+bEjfNF7jNO4CGPoCOKJ1o7nv7i2jPy6 dashie_pub: ENC[AES256_GCM,data:k6JIJOKDJcGSW47Z8y0EYxNl/vaPRVbIn35CSA57snEzYnk5GpU+1NfPDniWoAGRkpIwicgN6kpzssRlKOmVudvwMejSLv4VkLRBjrsApVFECwoIBLUNGUSDaMcIwC/BYu4jfjGaozBj,iv:0EZ0rptLdmcuTU1BGOILaaDTrc7aZGJCCxgjUESqi0M=,tag:dlQs/ugBGxnSrNj/bRSJSw==,type:str] server_pub: ENC[AES256_GCM,data:87nTYzA8CykOPjfZS2As8+JB/ysJvHXFYbPIBA8Nus8Y3nI3Tl2F/f7mUVFBT+4mmOFTTwxghEnkpgTg/vzUm6W4wb19rIcv11eM7HYaGl5oI44a44rBJn2+PKlfIgXVgaY=,iv:O7I7kkZ44McXzCt3wH1cM3MJCShxu2O+0U0+Y6rwePo=,tag:q5D5AGMmFyiNhQNR8dRB+g==,type:str] nextcloud: ENC[AES256_GCM,data:hjpS1WKsQJ6U2XX3GAbVP93VBAE8hKUdBRD9nI5Yiw==,iv:QaJNScNaxLLArzHLutIWdgN4m+9F0+Ym0FOcL53ygeQ=,tag:PamHgZJ+rsb3Dno2kEZRpQ==,type:str] +nextcloud_server: ENC[AES256_GCM,data:ohp0y08skd/NL7KhPE6pfezghY7UVL+aYT0=,iv:Rc5cnej+721aNrJGkE6/nTtwYC6Jg54da5bKu6mH1zY=,tag:EfiGA1DT87hGtNdMFZVBVA==,type:str] +nextcloud_admin: ENC[AES256_GCM,data:yRpnyoQ+rSiwaQoTp3I=,iv:Ii8ge7nkmtX1bVq4vdwEaLc3QFSrt0fbyHao7IDgtf0=,tag:T5YbThFN6B9fdBU/jhqdmQ==,type:str] +forgejo_server: ENC[AES256_GCM,data:4RLdo5pRQ17QlbpFFciFDrRocPj1J9W0hh4=,iv:AaTjk/ysWGubHSwzigyBWs7CGAOHnrbK7B+gUGFXETw=,tag:5rXwLSSSthq7nVIw5mIhLw==,type:str] +matrix_server: ENC[AES256_GCM,data:fH+5kX6VyNUXzAmNkLEGf8KmhIWuTGsG3r0=,iv:B2ltogyJaT1zcyZfHdrtB4HfnLZuWMbC7LwCT+IIPlU=,tag:jlOjBdypkrdc8MGp1fqSBQ==,type:str] +mautrix_signal_server: ENC[AES256_GCM,data:xBHtTtf725wvSltd7EgP3u/GszsaKR1D/ng=,iv:KZorceuZJulvBYyOSKaFv0UxAgMzIuXnBSDmqeqZT80=,tag:k4Dqvq7n39q6rgfB9hB8/g==,type:str] +mautrix_whatsapp_server: ENC[AES256_GCM,data:Ap5NZ9+kkusMTJlmiH2vxj2fkp1RZPSOM5s=,iv:/F3sP/7bw0uIualG8E+Mtxp60xW8OlHBBZCui887oaA=,tag:CawIZEpmbmxRYhq2fb1vDw==,type:str] +mautrix_discord_server: ENC[AES256_GCM,data:8MU3URa52h0sDabl+6bYZ0z0ib/S8KzYb3k=,iv:uSqT0MsK1qcphyd+5xZZ8aDqxQhZX8mKBP+2tHHG04I=,tag:mdepj3ombSru96es+lFIQQ==,type:str] sops: kms: [] gcp_kms: [] azure_kv: [] hc_vault: [] age: [] - lastmodified: "2024-08-04T00:37:58Z" - mac: ENC[AES256_GCM,data:zpPT060VGVh16KA70at4k2Q57zmT6PpYwHgGLfXLoPTu+aq3UhwQDnV/7gOUEquzopAT/lanbYjZ70uZZkXgU/HkBHNF3MLLULPK4HrOWgcsm277WPrgLqT9yUG2H8yxZGxDmKvFA7wHQ4TWyvqOmfuGv89UPoyV9PBGZ7anO6s=,iv:JtPVYsvg+2qgUlf6IF157lmorK2FrK1A6Fo15rkEnXA=,tag:iLWhUcFqY5Mip++SUZEj3Q==,type:str] + lastmodified: "2024-08-04T11:57:52Z" + mac: ENC[AES256_GCM,data:pd8VsxocTuCAIOAXi94ltCfhqohmAIBbZBK/3WQSd0suyORcvSKrTYdvi/dZ/6x+bXgz0vEzKNanNR98eLU4Ff3ldvsT6RQA1Hjn85V4ouJqWBB//kj42gYSiIjn/1dib0hvyZyvm2mutKbkpxZkJxRZYAw2DR0yR/oPfNK3xG8=,iv:fnRC7vk/KMgRzJgn9ww9A0amQTEsOVhqUa5NLAvX+kA=,tag:bbfpvpbL2L/ctQPdz6nDRg==,type:str] pgp: - created_at: "2024-05-14T14:35:02Z" enc: |- From 75292c920c34b3b19564660833c51379a04a9861 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 4 Aug 2024 14:29:34 +0200 Subject: [PATCH 048/330] Add sops modules to server --- flake.nix | 1 + hardware/server/configuration.nix | 36 +++++++++++++++---------------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/flake.nix b/flake.nix index f392710..19ed068 100644 --- a/flake.nix +++ b/flake.nix @@ -75,6 +75,7 @@ inherit inputs; pkgs = stable; }; modules = [ + inputs.sops-nix.nixosModules.sops ./hardware/server/configuration.nix ]; }; diff --git a/hardware/server/configuration.nix b/hardware/server/configuration.nix index 34c6bbe..22aaf25 100644 --- a/hardware/server/configuration.nix +++ b/hardware/server/configuration.nix @@ -1,11 +1,11 @@ { config, pkgs, ... }: let - nextcloud_pw = (builtins.readFile config.sops.secrets.nextcloud_server.path); - forgejo_pw = (builtins.readFile config.sops.secrets.forgejo_server.path); - matrix_pw = (builtins.readFile config.sops.secrets.matrix_server.path); - mautrix_signal_pw = (builtins.readFile config.sops.secrets.mautrix_signal_server.path); - mautrix_whatsapp_pw = (builtins.readFile config.sops.secrets.mautrix_whatsapp_server.path); - mautrix_discord_pw = (builtins.readFile config.sops.secrets.mautrix_discord_server.path); + nextcloud_pw = (config.sops.secrets.nextcloud_server.path); + forgejo_pw = (config.sops.secrets.forgejo_server.path); + matrix_pw = (config.sops.secrets.matrix_server.path); + mautrix_signal_pw = (config.sops.secrets.mautrix_signal_server.path); + mautrix_whatsapp_pw = (config.sops.secrets.mautrix_whatsapp_server.path); + mautrix_discord_pw = (config.sops.secrets.mautrix_discord_server.path); fqdn = "matrix.${config.networking.domain}"; baseUrl = "https://${fqdn}"; @@ -18,7 +18,7 @@ let ''; in { - networking.hostName = "dashie"; + networking.hostName = "server"; networking.domain = "dashie.org"; imports = [ ./hardware-configuration.nix @@ -78,7 +78,7 @@ in server_name = "matrix.dashie.org"; database.name = "psycopg2"; database.args.user = "matrix-synapse"; - database.args.password = "${matrix_pw}"; + database.args.passfile = "${matrix_pw}"; public_baseurl = "https://matrix.dashie.org"; enable_registration = true; enable_registration_without_verification = true; @@ -105,7 +105,7 @@ in 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&passfile=${mautrix_whatsapp_pw}"; }; }; bridge = { @@ -126,7 +126,7 @@ 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&passfile=${mautrix_signal_pw}"; }; }; bridge = { @@ -147,7 +147,7 @@ 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&passfile=${mautrix_discord_pw}"; }; }; bridge = { @@ -237,7 +237,7 @@ in }; services.forgejo = { enable = true; - database.passwordFile = ./dbpw/forgejo; + database.passwordFile = "${forgejo_pw}"; settings = { server.DOMAIN = "git.dashie.org"; server.SSH_PORT = 12008; @@ -264,27 +264,27 @@ in ''; initialScript = pkgs.writeText "backend-initScript" '' CREATE DATABASE nextcloud; - CREATE USER nextcloud WITH ENCRYPTED PASSWORD '${nextcloud_pw}'; + CREATE USER nextcloud WITH ENCRYPTED PASSWORD pg_read_file(${nextcloud_pw}); GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud; CREATE DATABASE forgejo; - CREATE USER forgejo WITH ENCRYPTED PASSWORD '${forgejo_pw}'; + CREATE USER forgejo WITH ENCRYPTED PASSWORD pg_read_file(${forgejo_pw}); GRANT ALL PRIVILEGES ON DATABASE forgejo TO forgejo; - CREATE USER "matrix-synapse" WITH ENCRYPTED PASSWORD '${matrix_pw}' + CREATE USER "matrix-synapse" WITH ENCRYPTED PASSWORD pg_read_file(${matrix_pw}) SELECT 'CREATE DATABASE "matrix-synapse" LOCALE "C" ENCODING UTF8 TEMPLATE template0 OWNER "matrix-synapse"' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'matrix-synapse')\gexec - CREATE USER mautrix_whatsapp WITH ENCRYPTED PASSWORD '${mautrix_whatsapp_pw}' + CREATE USER mautrix_whatsapp WITH ENCRYPTED PASSWORD pg_read_file(${mautrix_whatsapp_pw}) SELECT 'CREATE DATABASE "mautrix_whatsapp" LOCALE "C" ENCODING UTF8 TEMPLATE template0 OWNER "mautrix_whatsapp"' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mautrix_whatsapp')\gexec - CREATE USER mautrix_signal WITH ENCRYPTED PASSWORD '${mautrix_signal_pw}' + CREATE USER mautrix_signal WITH ENCRYPTED PASSWORD 'pg_read_file(${mautrix_signal_pw}) SELECT 'CREATE DATABASE "mautrix_signal" LOCALE "C" ENCODING UTF8 TEMPLATE template0 OWNER "mautrix_signal"' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mautrix_signal')\gexec - CREATE USER mautrix_discord WITH ENCRYPTED PASSWORD '${mautrix_discord_pw}' + CREATE USER mautrix_discord WITH ENCRYPTED PASSWORD 'pg_read_file(${mautrix_discord_pw}) SELECT 'CREATE DATABASE "mautrix_discord" LOCALE "C" ENCODING UTF8 TEMPLATE template0 OWNER "mautrix_discord"' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mautrix_discord')\gexec ''; From 14b1bb6b0d49159e77ea3de5cb0e8af6709e8ad1 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 4 Aug 2024 15:12:59 +0200 Subject: [PATCH 049/330] Fix server config --- flake.nix | 2 +- hardware/server/configuration.nix | 59 +++++++++++-------------------- 2 files changed, 21 insertions(+), 40 deletions(-) diff --git a/flake.nix b/flake.nix index 19ed068..e64588e 100644 --- a/flake.nix +++ b/flake.nix @@ -70,7 +70,7 @@ in { nixosConfigurations = (dashielib.build_systems [ "marmo" "overheating" "spaceship" ]) // { - server = { + server = inputs.stable.lib.nixosSystem { specialArgs = { inherit inputs; pkgs = stable; }; diff --git a/hardware/server/configuration.nix b/hardware/server/configuration.nix index 22aaf25..8933764 100644 --- a/hardware/server/configuration.nix +++ b/hardware/server/configuration.nix @@ -1,11 +1,11 @@ { config, pkgs, ... }: let - nextcloud_pw = (config.sops.secrets.nextcloud_server.path); - forgejo_pw = (config.sops.secrets.forgejo_server.path); - matrix_pw = (config.sops.secrets.matrix_server.path); - mautrix_signal_pw = (config.sops.secrets.mautrix_signal_server.path); - mautrix_whatsapp_pw = (config.sops.secrets.mautrix_whatsapp_server.path); - mautrix_discord_pw = (config.sops.secrets.mautrix_discord_server.path); + nextcloud_pw = (builtins.readFile ./nextcloud); + forgejo_pw = (builtins.readFile ./dbpw/forgejo); + matrix_pw = (builtins.readFile ./dbpw/matrix-synapse); + mautrix_signal_pw = (builtins.readFile ./dbpw/mautrix_signal); + mautrix_whatsapp_pw = (builtins.readFile ./dbpw/mautrix_whatsapp); + mautrix_discord_pw = (builtins.readFile ./dbpw/mautrix_discord); fqdn = "matrix.${config.networking.domain}"; baseUrl = "https://${fqdn}"; @@ -18,7 +18,7 @@ let ''; in { - networking.hostName = "server"; + networking.hostName = "dashie"; networking.domain = "dashie.org"; imports = [ ./hardware-configuration.nix @@ -26,27 +26,11 @@ in ./mautrix-discord.nix ]; - sops = { - gnupg = { - home = "~/.gnupg"; - sshKeyPaths = [ ]; - }; - defaultSopsFile = ../../secrets/secrets.yaml; - secrets.nextcloud_server = { }; - secrets.nextcloud_admin = { }; - secrets.forgejo_server = { }; - secrets.matrix_server = { }; - secrets.mautrix_signal_server = { }; - secrets.mautrix_whatsapp_server = { }; - secrets.mautrix_discord_server = { }; - }; - # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; boot.supportedFilesystems = [ "ntfs" ]; - # Set your time zone. time.timeZone = "Europe/Zurich"; @@ -78,7 +62,7 @@ in server_name = "matrix.dashie.org"; database.name = "psycopg2"; database.args.user = "matrix-synapse"; - database.args.passfile = "${matrix_pw}"; + database.args.password = "${matrix_pw}"; public_baseurl = "https://matrix.dashie.org"; enable_registration = true; enable_registration_without_verification = true; @@ -105,7 +89,7 @@ in id = "whatsapp"; database = { type = "postgres"; - uri = "postgresql:///mautrix_whatsapp?host=/run/postgresql&sslmode=disable&user=mautrix_whatsapp&passfile=${mautrix_whatsapp_pw}"; + uri = "postgresql:///mautrix_whatsapp?host=/run/postgresql&sslmode=disable&user=mautrix_whatsapp&password=${mautrix_whatsapp_pw}"; }; }; bridge = { @@ -126,7 +110,7 @@ in id = "signal"; database = { type = "postgres"; - uri = "postgresql:///mautrix_signal?host=/run/postgresql&sslmode=disable&user=mautrix_signal&passfile=${mautrix_signal_pw}"; + uri = "postgresql:///mautrix_signal?host=/run/postgresql&sslmode=disable&user=mautrix_signal&password=${mautrix_signal_pw}"; }; }; bridge = { @@ -147,7 +131,7 @@ in id = "discord"; database = { type = "postgres"; - uri = "postgresql:///mautrix_discord?host=/run/postgresql&sslmode=disable&user=mautrix_discord&passfile=${mautrix_discord_pw}"; + uri = "postgresql:///mautrix_discord?host=/run/postgresql&sslmode=disable&user=mautrix_discord&password=${mautrix_discord_pw}"; }; }; bridge = { @@ -198,10 +182,8 @@ in }; services.nginx.virtualHosts."matrix.dashie.org" = { - #addSSL = true; forceSSL = true; enableACME = true; - #locations."*" = { locations."/".extraConfig = '' return 404; ''; @@ -224,12 +206,12 @@ in services.nextcloud.hostName = "cloud.dashie.org"; services.nextcloud.https = true; services.nextcloud.config = { - adminpassFile = "${config.sops.nextcloud_admin.path}"; + adminpassFile = "/etc/nixos/file2"; dbuser = "nextcloud"; dbhost = "/run/postgresql"; dbname = "nextcloud"; dbtype = "pgsql"; - dbpassFile = "${config.sops.secrets.nextcloud_server.path}"; + dbpassFile = "/etc/nixos/nextcloud"; }; services.nextcloud.settings = { port = 12001; @@ -237,7 +219,7 @@ in }; services.forgejo = { enable = true; - database.passwordFile = "${forgejo_pw}"; + database.passwordFile = ./dbpw/forgejo; settings = { server.DOMAIN = "git.dashie.org"; server.SSH_PORT = 12008; @@ -264,27 +246,27 @@ in ''; initialScript = pkgs.writeText "backend-initScript" '' CREATE DATABASE nextcloud; - CREATE USER nextcloud WITH ENCRYPTED PASSWORD pg_read_file(${nextcloud_pw}); + CREATE USER nextcloud WITH ENCRYPTED PASSWORD '${nextcloud_pw}'; GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud; CREATE DATABASE forgejo; - CREATE USER forgejo WITH ENCRYPTED PASSWORD pg_read_file(${forgejo_pw}); + CREATE USER forgejo WITH ENCRYPTED PASSWORD '${forgejo_pw}'; GRANT ALL PRIVILEGES ON DATABASE forgejo TO forgejo; - CREATE USER "matrix-synapse" WITH ENCRYPTED PASSWORD pg_read_file(${matrix_pw}) + CREATE USER "matrix-synapse" WITH ENCRYPTED PASSWORD '${matrix_pw}' SELECT 'CREATE DATABASE "matrix-synapse" LOCALE "C" ENCODING UTF8 TEMPLATE template0 OWNER "matrix-synapse"' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'matrix-synapse')\gexec - CREATE USER mautrix_whatsapp WITH ENCRYPTED PASSWORD pg_read_file(${mautrix_whatsapp_pw}) + CREATE USER mautrix_whatsapp WITH ENCRYPTED PASSWORD '${mautrix_whatsapp_pw}' SELECT 'CREATE DATABASE "mautrix_whatsapp" LOCALE "C" ENCODING UTF8 TEMPLATE template0 OWNER "mautrix_whatsapp"' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mautrix_whatsapp')\gexec - CREATE USER mautrix_signal WITH ENCRYPTED PASSWORD 'pg_read_file(${mautrix_signal_pw}) + CREATE USER mautrix_signal WITH ENCRYPTED PASSWORD '${mautrix_signal_pw}' SELECT 'CREATE DATABASE "mautrix_signal" LOCALE "C" ENCODING UTF8 TEMPLATE template0 OWNER "mautrix_signal"' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mautrix_signal')\gexec - CREATE USER mautrix_discord WITH ENCRYPTED PASSWORD 'pg_read_file(${mautrix_discord_pw}) + CREATE USER mautrix_discord WITH ENCRYPTED PASSWORD '${mautrix_discord_pw}' SELECT 'CREATE DATABASE "mautrix_discord" LOCALE "C" ENCODING UTF8 TEMPLATE template0 OWNER "mautrix_discord"' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mautrix_discord')\gexec ''; @@ -342,4 +324,3 @@ in hardware.cpu.intel.updateMicrocode = true; system.stateVersion = "24.05"; } - From 47d5758ccab4f3bb4207d860da82a6aa40885986 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 4 Aug 2024 15:14:46 +0200 Subject: [PATCH 050/330] Add mautrix-signal notice --- hardware/server/mautrix-discord.nix | 1 + hardware/server/mautrix-whatsapp.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/hardware/server/mautrix-discord.nix b/hardware/server/mautrix-discord.nix index 99488dc..f7c4251 100644 --- a/hardware/server/mautrix-discord.nix +++ b/hardware/server/mautrix-discord.nix @@ -1,3 +1,4 @@ +# 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 diff --git a/hardware/server/mautrix-whatsapp.nix b/hardware/server/mautrix-whatsapp.nix index 5c6832b..36bae01 100644 --- a/hardware/server/mautrix-whatsapp.nix +++ b/hardware/server/mautrix-whatsapp.nix @@ -1,3 +1,4 @@ +# 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 From a5de016eedd1425f6e592bc4595dd82a0494b206 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 4 Aug 2024 15:50:45 +0200 Subject: [PATCH 051/330] Fix server config path --- base/common_hardware.nix | 20 +++++++++++- flake.lock | 49 ++++++++++++++++++++---------- hardware/server/configuration.nix | 14 ++++----- lib/default.nix | 41 +++++++++++++------------ modules/programs/base_packages.nix | 2 -- programs/common.nix | 1 + secrets/secrets.yaml | 5 +-- 7 files changed, 85 insertions(+), 47 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index e8b4f88..16bcf46 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -27,7 +27,16 @@ in services.xserver.enable = true; nixpkgs.hostPlatform = lib.mkDefault config.conf.system; - nix.settings.auto-optimise-store = true; + nix = { + settings = { + auto-optimise-store = true; + + experimental-features = "nix-command flakes"; + }; + extraOptions = '' + !include ${config.sops.secrets.access.path} + ''; + }; # Enable sound with pipewire. hardware.pulseaudio.enable = false; @@ -103,4 +112,13 @@ in swapDevices = [{ device = "/dev/disk/by-label/SWAP"; }]; + + sops = { + gnupg = { + home = "/home/${config.conf.username}/.gnupg"; + sshKeyPaths = [ ]; + }; + defaultSopsFile = ../secrets/secrets.yaml; + secrets.access = { }; + }; } diff --git a/flake.lock b/flake.lock index 748aea8..33a806d 100644 --- a/flake.lock +++ b/flake.lock @@ -218,11 +218,11 @@ "nixvim": "nixvim" }, "locked": { - "lastModified": 1722560743, - "narHash": "sha256-e2FhudX6P+kwtYALgpmJG7l03ayhkGY9+j9Hrcyl7gQ=", + "lastModified": 1722777725, + "narHash": "sha256-QQ1yP9rag8vslOJRXR8kL+KkrL/iAC6/vSfvorHicNQ=", "owner": "DashieTM", "repo": "DashVim", - "rev": "5a2c4fa3a7cd0718dc8c08d1c41cc6a44de9869f", + "rev": "0169fb3fd02229ab19e23951d9caecf92ea4f265", "type": "github" }, "original": { @@ -884,11 +884,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1722707408, - "narHash": "sha256-hyTuWhcid8UklJBC4Yh3dpf7Xhx4oJDyM/3n10E1wSk=", + "lastModified": 1722773977, + "narHash": "sha256-AqSmHptledo4Tp+hrHWovGR+e//bejR458sRmhq+jT4=", "ref": "refs/heads/main", - "rev": "51ffd7fa6f186419276e5d3d5fe141a3fdb3c55c", - "revCount": 5048, + "rev": "5dd2c27b631f16e49a2c6e6cbbefba9fa50bf543", + "revCount": 5050, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -1013,11 +1013,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1722698043, - "narHash": "sha256-Hsgi1DJP+oodbsULTrqpO6KPSJYeyswluNLVGxUtwJE=", + "lastModified": 1722775753, + "narHash": "sha256-YFarQSZEIFpA1/9eRK4tm88mZYvWGIaAgCEAjazBO38=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "6e43c7ae0cce4b8c6dfe2f74756574195b944abe", + "rev": "92c690dcd14c21272f89bfde292546a2ee828e23", "type": "github" }, "original": { @@ -1413,11 +1413,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1722421184, - "narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=", + "lastModified": 1722630782, + "narHash": "sha256-hMyG9/WlUi0Ho9VkRrrez7SeNlDzLxalm9FwY7n/Noo=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58", + "rev": "d04953086551086b44b6f3c6b7eeb26294f207da", "type": "github" }, "original": { @@ -1487,11 +1487,11 @@ }, "nur": { "locked": { - "lastModified": 1722709906, - "narHash": "sha256-I27FkJ3qSsxc5aZSwpYHMqJwLpvQt6eV4MrwGfVjCvM=", + "lastModified": 1722770616, + "narHash": "sha256-A40yRytGkUb40yQYjspVU3Z/QBONgFYZqQiz00V1IJ4=", "owner": "nix-community", "repo": "nur", - "rev": "ac1226f223779364c73f1a450654383768dab1b7", + "rev": "5605ce776b3d21c0ee477fcd028a817bd3524e6f", "type": "github" }, "original": { @@ -1682,6 +1682,7 @@ "reset": "reset", "reset-plugins": "reset-plugins", "sops-nix": "sops-nix", + "stable": "stable", "stylix": "stylix" } }, @@ -1840,6 +1841,22 @@ "type": "github" } }, + "stable": { + "locked": { + "lastModified": 1722651103, + "narHash": "sha256-IRiJA0NVAoyaZeKZluwfb2DoTpBAj+FLI0KfybBeDU0=", + "owner": "NixOs", + "repo": "nixpkgs", + "rev": "a633d89c6dc9a2a8aae11813a62d7c58b2c0cc51", + "type": "github" + }, + "original": { + "owner": "NixOs", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, "stylix": { "inputs": { "base16": "base16_2", diff --git a/hardware/server/configuration.nix b/hardware/server/configuration.nix index 8933764..9faf1f0 100644 --- a/hardware/server/configuration.nix +++ b/hardware/server/configuration.nix @@ -1,11 +1,11 @@ { config, pkgs, ... }: let - nextcloud_pw = (builtins.readFile ./nextcloud); - forgejo_pw = (builtins.readFile ./dbpw/forgejo); - matrix_pw = (builtins.readFile ./dbpw/matrix-synapse); - mautrix_signal_pw = (builtins.readFile ./dbpw/mautrix_signal); - mautrix_whatsapp_pw = (builtins.readFile ./dbpw/mautrix_whatsapp); - mautrix_discord_pw = (builtins.readFile ./dbpw/mautrix_discord); + nextcloud_pw = (builtins.readFile /etc/nixos/nextcloud); + forgejo_pw = (builtins.readFile /etc/nixos/dbpw/forgejo); + matrix_pw = (builtins.readFile /etc/nixos/dbpw/matrix-synapse); + mautrix_signal_pw = (builtins.readFile /etc/nixos/dbpw/mautrix_signal); + mautrix_whatsapp_pw = (builtins.readFile /etc/nixos/dbpw/mautrix_whatsapp); + mautrix_discord_pw = (builtins.readFile /etc/nixos/dbpw/mautrix_discord); fqdn = "matrix.${config.networking.domain}"; baseUrl = "https://${fqdn}"; @@ -219,7 +219,7 @@ in }; services.forgejo = { enable = true; - database.passwordFile = ./dbpw/forgejo; + database.passwordFile = /etc/nixos/dbpw/forgejo; settings = { server.DOMAIN = "git.dashie.org"; server.SSH_PORT = 12008; diff --git a/lib/default.nix b/lib/default.nix index 91b3acc..2d820aa 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,22 +1,25 @@ { inputs, pkgs, ... }: { - 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; + 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.sops-nix.nixosModules.sops + 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; }; - 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/programs/base_packages.nix b/modules/programs/base_packages.nix index 8186448..c518ace 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -64,8 +64,6 @@ cantarell-fonts ]; - nix.settings.experimental-features = "nix-command flakes"; - virtualisation.docker.enable = true; services.upower.enable = true; diff --git a/programs/common.nix b/programs/common.nix index b6d93b9..a2b4876 100644 --- a/programs/common.nix +++ b/programs/common.nix @@ -48,5 +48,6 @@ in secrets.${username} = { }; secrets.nextcloud = { }; }; + systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ]; } diff --git a/secrets/secrets.yaml b/secrets/secrets.yaml index 173df49..7163087 100644 --- a/secrets/secrets.yaml +++ b/secrets/secrets.yaml @@ -13,14 +13,15 @@ matrix_server: ENC[AES256_GCM,data:fH+5kX6VyNUXzAmNkLEGf8KmhIWuTGsG3r0=,iv:B2lto mautrix_signal_server: ENC[AES256_GCM,data:xBHtTtf725wvSltd7EgP3u/GszsaKR1D/ng=,iv:KZorceuZJulvBYyOSKaFv0UxAgMzIuXnBSDmqeqZT80=,tag:k4Dqvq7n39q6rgfB9hB8/g==,type:str] mautrix_whatsapp_server: ENC[AES256_GCM,data:Ap5NZ9+kkusMTJlmiH2vxj2fkp1RZPSOM5s=,iv:/F3sP/7bw0uIualG8E+Mtxp60xW8OlHBBZCui887oaA=,tag:CawIZEpmbmxRYhq2fb1vDw==,type:str] mautrix_discord_server: ENC[AES256_GCM,data:8MU3URa52h0sDabl+6bYZ0z0ib/S8KzYb3k=,iv:uSqT0MsK1qcphyd+5xZZ8aDqxQhZX8mKBP+2tHHG04I=,tag:mdepj3ombSru96es+lFIQQ==,type:str] +access: ENC[AES256_GCM,data:J7lIopyeMZIIoRLMahTXNMOu8dQ+ZO0/AkcJcXdLpUnGugJmFoqHuUE=,iv:J93hLNq+mZe6cqEk32c3gxkTN5hIeZ0kkUxSmoiexeI=,tag:k3qzx0gPafHd4/3BWi8X6w==,type:str] sops: kms: [] gcp_kms: [] azure_kv: [] hc_vault: [] age: [] - lastmodified: "2024-08-04T11:57:52Z" - mac: ENC[AES256_GCM,data:pd8VsxocTuCAIOAXi94ltCfhqohmAIBbZBK/3WQSd0suyORcvSKrTYdvi/dZ/6x+bXgz0vEzKNanNR98eLU4Ff3ldvsT6RQA1Hjn85V4ouJqWBB//kj42gYSiIjn/1dib0hvyZyvm2mutKbkpxZkJxRZYAw2DR0yR/oPfNK3xG8=,iv:fnRC7vk/KMgRzJgn9ww9A0amQTEsOVhqUa5NLAvX+kA=,tag:bbfpvpbL2L/ctQPdz6nDRg==,type:str] + lastmodified: "2024-08-04T13:37:08Z" + mac: ENC[AES256_GCM,data:zP8fPzpMKzgEPTR2qRisPaZzYyBnYEw7zU22xwP0ZHdfhq/fwUNuduUe/sg7aoobKTMPLBKJ7ukoiHkBpglnPzPajbH0cikevFcqSP1/NuDGl/cyytVUlOuePI/8Lct2WgCDzYVW71RuObUk7yHzvnMoqvem7UYpjdE5niryiwg=,iv:lNkveEy08C2/qd4CI/jy47JJCGFlYxU1saBLrH6LnaU=,tag:SnUHbRNnl0FIDK2b5wolsw==,type:str] pgp: - created_at: "2024-05-14T14:35:02Z" enc: |- From eeeb2bd9ed060a87c40910bb9f27ab153a567be5 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 4 Aug 2024 16:32:01 +0200 Subject: [PATCH 052/330] Configure DashVim for server --- base/common_hardware.nix | 12 ------------ flake.nix | 3 ++- hardware/server/configuration.nix | 12 ++++++------ lib/default.nix | 1 - programs/common.nix | 6 ++++++ secrets/secrets.yaml | 6 +++--- 6 files changed, 17 insertions(+), 23 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 16bcf46..7eb5054 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -33,9 +33,6 @@ in experimental-features = "nix-command flakes"; }; - extraOptions = '' - !include ${config.sops.secrets.access.path} - ''; }; # Enable sound with pipewire. @@ -112,13 +109,4 @@ in swapDevices = [{ device = "/dev/disk/by-label/SWAP"; }]; - - sops = { - gnupg = { - home = "/home/${config.conf.username}/.gnupg"; - sshKeyPaths = [ ]; - }; - defaultSopsFile = ../secrets/secrets.yaml; - secrets.access = { }; - }; } diff --git a/flake.nix b/flake.nix index e64588e..d6978b9 100644 --- a/flake.nix +++ b/flake.nix @@ -72,10 +72,11 @@ nixosConfigurations = (dashielib.build_systems [ "marmo" "overheating" "spaceship" ]) // { server = inputs.stable.lib.nixosSystem { specialArgs = { - inherit inputs; pkgs = stable; + inherit inputs; pkgs' = stable; }; modules = [ inputs.sops-nix.nixosModules.sops + (inputs.dashvim.nixosModules.dashvim { inherit pkgs; }) ./hardware/server/configuration.nix ]; }; diff --git a/hardware/server/configuration.nix b/hardware/server/configuration.nix index 9faf1f0..bb51cdf 100644 --- a/hardware/server/configuration.nix +++ b/hardware/server/configuration.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, pkgs, unstable, ... }: let nextcloud_pw = (builtins.readFile /etc/nixos/nextcloud); forgejo_pw = (builtins.readFile /etc/nixos/dbpw/forgejo); @@ -39,11 +39,11 @@ in users.users.dashie = { isNormalUser = true; extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. - packages = with pkgs; [ - neovim - fuse - ntfs3g - rsync + packages = [ + unstable.neovim + pkgs.fuse + pkgs.ntfs3g + pkgs.rsync ]; openssh.authorizedKeys.keyFiles = [ /home/dashie/server.pub diff --git a/lib/default.nix b/lib/default.nix index 2d820aa..5910d4c 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -11,7 +11,6 @@ inherit inputs pkgs mod; }; modules = [ - inputs.sops-nix.nixosModules.sops inputs.home-manager.nixosModules.home-manager inputs.stylix.nixosModules.stylix ../base diff --git a/programs/common.nix b/programs/common.nix index a2b4876..ccd5746 100644 --- a/programs/common.nix +++ b/programs/common.nix @@ -36,6 +36,11 @@ in enable = true; enableFishIntegration = true; }; + nix = { + extraOptions = '' + !include ${config.sops.secrets.access.path} + ''; + }; sops = { gnupg = { @@ -47,6 +52,7 @@ in secrets.lab = { }; secrets.${username} = { }; secrets.nextcloud = { }; + secrets.access = { }; }; systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ]; diff --git a/secrets/secrets.yaml b/secrets/secrets.yaml index 7163087..b86312f 100644 --- a/secrets/secrets.yaml +++ b/secrets/secrets.yaml @@ -13,15 +13,15 @@ matrix_server: ENC[AES256_GCM,data:fH+5kX6VyNUXzAmNkLEGf8KmhIWuTGsG3r0=,iv:B2lto mautrix_signal_server: ENC[AES256_GCM,data:xBHtTtf725wvSltd7EgP3u/GszsaKR1D/ng=,iv:KZorceuZJulvBYyOSKaFv0UxAgMzIuXnBSDmqeqZT80=,tag:k4Dqvq7n39q6rgfB9hB8/g==,type:str] mautrix_whatsapp_server: ENC[AES256_GCM,data:Ap5NZ9+kkusMTJlmiH2vxj2fkp1RZPSOM5s=,iv:/F3sP/7bw0uIualG8E+Mtxp60xW8OlHBBZCui887oaA=,tag:CawIZEpmbmxRYhq2fb1vDw==,type:str] mautrix_discord_server: ENC[AES256_GCM,data:8MU3URa52h0sDabl+6bYZ0z0ib/S8KzYb3k=,iv:uSqT0MsK1qcphyd+5xZZ8aDqxQhZX8mKBP+2tHHG04I=,tag:mdepj3ombSru96es+lFIQQ==,type:str] -access: ENC[AES256_GCM,data:J7lIopyeMZIIoRLMahTXNMOu8dQ+ZO0/AkcJcXdLpUnGugJmFoqHuUE=,iv:J93hLNq+mZe6cqEk32c3gxkTN5hIeZ0kkUxSmoiexeI=,tag:k3qzx0gPafHd4/3BWi8X6w==,type:str] +access: ENC[AES256_GCM,data:BHB8v/uVqj5Hn2J6OUHloxdbrc9EVq6mCz9n4rFKUPK5H6ajP9L+zWtxkPLgr6sljEL3fPdlYQUlRaSJTAeygQnuXzM=,iv:mFv4AGSG0ok658VK5HcRBcQpLLK7NM9QJj4FMCJMj4Q=,tag:G4SIkT4TfoR/lW+kZmygiA==,type:str] sops: kms: [] gcp_kms: [] azure_kv: [] hc_vault: [] age: [] - lastmodified: "2024-08-04T13:37:08Z" - mac: ENC[AES256_GCM,data:zP8fPzpMKzgEPTR2qRisPaZzYyBnYEw7zU22xwP0ZHdfhq/fwUNuduUe/sg7aoobKTMPLBKJ7ukoiHkBpglnPzPajbH0cikevFcqSP1/NuDGl/cyytVUlOuePI/8Lct2WgCDzYVW71RuObUk7yHzvnMoqvem7UYpjdE5niryiwg=,iv:lNkveEy08C2/qd4CI/jy47JJCGFlYxU1saBLrH6LnaU=,tag:SnUHbRNnl0FIDK2b5wolsw==,type:str] + lastmodified: "2024-08-04T14:17:56Z" + mac: ENC[AES256_GCM,data:cDusfY0990Q60IrprG8SEYwpGkrvfxIBt6qS/e5ikKqCTYpp9ei1BiecLPQ6U+6rgoRLWACGsq3idJI7cApVxqAfQcZXFjaxO5TxGKP8VyO//nhoPouT1iRfue1oref8D4P7cE/T2GzNFbDP0aUHXP0bBGo76TGLTzhkJ3Gzm7g=,iv:Va+WbAY4amrOUp+6pFtt8vf4jXxRF19oI3pD6I3dEuw=,tag:EfDeBf3S0ReetiWywLUiAQ==,type:str] pgp: - created_at: "2024-05-14T14:35:02Z" enc: |- From 3081546a585b6cce3e3f640cfb6513b23119d05f Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 4 Aug 2024 16:33:48 +0200 Subject: [PATCH 053/330] Configure access token for server --- hardware/server/configuration.nix | 15 +++++++++++++++ programs/common.nix | 1 + 2 files changed, 16 insertions(+) diff --git a/hardware/server/configuration.nix b/hardware/server/configuration.nix index bb51cdf..80ea660 100644 --- a/hardware/server/configuration.nix +++ b/hardware/server/configuration.nix @@ -323,4 +323,19 @@ in hardware.cpu.intel.updateMicrocode = true; system.stateVersion = "24.05"; + + nix = { + extraOptions = '' + !include ${config.sops.secrets.access.path} + ''; + }; + + sops = { + gnupg = { + home = "~/.gnupg"; + sshKeyPaths = [ ]; + }; + defaultSopsFile = ../secrets/secrets.yaml; + secrets.access = { }; + }; } diff --git a/programs/common.nix b/programs/common.nix index ccd5746..1cd99fb 100644 --- a/programs/common.nix +++ b/programs/common.nix @@ -36,6 +36,7 @@ in enable = true; enableFishIntegration = true; }; + nix = { extraOptions = '' !include ${config.sops.secrets.access.path} From 78023a648ca07cbaff66873f7cbd3c56394e88bc Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 4 Aug 2024 16:34:40 +0200 Subject: [PATCH 054/330] Configure flake/command for server --- hardware/server/configuration.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hardware/server/configuration.nix b/hardware/server/configuration.nix index 80ea660..1b538ba 100644 --- a/hardware/server/configuration.nix +++ b/hardware/server/configuration.nix @@ -325,6 +325,9 @@ in system.stateVersion = "24.05"; nix = { + settings = { + experimental-features = "nix-command flakes"; + }; extraOptions = '' !include ${config.sops.secrets.access.path} ''; From 0f02a1944bff26b355ffd344915df584fb55e1ca Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 4 Aug 2024 17:17:12 +0200 Subject: [PATCH 055/330] Fix DashVim on server --- flake.nix | 2 +- hardware/server/configuration.nix | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/flake.nix b/flake.nix index d6978b9..2d22040 100644 --- a/flake.nix +++ b/flake.nix @@ -76,7 +76,7 @@ }; modules = [ inputs.sops-nix.nixosModules.sops - (inputs.dashvim.nixosModules.dashvim { inherit pkgs; }) + inputs.dashvim.nixosModules.dashvim ./hardware/server/configuration.nix ]; }; diff --git a/hardware/server/configuration.nix b/hardware/server/configuration.nix index 1b538ba..868f869 100644 --- a/hardware/server/configuration.nix +++ b/hardware/server/configuration.nix @@ -1,4 +1,4 @@ -{ config, pkgs, unstable, ... }: +{ config, pkgs, unstable, inputs, ... }: let nextcloud_pw = (builtins.readFile /etc/nixos/nextcloud); forgejo_pw = (builtins.readFile /etc/nixos/dbpw/forgejo); @@ -18,7 +18,7 @@ let ''; in { - networking.hostName = "dashie"; + networking.hostName = "server"; networking.domain = "dashie.org"; imports = [ ./hardware-configuration.nix @@ -40,6 +40,7 @@ in isNormalUser = true; extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. packages = [ + inputs.dashvim.nixosModules.packages."x86_64-linux".default unstable.neovim pkgs.fuse pkgs.ntfs3g @@ -338,7 +339,7 @@ in home = "~/.gnupg"; sshKeyPaths = [ ]; }; - defaultSopsFile = ../secrets/secrets.yaml; + defaultSopsFile = ../../secrets/secrets.yaml; secrets.access = { }; }; } From ee9b48c5b11e8e8ecd031dd2553f4a3a56ae4f3b Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 4 Aug 2024 17:21:20 +0200 Subject: [PATCH 056/330] Remove unnecessary neovim installation from server --- flake.nix | 2 +- hardware/server/configuration.nix | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index 2d22040..a28bd49 100644 --- a/flake.nix +++ b/flake.nix @@ -72,7 +72,7 @@ nixosConfigurations = (dashielib.build_systems [ "marmo" "overheating" "spaceship" ]) // { server = inputs.stable.lib.nixosSystem { specialArgs = { - inherit inputs; pkgs' = stable; + inherit inputs; pkgs = stable; }; modules = [ inputs.sops-nix.nixosModules.sops diff --git a/hardware/server/configuration.nix b/hardware/server/configuration.nix index 868f869..d57d564 100644 --- a/hardware/server/configuration.nix +++ b/hardware/server/configuration.nix @@ -1,4 +1,4 @@ -{ config, pkgs, unstable, inputs, ... }: +{ config, pkgs, inputs, ... }: let nextcloud_pw = (builtins.readFile /etc/nixos/nextcloud); forgejo_pw = (builtins.readFile /etc/nixos/dbpw/forgejo); @@ -41,7 +41,6 @@ in extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. packages = [ inputs.dashvim.nixosModules.packages."x86_64-linux".default - unstable.neovim pkgs.fuse pkgs.ntfs3g pkgs.rsync From 35cfaf6bac7b5a4b71c537b7789333f4611d9dac Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 4 Aug 2024 20:03:02 +0200 Subject: [PATCH 057/330] Update firefox config --- hardware/spaceship/configuration.nix | 5 +++++ programs/individual_configs/firefox.nix | 2 +- programs/individual_configs/keepass.nix | 10 ++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix index a2629e7..bc9f48c 100644 --- a/hardware/spaceship/configuration.nix +++ b/hardware/spaceship/configuration.nix @@ -106,6 +106,11 @@ in remote = "Phone/Stuff"; local = "/home/${config.conf.username}/Videos/Phone/Stuff"; } + { + name = "pw_sync"; + remote = "PWs"; + local = "/home/${config.conf.username}/PWs"; + } ]; }; }; diff --git a/programs/individual_configs/firefox.nix b/programs/individual_configs/firefox.nix index a4789e0..098f01e 100644 --- a/programs/individual_configs/firefox.nix +++ b/programs/individual_configs/firefox.nix @@ -24,7 +24,7 @@ Search = true; Pocket = false; Snippets = false; - TopSites = false; + TopSites = true; Highlights = false; }; UserMessaging = { diff --git a/programs/individual_configs/keepass.nix b/programs/individual_configs/keepass.nix index 276f75f..b112730 100644 --- a/programs/individual_configs/keepass.nix +++ b/programs/individual_configs/keepass.nix @@ -23,4 +23,14 @@ EnableCopyOnDoubleClick=true ''; }; + + home.file.".cache/keepassxc/keepassxc.ini" = { + text = '' + [General] + LastDatabases=/home/dashie/PWs/Passwords.kdbx + LastActiveDatabase=/home/dashie/PWs/Passwords.kdbx + LastOpenedDatabases=/home/dashie/PWs/Passwords.kdbx + LastKeyFiles=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0>\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0P\0W\0s\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>\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0P\0W\0s\0/\0l\0o\0g\0i\0n\0_\0k\0\x65\0y\0.\0k\0\x65\0y\0x) + ''; + }; } From c8a6e6b420851f2c3053c9c09b22855e4c1a8a9f Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 4 Aug 2024 23:15:42 +0200 Subject: [PATCH 058/330] Add pw_sync to overheating and marmo --- flake.lock | 51 +++++++++++++------------- flake.nix | 2 +- hardware/marmo/configuration.nix | 6 +-- hardware/overheating/configuration.nix | 8 +++- 4 files changed, 37 insertions(+), 30 deletions(-) diff --git a/flake.lock b/flake.lock index 33a806d..789d67e 100644 --- a/flake.lock +++ b/flake.lock @@ -193,11 +193,11 @@ ] }, "locked": { - "lastModified": 1717025063, - "narHash": "sha256-dIubLa56W9sNNz0e8jGxrX3CAkPXsq7snuFA/Ie6dn8=", + "lastModified": 1713979152, + "narHash": "sha256-apdecPuh8SOQnkEET/kW/UcfjCRb8JbV5BKjoH+DcP4=", "owner": "ipetkov", "repo": "crane", - "rev": "480dff0be03dac0e51a8dfc26e882b0d123a450e", + "rev": "a5eca68a2cf11adb32787fc141cddd29ac8eb79c", "type": "github" }, "original": { @@ -884,11 +884,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1722773977, - "narHash": "sha256-AqSmHptledo4Tp+hrHWovGR+e//bejR458sRmhq+jT4=", + "lastModified": 1722800434, + "narHash": "sha256-0lvzOT3dQWlQ+zyOAhKTxFd9BWZw380ILDNpoGdtekA=", "ref": "refs/heads/main", - "rev": "5dd2c27b631f16e49a2c6e6cbbefba9fa50bf543", - "revCount": 5050, + "rev": "2b520571e897be2a0e88c8692da607b062000038", + "revCount": 5051, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -1013,15 +1013,16 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1722775753, - "narHash": "sha256-YFarQSZEIFpA1/9eRK4tm88mZYvWGIaAgCEAjazBO38=", + "lastModified": 1714908451, + "narHash": "sha256-TPbvKQdoGfZMzp+fl72vy6MtRV1yGcOG/es67VOA0xw=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "92c690dcd14c21272f89bfde292546a2ee828e23", + "rev": "3a1c60442382f970cdb7669814b6ef3594d9f048", "type": "github" }, "original": { "owner": "JakeStanger", + "ref": "3a1c60442382f970cdb7669814b6ef3594d9f048", "repo": "ironbar", "type": "github" } @@ -1031,11 +1032,11 @@ "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1717067539, - "narHash": "sha256-oIs5EF+6VpHJRvvpVWuqCYJMMVW/6h59aYUv9lABLtY=", + "lastModified": 1713520724, + "narHash": "sha256-CO8MmVDmqZX2FovL75pu5BvwhW+Vugc7Q6ze7Hj8heI=", "owner": "nix-community", "repo": "naersk", - "rev": "fa19d8c135e776dc97f4dcca08656a0eeb28d5c0", + "rev": "c5037590290c6c7dae2e42e7da1e247e54ed2d49", "type": "github" }, "original": { @@ -1383,11 +1384,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1717112898, - "narHash": "sha256-7R2ZvOnvd9h8fDd65p0JnB7wXfUvreox3xFdYWd1BnY=", + "lastModified": 1714314149, + "narHash": "sha256-yNAevSKF4krRWacmLUsLK7D7PlfuY3zF0lYnGYNi9vQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6132b0f6e344ce2fe34fc051b72fb46e34f668e0", + "rev": "cf8cc1201be8bc71b7cbbbdaf349b22f4f99c7ae", "type": "github" }, "original": { @@ -1397,11 +1398,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1716948383, - "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", + "lastModified": 1714253743, + "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", + "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", "type": "github" }, "original": { @@ -1487,11 +1488,11 @@ }, "nur": { "locked": { - "lastModified": 1722770616, - "narHash": "sha256-A40yRytGkUb40yQYjspVU3Z/QBONgFYZqQiz00V1IJ4=", + "lastModified": 1722801783, + "narHash": "sha256-A6xMNsSzYPeYABqUkXXpoxcefo0v8LIMGvETSJLaxkg=", "owner": "nix-community", "repo": "nur", - "rev": "5605ce776b3d21c0ee477fcd028a817bd3524e6f", + "rev": "161e94cdfcaf37a3418992abdef5b2537e5ac4ce", "type": "github" }, "original": { @@ -1695,11 +1696,11 @@ ] }, "locked": { - "lastModified": 1717121863, - "narHash": "sha256-/3sxIe7MZqF/jw1RTQCSmgTjwVod43mmrk84m50MJQ4=", + "lastModified": 1714443211, + "narHash": "sha256-lKTA3XqRo4aVgkyTSCtpcALpGXdmkilHTtN00eRg0QU=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "2a7b53172ed08f856b8382d7dcfd36a4e0cbd866", + "rev": "ce35c36f58f82cee6ec959e0d44c587d64281b6f", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index a28bd49..2f7bfe3 100644 --- a/flake.nix +++ b/flake.nix @@ -26,7 +26,7 @@ hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; ironbar = { - url = "github:JakeStanger/ironbar"; + url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; }; stylix.url = "github:danth/stylix"; diff --git a/hardware/marmo/configuration.nix b/hardware/marmo/configuration.nix index b9b90b2..f7e5d65 100644 --- a/hardware/marmo/configuration.nix +++ b/hardware/marmo/configuration.nix @@ -28,9 +28,9 @@ nextcloud = { synclist = [ { - name = "document_sync"; - remote = "/Documents"; - local = "/home/${config.conf.username}/Documents"; + name = "pw_sync"; + remote = "/PWs"; + local = "/home/${config.conf.username}/PWs"; } ]; }; diff --git a/hardware/overheating/configuration.nix b/hardware/overheating/configuration.nix index 5c4380d..206267a 100644 --- a/hardware/overheating/configuration.nix +++ b/hardware/overheating/configuration.nix @@ -42,6 +42,12 @@ remote = "/Pictures"; local = "/home/${config.conf.username}/Pictures"; } + { + name = "pw_sync"; + remote = "PWs"; + local = "/home/${config.conf.username}/PWs"; + } ]; }; - } + }; +} From 494131ece5788e81fba78addba47b5dada10e008 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 5 Aug 2024 00:03:25 +0200 Subject: [PATCH 059/330] Add deletion policy for older nix generations --- base/common_hardware.nix | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 7eb5054..a739a1c 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -7,7 +7,10 @@ in (modulesPath + "/installer/scan/not-detected.nix") ]; # Bootloader. - boot.loader.systemd-boot.enable = true; + boot.loader.systemd-boot = { + enable = true; + configurationLimit = 5; + }; boot.loader.efi.canTouchEfiVariables = true; # Enable networking @@ -28,7 +31,15 @@ in nixpkgs.hostPlatform = lib.mkDefault config.conf.system; nix = { + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 7d --delete-generations +5"; + }; settings = { + trusted-users = [ + username + ]; auto-optimise-store = true; experimental-features = "nix-command flakes"; @@ -53,10 +64,6 @@ in DIRENV_LOG_FORMAT = ""; }; - nix.settings.trusted-users = [ - username - ]; - boot.kernelPackages = config.conf.kernel; boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; boot.kernelParams = [ From 9ded78a1487b78ea5b4d3ef811c2a1d2e9bae66a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 5 Aug 2024 23:29:49 +0200 Subject: [PATCH 060/330] Add starship --- flake.lock | 11 ++++++----- flake.nix | 2 +- modules/programs/base_packages.nix | 6 ++++++ modules/programs/hyprland/hyprland.nix | 4 ++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/flake.lock b/flake.lock index 789d67e..744c687 100644 --- a/flake.lock +++ b/flake.lock @@ -884,16 +884,17 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1722800434, - "narHash": "sha256-0lvzOT3dQWlQ+zyOAhKTxFd9BWZw380ILDNpoGdtekA=", - "ref": "refs/heads/main", - "rev": "2b520571e897be2a0e88c8692da607b062000038", - "revCount": 5051, + "lastModified": 1722815171, + "narHash": "sha256-TC8I1Y+R9vkS0IUsFWYdKOYq8wJHbEYuQRqcpw3kyQk=", + "ref": "explicit-sync", + "rev": "f2533c55cc25381d764978199ba8ada8957597c8", + "revCount": 5070, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" }, "original": { + "ref": "explicit-sync", "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" diff --git a/flake.nix b/flake.nix index 2f7bfe3..01e5e0e 100644 --- a/flake.nix +++ b/flake.nix @@ -23,7 +23,7 @@ # }; nur.url = "github:nix-community/nur"; - hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; + hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1&ref=explicit-sync"; ironbar = { url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index c518ace..1a889cb 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -76,6 +76,12 @@ nssmdns4 = true; openFirewall = true; }; + programs.starship = { + enable = true; + interactiveOnly = true; + presets = [ "pastel-powerline" ]; + settings = { }; + }; programs.fish.enable = true; programs.fish.promptInit = '' diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 6a8c0c1..8223af2 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -233,8 +233,8 @@ 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; + # no_hardware_cursors = true; + # no_break_fs_vrr = true; }; gestures = { From 1a0064894d7b0e60c2a5f59a963565b3f47c104d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 6 Aug 2024 04:15:00 +0200 Subject: [PATCH 061/330] Change to starship --- modules/programs/base_packages.nix | 234 ++++++++++++++++++++--------- programs/common.nix | 9 +- 2 files changed, 164 insertions(+), 79 deletions(-) diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index 1a889cb..4944456 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -1,4 +1,4 @@ -{ config, lib, options, pkgs, ... }: { +{ config, lib, options, pkgs, inputs, ... }: { options.mods = { default_base_packages = { enable = lib.mkOption { @@ -26,83 +26,169 @@ (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 - (lib.mkIf config.conf.streamdeck.enable (callPackage - ../../override/streamdeck.nix - { })) - ]; + } // (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 + (lib.mkIf config.conf.streamdeck.enable (callPackage + ../../override/streamdeck.nix + { })) + ]; - gtk.iconCache.enable = false; + gtk.iconCache.enable = false; - fonts.packages = with pkgs; [ - cantarell-fonts - ]; + fonts.packages = with pkgs; [ + cantarell-fonts + ]; - virtualisation.docker.enable = true; + virtualisation.docker.enable = 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.starship = { - enable = true; - interactiveOnly = true; - presets = [ "pastel-powerline" ]; - settings = { }; - }; - - 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 = { + services.upower.enable = true; + services.dbus.enable = true; + services.dbus.packages = with pkgs; [ + gnome2.GConf + ]; + services.avahi = { enable = true; - package = pkgs.nix-direnv; + nssmdns4 = true; + openFirewall = true; }; - }; - programs.ssh.startAgent = true; - programs.gnupg.agent.enable = true; - }))); + 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 + { + enable = true; + interactiveOnly = true; + presets = [ "pastel-powerline" ]; + settings = + { + # 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 = { + symbol = ""; + style = "bg:#5256c3 fg:#${scheme.base05}"; + format = "[ ](bg:#5256c3 fg:prev_bg)[$symbol $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; }; + # docker_context = { + # symbol = " "; + # style = "bg:#06969A"; + # format = "[](bg:#06969A fg:prev_bg)[ $symbol $context ]($style)"; + # }; + time = { + disabled = false; + time_format = "%R"; # Hour:Minute Format + style = "bg:#3465A4 fg:#${scheme.base05}"; + format = "[ $time ]($style)"; + }; + }; + }; + + + 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/programs/common.nix b/programs/common.nix index 1cd99fb..07c28e4 100644 --- a/programs/common.nix +++ b/programs/common.nix @@ -31,11 +31,10 @@ in filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0 ''; - programs.nix-index = - { - enable = true; - enableFishIntegration = true; - }; + programs.nix-index = { + enable = true; + enableFishIntegration = true; + }; nix = { extraOptions = '' From 44ac35d6e260d74d57f7f09fa2368670f5e8153a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 6 Aug 2024 12:40:16 +0200 Subject: [PATCH 062/330] Modularize programs and add starship --- base/default.nix | 1 - base/theme.nix | 8 - hardware/marmo/configuration.nix | 2 +- hardware/overheating/configuration.nix | 2 +- hardware/spaceship/configuration.nix | 2 +- modules/conf.nix | 37 -- modules/programs/base_packages.nix | 91 ----- modules/programs/coding.nix | 2 +- modules/programs/default.nix | 5 + modules/programs/gaming.nix | 72 ++++ modules/programs/git.nix | 46 +++ modules/programs/gnome_services.nix | 1 - modules/programs/home_packages.nix | 1 - modules/programs/hyprland/hyprland.nix | 498 ++++++++++++------------ modules/programs/keepassxc.nix | 59 +++ modules/programs/starship.nix | 120 ++++++ modules/programs/stylix.nix | 82 ++++ programs/gaming/default.nix | 35 -- programs/individual_configs/default.nix | 3 - programs/individual_configs/git.nix | 16 - programs/individual_configs/keepass.nix | 36 -- programs/individual_configs/ssh.nix | 10 - programs/themes/default.nix | 3 - programs/themes/stylix.nix | 44 --- 24 files changed, 646 insertions(+), 530 deletions(-) delete mode 100644 base/theme.nix create mode 100644 modules/programs/gaming.nix create mode 100644 modules/programs/git.nix create mode 100644 modules/programs/keepassxc.nix create mode 100644 modules/programs/starship.nix create mode 100644 modules/programs/stylix.nix delete mode 100644 programs/gaming/default.nix delete mode 100644 programs/individual_configs/git.nix delete mode 100644 programs/individual_configs/keepass.nix delete mode 100644 programs/individual_configs/ssh.nix delete mode 100644 programs/themes/stylix.nix diff --git a/base/default.nix b/base/default.nix index 8fd4f86..eafd8a5 100644 --- a/base/default.nix +++ b/base/default.nix @@ -3,6 +3,5 @@ ./env.nix ./xkb_layout.nix ./common_hardware.nix - ./theme.nix ]; } diff --git a/base/theme.nix b/base/theme.nix deleted file mode 100644 index 15d10c2..0000000 --- a/base/theme.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ lib, config, ... }: { - # imports = lib.mkIf config.conf.default_base_packages.enable [ - imports = [ - # is wrapped in if statement to enable when needed - ../programs/gaming/default.nix - ../programs/themes/stylix.nix - ]; -} diff --git a/hardware/marmo/configuration.nix b/hardware/marmo/configuration.nix index f7e5d65..ec5f551 100644 --- a/hardware/marmo/configuration.nix +++ b/hardware/marmo/configuration.nix @@ -10,9 +10,9 @@ device = 1; }; hostname = "marmo"; - colorscheme = "catppuccin-mocha"; }; mods = { + stylix.colorscheme = "catppuccin-mocha"; hyprland.monitor = [ # default "DP-1,1920x1080@144,0x0,1" diff --git a/hardware/overheating/configuration.nix b/hardware/overheating/configuration.nix index 206267a..d69c07a 100644 --- a/hardware/overheating/configuration.nix +++ b/hardware/overheating/configuration.nix @@ -10,9 +10,9 @@ ironbar.modules = [ { type = "upower"; class = "memory-usage"; } ]; - colorscheme = "catppuccin-mocha"; }; mods = { + stylix.colorscheme = "catppuccin-mocha"; hyprland = { monitor = [ # default diff --git a/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix index bc9f48c..9fad99f 100644 --- a/hardware/spaceship/configuration.nix +++ b/hardware/spaceship/configuration.nix @@ -15,9 +15,9 @@ in }; streamdeck.enable = true; hostname = "spaceship"; - colorscheme = "catppuccin-mocha"; }; mods = { + stylix.colorscheme = "catppuccin-mocha"; hyprland = { monitor = [ # default diff --git a/modules/conf.nix b/modules/conf.nix index ebeb0c4..fea15a0 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -173,43 +173,6 @@ ''; }; - colorscheme = lib.mkOption { - default = { - # custom tokyo night - base00 = "1A1B26"; - # base01 = "16161E"; - # base01 = "15161e"; - base01 = "191a25"; - base02 = "2F3549"; - base03 = "444B6A"; - base04 = "787C99"; - base05 = "A9B1D6"; - base06 = "CBCCD1"; - base07 = "D5D6DB"; - base08 = "C0CAF5"; - base09 = "A9B1D6"; - base0A = "0DB9D7"; - base0B = "9ECE6A"; - base0C = "B4F9F8"; - # base0D = "2AC3DE"; - # base0D = "A9B1D6"; - # base0D = "62A0EA"; - # base0D = "779EF1"; - base0D = "366fea"; - base0E = "BB9AF7"; - base0F = "F7768E"; - }; - example = "catppuccin-mocha"; - type = with lib.types; oneOf [ str attrs path ]; - description = '' - Base16 colorscheme. - Can be an attribute set with base00 to base0F, - a string that leads to a yaml file in base16-schemes path, - or a path to a custom yaml file. - ''; - }; - - }; config = { diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index 4944456..56a0b8d 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -77,97 +77,6 @@ nssmdns4 = true; openFirewall = true; }; - 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 - { - enable = true; - interactiveOnly = true; - presets = [ "pastel-powerline" ]; - settings = - { - # 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 = { - symbol = ""; - style = "bg:#5256c3 fg:#${scheme.base05}"; - format = "[ ](bg:#5256c3 fg:prev_bg)[$symbol $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; }; - # docker_context = { - # symbol = " "; - # style = "bg:#06969A"; - # format = "[](bg:#06969A fg:prev_bg)[ $symbol $context ]($style)"; - # }; - time = { - disabled = false; - time_format = "%R"; # Hour:Minute Format - style = "bg:#3465A4 fg:#${scheme.base05}"; - format = "[ $time ]($style)"; - }; - }; - }; - programs.fish.enable = true; programs.fish.promptInit = '' diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index aa222ff..2e41854 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -23,7 +23,7 @@ config = lib.mkIf config.mods.coding.enable (lib.optionalAttrs (options?home.packages) { programs.dashvim = lib.mkIf config.mods.coding.dashvim { enable = true; - colorscheme = config.conf.colorscheme; + colorscheme = config.mods.stylix.colorscheme; }; home.packages = with pkgs; [ #basics diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 305ce4d..b4ea9a7 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -18,6 +18,11 @@ ./coding.nix ./flatpak.nix ./nextcloud.nix + ./starship.nix + ./git.nix + ./keepassxc.nix + ./gaming.nix + ./stylix.nix ./hyprland ]; } diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix new file mode 100644 index 0000000..2cc3d9d --- /dev/null +++ b/modules/programs/gaming.nix @@ -0,0 +1,72 @@ +{ lib, config, options, pkgs, ... }: { + options.mods.gaming = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enabled gaming related features."; + }; + tools = lib.mkOption { + default = with pkgs; [ + gamemode + steam + lutris + wine + adwsteamgtk + heroic + ]; + example = [ ]; + type = with lib.types; listOf packages; + description = "Install gaming related packages"; + }; + steam = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Whether to use steam"; + }; + gamemode = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Whether to use gamemode"; + }; + gpu_optimization = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Whether to use GPU performance setting. NOTE: this is at your own risk!"; + }; + gpu_device = lib.mkOption { + default = "0"; + example = "1"; + type = lib.types.str; + description = "Your gpu device.(Physical id of lshw)"; + }; + }; + config = lib.mkIf config.mods.gaming.enable + (lib.optionalAttrs (options?environment.systemPackages) { + environment.systemPackages = config.mods.gaming.tools; + + programs.steam.enable = config.mods.gaming.steam; + programs.gamemode.enable = true; + programs.gamemode = { + enableRenice = true; + settings = { + general = { + governor = "performance"; + }; + gpu = lib.mkIf config.mods.gaming.gpu_optimization { + apply_gpu_optimisations = "accept-responsibility"; + gpu_device = config.mods.gaming.gpu_device; + amd_performance_level = "high"; + nv_powermizer_mode = 1; + }; + custom = { + start = "notify-send -a 'Gamemode' 'Optimizations activated'"; + end = "notify-send -a 'Gamemode' 'Optimizations deactivated'"; + }; + }; + }; + }); +} diff --git a/modules/programs/git.nix b/modules/programs/git.nix new file mode 100644 index 0000000..1bdc19e --- /dev/null +++ b/modules/programs/git.nix @@ -0,0 +1,46 @@ +{ lib, config, options, pkgs, ... }: +{ + options.mods.git = { + username = lib.mkOption { + default = "DashieTM"; + example = "globi"; + type = lib.types.str; + description = "Git user name"; + }; + email = lib.mkOption { + default = "fabio.lenherr@gmail.com"; + example = "globi@globus.glob"; + type = lib.types.str; + description = "Git email"; + }; + ssh_config = lib.mkOption { + default = '' + Host github.com + ${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 ""} + Host dashie.org + ${if (config.sops.secrets?dashie.path) then "IdentityFile ${config.sops.secrets.dashie.path}" else ""} + ''; + example = ''''; + type = lib.types.lines; + description = "ssh configuration (keys for git)"; + }; + }; + 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"; + }; + }; + }; + 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 39a0943..8619075 100644 --- a/modules/programs/gnome_services.nix +++ b/modules/programs/gnome_services.nix @@ -1,5 +1,4 @@ { lib, config, options, pkgs, ... }: { - options.mods = { gnome_services.enable = lib.mkOption { default = true; diff --git a/modules/programs/home_packages.nix b/modules/programs/home_packages.nix index fe33b3e..f62c038 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/home_packages.nix @@ -50,7 +50,6 @@ qt5ct qt6ct gnutar - fishPlugins.tide nix-index libnotify zenith diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 8223af2..3dd171f 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -41,6 +41,23 @@ Extra exec_once. ''; }; + use_default_config = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use preconfigured Hyprland config. + ''; + }; + custom_config = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + Custom Hyprland configuration. + Will be merged with default configuration if enabled. + ''; + }; }; }; @@ -62,262 +79,263 @@ ]; wayland.windowManager.hyprland.enable = true; - wayland.windowManager.hyprland.settings = { - "$mod" = "SUPER"; - "source" = "/home/${config.conf.username}/.config/reset/keyboard.conf"; + 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" - ]; - - 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 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" + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" ]; - }; - dwindle = { - preserve_split = true; - pseudotile = 0; - permanent_direction_override = false; - }; + 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" - 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; + # 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; }; - }; - misc = { - animate_manual_resizes = 1; - enable_swallow = true; - disable_splash_rendering = true; - disable_hyprland_logo = true; - swallow_regex = "^(.*)(kitty)(.*)$"; - initial_workspace_tracking = 1; - no_direct_scanout = false; - }; + decoration = { + rounding = 4; + }; - 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; - }; + 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" + ]; + }; - gestures = { - workspace_swipe = true; - }; + dwindle = { + preserve_split = true; + pseudotile = 0; + permanent_direction_override = false; + }; - monitor = config.mods.hyprland.monitor; - workspace = config.mods.hyprland.workspace; + 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; + }; + }; - 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" - ]; + misc = { + animate_manual_resizes = 1; + enable_swallow = true; + disable_splash_rendering = true; + disable_hyprland_logo = true; + swallow_regex = "^(.*)(kitty)(.*)$"; + initial_workspace_tracking = 1; + no_direct_scanout = false; + }; - layerrule = [ - # layer rules - # mainly to disable animations within slurp and grim - "noanim, selection" - ]; + 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; + }; - 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)(.*)$" - ]; + gestures = { + workspace_swipe = true; + }; - windowrulev2 = [ - "immediate,class:^(.*)(Pal)$" - "immediate,class:^(.*)(dota2)$" - "immediate,class:^(.*)(needforspeedheat.exe)$" - ]; + monitor = config.mods.hyprland.monitor; + workspace = config.mods.hyprland.workspace; - exec-once = [ - # environment - "systemctl --user import-environment" - "dbus-update-activation-environment --systemd --all" - "hyprctl setcursor Bibata-Modern-Classic 24" + 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" + ]; - # 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; + layerrule = [ + # layer rules + # mainly to disable animations within slurp and grim + "noanim, selection" + ]; - # plugin = { - # hyprspace = { - # bind = [ - # "SUPER, W, overview:toggle, toggle" - # ]; - # }; - # }; - }; + 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 # ]; diff --git a/modules/programs/keepassxc.nix b/modules/programs/keepassxc.nix new file mode 100644 index 0000000..94c73e6 --- /dev/null +++ b/modules/programs/keepassxc.nix @@ -0,0 +1,59 @@ +{ lib, config, options, pkgs, ... }: { + options.mods.keepassxc = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables the piper program and its daemon"; + }; + use_cache_config = lib.mkOption { + 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!"; + }; + cache_config = lib.mkOption { + default = '' + [General] + LastDatabases=/home/dashie/PWs/Passwords.kdbx + LastActiveDatabase=/home/dashie/PWs/Passwords.kdbx + LastOpenedDatabases=/home/dashie/PWs/Passwords.kdbx + LastKeyFiles=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0>\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0P\0W\0s\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>\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0P\0W\0s\0/\0l\0o\0g\0i\0n\0_\0k\0\x65\0y\0.\0k\0\x65\0y\0x) + ''; + example = ''''; + type = lib.types.lines; + description = "Cache config to be used."; + }; + }; + config = lib.mkIf config.mods.keepassxc.enable + (lib.optionalAttrs (options?home.file) { + xdg.configFile."keepassxc/keepassxc.ini" = { + text = + '' + [General] + ConfigVersion=2 + + [Browser] + Enabled=true + + [GUI] + ApplicationTheme=classic + HidePasswords=true + MinimizeOnClose=true + MinimizeToTray=true + ShowTrayIcon=true + TrayIconAppearance=monochrome-light + + [PasswordGenerator] + Length=30 + + [Security] + EnableCopyOnDoubleClick=true + ''; + }; + + 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/starship.nix b/modules/programs/starship.nix new file mode 100644 index 0000000..22134ca --- /dev/null +++ b/modules/programs/starship.nix @@ -0,0 +1,120 @@ +{ lib, config, options, pkgs, inputs, ... }: { + options.mods = { + starship = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables starship prompt + ''; + }; + use_default_prompt = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables preconfigured prompt + ''; + }; + custom_prompt = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + Custom configuration for prompt. + Will be merged with preconfigured prompt if that is used. + ''; + }; + }; + }; + + # environment.systemPackages needed in order to configure systemwide + 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 + { + 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 = { + symbol = ""; + style = "bg:#5256c3 fg:#${scheme.base05}"; + format = "[ ](bg:#5256c3 fg:prev_bg)[$symbol $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 new file mode 100644 index 0000000..e23c01c --- /dev/null +++ b/modules/programs/stylix.nix @@ -0,0 +1,82 @@ +{ lib, config, options, pkgs, ... }: { + options.mods.stylix = { + colorscheme = lib.mkOption { + default = { + # custom tokyo night + base00 = "1A1B26"; + # base01 = "16161E"; + # base01 = "15161e"; + base01 = "191a25"; + base02 = "2F3549"; + base03 = "444B6A"; + base04 = "787C99"; + base05 = "A9B1D6"; + base06 = "CBCCD1"; + base07 = "D5D6DB"; + base08 = "C0CAF5"; + base09 = "A9B1D6"; + base0A = "0DB9D7"; + base0B = "9ECE6A"; + base0C = "B4F9F8"; + # base0D = "2AC3DE"; + # base0D = "A9B1D6"; + # base0D = "62A0EA"; + # base0D = "779EF1"; + base0D = "366fea"; + base0E = "BB9AF7"; + base0F = "F7768E"; + }; + example = "catppuccin-mocha"; + type = with lib.types; oneOf [ str attrs path ]; + description = '' + Base16 colorscheme. + Can be an attribute set with base00 to base0F, + a string that leads to a yaml file in base16-schemes path, + or a path to a custom yaml file. + ''; + }; + }; + config = (lib.optionalAttrs (options?stylix) { + stylix = { + enable = true; + image = ../../base/black.jpg; + polarity = "dark"; + targets = { + nixvim.enable = false; + fish.enable = false; + }; + + fonts = { + serif = { + package = pkgs.cantarell-fonts; + name = "Cantarell"; + }; + + sansSerif = { + package = pkgs.cantarell-fonts; + name = "Cantarell"; + }; + + monospace = { + package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; }); + # name = "JetBrains Mono Nerd"; + name = "JetBrainsMono Nerd Font Mono"; + }; + + emoji = { + package = pkgs.noto-fonts-emoji; + name = "Noto Color Emoji"; + }; + }; + + cursor = { + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; + 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"); + }; + }); +} diff --git a/programs/gaming/default.nix b/programs/gaming/default.nix deleted file mode 100644 index 74b08fc..0000000 --- a/programs/gaming/default.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ pkgs -, lib -, config -, ... -}: lib.mkIf config.conf.gaming.enable { - environment.systemPackages = with pkgs; [ - gamemode - steam - lutris - wine - adwsteamgtk - heroic - ]; - - programs.steam.enable = true; - programs.gamemode.enable = true; - programs.gamemode = { - enableRenice = true; - settings = { - general = { - governor = "performance"; - }; - gpu = lib.mkIf config.conf.gaming.gamemode_gpu { - apply_gpu_optimisations = "accept-responsibility"; - gpu_device = config.conf.gaming.device; - amd_performance_level = "high"; - nv_powermizer_mode = 1; - }; - custom = { - start = "notify-send -a 'Gamemode' 'Optimizations activated'"; - end = "notify-send -a 'Gamemode' 'Optimizations deactivated'"; - }; - }; - }; -} diff --git a/programs/individual_configs/default.nix b/programs/individual_configs/default.nix index f705a7b..40470cc 100644 --- a/programs/individual_configs/default.nix +++ b/programs/individual_configs/default.nix @@ -3,11 +3,8 @@ ./kitty.nix ./yazi.nix ./fish.nix - ./ssh.nix ./direnv.nix - ./git.nix ./firefox.nix - ./keepass.nix ./neovide.nix ]; } diff --git a/programs/individual_configs/git.nix b/programs/individual_configs/git.nix deleted file mode 100644 index 36fd9e0..0000000 --- a/programs/individual_configs/git.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - programs.git = { - enable = true; - userName = "DashieTM"; - userEmail = "fabio.lenherr@gmail.com"; - extraConfig = { - merge = { - tool = "nvimdiff"; - }; - diff = { - tool = "nvimdiff"; - }; - }; - }; - -} diff --git a/programs/individual_configs/keepass.nix b/programs/individual_configs/keepass.nix deleted file mode 100644 index b112730..0000000 --- a/programs/individual_configs/keepass.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - xdg.configFile."keepassxc/keepassxc.ini" = { - text = - '' - [General] - ConfigVersion=2 - - [Browser] - Enabled=true - - [GUI] - ApplicationTheme=classic - HidePasswords=true - MinimizeOnClose=true - MinimizeToTray=true - ShowTrayIcon=true - TrayIconAppearance=monochrome-light - - [PasswordGenerator] - Length=30 - - [Security] - EnableCopyOnDoubleClick=true - ''; - }; - - home.file.".cache/keepassxc/keepassxc.ini" = { - text = '' - [General] - LastDatabases=/home/dashie/PWs/Passwords.kdbx - LastActiveDatabase=/home/dashie/PWs/Passwords.kdbx - LastOpenedDatabases=/home/dashie/PWs/Passwords.kdbx - LastKeyFiles=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0>\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0P\0W\0s\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>\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0P\0W\0s\0/\0l\0o\0g\0i\0n\0_\0k\0\x65\0y\0.\0k\0\x65\0y\0x) - ''; - }; -} diff --git a/programs/individual_configs/ssh.nix b/programs/individual_configs/ssh.nix deleted file mode 100644 index 68bdb00..0000000 --- a/programs/individual_configs/ssh.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ config, ... }: { - home.file.".ssh/config".text = '' - Host github.com - IdentityFile ${config.sops.secrets.hub.path} - Host gitlab.com - IdentityFile ${config.sops.secrets.lab.path} - Host dashie.org - IdentityFile ${config.sops.secrets.dashie.path} - ''; -} diff --git a/programs/themes/default.nix b/programs/themes/default.nix index 331246a..e3b2a16 100644 --- a/programs/themes/default.nix +++ b/programs/themes/default.nix @@ -1,9 +1,6 @@ { imports = [ ./qt.nix - ./stylix.nix - # ./gtk3.nix - # ./gtk4.nix ]; } diff --git a/programs/themes/stylix.nix b/programs/themes/stylix.nix deleted file mode 100644 index fcb04ce..0000000 --- a/programs/themes/stylix.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ pkgs, config, ... }: -{ - stylix = { - enable = true; - image = ../../base/black.jpg; - polarity = "dark"; - targets = { - nixvim.enable = false; - fish.enable = false; - }; - - fonts = { - serif = { - package = pkgs.cantarell-fonts; - name = "Cantarell"; - }; - - sansSerif = { - package = pkgs.cantarell-fonts; - name = "Cantarell"; - }; - - monospace = { - package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; }); - # name = "JetBrains Mono Nerd"; - name = "JetBrainsMono Nerd Font Mono"; - }; - - emoji = { - package = pkgs.noto-fonts-emoji; - name = "Noto Color Emoji"; - }; - }; - - cursor = { - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Classic"; - size = 24; - }; - - base16Scheme = - (if builtins.isAttrs config.conf.colorscheme then config.conf.colorscheme else "${pkgs.base16-schemes}/share/themes/${config.conf.colorscheme}.yaml"); - }; -} From bf736f6af03c7a976b3b6df697fd00b6a9107738 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 6 Aug 2024 12:45:11 +0200 Subject: [PATCH 063/330] Add readme entries for new modules --- README.md | 6 ++++++ programs/sync.nix | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bcd4cd6..b1ba63e 100644 --- a/README.md +++ b/README.md @@ -34,4 +34,10 @@ For package lists, please check the individual modules, as the lists can be long - printing : Enables and configures printing services - virtualbox : Enables and configures virtualbox - xone : Installs the xone driver +- starship : Configures the starship prompt +- keepassxc : Configures keepassxc +- gaming : Configures gaming related features (launchers, gamemode) +- stylix : Configures system themes, can also be applied to dashvim if used. +- git : Git key and config module +- nextcloud : Handles synchronization via nextcloud cmd. (requires config.sops.secrets.nextcloud) - Hyprland: Installs and configures Hyprland with various additional packages diff --git a/programs/sync.nix b/programs/sync.nix index ec7755c..9564a68 100644 --- a/programs/sync.nix +++ b/programs/sync.nix @@ -2,7 +2,7 @@ { config, pkgs, lib, ... }: let username = config.mods.nextcloud.username; - password = config.sops.secrets.nextcloud.path; + 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 From b63dafb8a62662f650be718ab335472f16195979 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 6 Aug 2024 12:53:52 +0200 Subject: [PATCH 064/330] Enable keepassxc by default --- modules/programs/keepassxc.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/programs/keepassxc.nix b/modules/programs/keepassxc.nix index 94c73e6..b9f6bd9 100644 --- a/modules/programs/keepassxc.nix +++ b/modules/programs/keepassxc.nix @@ -1,8 +1,8 @@ { lib, config, options, pkgs, ... }: { options.mods.keepassxc = { enable = lib.mkOption { - default = false; - example = true; + default = true; + example = false; type = lib.types.bool; description = "Enables the piper program and its daemon"; }; @@ -27,6 +27,7 @@ }; config = lib.mkIf config.mods.keepassxc.enable (lib.optionalAttrs (options?home.file) { + home.packages = [ pkgs.keepassxc ]; xdg.configFile."keepassxc/keepassxc.ini" = { text = '' From c88df9b9546b93b8e0e73d989571361fc7c7e89b Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 6 Aug 2024 13:40:07 +0200 Subject: [PATCH 065/330] Move gaming remaining options --- hardware/marmo/configuration.nix | 8 +++--- hardware/spaceship/configuration.nix | 6 ++--- modules/conf.nix | 40 +--------------------------- modules/programs/gaming.nix | 8 +++++- 4 files changed, 15 insertions(+), 47 deletions(-) diff --git a/hardware/marmo/configuration.nix b/hardware/marmo/configuration.nix index ec5f551..9e0a522 100644 --- a/hardware/marmo/configuration.nix +++ b/hardware/marmo/configuration.nix @@ -5,13 +5,13 @@ # variables for system conf = { monitor = "DP-1"; - gaming = { - enable = true; - device = 1; - }; hostname = "marmo"; }; mods = { + gaming = { + enable = true; + gpu_device = 1; + }; stylix.colorscheme = "catppuccin-mocha"; hyprland.monitor = [ # default diff --git a/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix index 9fad99f..4efbeae 100644 --- a/hardware/spaceship/configuration.nix +++ b/hardware/spaceship/configuration.nix @@ -10,13 +10,13 @@ in # config variables conf = { monitor = "DP-1"; - gaming = { - enable = true; - }; streamdeck.enable = true; hostname = "spaceship"; }; mods = { + gaming = { + enable = true; + }; stylix.colorscheme = "catppuccin-mocha"; hyprland = { monitor = [ diff --git a/modules/conf.nix b/modules/conf.nix index fea15a0..98352d4 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -61,44 +61,6 @@ ''; }; - gaming = { - enable = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = '' - Install gaming related programs such as steam, gamemode, and more - ''; - }; - - device = lib.mkOption { - default = 0; - example = 0; - type = lib.types.int; - description = '' - GPU device number - ''; - }; - - kernel = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Install the gaming(xanmod) kernel. - ''; - }; - - gamemode_gpu = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Use GPU optimization. - ''; - }; - }; - streamdeck = { enable = lib.mkOption { default = false; @@ -176,7 +138,7 @@ }; config = { - conf.kernel = lib.mkIf (config.conf.gaming.enable && config.conf.gaming.kernel) pkgs.linuxPackages_xanmod_latest; + 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/programs/gaming.nix b/modules/programs/gaming.nix index 2cc3d9d..4c620ed 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -16,9 +16,15 @@ heroic ]; example = [ ]; - type = with lib.types; listOf packages; + type = with lib.types; listOf package; description = "Install gaming related packages"; }; + kernel = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Whether to use the xanmod kernel"; + }; steam = lib.mkOption { default = true; example = false; From c2c8e002b9b3d40c6a079dab4e1021d0484b730e Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 6 Aug 2024 14:29:58 +0200 Subject: [PATCH 066/330] Move pws --- hardware/marmo/configuration.nix | 2 +- hardware/overheating/configuration.nix | 4 ++-- hardware/spaceship/configuration.nix | 2 +- modules/programs/home_packages.nix | 1 - modules/programs/keepassxc.nix | 8 ++++---- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/hardware/marmo/configuration.nix b/hardware/marmo/configuration.nix index 9e0a522..db3d6d3 100644 --- a/hardware/marmo/configuration.nix +++ b/hardware/marmo/configuration.nix @@ -30,7 +30,7 @@ { name = "pw_sync"; remote = "/PWs"; - local = "/home/${config.conf.username}/PWs"; + local = "/home/${config.conf.username}/Music"; } ]; }; diff --git a/hardware/overheating/configuration.nix b/hardware/overheating/configuration.nix index d69c07a..aa31b54 100644 --- a/hardware/overheating/configuration.nix +++ b/hardware/overheating/configuration.nix @@ -1,6 +1,6 @@ { config, ... }: { imports = [ - ../../modules/conf.nix + ../../modules ]; conf = { monitor = "eDP-1"; @@ -45,7 +45,7 @@ { name = "pw_sync"; remote = "PWs"; - local = "/home/${config.conf.username}/PWs"; + local = "/home/${config.conf.username}/Music"; } ]; }; diff --git a/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix index 4efbeae..da022bf 100644 --- a/hardware/spaceship/configuration.nix +++ b/hardware/spaceship/configuration.nix @@ -109,7 +109,7 @@ in { name = "pw_sync"; remote = "PWs"; - local = "/home/${config.conf.username}/PWs"; + local = "/home/${config.conf.username}/Music"; } ]; }; diff --git a/modules/programs/home_packages.nix b/modules/programs/home_packages.nix index f62c038..9eb3d63 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/home_packages.nix @@ -25,7 +25,6 @@ home.packages = config.mods.home_packages.additional_packages; } // (lib.mkIf config.mods.home_packages.enable (lib.optionalAttrs (options?home.packages) { home.packages = with pkgs; [ - keepassxc nheko nextcloud-client xournalpp diff --git a/modules/programs/keepassxc.nix b/modules/programs/keepassxc.nix index b9f6bd9..9dd0304 100644 --- a/modules/programs/keepassxc.nix +++ b/modules/programs/keepassxc.nix @@ -15,10 +15,10 @@ cache_config = lib.mkOption { default = '' [General] - LastDatabases=/home/dashie/PWs/Passwords.kdbx - LastActiveDatabase=/home/dashie/PWs/Passwords.kdbx - LastOpenedDatabases=/home/dashie/PWs/Passwords.kdbx - LastKeyFiles=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0>\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0P\0W\0s\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>\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0P\0W\0s\0/\0l\0o\0g\0i\0n\0_\0k\0\x65\0y\0.\0k\0\x65\0y\0x) + LastDatabases=/home/dashie/Music/Passwords.kdbx + LastActiveDatabase=/home/dashie/Music/Passwords.kdbx + 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 = ''''; type = lib.types.lines; From a608ed5b9f13d337688f6cd1e8209d967592dbc2 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 7 Aug 2024 14:13:40 +0200 Subject: [PATCH 067/330] Modularize firefox --- modules/programs/default.nix | 1 + modules/programs/firefox.nix | 69 +++++++++++++++++++++++++ programs/individual_configs/default.nix | 1 - programs/individual_configs/firefox.nix | 47 ----------------- 4 files changed, 70 insertions(+), 48 deletions(-) create mode 100644 modules/programs/firefox.nix delete mode 100644 programs/individual_configs/firefox.nix diff --git a/modules/programs/default.nix b/modules/programs/default.nix index b4ea9a7..dd09437 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -23,6 +23,7 @@ ./keepassxc.nix ./gaming.nix ./stylix.nix + ./firefox.nix ./hyprland ]; } diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix new file mode 100644 index 0000000..55ea9ba --- /dev/null +++ b/modules/programs/firefox.nix @@ -0,0 +1,69 @@ +{ lib, config, options, pkgs, ... }: { + options.mods.firefox = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables firefox"; + }; + configuration = lib.mkOption { + default = { + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + DisplayBookmarksToolbar = "never"; + DisplayMenuBar = "default-off"; + CaptivePortal = false; + DisableFirefoxStudies = true; + DisableTelemetry = true; + DisableFirefoxAccounts = false; + NoDefaultBookmarks = true; + OfferToSaveLogins = false; + OfferToSaveLoginsDefault = false; + PasswordManagerEnabled = false; + FirefoxHome = { + Search = true; + Pocket = false; + Snippets = false; + TopSites = true; + Highlights = false; + }; + UserMessaging = { + ExtensionRecommendations = false; + SkipOnboarding = true; + }; + }; + example = { }; + type = with lib.types; attrsOf anything; + description = "Firefox policy configuration"; + }; + extensions = lib.mkOption { + default = with pkgs.nur.repos.rycee.firefox-addons;[ + ublock-origin + darkreader + privacy-badger + vimium + keepassxc-browser + i-dont-care-about-cookies + tokyo-night-v2 + ]; + example = [ ]; + type = with lib.types; listOf package; + description = "Firefox extensions (from nur)"; + }; + }; + config = lib.mkIf config.mods.firefox.enable + (lib.optionalAttrs (options?programs.firefox.profiles) { + programs.firefox = { + enable = true; + policies = config.mods.firefox.configuration; + profiles.${config.conf.username} = { + extensions = config.mods.firefox.extensions; + }; + }; + }); +} diff --git a/programs/individual_configs/default.nix b/programs/individual_configs/default.nix index 40470cc..74b5582 100644 --- a/programs/individual_configs/default.nix +++ b/programs/individual_configs/default.nix @@ -4,7 +4,6 @@ ./yazi.nix ./fish.nix ./direnv.nix - ./firefox.nix ./neovide.nix ]; } diff --git a/programs/individual_configs/firefox.nix b/programs/individual_configs/firefox.nix deleted file mode 100644 index 098f01e..0000000 --- a/programs/individual_configs/firefox.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ pkgs, config, ... }: { - programs.firefox = { - enable = true; - - policies = { - EnableTrackingProtection = { - Value = true; - Locked = true; - Cryptomining = true; - Fingerprinting = true; - }; - DisablePocket = true; - DisplayBookmarksToolbar = "never"; - DisplayMenuBar = "default-off"; - CaptivePortal = false; - DisableFirefoxStudies = true; - DisableTelemetry = true; - DisableFirefoxAccounts = false; - NoDefaultBookmarks = true; - OfferToSaveLogins = false; - OfferToSaveLoginsDefault = false; - PasswordManagerEnabled = false; - FirefoxHome = { - Search = true; - Pocket = false; - Snippets = false; - TopSites = true; - Highlights = false; - }; - UserMessaging = { - ExtensionRecommendations = false; - SkipOnboarding = true; - }; - }; - profiles.${config.conf.username} = { - extensions = with pkgs.nur.repos.rycee.firefox-addons; [ - ublock-origin - darkreader - privacy-badger - vimium - keepassxc-browser - i-dont-care-about-cookies - tokyo-night-v2 - ]; - }; - }; -} From 3303a3f2eb3ab79b2dc270e375c82fdb439799a5 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 7 Aug 2024 14:14:59 +0200 Subject: [PATCH 068/330] Add firefox documentation --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b1ba63e..6c2ff4a 100644 --- a/README.md +++ b/README.md @@ -40,4 +40,5 @@ For package lists, please check the individual modules, as the lists can be long - stylix : Configures system themes, can also be applied to dashvim if used. - git : Git key and config module - 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 From c097919e0b8a86f4e5aa079a4ff8c9956240b63e Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 9 Aug 2024 00:36:01 +0200 Subject: [PATCH 069/330] Update hyprland --- flake.lock | 11 +++++------ flake.nix | 2 +- modules/programs/gaming.nix | 6 +++--- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/flake.lock b/flake.lock index 744c687..829a566 100644 --- a/flake.lock +++ b/flake.lock @@ -884,17 +884,16 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1722815171, - "narHash": "sha256-TC8I1Y+R9vkS0IUsFWYdKOYq8wJHbEYuQRqcpw3kyQk=", - "ref": "explicit-sync", - "rev": "f2533c55cc25381d764978199ba8ada8957597c8", - "revCount": 5070, + "lastModified": 1723143710, + "narHash": "sha256-qbjodK+UgnQ2YdtKmuI1XEG84SZlid39rQo6Ap9NTqI=", + "ref": "refs/heads/main", + "rev": "4b4971c06fb02df00a2bd20b6b47b5d0e7d799a7", + "revCount": 5071, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" }, "original": { - "ref": "explicit-sync", "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" diff --git a/flake.nix b/flake.nix index 01e5e0e..2f7bfe3 100644 --- a/flake.nix +++ b/flake.nix @@ -23,7 +23,7 @@ # }; nur.url = "github:nix-community/nur"; - hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1&ref=explicit-sync"; + hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; ironbar = { url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 4c620ed..645e042 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -44,9 +44,9 @@ description = "Whether to use GPU performance setting. NOTE: this is at your own risk!"; }; gpu_device = lib.mkOption { - default = "0"; - example = "1"; - type = lib.types.str; + default = 0; + example = 1; + type = lib.types.int; description = "Your gpu device.(Physical id of lshw)"; }; }; From 220cea894b6e8e58b6b37f53fec90064d206cab8 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 9 Aug 2024 00:36:51 +0200 Subject: [PATCH 070/330] Hyprland: remove direct scanout --- modules/programs/hyprland/hyprland.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 3dd171f..400d772 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -245,7 +245,6 @@ disable_hyprland_logo = true; swallow_regex = "^(.*)(kitty)(.*)$"; initial_workspace_tracking = 1; - no_direct_scanout = false; }; cursor = { From b5a0dee3e882e4f00d8845397c056ffda6d46ef2 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 17 Aug 2024 16:50:04 +0200 Subject: [PATCH 071/330] merge --- base/common_hardware.nix | 3 + flake.lock | 74 +++++++++---------- flake.nix | 2 + hardware/spaceship/configuration.nix | 15 ++-- modules/programs/base_packages.nix | 13 +++- modules/programs/gpu.nix | 1 + modules/programs/greetd.nix | 2 +- override/streamdeck.nix | 106 --------------------------- override/streamdeck.patch | 18 ----- programs/default.nix | 1 + scripts/penguin2.sh | 2 +- 11 files changed, 63 insertions(+), 174 deletions(-) delete mode 100644 override/streamdeck.nix delete mode 100644 override/streamdeck.patch diff --git a/base/common_hardware.nix b/base/common_hardware.nix index a739a1c..35fa27e 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -12,6 +12,9 @@ in configurationLimit = 5; }; boot.loader.efi.canTouchEfiVariables = true; + boot.plymouth = { + enable = true; + }; # Enable networking networking.useDHCP = lib.mkDefault true; diff --git a/flake.lock b/flake.lock index 829a566..3753935 100644 --- a/flake.lock +++ b/flake.lock @@ -40,11 +40,11 @@ ] }, "locked": { - "lastModified": 1722347739, - "narHash": "sha256-rAoh+K6KG+b1DwSWtqRVocdojnH6nGk6q07mNltoUSM=", + "lastModified": 1723405438, + "narHash": "sha256-bpmC2m7OhlDvqgQZdZ2jBLyeIkq/Jld3X4bqRAxBSp8=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "7c3565f9bedc7cb601cc0baa14792247e4dc1d5a", + "rev": "9312aa28271c91e5d67ecb9def527b2bbcff0e66", "type": "github" }, "original": { @@ -218,11 +218,11 @@ "nixvim": "nixvim" }, "locked": { - "lastModified": 1722777725, - "narHash": "sha256-QQ1yP9rag8vslOJRXR8kL+KkrL/iAC6/vSfvorHicNQ=", + "lastModified": 1723843436, + "narHash": "sha256-CBt5FNCMx+zYdvvDwwsiqoM66Ja6SMpxRR6z+VEwWN0=", "owner": "DashieTM", "repo": "DashVim", - "rev": "0169fb3fd02229ab19e23951d9caecf92ea4f265", + "rev": "abe622273c5627ccfdaf58a2664079147509e143", "type": "github" }, "original": { @@ -790,11 +790,11 @@ ] }, "locked": { - "lastModified": 1722630065, - "narHash": "sha256-QfM/9BMRkCmgWzrPDK+KbgJOUlSJnfX4OvsUupEUZvA=", + "lastModified": 1723399884, + "narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=", "owner": "nix-community", "repo": "home-manager", - "rev": "afc892db74d65042031a093adb6010c4c3378422", + "rev": "086f619dd991a4d355c07837448244029fc2d9ab", "type": "github" }, "original": { @@ -840,11 +840,11 @@ ] }, "locked": { - "lastModified": 1721330371, - "narHash": "sha256-aYlHTWylczLt6ERJyg6E66Y/XSCbVL7leVcRuJmVbpI=", + "lastModified": 1722623071, + "narHash": "sha256-sLADpVgebpCBFXkA1FlCXtvEPu1tdEsTfqK1hfeHySE=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "4493a972b48f9c3014befbbf381ed5fff91a65dc", + "rev": "912d56025f03d41b1ad29510c423757b4379eb1c", "type": "github" }, "original": { @@ -884,11 +884,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1723143710, - "narHash": "sha256-qbjodK+UgnQ2YdtKmuI1XEG84SZlid39rQo6Ap9NTqI=", + "lastModified": 1723824059, + "narHash": "sha256-3AebH/B40viTNVJpgiQkfptVe4aRTfyffa8rjUNB0pU=", "ref": "refs/heads/main", - "rev": "4b4971c06fb02df00a2bd20b6b47b5d0e7d799a7", - "revCount": 5071, + "rev": "c5feee1e357f3c3c59ebe406630601c627807963", + "revCount": 5098, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -967,11 +967,11 @@ ] }, "locked": { - "lastModified": 1722098849, - "narHash": "sha256-D3wIZlBNh7LuZ0NaoCpY/Pvu+xHxIVtSN+KkWZYvvVs=", + "lastModified": 1722869141, + "narHash": "sha256-0KU4qhyMp441qfwbirNg3+wbm489KnEjXOz2I/RbeFs=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "5dcbbc1e3de40b2cecfd2007434d86e924468f1f", + "rev": "0252fd13e78e60fb0da512a212e56007515a49f7", "type": "github" }, "original": { @@ -1368,11 +1368,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1722185531, - "narHash": "sha256-veKR07psFoJjINLC8RK4DiLniGGMgF3QMlS4tb74S6k=", + "lastModified": 1723637854, + "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "52ec9ac3b12395ad677e8b62106f0b98c1f8569d", + "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", "type": "github" }, "original": { @@ -1414,11 +1414,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1722630782, - "narHash": "sha256-hMyG9/WlUi0Ho9VkRrrez7SeNlDzLxalm9FwY7n/Noo=", + "lastModified": 1723637854, + "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "d04953086551086b44b6f3c6b7eeb26294f207da", + "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", "type": "github" }, "original": { @@ -1488,11 +1488,11 @@ }, "nur": { "locked": { - "lastModified": 1722801783, - "narHash": "sha256-A6xMNsSzYPeYABqUkXXpoxcefo0v8LIMGvETSJLaxkg=", + "lastModified": 1723905880, + "narHash": "sha256-j9xPPY4sVVmdt6n9q4/bH2IHYnzFJ96rWwBUVF9puPM=", "owner": "nix-community", "repo": "nur", - "rev": "161e94cdfcaf37a3418992abdef5b2537e5ac4ce", + "rev": "55a2281172b763189cfef53d02e843851cccc51a", "type": "github" }, "original": { @@ -1829,11 +1829,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1722114803, - "narHash": "sha256-s6YhI8UHwQvO4cIFLwl1wZ1eS5Cuuw7ld2VzUchdFP0=", + "lastModified": 1723501126, + "narHash": "sha256-N9IcHgj/p1+2Pvk8P4Zc1bfrMwld5PcosVA0nL6IGdE=", "owner": "Mic92", "repo": "sops-nix", - "rev": "eb34eb588132d653e4c4925d862f1e5a227cc2ab", + "rev": "be0eec2d27563590194a9206f551a6f73d52fa34", "type": "github" }, "original": { @@ -1844,11 +1844,11 @@ }, "stable": { "locked": { - "lastModified": 1722651103, - "narHash": "sha256-IRiJA0NVAoyaZeKZluwfb2DoTpBAj+FLI0KfybBeDU0=", + "lastModified": 1723688146, + "narHash": "sha256-sqLwJcHYeWLOeP/XoLwAtYjr01TISlkOfz+NG82pbdg=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "a633d89c6dc9a2a8aae11813a62d7c58b2c0cc51", + "rev": "c3d4ac725177c030b1e289015989da2ad9d56af0", "type": "github" }, "original": { @@ -1873,11 +1873,11 @@ "nixpkgs": "nixpkgs_22" }, "locked": { - "lastModified": 1722295291, - "narHash": "sha256-3XpT9GMw50NCGT1Gd2YAwEjrEcFtDqnuQ7sRUcuU/Pc=", + "lastModified": 1723834469, + "narHash": "sha256-PkJTr9DWBQcR5Ru1fJpG80dtw0MLSxAZlKnhHHFAGIA=", "owner": "danth", "repo": "stylix", - "rev": "feb2973dfa8232c07efbd2b48f11a5cfa2276570", + "rev": "6858d08ed012bc6491cc92c13142104e56badf31", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 2f7bfe3..08c6cba 100644 --- a/flake.nix +++ b/flake.nix @@ -89,11 +89,13 @@ extra-substituters = [ "https://hyprland.cachix.org" "https://anyrun.cachix.org" + "https://cache.garnix.io" ]; extra-trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" + "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" ]; }; } diff --git a/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix index da022bf..b9d9af7 100644 --- a/hardware/spaceship/configuration.nix +++ b/hardware/spaceship/configuration.nix @@ -10,7 +10,7 @@ in # config variables conf = { monitor = "DP-1"; - streamdeck.enable = true; + streamdeck.enable = false; hostname = "spaceship"; }; mods = { @@ -23,8 +23,8 @@ in # default "DP-2,2560x1440@165,0x0,1" "DP-1,3440x1440@180,2560x0,1,vrr,0" - "HDMI-A-1,1920x1200@60,6000x0,1" - "HDMI-A-1,transform,1" + "DP-3,1920x1080@144,6000x0,1" + "DP-3,transform,1" # all others ",highrr,auto,1" @@ -46,21 +46,21 @@ in "7,monitor:DP-2" # monitor right - "3,monitor:HDMI-A-1, default:true" + "3,monitor:DP-3, default:true" ]; hyprpaper.config = '' #load preload = /home/${username}/Pictures/backgrounds/shinobu_2k.jpg preload = /home/${username}/Pictures/backgrounds/shino_wide.png - preload = /home/${username}/Pictures/backgrounds/shinobu_1200.jpg + preload = /home/${username}/Pictures/backgrounds/shinobu_1080.jpg #set wallpaper = DP-2,/home/${username}/Pictures/backgrounds/shinobu_2k.jpg wallpaper = DP-1,/home/${username}/Pictures/backgrounds/shino_wide.png - wallpaper = HDMI-A-1,/home/${username}/Pictures/backgrounds/shinobu_1200.jpg + wallpaper = DP-3,/home/${username}/Pictures/backgrounds/shinobu_1080.jpg splash = true ''; - extra_autostart = [ "streamdeck -n" ]; + extra_autostart = [ "flatpak run com.core447.StreamController -b" ]; }; extraDrives = [ { @@ -82,6 +82,7 @@ in xone.enable = true; amdgpu.enable = true; piper.enable = true; + flatpak.additional_packages = [ "com.core447.StreamController" ]; vapi = { enable = true; rocm.enable = true; diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index 56a0b8d..859b2f6 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -54,9 +54,10 @@ kdePackages.breeze-icons seahorse upower - (lib.mkIf config.conf.streamdeck.enable (callPackage - ../../override/streamdeck.nix - { })) + thunderbird + podman-tui + podman-compose + dive ]; gtk.iconCache.enable = false; @@ -65,7 +66,11 @@ cantarell-fonts ]; - virtualisation.docker.enable = true; + virtualisation.podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; services.upower.enable = true; services.dbus.enable = true; diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index 94e872a..e875745 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -46,6 +46,7 @@ base_packages = [ pkgs.libvdpau-va-gl pkgs.vaapiVdpau + pkgs.mesa.drivers ]; rocm_packages = [ pkgs.rocmPackages.clr.icd diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index b5ae800..a565805 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -77,7 +77,7 @@ 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=,disable input { kb_layout = ${config.mods.xkb.layout} diff --git a/override/streamdeck.nix b/override/streamdeck.nix deleted file mode 100644 index 705155f..0000000 --- a/override/streamdeck.nix +++ /dev/null @@ -1,106 +0,0 @@ -{ lib -, pkgs -, python3Packages -, fetchFromGitHub -, writeText -, makeDesktopItem -}: - -python3Packages.buildPythonApplication rec { - pname = "streamdeck-ui"; - version = "4.1.2"; - - src = fetchFromGitHub { - repo = "streamdeck-linux-gui"; - owner = "streamdeck-linux-gui"; - rev = "v${version}"; - sha256 = "sha256-CSsFPGnKVQUCND6YOA9kfO41KS85C57YL9LcrWlQRKo="; - }; - - patches = [ - # nixpkgs has a newer pillow version - ./streamdeck.patch - ]; - - desktopItems = - let - common = { - name = "streamdeck-ui"; - desktopName = "Stream Deck UI"; - icon = "streamdeck-ui"; - exec = "streamdeck"; - comment = "UI for the Elgato Stream Deck"; - categories = [ "Utility" ]; - }; - in - builtins.map makeDesktopItem [ - common - (common // { - name = "${common.name}-noui"; - exec = "${common.exec} --no-ui"; - noDisplay = true; - }) - ]; - - postInstall = - let - udevRules = '' - SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", TAG+="uaccess" - ''; - in - '' - mkdir -p $out/lib/systemd/user - substitute scripts/streamdeck.service $out/lib/systemd/user/streamdeck.service \ - --replace '' $out/bin/streamdeck - - mkdir -p "$out/etc/udev/rules.d" - cp ${writeText "70-streamdeck.rules" udevRules} $out/etc/udev/rules.d/70-streamdeck.rules - - mkdir -p "$out/share/pixmaps" - cp streamdeck_ui/logo.png $out/share/pixmaps/streamdeck-ui.png - ''; - - dontWrapQtApps = true; - dontWrapGApps = true; - makeWrapperArgs = [ "\${qtWrapperArgs[@]}" "\${gappsWrapperArgs[@]}" ]; - - format = "pyproject"; - - nativeBuildInputs = [ - pkgs.python3Packages.poetry-core - pkgs.copyDesktopItems - pkgs.qt6.wrapQtAppsHook - pkgs.wrapGAppsHook - ]; - - propagatedBuildInputs = with pkgs.python3Packages; [ - importlib-metadata - setuptools - filetype - cairosvg - pillow - pynput - pyside6 - streamdeck - xlib - ] ++ lib.optionals stdenv.isLinux [ - pkgs.qt6.qtwayland - ]; - - nativeCheckInputs = [ - pkgs.xvfb-run - pkgs.python3Packages.pytest - ]; - - # checkPhase = '' - # xvfb-run pytest tests - # ''; - - meta = with lib; { - description = "Linux compatible UI for the Elgato Stream Deck"; - homepage = "https://streamdeck-linux-gui.github.io/streamdeck-linux-gui/"; - license = licenses.mit; - mainProgram = "streamdeck"; - maintainers = with maintainers; [ majiir ]; - }; -} diff --git a/override/streamdeck.patch b/override/streamdeck.patch deleted file mode 100644 index 3c8cf05..0000000 --- a/override/streamdeck.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/pyproject.toml b/pyproject.toml -index 54a8c19..0b95fb3 100644 ---- a/pyproject.toml -+++ b/pyproject.toml -@@ -14,11 +14,11 @@ packages = [ - [tool.poetry.dependencies] - python = ">=3.8,<3.13" - streamdeck = "^0.9.5" --pillow = "10.2.0" -+pillow = "^10.2.0" - pyside6 = "^6.4.2" - CairoSVG = "^2.5.2" - filetype = "^1.0.10" --importlib-metadata = "^6.8.0" -+importlib-metadata = "^7.0.0" - evdev = "^1.6.1" - - [tool.poetry.group.docs.dependencies] diff --git a/programs/default.nix b/programs/default.nix index 355d768..fe75e1f 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -25,6 +25,7 @@ in ]; }; home-manager.useGlobalPkgs = true; + # home-manager.backupFileExtension = "backup"; home-manager.useUserPackages = true; home-manager.extraSpecialArgs = { inherit inputs; diff --git a/scripts/penguin2.sh b/scripts/penguin2.sh index c256142..7503221 100644 --- a/scripts/penguin2.sh +++ b/scripts/penguin2.sh @@ -1,3 +1,3 @@ -echo "Are you tired about ads on your operating system? About forced telemetry? About arbitrary intallation requirements like online accounts or forced hardware upgrades? +echo "Are you tired about ads on your operating system? About forced telemetry? About arbitrary installation requirements like online accounts or forced hardware upgrades? Fear not penguin is for you, free of charge and free to change. Penguin does not control you, you control penguin. Don't delay, install penguin today: https://distrochooser.de/" | wl-copy From bd5a2e3ec5e1e0f0f647bbb9bf3eae14c39b3e93 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 17 Aug 2024 16:53:33 +0200 Subject: [PATCH 072/330] Add new streamdeck config --- penguin.json | 826 ++++++++++ streamdeck_ui_export.json | 3184 ------------------------------------- 2 files changed, 826 insertions(+), 3184 deletions(-) create mode 100644 penguin.json delete mode 100644 streamdeck_ui_export.json diff --git a/penguin.json b/penguin.json new file mode 100644 index 0000000..6a2b06c --- /dev/null +++ b/penguin.json @@ -0,0 +1,826 @@ +{ + "brightness": { + "value": 75, + "overwrite": true + }, + "background": { + "overwrite": false + }, + "auto-change": { + "enable": true, + "wm_class": "", + "title": "" + }, + "keys": { + "4x2": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/Assets/AssetManager/Assets/SmartSelect_20220307-191307_Samsung Internet.jpg", + "loop": true, + "fps": 30 + }, + "actions": [ + { + "id": "com_core447_OSPlugin::RunCommand", + "settings": { + "command": "sh /home/dashie/gits/dotFiles/scripts/penguin2.sh" + } + } + ], + "image-control-action": null, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "3x2": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/Assets/AssetManager/Assets/SmartSelect_20220307-191307_Samsung Internet.jpg", + "loop": true, + "fps": 30 + }, + "actions": [ + { + "id": "com_core447_OSPlugin::RunCommand", + "settings": { + "command": "sh /home/dashie/gits/dotFiles/scripts/penguin1.sh" + } + } + ], + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "2x2": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_up-inv.png", + "loop": true, + "fps": 30 + }, + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "0x2": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_off-inv.png", + "loop": true, + "fps": 30 + }, + "actions": [ + { + "id": "com_core447_OSPlugin::RunCommand", + "settings": {} + } + ], + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "0x1": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_down-inv.png", + "loop": true, + "fps": 30 + }, + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "1x1": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_up-inv.png", + "loop": true, + "fps": 30 + }, + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "3x0": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/play_arrow-inv.png", + "loop": true, + "fps": 30 + }, + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "3x1": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/play_arrow-inv.png", + "loop": true, + "fps": 30 + }, + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "4x1": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/skip_next-inv.png", + "loop": true, + "fps": 30 + }, + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "4x0": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/skip_next-inv.png", + "loop": true, + "fps": 30 + }, + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "1x0": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_up-inv.png", + "loop": true, + "fps": 30 + }, + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "0x0": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_down-inv.png", + "loop": true, + "fps": 30 + }, + "actions": [ + { + "id": "com_core447_OSPlugin::RunCommand", + "settings": { + "command": "playerctl " + } + } + ], + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "1x2": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_down-inv.png", + "loop": true, + "fps": 30 + }, + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "2x1": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/skip_previous-inv.png", + "loop": true, + "fps": 30 + }, + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + }, + "2x0": { + "states": { + "0": { + "labels": { + "top": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "center": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + }, + "bottom": { + "text": "", + "color": [ + 255, + 255, + 255, + 255 + ], + "font-family": "", + "font-size": 15 + } + }, + "media": { + "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/skip_previous-inv.png", + "loop": true, + "fps": 30 + }, + "image-control-action": 0, + "label-control-actions": [ + 0, + 0, + 0 + ] + } + } + } + } +} \ No newline at end of file diff --git a/streamdeck_ui_export.json b/streamdeck_ui_export.json deleted file mode 100644 index 5ef6493..0000000 --- a/streamdeck_ui_export.json +++ /dev/null @@ -1,3184 +0,0 @@ -{ - "state": { - "AL01H1A05148": { - "buttons": { - "0": { - "0": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Downloads/volume-1.svg", - "keys": "", - "write": "", - "command": "sh /home/dashie/.config/scripts/audio_control.sh ncspot -5%", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "1": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Downloads/volume-2.svg", - "keys": "", - "write": "", - "command": "sh /home/dashie/.config/scripts/audio_control.sh ncspot +5%", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "2": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Downloads/skip-back.svg", - "keys": "", - "write": "", - "command": "playerctl previous --player=ncspot", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "3": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Downloads/play.svg", - "keys": "", - "write": "", - "command": "playerctl play-pause --player=ncspot", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "4": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Downloads/skip-forward.svg", - "keys": "", - "write": "", - "command": "playerctl next --player=ncspot", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "5": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Downloads/volume-1.svg", - "keys": "", - "write": "", - "command": "sh /home/dashie/.config/scripts/audio_control.sh firefox -5%", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "6": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Downloads/volume-2.svg", - "keys": "", - "write": "", - "command": "sh /home/dashie/.config/scripts/audio_control.sh firefox +5%", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "7": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Downloads/skip-back.svg", - "keys": "", - "write": "", - "command": "playerctl previous --player=firefox", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "8": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Downloads/play.svg", - "keys": "", - "write": "", - "command": "playerctl play-pause --player=firefox", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "9": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Downloads/skip-forward.svg", - "keys": "", - "write": "", - "command": "playerctl next --player=firefox", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "10": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Downloads/volume-x.svg", - "keys": "", - "write": "", - "command": "sh /home/dashie/.config/scripts/audio_control.sh mute", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "11": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Downloads/volume-1.svg", - "keys": "", - "write": "", - "command": "sh /home/dashie/.config/scripts/audio_control.sh sink -5%", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "12": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Downloads/volume-2.svg", - "keys": "", - "write": "", - "command": "sh /home/dashie/.config/scripts/audio_control.sh sink +5%", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "13": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Pictures/random/Birblux/SmartSelect_20220307-191307_Samsung Internet.jpg", - "keys": "", - "write": "", - "command": "sh /home/dashie/.config/scripts/penguin1.sh", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "14": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "/home/dashie/Pictures/random/Birblux/SmartSelect_20220307-191307_Samsung Internet.jpg", - "keys": "", - "write": "", - "command": "sh /home/dashie/.config/scripts/penguin2.sh", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - } - }, - "1": { - "0": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "1": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "2": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "3": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "4": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "5": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "6": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "7": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "8": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "9": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "10": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "11": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "12": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "13": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "14": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - } - }, - "2": { - "0": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "1": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "2": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "3": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "4": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "5": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "6": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "7": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "8": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "9": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "10": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "11": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "12": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "13": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "14": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - } - }, - "3": { - "0": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "1": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "2": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "3": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "4": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "5": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "6": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "7": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "8": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "9": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "10": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "11": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "12": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "13": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "14": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - } - }, - "4": { - "0": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "1": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "2": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "3": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "4": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "5": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "6": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "7": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "8": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "9": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "10": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "11": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "12": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "13": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "14": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - } - }, - "5": { - "0": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "1": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "2": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "3": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "4": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "5": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "6": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "7": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "8": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "9": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "10": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "11": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "12": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "13": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "14": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - } - }, - "6": { - "0": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "1": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "2": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "3": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "4": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "5": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "6": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "7": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "8": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "9": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "10": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "11": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "12": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "13": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "14": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - } - }, - "7": { - "0": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "1": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "2": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "3": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "4": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "5": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "6": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "7": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "8": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "9": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "10": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "11": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "12": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "13": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "14": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - } - }, - "8": { - "0": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "1": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "2": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "3": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "4": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "5": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "6": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "7": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "8": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "9": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "10": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "11": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "12": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "13": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "14": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - } - }, - "9": { - "0": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "1": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "2": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "3": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "4": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "5": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "6": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "7": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "8": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "9": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "10": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "11": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "12": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "13": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - }, - "14": { - "state": 0, - "states": { - "0": { - "text": "", - "icon": "", - "keys": "", - "write": "", - "command": "", - "brightness_change": 0, - "switch_page": 0, - "switch_state": 0, - "text_vertical_align": "", - "text_horizontal_align": "", - "font": "", - "font_color": "", - "font_size": 0, - "background_color": "" - } - } - } - } - }, - "display_timeout": 0, - "brightness": 99, - "brightness_dimmed": 0, - "rotation": 0, - "page": 0 - } - }, - "streamdeck_ui_version": 2 -} \ No newline at end of file From 7730cbef59c0141e92372050ac3cb65ef8fa40bc Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 19 Aug 2024 20:52:00 +0200 Subject: [PATCH 073/330] Change starship prompt, update inputs, add nvidia module --- base/env.nix | 2 -- flake.lock | 32 ++++++++++++------------ flake.nix | 2 +- hardware/spaceship/configuration.nix | 1 + hm/default.nix | 37 ++++++++++++++++++++++++++++ modules/programs/base_packages.nix | 11 ++++++--- modules/programs/coding.nix | 9 +++++++ modules/programs/gpu.nix | 21 +++++++++++++++- modules/programs/starship.nix | 3 ++- 9 files changed, 93 insertions(+), 25 deletions(-) create mode 100644 hm/default.nix diff --git a/base/env.nix b/base/env.nix index d8cf336..06be546 100644 --- a/base/env.nix +++ b/base/env.nix @@ -11,7 +11,5 @@ NIXOS_OZONE_WL = "1"; GOPATH = "$HOME/.go"; FLAKE = config.conf.nix_path; - # don't ask... marksman somehow requires this - DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = 1; }; } diff --git a/flake.lock b/flake.lock index 3753935..1a1242b 100644 --- a/flake.lock +++ b/flake.lock @@ -40,11 +40,11 @@ ] }, "locked": { - "lastModified": 1723405438, - "narHash": "sha256-bpmC2m7OhlDvqgQZdZ2jBLyeIkq/Jld3X4bqRAxBSp8=", + "lastModified": 1723920171, + "narHash": "sha256-dVCMrAe+D/5S91erhwQj2DSzHOVzAanWqoy+vPWB9DY=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "9312aa28271c91e5d67ecb9def527b2bbcff0e66", + "rev": "71d49670fe246cdaff4860b0effba0ab9f163b72", "type": "github" }, "original": { @@ -218,11 +218,11 @@ "nixvim": "nixvim" }, "locked": { - "lastModified": 1723843436, - "narHash": "sha256-CBt5FNCMx+zYdvvDwwsiqoM66Ja6SMpxRR6z+VEwWN0=", + "lastModified": 1724091718, + "narHash": "sha256-v5gx+y+cVEk1e0QsVVVhoINd3L+y2UW9XRr7/6jjORo=", "owner": "DashieTM", "repo": "DashVim", - "rev": "abe622273c5627ccfdaf58a2664079147509e143", + "rev": "b319fb44c1095a42c50ec1297f051ce6311c21fa", "type": "github" }, "original": { @@ -790,11 +790,11 @@ ] }, "locked": { - "lastModified": 1723399884, - "narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=", + "lastModified": 1723986931, + "narHash": "sha256-Fy+KEvDQ+Hc8lJAV3t6leXhZJ2ncU5/esxkgt3b8DEY=", "owner": "nix-community", "repo": "home-manager", - "rev": "086f619dd991a4d355c07837448244029fc2d9ab", + "rev": "2598861031b78aadb4da7269df7ca9ddfc3e1671", "type": "github" }, "original": { @@ -884,11 +884,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1723824059, - "narHash": "sha256-3AebH/B40viTNVJpgiQkfptVe4aRTfyffa8rjUNB0pU=", + "lastModified": 1723969407, + "narHash": "sha256-COChiv/1EsfN0aVQcDBPXqNR/T5sUXtalsuO1RGvwcY=", "ref": "refs/heads/main", - "rev": "c5feee1e357f3c3c59ebe406630601c627807963", - "revCount": 5098, + "rev": "1006663b6eaa55149e9a21aa8a34e41c85eb08ca", + "revCount": 5103, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -1488,11 +1488,11 @@ }, "nur": { "locked": { - "lastModified": 1723905880, - "narHash": "sha256-j9xPPY4sVVmdt6n9q4/bH2IHYnzFJ96rWwBUVF9puPM=", + "lastModified": 1723992327, + "narHash": "sha256-w0DhauBqGC7zBlsm0i0IXVvhBGqBvsJPGnc5b9jffvA=", "owner": "nix-community", "repo": "nur", - "rev": "55a2281172b763189cfef53d02e843851cccc51a", + "rev": "adee26fc0c486560152c814b963ae27851eef658", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 08c6cba..c24ba8e 100644 --- a/flake.nix +++ b/flake.nix @@ -41,7 +41,7 @@ hyprdock.url = "github:DashieTM/hyprdock"; reset.url = "github:Xetibo/ReSet"; reset-plugins.url = "github:Xetibo/ReSet-Plugins"; - # nixvim.url = "github:nix-community/nixvim"; + dashvim = { url = "github:DashieTM/DashVim"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix index b9d9af7..3b32325 100644 --- a/hardware/spaceship/configuration.nix +++ b/hardware/spaceship/configuration.nix @@ -14,6 +14,7 @@ in hostname = "spaceship"; }; mods = { + coding = { jetbrains = true; }; gaming = { enable = true; }; diff --git a/hm/default.nix b/hm/default.nix new file mode 100644 index 0000000..614704c --- /dev/null +++ b/hm/default.nix @@ -0,0 +1,37 @@ +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/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index 859b2f6..ffc3021 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -66,10 +66,13 @@ cantarell-fonts ]; - virtualisation.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; diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 2e41854..d4ff2b1 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -17,6 +17,14 @@ Enables dashvim package. ''; }; + jetbrains = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Enables jetbrains toolbox. + ''; + }; }; }; @@ -26,6 +34,7 @@ colorscheme = config.mods.stylix.colorscheme; }; home.packages = with pkgs; [ + (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) #basics gitui gcc diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index e875745..d88aace 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -1,6 +1,14 @@ { lib, config, options, pkgs, ... }: { options.mods = { + nvidia.enable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables nvidia support. + ''; + }; amdgpu.enable = lib.mkOption { default = false; type = lib.types.bool; @@ -40,6 +48,7 @@ "amdgpu.ppfeaturemask=0xffffffff" ]; }; + hardware = { graphics = let @@ -60,5 +69,15 @@ (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/starship.nix b/modules/programs/starship.nix index 22134ca..3846138 100644 --- a/modules/programs/starship.nix +++ b/modules/programs/starship.nix @@ -65,9 +65,10 @@ truncation_symbol = "…/"; }; git_branch = { + always_show_remote = true; symbol = ""; style = "bg:#5256c3 fg:#${scheme.base05}"; - format = "[ ](bg:#5256c3 fg:prev_bg)[$symbol $branch ]($style)"; + format = "[ ](bg:#5256c3 fg:prev_bg)[$symbol ($remote_name )$branch ]($style)"; }; git_status = { staged = "+\${count} (fg:#C4A000)"; From c73cb37278a62be2a1fbbe136e6a47e7d83972b6 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 13:25:08 +0200 Subject: [PATCH 074/330] 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"; From 54df643d804e037a9d4fa8b01bbd96668b783e50 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 13:55:33 +0200 Subject: [PATCH 075/330] Move v4l2loopback to teams --- base/common_hardware.nix | 5 ----- modules/programs/teams.nix | 17 ++++++++++++++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 64c8cf4..f8d47c2 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -2,11 +2,6 @@ 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 = { diff --git a/modules/programs/teams.nix b/modules/programs/teams.nix index ad81ad9..515daed 100644 --- a/modules/programs/teams.nix +++ b/modules/programs/teams.nix @@ -9,9 +9,24 @@ in { description = "Enables teams via a chromium pwa (for the poor souls that have to use this for work)"; }; + loopback = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables loopback for screensharing -> teams sucks :)"; + }; }; config = lib.mkIf config.mods.teams.enable (lib.optionalAttrs (options ? home.packages) { home.packages = [ (callPackage ../../override/teams.nix { }) ]; - }); + } // (lib.optionalAttrs (options ? boot.kernelModules) { + boot = { + extraModulePackages = + [ pkgs.linuxKernel.packages.linux_xanmod_latest.v4l2loopback ]; + kernelModules = [ "v4l2loopback" ]; + extraModprobeConfig = '' + options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" + ''; + }; + })); } From c49948ad7bd7b6caeafec83151c625d02f2ed434 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 14:00:47 +0200 Subject: [PATCH 076/330] Use beta nvidia drivers --- hardware/marmo/configuration.nix | 1 + modules/programs/gpu.nix | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/hardware/marmo/configuration.nix b/hardware/marmo/configuration.nix index cec9127..e0ed8ef 100644 --- a/hardware/marmo/configuration.nix +++ b/hardware/marmo/configuration.nix @@ -4,6 +4,7 @@ conf = { monitor = "DP-1"; hostname = "marmo"; + cpu = "intel"; }; mods = { gaming = { diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index e3f651c..274b55f 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -66,7 +66,7 @@ # powerManagement.finegrained = true; open = true; nvidiaSettings = true; - package = config.boot.kernelPackages.nvidiaPackages.stable; + package = config.boot.kernelPackages.nvidiaPackages.beta; }; services.xserver.videoDrivers = [ "nvidia" ]; })); From 252fcce589b5cb8f75f5ed2d70e645cecec8bd71 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 14:41:42 +0200 Subject: [PATCH 077/330] Modularize drives further --- base/common_hardware.nix | 19 -------------- modules/programs/drives.nix | 49 +++++++++++++++++++++++++++++++++++-- 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index f8d47c2..724cf83 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -87,23 +87,4 @@ in { password = "firstlogin"; }; - 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."/home" = { - device = "/dev/disk/by-label/HOME"; - fsType = "btrfs"; - options = [ "noatime" "nodiratime" "discard" ]; - }; - - swapDevices = [{ device = "/dev/disk/by-label/SWAP"; }]; } diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix index 32f30c8..7772f51 100644 --- a/modules/programs/drives.nix +++ b/modules/programs/drives.nix @@ -26,8 +26,30 @@ let }; in { options.mods = { + useSwap = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use default drive config + ''; + }; + }; + defaultDrives = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use default drive config + ''; + }; + }; extraDrives = lib.mkOption { - default = [ ]; + default = [ + + ]; example = [{ name = "drive2"; drive = { @@ -49,6 +71,29 @@ in { fileSystems = builtins.listToAttrs (map ({ name, drive }: { name = "/" + name; value = drive; - }) config.mods.extraDrives); + }) config.mods.extraDrives) + // (lib.optionalAttrs config.mods.defaultDrives.enable) { + "/" = { + device = "/dev/disk/by-label/ROOT"; + fsType = "btrfs"; + options = [ "noatime" "nodiratime" "discard" ]; + }; + + "/boot" = { + device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; + }; + + "/home" = { + device = "/dev/disk/by-label/HOME"; + fsType = "btrfs"; + options = [ "noatime" "nodiratime" "discard" ]; + }; + }; + # TODO make this convert to choice of drives -> thanks to funny types this doesn't work... + swapDevices = lib.mkIf config.mods.useSwap.enable [{ + device = "/dev/disk/by-label/SWAP"; + }]; }); } From effb6e63971d7c5f867bf8853769804add84c64a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 18:05:37 +0200 Subject: [PATCH 078/330] extract hardware config --- .gitignore | 12 - flake.lock | 6 +- flake.nix | 20 +- hardware/marmo/configuration.nix | 33 -- hardware/overheating/configuration.nix | 50 --- hardware/overheating/dsdt.nix | 19 - hardware/overheating/firmware.nix | 16 - hardware/overheating/firmware/TAS2XXX38BB.bin | Bin 64504 -> 0 bytes .../overheating/firmware/TIAS2781RCA4.bin | Bin 2740 -> 0 bytes .../firmware/TIAS2781RCA4.bin.orig | Bin 2740 -> 0 bytes hardware/overheating/overheating.nix | 5 - hardware/overheating/ssdt6.aml | Bin 5404 -> 0 bytes hardware/server/configuration.nix | 342 ------------------ hardware/server/hardware-configuration.nix | 56 --- hardware/server/mautrix-discord.nix | 247 ------------- hardware/server/mautrix-whatsapp.nix | 247 ------------- hardware/spaceship/configuration.nix | 106 ------ lib/default.nix | 16 +- modules/conf.nix | 10 + modules/programs/home_packages.nix | 1 + programs/default.nix | 1 + programs/individual_configs/fish.nix | 2 +- 22 files changed, 31 insertions(+), 1158 deletions(-) delete mode 100644 .gitignore delete mode 100644 hardware/marmo/configuration.nix delete mode 100644 hardware/overheating/configuration.nix delete mode 100644 hardware/overheating/dsdt.nix delete mode 100644 hardware/overheating/firmware.nix delete mode 100644 hardware/overheating/firmware/TAS2XXX38BB.bin delete mode 100644 hardware/overheating/firmware/TIAS2781RCA4.bin delete mode 100644 hardware/overheating/firmware/TIAS2781RCA4.bin.orig delete mode 100644 hardware/overheating/overheating.nix delete mode 100644 hardware/overheating/ssdt6.aml delete mode 100644 hardware/server/configuration.nix delete mode 100644 hardware/server/hardware-configuration.nix delete mode 100644 hardware/server/mautrix-discord.nix delete mode 100644 hardware/server/mautrix-whatsapp.nix delete mode 100644 hardware/spaceship/configuration.nix diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e173d3f..0000000 --- a/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -/nvim/plugged/* -gtk-3.0/bookmarks -gtk-3.0/servers -gtk-4.0/servers -/fish/fish_variables -fish/fish_variables -fish/*.tmp.* -copyq/copyq.lock -copyq/copyq_geometry.* -copyq/copyq_tab* -nvim/lazy-lock.json -ncspot/*.cbor diff --git a/flake.lock b/flake.lock index 2481d6a..3633057 100644 --- a/flake.lock +++ b/flake.lock @@ -218,11 +218,11 @@ "nixvim": "nixvim" }, "locked": { - "lastModified": 1724498597, - "narHash": "sha256-rq3CS7CpkC5lLn/eDqmftyA2C7McUm+sYGUMpH2oJU4=", + "lastModified": 1724509876, + "narHash": "sha256-SvtppTW041MCVGmhKu8lsEbzVXwerLEIDcizdY0ZqEI=", "owner": "DashieTM", "repo": "DashVim", - "rev": "02e646467e4454633a7d248dfda7a7a7ecb4bf6b", + "rev": "309544615a01e9aa242ca71bff58f503273345ea", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index d9b1f91..4bab6f6 100644 --- a/flake.nix +++ b/flake.nix @@ -61,22 +61,12 @@ 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; - }; - modules = [ - inputs.sops-nix.nixosModules.sops - inputs.dashvim.nixosModules.dashvim - ./hardware/server/configuration.nix - ]; - }; - }; + dashNixLib = import ./lib { inherit inputs pkgs; }; + dashNixInputs = inputs; + stablePkgs = stable; + unstablePkgs = pkgs; + modules = ./modules; }; nixConfig = { diff --git a/hardware/marmo/configuration.nix b/hardware/marmo/configuration.nix deleted file mode 100644 index e0ed8ef..0000000 --- a/hardware/marmo/configuration.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ config, ... }: { - imports = [ ../../modules ]; - # variables for system - conf = { - monitor = "DP-1"; - hostname = "marmo"; - cpu = "intel"; - }; - mods = { - gaming = { - enable = true; - gpu_device = 1; - }; - stylix.colorscheme = "catppuccin-mocha"; - hyprland.monitor = [ - # default - "DP-1,1920x1080@144,0x0,1" - # all others - ",highrr,auto,1" - ]; - amdgpu.enable = true; - kde_connect.enable = true; - xone.enable = true; - greetd = { resolution = "3440x1440@180"; }; - nextcloud = { - synclist = [{ - name = "pw_sync"; - remote = "/PWs"; - local = "/home/${config.conf.username}/Music"; - }]; - }; - }; -} diff --git a/hardware/overheating/configuration.nix b/hardware/overheating/configuration.nix deleted file mode 100644 index 5ced1e6..0000000 --- a/hardware/overheating/configuration.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ config, ... }: { - 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"; - }]; - }; - mods = { - stylix.colorscheme = "catppuccin-mocha"; - hyprland = { - monitor = [ - # default - "eDP-1,2944x1840@90,0x0,2" - - # all others - ",highres,auto,1" - ]; - extra_autostart = [ "hyprdock --server" ]; - }; - amdgpu.enable = true; - kde_connect.enable = true; - bluetooth.enable = true; - acpid.enable = true; - greetd = { resolution = "3440x1440@180"; }; - nextcloud = { - synclist = [ - { - name = "document_sync"; - remote = "/Documents"; - local = "/home/${config.conf.username}/Documents"; - } - { - name = "picture_sync"; - remote = "/Pictures"; - local = "/home/${config.conf.username}/Pictures"; - } - { - name = "pw_sync"; - remote = "PWs"; - local = "/home/${config.conf.username}/Music"; - } - ]; - }; - }; -} diff --git a/hardware/overheating/dsdt.nix b/hardware/overheating/dsdt.nix deleted file mode 100644 index 8395d7c..0000000 --- a/hardware/overheating/dsdt.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ pkgs, ... }: -let - # credit to benley: https://github.com/benley/dotfiles/commit/325748c3a8553d55c9fab08654a77b252aa0fde7 - patched_ssdt = pkgs.stdenv.mkDerivation { - name = "patched_ssdt"; - src = ./.; - buildInputs = [ pkgs.libarchive ]; - installPhase = '' - mkdir -p kernel/firmware/acpi - cp ${./ssdt6.aml} kernel/firmware/acpi/ssdt6.aml - mkdir -p $out - echo kernel/firmware/acpi/ssdt6.aml | bsdcpio -v -o -H newc -R 0:0 > $out/lenotrolli-ssdt.img - ''; - }; - -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 deleted file mode 100644 index 8d9beed..0000000 --- a/hardware/overheating/firmware.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ pkgs, ... }: { - hardware.firmware = [ - ( - # lenovo is such a good manufacturer!!1!11! - # credit for the binary files: https://github.com/darinpp/yoga-slim-7 - pkgs.stdenv.mkDerivation { - name = "firmware-lenotrolli"; - src = ./firmware; - installPhase = '' - mkdir -p $out/lib/firmware - cp ${./firmware/TAS2XXX38BB.bin} $out/lib/firmware/TAS2XXX38BB.bin - cp ${./firmware/TIAS2781RCA4.bin} $out/lib/firmware/TIAS2781RCA4.bin - ''; - }) - ]; -} diff --git a/hardware/overheating/firmware/TAS2XXX38BB.bin b/hardware/overheating/firmware/TAS2XXX38BB.bin deleted file mode 100644 index d729b9771f31a9652f9e0096394109fc869c4405..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64504 zcmXptH8o;j`28ct@IW;KqZ|Q3!{Lfk9^p1B1>H z2zTU>A*FeldFcwi`6;Pnd7hDhpC77`6%@{ln;C@|7~~un7#Q3bm>48_7&#ai{yC^H z{9#}~-~b4liNTghT0kAzx3>7`h91JZUENoys9xM$lUM$Q^8Vn1W zE-+*<9biykI>Er)a*2hZOIj|mFt;3HVPtaPp2QTu?$Dye!oUEspM`^g z;lK77uo(v!7<&FQtYuRWM1-%JLk>u;?=SbHHdclWEo_S1Z6_Hvwq0ac-{#1$uH}>> zPs=4m&K4&{j<&-L+Zg`q$b-}~9pGSSbz*4b_@f}e!63lEUB2(K1MdqG=j6zHS3;_)PwSV^g zVSEpg@B7Oj*>ZqU7)gyPQvgE{R1G7O1FICnf2Kl^nNap3F#7-l6WD$>4u+PK4Dvjj zY8*@+3_F+{81h>VGsrXim&paIb71IW@?cIc;-6D2lFqMH}0#kni14GLpO@@|3jGPSr9atFtIDo>j0T!-3{~5M19bjN&QxIeUnFGd3 z4mX)J7zBF$GwfkHz`%eecO9grsaoDneiGk@bg9t1x`~EUGfYdW6Ii7Dh$Y9U$hoz$DKhpxHYz7IY1O~>I z7H)=?7HtNm2<}}>0Zi8!82T7n4uJfW$-s1g;Q*5dgE>eH?0-%UhL#hY3@xWX@+=HY z9^8jOX_Vo=t|G_|P~o`zYO5C#h~WM&2)f)qva&XZk3%q|G8(kBrr1f{AW1C zRLmgR639KfrG=M)DT9H9fuWD7<%B0g%PDSf9%e~k-~p#cP(B3tpNj)5&YaBtdR!b6{kEn;*cy&=Lend#s&I9t?5} z|9Lz>YCvh3=>WqHP&#aJVqxg}3yKd0Glu^%g+2edcY*Ea;Q+;>E(ibbzrGY*r8pJCg(VE+!AwLk$0AdBJuaV7r%K;X44h9`iJhOxHXp096M@s|?Cqt6sG>{$8e0GD$gCPnW z7amO4nUWbKm;x9~TD(}8T7p1oy2LM{xZBF7NyPvM?|Ourx6IXZhOFqR9X? zr?TfiO9R+`0S*SHWCqE81BRTwzYGN+HDG@_FxZ2`?u0i(%PDP!R!;_bP`$$N&tVsj zf(%E`e+GLHAH)XbPjK9MurM&N`~#O?Odbpem;xBW85p2^2c{3;JjF1Nq2&-K1Cs-* z0s|96NRJ=~1Jelxc?PIBDD0RV7_u1t>uv{y7c8!r9Egh}ko!RT7?>DJ7?^k%Kn;h~ zH9h+Ezqg4ruz0?y|DK}(ZC^0FJEF<(s)UV!;c0>+)0s18VB#P>FgA!r)ho@w!eh?B zz?lG&0^+)53=#)pkU^50 z7;gT##UOU@5(76#P;%x>2FaN-nZ5ED{>Sk#us^*35@isOwFlMTA`HwqApQpi1_ls* zz+h}_3=#mvEdvV&1G86Pj&4?4z6k>Zg9rlygSN4;u>b=D1NY3Cv$)QjISaO5ob@26 zt)+MK^+FI<^3m8^aqZ811_q`GH=Rw7EE^aYKxWj$`7v>r=Z4swJ-ws;-(Po-bN~HY zvIS%xliQXj9Kx-MApe0d*nU<)+-%5d z>Ano)j-Yj3tRU?5!utXUJ1hCl24U+M|1=Obo)%~b!rB*t{(!IwSIBV?mT?K21i}mq z4Eq@v82CWuGB7dZFtBlenGFpL3oHsypXU7SdvU2k$llrr5DtWm!l_YlwPI}&vnJZB~ebJnvwqmZC z%2^R#!W!ml-KxJD`naOm29A?dRrTAUWK?u7VISw~-TGVEcJE7(ihL!VnW7B+Oi_;RaCxCSmHp z94LWL3>04ZY5(_5n91M_wx5@S0mRP>iu9S!v3UuI4Uz-VFtJL}bE3_?Yo~(Dttkr1 zZhK|;no(p~Aq>OR!T2B=CRS57XLoaBvMY#&=>@StVqp9EI2b^Dm>dI-R{#v-6>~8H z ztkVYD&ksre|G&gafXzABk@aVFY6r-W|F8B&V>5?Ic6L2Ohy6vcIh>L=z-lirF#KP& zYBks$juJi$_QyYh#6e}%x7#{)Ah*EW!EkdIAA|PF7_j{U91I|HK=#PADr^8@<>!;_ zL3&}BG5E3izq?;AgXpUFd0L%&3wMFo#E5~+m7FCI*UYP~3xPu>C?D z46t|xiNWMxVz9ITqVb7=%101puA6=ZMAyHxn*zd~IS1E*FsQHvVFpkI0>exU6%4{0 z3}7*_{b>xycx#sy!`3b>R%y;Z$e8hamnFzt7zUXQ!yxlv7!;nBGiS~M_sc->1;U`TB)qI< zA&h2n?66`G;&H0~|8^Eg3}om3-Em(S7`S(U+72K+rsup5L(|G75DiT~J3(x4_=|Ed z{JZ-VLyj1++I{86Kz49h{}DjOU_XN#gM=ApwVE@=6zi@=5)buq6!4Zg&_Mf**ru9u~f7KeZZd7#BUWU|sT& zpY@R9V~}132FrSOu@WY>iQUUU`J934_1>Sm8N69uURuR0rW?jq@-mdcK!cHi!TK)) z`@=n8`^7mJ7?>V^XPW!9ncJuy|mw->jrQ3cWA#g<3+ z{8f&b8LKr{mrgA0QU2LsFukQhu3CdQ!H9uLEK#h4fz7<9m?go}ZJQJsN-aUTN%$9!-( z&%kh)fq^H8fq{E70|T270|SRG1B32%P&i>=P@2#MhY3^)RHAVog7lEMCowR9*i3U7 z7#KhjGZ+{^Vho}T3=BOC450oYLkOhZ3uc3QFq0Sx|E2#99g&Gc%4`N_o z+Q7iTU;>U4J&^q%b3tQL4D%QmK>bs6K0_7*16V#BYA?b_N?1$`8Vvd%`-wD!i9v@! z7UX5PdUgf|29W=l85r0-85r0T7OW5eRY|5G|ARaa_M;r6+=GUVG)Ol%_8{TPP;u?g zJO>8986a^`Is;)48-^kMK5$n7+&KY>L-Qc0ISk@5)c-ew_mx3$!rL~b9)!X6%Y*y~ zi$_*51_o9O1_o9G1_o9s21sOsy2Nm^7#LV5K`?^>1E|9awgFu9fmoolz{mjVOoJwH zAo@Y#Ff$549B7&WrGg3u1(5yVZZ{(X1Jgnjc}S58vik&756FCw5|9`OLxT#O20?sK z_Ge^ZV26o=!W*QX3FL1E2KG!4hk*e!&IpPHh6)Bnu>Bx)jL`w;<22POoJQ*0cK;r^u zq3!~y1*Jid+e|?mjByoE9#;n04{+8dYjX6x2TROLhr| zi+Cm+6_B;pp|k{Ns#^8VEe%?rxO7xi?@N}go#0bK?h_%GpL*c)s+w@FfuSQ zFfxI}m>4%R{$pTJXklPrNE)3_9-U7folhQ}Pad65W?&edPad659-U8SVL+erADvGg zolgcgB1h+wSr|s=lfg*=L_qtXASN8+69dhUf;wa5%)f*CwWIUNqw~q2LHE)5WCm<= z$JoS1=acQgbJd_ZW!PLYhz5-)!7!-s8l6uDg#rYF=8;F|lSk*1LG#M6Ic9MEJ35~{ zI-ktIFgl+MT{jAy{}`Q5hRjQk&L@K>nMdc7L2LCv80&id(fQ;=*qrj{eDdggGIX64 zbbcAjx~suHpUlL-0a{iirRd0@z{w;9-gCjg!yxdP2~;aEGB60VK*WR@IJg)bK(o*c z4C0`DS1b$+QVa}9W*y*NpbYYi3=9f-5Va-@Yp0 z!!#xaMh12UhGGr|hSCQN4CM?A3{?sYjN&I47!?^97&Rd38R5&_L1r^DFuH=oB^X!) z7;x<)0=u2X0Mv;B?L`q`U~vGo4KVf)fz`2!Fo5;~LD-;ac}7r}1Te5_Fi?Fz5NPiU zJ@)~D_uWAD+JODXp#k1!17>r1fHOUW9RU$%U|?q4%&0WFCSi1s`{*8b$k_p-d)yfq zM%N^au1Of(<375_9dxe4=$eGlJ?^0W?I1k5$9-_^ac>mlv#1aJDA*Vpy$>}1U;AW1 zJ~?}~LHo2p7}SA+VUT$sHrBn`puX`C+~ZEI@B+`tjP7wC-Q(W=HW0MO2eiK(glV(K zeWT^*9(T}&A0!Mae+cbym;7ABiiAno;|?nOia~p-K>LQp4(2c#-JT5I<8B~(fdPa; z_Jj7g8^~U$z5U{BbNhA`*#349J-Wvo#~%0CwSRw{nVZJ={l6Nsxn(r7`>kuBumZ>TGP%m zN}gQ^%7>u(3Pi&&XwMgDFF9zxI;DHu)j{b2%N}zZkS{Z*-44cs?CGT`;=Goq=I=k2~lP6wo<>pmxvb9{15b z?$kR=5VSXZbdNi+XTgB--(cS3j%!WAWUOlvoFMBAP}U?gj;=`<@oN%T7&kLM99@$z zx+YN85o#G&)pwAcOP^I!sxmC;JYS9*CdRtNdT=!0O8R!38QNghVr@l zqiYgI&)pw-=k9COjIK#QT8{uaU=%bqM`%sLf*YNzNSKs0383`|APhQlAA}jzk7+>G zB>2o`Fz}fTo)ZVJN${Cnd+bzA^G1ugptT4vJXF>sfadFwF=TxJbcPN}QT3bz=lk(L zK6vpmE;9ea(#sjbvSiXkh@F=8>@Evr*{=V(315@2%lSLYtDmo!McKsIN^8C{=xZ-v zV6e$YU6UYC#FTYJo8c{EIcOaM$jKlYhN-zGL8a=U2i9}<1;4X6bufC#I7W+5eN6(R z)Jg^hw^a;GhgL9%R6PXwkJxkf8Nqi)VBYHhK6jtzpzr9KgwZt#qiYgSj%XiUlK@$Z z04iochfsr#F&kZzFuEoIlper$?10-nqiYgI*CdRtNdTR-52`#sWh96VT3a!C?mp_8 z1TFCXchETr*w-YuU|EweYjjP*h+mVy%D9;^Y;;Y+=$eGlH3_3@5=Pe~jIK#wy1_WQ zCSi0<0s~V3!|0j>CI%4(=Fv3?p!EnKJh~=fbWOtOnuP5M;IX;Ua}q|+Nub9$32aTz zN7p2fz9xaCI6V~^ld>iOG*1q~p!EnK%&7Qa4R}q0kzh9i2!qx{fYu}!33k_3ypL>g zy{!yej{u@a*CgOLCxP*Y>`#TjJ&bFf&t?r4>1WNG#|92(2FrSOx!z-JbFW6i*Cg!R zJ(=b8`Af_q26}9z&tEba%HL;Tu>8Ql{%{Yt`~{zrV6cEG>p~dAxBb?jbqJuz6A%r< z)LfIG%w=1MZB2r#rMsWg3Y{2f^(AscW=(?lnS-Ni5*jym2i%usy#9g()isoeeO0^zH`mxh$YL{;kk51azI+b}(BZ zdMg71%P(-dPZM+(Jwq4+0|OTW1EV?v1LHmh29EilYy21(7!ETq@B}e1aBpT{U=w0s z;IL(2&;^+RE}XCvAZxe}fwLS^d7r6Z61eZS`_kb}-J%}-SKJNejIKvGTKu}Ccc!9%zbli7z+?O8XzN{PA zN5_3hANOUI=KO<P0l8J#M zB?WW=9lRf`gvgCxmLmfLBdF~u1InHZj0|iHjOJDhe|dQs{<0lpV3d3SWnX1rU~pw% zV60?dU;r5i>YcHmsQt?ZQX|a3z*t78O*|R3P3$yS+r-p5Zvb>(1PFse97@32jH7o( zEETA4St`(|u6(%ehKP2P&*)kRaG!vWW3)|7mp1X}oe`kXN(RvA1`LD7Bnh3*fOKC3 z=2HYzYIi+Z_gm;Kv}EXY|g9^9;G%RSXQ> z=Y^NmEM(w%y_bP^SsMe}z1S99|44&- zUpAmJI4kPzsi{kq%s@13JuirjE>^N$;c@HhI$uy9ZV0uBRltFOAe>2P6T1`9CKhF2 zV3a4ZP3$(>CLV1QkB$=?zOJd8v%9%5*%e$SjkbyD(GY4AW#z1PD7P5W2|9dV32{VL#F*2WtfvdG`Rc*F_19HVxaj*9BY)3j0Mk^f%pxb z?*!_LnyxqU?0s8bCinq_n@!^QY7XuC+ZOiDu;%o_Paq6Z3&VKb1hStC-1mbihuZ}g zfZh9wEPy1&0$yOlz<_N{H?kIN?f|#*xFPd_$ZA1sZ0boBBNSd>`*}DRKw$>LAbVk$ zRJ&mMKr}wRpzz91`@eU>Oa^DL{k$9uAbws@q|bbg%}YRRkQ|7HiB*c86K(EYI~8PZ zO;J#G+pE$0GKSuL86#wka@g+OpfrxYUIH}k48kP0vp=f`upnV#+u5MJ0>hv-HV8AS z?)3nlO<_1YmjQ%980 zj6wbel|#rFv<_o*jq>nWqs;iaRh~KfP|oPt6hmY^254n5gB>VK(qpZ%83O|s-nKE? zx(tffDuX-*!`R9nlEpw}^Jv?c$79>nj+n7pgl|k*%5#2T(U8_vm7&HymDudg`O4UB2ZQ~)= zHm1j#<Kv+$8;`D8CarBugEh{*Wv-+BP0-8;`E30B5QH!@X@hQr0e0xoyni-Es^WQ`9!5(tRHzzHL0Z ec6o5LjT;X<7;PI5xwbJ)*D!-CQwE0rga7~n^)Oig diff --git a/hardware/overheating/firmware/TIAS2781RCA4.bin b/hardware/overheating/firmware/TIAS2781RCA4.bin deleted file mode 100644 index 481d133059a6a44a225e085ffe7b37ff6a35bde5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2740 zcmZQz;M%f`rJ|RCfsvJgfsrxQDRes{0|N^qBO@aN1h6nLFfD;##uNqyrY8{LkwYd` z78ENKrRL_Br79%mCFbO(E2Jl8=8+Nr9E>cC9~c-IDi|0TxEL52SQr@ijxaFrJ1{WB zNHQ=a2r#fP7%(t!$uTf8Ff%alGBPlTIWRDapI~5OU}0b}0NKR|W^+h@*bEGe42%pM zG7Jzg4F(60C`c`r2Z#j`=Zb)cgVZuGF)%VS@-Z+la4!wCRV-GCeb diff --git a/hardware/overheating/firmware/TIAS2781RCA4.bin.orig b/hardware/overheating/firmware/TIAS2781RCA4.bin.orig deleted file mode 100644 index 8698e928e650cb56131767c6504791e1bbbc0007..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2740 zcmZQz;M%f`rJ|RCfsvJgfsrxQDRes{0|N^qBO@aN1h6nLFfD;##uNqyrY8{LkwYd` z78ENKrRL_Br79%mCFbO(E2Jl8=8+Nr9E>cC9~c-IDi|0TxEL52SQr@ijxaFrJ1{WB z++<)#5MW?oFkoQd(qmv`U}j+8Wn^Fwb6{W;Kf%Dnz{0>{0J4h_%;t~)u^AW`85kKj zWEdb~8Vn8~QIJ|L4-g9?&J_U>2dQOXVqj!u!8je>Oz&5|-pbW@Wv@{3Z_Qj1dal2dhybMi~TsRxoO z@R1zMER2hh(kL@Z8ik}!ElAo0rB4ACx}{OV?vkRlyRhXGM#Ao*d3a&XtAyP}^YFq} zUZfNkK+`A*sS-8Cg38fS1_lNV1_lOZa2W_HKOt$;ih+@V6<&5SfQmYP22eqWwcKN2 zB-tEnX@Hpwb8y5N$?m}x#-O?iHONTjfx`GR0|P?`0|NsOB#aqBwGt~NkI}W>Vq#!m r7Q-2bSn4FKVT(l_6AL4$exz0T4fi86>29J`y#{v^3+Zm6c{l+8r{#>Er6>ALbt#;2OZdz`(%Dz`)??7vdw%uAs2MFN#4lMlU|tDL%m2 z(}0aZG)A8V#&Zt{Fm-Va!xXjf3-fgat7V0$^$Bn`aCJ6_cXssgW&oLjA>-=o>yKT= z-O$7UmyD??P8oCTG9KP8PS|C9J)M2A%LMqix?q3ys+6=1S3@UC06*q_4V-B^)9IDP7YQ8ztd~>Mz z=1}v^q2`!F&9Q)*V*xeC!ibdtgOQ?C4Q1dLI=2=3`vxJyuXaF(K&;Vkdp#j7^Lj#C;h6WJx3=JUW85%&$Gcm_e4)KpM)Sbo_5O*6x)0r_eof%s|?YDs1ZvhDx zV+*ML7EtpnpyomSYitQM&l2Jv69W@)yqXwTaDw91#1LYxi3yB`=r=Ki_}j!3DsBp~ z*TfWJuZbzdUK29|4tCKPUlV6YIGeaZXftT|nnAXXA0hKQT zvWT*pBi_X|K!}GCD&iUtFCY-Zz!B^dVZs&45$qFS!YJVRF$PpXM>jcq3~&vI=ZN?4 zbm4XMb@4PXFtB9chjc+rSYY>gmGB;o=(RBjjVl%)q548etVR$0}+G5*1@%L@_tOjDd@ZQAiq1*w9cfI6O3%fq{z|Q_cvt zT!5KgxR0YBR($~$dZ5Y+EGLC-pSfO`yCYZ%!zt!^j!}+2U^y(>9GwHeQdqQkxHyL5 zl8f+gHUP`1V!8w*rx)ZA>ZBJC6k-Zig~jv;4`)NL9EPJT^gIJ_SZt{m;o)oq)`npu zSk4%aoCz*DKMzlcXRw&*=iv!)CL-p2LfrJ64Gatz7`d2*FoX@U3mah(!vZ5vJHyw+%z#%x z!Qa(a*D=^f7m~AG1N1;j6l@g?D%`k0?L!6zh9zA53v~%9H-IZ=5b6_6$(lWsAW8;?%-m^A`UKy7U+NsF?2CzSfB(l#L&eUt0Cr~(g&j0 z7_QhDhhj^xVn2}kK+SK41^ z8O*|J7_=&3SYQBB5B8WENIl47*eo~KgH#j@3&8Gm1N#o_UJw(96`(qTfdQL)%|S&x zsJ4c<*Ax_1VE3B37~?PuT!%s3YX(vecCQ(3_2Bvtq5;(FVORjt0AgXa09>(vS_%*k zg8E0$2mvv1Yca;|L9lTqpnM7rFHkoNW*jarTIxZnC~V;cmIH;?OkWdId3o$YzqYH5{F{EIKF*BsX^QD4< zYKnp`h)@j%lPO#bGZPq+l2cL{N)zD9VC4+Rm58DR#9Qdgw?H49U%8k-Jy32DI}BY0 z6$S0gD7^fCYzy zsVOcA^Cb)m-Lw`sN /mnt/dump3/sqdump.sql" - ]; - }; - - hardware.cpu.intel.updateMicrocode = true; - system.stateVersion = "24.05"; - - nix = { - settings = { experimental-features = "nix-command flakes"; }; - extraOptions = '' - !include ${config.sops.secrets.access.path} - ''; - }; - - sops = { - gnupg = { - home = "~/.gnupg"; - sshKeyPaths = [ ]; - }; - defaultSopsFile = ../../secrets/secrets.yaml; - secrets.access = { }; - }; -} diff --git a/hardware/server/hardware-configuration.nix b/hardware/server/hardware-configuration.nix deleted file mode 100644 index 660cf69..0000000 --- a/hardware/server/hardware-configuration.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ config, lib, modulesPath, ... }: { - imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - - 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."/var/lib/nextcloud" = { - device = "/dev/disk/by-label/nextcloud"; - 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/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" ]; - }; - - swapDevices = - [{ device = "/dev/disk/by-uuid/832dce11-b4c4-476c-ab28-bd98275a542c"; }]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = - lib.mkDefault config.hardware.enableRedistributableFirmware; -} diff --git a/hardware/server/mautrix-discord.nix b/hardware/server/mautrix-discord.nix deleted file mode 100644 index 90bbe0b..0000000 --- a/hardware/server/mautrix-discord.nix +++ /dev/null @@ -1,247 +0,0 @@ -# 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, ... }: -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; - settingsFormat = pkgs.formats.json { }; - appservicePort = 29334; - - # to be used with a list of lib.mkIf values - optOneOf = lib.lists.findFirst (value: value.condition) (lib.mkIf false null); - mkDefaults = lib.mapAttrsRecursive (n: v: lib.mkDefault v); - defaultConfig = { - homeserver.address = "http://localhost:8448"; - appservice = { - hostname = "[::]"; - port = appservicePort; - database.type = "sqlite3"; - database.uri = "file:${dataDir}/mautrix-discord.db?_txlock=immediate"; - id = "discord"; - bot = { - username = "discordbot"; - displayname = "Discord Bridge Bot"; - }; - as_token = ""; - hs_token = ""; - }; - bridge = { - username_template = "discord_{{.}}"; - displayname_template = - ''{{or .ProfileName .PhoneNumber "Unknown user"}}''; - double_puppet_server_map = { }; - login_shared_secret_map = { }; - command_prefix = "!discord"; - permissions."*" = "relay"; - relay.enabled = true; - }; - logging = { - min_level = "info"; - writers = lib.singleton { - type = "stdout"; - format = "pretty-colored"; - time_format = " "; - }; - }; - }; - -in { - options.services.mautrix-discord-dashie = { - enable = - lib.mkEnableOption "mautrix-discord, a Matrix-Discord puppeting bridge."; - - settings = lib.mkOption { - apply = lib.recursiveUpdate defaultConfig; - type = settingsFormat.type; - default = defaultConfig; - description = '' - {file}`config.yaml` configuration as a Nix attribute set. - Configuration options should match those described in - [example-config.yaml](https://github.com/mautrix/discord/blob/master/example-config.yaml). - Secret tokens should be specified using {option}`environmentFile` - instead of this world-readable attribute set. - ''; - example = { - appservice = { - database = { - type = "postgres"; - uri = "postgresql:///mautrix_discord?host=/run/postgresql"; - }; - id = "discord"; - ephemeral_events = false; - }; - bridge = { - history_sync = { request_full_sync = true; }; - private_chat_portal_meta = true; - mute_bridging = true; - encryption = { - allow = true; - default = true; - require = true; - }; - provisioning = { shared_secret = "disable"; }; - permissions = { "example.com" = "user"; }; - }; - }; - }; - - environmentFile = lib.mkOption { - type = lib.types.nullOr lib.types.path; - default = null; - description = '' - File containing environment variables to be passed to the mautrix-discord service. - If an environment variable `MAUTRIX_DISCORD_BRIDGE_LOGIN_SHARED_SECRET` is set, - then its value will be used in the configuration file for the option - `login_shared_secret_map` without leaking it to the store, using the configured - `homeserver.domain` as key. - See [here](https://github.com/mautrix/discord/blob/main/example-config.yaml) - for the documentation of `login_shared_secret_map`. - ''; - }; - - 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"); - defaultText = lib.literalExpression '' - (optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit) - ++ (optional config.services.matrix-conduit.enable "conduit.service") - ''; - description = '' - List of systemd units to require and wait for when starting the application service. - ''; - }; - - registerToSynapse = lib.mkOption { - type = lib.types.bool; - default = config.services.matrix-synapse.enable; - defaultText = lib.literalExpression '' - config.services.matrix-synapse.enable - ''; - description = '' - Whether to add the bridge's app service registration file to - `services.matrix-synapse.settings.app_service_config_files`. - ''; - }; - }; - - config = lib.mkIf cfg.enable { - - users.users.mautrix-discord = { - isSystemUser = true; - group = "mautrix-discord"; - home = dataDir; - description = "mautrix-discord bridge user"; - }; - - users.groups.mautrix-discord = { }; - - services.matrix-synapse = lib.mkIf cfg.registerToSynapse { - settings.app_service_config_files = [ registrationFile ]; - }; - systemd.services.matrix-synapse = lib.mkIf cfg.registerToSynapse { - serviceConfig.SupplementaryGroups = [ "mautrix-discord" ]; - }; - - # 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}"; - })) - ]); - - systemd.services.mautrix-discord-dashie = { - description = "mautrix-discord, a Matrix-Discord puppeting bridge."; - - wantedBy = [ "multi-user.target" ]; - wants = [ "network-online.target" ] ++ cfg.serviceDependencies; - after = [ "network-online.target" ] ++ cfg.serviceDependencies; - # ffmpeg is required for conversion of voice messages - path = [ pkgs.ffmpeg-headless ]; - - preStart = '' - # substitute the settings file by environment variables - # in this case read from EnvironmentFile - test -f '${settingsFile}' && rm -f '${settingsFile}' - old_umask=$(umask) - umask 0177 - ${pkgs.envsubst}/bin/envsubst \ - -o '${settingsFile}' \ - -i '${settingsFileUnsubstituted}' - umask $old_umask - - # generate the appservice's registration file if absent - if [ ! -f '${registrationFile}' ]; then - ${pkgs.mautrix-discord}/bin/mautrix-discord \ - --generate-registration \ - --config='${settingsFile}' \ - --registration='${registrationFile}' - fi - chmod 640 ${registrationFile} - - umask 0177 - # 1. Overwrite registration tokens in config - # 2. If environment variable MAUTRIX_DISCORD_BRIDGE_LOGIN_SHARED_SECRET - # is set, set it as the login shared secret value for the configured - # homeserver domain. - ${pkgs.yq}/bin/yq -s '.[0].appservice.as_token = .[1].as_token - | .[0].appservice.hs_token = .[1].hs_token - | .[0] - | if env.MAUTRIX_DISCORD_BRIDGE_LOGIN_SHARED_SECRET then .bridge.login_shared_secret_map.[.homeserver.domain] = env.MAUTRIX_DISCORD_BRIDGE_LOGIN_SHARED_SECRET else . end' \ - '${settingsFile}' '${registrationFile}' > '${settingsFile}.tmp' - mv '${settingsFile}.tmp' '${settingsFile}' - umask $old_umask - ''; - - serviceConfig = { - User = "mautrix-discord"; - Group = "mautrix-discord"; - EnvironmentFile = cfg.environmentFile; - StateDirectory = baseNameOf dataDir; - WorkingDirectory = dataDir; - ExecStart = '' - ${pkgs.mautrix-discord}/bin/mautrix-discord \ - --config='${settingsFile}' \ - --registration='${registrationFile}' - ''; - LockPersonality = true; - MemoryDenyWriteExecute = true; - NoNewPrivileges = true; - PrivateDevices = true; - PrivateTmp = true; - PrivateUsers = true; - ProtectClock = true; - ProtectControlGroups = true; - ProtectHome = true; - ProtectHostname = true; - ProtectKernelLogs = true; - ProtectKernelModules = true; - ProtectKernelTunables = true; - ProtectSystem = "strict"; - Restart = "on-failure"; - RestartSec = "30s"; - RestrictRealtime = true; - RestrictSUIDSGID = true; - SystemCallArchitectures = "native"; - SystemCallErrorNumber = "EPERM"; - SystemCallFilter = [ "@system-service" ]; - Type = "simple"; - UMask = 27; - }; - restartTriggers = [ settingsFileUnsubstituted ]; - }; - }; - meta.maintainers = with lib.maintainers; [ niklaskorz ]; -} - diff --git a/hardware/server/mautrix-whatsapp.nix b/hardware/server/mautrix-whatsapp.nix deleted file mode 100644 index 82696f6..0000000 --- a/hardware/server/mautrix-whatsapp.nix +++ /dev/null @@ -1,247 +0,0 @@ -# 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, ... }: -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; - settingsFormat = pkgs.formats.json { }; - appservicePort = 29318; - - # to be used with a list of lib.mkIf values - optOneOf = lib.lists.findFirst (value: value.condition) (lib.mkIf false null); - mkDefaults = lib.mapAttrsRecursive (n: v: lib.mkDefault v); - defaultConfig = { - homeserver.address = "http://localhost:8448"; - appservice = { - hostname = "[::]"; - port = appservicePort; - database.type = "sqlite3"; - database.uri = "file:${dataDir}/mautrix-whatsapp.db?_txlock=immediate"; - id = "whatsapp"; - bot = { - username = "whatsappbot"; - displayname = "Whatsapp Bridge Bot"; - }; - as_token = ""; - hs_token = ""; - }; - bridge = { - username_template = "whatsapp_{{.}}"; - displayname_template = - ''{{or .ProfileName .PhoneNumber "Unknown user"}}''; - double_puppet_server_map = { }; - login_shared_secret_map = { }; - command_prefix = "!whatsapp"; - permissions."*" = "relay"; - relay.enabled = true; - }; - logging = { - min_level = "info"; - writers = lib.singleton { - type = "stdout"; - format = "pretty-colored"; - time_format = " "; - }; - }; - }; - -in { - options.services.mautrix-whatsapp-dashie = { - enable = lib.mkEnableOption - "mautrix-whatsapp, a Matrix-Whatsapp puppeting bridge."; - - settings = lib.mkOption { - apply = lib.recursiveUpdate defaultConfig; - type = settingsFormat.type; - default = defaultConfig; - description = '' - {file}`config.yaml` configuration as a Nix attribute set. - Configuration options should match those described in - [example-config.yaml](https://github.com/mautrix/whatsapp/blob/master/example-config.yaml). - Secret tokens should be specified using {option}`environmentFile` - instead of this world-readable attribute set. - ''; - example = { - appservice = { - database = { - type = "postgres"; - uri = "postgresql:///mautrix_whatsapp?host=/run/postgresql"; - }; - id = "whatsapp"; - ephemeral_events = false; - }; - bridge = { - history_sync = { request_full_sync = true; }; - private_chat_portal_meta = true; - mute_bridging = true; - encryption = { - allow = true; - default = true; - require = true; - }; - provisioning = { shared_secret = "disable"; }; - permissions = { "example.com" = "user"; }; - }; - }; - }; - - environmentFile = lib.mkOption { - type = lib.types.nullOr lib.types.path; - default = null; - description = '' - File containing environment variables to be passed to the mautrix-whatsapp service. - If an environment variable `MAUTRIX_WHATSAPP_BRIDGE_LOGIN_SHARED_SECRET` is set, - then its value will be used in the configuration file for the option - `login_shared_secret_map` without leaking it to the store, using the configured - `homeserver.domain` as key. - See [here](https://github.com/mautrix/whatsapp/blob/main/example-config.yaml) - for the documentation of `login_shared_secret_map`. - ''; - }; - - 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"); - defaultText = lib.literalExpression '' - (optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit) - ++ (optional config.services.matrix-conduit.enable "conduit.service") - ''; - description = '' - List of systemd units to require and wait for when starting the application service. - ''; - }; - - registerToSynapse = lib.mkOption { - type = lib.types.bool; - default = config.services.matrix-synapse.enable; - defaultText = lib.literalExpression '' - config.services.matrix-synapse.enable - ''; - description = '' - Whether to add the bridge's app service registration file to - `services.matrix-synapse.settings.app_service_config_files`. - ''; - }; - }; - - config = lib.mkIf cfg.enable { - - users.users.mautrix-whatsapp = { - isSystemUser = true; - group = "mautrix-whatsapp"; - home = dataDir; - description = "mautrix-whatsapp bridge user"; - }; - - users.groups.mautrix-whatsapp = { }; - - services.matrix-synapse = lib.mkIf cfg.registerToSynapse { - settings.app_service_config_files = [ registrationFile ]; - }; - systemd.services.matrix-synapse = lib.mkIf cfg.registerToSynapse { - serviceConfig.SupplementaryGroups = [ "mautrix-whatsapp" ]; - }; - - # 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}"; - })) - ]); - - systemd.services.mautrix-whatsapp-dashie = { - description = "mautrix-whatsapp, a Matrix-Whatsapp puppeting bridge."; - - wantedBy = [ "multi-user.target" ]; - wants = [ "network-online.target" ] ++ cfg.serviceDependencies; - after = [ "network-online.target" ] ++ cfg.serviceDependencies; - # ffmpeg is required for conversion of voice messages - path = [ pkgs.ffmpeg-headless ]; - - preStart = '' - # substitute the settings file by environment variables - # in this case read from EnvironmentFile - test -f '${settingsFile}' && rm -f '${settingsFile}' - old_umask=$(umask) - umask 0177 - ${pkgs.envsubst}/bin/envsubst \ - -o '${settingsFile}' \ - -i '${settingsFileUnsubstituted}' - umask $old_umask - - # generate the appservice's registration file if absent - if [ ! -f '${registrationFile}' ]; then - ${pkgs.mautrix-whatsapp}/bin/mautrix-whatsapp \ - --generate-registration \ - --config='${settingsFile}' \ - --registration='${registrationFile}' - fi - chmod 640 ${registrationFile} - - umask 0177 - # 1. Overwrite registration tokens in config - # 2. If environment variable MAUTRIX_WHATSAPP_BRIDGE_LOGIN_SHARED_SECRET - # is set, set it as the login shared secret value for the configured - # homeserver domain. - ${pkgs.yq}/bin/yq -s '.[0].appservice.as_token = .[1].as_token - | .[0].appservice.hs_token = .[1].hs_token - | .[0] - | if env.MAUTRIX_WHATSAPP_BRIDGE_LOGIN_SHARED_SECRET then .bridge.login_shared_secret_map.[.homeserver.domain] = env.MAUTRIX_WHATSAPP_BRIDGE_LOGIN_SHARED_SECRET else . end' \ - '${settingsFile}' '${registrationFile}' > '${settingsFile}.tmp' - mv '${settingsFile}.tmp' '${settingsFile}' - umask $old_umask - ''; - - serviceConfig = { - User = "mautrix-whatsapp"; - Group = "mautrix-whatsapp"; - EnvironmentFile = cfg.environmentFile; - StateDirectory = baseNameOf dataDir; - WorkingDirectory = dataDir; - ExecStart = '' - ${pkgs.mautrix-whatsapp}/bin/mautrix-whatsapp \ - --config='${settingsFile}' \ - --registration='${registrationFile}' - ''; - LockPersonality = true; - MemoryDenyWriteExecute = true; - NoNewPrivileges = true; - PrivateDevices = true; - PrivateTmp = true; - PrivateUsers = true; - ProtectClock = true; - ProtectControlGroups = true; - ProtectHome = true; - ProtectHostname = true; - ProtectKernelLogs = true; - ProtectKernelModules = true; - ProtectKernelTunables = true; - ProtectSystem = "strict"; - Restart = "on-failure"; - RestartSec = "30s"; - RestrictRealtime = true; - RestrictSUIDSGID = true; - SystemCallArchitectures = "native"; - SystemCallErrorNumber = "EPERM"; - SystemCallFilter = [ "@system-service" ]; - Type = "simple"; - UMask = 27; - }; - restartTriggers = [ settingsFileUnsubstituted ]; - }; - }; - meta.maintainers = with lib.maintainers; [ niklaskorz ]; -} - diff --git a/hardware/spaceship/configuration.nix b/hardware/spaceship/configuration.nix deleted file mode 100644 index cf6c08c..0000000 --- a/hardware/spaceship/configuration.nix +++ /dev/null @@ -1,106 +0,0 @@ -{ config, ... }: -let username = config.conf.username; -in { - imports = [ ../../modules ]; - - # config variables - conf = { - monitor = "DP-1"; - streamdeck.enable = false; - hostname = "spaceship"; - }; - mods = { - # f to pay respect - teams.enable = true; - coding = { jetbrains = true; }; - gaming = { enable = true; }; - stylix.colorscheme = "catppuccin-mocha"; - hyprland = { - monitor = [ - # default - "DP-2,2560x1440@165,0x0,1" - "DP-1,3440x1440@180,2560x0,1,vrr,0" - "DP-3,1920x1080@144,6000x0,1" - "DP-3,transform,1" - - # all others - ",highrr,auto,1" - ]; - - workspace = [ - # workspaces - # monitor middle - "2,monitor:DP-1, default:true" - "4,monitor:DP-1" - "6,monitor:DP-1" - "8,monitor:DP-1" - "9,monitor:DP-1" - "10,monitor:DP-1" - - # monitor left - "1,monitor:DP-2, default:true" - "5,monitor:DP-2" - "7,monitor:DP-2" - - # monitor right - "3,monitor:DP-3, default:true" - ]; - hyprpaper.config = '' - #load - preload = /home/${username}/Pictures/backgrounds/shinobu_2k.jpg - preload = /home/${username}/Pictures/backgrounds/shino_wide.png - preload = /home/${username}/Pictures/backgrounds/shinobu_1080.jpg - - #set - wallpaper = DP-2,/home/${username}/Pictures/backgrounds/shinobu_2k.jpg - wallpaper = DP-1,/home/${username}/Pictures/backgrounds/shino_wide.png - wallpaper = DP-3,/home/${username}/Pictures/backgrounds/shinobu_1080.jpg - splash = true - ''; - extra_autostart = [ "flatpak run com.core447.StreamController -b" ]; - }; - 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; - amdgpu.enable = true; - piper.enable = true; - flatpak.additional_packages = [ "com.core447.StreamController" ]; - vapi = { - enable = true; - rocm.enable = true; - }; - greetd = { resolution = "3440x1440@180"; }; - nextcloud = { - synclist = [ - { - name = "document_sync"; - remote = "/Documents"; - local = "/home/${config.conf.username}/Documents"; - } - { - name = "picture_sync"; - remote = "/Pictures"; - local = "/home/${config.conf.username}/Pictures"; - } - { - name = "phone_sync"; - remote = "Phone/Stuff"; - local = "/home/${config.conf.username}/Videos/Phone/Stuff"; - } - { - name = "pw_sync"; - remote = "PWs"; - local = "/home/${config.conf.username}/Music"; - } - ]; - }; - }; -} diff --git a/lib/default.nix b/lib/default.nix index 9472ccd..0e075fc 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,8 +1,12 @@ -{ inputs, pkgs, ... }: { - build_systems = systems: +{ inputs, pkgs, ... }: +let +in { + build_systems = systems: root: builtins.listToAttrs (map (name: { name = name; - value = let mod = ../hardware/${name}/configuration.nix; + value = let + mod = root + /${name}/configuration.nix; + additionalConfig = root + /${name}/${name}.nix; in inputs.nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs pkgs mod; }; modules = [ @@ -10,10 +14,10 @@ inputs.stylix.nixosModules.stylix ../base ../programs + ../modules mod - ] ++ inputs.nixpkgs.lib.optional - (builtins.pathExists ../hardware/${name}/${name}.nix) - ../hardware/${name}/${name}.nix + ] ++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalConfig) + additionalConfig ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; }; }) systems); diff --git a/modules/conf.nix b/modules/conf.nix index 4f6e334..c730f54 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -101,6 +101,16 @@ ''; }; + build-command = lib.mkOption { + default = + "sudo nixos-rebuild switch --flake /home/${config.conf.username}/gits/dotFiles/."; + example = "yourpath/."; + type = lib.types.str; + description = '' + The path for your build command, you can then simply type rebuild to switch to a new configuration. + ''; + }; + nvim-colorscheme = lib.mkOption { default = { tokyonight = { enable = true; }; }; example = { catppuccin = { enable = true; }; }; diff --git a/modules/programs/home_packages.nix b/modules/programs/home_packages.nix index 81a0c34..0967394 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/home_packages.nix @@ -28,6 +28,7 @@ kitty fish ripgrep + # TODO add fcp once fixed.... rm-improved bat fd diff --git a/programs/default.nix b/programs/default.nix index f54dc0d..48643cf 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -14,6 +14,7 @@ let inputs.nix-flatpak.homeManagerModules.nix-flatpak inputs.sops-nix.homeManagerModules.sops inputs.dashvim.homeManagerModules.dashvim + ../modules ]; in { xdg = { diff --git a/programs/individual_configs/fish.nix b/programs/individual_configs/fish.nix index 8f3fd64..9acd841 100644 --- a/programs/individual_configs/fish.nix +++ b/programs/individual_configs/fish.nix @@ -14,7 +14,7 @@ set EDITOR "neovide --no-fork" - alias rebuild='sudo nixos-rebuild switch --flake /home/${config.conf.username}/gits/dotFiles/.' + alias rebuild='${config.conf.build-command}' abbr --add ls 'lsd' abbr --add :q 'exit' abbr --add gh 'git push origin' From e0be13c2cb766499186bbe5e7bdf69c1bd16dba4 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 18:06:48 +0200 Subject: [PATCH 079/330] Rename to DashNix --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 4bab6f6..98736a6 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Dashie dots"; + description = "DashNix"; inputs = { nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; From fbd32d90f53caa8f3c527982451305b625b5d709 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 18:19:17 +0200 Subject: [PATCH 080/330] Add system configuration documentation --- README.md | 86 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 77 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 13cd64f..1cbe37a 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,83 @@ ``` - _____ _ _____ _ - | __ \ | | | __ \ | | - | | | | __ _ ___| |__ | | | | ___ | |_ ___ - | | | |/ _` / __| '_ \| | | |/ _ \| __/ __| - | |__| | (_| \__ \ | | | |__| | (_) | |_\__ \ - |_____/ \__,_|___/_| |_|_____/ \___/ \__|___/ - +██████ █████ ███████ ██ ██ ███ ██ ██ ██ ██ +██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ +██ ██ ███████ ███████ ███████ ██ ██ ██ ██ ███ +██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +██████ ██ ██ ███████ ██ ██ ██ ████ ██ ██ ██ ``` -My personal configuration for NixOS/home-manager. -While not intended to be used by someone else, feel free to do so anyway or use it as a template for your configuration if you wish to. +A very opinionated (technically only for me) configuration that allows easy adding and removing of systems alongside custom configurations for each system. + +# Usage + +This flake is intended to be used as an input to your own NixOS configuration: + +```nix +dashNix = { + url = "github:DashieTM/dotFiles"; + inputs = { + # ensure these are here to update the packages on your own + nixpkgs.follows = "nixpkgs"; + stable.follows = "stable"; + }; +}; +``` + +You can then configure your systems in your flake outputs with a provided library command: + +```nix +nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems [ + "system1" + "system2" + "system3" +] ./.); +``` + +In order for your configuration to work, you are required to at least provide a single config file with a further config file being optional for custom configuration. + +|- flake.nix\ +|- flake.lock\ +|- system1/\ +|---- system1.nix (required)\ +|---- configuration.nix (optional)\ +|- system2/\ +|---- system2.nix (required)\ +|---- configuration.nix (optional)\ +|- system3/\ +|---- system3.nix (required)\ +|---- configuration.nix (optional) + +Here is a minimal required configuration (the TODOs mention a required change): +```nix +{ + # variables for system + conf = { + # TODO change this to your monitor and your pc name + monitor = "YOURMONITOR"; + hostname = "YOURNAME"; + # TODO only needed when you use intel -> amd is default + # cpu = "intel"; + }; + # modules + mods = { + sops.enable = false; + nextcloud.enable = false; + hyprland.monitor = [ + # default + # TODO change this to your resolution + "DP-1,1920x1080@144,0x0,1" + # all others + ",highrr,auto,1" + ]; + # or amd, whatever you have + nvidia.enable = true; + kde_connect.enable = true; + # TODO change this to your main resolution + # -> this will be your login manager + greetd = { resolution = "3440x1440@180"; }; + }; +} +``` # Modules From c7a26746e1770439a3f7e154bac7837b30ac0546 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 22:21:50 +0200 Subject: [PATCH 081/330] Modularize individual configs --- README.md | 5 + modules/conf.nix | 5 +- modules/programs/base_packages.nix | 52 ++++---- modules/programs/default.nix | 3 +- modules/programs/fish.nix | 151 ++++++++++++++++++++++++ modules/programs/home_packages.nix | 35 +++--- modules/programs/hyprland/hyprland.nix | 2 - modules/programs/kitty.nix | 94 +++++++++++++++ programs/individual_configs/default.nix | 1 - programs/individual_configs/direnv.nix | 6 - programs/individual_configs/fish.nix | 139 ---------------------- programs/individual_configs/kitty.nix | 84 ------------- programs/individual_configs/neovide.nix | 4 - 13 files changed, 303 insertions(+), 278 deletions(-) create mode 100644 modules/programs/fish.nix create mode 100644 modules/programs/kitty.nix delete mode 100644 programs/individual_configs/default.nix delete mode 100644 programs/individual_configs/direnv.nix delete mode 100644 programs/individual_configs/fish.nix delete mode 100644 programs/individual_configs/kitty.nix delete mode 100644 programs/individual_configs/neovide.nix diff --git a/README.md b/README.md index 1cbe37a..2bcaa37 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,10 @@ Here is a minimal required configuration (the TODOs mention a required change): # variables for system conf = { # TODO change this to your monitor and your pc name + # should be something like DP-1 monitor = "YOURMONITOR"; + username = "YOURNAME"; + # the name of your system hostname = "YOURNAME"; # TODO only needed when you use intel -> amd is default # cpu = "intel"; @@ -113,3 +116,5 @@ For package lists, please check the individual modules, as the lists can be long - yazi: Installs yazi and sets custom keybinds - teams: For the poor souls that have to use this.... - sops: Enables sops-nix +- fish: Enables and configures fish shell +- kitty: Enables and configures kitty terminal diff --git a/modules/conf.nix b/modules/conf.nix index c730f54..3f307f0 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -101,9 +101,8 @@ ''; }; - build-command = lib.mkOption { - default = - "sudo nixos-rebuild switch --flake /home/${config.conf.username}/gits/dotFiles/."; + nixos-config-path = lib.mkOption { + default = "/home/${config.conf.username}/gits/nixos/."; example = "yourpath/."; type = lib.types.str; description = '' diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index 5041c1a..74f2bd0 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -68,32 +68,36 @@ }; }; - 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 = { + services = { + upower.enable = true; + dbus = { enable = true; - package = pkgs.nix-direnv; + packages = with pkgs; [ gnome2.GConf ]; + }; + avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; }; }; - programs.ssh.startAgent = true; - programs.gnupg.agent.enable = true; + + programs = { + nix-ld = { + enable = true; + nix-ld.libraries = with pkgs; [ jdk zlib ]; + }; + direnv = { + package = pkgs.direnv; + silent = false; + loadInNixShell = true; + direnvrcExtra = ""; + nix-direnv = { + enable = true; + package = pkgs.nix-direnv; + }; + }; + ssh.startAgent = true; + gnupg.agent.enable = true; + }; }))); } diff --git a/modules/programs/default.nix b/modules/programs/default.nix index a3bc58c..df2e130 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -6,6 +6,7 @@ ./coding.nix ./drives.nix ./firefox.nix + ./fish.nix ./flatpak.nix ./gaming.nix ./git.nix @@ -26,7 +27,7 @@ ./stylix.nix ./teams.nix ./virtualbox.nix - ./yazi ./xone.nix + ./yazi ]; } diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix new file mode 100644 index 0000000..07f3397 --- /dev/null +++ b/modules/programs/fish.nix @@ -0,0 +1,151 @@ +{ lib, config, options, pkgs, ... }: { + options.mods.fish = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables fish"; + }; + }; + config = lib.mkIf config.mods.fish.enable + (lib.optionalAttrs (options ? programs.fish) { fish = { enable = true; }; } + // lib.optionalAttrs (options ? xdg.configFile) { + xdg.configFile."fish/config.fish" = { + text = '' + if status is-interactive + # Commands to run in interactive sessions can go here + end + + # ============================================================================= + # + # Utility functions for zoxide. + # + + export NIX_PATH="$NIX_PATH:${config.conf.nixos-config-path}" + + set EDITOR "neovide --no-fork" + + alias rebuild='sudo nixos-rebuild switch --flake ${config.conf.nixos-config-path}' + 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 + + # 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 + + # ============================================================================= + # + # 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 + + # ============================================================================= + # + # 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) + + # 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) + + 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 + + # ============================================================================= + # + # Commands for zoxide. Disable these using --no-cmd. + # + + abbr --erase z &>/dev/null + alias z=__zoxide_z + + 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 + + direnv hook fish | source + ''; + }; + }); +} diff --git a/modules/programs/home_packages.nix b/modules/programs/home_packages.nix index 0967394..131c73a 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/home_packages.nix @@ -63,21 +63,28 @@ brightnessctl ]; + xdg.configFile."direnv/direnv.toml".source = + (pkgs.formats.toml { }).generate "direnv" { + global = { warn_timeout = "-1s"; }; + }; + #my own programs - programs.oxicalc.enable = true; - programs.oxinoti.enable = true; - programs.oxidash.enable = true; - programs.oxishut.enable = true; - programs.oxipaste.enable = true; - programs.hyprdock.enable = true; - programs.ReSet.enable = true; - programs.ReSet.config.plugins = [ - inputs.reset-plugins.packages."x86_64-linux".monitor - inputs.reset-plugins.packages."x86_64-linux".keyboard - ]; - programs.ReSet.config.plugin_config = { - Keyboard = { - path = "/home/${config.conf.username}/.config/reset/keyboard.conf"; + programs = { + oxicalc.enable = true; + oxinoti.enable = true; + oxidash.enable = true; + oxishut.enable = true; + oxipaste.enable = true; + hyprdock.enable = true; + ReSet.enable = true; + ReSet.config.plugins = [ + inputs.reset-plugins.packages."x86_64-linux".monitor + inputs.reset-plugins.packages."x86_64-linux".keyboard + ]; + ReSet.config.plugin_config = { + Keyboard = { + path = "/home/${config.conf.username}/.config/reset/keyboard.conf"; + }; }; }; }))); diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index b5358fd..50dd979 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -77,8 +77,6 @@ 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" ]; diff --git a/modules/programs/kitty.nix b/modules/programs/kitty.nix new file mode 100644 index 0000000..07224c9 --- /dev/null +++ b/modules/programs/kitty.nix @@ -0,0 +1,94 @@ +{ lib, config, options, pkgs, inputs, ... }: +let + base16 = pkgs.callPackage inputs.base16.lib { }; + scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); + hexTable = { + "0" = "1"; + "1" = "0"; + "2" = "1"; + "3" = "2"; + "4" = "3"; + "5" = "4"; + "6" = "5"; + "7" = "6"; + "8" = "7"; + "9" = "8"; + "a" = "9"; + "b" = "a"; + "c" = "b"; + "d" = "c"; + "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 { + options.mods.kitty = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables kitty"; + }; + }; + config = lib.mkIf config.mods.kitty.enable + (lib.optionalAttrs (options ? home.packages) { + stylix.targets.kitty = { enable = false; }; + programs.kitty = { + enable = true; + settings = { + enable_audio_bell = "no"; + window_alert_on_bell = "no"; + cursor_blink_interval = "0"; + window_padding_width = "1"; + shell_integration = "yes"; + sync_with_monitor = "no"; + background_opacity = "0.8"; + + font_family = "JetBrainsMono Nerd Font Mono"; + bold_font = "JetBrainsMono Nerd Font Mono Extra Bold"; + italic_font = "JetBrainsMono Nerd Font Mono Extra Italic"; + bold_italic_font = "JetBrainsMono Nerd Font Mono Extra Bold Italic"; + + background = base; + foreground = "#" + scheme.base05; + selection_foreground = "#" + scheme.base05; + selection_background = base; + url_color = "#" + scheme.base04; + cursor = "#" + scheme.base05; + active_border_color = "#" + scheme.base03; + inactive_border_color = "#" + scheme.base01; + active_tab_background = base; + active_tab_foreground = "#" + scheme.base05; + inactive_tab_background = "#" + scheme.base01; + inactive_tab_foreground = "#" + scheme.base04; + tab_bar_background = "#" + scheme.base01; + + color0 = base; + color1 = "#" + scheme.base08; + color2 = "#" + scheme.base0B; + color3 = "#" + scheme.base0A; + color4 = "#" + scheme.base0D; + color5 = "#" + scheme.base0E; + color6 = "#" + scheme.base0C; + color7 = "#" + scheme.base05; + + color8 = "#" + scheme.base03; + color9 = "#" + scheme.base08; + color10 = "#" + scheme.base0B; + color11 = "#" + scheme.base0A; + color12 = "#" + scheme.base0D; + color13 = "#" + scheme.base0E; + color14 = "#" + scheme.base0C; + color15 = "#" + scheme.base07; + + shell = "fish"; + }; + + }; + }); +} + diff --git a/programs/individual_configs/default.nix b/programs/individual_configs/default.nix deleted file mode 100644 index 28f20fe..0000000 --- a/programs/individual_configs/default.nix +++ /dev/null @@ -1 +0,0 @@ -{ imports = [ ./kitty.nix ./fish.nix ./direnv.nix ./neovide.nix ]; } diff --git a/programs/individual_configs/direnv.nix b/programs/individual_configs/direnv.nix deleted file mode 100644 index 25f8586..0000000 --- a/programs/individual_configs/direnv.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ... }: { - 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 deleted file mode 100644 index 9acd841..0000000 --- a/programs/individual_configs/fish.nix +++ /dev/null @@ -1,139 +0,0 @@ -{ config, ... }: { - xdg.configFile."fish/config.fish" = { - text = '' - if status is-interactive - # Commands to run in interactive sessions can go here - end - - # ============================================================================= - # - # Utility functions for zoxide. - # - - export NIX_PATH="$NIX_PATH:$HOME/gits/dotFiles/." - - set EDITOR "neovide --no-fork" - - alias rebuild='${config.conf.build-command}' - 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 - - # 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 - - # ============================================================================= - # - # 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 - - # ============================================================================= - # - # 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) - - # 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) - - 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 - - # ============================================================================= - # - # Commands for zoxide. Disable these using --no-cmd. - # - - abbr --erase z &>/dev/null - alias z=__zoxide_z - - 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 - - direnv hook fish | source - ''; - }; -} diff --git a/programs/individual_configs/kitty.nix b/programs/individual_configs/kitty.nix deleted file mode 100644 index b22bbef..0000000 --- a/programs/individual_configs/kitty.nix +++ /dev/null @@ -1,84 +0,0 @@ -{ lib, config, inputs, pkgs, ... }: -let - base16 = pkgs.callPackage inputs.base16.lib { }; - scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); - hexTable = { - "0" = "1"; - "1" = "0"; - "2" = "1"; - "3" = "2"; - "4" = "3"; - "5" = "4"; - "6" = "5"; - "7" = "6"; - "8" = "7"; - "9" = "8"; - "a" = "9"; - "b" = "a"; - "c" = "b"; - "d" = "c"; - "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 { - - stylix.targets.kitty = { enable = false; }; - programs.kitty = { - enable = true; - - settings = { - enable_audio_bell = "no"; - window_alert_on_bell = "no"; - cursor_blink_interval = "0"; - window_padding_width = "1"; - shell_integration = "yes"; - sync_with_monitor = "no"; - background_opacity = "0.8"; - - font_family = "JetBrainsMono Nerd Font Mono"; - bold_font = "JetBrainsMono Nerd Font Mono Extra Bold"; - italic_font = "JetBrainsMono Nerd Font Mono Extra Italic"; - bold_italic_font = "JetBrainsMono Nerd Font Mono Extra Bold Italic"; - - background = base; - foreground = "#" + scheme.base05; - selection_foreground = "#" + scheme.base05; - selection_background = base; - url_color = "#" + scheme.base04; - cursor = "#" + scheme.base05; - active_border_color = "#" + scheme.base03; - inactive_border_color = "#" + scheme.base01; - active_tab_background = base; - active_tab_foreground = "#" + scheme.base05; - inactive_tab_background = "#" + scheme.base01; - inactive_tab_foreground = "#" + scheme.base04; - tab_bar_background = "#" + scheme.base01; - - color0 = base; - color1 = "#" + scheme.base08; - color2 = "#" + scheme.base0B; - color3 = "#" + scheme.base0A; - color4 = "#" + scheme.base0D; - color5 = "#" + scheme.base0E; - color6 = "#" + scheme.base0C; - color7 = "#" + scheme.base05; - - color8 = "#" + scheme.base03; - color9 = "#" + scheme.base08; - color10 = "#" + scheme.base0B; - color11 = "#" + scheme.base0A; - color12 = "#" + scheme.base0D; - color13 = "#" + scheme.base0E; - color14 = "#" + scheme.base0C; - color15 = "#" + scheme.base07; - - shell = "fish"; - }; - - }; -} diff --git a/programs/individual_configs/neovide.nix b/programs/individual_configs/neovide.nix deleted file mode 100644 index 729dfbf..0000000 --- a/programs/individual_configs/neovide.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ pkgs, ... }: { - xdg.configFile."neovide/config.toml".source = - (pkgs.formats.toml { }).generate "neovide" { }; -} From 903088cf12c1f954934ff6919d79313c1f3f29a8 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 22:37:11 +0200 Subject: [PATCH 082/330] Update url in example --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2bcaa37..7e828a0 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ This flake is intended to be used as an input to your own NixOS configuration: ```nix dashNix = { - url = "github:DashieTM/dotFiles"; + url = "github:DashieTM/DashNix"; inputs = { # ensure these are here to update the packages on your own nixpkgs.follows = "nixpkgs"; From d2078267695f4fc15b360a979fc68c8b60024ec1 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 22:43:03 +0200 Subject: [PATCH 083/330] Modularize individual configs --- modules/programs/base_packages.nix | 2 +- modules/programs/default.nix | 1 + modules/programs/fish.nix | 2 +- programs/default.nix | 1 - 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index 74f2bd0..d13dec6 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -84,7 +84,7 @@ programs = { nix-ld = { enable = true; - nix-ld.libraries = with pkgs; [ jdk zlib ]; + libraries = with pkgs; [ jdk zlib ]; }; direnv = { package = pkgs.direnv; diff --git a/modules/programs/default.nix b/modules/programs/default.nix index df2e130..44e60ab 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -29,5 +29,6 @@ ./virtualbox.nix ./xone.nix ./yazi + ./kitty.nix ]; } diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 07f3397..5bdf66a 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -8,7 +8,7 @@ }; }; config = lib.mkIf config.mods.fish.enable - (lib.optionalAttrs (options ? programs.fish) { fish = { enable = true; }; } + (lib.optionalAttrs (options ? programs.fish) { programs.fish = { enable = true; }; } // lib.optionalAttrs (options ? xdg.configFile) { xdg.configFile."fish/config.fish" = { text = '' diff --git a/programs/default.nix b/programs/default.nix index 48643cf..3276246 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -35,7 +35,6 @@ in { ./xdg.nix ./oxi/default.nix ./themes/default.nix - ./individual_configs/default.nix ./sync.nix ] ++ base_imports ++ lib.optional (builtins.pathExists mod) mod; }; From caafd3e3c1995dac5737396f8836fc24d76151a9 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 22:46:12 +0200 Subject: [PATCH 084/330] Remove custom json files --- dashie.json | 491 ---------------------------- modules/conf.nix | 2 +- penguin.json | 826 ----------------------------------------------- 3 files changed, 1 insertion(+), 1318 deletions(-) delete mode 100644 dashie.json delete mode 100644 penguin.json diff --git a/dashie.json b/dashie.json deleted file mode 100644 index 7e3e561..0000000 --- a/dashie.json +++ /dev/null @@ -1,491 +0,0 @@ -{ - "version": 1, - "notes": "", - "documentation": "\"This file is a QMK Configurator export. You can import this at . It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: \n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n", - "keyboard": "rgbkb/sol3/rev1", - "keymap": "dashie", - "layout": "LAYOUT", - "layers": [ - [ - "KC_ESC", - "KC_1", - "KC_2", - "KC_3", - "KC_4", - "KC_5", - "KC_MINS", - "KC_EQL", - "KC_6", - "KC_7", - "KC_8", - "KC_9", - "KC_0", - "KC_BSPC", - "KC_TAB", - "KC_Q", - "KC_W", - "KC_E", - "KC_R", - "KC_T", - "KC_LBRC", - "KC_RBRC", - "KC_Y", - "KC_U", - "KC_I", - "KC_O", - "KC_P", - "KC_BSLS", - "MO(1)", - "KC_A", - "KC_S", - "KC_D", - "KC_F", - "KC_G", - "KC_LPRN", - "KC_RPRN", - "KC_H", - "KC_J", - "KC_K", - "KC_L", - "KC_SCLN", - "KC_QUOT", - "KC_LSFT", - "KC_Z", - "KC_X", - "KC_C", - "KC_V", - "KC_B", - "KC_LCBR", - "KC_RCBR", - "KC_N", - "KC_M", - "KC_COMM", - "KC_DOT", - "KC_SLSH", - "KC_GRV", - "KC_LCTL", - "MO(4)", - "RGB_TOG", - "KC_LALT", - "KC_LGUI", - "KC_SPC", - "KC_PGDN", - "KC_DEL", - "KC_BSPC", - "KC_PGUP", - "KC_ENT", - "KC_RCTL", - "KC_RALT", - "KC_CAPS", - "KC_HOME", - "KC_RCTL", - "KC_VOLD", - "KC_VOLU", - "KC_VOLD", - "KC_VOLU", - "KC_VOLD", - "KC_VOLU", - "KC_VOLD", - "KC_VOLU", - "KC_VOLD", - "KC_VOLU", - "KC_VOLD", - "KC_VOLU", - "KC_VOLD", - "KC_VOLU", - "KC_MNXT", - "KC_MPLY", - "KC_MPRV", - "KC_VOLD", - "KC_VOLU", - "KC_MNXT", - "KC_MPLY", - "KC_MPRV" - ], - [ - "KC_ESC", - "KC_F1", - "KC_F2", - "KC_F3", - "KC_F4", - "KC_F5", - "KC_F6", - "KC_F7", - "KC_F8", - "KC_F9", - "KC_F10", - "KC_F11", - "KC_F12", - "KC_DEL", - "KC_TRNS", - "KC_MPRV", - "KC_MNXT", - "KC_MPLY", - "KC_MUTE", - "KC_G", - "KC_TRNS", - "KC_TRNS", - "KC_BTN2", - "KC_MS_L", - "KC_MS_D", - "KC_MS_U", - "KC_MS_R", - "KC_BTN1", - "KC_TRNS", - "KC_VOLD", - "KC_VOLU", - "KC_S", - "KC_T", - "KC_D", - "KC_TRNS", - "KC_TRNS", - "KC_H", - "KC_LEFT", - "KC_DOWN", - "KC_UP", - "KC_RGHT", - "KC_TRNS", - "KC_TRNS", - "KC_Z", - "KC_X", - "KC_C", - "KC_V", - "KC_B", - "KC_TRNS", - "KC_TRNS", - "KC_K", - "KC_M", - "KC_COMM", - "KC_DOT", - "KC_SLSH", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_CAPS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS" - ], - [ - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_F1", - "KC_F5", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_Q", - "KC_W", - "KC_E", - "KC_R", - "KC_T", - "KC_F2", - "KC_F6", - "KC_Y", - "KC_U", - "KC_I", - "KC_O", - "KC_P", - "KC_TRNS", - "KC_TRNS", - "KC_A", - "KC_S", - "KC_D", - "KC_F", - "KC_G", - "KC_F3", - "KC_F7", - "KC_H", - "KC_J", - "KC_K", - "KC_L", - "KC_SCLN", - "KC_TRNS", - "KC_TRNS", - "KC_Z", - "KC_X", - "KC_C", - "KC_V", - "KC_B", - "KC_F4", - "KC_F8", - "KC_N", - "KC_M", - "KC_COMM", - "KC_DOT", - "KC_SLSH", - "KC_TRNS", - "KC_TRNS", - "KC_NO", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS" - ], - [ - "KC_TRNS", - "KC_F1", - "KC_F2", - "KC_F3", - "KC_F4", - "KC_F5", - "KC_F11", - "KC_F12", - "KC_F6", - "KC_F7", - "KC_F8", - "KC_F9", - "KC_F10", - "KC_TRNS", - "KC_TRNS", - "KC_HOME", - "KC_UP", - "KC_END", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_HOME", - "KC_UP", - "KC_END", - "KC_PSCR", - "KC_PGUP", - "KC_TRNS", - "KC_LEFT", - "KC_DOWN", - "KC_RGHT", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_LEFT", - "KC_DOWN", - "KC_RGHT", - "KC_INS", - "KC_PGDN", - "KC_TRNS", - "ANY(AU_TOGG)", - "ANY(MU_TOGG)", - "ANY(MU_NEXT)", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "ANY(CK_TOGG)", - "ANY(CK_UP)", - "ANY(CK_DOWN)", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_MPLY", - "KC_MNXT", - "KC_MUTE", - "KC_VOLD", - "KC_VOLU", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS" - ], - [ - "KC_TRNS", - "KC_F1", - "KC_F2", - "KC_F3", - "KC_F4", - "KC_F5", - "KC_F11", - "KC_F12", - "KC_F6", - "KC_F7", - "KC_F8", - "KC_F9", - "KC_F10", - "KC_TRNS", - "KC_TRNS", - "RGB_SAD", - "RGB_VAI", - "RGB_SAI", - "QK_BOOT", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_P7", - "KC_P8", - "KC_P9", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "RGB_HUD", - "RGB_VAD", - "RGB_HUI", - "KC_NO", - "KC_TRNS", - "ANY(DM_REC1)", - "KC_TRNS", - "KC_TRNS", - "KC_P4", - "KC_P5", - "KC_P6", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "RGB_SPD", - "KC_TRNS", - "RGB_SPI", - "KC_TRNS", - "KC_TRNS", - "ANY(DM_RSTP)", - "KC_TRNS", - "KC_TRNS", - "KC_P1", - "KC_P2", - "KC_P3", - "KC_TRNS", - "DF(2)", - "KC_TRNS", - "RGB_RMOD", - "RGB_TOG", - "RGB_MOD", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_P0", - "KC_PDOT", - "KC_NUM", - "DF(0)", - "DF(1)", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS" - ] - ], - "author": "" -} \ No newline at end of file diff --git a/modules/conf.nix b/modules/conf.nix index 3f307f0..aba6e0b 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -120,7 +120,7 @@ }; nix_path = lib.mkOption { - default = "/home${config.conf.username}/gits/dotFiles"; + default = "/home${config.conf.username}/gits/nixos"; example = "yourpath"; type = lib.types.str; description = '' diff --git a/penguin.json b/penguin.json deleted file mode 100644 index 6a2b06c..0000000 --- a/penguin.json +++ /dev/null @@ -1,826 +0,0 @@ -{ - "brightness": { - "value": 75, - "overwrite": true - }, - "background": { - "overwrite": false - }, - "auto-change": { - "enable": true, - "wm_class": "", - "title": "" - }, - "keys": { - "4x2": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/Assets/AssetManager/Assets/SmartSelect_20220307-191307_Samsung Internet.jpg", - "loop": true, - "fps": 30 - }, - "actions": [ - { - "id": "com_core447_OSPlugin::RunCommand", - "settings": { - "command": "sh /home/dashie/gits/dotFiles/scripts/penguin2.sh" - } - } - ], - "image-control-action": null, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "3x2": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/Assets/AssetManager/Assets/SmartSelect_20220307-191307_Samsung Internet.jpg", - "loop": true, - "fps": 30 - }, - "actions": [ - { - "id": "com_core447_OSPlugin::RunCommand", - "settings": { - "command": "sh /home/dashie/gits/dotFiles/scripts/penguin1.sh" - } - } - ], - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "2x2": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_up-inv.png", - "loop": true, - "fps": 30 - }, - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "0x2": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_off-inv.png", - "loop": true, - "fps": 30 - }, - "actions": [ - { - "id": "com_core447_OSPlugin::RunCommand", - "settings": {} - } - ], - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "0x1": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_down-inv.png", - "loop": true, - "fps": 30 - }, - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "1x1": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_up-inv.png", - "loop": true, - "fps": 30 - }, - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "3x0": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/play_arrow-inv.png", - "loop": true, - "fps": 30 - }, - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "3x1": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/play_arrow-inv.png", - "loop": true, - "fps": 30 - }, - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "4x1": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/skip_next-inv.png", - "loop": true, - "fps": 30 - }, - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "4x0": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/skip_next-inv.png", - "loop": true, - "fps": 30 - }, - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "1x0": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_up-inv.png", - "loop": true, - "fps": 30 - }, - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "0x0": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_down-inv.png", - "loop": true, - "fps": 30 - }, - "actions": [ - { - "id": "com_core447_OSPlugin::RunCommand", - "settings": { - "command": "playerctl " - } - } - ], - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "1x2": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/volume_down-inv.png", - "loop": true, - "fps": 30 - }, - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "2x1": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/skip_previous-inv.png", - "loop": true, - "fps": 30 - }, - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - }, - "2x0": { - "states": { - "0": { - "labels": { - "top": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "center": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - }, - "bottom": { - "text": "", - "color": [ - 255, - 255, - 255, - 255 - ], - "font-family": "", - "font-size": 15 - } - }, - "media": { - "path": "/home/dashie/.var/app/com.core447.StreamController/data/icons/Core447::Material Icons/icons/skip_previous-inv.png", - "loop": true, - "fps": 30 - }, - "image-control-action": 0, - "label-control-actions": [ - 0, - 0, - 0 - ] - } - } - } - } -} \ No newline at end of file From bf465d56fa9176d811c75d5a610049faf11a6cb5 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 23:37:08 +0200 Subject: [PATCH 085/330] fix fish --- modules/programs/fish.nix | 240 ++++++++++++++--------------- modules/programs/home_packages.nix | 1 - 2 files changed, 120 insertions(+), 121 deletions(-) diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 5bdf66a..61d5741 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -8,144 +8,144 @@ }; }; config = lib.mkIf config.mods.fish.enable - (lib.optionalAttrs (options ? programs.fish) { programs.fish = { enable = true; }; } - // lib.optionalAttrs (options ? xdg.configFile) { - xdg.configFile."fish/config.fish" = { - text = '' - if status is-interactive - # Commands to run in interactive sessions can go here - end + (lib.optionalAttrs (options ? programs.fish) { + programs.fish = { + enable = true; + shellInit = '' + 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:${config.conf.nixos-config-path}" + export NIX_PATH="$NIX_PATH:${config.conf.nixos-config-path}" - set EDITOR "neovide --no-fork" + set EDITOR "neovide --no-fork" - alias rebuild='sudo nixos-rebuild switch --flake ${config.conf.nixos-config-path}' - 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 ${config.conf.nixos-config-path}' + 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/modules/programs/home_packages.nix b/modules/programs/home_packages.nix index 131c73a..fae7bbd 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/home_packages.nix @@ -26,7 +26,6 @@ xournalpp vesktop kitty - fish ripgrep # TODO add fcp once fixed.... rm-improved From 60c0c5e888adc68cab024a5319e5ff7a6f735773 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 Aug 2024 23:45:08 +0200 Subject: [PATCH 086/330] Modularize ncspot --- modules/programs/default.nix | 1 + modules/programs/ncspot.nix | 51 ++++++++++++++++++++++++++ programs/individual_configs/ncspot.nix | 39 -------------------- 3 files changed, 52 insertions(+), 39 deletions(-) create mode 100644 modules/programs/ncspot.nix delete mode 100644 programs/individual_configs/ncspot.nix diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 44e60ab..70a3712 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -19,6 +19,7 @@ ./keepassxc.nix ./layout.nix ./media.nix + ./ncspot.nix ./nextcloud.nix ./piper.nix ./printing.nix diff --git a/modules/programs/ncspot.nix b/modules/programs/ncspot.nix new file mode 100644 index 0000000..a7a62fc --- /dev/null +++ b/modules/programs/ncspot.nix @@ -0,0 +1,51 @@ +{ lib, config, options, pkgs, ... }: { + options.mods.ncspot = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables ncspot with a config"; + }; + }; + config = lib.mkIf config.mods.ncspot.enable + (lib.optionalAttrs (options ? home.packages) { + home.packages = with pkgs; [ ncspot ]; + 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"; + }; + }; + }); +} diff --git a/programs/individual_configs/ncspot.nix b/programs/individual_configs/ncspot.nix deleted file mode 100644 index ccafe45..0000000 --- a/programs/individual_configs/ncspot.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ 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"; - }; - keybindings = { - "j" = "move left 1"; - "k" = "move down 1"; - "l" = "move up 1"; - ";" = "move right 1"; - }; - notification_format = { - title = "%artists"; - body = "%title"; - }; - }; -} From d922e445158dd0f0b9ce13111dcbb4f766afcf62 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 00:00:10 +0200 Subject: [PATCH 087/330] Add example config --- example/example.nix | 50 +++++++++++++++++ programs/themes/default.nix | 104 +++++++++++++++++++++++++++++++++++- programs/themes/qt.nix | 103 ----------------------------------- 3 files changed, 153 insertions(+), 104 deletions(-) create mode 100644 example/example.nix delete mode 100644 programs/themes/qt.nix diff --git a/example/example.nix b/example/example.nix new file mode 100644 index 0000000..997dde6 --- /dev/null +++ b/example/example.nix @@ -0,0 +1,50 @@ +{ + # variables for system + conf = { + # TODO change this to your monitor and your pc name + # should be something like DP-1 + monitor = "YOURMONITOR"; + username = "YOURNAME"; + # the name of your system + hostname = "YOURNAME"; + # TODO only needed when you use intel -> amd is default + # cpu = "intel"; + }; + # modules + mods = { + defaultDrives.enable = false; + extraDrives = [ + { + name = "/boot"; + drive = { + device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; + }; + } + { + name = "/root"; + drive = { + device = "/dev/disk/by-label/ROOT"; + fsType = "ext4"; + options = [ "noatime" "nodiratime" "discard" ]; + }; + } + ]; + sops.enable = false; + nextcloud.enable = false; + hyprland.monitor = [ + # default + # TODO change this to your resolution + "DP-1,1920x1080@144,0x0,1" + # all others + ",highrr,auto,1" + ]; + # or amd, whatever you have + nvidia.enable = true; + kde_connect.enable = true; + # TODO change this to your main resolution + # -> this will be your login manager + greetd = { resolution = "3440x1440@180"; }; + }; +} diff --git a/programs/themes/default.nix b/programs/themes/default.nix index d348c16..be2d0b5 100644 --- a/programs/themes/default.nix +++ b/programs/themes/default.nix @@ -1,2 +1,104 @@ -{ imports = [ ./qt.nix ]; } +{ config, inputs, pkgs, ... }: +let + username = config.conf.username; + # at time of using this here, stylix might not be evaluated yet + # hence ensure it is by using base16 mkSchemeAttrs + base16 = pkgs.callPackage inputs.base16.lib { }; + scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); + # active_colors=#ffc0caf5, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5 + # disabled_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d + # inactive_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d + color = '' + [ColorScheme] + active_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} + disabled_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} + inactive_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} + ''; + qss = '' + QTabBar::tab:selected { + color: palette(highlight); + } + QMenuBar, QMenu, QToolBar, QStatusBar, QFrame, QScrollBar { + 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}"; }; + 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 + + [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 + + [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() + ''; + }; + 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 + + [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 + + [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,)" + + [Troubleshooting] + force_raster_widgets=1 + ignored_applications=@Invalid() + ''; + }; +} diff --git a/programs/themes/qt.nix b/programs/themes/qt.nix deleted file mode 100644 index e41c051..0000000 --- a/programs/themes/qt.nix +++ /dev/null @@ -1,103 +0,0 @@ -{ config, inputs, pkgs, ... }: -let - username = config.conf.username; - # at time of using this here, stylix might not be evaluated yet - # hence ensure it is by using base16 mkSchemeAttrs - base16 = pkgs.callPackage inputs.base16.lib { }; - scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); - # active_colors=#ffc0caf5, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5 - # disabled_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d - # inactive_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d - color = '' - [ColorScheme] - active_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} - disabled_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} - inactive_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} - ''; - qss = '' - QTabBar::tab:selected { - color: palette(highlight); - } - QMenuBar, QMenu, QToolBar, QStatusBar, QFrame, QScrollBar { - 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}"; }; - 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 - - [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 - - [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() - ''; - }; - 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 - - [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 - - [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,)" - - [Troubleshooting] - force_raster_widgets=1 - ignored_applications=@Invalid() - ''; - }; -} From 500c7050c387c18ad46cf54472682dbc3a152322 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 00:55:55 +0200 Subject: [PATCH 088/330] Use mkdefault for username --- modules/conf.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/conf.nix b/modules/conf.nix index aba6e0b..de44e55 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -93,7 +93,7 @@ }; username = lib.mkOption { - default = "dashie"; + default = lib.mkDefault "dashie"; example = "pingpang"; type = lib.types.str; description = '' From c429e7a2016fcc485c0bf3861ad98bbbb3f7dcf7 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 00:58:54 +0200 Subject: [PATCH 089/330] test --- modules/conf.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/conf.nix b/modules/conf.nix index de44e55..59639fa 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -95,7 +95,7 @@ username = lib.mkOption { default = lib.mkDefault "dashie"; example = "pingpang"; - type = lib.types.str; + # type = lib.types.str; description = '' The username. ''; From d7cb5b90f4551c8ef3b419deffc955d4a4eeb8c9 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 01:18:49 +0200 Subject: [PATCH 090/330] test --- modules/conf.nix | 4 ++-- programs/default.nix | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/conf.nix b/modules/conf.nix index 59639fa..aba6e0b 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -93,9 +93,9 @@ }; username = lib.mkOption { - default = lib.mkDefault "dashie"; + default = "dashie"; example = "pingpang"; - # type = lib.types.str; + type = lib.types.str; description = '' The username. ''; diff --git a/programs/default.nix b/programs/default.nix index 3276246..68b5f6b 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -16,6 +16,7 @@ let inputs.dashvim.homeManagerModules.dashvim ../modules ]; + usernamePassed = config.conf.username; in { xdg = { portal.config.common.default = "*"; @@ -29,7 +30,7 @@ in { useUserPackages = true; extraSpecialArgs = { inherit inputs; }; - users.${config.conf.username} = { + users.${usernamePassed} = { imports = [ ./common.nix ./xdg.nix From 90dd724794c1ace3f275ef78328fedb931849214 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 01:55:08 +0200 Subject: [PATCH 091/330] Hyprland make tearing disabled by default --- modules/programs/hyprland/hyprland.nix | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 50dd979..334136b 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -29,6 +29,14 @@ The workspace configuration for hyprland. ''; }; + no_atomic = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Use tearing + ''; + }; extra_autostart = lib.mkOption { default = [ ]; example = [ "your application" ]; @@ -195,7 +203,7 @@ "col.active_border" = lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; # "col.inactive_border" = "0x66333333"; - allow_tearing = true; + allow_tearing = lib.mkIf config.mods.hyprland.no_atomic true; }; decoration = { rounding = 4; }; @@ -269,7 +277,7 @@ "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" "QT_SCALE_FACTOR,1" ''EDITOR,"neovide --novsync --nofork"'' - "WLR_DRM_NO_ATOMIC,1" + (lib.mkIf config.mods.hyprland.no_atomic "WLR_DRM_NO_ATOMIC,1") "GTK_USE_PORTAL, 1" ]; From 96b410a358be1c8233ef4e05e0b52d9cebf96c24 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 12:01:27 +0200 Subject: [PATCH 092/330] Hyprland nvidia specific configs --- modules/programs/hyprland/hyprland.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 334136b..42220e0 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -251,7 +251,7 @@ cursor = { # conversion seems to be borked right now, i want a smooth bibata :( enable_hyprcursor = false; - # no_hardware_cursors = true; + no_hardware_cursors = lib.mkIf config.mods.nvidia.enable true; # no_break_fs_vrr = true; }; @@ -279,6 +279,12 @@ ''EDITOR,"neovide --novsync --nofork"'' (lib.mkIf config.mods.hyprland.no_atomic "WLR_DRM_NO_ATOMIC,1") "GTK_USE_PORTAL, 1" + + (lib.mkIf config.mods.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") + (lib.mkIf config.mods.nvidia.enable "XDG_SESSION_TYPE,wayland") + (lib.mkIf config.mods.nvidia.enable "GBM_BACKEND,nvidia-drm") + (lib.mkIf config.mods.nvidia.enable + "__GLX_VENDOR_LIBRARY_NAME,nvidia") ]; layerrule = [ From 225da437c5457e3b76e48b521eee21d8b9802f23 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 14:09:28 +0200 Subject: [PATCH 093/330] Modularize scripts --- README.md | 48 +++++++-- base/common_hardware.nix | 106 ++++++++++-------- base/env.nix | 28 ++--- example/{example.nix => configuration.nix} | 11 +- {programs => home}/common.nix | 0 {programs => home}/default.nix | 16 ++- {programs => home}/sync.nix | 0 {programs => home}/themes/default.nix | 0 {programs => home}/xdg.nix | 0 lib/default.nix | 11 +- modules/conf.nix | 18 ++++ modules/programs/default.nix | 4 +- modules/programs/home_packages.nix | 6 +- modules/programs/hyprland/hyprland.nix | 23 ++-- modules/programs/oxi/default.nix | 57 ++++++++++ modules/programs/oxi/oxidash.nix | 64 +++++++++++ modules/programs/oxi/oxinoti.nix | 104 ++++++++++++++++++ modules/programs/oxi/oxipaste.nix | 42 ++++++++ modules/programs/oxi/oxishut.nix | 36 +++++++ modules/programs/scripts.nix | 120 +++++++++++++++++++++ programs/oxi/default.nix | 2 - programs/oxi/oxidash.nix | 52 --------- programs/oxi/oxinoti.nix | 92 ---------------- programs/oxi/oxipaste.nix | 30 ------ programs/oxi/oxishut.nix | 24 ----- scripts/audio_control.sh | 80 -------------- scripts/change-brightness | 12 --- scripts/part.sh | 23 ---- scripts/penguin1.sh | 1 - scripts/penguin2.sh | 3 - 30 files changed, 590 insertions(+), 423 deletions(-) rename example/{example.nix => configuration.nix} (78%) rename {programs => home}/common.nix (100%) rename {programs => home}/default.nix (73%) rename {programs => home}/sync.nix (100%) rename {programs => home}/themes/default.nix (100%) rename {programs => home}/xdg.nix (100%) create mode 100644 modules/programs/oxi/default.nix create mode 100644 modules/programs/oxi/oxidash.nix create mode 100644 modules/programs/oxi/oxinoti.nix create mode 100644 modules/programs/oxi/oxipaste.nix create mode 100644 modules/programs/oxi/oxishut.nix create mode 100644 modules/programs/scripts.nix delete mode 100644 programs/oxi/default.nix delete mode 100644 programs/oxi/oxidash.nix delete mode 100644 programs/oxi/oxinoti.nix delete mode 100644 programs/oxi/oxipaste.nix delete mode 100644 programs/oxi/oxishut.nix delete mode 100755 scripts/audio_control.sh delete mode 100755 scripts/change-brightness delete mode 100755 scripts/part.sh delete mode 100644 scripts/penguin1.sh delete mode 100644 scripts/penguin2.sh diff --git a/README.md b/README.md index 7e828a0..06f40e7 100644 --- a/README.md +++ b/README.md @@ -34,35 +34,64 @@ nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems [ ``` In order for your configuration to work, you are required to at least provide a single config file with a further config file being optional for custom configuration. +The hardware.nix specifies additional NixOS configuration, while home.nix specifies additional home-manager configuration. (both optional) |- flake.nix\ |- flake.lock\ |- system1/\ -|---- system1.nix (required)\ -|---- configuration.nix (optional)\ +|---- configuration.nix (required)\ +|---- hardware.nix (optional)\ +|---- home.nix (optional) |- system2/\ -|---- system2.nix (required)\ -|---- configuration.nix (optional)\ +|---- configuration.nix (required)\ +|---- hardware.nix (optional)\ +|---- home.nix (optional) |- system3/\ -|---- system3.nix (required)\ -|---- configuration.nix (optional) +|---- configuration.nix (required) +|---- hardware.nix (optional)\ +|---- home.nix (optional) + +Here is a minimal required configuration.nix (the TODOs mention a required change): -Here is a minimal required configuration (the TODOs mention a required change): ```nix { # variables for system + # TODO important changes conf = { - # TODO change this to your monitor and your pc name + # change this to your monitor and your pc name # should be something like DP-1 monitor = "YOURMONITOR"; + # your username username = "YOURNAME"; # the name of your system hostname = "YOURNAME"; # TODO only needed when you use intel -> amd is default # cpu = "intel"; + locale = "something.UTF-8"; + timezone = "CONTINENT/CITY"; }; # modules mods = { + # default disk config has root home boot and swap partition, overwrite if you want something different + defaultDrives.enable = false; + extraDrives = [ + { + name = "boot"; + drive = { + device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; + }; + } + { + name = ""; + drive = { + device = "/dev/disk/by-label/ROOT"; + fsType = "ext4"; + options = [ "noatime" "nodiratime" "discard" ]; + }; + } + ]; sops.enable = false; nextcloud.enable = false; hyprland.monitor = [ @@ -81,6 +110,8 @@ Here is a minimal required configuration (the TODOs mention a required change): }; } ``` +## First Login +After logging in the first time, your password will be set to "firstlogin", please change this to whatever you like. # Modules @@ -118,3 +149,4 @@ For package lists, please check the individual modules, as the lists can be long - sops: Enables sops-nix - fish: Enables and configures fish shell - kitty: Enables and configures kitty terminal +- oxi: My own programs, can be selectively disabled, or as a whole diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 724cf83..5071382 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -4,28 +4,49 @@ in { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; # Bootloader. - boot.loader.systemd-boot = { - enable = true; - configurationLimit = 5; + boot = { + loader = { + systemd-boot = { + enable = true; + configurationLimit = 5; + }; + efi.canTouchEfiVariables = true; + }; + plymouth = { enable = true; }; + kernelPackages = config.conf.kernel; + initrd.availableKernelModules = + [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; + kernelParams = [ ''resume="PARTLABEL=SWAP"'' ] ++ config.conf.boot_params; }; - boot.loader.efi.canTouchEfiVariables = true; - boot.plymouth = { enable = true; }; # Enable networking - networking.useDHCP = lib.mkDefault true; - networking.networkmanager.enable = true; - networking.hostName = config.conf.hostname; - - services.flatpak.enable = true; + networking = { + useDHCP = lib.mkDefault true; + networkmanager.enable = true; + hostName = config.conf.hostname; + }; # Set your time zone. - time.timeZone = "Europe/Zurich"; + time.timeZone = config.conf.timezone; # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; + i18n.defaultLocale = config.conf.locale; # Enable the X11 windowing system. - services.xserver.enable = true; + services = { + flatpak.enable = true; + xserver.enable = true; + fstrim.enable = lib.mkDefault true; + pipewire = { + enable = true; + alsa = { + enable = true; + support32Bit = true; + }; + jack.enable = true; + pulse.enable = true; + }; + }; nixpkgs.hostPlatform = lib.mkDefault config.conf.system; nix = { @@ -43,48 +64,39 @@ in { }; # Enable sound with pipewire. - hardware.pulseaudio.enable = false; - hardware.cpu.${config.conf.cpu}.updateMicrocode = - lib.mkDefault config.hardware.enableRedistributableFirmware; - - services.fstrim.enable = lib.mkDefault true; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; + hardware = { + pulseaudio.enable = false; + cpu.${config.conf.cpu}.updateMicrocode = + lib.mkDefault config.hardware.enableRedistributableFirmware; }; + security.rtkit.enable = true; + environment.variables = { XDG_CACHE_HOME = "$HOME/.cache"; DIRENV_LOG_FORMAT = ""; }; - 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; - # allows user change later on - users.mutableUsers = true; - users.users.${username} = { - isNormalUser = true; - description = username; - 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"; + users = { + mutableUsers = true; + users.${username} = { + isNormalUser = true; + description = username; + 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"; + }; }; } diff --git a/base/env.nix b/base/env.nix index 5c54393..9b76e00 100644 --- a/base/env.nix +++ b/base/env.nix @@ -1,16 +1,18 @@ { pkgs, config, ... }: { - environment.variables = { - GSETTINGS_SCHEMA_DIR = - "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; - NEOVIDE_MAXIMIZED = "0"; - GPG_TTY = "$(tty)"; - EDITOR = "neovide --no-fork"; - SUDO_EDITOR = "neovide --no-fork"; - SCRIPTS = "$HOME/.config/scripts"; - }; - environment.sessionVariables = { - NIXOS_OZONE_WL = "1"; - GOPATH = "$HOME/.go"; - FLAKE = config.conf.nix_path; + environment = { + variables = { + GSETTINGS_SCHEMA_DIR = + "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; + NEOVIDE_MAXIMIZED = "0"; + GPG_TTY = "$(tty)"; + EDITOR = "neovide --no-fork"; + SUDO_EDITOR = "neovide --no-fork"; + SCRIPTS = "$HOME/.config/scripts"; + }; + sessionVariables = { + NIXOS_OZONE_WL = "1"; + GOPATH = "$HOME/.go"; + FLAKE = config.conf.nix_path; + }; }; } diff --git a/example/example.nix b/example/configuration.nix similarity index 78% rename from example/example.nix rename to example/configuration.nix index 997dde6..54240e4 100644 --- a/example/example.nix +++ b/example/configuration.nix @@ -1,21 +1,26 @@ { # variables for system + # TODO important changes conf = { - # TODO change this to your monitor and your pc name + # change this to your monitor and your pc name # should be something like DP-1 monitor = "YOURMONITOR"; + # your username username = "YOURNAME"; # the name of your system hostname = "YOURNAME"; # TODO only needed when you use intel -> amd is default # cpu = "intel"; + locale = "something.UTF-8"; + timezone = "CONTINENT/CITY"; }; # modules mods = { + # default disk config has root home boot and swap partition, overwrite if you want something different defaultDrives.enable = false; extraDrives = [ { - name = "/boot"; + name = "boot"; drive = { device = "/dev/disk/by-label/BOOT"; fsType = "vfat"; @@ -23,7 +28,7 @@ }; } { - name = "/root"; + name = ""; drive = { device = "/dev/disk/by-label/ROOT"; fsType = "ext4"; diff --git a/programs/common.nix b/home/common.nix similarity index 100% rename from programs/common.nix rename to home/common.nix diff --git a/programs/default.nix b/home/default.nix similarity index 73% rename from programs/default.nix rename to home/default.nix index 68b5f6b..4f7804a 100644 --- a/programs/default.nix +++ b/home/default.nix @@ -1,4 +1,4 @@ -{ inputs, pkgs, config, lib, mod, ... }: +{ inputs, pkgs, config, lib, mod, additionalHomeConfig, ... }: let base_imports = [ inputs.anyrun.homeManagerModules.default @@ -16,7 +16,6 @@ let inputs.dashvim.homeManagerModules.dashvim ../modules ]; - usernamePassed = config.conf.username; in { xdg = { portal.config.common.default = "*"; @@ -30,14 +29,11 @@ in { useUserPackages = true; extraSpecialArgs = { inherit inputs; }; - users.${usernamePassed} = { - imports = [ - ./common.nix - ./xdg.nix - ./oxi/default.nix - ./themes/default.nix - ./sync.nix - ] ++ base_imports ++ lib.optional (builtins.pathExists mod) mod; + users.${config.conf.username} = { + imports = [ ./common.nix ./xdg.nix ./themes ./sync.nix ] ++ base_imports + ++ lib.optional (builtins.pathExists mod) mod + ++ lib.optional (builtins.pathExists additionalHomeConfig) + additionalHomeConfig; }; }; } diff --git a/programs/sync.nix b/home/sync.nix similarity index 100% rename from programs/sync.nix rename to home/sync.nix diff --git a/programs/themes/default.nix b/home/themes/default.nix similarity index 100% rename from programs/themes/default.nix rename to home/themes/default.nix diff --git a/programs/xdg.nix b/home/xdg.nix similarity index 100% rename from programs/xdg.nix rename to home/xdg.nix diff --git a/lib/default.nix b/lib/default.nix index 0e075fc..82420fd 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -6,18 +6,19 @@ in { name = name; value = let mod = root + /${name}/configuration.nix; - additionalConfig = root + /${name}/${name}.nix; + additionalNixosConfig = root + /${name}/hardware.nix; + additionalHomeConfig = root + /${name}/home.nix; in inputs.nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs pkgs mod; }; + specialArgs = { inherit inputs pkgs mod additionalHomeConfig; }; modules = [ inputs.home-manager.nixosModules.home-manager inputs.stylix.nixosModules.stylix ../base - ../programs + ../home ../modules mod - ] ++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalConfig) - additionalConfig + ] ++ inputs.nixpkgs.lib.optional + (builtins.pathExists additionalNixosConfig) additionalNixosConfig ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; }; }) systems); diff --git a/modules/conf.nix b/modules/conf.nix index aba6e0b..1a861d4 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -101,6 +101,24 @@ ''; }; + timezone = lib.mkOption { + default = "Europe/Zurich"; + example = "Europe/Berlin"; + type = lib.types.str; + description = '' + The timezone. + ''; + }; + + locale = lib.mkOption { + default = "en_US.UTF-8"; + example = "de_DE.UTF-8"; + type = lib.types.str; + description = '' + The locale. + ''; + }; + nixos-config-path = lib.mkOption { default = "/home/${config.conf.username}/gits/nixos/."; example = "yourpath/."; diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 70a3712..4c8afbd 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -17,12 +17,15 @@ ./hyprland ./kde_connect.nix ./keepassxc.nix + ./kitty.nix ./layout.nix ./media.nix ./ncspot.nix ./nextcloud.nix + ./oxi ./piper.nix ./printing.nix + ./scripts.nix ./sops.nix ./starship.nix ./stylix.nix @@ -30,6 +33,5 @@ ./virtualbox.nix ./xone.nix ./yazi - ./kitty.nix ]; } diff --git a/modules/programs/home_packages.nix b/modules/programs/home_packages.nix index fae7bbd..e5ba917 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/home_packages.nix @@ -69,12 +69,8 @@ #my own programs programs = { - oxicalc.enable = true; - oxinoti.enable = true; - oxidash.enable = true; - oxishut.enable = true; - oxipaste.enable = true; hyprdock.enable = true; + oxicalc.enable = true; ReSet.enable = true; ReSet.config.plugins = [ inputs.reset-plugins.packages."x86_64-linux".monitor diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 42220e0..f20b456 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -1,8 +1,4 @@ { config, lib, options, pkgs, ... }: { - imports = [ - - ]; - options.mods = { hyprland = { enable = lib.mkOption { @@ -92,11 +88,9 @@ 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'' + $mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy'' # regular programs "$mod SUPER,F,exec,firefox" @@ -114,14 +108,19 @@ "$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%" + (lib.mkIf config.mods.scripts.audio-control + ",XF86AudioMute,exec, audio-control mute") + (lib.mkIf config.mods.scripts.audio-control + ",XF86AudioLowerVolume,exec, audio-control sink -5%") + (lib.mkIf config.mods.scripts.audio-control + ",XF86AudioRaiseVolume,exec, audio-control 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%" + (lib.mkIf config.mods.scripts.change-brightness + ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-") + (lib.mkIf config.mods.scripts.change-brightness + ",XF86MonBrightnessUp,exec, change-brightness brightness +10%") # hyprland keybinds # misc diff --git a/modules/programs/oxi/default.nix b/modules/programs/oxi/default.nix new file mode 100644 index 0000000..269d1fa --- /dev/null +++ b/modules/programs/oxi/default.nix @@ -0,0 +1,57 @@ +{ lib, config, options, inputs, ... }: { + imports = [ ./oxidash.nix ./oxinoti.nix ./oxishut.nix ./oxipaste.nix ]; + options.mods.oxi = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables oxi programs"; + }; + ReSet = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables and configures ReSet"; + }; + }; + hyprdock = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables hyprdock"; + }; + }; + oxicalc = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables hyprdock"; + }; + }; + }; + config = lib.mkIf config.mods.oxi.enable + (lib.optionalAttrs (options ? home.packages) { + programs = { + hyprdock.enable = lib.mkIf config.mods.oxi.hyprdock.enable true; + oxicalc.enable = lib.mkIf config.mods.oxi.oxicalc.enable true; + ReSet = lib.mkIf config.mods.oxi.ReSet.enable { + enable = true; + config = { + plugins = [ + inputs.reset-plugins.packages."x86_64-linux".monitor + inputs.reset-plugins.packages."x86_64-linux".keyboard + ]; + plugin_config = { + Keyboard = { + path = + "/home/${config.conf.username}/.config/reset/keyboard.conf"; + }; + }; + }; + }; + }; + }); +} diff --git a/modules/programs/oxi/oxidash.nix b/modules/programs/oxi/oxidash.nix new file mode 100644 index 0000000..dfcf188 --- /dev/null +++ b/modules/programs/oxi/oxidash.nix @@ -0,0 +1,64 @@ +{ lib, config, options, ... }: { + options.mods.oxi.oxidash = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables and configures oxidash"; + }; + }; + config = lib.mkIf (config.mods.oxi.oxidash.enable && config.mods.oxi.enable) + (lib.optionalAttrs (options ? xdg.configFile) { + programs.oxidash.enable = true; + xdg.configFile."oxidash/style.css" = { + text = '' + #MainWindow { + border-radius: 10px; + } + + #MainBox { + border-radius: 10px; + } + + #MainButtonBox { + padding: 10px; + margin: 5px 0px 5px 0px; + border-radius: 5px; + border: solid 2px #327cd5; + } + + #DoNotDisturbButton { + } + + #ExitButton { + } + + #ClearNotificationsButton { + } + + #NotificationsWindow { + } + + .debugimage { + border: solid 3px blue; + } + + .Notification { + padding: 10px; + margin: 5px 0px 5px 0px; + border: solid 2px #327cd5; + border-radius: 5px; + } + + .CloseNotificationButton { + margin: 0px 5px 0px 10px; + } + .PictureButtonBox { + } + .BaseBox { + } + } + ''; + }; + }); +} diff --git a/modules/programs/oxi/oxinoti.nix b/modules/programs/oxi/oxinoti.nix new file mode 100644 index 0000000..5b9cfc9 --- /dev/null +++ b/modules/programs/oxi/oxinoti.nix @@ -0,0 +1,104 @@ +{ lib, config, options, ... }: { + options.mods.oxi.oxinoti = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables and configures oxinoti"; + }; + }; + config = lib.mkIf (config.mods.oxi.oxinoti.enable && config.mods.oxi.enable) + (lib.optionalAttrs (options ? xdg.configFile) { + programs.oxinoti.enable = true; + xdg.configFile."oxinoti/style.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; + border: solid 1px; + 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; + } + ''; + }; + xdg.configFile."oxinoti/oxinoti.toml" = { + text = '' + timeout = 3 + dnd_override = 2 + ''; + }; + }); +} diff --git a/modules/programs/oxi/oxipaste.nix b/modules/programs/oxi/oxipaste.nix new file mode 100644 index 0000000..c6783e4 --- /dev/null +++ b/modules/programs/oxi/oxipaste.nix @@ -0,0 +1,42 @@ +{ lib, config, options, ... }: { + options.mods.oxi.oxipaste = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables and configures oxipaste"; + }; + }; + config = lib.mkIf (config.mods.oxi.oxipaste.enable && config.mods.oxi.enable) + (lib.optionalAttrs (options ? xdg.configFile) { + programs.oxipaste.enable = true; + 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 { + } + ''; + }; + }); +} diff --git a/modules/programs/oxi/oxishut.nix b/modules/programs/oxi/oxishut.nix new file mode 100644 index 0000000..3dc0900 --- /dev/null +++ b/modules/programs/oxi/oxishut.nix @@ -0,0 +1,36 @@ +{ lib, config, options, ... }: { + options.mods.oxi.oxishut = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables and configures oxishut"; + }; + }; + config = lib.mkIf (config.mods.oxi.oxishut.enable && config.mods.oxi.enable) + (lib.optionalAttrs (options ? xdg.configFile) { + programs.oxishut.enable = true; + 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; + } + ''; + }; + }); +} diff --git a/modules/programs/scripts.nix b/modules/programs/scripts.nix new file mode 100644 index 0000000..9ee3cca --- /dev/null +++ b/modules/programs/scripts.nix @@ -0,0 +1,120 @@ +{ lib, config, options, pkgs, ... }: { + options.mods.scripts = { + change-brightness = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables the change-brightness script"; + }; + audio-control = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables the audio-control script"; + }; + scripts = lib.mkOption { + default = [ ]; + example = [ ]; + description = + "More scripts to be passed. (check existing ones for types and examples)"; + }; + }; + config = (lib.optionalAttrs (options ? home.packages) { + home.packages = [ + (lib.mkIf config.mods.scripts.change-brightness + (pkgs.writeShellScriptBin "change-brightness" '' + set_brightness() { + brightnessctl set "$1" + CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') + dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: $\{CURRENT\}%" + } + + if [ "$1" == "brightness" ]; then + set_brightness "$2" + fi + '')) + (lib.mkIf config.mods.scripts.audio-control + (pkgs.writeShellScriptBin "audio-control" '' + ncspot() { + NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n') + CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') + pactl set-sink-input-volume "$CHANGE" "$1" + VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') + notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: $\{VOLUME\}%" + } + + firefox() { + STRING=$(pactl list clients short | rg "firefox" | awk -F 'PipeWire' ' { print $1 "," } ' | tr -d ' \t\n') + # NUMS=',' read -r -a array <<< "$STRING" + readarray -td, NUMS <<<"$STRING" + declare -p NUMS + for index in "$\{!NUMS[@]\}"; do #"$\{!array[@]\}" + NUM=$(echo "$\{NUMS[index]\}" | tr -d ' \t\n') + CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') + pactl set-sink-input-volume "$CHANGE" "$1" + done + VOLUME=$(pactl list sink-inputs | rg "$\{NUMS[0]\}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') + notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: $\{VOLUME\}%" + } + + internal() { + SPEAKER=$(pactl list sinks | grep "Name" | grep "alsa" | awk -F ': ' '{ print $2 }') + if [ "$SPEAKER" != "" ]; then + pactl set-default-sink "$SPEAKER" + pactl set-sink-mute "$SPEAKER" false + DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') + notify-send "changed audio to "$DEVICE" " + else + notify-send "failed, not available!" + fi + } + + set_volume_sink() { + pactl set-sink-volume @DEFAULT_SINK@ "$1" + CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %') + notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: $\{CURRENT\}%" + } + + set_volume_source() { + pactl set-source-volume @DEFAULT_SOURCE@ "$1" + CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %') + notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: $\{CURRENT\}%" + } + + bluetooth() { + SPEAKER=$(pactl list sinks | grep "Name" | grep "blue" | awk -F ': ' '{ print $2 }') + if [ "$SPEAKER" != "" ]; then + pactl set-default-sink "$SPEAKER" + pactl set-sink-mute "$SPEAKER" false + DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') + notify-send "changed audio to "$DEVICE" " + else + notify-send "failed, not available!" + fi + } + + mute() { + pactl set-sink-mute @DEFAULT_SINK@ toggle + MUTE=$(pactl get-sink-mute @DEFAULT_SINK@) + notify-send -a "Audio" -r 994 -u low -i audio-volume-high "Audio: $MUTE" + } + + if [ "$1" == "internal" ]; then + internal + elif [ "$1" == "bluetooth" ]; then + bluetooth + elif [ "$1" == "firefox" ]; then + firefox "$2" + elif [ "$1" == "ncspot" ]; then + ncspot "$2" + elif [ "$1" == "mute" ]; then + mute + elif [ "$1" == "sink" ]; then + set_volume_sink "$2" + elif [ "$1" == "source" ]; then + set_volume_source "$2" + fi + '')) + ] ++ config.mods.scripts.scripts; + }); +} diff --git a/programs/oxi/default.nix b/programs/oxi/default.nix deleted file mode 100644 index c5001e4..0000000 --- a/programs/oxi/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -{ imports = [ ./oxipaste.nix ./oxinoti.nix ./oxishut.nix ./oxidash.nix ]; } - diff --git a/programs/oxi/oxidash.nix b/programs/oxi/oxidash.nix deleted file mode 100644 index cb0b2f2..0000000 --- a/programs/oxi/oxidash.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ - xdg.configFile."oxidash/style.css" = { - text = '' - #MainWindow { - border-radius: 10px; - } - - #MainBox { - border-radius: 10px; - } - - #MainButtonBox { - padding: 10px; - margin: 5px 0px 5px 0px; - border-radius: 5px; - border: solid 2px #327cd5; - } - - #DoNotDisturbButton { - } - - #ExitButton { - } - - #ClearNotificationsButton { - } - - #NotificationsWindow { - } - - .debugimage { - border: solid 3px blue; - } - - .Notification { - padding: 10px; - margin: 5px 0px 5px 0px; - border: solid 2px #327cd5; - border-radius: 5px; - } - - .CloseNotificationButton { - margin: 0px 5px 0px 10px; - } - .PictureButtonBox { - } - .BaseBox { - } - } - ''; - }; -} diff --git a/programs/oxi/oxinoti.nix b/programs/oxi/oxinoti.nix deleted file mode 100644 index 4623f93..0000000 --- a/programs/oxi/oxinoti.nix +++ /dev/null @@ -1,92 +0,0 @@ -{ config, ... }: { - xdg.configFile."oxinoti/style.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; - border: solid 1px; - 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; - } - ''; - }; - xdg.configFile."oxinoti/oxinoti.toml" = { - text = '' - timeout = 3 - dnd_override = 2 - ''; - }; -} diff --git a/programs/oxi/oxipaste.nix b/programs/oxi/oxipaste.nix deleted file mode 100644 index 9f3e9bc..0000000 --- a/programs/oxi/oxipaste.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - 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 { - } - ''; - }; -} diff --git a/programs/oxi/oxishut.nix b/programs/oxi/oxishut.nix deleted file mode 100644 index f973921..0000000 --- a/programs/oxi/oxishut.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - 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; - } - ''; - }; -} diff --git a/scripts/audio_control.sh b/scripts/audio_control.sh deleted file mode 100755 index 33cc652..0000000 --- a/scripts/audio_control.sh +++ /dev/null @@ -1,80 +0,0 @@ - -ncspot() { - NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n') - CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') - pactl set-sink-input-volume "$CHANGE" "$1" - VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') - notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: ${VOLUME}%" -} - -firefox() { - STRING=$(pactl list clients short | rg "firefox" | awk -F 'PipeWire' ' { print $1 "," } ' | tr -d ' \t\n') - # NUMS=',' read -r -a array <<< "$STRING" - readarray -td, NUMS <<<"$STRING" - declare -p NUMS - for index in "${!NUMS[@]}"; do #"${!array[@]}" - NUM=$(echo "${NUMS[index]}" | tr -d ' \t\n') - CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') - pactl set-sink-input-volume "$CHANGE" "$1" - done - VOLUME=$(pactl list sink-inputs | rg "${NUMS[0]}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') - notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: ${VOLUME}%" -} - -internal() { - SPEAKER=$(pactl list sinks | grep "Name" | grep "alsa" | awk -F ': ' '{ print $2 }') - if [ "$SPEAKER" != "" ]; then - pactl set-default-sink "$SPEAKER" - pactl set-sink-mute "$SPEAKER" false - DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') - notify-send "changed audio to "$DEVICE" " - else - notify-send "failed, not available!" - fi -} - -set_volume_sink() { - pactl set-sink-volume @DEFAULT_SINK@ "$1" - CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %') - notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: ${CURRENT}%" -} - -set_volume_source() { - pactl set-source-volume @DEFAULT_SOURCE@ "$1" - CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %') - notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: ${CURRENT}%" -} - -bluetooth() { - SPEAKER=$(pactl list sinks | grep "Name" | grep "blue" | awk -F ': ' '{ print $2 }') - if [ "$SPEAKER" != "" ]; then - pactl set-default-sink "$SPEAKER" - pactl set-sink-mute "$SPEAKER" false - DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') - notify-send "changed audio to "$DEVICE" " - else - notify-send "failed, not available!" - fi -} - -mute() { - pactl set-sink-mute @DEFAULT_SINK@ toggle - MUTE=$(pactl get-sink-mute @DEFAULT_SINK@) - notify-send -a "Audio" -r 994 -u low -i audio-volume-high "Audio: $MUTE" -} - -if [ "$1" == "internal" ]; then - internal -elif [ "$1" == "bluetooth" ]; then - bluetooth -elif [ "$1" == "firefox" ]; then - firefox "$2" -elif [ "$1" == "ncspot" ]; then - ncspot "$2" -elif [ "$1" == "mute" ]; then - mute -elif [ "$1" == "sink" ]; then - set_volume_sink "$2" -elif [ "$1" == "source" ]; then - set_volume_source "$2" -fi diff --git a/scripts/change-brightness b/scripts/change-brightness deleted file mode 100755 index 198dc44..0000000 --- a/scripts/change-brightness +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/bash - -set_brightness() { -brightnessctl set "$1" -CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') -dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ${CURRENT}%" -} - -if [ "$1" == "brightness" ]; then - set_brightness "$2" -fi - diff --git a/scripts/part.sh b/scripts/part.sh deleted file mode 100755 index ee9d5c3..0000000 --- a/scripts/part.sh +++ /dev/null @@ -1,23 +0,0 @@ -read -p "formatting disk $1 with hostname $2 is this correct? " IN -read -p "is the disk an nvme drive? " NVME -if [ "$IN" == "y" ]; then - echo "commencing" - #format disk - parted $1 mklabel gpt mkpart primary fat32 1MiB 512MiB mkpart primary linux-swap 512MiB 31029MiB mkpart primary btrfs 31029MiB 40% mkpart primary btrfs 40% 100% - if [ "$NVME" == "y" ]; then - e2label $1p1 BOOT - e2label $1p2 SWAP - e2label $1p3 ROOT - e2label $1p4 HOME - else - e2label "$1"1 BOOT - e2label "$1"2 SWAP - e2label "$1"3 ROOT - e2label "$1"4 HOME - fi - # install nixos - echo "formatting finished, continuing to install system" - nixos-install --flake ./nix/.#$2 --no-root-passwd -else - echo "aborting" -fi diff --git a/scripts/penguin1.sh b/scripts/penguin1.sh deleted file mode 100644 index 87dcf8e..0000000 --- a/scripts/penguin1.sh +++ /dev/null @@ -1 +0,0 @@ -echo "Do you have time to talk about the lord and savior PenguinOS?" | wl-copy diff --git a/scripts/penguin2.sh b/scripts/penguin2.sh deleted file mode 100644 index 7503221..0000000 --- a/scripts/penguin2.sh +++ /dev/null @@ -1,3 +0,0 @@ -echo "Are you tired about ads on your operating system? About forced telemetry? About arbitrary installation requirements like online accounts or forced hardware upgrades? -Fear not penguin is for you, free of charge and free to change. Penguin does not control you, you control penguin. -Don't delay, install penguin today: https://distrochooser.de/" | wl-copy From 5bcd222dc16cf5f8199c589cd689abe379aa750c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 14:10:49 +0200 Subject: [PATCH 094/330] Fix Readme formatting --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 06f40e7..7dc5891 100644 --- a/README.md +++ b/README.md @@ -39,17 +39,17 @@ The hardware.nix specifies additional NixOS configuration, while home.nix specif |- flake.nix\ |- flake.lock\ |- system1/\ -|---- configuration.nix (required)\ -|---- hardware.nix (optional)\ -|---- home.nix (optional) +|----- configuration.nix (required)\ +|----- hardware.nix (optional)\ +|----- home.nix (optional)\ |- system2/\ -|---- configuration.nix (required)\ -|---- hardware.nix (optional)\ -|---- home.nix (optional) +|----- configuration.nix (required)\ +|----- hardware.nix (optional)\ +|----- home.nix (optional)\ |- system3/\ -|---- configuration.nix (required) -|---- hardware.nix (optional)\ -|---- home.nix (optional) +|----- configuration.nix (required)\ +|----- hardware.nix (optional)\ +|----- home.nix (optional) Here is a minimal required configuration.nix (the TODOs mention a required change): From 5a2da131890014f4b3e0bbe2e3cc6ab0ebb5a502 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 14:12:00 +0200 Subject: [PATCH 095/330] Add example flake --- example/flake.nix | 45 +++++++++++++++++++++++++++ example/{ => hosts}/configuration.nix | 0 2 files changed, 45 insertions(+) create mode 100644 example/flake.nix rename example/{ => hosts}/configuration.nix (100%) diff --git a/example/flake.nix b/example/flake.nix new file mode 100644 index 0000000..559ec50 --- /dev/null +++ b/example/flake.nix @@ -0,0 +1,45 @@ +{ + description = "some dots"; + + inputs = { + dashvim.url = "github:DashieTM/DashVim"; + hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; + ironbar.url = + "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; + anyrun.url = "github:Kirottu/anyrun"; + nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; + stable.url = "github:NixOs/nixpkgs/nixos-24.05"; + dashNix = { + url = "github:DashieTM/DashNix"; + inputs = { + nixpkgs.follows = "nixpkgs"; + stable.follows = "stable"; + dashvim.follows = "dashvim"; + hyprland.follows = "hyprland"; + ironbar.follows = "ironbar"; + anyrun.follows = "anyrun"; + }; + }; + }; + + outputs = { ... }@inputs: { + nixosConfigurations = + (inputs.dashNix.dashNixLib.build_systems [ "example" ] ./hosts/.); + }; + + nixConfig = { + builders-use-substitutes = true; + + extra-substituters = [ + "https://hyprland.cachix.org" + "https://anyrun.cachix.org" + "https://cache.garnix.io" + ]; + + extra-trusted-public-keys = [ + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" + "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + ]; + }; +} diff --git a/example/configuration.nix b/example/hosts/configuration.nix similarity index 100% rename from example/configuration.nix rename to example/hosts/configuration.nix From 809b60e3cee49c751daba2b26724ea011fbf5931 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 14:13:57 +0200 Subject: [PATCH 096/330] Change directory example --- README.md | 25 ++++++++++--------- example/hosts/{ => example}/configuration.nix | 0 example/hosts/example/hardware.nix | 1 + example/hosts/example/home.nix | 1 + 4 files changed, 15 insertions(+), 12 deletions(-) rename example/hosts/{ => example}/configuration.nix (100%) create mode 100644 example/hosts/example/hardware.nix create mode 100644 example/hosts/example/home.nix diff --git a/README.md b/README.md index 7dc5891..6a2f608 100644 --- a/README.md +++ b/README.md @@ -38,18 +38,19 @@ The hardware.nix specifies additional NixOS configuration, while home.nix specif |- flake.nix\ |- flake.lock\ -|- system1/\ -|----- configuration.nix (required)\ -|----- hardware.nix (optional)\ -|----- home.nix (optional)\ -|- system2/\ -|----- configuration.nix (required)\ -|----- hardware.nix (optional)\ -|----- home.nix (optional)\ -|- system3/\ -|----- configuration.nix (required)\ -|----- hardware.nix (optional)\ -|----- home.nix (optional) +|- hosts/\ +|--- system1/\ +|------ configuration.nix (required)\ +|------ hardware.nix (optional)\ +|------ home.nix (optional)\ +|--- system2/\ +|------ configuration.nix (required)\ +|------ hardware.nix (optional)\ +|------ home.nix (optional)\ +|--- system3/\ +|------ configuration.nix (required)\ +|------ hardware.nix (optional)\ +|------ home.nix (optional) Here is a minimal required configuration.nix (the TODOs mention a required change): diff --git a/example/hosts/configuration.nix b/example/hosts/example/configuration.nix similarity index 100% rename from example/hosts/configuration.nix rename to example/hosts/example/configuration.nix diff --git a/example/hosts/example/hardware.nix b/example/hosts/example/hardware.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/example/hosts/example/hardware.nix @@ -0,0 +1 @@ +{} diff --git a/example/hosts/example/home.nix b/example/hosts/example/home.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/example/hosts/example/home.nix @@ -0,0 +1 @@ +{} From e8d4d4e861175d2b5a449f3bc80b2b01214510ea Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 14:14:41 +0200 Subject: [PATCH 097/330] Update Readme with scripts --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6a2f608..ba5b930 100644 --- a/README.md +++ b/README.md @@ -151,3 +151,4 @@ For package lists, please check the individual modules, as the lists can be long - fish: Enables and configures fish shell - kitty: Enables and configures kitty terminal - oxi: My own programs, can be selectively disabled, or as a whole +- scripts: Various preconfigured scripts with the ability to add more From bee8a21990d72dd00df3aee515eb96b0b5d05566 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 14:22:23 +0200 Subject: [PATCH 098/330] Fix scripts escaping --- modules/programs/scripts.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/programs/scripts.nix b/modules/programs/scripts.nix index 9ee3cca..719ec5d 100644 --- a/modules/programs/scripts.nix +++ b/modules/programs/scripts.nix @@ -26,7 +26,7 @@ set_brightness() { brightnessctl set "$1" CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') - dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: $\{CURRENT\}%" + dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%" } if [ "$1" == "brightness" ]; then @@ -40,7 +40,7 @@ CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') pactl set-sink-input-volume "$CHANGE" "$1" VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') - notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: $\{VOLUME\}%" + notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: ''${VOLUME}%" } firefox() { @@ -48,13 +48,13 @@ # NUMS=',' read -r -a array <<< "$STRING" readarray -td, NUMS <<<"$STRING" declare -p NUMS - for index in "$\{!NUMS[@]\}"; do #"$\{!array[@]\}" - NUM=$(echo "$\{NUMS[index]\}" | tr -d ' \t\n') + for index in "''${!NUMS[@]}"; do #"''${!array[@]}" + NUM=$(echo "''${NUMS[index]}" | tr -d ' \t\n') CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') pactl set-sink-input-volume "$CHANGE" "$1" done - VOLUME=$(pactl list sink-inputs | rg "$\{NUMS[0]\}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') - notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: $\{VOLUME\}%" + VOLUME=$(pactl list sink-inputs | rg "''${NUMS[0]}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') + notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: ''${VOLUME}%" } internal() { @@ -72,13 +72,13 @@ set_volume_sink() { pactl set-sink-volume @DEFAULT_SINK@ "$1" CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %') - notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: $\{CURRENT\}%" + notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: ''${CURRENT}%" } set_volume_source() { pactl set-source-volume @DEFAULT_SOURCE@ "$1" CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %') - notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: $\{CURRENT\}%" + notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: ''${CURRENT}%" } bluetooth() { From a1b70baa7847bc09120a8939557a93226590686f Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 14:35:32 +0200 Subject: [PATCH 099/330] Move secrets to individual configs --- example/flake.nix | 2 +- home/default.nix | 4 ++-- lib/default.nix | 8 ++++---- modules/programs/sops.nix | 4 ++-- secrets/secrets.yaml | 39 --------------------------------------- 5 files changed, 9 insertions(+), 48 deletions(-) delete mode 100644 secrets/secrets.yaml diff --git a/example/flake.nix b/example/flake.nix index 559ec50..056aef8 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -24,7 +24,7 @@ outputs = { ... }@inputs: { nixosConfigurations = - (inputs.dashNix.dashNixLib.build_systems [ "example" ] ./hosts/.); + (inputs.dashNix.dashNixLib.build_systems [ "example" ] ./.); }; nixConfig = { diff --git a/home/default.nix b/home/default.nix index 4f7804a..4e6e38e 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,4 +1,4 @@ -{ inputs, pkgs, config, lib, mod, additionalHomeConfig, ... }: +{ inputs, pkgs, config, lib, mod, additionalHomeConfig, root, ... }: let base_imports = [ inputs.anyrun.homeManagerModules.default @@ -27,7 +27,7 @@ in { home-manager = { useGlobalPkgs = true; useUserPackages = true; - extraSpecialArgs = { inherit inputs; }; + extraSpecialArgs = { inherit inputs root; }; users.${config.conf.username} = { imports = [ ./common.nix ./xdg.nix ./themes ./sync.nix ] ++ base_imports diff --git a/lib/default.nix b/lib/default.nix index 82420fd..30b920c 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -5,11 +5,11 @@ in { builtins.listToAttrs (map (name: { name = name; value = let - mod = root + /${name}/configuration.nix; - additionalNixosConfig = root + /${name}/hardware.nix; - additionalHomeConfig = root + /${name}/home.nix; + mod = root + /hosts/${name}/configuration.nix; + additionalNixosConfig = root + /hosts/${name}/hardware.nix; + additionalHomeConfig = root + /hosts/${name}/home.nix; in inputs.nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs pkgs mod additionalHomeConfig; }; + specialArgs = { inherit inputs pkgs mod additionalHomeConfig root; }; modules = [ inputs.home-manager.nixosModules.home-manager inputs.stylix.nixosModules.stylix diff --git a/modules/programs/sops.nix b/modules/programs/sops.nix index c93559c..6a8907b 100644 --- a/modules/programs/sops.nix +++ b/modules/programs/sops.nix @@ -1,4 +1,4 @@ -{ lib, pkgs, config, options, ... }: { +{ lib, pkgs, config, options, root, ... }: { options.mods.sops = { enable = lib.mkOption { default = true; @@ -15,7 +15,7 @@ home = "~/.gnupg"; sshKeyPaths = [ ]; }; - defaultSopsFile = ../../secrets/secrets.yaml; + defaultSopsFile = root + /secrets/secrets.yaml; secrets = { hub = { }; lab = { }; diff --git a/secrets/secrets.yaml b/secrets/secrets.yaml deleted file mode 100644 index b86312f..0000000 --- a/secrets/secrets.yaml +++ /dev/null @@ -1,39 +0,0 @@ -hub: ENC[AES256_GCM,data:69czN3kqTYCbiwXPPUpaThm7lrpM/43nUcE0Ee3m1AscB0Huqp1LzmgVBVZ6X/NVamNipfRzN4KePmFqkGBT7V6qIewX0L6vYpLBJ7pwdv1xRF+FEkrfikqfdec28AwNCOXIOQZq3oknPpGoAVAQAsQo+SxwPaP4vZKbYpS9EA727E9REd4dVcBRW2GN3ystiX+L/Rz+mizHQfVGb6LHhj6AZWB/SGhcfGJZCfoKgwIFekjiSJhdSQemmtX1x+b7yxUwQqsUBPVtSf73zUCIYVjLwx4bdZ5OF8kITRF8ZIfp+YLN24Lt5Qeatd4FBO5AJTFOgjRjU38z6Xy3CwZMv0hp3IwqfXUd+47wiGSXSs2lygntWodcG96/KUubrChWQQxfE0vNIAu/l2sjwwre32E9mXBYn6uHFD+/kroL531KscdKdnpAACnwsomMSiJIWz3JQa6aljDeUd90VFH2kOf8VtGbqkFL9VfTrtx/dnTMaK2VJmO+bZTge+evIBgtH0Y2DP/GmaempeZIyJydx03uVCFDi+uEfGx10HMty0sUS0k=,iv:1/+m6CmUojTS4d7B76zzrwC3k5M18qkQ6q1458kG1QI=,tag:463IcCP3Tfb4JWS5K7hCjw==,type:str] -lab: ENC[AES256_GCM,data:IbIHYKp7kAP09r2t6bppLZraRIxjEsIXbfIG/R5QTGzy1uVk5LZivzepkJP6kOf3qWt/wZiBb5qLcNyL/+RZMfaV5KvlvtKhCVQ/D5qS3qB/4wKvPTdMiMzc9VTnLzUaDExMAtiYV/tcJGC/xgpkrwizJwy5WEA/d8EKUDs1p//vpv8b6035k1oV/49sw3cJ/eMGgvnuJ3sKMKpkXbUJ4zyyHKPCFoaCGdplCJDn5hZloaqxBjdZctAEgsVvKiq2HyIMNqH3YaKEJZhwMrwQMSioHA1WnBQMc0tnqWAi9rhpm8pY553HaQe0U/lpS1W5IvLj7MVxat3911WK/s95oEVLY7b7dZAzmdMau4IF/ozhxC6i2oSELw+VNqiZ/yJwfqJ7e+89UnxZdi7xMJpikOfE1qzGIPaEHj2caSf+U2sldqsRyqdf+oJK9Sof4djn5diEPkhTyLkqFCGC6QakEbprcbstBcjwu65G4BTTDy/3FJYUt0NZTHy7HDjsn/7b2Sxa1XgWbWOGBwbmMqpsSE6eJC2WmWDWtrjgO7rV6XWwzm8=,iv:uVkMdjENhj2OnHnmCyfpQAdQeXwnvTIdExDxxWVIRKc=,tag:+3lf+T2Gpa4fLC3FhbLa6A==,type:str] -dashie: ENC[AES256_GCM,data:P/+ZEelpLFrcsk8hx7CF999Wlv5OWiybjPVT1ULogCECpBAxYJglisINyJGGBSBLnp4FF45kCpFb/xsuLZGwe/o4LK6Lbf6/uwE2HSXNMMXjkD8lk3zINNXfWls6s9f/XnHsKjwp0gDGhcfMM+mbg8EAyCfkdLUWYapNQc+CIr1ilAvjzDpGhrjYw2j7FEEKiteUxPTg34DY6iKlxkuGuon4Yb2r1d5+KMiHKouomjRkvS3cAgCyTKIVybYEhCQthHJh0j76Z7O5wvfXeOkLFWE68arvOci2MC7ecx6bVUrJQDTyUSpyO9TqJneIh36STZQs9Zk24sSY8jdt59roaJPylfRmbSRnlH0Wg5vzbuu4zM/ffTaiYRZkKBYbX9wmyNh4nW7EJOD9i4lE+65VxWYI4M0EuJXqI4vaIEo2PexAWci9cp0Ui6BmY2G4PoEz0P48p2WXPnQOwSSBYY9HfeAs+oXhB4Bi+I1VUAR/BkzihBvb+d9AWcbZIurMc2h7Vlz58/2E8+QVzljHfN+pakU/FhWCt2VRhhimyF8h3Nacbk0=,iv:kmFBTzx9BNHRGv+FzdwrIvVMORprhilG8tN2C3J4BRY=,tag:jRvRDkvUE14JZZem13/5Vw==,type:str] -hub_pub: ENC[AES256_GCM,data:6vIAQWFMIR+HnERg+A4jKu/MW+e7eLQplmdJyBeuBL9tvxH1idT8C6zvMEyIPhelU6+ZYQghAlvuC4MtktI/Te0f40XvdK3Gq/DmfBrLRUgLdSjUvMeGuuKnpRX0mjCaw77YW5ES4ptZ,iv:PC9hELA0234JCk2rx6FJhMlKKaKO8WrIezJ2Q2nv6EE=,tag:R8oPaH3Sbr23oRX++OP/qg==,type:str] -lab_pub: ENC[AES256_GCM,data:rlHCiqGnoaPiQBaZQRT+bEjfNF7jNO4CGPoCOKJ1o7nv7i2jPy6Bq9OMBHXsMHI9oGfEhyKCDHdpJ65aI07KJC/fMoMoAyiNmalwNOn26jbgj84mfENS3IYbfKxQVXAUCJHE5m1cFsm7,iv:8SLdHLYq2tlfHBjdeDoByEzGuu3TURj4+KJvQfPuaWA=,tag:mmGXlRwQ0UoVIAJE6d1OUQ==,type:str] -dashie_pub: ENC[AES256_GCM,data:k6JIJOKDJcGSW47Z8y0EYxNl/vaPRVbIn35CSA57snEzYnk5GpU+1NfPDniWoAGRkpIwicgN6kpzssRlKOmVudvwMejSLv4VkLRBjrsApVFECwoIBLUNGUSDaMcIwC/BYu4jfjGaozBj,iv:0EZ0rptLdmcuTU1BGOILaaDTrc7aZGJCCxgjUESqi0M=,tag:dlQs/ugBGxnSrNj/bRSJSw==,type:str] -server_pub: ENC[AES256_GCM,data:87nTYzA8CykOPjfZS2As8+JB/ysJvHXFYbPIBA8Nus8Y3nI3Tl2F/f7mUVFBT+4mmOFTTwxghEnkpgTg/vzUm6W4wb19rIcv11eM7HYaGl5oI44a44rBJn2+PKlfIgXVgaY=,iv:O7I7kkZ44McXzCt3wH1cM3MJCShxu2O+0U0+Y6rwePo=,tag:q5D5AGMmFyiNhQNR8dRB+g==,type:str] -nextcloud: ENC[AES256_GCM,data:hjpS1WKsQJ6U2XX3GAbVP93VBAE8hKUdBRD9nI5Yiw==,iv:QaJNScNaxLLArzHLutIWdgN4m+9F0+Ym0FOcL53ygeQ=,tag:PamHgZJ+rsb3Dno2kEZRpQ==,type:str] -nextcloud_server: ENC[AES256_GCM,data:ohp0y08skd/NL7KhPE6pfezghY7UVL+aYT0=,iv:Rc5cnej+721aNrJGkE6/nTtwYC6Jg54da5bKu6mH1zY=,tag:EfiGA1DT87hGtNdMFZVBVA==,type:str] -nextcloud_admin: ENC[AES256_GCM,data:yRpnyoQ+rSiwaQoTp3I=,iv:Ii8ge7nkmtX1bVq4vdwEaLc3QFSrt0fbyHao7IDgtf0=,tag:T5YbThFN6B9fdBU/jhqdmQ==,type:str] -forgejo_server: ENC[AES256_GCM,data:4RLdo5pRQ17QlbpFFciFDrRocPj1J9W0hh4=,iv:AaTjk/ysWGubHSwzigyBWs7CGAOHnrbK7B+gUGFXETw=,tag:5rXwLSSSthq7nVIw5mIhLw==,type:str] -matrix_server: ENC[AES256_GCM,data:fH+5kX6VyNUXzAmNkLEGf8KmhIWuTGsG3r0=,iv:B2ltogyJaT1zcyZfHdrtB4HfnLZuWMbC7LwCT+IIPlU=,tag:jlOjBdypkrdc8MGp1fqSBQ==,type:str] -mautrix_signal_server: ENC[AES256_GCM,data:xBHtTtf725wvSltd7EgP3u/GszsaKR1D/ng=,iv:KZorceuZJulvBYyOSKaFv0UxAgMzIuXnBSDmqeqZT80=,tag:k4Dqvq7n39q6rgfB9hB8/g==,type:str] -mautrix_whatsapp_server: ENC[AES256_GCM,data:Ap5NZ9+kkusMTJlmiH2vxj2fkp1RZPSOM5s=,iv:/F3sP/7bw0uIualG8E+Mtxp60xW8OlHBBZCui887oaA=,tag:CawIZEpmbmxRYhq2fb1vDw==,type:str] -mautrix_discord_server: ENC[AES256_GCM,data:8MU3URa52h0sDabl+6bYZ0z0ib/S8KzYb3k=,iv:uSqT0MsK1qcphyd+5xZZ8aDqxQhZX8mKBP+2tHHG04I=,tag:mdepj3ombSru96es+lFIQQ==,type:str] -access: ENC[AES256_GCM,data:BHB8v/uVqj5Hn2J6OUHloxdbrc9EVq6mCz9n4rFKUPK5H6ajP9L+zWtxkPLgr6sljEL3fPdlYQUlRaSJTAeygQnuXzM=,iv:mFv4AGSG0ok658VK5HcRBcQpLLK7NM9QJj4FMCJMj4Q=,tag:G4SIkT4TfoR/lW+kZmygiA==,type:str] -sops: - kms: [] - gcp_kms: [] - azure_kv: [] - hc_vault: [] - age: [] - lastmodified: "2024-08-04T14:17:56Z" - mac: ENC[AES256_GCM,data:cDusfY0990Q60IrprG8SEYwpGkrvfxIBt6qS/e5ikKqCTYpp9ei1BiecLPQ6U+6rgoRLWACGsq3idJI7cApVxqAfQcZXFjaxO5TxGKP8VyO//nhoPouT1iRfue1oref8D4P7cE/T2GzNFbDP0aUHXP0bBGo76TGLTzhkJ3Gzm7g=,iv:Va+WbAY4amrOUp+6pFtt8vf4jXxRF19oI3pD6I3dEuw=,tag:EfDeBf3S0ReetiWywLUiAQ==,type:str] - pgp: - - created_at: "2024-05-14T14:35:02Z" - enc: |- - -----BEGIN PGP MESSAGE----- - - hF4DnA7H9LSNcZ4SAQdAJZzOF6GZ1VTNt2rccso305pkL5AGeeAPV0LtfpZkkVEw - 2GTK/N4MmE0YyjUAP+W3fkGawgzQDRsjSF+AB936DcL3BtfGktChl3agFBfWqprs - 1GgBCQIQ7rj9kooZpsYX93x5TSz2ZN3aeu/dcx3lHYwyqtTxdTMjK44LngfhO0qZ - zc/951nhmt6Vkj0PJY4QRkKiLPoVo/lgG4+1dv9hSJULRuZwvFQfv/7UXzq0tKrl - /xqggA6uP/rogA== - =zJOX - -----END PGP MESSAGE----- - fp: 92D29D420B5D95FCA46A12FE778CFA7A623614F3 - unencrypted_suffix: _unencrypted - version: 3.9.0 From 785af695df38f0a73a40921fa41f55cae1b2512c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 14:38:35 +0200 Subject: [PATCH 100/330] Modularize secrets --- example/hosts/secrets/secrets.md | 3 +++ example/hosts/secrets/secrets.yaml | 0 modules/programs/sops.nix | 20 +++++++++++++------- 3 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 example/hosts/secrets/secrets.md create mode 100644 example/hosts/secrets/secrets.yaml diff --git a/example/hosts/secrets/secrets.md b/example/hosts/secrets/secrets.md new file mode 100644 index 0000000..86d99c6 --- /dev/null +++ b/example/hosts/secrets/secrets.md @@ -0,0 +1,3 @@ +# Secrets + +This file is for sops-nix and is also where your keys for various secrets will be stored. diff --git a/example/hosts/secrets/secrets.yaml b/example/hosts/secrets/secrets.yaml new file mode 100644 index 0000000..e69de29 diff --git a/modules/programs/sops.nix b/modules/programs/sops.nix index 6a8907b..be52697 100644 --- a/modules/programs/sops.nix +++ b/modules/programs/sops.nix @@ -6,6 +6,18 @@ type = lib.types.bool; description = "Enable sops secrets"; }; + secrets = lib.mkOption { + default = { + hub = { }; + lab = { }; + ${config.conf.username} = { }; + nextcloud = { }; + access = { }; + }; + example = { }; + type = with lib.types; attrsOf anything; + description = "secrets for sops"; + }; }; config = lib.mkIf config.mods.sops.enable (lib.optionalAttrs (options ? home.packages) { @@ -16,13 +28,7 @@ sshKeyPaths = [ ]; }; defaultSopsFile = root + /secrets/secrets.yaml; - secrets = { - hub = { }; - lab = { }; - ${config.conf.username} = { }; - nextcloud = { }; - access = { }; - }; + secrets = config.mods.sops.secrets; }; systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ]; From 580b903cf5e8654fdd143b6ade22aa913b81d7b4 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 16:42:13 +0200 Subject: [PATCH 101/330] Remove default secrets --- modules/programs/sops.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/programs/sops.nix b/modules/programs/sops.nix index be52697..8d93b88 100644 --- a/modules/programs/sops.nix +++ b/modules/programs/sops.nix @@ -7,14 +7,14 @@ description = "Enable sops secrets"; }; secrets = lib.mkOption { - default = { + default = { }; + example = { hub = { }; lab = { }; ${config.conf.username} = { }; nextcloud = { }; access = { }; }; - example = { }; type = with lib.types; attrsOf anything; description = "secrets for sops"; }; From c4f6dae54b18171c9c88b38312f44e14cd30aeaf Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 17:50:43 +0200 Subject: [PATCH 102/330] Add inline documentation for lib --- lib/default.nix | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/lib/default.nix b/lib/default.nix index 30b920c..225bdd5 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,6 +1,29 @@ -{ inputs, pkgs, ... }: -let -in { +{ inputs, pkgs, ... }: { + /* * + Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. + + A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. + + The second parameter is the root of your configuration, which should be ./. in most cases. + + # Inputs + + `systems` + + : a list of strings with hostnames + + `root` + + : the root path of your configuration + + # Example usage + :::{.example} + ```nix + nixosConfigurations = + (inputs.dashNix.dashNixLib.build_systems [ "nixos" ] ./.); + ``` + ::: + */ build_systems = systems: root: builtins.listToAttrs (map (name: { name = name; From 8c9f699269a47ce03392d4df4f37a952f5b19deb Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 18:16:09 +0200 Subject: [PATCH 103/330] Add inline documentation for lib --- lib/default.nix | 91 ++++++++++++++++++++++++++++--------------------- 1 file changed, 53 insertions(+), 38 deletions(-) diff --git a/lib/default.nix b/lib/default.nix index 225bdd5..8188fb3 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,48 +1,63 @@ -{ inputs, pkgs, ... }: { - /* * - Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. +{ inputs, pkgs, ... }: +{ + /** + Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. - A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. + A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. - The second parameter is the root of your configuration, which should be ./. in most cases. + The second parameter is the root of your configuration, which should be ./. in most cases. - # Inputs + # Inputs - `systems` + `systems` - : a list of strings with hostnames + : a list of strings with hostnames - `root` + `root` - : the root path of your configuration + : the root path of your configuration - # Example usage - :::{.example} - ```nix - nixosConfigurations = - (inputs.dashNix.dashNixLib.build_systems [ "nixos" ] ./.); - ``` - ::: + # Example usage + :::{.example} + ```nix + nixosConfigurations = + (build_systems [ "nixos" ] ./.); + ``` + ::: */ - build_systems = systems: root: - builtins.listToAttrs (map (name: { - name = name; - value = let - mod = root + /hosts/${name}/configuration.nix; - additionalNixosConfig = root + /hosts/${name}/hardware.nix; - additionalHomeConfig = root + /hosts/${name}/home.nix; - in inputs.nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs pkgs mod additionalHomeConfig root; }; - modules = [ - inputs.home-manager.nixosModules.home-manager - inputs.stylix.nixosModules.stylix - ../base - ../home - ../modules - mod - ] ++ inputs.nixpkgs.lib.optional - (builtins.pathExists additionalNixosConfig) additionalNixosConfig - ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; - }; - }) systems); + build_systems = + systems: root: + builtins.listToAttrs ( + map (name: { + name = name; + value = + let + mod = root + /hosts/${name}/configuration.nix; + additionalNixosConfig = root + /hosts/${name}/hardware.nix; + additionalHomeConfig = root + /hosts/${name}/home.nix; + in + inputs.nixpkgs.lib.nixosSystem { + specialArgs = { + inherit + inputs + pkgs + mod + additionalHomeConfig + root + ; + }; + modules = + [ + inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + ../base + ../home + ../modules + mod + ] + ++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig + ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; + }; + }) systems + ); } From a90a9c3a8e908eaffc5baa5918f160bbab1a4d96 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 19:10:41 +0200 Subject: [PATCH 104/330] Format with nixfmt-rfc --- base/common_hardware.nix | 46 ++++- base/default.nix | 8 +- base/env.nix | 6 +- base/xkb_layout.nix | 3 +- example/flake.nix | 12 +- example/hosts/example/configuration.nix | 17 +- example/hosts/example/hardware.nix | 2 +- example/hosts/example/home.nix | 2 +- flake.nix | 17 +- home/common.nix | 17 +- home/default.nix | 30 ++- home/sync.nix | 81 ++++---- home/themes/default.nix | 23 ++- home/xdg.nix | 86 ++++++--- lib/default.nix | 2 + modules/conf.nix | 57 ++++-- modules/default.nix | 7 +- modules/programs/acpid.nix | 16 +- modules/programs/base_packages.nix | 162 ++++++++-------- modules/programs/bluetooth.nix | 16 +- modules/programs/coding.nix | 16 +- modules/programs/drives.nix | 109 +++++++---- modules/programs/firefox.nix | 16 +- modules/programs/fish.nix | 16 +- modules/programs/flatpak.nix | 29 ++- modules/programs/gaming.nix | 32 +++- modules/programs/git.nix | 51 ++--- modules/programs/gnome_services.nix | 30 ++- modules/programs/gpu.nix | 50 +++-- modules/programs/greetd.nix | 118 +++++++----- modules/programs/home_packages.nix | 143 +++++++------- modules/programs/hyprland/anyrun.nix | 25 ++- modules/programs/hyprland/hyprland.nix | 65 ++++--- modules/programs/hyprland/hyprlock.nix | 56 +++--- modules/programs/hyprland/hyprpaper.nix | 23 ++- modules/programs/hyprland/ironbar.nix | 183 +++++++++--------- modules/programs/kde_connect.nix | 43 +++-- modules/programs/keepassxc.nix | 26 ++- modules/programs/kitty.nix | 35 ++-- modules/programs/layout.nix | 24 ++- modules/programs/media.nix | 81 ++++---- modules/programs/ncspot.nix | 87 +++++---- modules/programs/nextcloud.nix | 15 +- modules/programs/oxi/default.nix | 26 ++- modules/programs/oxi/oxidash.nix | 15 +- modules/programs/oxi/oxinoti.nix | 15 +- modules/programs/oxi/oxipaste.nix | 15 +- modules/programs/oxi/oxishut.nix | 15 +- modules/programs/piper.nix | 19 +- modules/programs/printing.nix | 16 +- modules/programs/scripts.nix | 196 ++++++++++--------- modules/programs/sops.nix | 17 +- modules/programs/starship.nix | 241 ++++++++++++++---------- modules/programs/stylix.nix | 77 +++++--- modules/programs/teams.nix | 30 +-- modules/programs/virtualbox.nix | 11 +- modules/programs/xone.nix | 11 +- modules/programs/yazi/default.nix | 15 +- modules/programs/yazi/yazi.nix | 180 +++++++++++++----- override/teams.nix | 13 +- 60 files changed, 1756 insertions(+), 1039 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 5071382..5b6b64c 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -1,10 +1,19 @@ -{ pkgs, config, lib, modulesPath, ... }: -let username = config.conf.username; -in { +{ + pkgs, + config, + lib, + modulesPath, + ... +}: +let + username = config.conf.username; +in +{ imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; # Bootloader. boot = { + consoleLogLevel = 0; loader = { systemd-boot = { enable = true; @@ -12,11 +21,26 @@ in { }; efi.canTouchEfiVariables = true; }; - plymouth = { enable = true; }; + plymouth = { + enable = true; + }; kernelPackages = config.conf.kernel; - initrd.availableKernelModules = - [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; - kernelParams = [ ''resume="PARTLABEL=SWAP"'' ] ++ config.conf.boot_params; + initrd = { + verbose = false; + availableKernelModules = [ + "nvme" + "xhci_pci" + "ahci" + "usbhid" + "usb_storage" + "sd_mod" + ]; + }; + kernelParams = [ + ''resume="PARTLABEL=SWAP"'' + ''quiet'' + ''udev.log_level=3'' + ] ++ config.conf.boot_params; }; # Enable networking @@ -66,8 +90,7 @@ in { # Enable sound with pipewire. hardware = { pulseaudio.enable = false; - cpu.${config.conf.cpu}.updateMicrocode = - lib.mkDefault config.hardware.enableRedistributableFirmware; + cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; }; security.rtkit.enable = true; @@ -92,7 +115,10 @@ in { "video" "audio" ]; - packages = with pkgs; [ home-manager xdg-desktop-portal-gtk ]; + 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"; diff --git a/base/default.nix b/base/default.nix index 5a3407b..eafd8a5 100644 --- a/base/default.nix +++ b/base/default.nix @@ -1 +1,7 @@ -{ 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 9b76e00..9a62d7e 100644 --- a/base/env.nix +++ b/base/env.nix @@ -1,8 +1,8 @@ -{ pkgs, config, ... }: { +{ 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 5b407e0..ecbc97c 100644 --- a/base/xkb_layout.nix +++ b/base/xkb_layout.nix @@ -10,7 +10,8 @@ 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/example/flake.nix b/example/flake.nix index 056aef8..6f42a57 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -4,8 +4,7 @@ inputs = { dashvim.url = "github:DashieTM/DashVim"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; - ironbar.url = - "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; + ironbar.url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; anyrun.url = "github:Kirottu/anyrun"; nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; stable.url = "github:NixOs/nixpkgs/nixos-24.05"; @@ -22,10 +21,11 @@ }; }; - outputs = { ... }@inputs: { - nixosConfigurations = - (inputs.dashNix.dashNixLib.build_systems [ "example" ] ./.); - }; + outputs = + { ... }@inputs: + { + nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems [ "example" ] ./.); + }; nixConfig = { builders-use-substitutes = true; diff --git a/example/hosts/example/configuration.nix b/example/hosts/example/configuration.nix index 54240e4..e1ca701 100644 --- a/example/hosts/example/configuration.nix +++ b/example/hosts/example/configuration.nix @@ -24,7 +24,12 @@ drive = { device = "/dev/disk/by-label/BOOT"; fsType = "vfat"; - options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; + options = [ + "rw" + "fmask=0022" + "dmask=0022" + "noatime" + ]; }; } { @@ -32,7 +37,11 @@ drive = { device = "/dev/disk/by-label/ROOT"; fsType = "ext4"; - options = [ "noatime" "nodiratime" "discard" ]; + options = [ + "noatime" + "nodiratime" + "discard" + ]; }; } ]; @@ -50,6 +59,8 @@ kde_connect.enable = true; # TODO change this to your main resolution # -> this will be your login manager - greetd = { resolution = "3440x1440@180"; }; + greetd = { + resolution = "3440x1440@180"; + }; }; } diff --git a/example/hosts/example/hardware.nix b/example/hosts/example/hardware.nix index 0967ef4..ffcd441 100644 --- a/example/hosts/example/hardware.nix +++ b/example/hosts/example/hardware.nix @@ -1 +1 @@ -{} +{ } diff --git a/example/hosts/example/home.nix b/example/hosts/example/home.nix index 0967ef4..ffcd441 100644 --- a/example/hosts/example/home.nix +++ b/example/hosts/example/home.nix @@ -1 +1 @@ -{} +{ } diff --git a/flake.nix b/flake.nix index 98736a6..c0b027a 100644 --- a/flake.nix +++ b/flake.nix @@ -5,7 +5,9 @@ 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"; @@ -23,8 +25,7 @@ hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; ironbar = { - url = - "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; + url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; }; stylix.url = "github:danth/stylix"; @@ -47,11 +48,14 @@ }; }; - outputs = { ... }@inputs: + 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"; @@ -61,7 +65,8 @@ allowUnfree = true; }; }; - in { + in + { dashNixLib = import ./lib { inherit inputs pkgs; }; dashNixInputs = inputs; stablePkgs = stable; diff --git a/home/common.nix b/home/common.nix index ecedf27..2cdcbcd 100644 --- a/home/common.nix +++ b/home/common.nix @@ -1,6 +1,13 @@ -{ config, lib, options, ... }: -let username = config.conf.username; -in { +{ + config, + lib, + options, + ... +}: +let + username = config.conf.username; +in +{ manual = { html.enable = false; json.enable = false; @@ -17,7 +24,9 @@ in { sessionPath = [ "$HOME/.cargo/bin" ]; - sessionVariables = { GOROOT = "$HOME/.go"; }; + sessionVariables = { + GOROOT = "$HOME/.go"; + }; keyboard = null; diff --git a/home/default.nix b/home/default.nix index 4e6e38e..59049e8 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,4 +1,13 @@ -{ inputs, pkgs, config, lib, mod, additionalHomeConfig, root, ... }: +{ + inputs, + pkgs, + config, + lib, + mod, + additionalHomeConfig, + root, + ... +}: let base_imports = [ inputs.anyrun.homeManagerModules.default @@ -16,7 +25,8 @@ let inputs.dashvim.homeManagerModules.dashvim ../modules ]; -in { +in +{ xdg = { portal.config.common.default = "*"; portal = { @@ -27,13 +37,21 @@ in { home-manager = { useGlobalPkgs = true; useUserPackages = true; - extraSpecialArgs = { inherit inputs root; }; + extraSpecialArgs = { + inherit inputs root; + }; users.${config.conf.username} = { - imports = [ ./common.nix ./xdg.nix ./themes ./sync.nix ] ++ base_imports + imports = + [ + ./common.nix + ./xdg.nix + ./themes + ./sync.nix + ] + ++ base_imports ++ lib.optional (builtins.pathExists mod) mod - ++ lib.optional (builtins.pathExists additionalHomeConfig) - additionalHomeConfig; + ++ lib.optional (builtins.pathExists additionalHomeConfig) additionalHomeConfig; }; }; } diff --git a/home/sync.nix b/home/sync.nix index f650434..d82e269 100644 --- a/home/sync.nix +++ b/home/sync.nix @@ -1,43 +1,56 @@ # derived from NixOS wiki -{ config, pkgs, lib, ... }: +{ + 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/home/themes/default.nix b/home/themes/default.nix index be2d0b5..10c4ace 100644 --- a/home/themes/default.nix +++ b/home/themes/default.nix @@ -1,4 +1,9 @@ -{ config, inputs, pkgs, ... }: +{ + config, + inputs, + pkgs, + ... +}: let username = config.conf.username; # at time of using this here, stylix might not be evaluated yet @@ -22,10 +27,17 @@ 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] @@ -101,4 +113,3 @@ in { ''; }; } - diff --git a/home/xdg.nix b/home/xdg.nix index eaaae39..aa9541a 100644 --- a/home/xdg.nix +++ b/home/xdg.nix @@ -7,39 +7,65 @@ let videoPlayer = [ "mpv" ]; audioPlayer = [ "io.bassi.Amberol" ]; - xdgAssociations = type: program: list: - builtins.listToAttrs (map (e: { - name = "${type}/${e}"; - value = program; - }) list); + xdgAssociations = + type: 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" - ]); + 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" + ]); # XDG MIME types - associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ({ - "application/pdf" = [ "org.pwmt.zathura-pdf-mupdf" ]; - "text/html" = browser; - "text/plain" = [ "neovide" ]; - "x-scheme-handler/chrome" = [ "com.brave.browser" ]; - "inode/directory" = [ "yazi" ]; - } // image // video // audio // browserTypes); -in { + associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ( + { + "application/pdf" = [ "org.pwmt.zathura-pdf-mupdf" ]; + "text/html" = browser; + "text/plain" = [ "neovide" ]; + "x-scheme-handler/chrome" = [ "com.brave.browser" ]; + "inode/directory" = [ "yazi" ]; + } + // image + // video + // audio + // browserTypes + ); +in +{ xdg = { enable = true; cacheHome = config.home.homeDirectory + "/.local/cache"; diff --git a/lib/default.nix b/lib/default.nix index 8188fb3..0b33f2e 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,6 +1,8 @@ { inputs, pkgs, ... }: { /** + # build_systems + Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. diff --git a/modules/conf.nix b/modules/conf.nix index 1a861d4..341d301 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -1,11 +1,23 @@ -{ lib, config, pkgs, options, ... }: { +{ + lib, + config, + pkgs, + options, + ... +}: +{ options.conf = { 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. @@ -15,7 +27,12 @@ cpu = lib.mkOption { # TODO: how to enable arm? default = "amd"; - type = with lib.types; (enum [ "amd" "intel" ]); + type = + with lib.types; + (enum [ + "amd" + "intel" + ]); example = "intel"; description = '' cpu microcode. @@ -43,10 +60,12 @@ 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. @@ -129,8 +148,16 @@ }; nvim-colorscheme = lib.mkOption { - default = { tokyonight = { enable = true; }; }; - example = { catppuccin = { enable = true; }; }; + default = { + tokyonight = { + enable = true; + }; + }; + example = { + catppuccin = { + enable = true; + }; + }; type = lib.types.attrs; description = '' nixvim colorscheme. @@ -167,10 +194,8 @@ }; 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 158764f..683596a 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1 +1,6 @@ -{ imports = [ ./programs ./conf.nix ]; } +{ + imports = [ + ./programs + ./conf.nix + ]; +} diff --git a/modules/programs/acpid.nix b/modules/programs/acpid.nix index f245095..2c0eeab 100644 --- a/modules/programs/acpid.nix +++ b/modules/programs/acpid.nix @@ -1,4 +1,10 @@ -{ lib, config, options, ... }: { +{ + lib, + config, + options, + ... +}: +{ options.mods = { acpid.enable = lib.mkOption { @@ -11,9 +17,7 @@ }; }; - 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 d13dec6..5d94c75 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -1,4 +1,12 @@ -{ config, lib, options, pkgs, inputs, ... }: { +{ + config, + lib, + options, + pkgs, + inputs, + ... +}: +{ options.mods = { default_base_packages = { enable = lib.mkOption { @@ -21,83 +29,89 @@ }; }; - 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; - }; - }; - - services = { - upower.enable = true; - dbus = { - enable = true; - packages = with pkgs; [ gnome2.GConf ]; - }; - avahi = { - enable = true; - nssmdns4 = true; - openFirewall = true; - }; - }; - - programs = { - nix-ld = { - enable = true; - libraries = with pkgs; [ jdk zlib ]; - }; - direnv = { - package = pkgs.direnv; - silent = false; - loadInNixShell = true; - direnvrcExtra = ""; - nix-direnv = { + virtualisation = { + containers.enable = true; + podman = { enable = true; - package = pkgs.nix-direnv; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; }; }; - ssh.startAgent = true; - gnupg.agent.enable = true; - }; - }))); + + services = { + upower.enable = true; + dbus = { + enable = true; + packages = with pkgs; [ gnome2.GConf ]; + }; + avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; + }; + + programs = { + nix-ld = { + enable = true; + libraries = with pkgs; [ + jdk + zlib + ]; + }; + direnv = { + package = pkgs.direnv; + silent = false; + loadInNixShell = true; + direnvrcExtra = ""; + nix-direnv = { + enable = true; + package = pkgs.nix-direnv; + }; + }; + ssh.startAgent = true; + gnupg.agent.enable = true; + }; + } + )) + ); } diff --git a/modules/programs/bluetooth.nix b/modules/programs/bluetooth.nix index f18c9e9..7818d34 100644 --- a/modules/programs/bluetooth.nix +++ b/modules/programs/bluetooth.nix @@ -1,4 +1,10 @@ -{ lib, config, options, ... }: { +{ + lib, + config, + options, + ... +}: +{ options.mods = { bluetooth.enable = lib.mkOption { default = false; @@ -10,12 +16,12 @@ }; }; - config = lib.mkIf config.mods.bluetooth.enable - (lib.optionalAttrs (options ? hardware.bluetooth) { + 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 9621220..595574c 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -1,4 +1,11 @@ -{ lib, config, pkgs, options, ... }: { +{ + lib, + config, + pkgs, + options, + ... +}: +{ options.mods = { coding = { enable = lib.mkOption { @@ -28,8 +35,8 @@ }; }; - config = lib.mkIf config.mods.coding.enable - (lib.optionalAttrs (options ? home.packages) { + 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; @@ -141,5 +148,6 @@ tmate ]; - }); + } + ); } diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix index 7772f51..66206c4 100644 --- a/modules/programs/drives.nix +++ b/modules/programs/drives.nix @@ -1,4 +1,9 @@ -{ lib, config, options, ... }: +{ + lib, + config, + options, + ... +}: let driveModule = lib.types.submodule { @@ -19,12 +24,17 @@ let example = { device = "/dev/disk/by-label/DRIVE2"; fsType = "ext4"; - options = [ "noatime" "nodiratime" "discard" ]; + options = [ + "noatime" + "nodiratime" + "discard" + ]; }; }; }; }; -in { +in +{ options.mods = { useSwap = { enable = lib.mkOption { @@ -50,14 +60,20 @@ in { default = [ ]; - example = [{ - name = "drive2"; - drive = { - device = "/dev/disk/by-label/DRIVE2"; - fsType = "ext4"; - options = [ "noatime" "nodiratime" "discard" ]; - }; - }]; + 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); @@ -67,33 +83,52 @@ in { }; }; - config = (lib.optionalAttrs (options ? fileSystems) { - fileSystems = builtins.listToAttrs (map ({ name, drive }: { - name = "/" + name; - value = drive; - }) config.mods.extraDrives) - // (lib.optionalAttrs config.mods.defaultDrives.enable) { - "/" = { - device = "/dev/disk/by-label/ROOT"; - fsType = "btrfs"; - options = [ "noatime" "nodiratime" "discard" ]; - }; + config = ( + lib.optionalAttrs (options ? fileSystems) { + fileSystems = + builtins.listToAttrs ( + map ( + { name, drive }: + { + name = "/" + name; + value = drive; + } + ) config.mods.extraDrives + ) + // (lib.optionalAttrs config.mods.defaultDrives.enable) { + "/" = { + device = "/dev/disk/by-label/ROOT"; + fsType = "btrfs"; + options = [ + "noatime" + "nodiratime" + "discard" + ]; + }; - "/boot" = { - device = "/dev/disk/by-label/BOOT"; - fsType = "vfat"; - options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; - }; + "/boot" = { + device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + options = [ + "rw" + "fmask=0022" + "dmask=0022" + "noatime" + ]; + }; - "/home" = { - device = "/dev/disk/by-label/HOME"; - fsType = "btrfs"; - options = [ "noatime" "nodiratime" "discard" ]; + "/home" = { + device = "/dev/disk/by-label/HOME"; + fsType = "btrfs"; + options = [ + "noatime" + "nodiratime" + "discard" + ]; + }; }; - }; - # TODO make this convert to choice of drives -> thanks to funny types this doesn't work... - swapDevices = lib.mkIf config.mods.useSwap.enable [{ - device = "/dev/disk/by-label/SWAP"; - }]; - }); + # TODO make this convert to choice of drives -> thanks to funny types this doesn't work... + swapDevices = lib.mkIf config.mods.useSwap.enable [ { device = "/dev/disk/by-label/SWAP"; } ]; + } + ); } diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix index f408b3d..d3305da 100644 --- a/modules/programs/firefox.nix +++ b/modules/programs/firefox.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods.firefox = { enable = lib.mkOption { default = true; @@ -56,8 +63,8 @@ description = "Firefox extensions (from nur)"; }; }; - config = lib.mkIf config.mods.firefox.enable - (lib.optionalAttrs (options ? programs.firefox.profiles) { + config = lib.mkIf config.mods.firefox.enable ( + lib.optionalAttrs (options ? programs.firefox.profiles) { programs.firefox = { enable = true; policies = config.mods.firefox.configuration; @@ -72,5 +79,6 @@ extensions = config.mods.firefox.extensions; }; }; - }); + } + ); } diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 61d5741..54e6f67 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods.fish = { enable = lib.mkOption { default = true; @@ -7,8 +14,8 @@ description = "Enables fish"; }; }; - config = lib.mkIf config.mods.fish.enable - (lib.optionalAttrs (options ? programs.fish) { + config = lib.mkIf config.mods.fish.enable ( + lib.optionalAttrs (options ? programs.fish) { programs.fish = { enable = true; shellInit = '' @@ -147,5 +154,6 @@ direnv hook fish | source ''; }; - }); + } + ); } diff --git a/modules/programs/flatpak.nix b/modules/programs/flatpak.nix index d0158cb..54011f3 100644 --- a/modules/programs/flatpak.nix +++ b/modules/programs/flatpak.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods.flatpak = { enable = lib.mkOption { default = true; @@ -13,18 +20,22 @@ description = "Flatpak packages"; }; }; - 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"; - }]; + 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.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 "com.github.tchx84.Flatseal" ] ++ config.mods.flatpak.additional_packages; - }); + } + ); } diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 57b0c30..2652010 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods.gaming = { enable = lib.mkOption { default = false; @@ -7,7 +14,14 @@ 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"; @@ -34,8 +48,7 @@ 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; @@ -44,8 +57,8 @@ description = "Your gpu device.(Physical id of lshw)"; }; }; - config = lib.mkIf config.mods.gaming.enable - (lib.optionalAttrs (options ? environment.systemPackages) { + config = lib.mkIf config.mods.gaming.enable ( + lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = config.mods.gaming.tools; programs.steam.enable = config.mods.gaming.steam; @@ -53,7 +66,9 @@ 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; @@ -66,5 +81,6 @@ }; }; }; - }); + } + ); } diff --git a/modules/programs/git.nix b/modules/programs/git.nix index ee5d258..e1bf3c5 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods.git = { username = lib.mkOption { default = "DashieTM"; @@ -15,19 +22,9 @@ 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 @@ -41,16 +38,22 @@ description = "ssh configuration (keys for git)"; }; }; - 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"; }; + 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"; + }; + }; }; - }; - home.file.".ssh/config".text = config.mods.git.ssh_config; - }); + 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 fe6ad0e..f83418c 100644 --- a/modules/programs/gnome_services.nix +++ b/modules/programs/gnome_services.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods = { gnome_services.enable = lib.mkOption { default = true; @@ -11,17 +18,26 @@ }; }; - 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 274b55f..24c37b6 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods = { nvidia.enable = lib.mkOption { @@ -37,8 +44,8 @@ }; }; - config = lib.mkIf config.mods.vapi.enable - (lib.optionalAttrs (options ? hardware.graphics) { + 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" ]; @@ -46,20 +53,27 @@ }; 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); - }; + 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 { + } + // lib.optionalAttrs (options ? hardware.graphics) ( + lib.mkIf config.mods.nvidia.enable { hardware.nvidia = { modesetting.enable = true; # powerManagement.enable = false; @@ -69,5 +83,7 @@ package = config.boot.kernelPackages.nvidiaPackages.beta; }; services.xserver.videoDrivers = [ "nvidia" ]; - })); + } + ) + ); } diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index c082ef4..52aa2a5 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -1,4 +1,12 @@ -{ config, lib, inputs, pkgs, options, ... }: { +{ + config, + lib, + inputs, + pkgs, + options, + ... +}: +{ options.mods = { greetd = { enable = lib.mkOption { @@ -38,60 +46,72 @@ }; }; - config = let - username = config.conf.username; - session = { - command = "${ + 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; + 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=$! + ''; + } + ]; - environment.etc."greetd/environments".text = '' - Hyprland - ''; + # greetd display manager + programs.hyprland.enable = true; + services.greetd = { + enable = true; + settings = { + terminal.vt = 1; + default_session = session; + }; + }; - # 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' + environment.etc."greetd/environments".text = '' + Hyprland + ''; - monitor=${config.mods.greetd.monitor},${config.mods.greetd.resolution},0x0,${config.mods.greetd.scale} - monitor=,disable + # 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' - input { - kb_layout = ${config.mods.xkb.layout} - kb_variant = ${config.mods.xkb.variant} - force_no_accel = true + 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 + } + + cursor { + enable_hyprcursor = false + } + + misc { + disable_splash_rendering = false + disable_hyprland_logo = false + } + + env=XCURSOR_THEME,${config.mods.stylix.cursor.name} + env=XCURSOR_SIZE,${config.mods.stylix.cursor.size} + + 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; } - - misc { - disable_splash_rendering = false - disable_hyprland_logo = false - } - - 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; - }); + ); } diff --git a/modules/programs/home_packages.nix b/modules/programs/home_packages.nix index e5ba917..e072514 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/home_packages.nix @@ -1,4 +1,12 @@ -{ lib, options, config, pkgs, inputs, ... }: { +{ + lib, + options, + config, + pkgs, + inputs, + ... +}: +{ options.mods.home_packages = { enable = lib.mkOption { default = true; @@ -16,71 +24,76 @@ ''; }; }; - 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 - xournalpp - vesktop - kitty - ripgrep - # TODO add fcp once fixed.... - rm-improved - bat - fd - lsd - (nerdfonts.override { fonts = [ "JetBrainsMono" ]; }) - noto-fonts - flatpak - networkmanager - zoxide - fastfetch - gnome-keyring - dbus - killall - adw-gtk3 - qt5ct - qt6ct - gnutar - nix-index - libnotify - zenith - nh - amberol - pulseaudio - playerctl - ncspot - poppler_utils - brave - greetd.regreet - flake-checker - ffmpeg - system-config-printer - brightnessctl - ]; - - xdg.configFile."direnv/direnv.toml".source = - (pkgs.formats.toml { }).generate "direnv" { - global = { warn_timeout = "-1s"; }; - }; - - #my own programs - programs = { - hyprdock.enable = true; - oxicalc.enable = true; - ReSet.enable = true; - ReSet.config.plugins = [ - inputs.reset-plugins.packages."x86_64-linux".monitor - inputs.reset-plugins.packages."x86_64-linux".keyboard + 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 + xournalpp + vesktop + kitty + ripgrep + # TODO add fcp once fixed.... + rm-improved + bat + fd + lsd + (nerdfonts.override { fonts = [ "JetBrainsMono" ]; }) + noto-fonts + flatpak + networkmanager + zoxide + fastfetch + gnome-keyring + dbus + killall + adw-gtk3 + qt5ct + qt6ct + gnutar + nix-index + libnotify + zenith + nh + amberol + pulseaudio + playerctl + ncspot + poppler_utils + brave + greetd.regreet + flake-checker + ffmpeg + system-config-printer + brightnessctl ]; - ReSet.config.plugin_config = { - Keyboard = { - path = "/home/${config.conf.username}/.config/reset/keyboard.conf"; + + xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" { + global = { + warn_timeout = "-1s"; }; }; - }; - }))); + + #my own programs + programs = { + hyprdock.enable = true; + oxicalc.enable = true; + ReSet.enable = true; + ReSet.config.plugins = [ + inputs.reset-plugins.packages."x86_64-linux".monitor + inputs.reset-plugins.packages."x86_64-linux".keyboard + ]; + ReSet.config.plugin_config = { + Keyboard = { + path = "/home/${config.conf.username}/.config/reset/keyboard.conf"; + }; + }; + }; + } + )) + ); } diff --git a/modules/programs/hyprland/anyrun.nix b/modules/programs/hyprland/anyrun.nix index effa53d..33c38f7 100644 --- a/modules/programs/hyprland/anyrun.nix +++ b/modules/programs/hyprland/anyrun.nix @@ -1,4 +1,12 @@ -{ lib, config, pkgs, options, inputs, ... }: { +{ + lib, + config, + pkgs, + options, + inputs, + ... +}: +{ options.mods = { hyprland.anyrun = { enable = lib.mkOption { @@ -10,8 +18,8 @@ }; }; - config = lib.mkIf config.mods.hyprland.anyrun.enable - (lib.optionalAttrs (options ? programs.anyrun) { + config = lib.mkIf config.mods.hyprland.anyrun.enable ( + lib.optionalAttrs (options ? programs.anyrun) { programs.anyrun = { enable = true; config = { @@ -23,8 +31,12 @@ ]; #position = "center"; hideIcons = false; - width = { fraction = 0.3; }; - y = { fraction = 0.5; }; + width = { + fraction = 0.3; + }; + y = { + fraction = 0.5; + }; layer = "overlay"; hidePluginInfo = true; closeOnClick = true; @@ -79,5 +91,6 @@ } ''; }; - }); + } + ); } diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index f20b456..44e4bb6 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -1,4 +1,11 @@ -{ config, lib, options, pkgs, ... }: { +{ + config, + lib, + options, + pkgs, + ... +}: +{ options.mods = { hyprland = { enable = lib.mkOption { @@ -61,8 +68,8 @@ }; }; - config = lib.mkIf config.mods.hyprland.enable - (lib.optionalAttrs (options ? wayland.windowManager.hyprland) { + config = lib.mkIf config.mods.hyprland.enable ( + lib.optionalAttrs (options ? wayland.windowManager.hyprland) { # install Hyprland related packages home.packages = with pkgs; [ xorg.xprop @@ -82,15 +89,16 @@ lib.mkIf config.mods.hyprland.use_default_config { "$mod" = "SUPER"; - 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 SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' - '' - $mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy'' + ''$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy'' # regular programs "$mod SUPER,F,exec,firefox" @@ -108,19 +116,14 @@ "$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate" # media keys - (lib.mkIf config.mods.scripts.audio-control - ",XF86AudioMute,exec, audio-control mute") - (lib.mkIf config.mods.scripts.audio-control - ",XF86AudioLowerVolume,exec, audio-control sink -5%") - (lib.mkIf config.mods.scripts.audio-control - ",XF86AudioRaiseVolume,exec, audio-control sink +5%") + (lib.mkIf config.mods.scripts.audio-control ",XF86AudioMute,exec, audio-control mute") + (lib.mkIf config.mods.scripts.audio-control ",XF86AudioLowerVolume,exec, audio-control sink -5%") + (lib.mkIf config.mods.scripts.audio-control ",XF86AudioRaiseVolume,exec, audio-control sink +5%") ",XF86AudioPlay,exec, playerctl play-pause" ",XF86AudioNext,exec, playerctl next" ",XF86AudioPrev,exec, playerctl previous" - (lib.mkIf config.mods.scripts.change-brightness - ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-") - (lib.mkIf config.mods.scripts.change-brightness - ",XF86MonBrightnessUp,exec, change-brightness brightness +10%") + (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-") + (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessUp,exec, change-brightness brightness +10%") # hyprland keybinds # misc @@ -199,13 +202,14 @@ general = { gaps_out = "3,5,5,5"; border_size = 3; - "col.active_border" = - lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; + "col.active_border" = lib.mkForce "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; # "col.inactive_border" = "0x66333333"; allow_tearing = lib.mkIf config.mods.hyprland.no_atomic true; }; - decoration = { rounding = 4; }; + decoration = { + rounding = 4; + }; animations = { bezier = "penguin,0.05,0.9,0.1,1.0"; @@ -254,7 +258,9 @@ # no_break_fs_vrr = true; }; - gestures = { workspace_swipe = true; }; + gestures = { + workspace_swipe = true; + }; monitor = config.mods.hyprland.monitor; workspace = config.mods.hyprland.workspace; @@ -265,10 +271,10 @@ "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" + "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" + "HYPRCURSOR_SIZE,${config.mods.stylix.cursor.size}" + "XCURSOR_THEME,${config.mods.stylix.cursor.name}" + "XCURSOR_SIZE,${config.mods.stylix.cursor.size}" "QT_QPA_PLATFORM,wayland" "QT_QPA_PLATFORMTHEME,qt5ct" "QT_WAYLAND_FORCE_DPI,96" @@ -282,8 +288,7 @@ (lib.mkIf config.mods.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") (lib.mkIf config.mods.nvidia.enable "XDG_SESSION_TYPE,wayland") (lib.mkIf config.mods.nvidia.enable "GBM_BACKEND,nvidia-drm") - (lib.mkIf config.mods.nvidia.enable - "__GLX_VENDOR_LIBRARY_NAME,nvidia") + (lib.mkIf config.mods.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") ]; layerrule = [ @@ -338,9 +343,11 @@ # ]; # }; # }; - } // config.mods.hyprland.custom_config; + } + // 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 d6e728e..091bb9e 100644 --- a/modules/programs/hyprland/hyprlock.nix +++ b/modules/programs/hyprland/hyprlock.nix @@ -1,4 +1,11 @@ -{ config, lib, options, pkgs, ... }: { +{ + config, + lib, + options, + pkgs, + ... +}: +{ options.mods = { hyprland.hyprlock = { enable = lib.mkOption { @@ -10,33 +17,40 @@ }; }; - config = lib.mkIf config.mods.hyprland.hyprlock.enable - (lib.optionalAttrs (options ? xdg.configFile) { + config = lib.mkIf config.mods.hyprland.hyprlock.enable ( + 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 ebf923c..d6eff04 100644 --- a/modules/programs/hyprland/hyprpaper.nix +++ b/modules/programs/hyprland/hyprpaper.nix @@ -1,4 +1,11 @@ -{ config, lib, options, pkgs, ... }: { +{ + config, + lib, + options, + pkgs, + ... +}: +{ options.mods = { hyprland.hyprpaper = { enable = lib.mkOption { @@ -20,12 +27,12 @@ }; }; - config = lib.mkIf config.mods.hyprland.hyprpaper.enable - (lib.optionalAttrs (options ? xdg.configFile) { + 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 { - text = config.mods.hyprland.hyprpaper.config; - }; - }); + 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 0c36283..dabf38f 100644 --- a/modules/programs/hyprland/ironbar.nix +++ b/modules/programs/hyprland/ironbar.nix @@ -1,6 +1,14 @@ -{ lib, config, pkgs, options, ... }: -let username = config.conf.username; -in { +{ + lib, + config, + pkgs, + options, + ... +}: +let + username = config.conf.username; +in +{ options.mods = { hyprland.ironbar = { enable = lib.mkOption { @@ -11,8 +19,8 @@ in { }; }; }; - config = lib.mkIf config.mods.hyprland.ironbar.enable - (lib.optionalAttrs (options ? programs.ironbar) { + config = lib.mkIf config.mods.hyprland.ironbar.enable ( + lib.optionalAttrs (options ? programs.ironbar) { programs.ironbar = { enable = true; @@ -164,78 +172,78 @@ in { } { type = "custom"; - bar = [{ - type = "button"; - class = "popup-button"; - label = ""; - on_click = "popup:toggle"; - }]; + bar = [ + { + type = "button"; + class = "popup-button"; + label = ""; + on_click = "popup:toggle"; + } + ]; class = "popup-button-box"; - popup = [{ - type = "box"; - orientation = "vertical"; - class = "audio-box"; - widgets = [ - { - type = "box"; - orientation = "horizontal"; - widgets = [ - { - type = "button"; - class = "audio-button"; - label = ""; - 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"; - } - ]; - class = "audio-button-box"; - } - { - type = "label"; - label = "Output"; - } - { - type = "slider"; - class = "audio-slider"; - step = 1.0; - length = 200; - value = - "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; - on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; - } - { - type = "label"; - label = "Input"; - } - { - type = "slider"; - 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%"; - } - ]; - }]; + popup = [ + { + type = "box"; + orientation = "vertical"; + class = "audio-box"; + widgets = [ + { + type = "box"; + orientation = "horizontal"; + widgets = [ + { + type = "button"; + class = "audio-button"; + label = ""; + 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"; + } + ]; + class = "audio-button-box"; + } + { + type = "label"; + label = "Output"; + } + { + type = "slider"; + class = "audio-slider"; + step = 1.0; + length = 200; + value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; + on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; + } + { + type = "label"; + label = "Input"; + } + { + type = "slider"; + 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%"; + } + ]; + } + ]; } { type = "custom"; - bar = [{ - type = "button"; - class = "popup-button"; - label = ""; - on_click = - "!oxidash --css /home/${username}/gits/oxidash/style.css"; - }]; + bar = [ + { + type = "button"; + class = "popup-button"; + label = ""; + on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css"; + } + ]; class = "popup-button-box"; } { @@ -249,19 +257,24 @@ in { 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"; - }]; + 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 6a4cae7..153a149 100644 --- a/modules/programs/kde_connect.nix +++ b/modules/programs/kde_connect.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods = { kde_connect.enable = lib.mkOption { @@ -11,21 +18,25 @@ }; }; - config = lib.mkIf config.mods.kde_connect.enable - (lib.optionalAttrs (options ? networking.firewall) { + config = lib.mkIf config.mods.kde_connect.enable ( + lib.optionalAttrs (options ? networking.firewall) { networking.firewall = { - allowedTCPPortRanges = [{ - from = 1714; - to = 1764; - } # KDE Connect - ]; - allowedUDPPortRanges = [{ - from = 1714; - to = 1764; - } # KDE Connect - ]; + allowedTCPPortRanges = [ + { + 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 6a52fe6..fa7f24e 100644 --- a/modules/programs/keepassxc.nix +++ b/modules/programs/keepassxc.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods.keepassxc = { enable = lib.mkOption { default = true; @@ -10,8 +17,7 @@ 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 = '' @@ -26,8 +32,8 @@ description = "Cache config to be used."; }; }; - config = lib.mkIf config.mods.keepassxc.enable - (lib.optionalAttrs (options ? home.file) { + config = lib.mkIf config.mods.keepassxc.enable ( + lib.optionalAttrs (options ? home.file) { home.packages = [ pkgs.keepassxc ]; xdg.configFile."keepassxc/keepassxc.ini" = { text = '' @@ -53,9 +59,9 @@ ''; }; - 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/kitty.nix b/modules/programs/kitty.nix index 07224c9..b7bac45 100644 --- a/modules/programs/kitty.nix +++ b/modules/programs/kitty.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, inputs, ... }: +{ + lib, + config, + options, + pkgs, + inputs, + ... +}: let base16 = pkgs.callPackage inputs.base16.lib { }; scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); @@ -20,12 +27,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 +{ options.mods.kitty = { enable = lib.mkOption { default = true; @@ -34,9 +43,11 @@ in { description = "Enables kitty"; }; }; - config = lib.mkIf config.mods.kitty.enable - (lib.optionalAttrs (options ? home.packages) { - stylix.targets.kitty = { enable = false; }; + config = lib.mkIf config.mods.kitty.enable ( + lib.optionalAttrs (options ? home.packages) { + stylix.targets.kitty = { + enable = false; + }; programs.kitty = { enable = true; settings = { @@ -89,6 +100,6 @@ in { }; }; - }); + } + ); } - diff --git a/modules/programs/layout.nix b/modules/programs/layout.nix index 3ca2443..c0e162c 100644 --- a/modules/programs/layout.nix +++ b/modules/programs/layout.nix @@ -1,4 +1,10 @@ -{ lib, options, config, ... }: { +{ + lib, + options, + config, + ... +}: +{ options.mods.xkb = { layout = lib.mkOption { default = "dashie"; @@ -13,11 +19,13 @@ description = "Your variant"; }; }; - config = (lib.optionalAttrs (options ? services.xserver) { - # Configure keymap in X11 - services.xserver = { - xkb.layout = "${config.mods.xkb.layout}"; - xkb.variant = "${config.mods.xkb.variant}"; - }; - }); + config = ( + lib.optionalAttrs (options ? services.xserver) { + # Configure keymap in X11 + services.xserver = { + xkb.layout = "${config.mods.xkb.layout}"; + xkb.variant = "${config.mods.xkb.variant}"; + }; + } + ); } diff --git a/modules/programs/media.nix b/modules/programs/media.nix index b115fbf..5530ff4 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -1,4 +1,11 @@ -{ lib, options, config, pkgs, ... }: { +{ + lib, + options, + config, + pkgs, + ... +}: +{ options.mods.media_packages = { enable = lib.mkOption { default = true; @@ -16,38 +23,42 @@ ''; }; }; - 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 - wireplumber - # audio control - playerctl - # images - imv - # videos - mpv - # pdf - zathura - evince - libreoffice-fresh - onlyoffice-bin - pdftk - pdfpc - polylux2pdfpc - # spotify - # video editing - kdenlive - # image creation - inkscape - gimp - krita - yt-dlp - ]; - programs.obs-studio.enable = true; - programs.obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ]; - }))); + 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 + wireplumber + # audio control + playerctl + # images + imv + # videos + mpv + # pdf + zathura + evince + libreoffice-fresh + onlyoffice-bin + pdftk + pdfpc + polylux2pdfpc + # spotify + # video editing + kdenlive + # image creation + inkscape + gimp + krita + yt-dlp + ]; + programs.obs-studio.enable = true; + programs.obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ]; + } + )) + ); } diff --git a/modules/programs/ncspot.nix b/modules/programs/ncspot.nix index a7a62fc..98dfe96 100644 --- a/modules/programs/ncspot.nix +++ b/modules/programs/ncspot.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods.ncspot = { enable = lib.mkOption { default = false; @@ -7,45 +14,45 @@ description = "Enables ncspot with a config"; }; }; - config = lib.mkIf config.mods.ncspot.enable - (lib.optionalAttrs (options ? home.packages) { + config = lib.mkIf config.mods.ncspot.enable ( + lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ ncspot ]; - 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"; - }; + 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"; + }; + }; + } + ); } diff --git a/modules/programs/nextcloud.nix b/modules/programs/nextcloud.nix index 0b90c58..ab2333a 100644 --- a/modules/programs/nextcloud.nix +++ b/modules/programs/nextcloud.nix @@ -1,4 +1,5 @@ -{ lib, ... }: { +{ lib, ... }: +{ options.mods = { nextcloud = { enable = lib.mkOption { @@ -21,11 +22,13 @@ }; 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/oxi/default.nix b/modules/programs/oxi/default.nix index 269d1fa..7dee3fd 100644 --- a/modules/programs/oxi/default.nix +++ b/modules/programs/oxi/default.nix @@ -1,5 +1,17 @@ -{ lib, config, options, inputs, ... }: { - imports = [ ./oxidash.nix ./oxinoti.nix ./oxishut.nix ./oxipaste.nix ]; +{ + lib, + config, + options, + inputs, + ... +}: +{ + imports = [ + ./oxidash.nix + ./oxinoti.nix + ./oxishut.nix + ./oxipaste.nix + ]; options.mods.oxi = { enable = lib.mkOption { default = true; @@ -32,8 +44,8 @@ }; }; }; - config = lib.mkIf config.mods.oxi.enable - (lib.optionalAttrs (options ? home.packages) { + config = lib.mkIf config.mods.oxi.enable ( + lib.optionalAttrs (options ? home.packages) { programs = { hyprdock.enable = lib.mkIf config.mods.oxi.hyprdock.enable true; oxicalc.enable = lib.mkIf config.mods.oxi.oxicalc.enable true; @@ -46,12 +58,12 @@ ]; plugin_config = { Keyboard = { - path = - "/home/${config.conf.username}/.config/reset/keyboard.conf"; + path = "/home/${config.conf.username}/.config/reset/keyboard.conf"; }; }; }; }; }; - }); + } + ); } diff --git a/modules/programs/oxi/oxidash.nix b/modules/programs/oxi/oxidash.nix index dfcf188..03cb684 100644 --- a/modules/programs/oxi/oxidash.nix +++ b/modules/programs/oxi/oxidash.nix @@ -1,4 +1,10 @@ -{ lib, config, options, ... }: { +{ + lib, + config, + options, + ... +}: +{ options.mods.oxi.oxidash = { enable = lib.mkOption { default = true; @@ -7,8 +13,8 @@ description = "Enables and configures oxidash"; }; }; - config = lib.mkIf (config.mods.oxi.oxidash.enable && config.mods.oxi.enable) - (lib.optionalAttrs (options ? xdg.configFile) { + config = lib.mkIf (config.mods.oxi.oxidash.enable && config.mods.oxi.enable) ( + lib.optionalAttrs (options ? xdg.configFile) { programs.oxidash.enable = true; xdg.configFile."oxidash/style.css" = { text = '' @@ -60,5 +66,6 @@ } ''; }; - }); + } + ); } diff --git a/modules/programs/oxi/oxinoti.nix b/modules/programs/oxi/oxinoti.nix index 5b9cfc9..188ec11 100644 --- a/modules/programs/oxi/oxinoti.nix +++ b/modules/programs/oxi/oxinoti.nix @@ -1,4 +1,10 @@ -{ lib, config, options, ... }: { +{ + lib, + config, + options, + ... +}: +{ options.mods.oxi.oxinoti = { enable = lib.mkOption { default = true; @@ -7,8 +13,8 @@ description = "Enables and configures oxinoti"; }; }; - config = lib.mkIf (config.mods.oxi.oxinoti.enable && config.mods.oxi.enable) - (lib.optionalAttrs (options ? xdg.configFile) { + config = lib.mkIf (config.mods.oxi.oxinoti.enable && config.mods.oxi.enable) ( + lib.optionalAttrs (options ? xdg.configFile) { programs.oxinoti.enable = true; xdg.configFile."oxinoti/style.css" = { text = # css @@ -100,5 +106,6 @@ dnd_override = 2 ''; }; - }); + } + ); } diff --git a/modules/programs/oxi/oxipaste.nix b/modules/programs/oxi/oxipaste.nix index c6783e4..aa4af70 100644 --- a/modules/programs/oxi/oxipaste.nix +++ b/modules/programs/oxi/oxipaste.nix @@ -1,4 +1,10 @@ -{ lib, config, options, ... }: { +{ + lib, + config, + options, + ... +}: +{ options.mods.oxi.oxipaste = { enable = lib.mkOption { default = true; @@ -7,8 +13,8 @@ description = "Enables and configures oxipaste"; }; }; - config = lib.mkIf (config.mods.oxi.oxipaste.enable && config.mods.oxi.enable) - (lib.optionalAttrs (options ? xdg.configFile) { + config = lib.mkIf (config.mods.oxi.oxipaste.enable && config.mods.oxi.enable) ( + lib.optionalAttrs (options ? xdg.configFile) { programs.oxipaste.enable = true; xdg.configFile."oxipaste/style.css" = { text = '' @@ -38,5 +44,6 @@ } ''; }; - }); + } + ); } diff --git a/modules/programs/oxi/oxishut.nix b/modules/programs/oxi/oxishut.nix index 3dc0900..466be06 100644 --- a/modules/programs/oxi/oxishut.nix +++ b/modules/programs/oxi/oxishut.nix @@ -1,4 +1,10 @@ -{ lib, config, options, ... }: { +{ + lib, + config, + options, + ... +}: +{ options.mods.oxi.oxishut = { enable = lib.mkOption { default = true; @@ -7,8 +13,8 @@ description = "Enables and configures oxishut"; }; }; - config = lib.mkIf (config.mods.oxi.oxishut.enable && config.mods.oxi.enable) - (lib.optionalAttrs (options ? xdg.configFile) { + config = lib.mkIf (config.mods.oxi.oxishut.enable && config.mods.oxi.enable) ( + lib.optionalAttrs (options ? xdg.configFile) { programs.oxishut.enable = true; xdg.configFile."oxishut/style.css" = { text = '' @@ -32,5 +38,6 @@ } ''; }; - }); + } + ); } diff --git a/modules/programs/piper.nix b/modules/programs/piper.nix index 4c47628..dac9ece 100644 --- a/modules/programs/piper.nix +++ b/modules/programs/piper.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods.piper = { enable = lib.mkOption { default = false; @@ -7,10 +14,8 @@ description = "Enables the piper program and its daemon"; }; }; - 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 ]; - }); + 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 ]; } + ); } diff --git a/modules/programs/printing.nix b/modules/programs/printing.nix index 963de3b..80144b8 100644 --- a/modules/programs/printing.nix +++ b/modules/programs/printing.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods.printing = { enable = lib.mkOption { default = true; @@ -7,8 +14,8 @@ description = "Enables the piper program and its daemon"; }; }; - config = lib.mkIf config.mods.printing.enable - (lib.optionalAttrs (options ? services.printing) { + 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; @@ -19,5 +26,6 @@ nssmdns4 = true; openFirewall = true; }; - }); + } + ); } diff --git a/modules/programs/scripts.nix b/modules/programs/scripts.nix index 719ec5d..8a3889e 100644 --- a/modules/programs/scripts.nix +++ b/modules/programs/scripts.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods.scripts = { change-brightness = lib.mkOption { default = true; @@ -15,106 +22,109 @@ scripts = lib.mkOption { default = [ ]; example = [ ]; - description = - "More scripts to be passed. (check existing ones for types and examples)"; + description = "More scripts to be passed. (check existing ones for types and examples)"; }; }; - config = (lib.optionalAttrs (options ? home.packages) { - home.packages = [ - (lib.mkIf config.mods.scripts.change-brightness - (pkgs.writeShellScriptBin "change-brightness" '' - set_brightness() { - brightnessctl set "$1" - CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') - dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%" - } + config = ( + lib.optionalAttrs (options ? home.packages) { + home.packages = [ + (lib.mkIf config.mods.scripts.change-brightness ( + pkgs.writeShellScriptBin "change-brightness" '' + set_brightness() { + brightnessctl set "$1" + CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') + dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%" + } - if [ "$1" == "brightness" ]; then - set_brightness "$2" - fi - '')) - (lib.mkIf config.mods.scripts.audio-control - (pkgs.writeShellScriptBin "audio-control" '' - ncspot() { - NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n') - CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') - pactl set-sink-input-volume "$CHANGE" "$1" - VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') - notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: ''${VOLUME}%" - } + if [ "$1" == "brightness" ]; then + set_brightness "$2" + fi + '' + )) + (lib.mkIf config.mods.scripts.audio-control ( + pkgs.writeShellScriptBin "audio-control" '' + ncspot() { + NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n') + CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') + pactl set-sink-input-volume "$CHANGE" "$1" + VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') + notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: ''${VOLUME}%" + } - firefox() { - STRING=$(pactl list clients short | rg "firefox" | awk -F 'PipeWire' ' { print $1 "," } ' | tr -d ' \t\n') - # NUMS=',' read -r -a array <<< "$STRING" - readarray -td, NUMS <<<"$STRING" - declare -p NUMS - for index in "''${!NUMS[@]}"; do #"''${!array[@]}" - NUM=$(echo "''${NUMS[index]}" | tr -d ' \t\n') - CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') - pactl set-sink-input-volume "$CHANGE" "$1" - done - VOLUME=$(pactl list sink-inputs | rg "''${NUMS[0]}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') - notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: ''${VOLUME}%" - } + firefox() { + STRING=$(pactl list clients short | rg "firefox" | awk -F 'PipeWire' ' { print $1 "," } ' | tr -d ' \t\n') + # NUMS=',' read -r -a array <<< "$STRING" + readarray -td, NUMS <<<"$STRING" + declare -p NUMS + for index in "''${!NUMS[@]}"; do #"''${!array[@]}" + NUM=$(echo "''${NUMS[index]}" | tr -d ' \t\n') + CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') + pactl set-sink-input-volume "$CHANGE" "$1" + done + VOLUME=$(pactl list sink-inputs | rg "''${NUMS[0]}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') + notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: ''${VOLUME}%" + } - internal() { - SPEAKER=$(pactl list sinks | grep "Name" | grep "alsa" | awk -F ': ' '{ print $2 }') - if [ "$SPEAKER" != "" ]; then - pactl set-default-sink "$SPEAKER" - pactl set-sink-mute "$SPEAKER" false - DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') - notify-send "changed audio to "$DEVICE" " - else - notify-send "failed, not available!" - fi - } + internal() { + SPEAKER=$(pactl list sinks | grep "Name" | grep "alsa" | awk -F ': ' '{ print $2 }') + if [ "$SPEAKER" != "" ]; then + pactl set-default-sink "$SPEAKER" + pactl set-sink-mute "$SPEAKER" false + DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') + notify-send "changed audio to "$DEVICE" " + else + notify-send "failed, not available!" + fi + } - set_volume_sink() { - pactl set-sink-volume @DEFAULT_SINK@ "$1" - CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %') - notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: ''${CURRENT}%" - } + set_volume_sink() { + pactl set-sink-volume @DEFAULT_SINK@ "$1" + CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %') + notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: ''${CURRENT}%" + } - set_volume_source() { - pactl set-source-volume @DEFAULT_SOURCE@ "$1" - CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %') - notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: ''${CURRENT}%" - } + set_volume_source() { + pactl set-source-volume @DEFAULT_SOURCE@ "$1" + CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %') + notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: ''${CURRENT}%" + } - bluetooth() { - SPEAKER=$(pactl list sinks | grep "Name" | grep "blue" | awk -F ': ' '{ print $2 }') - if [ "$SPEAKER" != "" ]; then - pactl set-default-sink "$SPEAKER" - pactl set-sink-mute "$SPEAKER" false - DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') - notify-send "changed audio to "$DEVICE" " - else - notify-send "failed, not available!" - fi - } + bluetooth() { + SPEAKER=$(pactl list sinks | grep "Name" | grep "blue" | awk -F ': ' '{ print $2 }') + if [ "$SPEAKER" != "" ]; then + pactl set-default-sink "$SPEAKER" + pactl set-sink-mute "$SPEAKER" false + DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') + notify-send "changed audio to "$DEVICE" " + else + notify-send "failed, not available!" + fi + } - mute() { - pactl set-sink-mute @DEFAULT_SINK@ toggle - MUTE=$(pactl get-sink-mute @DEFAULT_SINK@) - notify-send -a "Audio" -r 994 -u low -i audio-volume-high "Audio: $MUTE" - } + mute() { + pactl set-sink-mute @DEFAULT_SINK@ toggle + MUTE=$(pactl get-sink-mute @DEFAULT_SINK@) + notify-send -a "Audio" -r 994 -u low -i audio-volume-high "Audio: $MUTE" + } - if [ "$1" == "internal" ]; then - internal - elif [ "$1" == "bluetooth" ]; then - bluetooth - elif [ "$1" == "firefox" ]; then - firefox "$2" - elif [ "$1" == "ncspot" ]; then - ncspot "$2" - elif [ "$1" == "mute" ]; then - mute - elif [ "$1" == "sink" ]; then - set_volume_sink "$2" - elif [ "$1" == "source" ]; then - set_volume_source "$2" - fi - '')) - ] ++ config.mods.scripts.scripts; - }); + if [ "$1" == "internal" ]; then + internal + elif [ "$1" == "bluetooth" ]; then + bluetooth + elif [ "$1" == "firefox" ]; then + firefox "$2" + elif [ "$1" == "ncspot" ]; then + ncspot "$2" + elif [ "$1" == "mute" ]; then + mute + elif [ "$1" == "sink" ]; then + set_volume_sink "$2" + elif [ "$1" == "source" ]; then + set_volume_source "$2" + fi + '' + )) + ] ++ config.mods.scripts.scripts; + } + ); } diff --git a/modules/programs/sops.nix b/modules/programs/sops.nix index 8d93b88..b4b9657 100644 --- a/modules/programs/sops.nix +++ b/modules/programs/sops.nix @@ -1,4 +1,12 @@ -{ lib, pkgs, config, options, root, ... }: { +{ + lib, + pkgs, + config, + options, + root, + ... +}: +{ options.mods.sops = { enable = lib.mkOption { default = true; @@ -19,8 +27,8 @@ description = "secrets for sops"; }; }; - config = lib.mkIf config.mods.sops.enable - (lib.optionalAttrs (options ? home.packages) { + config = lib.mkIf config.mods.sops.enable ( + lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ sops ]; sops = { gnupg = { @@ -32,5 +40,6 @@ }; systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ]; - }); + } + ); } diff --git a/modules/programs/starship.nix b/modules/programs/starship.nix index 69de20b..04f877e 100644 --- a/modules/programs/starship.nix +++ b/modules/programs/starship.nix @@ -1,4 +1,12 @@ -{ lib, config, options, pkgs, inputs, ... }: { +{ + lib, + config, + options, + pkgs, + inputs, + ... +}: +{ options.mods = { starship = { enable = lib.mkOption { @@ -30,99 +38,140 @@ }; # environment.systemPackages needed in order to configure systemwide - 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 { - 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; - }; - }); + 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 + { + 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; + }; + } + ); } diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index 987a912..2c8b7e2 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -1,4 +1,11 @@ -{ lib, config, options, pkgs, ... }: { +{ + lib, + config, + options, + pkgs, + ... +}: +{ options.mods.stylix = { colorscheme = lib.mkOption { default = { @@ -27,7 +34,13 @@ base0F = "F7768E"; }; example = "catppuccin-mocha"; - type = with lib.types; oneOf [ str attrs path ]; + type = + with lib.types; + oneOf [ + str + attrs + path + ]; description = '' Base16 colorscheme. Can be an attribute set with base00 to base0F, @@ -35,18 +48,18 @@ or a path to a custom yaml file. ''; }; - }; - config = (lib.optionalAttrs (options ? stylix) { - stylix = { - enable = true; - image = ../../base/black.jpg; - polarity = "dark"; - targets = { - nixvim.enable = false; - fish.enable = false; + cursor = lib.mkOption { + default = { + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; + size = 24; }; - - fonts = { + example = { }; + type = with lib.types; attrsOf anything; + description = "Xcursor config"; + }; + fonts = lib.mkOption { + default = { serif = { package = pkgs.cantarell-fonts; name = "Cantarell"; @@ -59,7 +72,6 @@ monospace = { package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; }); - # name = "JetBrains Mono Nerd"; name = "JetBrainsMono Nerd Font Mono"; }; @@ -68,17 +80,30 @@ name = "Noto Color Emoji"; }; }; - - cursor = { - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Classic"; - 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"); + example = { }; + type = with lib.types; attrsOf anything; + description = "font config"; }; - }); + }; + config = ( + lib.optionalAttrs (options ? stylix) { + stylix = { + enable = true; + image = ../../base/black.jpg; + polarity = "dark"; + targets = { + nixvim.enable = false; + fish.enable = false; + }; + fonts = config.mods.stylix.fonts; + cursor = config.mods.stylix.cursor; + 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 index 515daed..8555303 100644 --- a/modules/programs/teams.nix +++ b/modules/programs/teams.nix @@ -1,13 +1,20 @@ -{ lib, config, options, pkgs, ... }: -let callPackage = lib.callPackageWith pkgs; -in { +{ + 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)"; + description = "Enables teams via a chromium pwa (for the poor souls that have to use this for work)"; }; loopback = lib.mkOption { default = true; @@ -16,17 +23,18 @@ in { description = "Enables loopback for screensharing -> teams sucks :)"; }; }; - config = lib.mkIf config.mods.teams.enable - (lib.optionalAttrs (options ? home.packages) { + config = lib.mkIf config.mods.teams.enable ( + lib.optionalAttrs (options ? home.packages) { home.packages = [ (callPackage ../../override/teams.nix { }) ]; - } // (lib.optionalAttrs (options ? boot.kernelModules) { + } + // (lib.optionalAttrs (options ? boot.kernelModules) { boot = { - extraModulePackages = - [ pkgs.linuxKernel.packages.linux_xanmod_latest.v4l2loopback ]; + extraModulePackages = [ pkgs.linuxKernel.packages.linux_xanmod_latest.v4l2loopback ]; kernelModules = [ "v4l2loopback" ]; extraModprobeConfig = '' options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" ''; }; - })); + }) + ); } diff --git a/modules/programs/virtualbox.nix b/modules/programs/virtualbox.nix index b5d80e9..1639305 100644 --- a/modules/programs/virtualbox.nix +++ b/modules/programs/virtualbox.nix @@ -1,4 +1,10 @@ -{ lib, config, options, ... }: { +{ + lib, + config, + options, + ... +}: +{ options.mods = { virtualbox.enable = lib.mkOption { @@ -12,7 +18,6 @@ }; config = lib.optionalAttrs (options ? virtualisation.virtualbox.host) { - virtualisation.virtualbox.host.enable = - lib.mkIf config.mods.virtualbox.enable true; + virtualisation.virtualbox.host.enable = lib.mkIf config.mods.virtualbox.enable true; }; } diff --git a/modules/programs/xone.nix b/modules/programs/xone.nix index 77ce121..0779744 100644 --- a/modules/programs/xone.nix +++ b/modules/programs/xone.nix @@ -1,4 +1,10 @@ -{ lib, config, options, ... }: { +{ + lib, + config, + options, + ... +}: +{ options.mods = { xone.enable = lib.mkOption { @@ -11,6 +17,5 @@ }; }; - 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 index 9e68ecd..692faf0 100644 --- a/modules/programs/yazi/default.nix +++ b/modules/programs/yazi/default.nix @@ -1,4 +1,10 @@ -{ lib, config, options, ... }: { +{ + lib, + config, + options, + ... +}: +{ options.mods.yazi = { enable = lib.mkOption { default = true; @@ -7,8 +13,7 @@ description = "Enables yazi"; }; }; - config = lib.mkIf config.mods.yazi.enable - (lib.optionalAttrs (options ? home.packages) { - programs.yazi = import ./yazi.nix; - }); + 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 index 51eac1f..b8ead8c 100644 --- a/modules/programs/yazi/yazi.nix +++ b/modules/programs/yazi/yazi.nix @@ -2,7 +2,9 @@ # don't ask.... enable = true; settings = { - log = { enabled = false; }; + log = { + enabled = false; + }; opener = { folder = [ @@ -16,14 +18,18 @@ orphan = true; } ]; - archive = [{ - run = ''unar "$1"''; - display_name = "Extract here"; - }]; - text = [{ - run = ''$EDITOR "$@"''; - orphan = true; - }]; + archive = [ + { + run = ''unar "$1"''; + display_name = "Extract here"; + } + ]; + text = [ + { + run = ''$EDITOR "$@"''; + orphan = true; + } + ]; image = [ { run = ''imv "$@"''; @@ -36,11 +42,13 @@ display_name = "Show EXIF"; } ]; - pdf = [{ - run = ''zathura "$@"''; - orphan = true; - display_name = "Open"; - }]; + pdf = [ + { + run = ''zathura "$@"''; + orphan = true; + display_name = "Open"; + } + ]; video = [ { run = ''mpv "$@"''; @@ -216,7 +224,10 @@ } { - on = [ "g" "g" ]; + on = [ + "g" + "g" + ]; run = "arrow -99999999"; desc = "Move cursor to the top"; } @@ -335,12 +346,20 @@ desc = "Toggle the visibility of hidden files"; } { - on = [ "" "f" "g>" ]; + on = [ + "" + "f" + "g>" + ]; run = "search fd"; desc = "Search files by name using fd"; } { - on = [ "" "f" "G>" ]; + on = [ + "" + "f" + "G>" + ]; run = "search rg"; desc = "Search files by content using ripgrep"; } @@ -362,22 +381,34 @@ # Copy { - on = [ "c" "c" ]; + on = [ + "c" + "c" + ]; run = "copy path"; desc = "Copy the absolute path"; } { - on = [ "c" "d" ]; + on = [ + "c" + "d" + ]; run = "copy dirname"; desc = "Copy the path of the parent directory"; } { - on = [ "c" "f" ]; + on = [ + "c" + "f" + ]; run = "copy filename"; desc = "Copy the name of the file"; } { - on = [ "c" "n" ]; + on = [ + "c" + "n" + ]; run = "copy name_without_ext"; desc = "Copy the name of the file without the extension"; } @@ -402,52 +433,82 @@ # Sorting { - on = [ "," "a" ]; + on = [ + "," + "a" + ]; run = "sort alphabetical --dir_first"; desc = "Sort alphabetically"; } { - on = [ "," "A" ]; + on = [ + "," + "A" + ]; run = "sort alphabetical --reverse --dir_first"; desc = "Sort alphabetically (reverse)"; } { - on = [ "," "c" ]; + on = [ + "," + "c" + ]; run = "sort created --dir_first"; desc = "Sort by creation time"; } { - on = [ "," "C" ]; + on = [ + "," + "C" + ]; run = "sort created --reverse --dir_first"; desc = "Sort by creation time (reverse)"; } { - on = [ "," "m" ]; + on = [ + "," + "m" + ]; run = "sort modified --dir_first"; desc = "Sort by modified time"; } { - on = [ "," "M" ]; + on = [ + "," + "M" + ]; run = "sort modified --reverse --dir_first"; desc = "Sort by modified time (reverse)"; } { - on = [ "," "n" ]; + on = [ + "," + "n" + ]; run = "sort natural --dir_first"; desc = "Sort naturally"; } { - on = [ "," "N" ]; + on = [ + "," + "N" + ]; run = "sort natural --reverse --dir_first"; desc = "Sort naturally (reverse)"; } { - on = [ "," "s" ]; + on = [ + "," + "s" + ]; run = "sort size --dir_first"; desc = "Sort by size"; } { - on = [ "," "S" ]; + on = [ + "," + "S" + ]; run = "sort size --reverse --dir_first"; desc = "Sort by size (reverse)"; } @@ -536,27 +597,42 @@ # Goto { - on = [ "g" "h" ]; + on = [ + "g" + "h" + ]; run = "cd ~"; desc = "Go to the home directory"; } { - on = [ "g" "c" ]; + on = [ + "g" + "c" + ]; run = "cd ~/.config"; desc = "Go to the config directory"; } { - on = [ "g" "d" ]; + on = [ + "g" + "d" + ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; } { - on = [ "g" "t" ]; + on = [ + "g" + "t" + ]; run = "cd /tmp"; desc = "Go to the temporary directory"; } { - on = [ "g" "" ]; + on = [ + "g" + "" + ]; run = "cd --interactive"; desc = "Go to a directory interactively"; } @@ -718,7 +794,11 @@ } { on = [ "V" ]; - run = [ "move -999" "visual" "move 999" ]; + run = [ + "move -999" + "visual" + "move 999" + ]; desc = "Enter visual mode and select all"; } @@ -746,12 +826,18 @@ } { on = [ "I" ]; - run = [ "move -999" "insert" ]; + run = [ + "move -999" + "insert" + ]; desc = "Move to the BOL and enter insert mode"; } { on = [ "A" ]; - run = [ "move 999" "insert --append" ]; + run = [ + "move 999" + "insert --append" + ]; desc = "Move to the EOL and enter append mode"; } @@ -790,7 +876,10 @@ } { on = [ "D" ]; - run = [ "delete --cut" "move 999" ]; + run = [ + "delete --cut" + "move 999" + ]; desc = "Cut until the EOL"; } { @@ -800,12 +889,18 @@ } { on = [ "C" ]; - run = [ "delete --cut --insert" "move 999" ]; + run = [ + "delete --cut --insert" + "move 999" + ]; desc = "Cut until the EOL and enter insert mode"; } { on = [ "x" ]; - run = [ "delete --cut" "move 1 --in-operating" ]; + run = [ + "delete --cut" + "move 1 --in-operating" + ]; desc = "Cut the current character"; } @@ -1136,4 +1231,3 @@ # }; # }; } - diff --git a/override/teams.nix b/override/teams.nix index eff69a1..4370d7a 100644 --- a/override/teams.nix +++ b/override/teams.nix @@ -1,4 +1,11 @@ -{ stdenv, lib, copyDesktopItems, makeDesktopItem, chromium, ... }: +{ + stdenv, + lib, + copyDesktopItems, + makeDesktopItem, + chromium, + ... +}: stdenv.mkDerivation (final: { pname = "teams-pwa"; name = final.pname; @@ -10,8 +17,8 @@ stdenv.mkDerivation (final: { name = final.pname; icon = final.pname; exec = "${chromium}/bin/${ - chromium.meta.mainProgram or chromium.pname - } --app=https://teams.microsoft.com"; + chromium.meta.mainProgram or chromium.pname + } --app=https://teams.microsoft.com"; desktopName = "Microsoft Teams PWA"; genericName = "Progressive Web App for Microsoft Teams"; categories = [ "Network" ]; From 218b7dc4caa2e4f46dd15a0c583029bbdffeafdb Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 19:51:45 +0200 Subject: [PATCH 105/330] Adjust base and home packages --- home/common.nix | 2 - modules/conf.nix | 21 +++-- modules/programs/base_packages.nix | 49 ++++------ modules/programs/default.nix | 1 + modules/programs/flatpak.nix | 1 + modules/programs/home_packages.nix | 143 +++++++++++++++++------------ modules/programs/podman.nix | 34 +++++++ modules/programs/stylix.nix | 8 ++ 8 files changed, 156 insertions(+), 103 deletions(-) create mode 100644 modules/programs/podman.nix diff --git a/home/common.nix b/home/common.nix index 2cdcbcd..f976a76 100644 --- a/home/common.nix +++ b/home/common.nix @@ -20,8 +20,6 @@ in home = { username = username; homeDirectory = "/home/${username}"; - stateVersion = "24.05"; - sessionPath = [ "$HOME/.cargo/bin" ]; sessionVariables = { diff --git a/modules/conf.nix b/modules/conf.nix index 341d301..32872e5 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -182,20 +182,27 @@ ''; }; - system_state_version = lib.mkOption { + state_version = lib.mkOption { default = "unstable"; example = "24.05"; type = lib.types.str; description = '' - System state version + System and home state version ''; }; }; - 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"; }); + config = + { + conf.kernel = lib.mkIf ( + config.mods.gaming.enable && config.mods.gaming.kernel + ) pkgs.linuxPackages_xanmod_latest; + } + // (lib.optionalAttrs (options ? system.stateVersion) { + system.stateVersion = config.conf.state_version; + }) + // (lib.optionalAttrs (options ? home.stateVersion) { + home.stateVersion = config.conf.state_version; + }); } diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index 5d94c75..554d7ef 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -36,47 +36,30 @@ // (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 + dbus + dconf + direnv + glib + gnome.nixos-gsettings-overrides + gsettings-desktop-schemas + gtk-layer-shell + gtk3 + gtk4 + gtk4-layer-shell hicolor-icon-theme - morewaita-icon-theme + icon-library kdePackages.breeze-icons + libadwaita + libxkbcommon + nixfmt-rfc-style + openssl seahorse upower - thunderbird - podman-tui - podman-compose - dive + xorg.xkbutils ]; gtk.iconCache.enable = false; - - fonts.packages = with pkgs; [ cantarell-fonts ]; - - virtualisation = { - containers.enable = true; - podman = { - enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; - }; - }; - services = { upower.enable = true; dbus = { diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 4c8afbd..6d15d00 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -24,6 +24,7 @@ ./nextcloud.nix ./oxi ./piper.nix + ./podman.nix ./printing.nix ./scripts.nix ./sops.nix diff --git a/modules/programs/flatpak.nix b/modules/programs/flatpak.nix index 54011f3..3ffd068 100644 --- a/modules/programs/flatpak.nix +++ b/modules/programs/flatpak.nix @@ -22,6 +22,7 @@ }; config = lib.mkIf config.mods.flatpak.enable ( lib.optionalAttrs (options ? services.flatpak.remote) { + environment.systemPackages = [ pkgs.flatpak ]; services.flatpak.remotes = lib.mkOptionDefault [ { name = "flathub-stable"; diff --git a/modules/programs/home_packages.nix b/modules/programs/home_packages.nix index e072514..460caf8 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/home_packages.nix @@ -8,6 +8,12 @@ }: { options.mods.home_packages = { + noDefaultPackages = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "No default packages (will use additional_packages only)"; + }; enable = lib.mkOption { default = true; example = false; @@ -23,77 +29,92 @@ Will be installed regardless of default home manager packages are installed. ''; }; + matrixClient = lib.mkOption { + default = pkgs.nheko; + example = null; + type = with lib.types; nullOr package; + description = "The matrix client"; + }; + vesktop = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Adds the vesktop discord client"; + }; + ncspot = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Adds the ncspot spotify client"; + }; + nextcloudClient = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Adds the full desktop nextcloud client (the nextcloud module in dashnix only provides the cli tool)"; + }; + mailClient = lib.mkOption { + default = pkgs.thunderbird; + example = null; + type = with lib.types; nullOr package; + description = "The email client"; + }; }; config = ( - lib.optionalAttrs (options ? home.packages) { - home.packages = config.mods.home_packages.additional_packages; - } - // (lib.mkIf config.mods.home_packages.enable ( + lib.mkIf config.mods.home_packages.noDefaultPackages ( lib.optionalAttrs (options ? home.packages) { - home.packages = with pkgs; [ - nheko - nextcloud-client - xournalpp - vesktop - kitty - ripgrep + home.packages = config.mods.home_packages.additional_packages; + } + ) + // (lib.optionalAttrs (options ? home.packages) { + home.packages = + with pkgs; + [ # TODO add fcp once fixed.... - rm-improved - bat - fd - lsd - (nerdfonts.override { fonts = [ "JetBrainsMono" ]; }) - noto-fonts - flatpak - networkmanager - zoxide - fastfetch - gnome-keyring - dbus - killall + (lib.mkIf config.mods.home_packages.ncspot ncspot) + (lib.mkIf config.mods.home_packages.vesktop vesktop) + (lib.mkIf config.mods.home_packages.nextcloudClient nextcloud-client) + (lib.mkIf (options ? config.mods.home_pakcage.matrixClient) config.mods.home_packages.matrixClient) + (lib.mkIf (options ? config.mods.home_packages.mailClient) config.mods.home_packages.mailClient) adw-gtk3 + bat + brave + brightnessctl + dbus + fastfetch + fd + ffmpeg + flake-checker + gnome-keyring + gnutar + greetd.regreet + killall + kitty + libnotify + lsd + networkmanager + nh + nix-index + playerctl + poppler_utils + pulseaudio qt5ct qt6ct - gnutar - nix-index - libnotify - zenith - nh - amberol - pulseaudio - playerctl - ncspot - poppler_utils - brave - greetd.regreet - flake-checker - ffmpeg + ripgrep + rm-improved system-config-printer - brightnessctl - ]; + xournalpp + zenith + zoxide + ] + ++ config.mods.home_packages.additional_packages; - 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"; }; + }; - #my own programs - programs = { - hyprdock.enable = true; - oxicalc.enable = true; - ReSet.enable = true; - ReSet.config.plugins = [ - inputs.reset-plugins.packages."x86_64-linux".monitor - inputs.reset-plugins.packages."x86_64-linux".keyboard - ]; - ReSet.config.plugin_config = { - Keyboard = { - path = "/home/${config.conf.username}/.config/reset/keyboard.conf"; - }; - }; - }; - } - )) + }) ); } diff --git a/modules/programs/podman.nix b/modules/programs/podman.nix new file mode 100644 index 0000000..58441e4 --- /dev/null +++ b/modules/programs/podman.nix @@ -0,0 +1,34 @@ +{ + lib, + config, + options, + pkgs, + ... +}: +{ + options.mods.podman = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables and configures podman"; + }; + }; + config = lib.mkIf config.mods.podman.enable ( + lib.optionalAttrs (options ? virtualisation.podman) { + environment.systemPackages = with pkgs; [ + podman-tui + podman-compose + dive + ]; + virtualisation = { + containers.enable = true; + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; + }; + } + ); +} diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index 2c8b7e2..61ac943 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -105,5 +105,13 @@ ); }; } + // lib.optionalAttrs (options ? environment.systemPackages) { + environment.systemPackages = [ + config.mods.stylix.fonts.serif.package + config.mods.stylix.fonts.sansSerif.package + config.mods.stylix.fonts.monospace.package + config.mods.stylix.fonts.emoji.package + ]; + } ); } From b748d26d4f06fa9f0258018e7f7ce4ad79d14138 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 19:54:01 +0200 Subject: [PATCH 106/330] Split home and system state version --- modules/conf.nix | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/modules/conf.nix b/modules/conf.nix index 32872e5..65e7ded 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -182,12 +182,20 @@ ''; }; - state_version = lib.mkOption { + systemStateVersion = lib.mkOption { default = "unstable"; example = "24.05"; type = lib.types.str; description = '' - System and home state version + System state version + ''; + }; + homeStateVersion = lib.mkOption { + default = "24.05"; + example = "23.05"; + type = lib.types.str; + description = '' + Home state version ''; }; @@ -200,9 +208,9 @@ ) pkgs.linuxPackages_xanmod_latest; } // (lib.optionalAttrs (options ? system.stateVersion) { - system.stateVersion = config.conf.state_version; + system.stateVersion = config.conf.systemStateVersion; }) // (lib.optionalAttrs (options ? home.stateVersion) { - home.stateVersion = config.conf.state_version; + home.stateVersion = config.conf.homeStateVersion; }); } From d3328bc70564322b0e4aba19c4cd92b81ab70ebf Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 19:57:32 +0200 Subject: [PATCH 107/330] Add toString for cursor sizes --- modules/programs/greetd.nix | 2 +- modules/programs/hyprland/hyprland.nix | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 52aa2a5..4e1227e 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -105,7 +105,7 @@ } env=XCURSOR_THEME,${config.mods.stylix.cursor.name} - env=XCURSOR_SIZE,${config.mods.stylix.cursor.size} + env=XCURSOR_SIZE,${toString config.mods.stylix.cursor.size} exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit ''; diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 44e4bb6..d85b771 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -272,9 +272,9 @@ "XDG_SESSION_TYPE=wayland" "XDG_SESSION_DESKTOP=Hyprland" "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" - "HYPRCURSOR_SIZE,${config.mods.stylix.cursor.size}" + "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" "XCURSOR_THEME,${config.mods.stylix.cursor.name}" - "XCURSOR_SIZE,${config.mods.stylix.cursor.size}" + "XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" "QT_QPA_PLATFORM,wayland" "QT_QPA_PLATFORMTHEME,qt5ct" "QT_WAYLAND_FORCE_DPI,96" From 5d5abbc1a8f84b8a2b26e4eb44841a4d7246e845 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 20:12:05 +0200 Subject: [PATCH 108/330] Change to optional --- modules/programs/home_packages.nix | 124 ++++++++++++++--------------- 1 file changed, 58 insertions(+), 66 deletions(-) diff --git a/modules/programs/home_packages.nix b/modules/programs/home_packages.nix index 460caf8..aa67cce 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/home_packages.nix @@ -3,27 +3,20 @@ options, config, pkgs, - inputs, ... }: { options.mods.home_packages = { - noDefaultPackages = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = "No default packages (will use additional_packages only)"; - }; - enable = lib.mkOption { + useDefaultPackages = lib.mkOption { default = true; example = false; type = lib.types.bool; - description = "Home manager packages"; + description = "Use default packages (will use additional_packages only if disabled)"; }; additional_packages = lib.mkOption { default = [ ]; example = [ pkgs.flatpak ]; - type = lib.types.str; + type = with lib.types; listOf package; description = '' Additional Home manager packages. Will be installed regardless of default home manager packages are installed. @@ -60,61 +53,60 @@ description = "The email client"; }; }; - config = ( - lib.mkIf config.mods.home_packages.noDefaultPackages ( - lib.optionalAttrs (options ? home.packages) { - home.packages = config.mods.home_packages.additional_packages; - } - ) - // (lib.optionalAttrs (options ? home.packages) { - home.packages = - with pkgs; - [ - # TODO add fcp once fixed.... - (lib.mkIf config.mods.home_packages.ncspot ncspot) - (lib.mkIf config.mods.home_packages.vesktop vesktop) - (lib.mkIf config.mods.home_packages.nextcloudClient nextcloud-client) - (lib.mkIf (options ? config.mods.home_pakcage.matrixClient) config.mods.home_packages.matrixClient) - (lib.mkIf (options ? config.mods.home_packages.mailClient) config.mods.home_packages.mailClient) - adw-gtk3 - bat - brave - brightnessctl - dbus - fastfetch - fd - ffmpeg - flake-checker - gnome-keyring - gnutar - greetd.regreet - killall - kitty - libnotify - lsd - networkmanager - nh - nix-index - playerctl - poppler_utils - pulseaudio - qt5ct - qt6ct - ripgrep - rm-improved - system-config-printer - xournalpp - zenith - zoxide - ] - ++ config.mods.home_packages.additional_packages; - - xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" { - global = { - warn_timeout = "-1s"; - }; - }; - + config = + (lib.optionalAttrs (options ? home.packages) { + home.packages = config.mods.home_packages.additional_packages; }) - ); + // lib.mkIf config.mods.home_packages.useDefaultPackages ( + lib.optionalAttrs (options ? home.packages) { + home.packages = + with pkgs; + [ + # TODO add fcp once fixed.... + (lib.mkIf config.mods.home_packages.ncspot ncspot) + (lib.mkIf config.mods.home_packages.vesktop vesktop) + (lib.mkIf config.mods.home_packages.nextcloudClient nextcloud-client) + (lib.mkIf (!isNull config.mods.home_packages.matrixClient) config.mods.home_packages.matrixClient) + (lib.mkIf (!isNull config.mods.home_packages.mailClient) config.mods.home_packages.mailClient) + adw-gtk3 + bat + brave + brightnessctl + dbus + fastfetch + fd + ffmpeg + flake-checker + gnome-keyring + gnutar + greetd.regreet + killall + kitty + libnotify + lsd + networkmanager + nh + nix-index + playerctl + poppler_utils + pulseaudio + qt5ct + qt6ct + ripgrep + rm-improved + system-config-printer + xournalpp + zenith + zoxide + ] + ++ config.mods.home_packages.additional_packages; + + xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" { + global = { + warn_timeout = "-1s"; + }; + }; + + } + ); } From 351584ecb493d48f6c358e58b3edf7168a659a4e Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 21:48:46 +0200 Subject: [PATCH 109/330] Add more kitty configuration values --- example/hosts/example/hardware.nix | 4 +++- example/hosts/example/home.nix | 4 +++- modules/programs/fish.nix | 1 - modules/programs/kitty.nix | 23 ++++++++++++++++------- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/example/hosts/example/hardware.nix b/example/hosts/example/hardware.nix index ffcd441..855cafb 100644 --- a/example/hosts/example/hardware.nix +++ b/example/hosts/example/hardware.nix @@ -1 +1,3 @@ -{ } +{ + # this file adds custom NixOS configuration +} diff --git a/example/hosts/example/home.nix b/example/hosts/example/home.nix index ffcd441..e011ea7 100644 --- a/example/hosts/example/home.nix +++ b/example/hosts/example/home.nix @@ -1 +1,3 @@ -{ } +{ + # this file adds custom home-manager configuration +} diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 54e6f67..21ea5ee 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -2,7 +2,6 @@ lib, config, options, - pkgs, ... }: { diff --git a/modules/programs/kitty.nix b/modules/programs/kitty.nix index b7bac45..a837613 100644 --- a/modules/programs/kitty.nix +++ b/modules/programs/kitty.nix @@ -27,6 +27,7 @@ let "e" = "d"; "f" = "e"; }; + # don't ask :) base = "#" + lib.strings.concatStrings ( @@ -42,6 +43,15 @@ in type = lib.types.bool; description = "Enables kitty"; }; + additionalConfig = lib.mkOption { + default = { }; + example = { + # for the insane people out there :P + enable_audio_bell = "yes"; + }; + type = with lib.types; attrsOf anything; + description = "Additional kitty configuration"; + }; }; config = lib.mkIf config.mods.kitty.enable ( lib.optionalAttrs (options ? home.packages) { @@ -59,10 +69,10 @@ in sync_with_monitor = "no"; background_opacity = "0.8"; - font_family = "JetBrainsMono Nerd Font Mono"; - bold_font = "JetBrainsMono Nerd Font Mono Extra Bold"; - italic_font = "JetBrainsMono Nerd Font Mono Extra Italic"; - bold_italic_font = "JetBrainsMono Nerd Font Mono Extra Bold Italic"; + font_family = "${config.mods.stylix.monospace.name}"; + bold_font = "${config.mods.stylix.monospace.name} Extra Bold"; + italic_font = "${config.mods.stylix.monospace.name} Extra Italic"; + bold_italic_font = "${config.mods.stylix.monospace.name} Extra Bold Italic"; background = base; foreground = "#" + scheme.base05; @@ -96,9 +106,8 @@ in color14 = "#" + scheme.base0C; color15 = "#" + scheme.base07; - shell = "fish"; - }; - + shell = lib.mkIf config.mods.fish.enable "fish"; + } // config.mods.kitty.additionalConfig; }; } ); From e3619d6c949b459d9d802c0b1e87a5f8643dd4f6 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 25 Aug 2024 23:47:33 +0200 Subject: [PATCH 110/330] Introduce more options to configure individual modules --- modules/programs/coding.nix | 483 ++++++++++++++++++++++------ modules/programs/fish.nix | 259 ++++++++------- modules/programs/gaming.nix | 36 ++- modules/programs/gnome_services.nix | 54 ++-- modules/programs/gpu.nix | 41 ++- modules/programs/greetd.nix | 18 +- modules/programs/home_packages.nix | 10 +- modules/programs/keepassxc.nix | 6 +- modules/programs/kitty.nix | 8 +- modules/programs/media.nix | 13 +- modules/programs/stylix.nix | 9 +- modules/programs/yazi/default.nix | 30 ++ modules/programs/yazi/yazi.nix | 232 +------------ 13 files changed, 668 insertions(+), 531 deletions(-) diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 595574c..fb5dff7 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -32,20 +32,358 @@ Enables jetbrains toolbox. ''; }; + useDefaultPackages = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Use default base packages (only additionalPackages are installed if false)"; + }; + additionalPackages = lib.mkOption { + default = [ ]; + example = [ ]; + type = with lib.types; listOf package; + description = "Additional packages to be installed"; + }; + languages = { + haskell = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables haskell. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + haskellPackages.cabal-install + ghc + haskellPackages.haskell-language-server + ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + haskell packages + ''; + }; + }; + typst = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables typst. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + typst + tinymist + ltex-ls + ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + typst packages + ''; + }; + }; + go = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables go. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + go + gopls + ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + Go packages + ''; + }; + }; + rust = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables rust. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ rustup ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + Rust packages + ''; + }; + }; + ts-js = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables TS/JS. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + nodejs_20 + deno + typescript + nodePackages.typescript-language-server + nodePackages.prettier + ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + TS/JS packages + ''; + }; + }; + zig = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables zig. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + zig + zls + ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + zig packages + ''; + }; + }; + java = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables java. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + gradle + maven + jdt-language-server + temurin-jre-bin + ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + Java packages + ''; + }; + }; + dotnet = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables C#/F#. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + #.! + dotnet-sdk_8 + omnisharp-roslyn + csharpier + netcoredbg + #fsharp + fsharp + fsautocomplete + ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + C#/F# packages + ''; + }; + }; + C-CPP = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables C/C++. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + bear + gcc + clang-tools + ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + C/C++ packages + ''; + }; + }; + python = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables python. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + python3 + python312Packages.python-lsp-server + python312Packages.python-lsp-ruff + python312Packages.python-lsp-black + ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + python packages + ''; + }; + }; + configFiles = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables Json/toml/yaml etc. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + #yaml + yamlfmt + yamllint + yaml-language-server + + #json + jq + ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + packages for said filetypes + ''; + }; + }; + bash = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables bash. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + bash-language-server + shfmt + ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + bash packages + ''; + }; + }; + html-css = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables html/css. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + tailwindcss + tailwindcss-language-server + # html-tidy + ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + html/css packages + ''; + }; + }; + sql = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables sql. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + nodePackages.sql-formatter + sqls + ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + sql packages + ''; + }; + }; + asm = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables assembly. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ asm-lsp ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + assembly packages + ''; + }; + }; + }; }; }; - 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 + config = + let + basePackages = with pkgs; [ gitui - gcc meson ninja tree-sitter @@ -54,100 +392,39 @@ sqlite plantuml d-spy - - # cpp - bear - clang-tools - - #sql - nodePackages.sql-formatter - sqls - - #assembly - asm-lsp - - #yaml - yamlfmt - yamllint - yaml-language-server - - #markdown - marksman - mdformat - - #bash - bash-language-server - shfmt - - #fsharp - fsharp - fsautocomplete - - #haskell - haskellPackages.cabal-install - ghc - haskellPackages.haskell-language-server - - #html - # html-tidy - - #json - jq - - #css - tailwindcss - tailwindcss-language-server - - #editors - neovide - ##fallback - vscodium - - #rust - rustup - - #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 - - #go - go - gopls - - #typst - typst - tinymist - ltex-ls - - #java - gradle - maven - jdt-language-server - temurin-jre-bin - - #.! - dotnet-sdk_8 - omnisharp-roslyn - csharpier - netcoredbg - - #zig - zig - zls - tmux tmate + #editors + neovide + #fallback + vscodium ]; - - } - ); + in + 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) ] + ++ config.mods.coding.additionalPackages + ++ (lib.lists.optionals config.mods.coding.useDefaultPackages basePackages) + ++ (lib.lists.optionals config.mods.coding.languages.haskell.enable config.mods.coding.languages.haskell.packages) + ++ (lib.lists.optionals config.mods.coding.languages.rust.enable config.mods.coding.languages.rust.packages) + ++ (lib.lists.optionals config.mods.coding.languages.go.enable config.mods.coding.languages.go.packages) + ++ (lib.lists.optionals config.mods.coding.languages.java.enable config.mods.coding.languages.java.packages) + ++ (lib.lists.optionals config.mods.coding.languages.dotnet.enable config.mods.coding.languages.dotnet.packages) + ++ (lib.lists.optionals config.mods.coding.languages.bash.enable config.mods.coding.languages.bash.packages) + ++ (lib.lists.optionals config.mods.coding.languages.C-CPP.enable config.mods.coding.languages.C-CPP.packages) + ++ (lib.lists.optionals config.mods.coding.languages.asm.enable config.mods.coding.languages.asm.packages) + ++ (lib.lists.optionals config.mods.coding.languages.sql.enable config.mods.coding.languages.sql.packages) + ++ (lib.lists.optionals config.mods.coding.languages.html-css.enable config.mods.coding.languages.html-css.packages) + ++ (lib.lists.optionals config.mods.coding.languages.configFiles.enable config.mods.coding.languages.configFiles.packages) + ++ (lib.lists.optionals config.mods.coding.languages.ts-js.enable config.mods.coding.languages.ts-js.packages) + ++ (lib.lists.optionals config.mods.coding.languages.typst.enable config.mods.coding.languages.typst.packages) + ++ (lib.lists.optionals config.mods.coding.languages.zig.enable config.mods.coding.languages.zig.packages); + } + ); } diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 21ea5ee..887b6c7 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -12,146 +12,163 @@ type = lib.types.bool; description = "Enables fish"; }; + additionalConfig = lib.mkOption { + default = ''''; + example = ''''; + type = lib.types.lines; + description = "Additional fish config"; + }; + useDefaultConfig = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Use default fish config"; + }; }; config = lib.mkIf config.mods.fish.enable ( lib.optionalAttrs (options ? programs.fish) { programs.fish = { enable = true; - shellInit = '' - if status is-interactive - # Commands to run in interactive sessions can go here - end - - # ============================================================================= - # - # Utility functions for zoxide. - # - - export NIX_PATH="$NIX_PATH:${config.conf.nixos-config-path}" - - set EDITOR "neovide --no-fork" - - alias rebuild='sudo nixos-rebuild switch --flake ${config.conf.nixos-config-path}' - 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 - - # 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' + shellInit = + if config.mods.fish.useDefaultConfig then + '' + if status is-interactive + # Commands to run in interactive sessions can go here end - end - # cd + custom logic based on the value of _ZO_ECHO. - function __zoxide_cd - __zoxide_cd_internal $argv - end + # ============================================================================= + # + # Utility functions for zoxide. + # - # ============================================================================= - # - # Hook configuration for zoxide. - # + export NIX_PATH="$NIX_PATH:${config.conf.nixos-config-path}" - # 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 + set EDITOR "neovide --no-fork" - # ============================================================================= - # - # When using zoxide with --no-cmd, alias these internal functions as desired. - # + alias rebuild='sudo nixos-rebuild switch --flake ${config.conf.nixos-config-path}' + 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' - if test -z $__zoxide_z_prefix - set __zoxide_z_prefix 'z!' - end - set __zoxide_z_prefix_regex ^(string escape --style=regex $__zoxide_z_prefix) + set fish_greeting + # pwd based on the value of _ZO_RESOLVE_SYMLINKS. + function __zoxide_pwd + builtin pwd -L + 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) + # 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 + + # ============================================================================= + # + # 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 + + # ============================================================================= + # + # 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) + + # 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) + + 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 - end - # Completions. - function __zoxide_z_complete - set -l tokens (commandline --current-process --tokenize) - set -l curr_tokens (commandline --cut-at-cursor --current-process --tokenize) + # ============================================================================= + # + # Commands for zoxide. Disable these using --no-cmd. + # - 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)' + abbr --erase z &>/dev/null + alias z=__zoxide_z - # Jump to a directory using interactive search. - function __zoxide_zi - set -l result (command zoxide query --interactive -- $argv) - and __zoxide_cd $result - end + abbr --erase zi &>/dev/null + alias zi=__zoxide_zi - # ============================================================================= - # - # Commands for zoxide. Disable these using --no-cmd. - # + # ============================================================================= + # + # To initialize zoxide, add this to your configuration (usually + # ~/.config/fish/config.fish): + # + # zoxide init fish | source - abbr --erase z &>/dev/null - alias z=__zoxide_z - - 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 - - direnv hook fish | source - ''; + direnv hook fish | source + '' + + config.mods.fish.additionalConfig + else + config.mods.fish.additionalPackages; }; } ); diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 2652010..52c7af3 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -61,23 +61,25 @@ lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = config.mods.gaming.tools; - programs.steam.enable = config.mods.gaming.steam; - programs.gamemode.enable = true; - programs.gamemode = { - enableRenice = true; - settings = { - general = { - governor = "performance"; - }; - gpu = lib.mkIf config.mods.gaming.gpu_optimization { - apply_gpu_optimisations = "accept-responsibility"; - gpu_device = config.mods.gaming.gpu_device; - amd_performance_level = "high"; - nv_powermizer_mode = 1; - }; - custom = { - start = "notify-send -a 'Gamemode' 'Optimizations activated'"; - end = "notify-send -a 'Gamemode' 'Optimizations deactivated'"; + programs = { + steam.enable = config.mods.gaming.steam; + gamemode.enable = true; + gamemode = { + enableRenice = true; + settings = { + general = { + governor = "performance"; + }; + gpu = lib.mkIf config.mods.gaming.gpu_optimization { + apply_gpu_optimisations = "accept-responsibility"; + gpu_device = config.mods.gaming.gpu_device; + amd_performance_level = "high"; + nv_powermizer_mode = 1; + }; + custom = { + start = "notify-send -a 'Gamemode' 'Optimizations activated'"; + end = "notify-send -a 'Gamemode' 'Optimizations deactivated'"; + }; }; }; }; diff --git a/modules/programs/gnome_services.nix b/modules/programs/gnome_services.nix index f83418c..6add240 100644 --- a/modules/programs/gnome_services.nix +++ b/modules/programs/gnome_services.nix @@ -9,35 +9,47 @@ options.mods = { gnome_services.enable = lib.mkOption { default = true; - type = lib.types.bool; example = false; + type = lib.types.bool; description = '' Enables gnome services: keyring and settings daemon. Note: Do not use these for environments which ship these functionalities by default: GNOME, KDE ''; }; + nautilus.enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables and configures Nautilus + ''; + }; }; - 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 - ]; + 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 + ]; - gnome.gnome-keyring.enable = true; - gvfs.enable = true; - }; - } + gnome.gnome-keyring.enable = true; + gvfs.enable = true; + }; + } + ) // lib.optionalAttrs (options ? home.packages) { - home.packages = with pkgs; [ - nautilus - sushi - nautilus-python - ]; - } - ); + home.packages = lib.mkIf config.mods.gnome_services.nautilus.enable ( + with pkgs; + [ + nautilus + sushi + nautilus-python + ] + ); + }; } diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index 24c37b6..bfd4964 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -10,25 +10,33 @@ options.mods = { nvidia.enable = lib.mkOption { default = false; - type = lib.types.bool; example = true; + type = lib.types.bool; description = '' Enables nvidia support. ''; }; amdgpu.enable = lib.mkOption { default = false; - type = lib.types.bool; example = true; + type = lib.types.bool; description = '' Enables amdgpu support. ''; }; + intelgpu.enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Enables intel support. + ''; + }; vapi = { enable = lib.mkOption { - default = false; + default = true; + example = false; type = lib.types.bool; - example = true; description = '' Enables vapi. ''; @@ -44,8 +52,8 @@ }; }; - config = lib.mkIf config.mods.vapi.enable ( - lib.optionalAttrs (options ? hardware.graphics) { + config = + (lib.optionalAttrs (options ? hardware.graphics) { boot = lib.mkIf config.mods.amdgpu.enable { kernelModules = [ "kvm-amd" ]; initrd.kernelModules = [ "amdgpu" ]; @@ -55,12 +63,14 @@ hardware = { graphics = let - base_packages = [ - pkgs.libvdpau-va-gl - pkgs.vaapiVdpau - pkgs.mesa.drivers + amdPackages = [ + (lib.mkIf (config.mods.intelgpu && lib.mkIf config.mods.vapi.enable) pkgs.vpl-gpu-rt) + (lib.mkIf (config.mods.intelgpu && lib.mkIf config.mods.vapi.enable) pkgs.intel-media-driver) + (lib.mkIf config.mods.vapi.enable pkgs.libvdpau-va-gl) + (lib.mkIf config.mods.vapi.enable pkgs.vaapiVdpau) + (lib.mkIf (config.mods.intelgpu || config.mods.amdgpu) pkgs.mesa.drivers) ]; - rocm_packages = [ + rocmPackages = [ pkgs.rocmPackages.clr.icd pkgs.rocm-opencl-runtime ]; @@ -68,10 +78,12 @@ { enable = true; enable32Bit = lib.mkDefault true; - extraPackages = base_packages ++ (lib.lists.optionals config.mods.vapi.rocm.enable rocm_packages); + extraPackages = + amdPackages + ++ (lib.lists.optionals (config.mods.vapi.rocm.enable && config.mods.gpu.amdgpu) rocmPackages); }; }; - } + }) // lib.optionalAttrs (options ? hardware.graphics) ( lib.mkIf config.mods.nvidia.enable { hardware.nvidia = { @@ -84,6 +96,5 @@ }; services.xserver.videoDrivers = [ "nvidia" ]; } - ) - ); + ); } diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 4e1227e..24f328b 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -43,6 +43,20 @@ Resolution/refreshrate used by the monitor in the login screen. ''; }; + environments = lib.mkOption { + default = '' + Hyprland + ''; + # no idea if these are written correctly + example = '' + Niri + River + ''; + type = lib.types.lines; + description = '' + List of environments that should be available in the login prompt. + ''; + }; }; }; @@ -78,9 +92,7 @@ }; }; - environment.etc."greetd/environments".text = '' - Hyprland - ''; + environment.etc."greetd/environments".text = config.mods.greetd.environments; # 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 = '' diff --git a/modules/programs/home_packages.nix b/modules/programs/home_packages.nix index aa67cce..21858fd 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/home_packages.nix @@ -52,6 +52,12 @@ type = with lib.types; nullOr package; description = "The email client"; }; + additionalBrowser = lib.mkOption { + default = pkgs.brave; + example = null; + type = with lib.types; nullOr package; + description = "Additional browser -> second to firefox, the only installed browser if firefox is disabled"; + }; }; config = (lib.optionalAttrs (options ? home.packages) { @@ -68,9 +74,11 @@ (lib.mkIf config.mods.home_packages.nextcloudClient nextcloud-client) (lib.mkIf (!isNull config.mods.home_packages.matrixClient) config.mods.home_packages.matrixClient) (lib.mkIf (!isNull config.mods.home_packages.mailClient) config.mods.home_packages.mailClient) + (lib.mkIf ( + !isNull config.mods.home_packages.additionalBrowser + ) config.mods.home_packages.additionalBrowser) adw-gtk3 bat - brave brightnessctl dbus fastfetch diff --git a/modules/programs/keepassxc.nix b/modules/programs/keepassxc.nix index fa7f24e..6bff531 100644 --- a/modules/programs/keepassxc.nix +++ b/modules/programs/keepassxc.nix @@ -22,9 +22,9 @@ cache_config = lib.mkOption { default = '' [General] - LastDatabases=/home/dashie/Music/Passwords.kdbx - LastActiveDatabase=/home/dashie/Music/Passwords.kdbx - LastOpenedDatabases=/home/dashie/Music/Passwords.kdbx + LastDatabases=/home/${config.conf.username}/Music/Passwords.kdbx + LastActiveDatabase=/home/${config.conf.username}/Music/Passwords.kdbx + LastOpenedDatabases=/home/${config.conf.username}/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 = ""; diff --git a/modules/programs/kitty.nix b/modules/programs/kitty.nix index a837613..335c132 100644 --- a/modules/programs/kitty.nix +++ b/modules/programs/kitty.nix @@ -69,10 +69,10 @@ in sync_with_monitor = "no"; background_opacity = "0.8"; - font_family = "${config.mods.stylix.monospace.name}"; - bold_font = "${config.mods.stylix.monospace.name} Extra Bold"; - italic_font = "${config.mods.stylix.monospace.name} Extra Italic"; - bold_italic_font = "${config.mods.stylix.monospace.name} Extra Bold Italic"; + font_family = "${config.mods.stylix.fonts.monospace.name}"; + bold_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold"; + italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Italic"; + bold_italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold Italic"; background = base; foreground = "#" + scheme.base05; diff --git a/modules/programs/media.nix b/modules/programs/media.nix index 5530ff4..6fcbf4f 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -7,27 +7,26 @@ }: { options.mods.media_packages = { - enable = lib.mkOption { + useBasePackages = lib.mkOption { default = true; example = false; type = lib.types.bool; - description = "Default media packages"; + description = "Default media packages (If disabled, only the additional packages will be installed)"; }; - additional_packages = lib.mkOption { + additionalPackages = lib.mkOption { default = [ ]; example = [ pkgs.flatpak ]; - type = lib.types.str; + type = with lib.types; listOf package; description = '' Additional media packages. - Will be installed regardless of default media packages are installed. ''; }; }; config = ( lib.optionalAttrs (options ? home.packages) { - home.packages = config.mods.media_packages.additional_packages; + home.packages = config.mods.media_packages.additionalPackages; } - // (lib.mkIf config.mods.media_packages.enable ( + // (lib.mkIf config.mods.media_packages.useBasePackages ( lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ # base audio diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index 61ac943..9a84760 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -85,8 +85,8 @@ description = "font config"; }; }; - config = ( - lib.optionalAttrs (options ? stylix) { + config = + (lib.optionalAttrs (options ? stylix) { stylix = { enable = true; image = ../../base/black.jpg; @@ -104,7 +104,7 @@ "${pkgs.base16-schemes}/share/themes/${config.mods.stylix.colorscheme}.yaml" ); }; - } + }) // lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = [ config.mods.stylix.fonts.serif.package @@ -112,6 +112,5 @@ config.mods.stylix.fonts.monospace.package config.mods.stylix.fonts.emoji.package ]; - } - ); + }; } diff --git a/modules/programs/yazi/default.nix b/modules/programs/yazi/default.nix index 692faf0..692b72d 100644 --- a/modules/programs/yazi/default.nix +++ b/modules/programs/yazi/default.nix @@ -12,8 +12,38 @@ type = lib.types.bool; description = "Enables yazi"; }; + useDefaultConfig = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Use default yazi config (if disabled only additionalConfig is used)"; + }; + additionalConfig = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = "Additional config for yazi"; + }; + useDefaultKeymap = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Use default yazi keymap (if disabled only additionalKeymap is used)"; + }; + additionalKeymap = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = "Additional keymap for yazi"; + }; }; config = lib.mkIf config.mods.yazi.enable ( lib.optionalAttrs (options ? home.packages) { programs.yazi = import ./yazi.nix; } + // { + programs.yazi.settings = { + settings = config.mods.yazi.additionalKeymap; + keymap = config.mods.yazi.additionalConfig; + }; + } ); } diff --git a/modules/programs/yazi/yazi.nix b/modules/programs/yazi/yazi.nix index b8ead8c..236d422 100644 --- a/modules/programs/yazi/yazi.nix +++ b/modules/programs/yazi/yazi.nix @@ -1,3 +1,4 @@ +{ lib, config, ... }: { # don't ask.... enable = true; @@ -6,7 +7,6 @@ enabled = false; }; opener = { - folder = [ { run = ''open - R "$@"''; @@ -1000,234 +1000,4 @@ } ]; }; - # 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"; - # } - # ]; - # }; - # }; } From da8ae20b5525ccb6f4059cc108daed70d45363bb Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 27 Aug 2024 22:47:48 +0200 Subject: [PATCH 111/330] Modularize nixos and home manager modules --- home/default.nix | 21 ++------------------- lib/default.nix | 43 ++++++++++++++++++++++++++++++++++--------- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/home/default.nix b/home/default.nix index 59049e8..14d244f 100644 --- a/home/default.nix +++ b/home/default.nix @@ -5,27 +5,10 @@ lib, mod, additionalHomeConfig, + homeMods, root, ... }: -let - base_imports = [ - inputs.anyrun.homeManagerModules.default - inputs.ironbar.homeManagerModules.default - inputs.oxicalc.homeManagerModules.default - inputs.oxishut.homeManagerModules.default - inputs.oxinoti.homeManagerModules.default - inputs.oxidash.homeManagerModules.default - inputs.oxipaste.homeManagerModules.default - inputs.hyprdock.homeManagerModules.default - inputs.hyprland.homeManagerModules.default - inputs.reset.homeManagerModules.default - inputs.nix-flatpak.homeManagerModules.nix-flatpak - inputs.sops-nix.homeManagerModules.sops - inputs.dashvim.homeManagerModules.dashvim - ../modules - ]; -in { xdg = { portal.config.common.default = "*"; @@ -49,7 +32,7 @@ in ./themes ./sync.nix ] - ++ base_imports + ++ homeMods ++ lib.optional (builtins.pathExists mod) mod ++ lib.optional (builtins.pathExists additionalHomeConfig) additionalHomeConfig; }; diff --git a/lib/default.nix b/lib/default.nix index 0b33f2e..e25a471 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,4 +1,34 @@ -{ inputs, pkgs, ... }: +{ + inputs, + pkgs, + mods ? { + nixos = [ + inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + ../base + ../home + ../modules + ]; + home = [ + inputs.anyrun.homeManagerModules.default + inputs.ironbar.homeManagerModules.default + inputs.oxicalc.homeManagerModules.default + inputs.oxishut.homeManagerModules.default + inputs.oxinoti.homeManagerModules.default + inputs.oxidash.homeManagerModules.default + inputs.oxipaste.homeManagerModules.default + inputs.hyprdock.homeManagerModules.default + inputs.hyprland.homeManagerModules.default + inputs.reset.homeManagerModules.default + inputs.nix-flatpak.homeManagerModules.nix-flatpak + inputs.sops-nix.homeManagerModules.sops + inputs.dashvim.homeManagerModules.dashvim + ../modules + ]; + }, + + ... +}: { /** # build_systems @@ -47,16 +77,11 @@ additionalHomeConfig root ; + homeMods = mods.home; }; modules = - [ - inputs.home-manager.nixosModules.home-manager - inputs.stylix.nixosModules.stylix - ../base - ../home - ../modules - mod - ] + [ mod ] + ++ mods.nixos ++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; }; From 574eeb0b076ce5369d689ac8b5326cad9c653506 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 27 Aug 2024 22:51:13 +0200 Subject: [PATCH 112/330] Add additional Module possibility --- home/default.nix | 2 ++ lib/default.nix | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/home/default.nix b/home/default.nix index 14d244f..67c4290 100644 --- a/home/default.nix +++ b/home/default.nix @@ -6,6 +6,7 @@ mod, additionalHomeConfig, homeMods, + additionalHomeMods, root, ... }: @@ -33,6 +34,7 @@ ./sync.nix ] ++ homeMods + ++ additionalHomeMods ++ lib.optional (builtins.pathExists mod) mod ++ lib.optional (builtins.pathExists additionalHomeConfig) additionalHomeConfig; }; diff --git a/lib/default.nix b/lib/default.nix index e25a471..777af7a 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -26,7 +26,10 @@ ../modules ]; }, - + additionalMods ? { + nixos = [ ]; + home = [ ]; + }, ... }: { @@ -78,10 +81,12 @@ root ; homeMods = mods.home; + additionalHomeMods = additionalMods.home; }; modules = [ mod ] ++ mods.nixos + ++ additionalMods.nixos ++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; }; From 12ec2b44b056a6394d5b1e0431a74faf7bb3a853 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 27 Aug 2024 22:55:22 +0200 Subject: [PATCH 113/330] Document module overriding --- README.md | 27 +++++++++++++++++++++++++++ lib/default.nix | 8 ++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ba5b930..5f2681b 100644 --- a/README.md +++ b/README.md @@ -111,9 +111,36 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang }; } ``` + ## First Login + After logging in the first time, your password will be set to "firstlogin", please change this to whatever you like. +## Modules + +You can add additional modules or remove all of them by overriding parameters to the build_systems command: + +```nix +nixosConfigurations = + let + additionalMods = { + nixos = [ + # your modules + ]; home = [ + # your modules + ]; + } + # passing this parameter will override the existing modules + mods = { + nixos = []; + home = []; + } + in + (inputs.dashNix.dashNixLib.build_systems [ + "system1" + ] ./. mods additionalMods); +``` + # Modules This configuration features several modules that can be used as preconfigured "recipies". diff --git a/lib/default.nix b/lib/default.nix index 777af7a..c50257b 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,6 +1,10 @@ { inputs, pkgs, + additionalMods ? { + nixos = [ ]; + home = [ ]; + }, mods ? { nixos = [ inputs.home-manager.nixosModules.home-manager @@ -26,10 +30,6 @@ ../modules ]; }, - additionalMods ? { - nixos = [ ]; - home = [ ]; - }, ... }: { From a50f970edaabb7d4983e06a9f42cfcf63199394a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 27 Aug 2024 23:11:39 +0200 Subject: [PATCH 114/330] Refactor nautilus packages --- modules/programs/gnome_services.nix | 48 ++++++++++++++--------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/modules/programs/gnome_services.nix b/modules/programs/gnome_services.nix index 6add240..cebbad1 100644 --- a/modules/programs/gnome_services.nix +++ b/modules/programs/gnome_services.nix @@ -26,30 +26,30 @@ }; }; - 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 - ]; + 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 + ]; - gnome.gnome-keyring.enable = true; - gvfs.enable = true; - }; - } - ) + gnome.gnome-keyring.enable = true; + gvfs.enable = true; + }; + } // lib.optionalAttrs (options ? home.packages) { - home.packages = lib.mkIf config.mods.gnome_services.nautilus.enable ( - with pkgs; - [ - nautilus - sushi - nautilus-python - ] - ); - }; + home.packages = + let + packages = with pkgs; [ + nautilus + sushi + nautilus-python + ]; + in + lib.mkIf config.mods.nautilus.enable packages; + } + ); } From 2195c7a850e70bc0d87b5c0733ef47a3e443f223 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 27 Aug 2024 23:51:52 +0200 Subject: [PATCH 115/330] Add docsga --- .github/workflows/docs.yaml | 57 ++++++++++++++++++++++++++++++ base/common_hardware.nix | 3 +- docs/default.nix | 17 +++++++++ docs/src/SUMMARY.md | 0 docs/src/dashNix.md | 1 + flake.nix | 6 +++- modules/conf.nix | 22 ++++++------ modules/programs/base_packages.nix | 2 +- modules/programs/git.nix | 6 ++-- result | 1 + 10 files changed, 98 insertions(+), 17 deletions(-) create mode 100644 .github/workflows/docs.yaml create mode 100644 docs/default.nix create mode 100644 docs/src/SUMMARY.md create mode 100755 docs/src/dashNix.md create mode 120000 result diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml new file mode 100644 index 0000000..c8c2126 --- /dev/null +++ b/.github/workflows/docs.yaml @@ -0,0 +1,57 @@ +name: Docs + +on: + push: + branches: + - main + +jobs: + build: + name: Build + + permissions: + contents: read + + runs-on: ubuntu-latest + + steps: + - name: Install Nix + uses: DeterminateSystems/nix-installer-action@main + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + extra-conf: | + extra-experimental-features = nix-command flakes + + - name: Set up cache + uses: DeterminateSystems/magic-nix-cache-action@main + + - name: Build docs + run: nix -L build github:${{ github.repository }}/${{ github.sha }}#docs + + - name: Prepare docs for upload + run: cp -r --dereference --no-preserve=mode,ownership result/ public/ + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: public/ + + deploy: + name: Deploy + + needs: build + + permissions: + pages: write + id-token: write + + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + runs-on: ubuntu-latest + + steps: + - name: Deploy docs to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 5b6b64c..4f3378c 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -24,7 +24,8 @@ in plymouth = { enable = true; }; - kernelPackages = config.conf.kernel; + #kernelPackages = config.conf.kernel; + kernelPackages = pkgs.linuxPackages_latest; initrd = { verbose = false; availableKernelModules = [ diff --git a/docs/default.nix b/docs/default.nix new file mode 100644 index 0000000..cae6795 --- /dev/null +++ b/docs/default.nix @@ -0,0 +1,17 @@ +{ pkgs, build_systems, ... }: + +let + makeOptionsDoc = configuration: pkgs.nixosOptionsDoc { inherit (configuration) options lib; }; + example = makeOptionsDoc (build_systems [ "example" ] ../example/.)."example"; +in +pkgs.stdenvNoCC.mkDerivation { + name = "dashNix-book"; + src = ./.; + + patchPhase = '' + sed '/*Declared by:*/,/^$/d' <${example.optionsCommonMark} >> src/dashNix.md + ''; + buildPhase = '' + ${pkgs.mdbook}/bin/mdbook build --dest-dir $out + ''; +} diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/src/dashNix.md b/docs/src/dashNix.md new file mode 100755 index 0000000..9f581fd --- /dev/null +++ b/docs/src/dashNix.md @@ -0,0 +1 @@ +pingpang diff --git a/flake.nix b/flake.nix index c0b027a..c87e619 100644 --- a/flake.nix +++ b/flake.nix @@ -66,8 +66,12 @@ }; }; in - { + rec { dashNixLib = import ./lib { inherit inputs pkgs; }; + docs = import ./docs { + inherit inputs pkgs; + build_systems = dashNixLib.build_systems; + }; dashNixInputs = inputs; stablePkgs = stable; unstablePkgs = pkgs; diff --git a/modules/conf.nix b/modules/conf.nix index 65e7ded..3ed8442 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -93,14 +93,14 @@ }; }; - kernel = lib.mkOption { - default = pkgs.linuxPackages_latest; - example = pkgs.linuxPackages_xanmod_latest; - type = with lib.types; nullOr attrs; - description = '' - kernel to be used - ''; - }; + #kernel = lib.mkOption { + # default = pkgs.linuxPackages_latest; + # example = pkgs.linuxPackages_xanmod_latest; + # type = with lib.types; nullOr attrs; + # description = '' + # kernel to be used + # ''; + #}; hostname = lib.mkOption { default = "nixos"; @@ -203,9 +203,9 @@ config = { - conf.kernel = lib.mkIf ( - config.mods.gaming.enable && config.mods.gaming.kernel - ) pkgs.linuxPackages_xanmod_latest; + # conf.kernel = lib.mkIf ( + # config.mods.gaming.enable && config.mods.gaming.kernel + # ) pkgs.linuxPackages_xanmod_latest; } // (lib.optionalAttrs (options ? system.stateVersion) { system.stateVersion = config.conf.systemStateVersion; diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index 554d7ef..f0eb012 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -20,7 +20,7 @@ additional_packages = lib.mkOption { default = [ ]; example = [ pkgs.openssl ]; - type = with lib.types; listOf packages; + type = with lib.types; listOf package; description = '' Additional packages to install. Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. diff --git a/modules/programs/git.nix b/modules/programs/git.nix index e1bf3c5..22688f0 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -22,12 +22,12 @@ 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 + if (config ? sops.secrets ? dashie.path) then "IdentityFile ${config.sops.secrets.dashie.path}" else "" diff --git a/result b/result new file mode 120000 index 0000000..a4e896e --- /dev/null +++ b/result @@ -0,0 +1 @@ +/nix/store/hpbdpm0knf560f4igq5yc6c6nvap7s65-dashNix-book \ No newline at end of file From cc67ca420cd978160dca005d765dd33dd4878d3e Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 28 Aug 2024 00:07:27 +0200 Subject: [PATCH 116/330] Add docs --- .github/workflows/docs.yaml | 1 + docs/default.nix | 17 ++++++++++++++++- docs/src/SUMMARY.md | 2 ++ docs/src/dashNix.md | 1 - result | 2 +- 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index c8c2126..ae6de9e 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -1,3 +1,4 @@ +# by https://github.com/danth/stylix/blob/master/.github/workflows/docs.yml name: Docs on: diff --git a/docs/default.nix b/docs/default.nix index cae6795..bed38b7 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -1,7 +1,22 @@ +# with friendly help by stylix: https://github.com/danth/stylix/blob/master/docs/default.nix { pkgs, build_systems, ... }: let - makeOptionsDoc = configuration: pkgs.nixosOptionsDoc { inherit (configuration) options lib; }; + makeOptionsDoc = + configuration: + pkgs.nixosOptionsDoc { + inherit (configuration) options; + + # Filter out any options not beginning with `stylix` + transformOptions = + option: + option + // { + visible = + option.visible + && (builtins.elemAt option.loc 0 == "conf" || builtins.elemAt option.loc 0 == "mods"); + }; + }; example = makeOptionsDoc (build_systems [ "example" ] ../example/.)."example"; in pkgs.stdenvNoCC.mkDerivation { diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md index e69de29..bb32006 100644 --- a/docs/src/SUMMARY.md +++ b/docs/src/SUMMARY.md @@ -0,0 +1,2 @@ +[Options](dashNix.md) + diff --git a/docs/src/dashNix.md b/docs/src/dashNix.md index 9f581fd..e69de29 100755 --- a/docs/src/dashNix.md +++ b/docs/src/dashNix.md @@ -1 +0,0 @@ -pingpang diff --git a/result b/result index a4e896e..c06014d 120000 --- a/result +++ b/result @@ -1 +1 @@ -/nix/store/hpbdpm0knf560f4igq5yc6c6nvap7s65-dashNix-book \ No newline at end of file +/nix/store/0fpgnkzjnwbjykdvbk4p2h3c7isb9sz9-dashNix-book \ No newline at end of file From a5da4f286ffcab8595b4e396b0eea671fad64004 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 28 Aug 2024 00:14:29 +0200 Subject: [PATCH 117/330] Move Readme to link --- README.md | 182 +------------------------------------------- docs/src/README.md | 181 +++++++++++++++++++++++++++++++++++++++++++ docs/src/SUMMARY.md | 6 +- 3 files changed, 187 insertions(+), 182 deletions(-) mode change 100644 => 120000 README.md create mode 100644 docs/src/README.md diff --git a/README.md b/README.md deleted file mode 100644 index 5f2681b..0000000 --- a/README.md +++ /dev/null @@ -1,181 +0,0 @@ -``` -██████ █████ ███████ ██ ██ ███ ██ ██ ██ ██ -██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ -██ ██ ███████ ███████ ███████ ██ ██ ██ ██ ███ -██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ -██████ ██ ██ ███████ ██ ██ ██ ████ ██ ██ ██ -``` - -A very opinionated (technically only for me) configuration that allows easy adding and removing of systems alongside custom configurations for each system. - -# Usage - -This flake is intended to be used as an input to your own NixOS configuration: - -```nix -dashNix = { - url = "github:DashieTM/DashNix"; - inputs = { - # ensure these are here to update the packages on your own - nixpkgs.follows = "nixpkgs"; - stable.follows = "stable"; - }; -}; -``` - -You can then configure your systems in your flake outputs with a provided library command: - -```nix -nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems [ - "system1" - "system2" - "system3" -] ./.); -``` - -In order for your configuration to work, you are required to at least provide a single config file with a further config file being optional for custom configuration. -The hardware.nix specifies additional NixOS configuration, while home.nix specifies additional home-manager configuration. (both optional) - -|- flake.nix\ -|- flake.lock\ -|- hosts/\ -|--- system1/\ -|------ configuration.nix (required)\ -|------ hardware.nix (optional)\ -|------ home.nix (optional)\ -|--- system2/\ -|------ configuration.nix (required)\ -|------ hardware.nix (optional)\ -|------ home.nix (optional)\ -|--- system3/\ -|------ configuration.nix (required)\ -|------ hardware.nix (optional)\ -|------ home.nix (optional) - -Here is a minimal required configuration.nix (the TODOs mention a required change): - -```nix -{ - # variables for system - # TODO important changes - conf = { - # change this to your monitor and your pc name - # should be something like DP-1 - monitor = "YOURMONITOR"; - # your username - username = "YOURNAME"; - # the name of your system - hostname = "YOURNAME"; - # TODO only needed when you use intel -> amd is default - # cpu = "intel"; - locale = "something.UTF-8"; - timezone = "CONTINENT/CITY"; - }; - # modules - mods = { - # default disk config has root home boot and swap partition, overwrite if you want something different - defaultDrives.enable = false; - extraDrives = [ - { - name = "boot"; - drive = { - device = "/dev/disk/by-label/BOOT"; - fsType = "vfat"; - options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; - }; - } - { - name = ""; - drive = { - device = "/dev/disk/by-label/ROOT"; - fsType = "ext4"; - options = [ "noatime" "nodiratime" "discard" ]; - }; - } - ]; - sops.enable = false; - nextcloud.enable = false; - hyprland.monitor = [ - # default - # TODO change this to your resolution - "DP-1,1920x1080@144,0x0,1" - # all others - ",highrr,auto,1" - ]; - # or amd, whatever you have - nvidia.enable = true; - kde_connect.enable = true; - # TODO change this to your main resolution - # -> this will be your login manager - greetd = { resolution = "3440x1440@180"; }; - }; -} -``` - -## First Login - -After logging in the first time, your password will be set to "firstlogin", please change this to whatever you like. - -## Modules - -You can add additional modules or remove all of them by overriding parameters to the build_systems command: - -```nix -nixosConfigurations = - let - additionalMods = { - nixos = [ - # your modules - ]; home = [ - # your modules - ]; - } - # passing this parameter will override the existing modules - mods = { - nixos = []; - home = []; - } - in - (inputs.dashNix.dashNixLib.build_systems [ - "system1" - ] ./. mods additionalMods); -``` - -# Modules - -This configuration features several modules that can be used as preconfigured "recipies". -These modules attempt to combine the home-manager and nixos packages/options to one single configuration file for each new system. -For package lists, please check the individual modules, as the lists can be long. - -- base packages : A list of system packages to be installed by default -- home packages : A list of home packages to be installed by default -- media packages : A list of media packages to be installed by default -- coding packages : A list of coding packages to be installed by default -- acpid : Enables the acpid daemon -- bluetooth : Configures/enables bluetooth and installs tools for bluetooth -- drives : A drive configuration module -- flatpak : Installs and enables declarative flatpak -- gnome_services : Gnome services for minimal enviroments -> Window managers etc -- gpu : GPU settings (AMD) -- greetd : Enables and configures the greetd/regreet login manager with Hyprland -- kde_connect : Enables KDE connect and opens its ports -- layout : Modules to configure keyboard layout system wide -- piper : Installs and enables piper alongside its daemon -- printing : Enables and configures printing services -- virtualbox : Enables and configures virtualbox -- xone : Installs the xone driver -- starship : Configures the starship prompt -- keepassxc : Configures keepassxc -- gaming : Configures gaming related features (launchers, gamemode) -- stylix : Configures system themes, can also be applied to dashvim if used. -- git : Git key and config module -- 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 -- fish: Enables and configures fish shell -- kitty: Enables and configures kitty terminal -- oxi: My own programs, can be selectively disabled, or as a whole -- scripts: Various preconfigured scripts with the ability to add more diff --git a/README.md b/README.md new file mode 120000 index 0000000..95cf2af --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +docs/src/README.md \ No newline at end of file diff --git a/docs/src/README.md b/docs/src/README.md new file mode 100644 index 0000000..5f2681b --- /dev/null +++ b/docs/src/README.md @@ -0,0 +1,181 @@ +``` +██████ █████ ███████ ██ ██ ███ ██ ██ ██ ██ +██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ +██ ██ ███████ ███████ ███████ ██ ██ ██ ██ ███ +██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +██████ ██ ██ ███████ ██ ██ ██ ████ ██ ██ ██ +``` + +A very opinionated (technically only for me) configuration that allows easy adding and removing of systems alongside custom configurations for each system. + +# Usage + +This flake is intended to be used as an input to your own NixOS configuration: + +```nix +dashNix = { + url = "github:DashieTM/DashNix"; + inputs = { + # ensure these are here to update the packages on your own + nixpkgs.follows = "nixpkgs"; + stable.follows = "stable"; + }; +}; +``` + +You can then configure your systems in your flake outputs with a provided library command: + +```nix +nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems [ + "system1" + "system2" + "system3" +] ./.); +``` + +In order for your configuration to work, you are required to at least provide a single config file with a further config file being optional for custom configuration. +The hardware.nix specifies additional NixOS configuration, while home.nix specifies additional home-manager configuration. (both optional) + +|- flake.nix\ +|- flake.lock\ +|- hosts/\ +|--- system1/\ +|------ configuration.nix (required)\ +|------ hardware.nix (optional)\ +|------ home.nix (optional)\ +|--- system2/\ +|------ configuration.nix (required)\ +|------ hardware.nix (optional)\ +|------ home.nix (optional)\ +|--- system3/\ +|------ configuration.nix (required)\ +|------ hardware.nix (optional)\ +|------ home.nix (optional) + +Here is a minimal required configuration.nix (the TODOs mention a required change): + +```nix +{ + # variables for system + # TODO important changes + conf = { + # change this to your monitor and your pc name + # should be something like DP-1 + monitor = "YOURMONITOR"; + # your username + username = "YOURNAME"; + # the name of your system + hostname = "YOURNAME"; + # TODO only needed when you use intel -> amd is default + # cpu = "intel"; + locale = "something.UTF-8"; + timezone = "CONTINENT/CITY"; + }; + # modules + mods = { + # default disk config has root home boot and swap partition, overwrite if you want something different + defaultDrives.enable = false; + extraDrives = [ + { + name = "boot"; + drive = { + device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; + }; + } + { + name = ""; + drive = { + device = "/dev/disk/by-label/ROOT"; + fsType = "ext4"; + options = [ "noatime" "nodiratime" "discard" ]; + }; + } + ]; + sops.enable = false; + nextcloud.enable = false; + hyprland.monitor = [ + # default + # TODO change this to your resolution + "DP-1,1920x1080@144,0x0,1" + # all others + ",highrr,auto,1" + ]; + # or amd, whatever you have + nvidia.enable = true; + kde_connect.enable = true; + # TODO change this to your main resolution + # -> this will be your login manager + greetd = { resolution = "3440x1440@180"; }; + }; +} +``` + +## First Login + +After logging in the first time, your password will be set to "firstlogin", please change this to whatever you like. + +## Modules + +You can add additional modules or remove all of them by overriding parameters to the build_systems command: + +```nix +nixosConfigurations = + let + additionalMods = { + nixos = [ + # your modules + ]; home = [ + # your modules + ]; + } + # passing this parameter will override the existing modules + mods = { + nixos = []; + home = []; + } + in + (inputs.dashNix.dashNixLib.build_systems [ + "system1" + ] ./. mods additionalMods); +``` + +# Modules + +This configuration features several modules that can be used as preconfigured "recipies". +These modules attempt to combine the home-manager and nixos packages/options to one single configuration file for each new system. +For package lists, please check the individual modules, as the lists can be long. + +- base packages : A list of system packages to be installed by default +- home packages : A list of home packages to be installed by default +- media packages : A list of media packages to be installed by default +- coding packages : A list of coding packages to be installed by default +- acpid : Enables the acpid daemon +- bluetooth : Configures/enables bluetooth and installs tools for bluetooth +- drives : A drive configuration module +- flatpak : Installs and enables declarative flatpak +- gnome_services : Gnome services for minimal enviroments -> Window managers etc +- gpu : GPU settings (AMD) +- greetd : Enables and configures the greetd/regreet login manager with Hyprland +- kde_connect : Enables KDE connect and opens its ports +- layout : Modules to configure keyboard layout system wide +- piper : Installs and enables piper alongside its daemon +- printing : Enables and configures printing services +- virtualbox : Enables and configures virtualbox +- xone : Installs the xone driver +- starship : Configures the starship prompt +- keepassxc : Configures keepassxc +- gaming : Configures gaming related features (launchers, gamemode) +- stylix : Configures system themes, can also be applied to dashvim if used. +- git : Git key and config module +- 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 +- fish: Enables and configures fish shell +- kitty: Enables and configures kitty terminal +- oxi: My own programs, can be selectively disabled, or as a whole +- scripts: Various preconfigured scripts with the ability to add more diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md index bb32006..dc12eda 100644 --- a/docs/src/SUMMARY.md +++ b/docs/src/SUMMARY.md @@ -1,2 +1,6 @@ -[Options](dashNix.md) +[README](README.md) + +# Options + +- [Options](dashNix.md) From dfc4b5cf940b2d98c371f24a9ec085e4f4f6c36d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 28 Aug 2024 00:59:01 +0200 Subject: [PATCH 118/330] Solve doc kernel issue --- base/common_hardware.nix | 3 +-- docs/default.nix | 3 ++- docs/src/README.md | 2 +- modules/conf.nix | 25 +++++++++++-------------- modules/programs/gaming.nix | 1 + modules/programs/git.nix | 16 +++++++++++++--- modules/programs/teams.nix | 2 +- result | 2 +- 8 files changed, 31 insertions(+), 23 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 4f3378c..5bbd1e3 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -24,8 +24,7 @@ in plymouth = { enable = true; }; - #kernelPackages = config.conf.kernel; - kernelPackages = pkgs.linuxPackages_latest; + kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; initrd = { verbose = false; availableKernelModules = [ diff --git a/docs/default.nix b/docs/default.nix index bed38b7..fd0b6f5 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -13,7 +13,8 @@ let option // { visible = - option.visible + builtins.elemAt option.loc 0 != "kernel" + && option.visible && (builtins.elemAt option.loc 0 == "conf" || builtins.elemAt option.loc 0 == "mods"); }; }; diff --git a/docs/src/README.md b/docs/src/README.md index 5f2681b..23c3b22 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -116,7 +116,7 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang After logging in the first time, your password will be set to "firstlogin", please change this to whatever you like. -## Modules +## Nixos and Home-manager Modules You can add additional modules or remove all of them by overriding parameters to the build_systems command: diff --git a/modules/conf.nix b/modules/conf.nix index 3ed8442..f1f2b34 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -93,14 +93,15 @@ }; }; - #kernel = lib.mkOption { - # default = pkgs.linuxPackages_latest; - # example = pkgs.linuxPackages_xanmod_latest; - # type = with lib.types; nullOr attrs; - # description = '' - # kernel to be used - # ''; - #}; + kernelOverride = lib.mkOption { + default = null; + type = with lib.types; nullOr package; + description = '' + kernel to be used + Has no examples as doc complains... + #example = pkgs.linuxPackages_xanmod_latest; + ''; + }; hostname = lib.mkOption { default = "nixos"; @@ -202,12 +203,8 @@ }; config = - { - # conf.kernel = lib.mkIf ( - # config.mods.gaming.enable && config.mods.gaming.kernel - # ) pkgs.linuxPackages_xanmod_latest; - } - // (lib.optionalAttrs (options ? system.stateVersion) { + (lib.optionalAttrs (options ? system.stateVersion) { + boot.kernelPackages = lib.mkIf (config.conf.kernelOverride != null) config.conf.kernel; system.stateVersion = config.conf.systemStateVersion; }) // (lib.optionalAttrs (options ? home.stateVersion) { diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 52c7af3..29ea71c 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -60,6 +60,7 @@ config = lib.mkIf config.mods.gaming.enable ( lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = config.mods.gaming.tools; + boot.kernelPackages = lib.mkForce pkgs.linuxPackages_xanmod_latest; programs = { steam.enable = config.mods.gaming.steam; diff --git a/modules/programs/git.nix b/modules/programs/git.nix index 22688f0..e105cb7 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -22,12 +22,22 @@ 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 && 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 && config.sops.secrets ? lab.path) then + "IdentityFile ${config.sops.secrets.lab.path}" + else + "" + } Host dashie.org ${ - if (config ? sops.secrets ? dashie.path) then + if (config ? sops.secrets && config.sops.secrets ? dashie.path) then "IdentityFile ${config.sops.secrets.dashie.path}" else "" diff --git a/modules/programs/teams.nix b/modules/programs/teams.nix index 8555303..15b8748 100644 --- a/modules/programs/teams.nix +++ b/modules/programs/teams.nix @@ -29,7 +29,7 @@ in } // (lib.optionalAttrs (options ? boot.kernelModules) { boot = { - extraModulePackages = [ pkgs.linuxKernel.packages.linux_xanmod_latest.v4l2loopback ]; + extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ]; kernelModules = [ "v4l2loopback" ]; extraModprobeConfig = '' options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" diff --git a/result b/result index c06014d..b09d584 120000 --- a/result +++ b/result @@ -1 +1 @@ -/nix/store/0fpgnkzjnwbjykdvbk4p2h3c7isb9sz9-dashNix-book \ No newline at end of file +/nix/store/cp42vzpzj6jls43xf40m6hp7w07sg1xr-dashNix-book \ No newline at end of file From 4cd9e462d8a02a68ed30f65e8b9916c54b81482c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 28 Aug 2024 22:04:46 +0200 Subject: [PATCH 119/330] Split documentation into each file --- docs/default.nix | 49 +++++++------ docs/src/README.md | 42 +++++------ docs/src/SUMMARY.md | 6 -- docs/src/{dashNix.md => coding.md} | 0 docs/src/conf.md | 1 + docs/src/mods.md | 1 + example/hosts/example/configuration.nix | 60 ++++++++-------- flake.nix | 1 + modules/programs/base_packages.nix | 40 ++++++----- modules/programs/default.nix | 2 +- modules/programs/drives.nix | 90 ++++++++++++------------ modules/programs/gpu.nix | 82 +++++++++++---------- modules/programs/hyprland/hyprland.nix | 10 +-- modules/programs/media.nix | 6 +- modules/programs/{layout.nix => xkb.nix} | 0 result | 2 +- 16 files changed, 205 insertions(+), 187 deletions(-) rename docs/src/{dashNix.md => coding.md} (100%) mode change 100755 => 100644 create mode 100755 docs/src/conf.md create mode 100755 docs/src/mods.md rename modules/programs/{layout.nix => xkb.nix} (100%) diff --git a/docs/default.nix b/docs/default.nix index fd0b6f5..ba2bfdd 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -1,32 +1,41 @@ # with friendly help by stylix: https://github.com/danth/stylix/blob/master/docs/default.nix -{ pkgs, build_systems, ... }: - +{ + pkgs, + build_systems, + lib, + ... +}: let - makeOptionsDoc = - configuration: - pkgs.nixosOptionsDoc { - inherit (configuration) options; - - # Filter out any options not beginning with `stylix` - transformOptions = - option: - option - // { - visible = - builtins.elemAt option.loc 0 != "kernel" - && option.visible - && (builtins.elemAt option.loc 0 == "conf" || builtins.elemAt option.loc 0 == "mods"); - }; - }; - example = makeOptionsDoc (build_systems [ "example" ] ../example/.)."example"; + makeOptionsDoc = configuration: pkgs.nixosOptionsDoc { options = configuration; }; + generateDocs = obj: '' + touch src/${obj.fst}.md + sed '/*Declared by:*/,/^$/d' <${obj.snd.optionsCommonMark} >> src/${obj.fst}.md + ''; + summaryAppend = name: '' + echo "- [${name}](${name}.md)" >> src/SUMMARY.md + ''; + system = (build_systems [ "example" ] ../example/.)."example".options; + makeOptionsDocPrograms = name: pkgs.nixosOptionsDoc { options = system.mods.${name}; }; + conf = makeOptionsDoc system.conf; + paths = builtins.readDir ../modules/programs; + names = lib.lists.remove "default" ( + map (name: lib.strings.removeSuffix ".nix" name) (lib.attrsets.mapAttrsToList (name: _: name) paths) + ); + mods = map makeOptionsDocPrograms names; + docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods)); + summary = lib.strings.concatStringsSep " " (map summaryAppend names); in pkgs.stdenvNoCC.mkDerivation { name = "dashNix-book"; src = ./.; patchPhase = '' - sed '/*Declared by:*/,/^$/d' <${example.optionsCommonMark} >> src/dashNix.md + sed '/*Declared by:*/,/^$/d' <${conf.optionsCommonMark} >> src/conf.md + ${docs} + echo "[README](README.md)\n # Options\n - [Base Config](conf.md)" >> src/SUMMARY.md + ${summary} ''; + buildPhase = '' ${pkgs.mdbook}/bin/mdbook build --dest-dir $out ''; diff --git a/docs/src/README.md b/docs/src/README.md index 23c3b22..813c0c0 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -74,25 +74,27 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang # modules mods = { # default disk config has root home boot and swap partition, overwrite if you want something different - defaultDrives.enable = false; - extraDrives = [ - { - name = "boot"; - drive = { - device = "/dev/disk/by-label/BOOT"; - fsType = "vfat"; - options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; - }; - } - { - name = ""; - drive = { - device = "/dev/disk/by-label/ROOT"; - fsType = "ext4"; - options = [ "noatime" "nodiratime" "discard" ]; - }; - } - ]; + drives = { + defaultDrives.enable = false; + extraDrives = [ + { + name = "boot"; + drive = { + device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; + }; + } + { + name = ""; + drive = { + device = "/dev/disk/by-label/ROOT"; + fsType = "ext4"; + options = [ "noatime" "nodiratime" "discard" ]; + }; + } + ]; + }; sops.enable = false; nextcloud.enable = false; hyprland.monitor = [ @@ -103,7 +105,7 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang ",highrr,auto,1" ]; # or amd, whatever you have - nvidia.enable = true; + gpu.nvidia.enable = true; kde_connect.enable = true; # TODO change this to your main resolution # -> this will be your login manager diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md index dc12eda..e69de29 100644 --- a/docs/src/SUMMARY.md +++ b/docs/src/SUMMARY.md @@ -1,6 +0,0 @@ -[README](README.md) - -# Options - -- [Options](dashNix.md) - diff --git a/docs/src/dashNix.md b/docs/src/coding.md old mode 100755 new mode 100644 similarity index 100% rename from docs/src/dashNix.md rename to docs/src/coding.md diff --git a/docs/src/conf.md b/docs/src/conf.md new file mode 100755 index 0000000..aa51f0b --- /dev/null +++ b/docs/src/conf.md @@ -0,0 +1 @@ +# This file handles the basic configuration for settings like language, timezone, input, cpu etc. diff --git a/docs/src/mods.md b/docs/src/mods.md new file mode 100755 index 0000000..df7fe4f --- /dev/null +++ b/docs/src/mods.md @@ -0,0 +1 @@ +# This file handles configuration of individual modules. diff --git a/example/hosts/example/configuration.nix b/example/hosts/example/configuration.nix index e1ca701..f1db2e5 100644 --- a/example/hosts/example/configuration.nix +++ b/example/hosts/example/configuration.nix @@ -17,34 +17,36 @@ # modules mods = { # default disk config has root home boot and swap partition, overwrite if you want something different - defaultDrives.enable = false; - extraDrives = [ - { - name = "boot"; - drive = { - device = "/dev/disk/by-label/BOOT"; - fsType = "vfat"; - options = [ - "rw" - "fmask=0022" - "dmask=0022" - "noatime" - ]; - }; - } - { - name = ""; - drive = { - device = "/dev/disk/by-label/ROOT"; - fsType = "ext4"; - options = [ - "noatime" - "nodiratime" - "discard" - ]; - }; - } - ]; + drives = { + defaultDrives.enable = false; + extraDrives = [ + { + name = "boot"; + drive = { + device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + options = [ + "rw" + "fmask=0022" + "dmask=0022" + "noatime" + ]; + }; + } + { + name = ""; + drive = { + device = "/dev/disk/by-label/ROOT"; + fsType = "ext4"; + options = [ + "noatime" + "nodiratime" + "discard" + ]; + }; + } + ]; + }; sops.enable = false; nextcloud.enable = false; hyprland.monitor = [ @@ -55,7 +57,7 @@ ",highrr,auto,1" ]; # or amd, whatever you have - nvidia.enable = true; + gpu.nvidia.enable = true; kde_connect.enable = true; # TODO change this to your main resolution # -> this will be your login manager diff --git a/flake.nix b/flake.nix index c87e619..290d194 100644 --- a/flake.nix +++ b/flake.nix @@ -70,6 +70,7 @@ dashNixLib = import ./lib { inherit inputs pkgs; }; docs = import ./docs { inherit inputs pkgs; + lib = inputs.nixpkgs.lib; build_systems = dashNixLib.build_systems; }; dashNixInputs = inputs; diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index f0eb012..690af93 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -8,32 +8,34 @@ }: { options.mods = { - default_base_packages = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables default system packages. - ''; - }; - additional_packages = lib.mkOption { - default = [ ]; - example = [ pkgs.openssl ]; - type = with lib.types; listOf package; - description = '' - Additional packages to install. - Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. - ''; + base_packages = { + default_base_packages = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables default system packages. + ''; + }; + additional_packages = lib.mkOption { + default = [ ]; + example = [ pkgs.openssl ]; + type = with lib.types; listOf package; + description = '' + Additional packages to install. + Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. + ''; + }; }; }; }; config = ( lib.optionalAttrs (options ? environment.systemPackages) { - environment.systemPackages = config.mods.default_base_packages.additional_packages; + environment.systemPackages = config.mods.base_packages.default_base_packages.additional_packages; } - // (lib.mkIf config.mods.default_base_packages.enable ( + // (lib.mkIf config.mods.base_packages.default_base_packages.enable ( lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = with pkgs; [ adwaita-icon-theme diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 6d15d00..9195271 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -18,7 +18,7 @@ ./kde_connect.nix ./keepassxc.nix ./kitty.nix - ./layout.nix + ./xkb.nix ./media.nix ./ncspot.nix ./nextcloud.nix diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix index 66206c4..579ed70 100644 --- a/modules/programs/drives.nix +++ b/modules/programs/drives.nix @@ -36,50 +36,52 @@ let in { options.mods = { - useSwap = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Use default drive config - ''; + drives = { + useSwap = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use default drive config + ''; + }; }; - }; - defaultDrives = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Use default drive config - ''; + defaultDrives = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use default drive config + ''; + }; }; - }; - extraDrives = lib.mkOption { - default = [ + 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. - ''; + ]; + 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. + ''; + }; }; }; @@ -93,9 +95,9 @@ in name = "/" + name; value = drive; } - ) config.mods.extraDrives + ) config.mods.drives.extraDrives ) - // (lib.optionalAttrs config.mods.defaultDrives.enable) { + // (lib.optionalAttrs config.mods.drives.defaultDrives.enable) { "/" = { device = "/dev/disk/by-label/ROOT"; fsType = "btrfs"; @@ -128,7 +130,7 @@ in }; }; # TODO make this convert to choice of drives -> thanks to funny types this doesn't work... - swapDevices = lib.mkIf config.mods.useSwap.enable [ { device = "/dev/disk/by-label/SWAP"; } ]; + swapDevices = lib.mkIf config.mods.drives.useSwap.enable [ { device = "/dev/disk/by-label/SWAP"; } ]; } ); } diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index bfd4964..69592a2 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -8,47 +8,49 @@ { options.mods = { - nvidia.enable = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = '' - Enables nvidia support. - ''; - }; - amdgpu.enable = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = '' - Enables amdgpu support. - ''; - }; - intelgpu.enable = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = '' - Enables intel support. - ''; - }; - vapi = { - enable = lib.mkOption { - default = true; - example = false; + gpu = { + nvidia.enable = lib.mkOption { + default = false; + example = true; type = lib.types.bool; description = '' - Enables vapi. + Enables nvidia support. ''; }; - rocm.enable = lib.mkOption { + amdgpu.enable = lib.mkOption { default = false; - type = lib.types.bool; example = true; + type = lib.types.bool; description = '' - Enables rocm support. + Enables amdgpu support. ''; }; + intelgpu.enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Enables intel support. + ''; + }; + vapi = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables vapi. + ''; + }; + rocm.enable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables rocm support. + ''; + }; + }; }; }; @@ -64,11 +66,13 @@ graphics = let amdPackages = [ - (lib.mkIf (config.mods.intelgpu && lib.mkIf config.mods.vapi.enable) pkgs.vpl-gpu-rt) - (lib.mkIf (config.mods.intelgpu && lib.mkIf config.mods.vapi.enable) pkgs.intel-media-driver) - (lib.mkIf config.mods.vapi.enable pkgs.libvdpau-va-gl) - (lib.mkIf config.mods.vapi.enable pkgs.vaapiVdpau) - (lib.mkIf (config.mods.intelgpu || config.mods.amdgpu) pkgs.mesa.drivers) + (lib.mkIf (config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable) pkgs.vpl-gpu-rt) + (lib.mkIf ( + config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable + ) pkgs.intel-media-driver) + (lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl) + (lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau) + (lib.mkIf (config.mods.gpu.intelgpu || config.mods.gpu.amdgpu) pkgs.mesa.drivers) ]; rocmPackages = [ pkgs.rocmPackages.clr.icd @@ -80,12 +84,12 @@ enable32Bit = lib.mkDefault true; extraPackages = amdPackages - ++ (lib.lists.optionals (config.mods.vapi.rocm.enable && config.mods.gpu.amdgpu) rocmPackages); + ++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu) rocmPackages); }; }; }) // lib.optionalAttrs (options ? hardware.graphics) ( - lib.mkIf config.mods.nvidia.enable { + lib.mkIf config.mods.gpu.nvidia.enable { hardware.nvidia = { modesetting.enable = true; # powerManagement.enable = false; diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index d85b771..09d822b 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -254,7 +254,7 @@ cursor = { # conversion seems to be borked right now, i want a smooth bibata :( enable_hyprcursor = false; - no_hardware_cursors = lib.mkIf config.mods.nvidia.enable true; + no_hardware_cursors = lib.mkIf config.mods.gpu.nvidia.enable true; # no_break_fs_vrr = true; }; @@ -285,10 +285,10 @@ (lib.mkIf config.mods.hyprland.no_atomic "WLR_DRM_NO_ATOMIC,1") "GTK_USE_PORTAL, 1" - (lib.mkIf config.mods.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") - (lib.mkIf config.mods.nvidia.enable "XDG_SESSION_TYPE,wayland") - (lib.mkIf config.mods.nvidia.enable "GBM_BACKEND,nvidia-drm") - (lib.mkIf config.mods.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") + (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") + (lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland") + (lib.mkIf config.mods.gpu.nvidia.enable "GBM_BACKEND,nvidia-drm") + (lib.mkIf config.mods.gpu.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") ]; layerrule = [ diff --git a/modules/programs/media.nix b/modules/programs/media.nix index 6fcbf4f..fcb5e10 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -6,7 +6,7 @@ ... }: { - options.mods.media_packages = { + options.mods.media = { useBasePackages = lib.mkOption { default = true; example = false; @@ -24,9 +24,9 @@ }; config = ( lib.optionalAttrs (options ? home.packages) { - home.packages = config.mods.media_packages.additionalPackages; + home.packages = config.mods.media.additionalPackages; } - // (lib.mkIf config.mods.media_packages.useBasePackages ( + // (lib.mkIf config.mods.media.useBasePackages ( lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ # base audio diff --git a/modules/programs/layout.nix b/modules/programs/xkb.nix similarity index 100% rename from modules/programs/layout.nix rename to modules/programs/xkb.nix diff --git a/result b/result index b09d584..8a559a9 120000 --- a/result +++ b/result @@ -1 +1 @@ -/nix/store/cp42vzpzj6jls43xf40m6hp7w07sg1xr-dashNix-book \ No newline at end of file +/nix/store/djp5gc4jd0g7p2waxhhcaliakn9irh7l-dashNix-book \ No newline at end of file From 4123f8ccacdb2f76b869bfd930c1de38fafb4af3 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 30 Aug 2024 18:16:42 +0200 Subject: [PATCH 120/330] Add gdm gnome sddm kde --- modules/programs/default.nix | 6 ++- modules/programs/fish.nix | 2 +- modules/programs/gdm.nix | 34 +++++++++++++++++ modules/programs/gnome.nix | 74 ++++++++++++++++++++++++++++++++++++ modules/programs/kde.nix | 24 ++++++++++++ modules/programs/sddm.nix | 44 +++++++++++++++++++++ result | 2 +- 7 files changed, 183 insertions(+), 3 deletions(-) create mode 100644 modules/programs/gdm.nix create mode 100644 modules/programs/gnome.nix create mode 100644 modules/programs/kde.nix create mode 100644 modules/programs/sddm.nix diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 9195271..4a968be 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -9,16 +9,18 @@ ./fish.nix ./flatpak.nix ./gaming.nix + ./gdm.nix ./git.nix + ./gnome.nix ./gnome_services.nix ./gpu.nix ./greetd.nix ./home_packages.nix ./hyprland + ./kde.nix ./kde_connect.nix ./keepassxc.nix ./kitty.nix - ./xkb.nix ./media.nix ./ncspot.nix ./nextcloud.nix @@ -27,11 +29,13 @@ ./podman.nix ./printing.nix ./scripts.nix + ./sddm.nix ./sops.nix ./starship.nix ./stylix.nix ./teams.nix ./virtualbox.nix + ./xkb.nix ./xone.nix ./yazi ]; diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 887b6c7..8c702bd 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -168,7 +168,7 @@ '' + config.mods.fish.additionalConfig else - config.mods.fish.additionalPackages; + config.mods.fish.additionalConfig; }; } ); diff --git a/modules/programs/gdm.nix b/modules/programs/gdm.nix new file mode 100644 index 0000000..2bb3e47 --- /dev/null +++ b/modules/programs/gdm.nix @@ -0,0 +1,34 @@ +{ + lib, + options, + config, + ... +}: +{ + options.mods.gdm = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables the gdm displayManager"; + }; + extraOptions = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = "Extra options to be applied to the gnome config"; + }; + }; + + config = lib.mkIf config.mods.gdm.enable ( + lib.optionalAttrs (options ? services.xserver.displayManager.gdm) ( + { + services.xserver.enable = true; + services.xserver.displayManager.gdm.enable = true; + } + // { + services.xserver.displayManager.gdm = config.mods.gdm.extraOptions; + } + ) + ); +} diff --git a/modules/programs/gnome.nix b/modules/programs/gnome.nix new file mode 100644 index 0000000..a4f0921 --- /dev/null +++ b/modules/programs/gnome.nix @@ -0,0 +1,74 @@ +{ + lib, + options, + config, + pkgs, + ... +}: +{ + options.mods.gnome = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables the Gnome desktop environment"; + }; + useDefaultOptions = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Use default options provided by module. If disabled, will only apply extraOptions."; + }; + extraOptions = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = "Extra options to be applied to the gnome config"; + }; + extraDconf = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = "Extra options to be applied to the dconf config"; + }; + }; + + config = + let + defaultExtensions = with pkgs.gnomeExtensions; [ + blur-my-shell + dash-to-dock + tray-icons-reloaded + ]; + in + lib.mkIf config.mods.gnome.enable ( + lib.optionalAttrs (options ? services.xserver.desktopManager.gnome) ( + { + services.xserver = { + enable = true; + desktopManager.gnome.enable = true; + }; + } + // lib.mkIf config.mods.gnome.useDefaultOptions { environment.systemPackages = defaultExtensions; } + // { + services.xserver.desktopManager.gnome = config.mods.gnome.extraOptions; + } + ) + // lib.optionalAttrs (options ? dconf) ( + lib.mkIf config.mods.gnome.useDefaultOptions { + dconf = { + enable = true; + settings = { + "org/gnome/shell" = { + disable-user-extensions = false; + enabled-extensions = map (extension: extension.extensionUuid) defaultExtensions; + }; + }; + }; + } + // { + dconf = config.mods.gnome.extraDconf; + } + ) + ); +} diff --git a/modules/programs/kde.nix b/modules/programs/kde.nix new file mode 100644 index 0000000..1497094 --- /dev/null +++ b/modules/programs/kde.nix @@ -0,0 +1,24 @@ +{ + lib, + options, + config, + ... +}: +{ + options.mods.kde = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables the KDE desktop environment"; + }; + }; + + config = lib.mkIf config.mods.kde.enable ( + lib.optionalAttrs (options ? services.desktopManager.plasma6) { + # apparently kde integration is bad -> kdeconfig is too much even for nix, can't blame them :) + services.desktopManager.plasma6.enable = true; + } + ); + +} diff --git a/modules/programs/sddm.nix b/modules/programs/sddm.nix new file mode 100644 index 0000000..d358777 --- /dev/null +++ b/modules/programs/sddm.nix @@ -0,0 +1,44 @@ +{ + lib, + options, + config, + ... +}: +{ + options.mods.sddm = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables the sddm displayManager"; + }; + useDefaultOptions = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Use default options provided by module. If disabled, will only apply extraOptions."; + }; + extraOptions = lib.mkOption { + default = { }; + example = { + wayland.enable = false; + }; + type = with lib.types; attrsOf anything; + description = "Extra options to be applied to the sddm config"; + }; + }; + + config = lib.mkIf config.mods.sddm.enable ( + lib.optionalAttrs (options ? services.displayManager.sddm) ( + { + services.displayManager.sddm.enable = true; + } + // lib.mkIf config.mods.sddm.useDefaultOptions { + services.displayManager.sddm.wayland.enable = true; + } + // { + services.displayManager.sddm = config.mods.sddm.extraOptions; + } + ) + ); +} diff --git a/result b/result index 8a559a9..35e10bf 120000 --- a/result +++ b/result @@ -1 +1 @@ -/nix/store/djp5gc4jd0g7p2waxhhcaliakn9irh7l-dashNix-book \ No newline at end of file +/nix/store/3y1kplrb4rnks5hpb3n9c0r3x5x3lw54-dashNix-book \ No newline at end of file From 34d6f22b61dcbaf23d6d74c5e8256ab0f202d51d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 31 Aug 2024 14:29:16 +0200 Subject: [PATCH 121/330] Add iso --- .github/workflows/release.yaml | 30 ++++++++ base/common_hardware.nix | 3 +- docs/default.nix | 2 +- docs/src/README.md | 15 ++-- example/flake.nix | 2 +- example/hosts/example/configuration.nix | 5 +- example/{hosts => }/secrets/secrets.md | 0 example/{hosts => }/secrets/secrets.yaml | 0 flake.nix | 8 ++- iso/configuration.nix | 50 ++++++++++++++ lib/default.nix | 88 +++++++++++++++--------- modules/conf.nix | 9 --- result | 2 +- 13 files changed, 153 insertions(+), 61 deletions(-) create mode 100644 .github/workflows/release.yaml rename example/{hosts => }/secrets/secrets.md (100%) rename example/{hosts => }/secrets/secrets.yaml (100%) create mode 100644 iso/configuration.nix diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..ecee195 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,30 @@ +# by https://github.com/danth/stylix/blob/master/.github/workflows/docs.yml +name: Release +on: + release: + types: [created] +jobs: + build: + name: Release + permissions: + contents: read + runs-on: ubuntu-latest + steps: + - name: Install Nix + uses: DeterminateSystems/nix-installer-action@main + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + extra-conf: | + extra-experimental-features = nix-command flakes + - name: Set up cache + uses: DeterminateSystems/magic-nix-cache-action@main + - name: Build ISO + run: nix build github:${{ github.repository }}/${{ github.sha }}#iso + - name: Prepare ISO for upload + run: | + cp -r --dereference --no-preserve=mode,ownership result/ public/ + - name: upload ISO + uses: softprops/action-gh-release@v1 + with: + path: path/ + diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 5bbd1e3..7d7282c 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -2,6 +2,7 @@ pkgs, config, lib, + hostName, modulesPath, ... }: @@ -47,7 +48,7 @@ in networking = { useDHCP = lib.mkDefault true; networkmanager.enable = true; - hostName = config.conf.hostname; + hostName = hostName; }; # Set your time zone. diff --git a/docs/default.nix b/docs/default.nix index ba2bfdd..a5a5f8d 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -14,7 +14,7 @@ let summaryAppend = name: '' echo "- [${name}](${name}.md)" >> src/SUMMARY.md ''; - system = (build_systems [ "example" ] ../example/.)."example".options; + system = (build_systems ../example/.)."example".options; makeOptionsDocPrograms = name: pkgs.nixosOptionsDoc { options = system.mods.${name}; }; conf = makeOptionsDoc system.conf; paths = builtins.readDir ../modules/programs; diff --git a/docs/src/README.md b/docs/src/README.md index 813c0c0..2caf918 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -26,13 +26,12 @@ dashNix = { You can then configure your systems in your flake outputs with a provided library command: ```nix -nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems [ - "system1" - "system2" - "system3" -] ./.); +nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems ./.); ``` +The paremeter specifies where your hosts directory will be placed, in said directory you can then create a directory for each system. +Note, the name of the systems directory is also its hostname. + In order for your configuration to work, you are required to at least provide a single config file with a further config file being optional for custom configuration. The hardware.nix specifies additional NixOS configuration, while home.nix specifies additional home-manager configuration. (both optional) @@ -55,7 +54,7 @@ The hardware.nix specifies additional NixOS configuration, while home.nix specif Here is a minimal required configuration.nix (the TODOs mention a required change): ```nix -{ +{config, ...}: { # variables for system # TODO important changes conf = { @@ -64,8 +63,6 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang monitor = "YOURMONITOR"; # your username username = "YOURNAME"; - # the name of your system - hostname = "YOURNAME"; # TODO only needed when you use intel -> amd is default # cpu = "intel"; locale = "something.UTF-8"; @@ -100,7 +97,7 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang hyprland.monitor = [ # default # TODO change this to your resolution - "DP-1,1920x1080@144,0x0,1" + "${config.conf.monitor},1920x1080@144,0x0,1" # all others ",highrr,auto,1" ]; diff --git a/example/flake.nix b/example/flake.nix index 6f42a57..4ae9e17 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -24,7 +24,7 @@ outputs = { ... }@inputs: { - nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems [ "example" ] ./.); + nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems ./.); }; nixConfig = { diff --git a/example/hosts/example/configuration.nix b/example/hosts/example/configuration.nix index f1db2e5..392656e 100644 --- a/example/hosts/example/configuration.nix +++ b/example/hosts/example/configuration.nix @@ -1,3 +1,4 @@ +{ config, ... }: { # variables for system # TODO important changes @@ -7,8 +8,6 @@ monitor = "YOURMONITOR"; # your username username = "YOURNAME"; - # the name of your system - hostname = "YOURNAME"; # TODO only needed when you use intel -> amd is default # cpu = "intel"; locale = "something.UTF-8"; @@ -52,7 +51,7 @@ hyprland.monitor = [ # default # TODO change this to your resolution - "DP-1,1920x1080@144,0x0,1" + "${config.conf.monitor},1920x1080@144,0x0,1" # all others ",highrr,auto,1" ]; diff --git a/example/hosts/secrets/secrets.md b/example/secrets/secrets.md similarity index 100% rename from example/hosts/secrets/secrets.md rename to example/secrets/secrets.md diff --git a/example/hosts/secrets/secrets.yaml b/example/secrets/secrets.yaml similarity index 100% rename from example/hosts/secrets/secrets.yaml rename to example/secrets/secrets.yaml diff --git a/flake.nix b/flake.nix index 290d194..52680f9 100644 --- a/flake.nix +++ b/flake.nix @@ -49,7 +49,7 @@ }; outputs = - { ... }@inputs: + { self, ... }@inputs: let stable = import inputs.stable { system = "x86_64-linux"; @@ -67,7 +67,10 @@ }; in rec { - dashNixLib = import ./lib { inherit inputs pkgs; }; + dashNixLib = import ./lib { + inherit self inputs pkgs; + lib = inputs.nixpkgs.lib; + }; docs = import ./docs { inherit inputs pkgs; lib = inputs.nixpkgs.lib; @@ -77,6 +80,7 @@ stablePkgs = stable; unstablePkgs = pkgs; modules = ./modules; + iso = dashNixLib.buildIso.config.system.build.isoImage; }; nixConfig = { diff --git a/iso/configuration.nix b/iso/configuration.nix new file mode 100644 index 0000000..7461131 --- /dev/null +++ b/iso/configuration.nix @@ -0,0 +1,50 @@ +{ + pkgs, + lib, + modulesPath, + self, + ... +}: +{ + + imports = [ "${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix" ]; + nixpkgs.hostPlatform = { + system = "x86_64-linux"; + }; + + environment.systemPackages = with pkgs; [ + neovim + disko + git + vesktop + vscodium + firefox + kitty + ]; + networking = { + wireless.enable = false; + networkmanager.enable = true; + }; + + services.greetd = { + enable = true; + settings = { + initial_session = { + command = "${pkgs.hyprland}/bin/Hyprland"; + user = "nixos"; + }; + }; + }; + + isoImage = { + isoName = lib.mkForce "DashNix.iso"; + makeEfiBootable = true; + makeUsbBootable = true; + contents = [ + { + source = "${self}/example"; + target = "example-config"; + } + ]; + }; +} diff --git a/lib/default.nix b/lib/default.nix index c50257b..f16ceb3 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,6 +1,8 @@ { inputs, pkgs, + self, + lib, additionalMods ? { nixos = [ ]; home = [ ]; @@ -42,12 +44,6 @@ The second parameter is the root of your configuration, which should be ./. in most cases. - # Inputs - - `systems` - - : a list of strings with hostnames - `root` : the root path of your configuration @@ -60,36 +56,60 @@ ``` ::: */ + # let + # paths = builtins.readDir ; + # names = lib.lists.remove "default" ( + # map (name: lib.strings.removeSuffix ".nix" name) (lib.attrsets.mapAttrsToList (name: _: name) paths) + # ); + + # in build_systems = - systems: root: + root: builtins.listToAttrs ( - map (name: { - name = name; - value = - let - mod = root + /hosts/${name}/configuration.nix; - additionalNixosConfig = root + /hosts/${name}/hardware.nix; - additionalHomeConfig = root + /hosts/${name}/home.nix; - in - inputs.nixpkgs.lib.nixosSystem { - specialArgs = { - inherit - inputs - pkgs - mod - additionalHomeConfig - root - ; - homeMods = mods.home; - additionalHomeMods = additionalMods.home; + map + (name: { + name = name; + value = + let + mod = root + /hosts/${name}/configuration.nix; + additionalNixosConfig = root + /hosts/${name}/hardware.nix; + additionalHomeConfig = root + /hosts/${name}/home.nix; + in + inputs.nixpkgs.lib.nixosSystem { + specialArgs = { + inherit + self + inputs + pkgs + mod + additionalHomeConfig + root + ; + hostName = name; + homeMods = mods.home; + additionalHomeMods = additionalMods.home; + }; + modules = + [ mod ] + ++ mods.nixos + ++ additionalMods.nixos + ++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig + ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; }; - modules = - [ mod ] - ++ mods.nixos - ++ additionalMods.nixos - ++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig - ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; - }; - }) systems + }) + ( + lib.lists.remove "" ( + lib.attrsets.mapAttrsToList (name: fType: if fType == "directory" then name else "") ( + builtins.readDir (root + /hosts) + ) + ) + ) ); + + buildIso = inputs.nixpkgs.lib.nixosSystem { + specialArgs = { + inherit self inputs pkgs; + }; + modules = [ ../iso/configuration.nix ]; + }; } diff --git a/modules/conf.nix b/modules/conf.nix index f1f2b34..dcaa1e7 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -103,15 +103,6 @@ ''; }; - hostname = lib.mkOption { - default = "nixos"; - example = "spaceship"; - type = lib.types.str; - description = '' - The name of the system - ''; - }; - username = lib.mkOption { default = "dashie"; example = "pingpang"; diff --git a/result b/result index 35e10bf..f3888e2 120000 --- a/result +++ b/result @@ -1 +1 @@ -/nix/store/3y1kplrb4rnks5hpb3n9c0r3x5x3lw54-dashNix-book \ No newline at end of file +/nix/store/9snhsj18w6vyi4f25sq93az859yigcdp-DashNix.iso \ No newline at end of file From 74e9eb2c62e0f7ac029c20371a35ccbb8e84276f Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 1 Sep 2024 01:34:02 +0200 Subject: [PATCH 122/330] Configure neovide --- iso/configuration.nix | 24 +++++++++++++++++------ modules/programs/base_packages.nix | 6 ++---- modules/programs/coding.nix | 31 +++++++++++++++++++++++++++--- result | 2 +- 4 files changed, 49 insertions(+), 14 deletions(-) diff --git a/iso/configuration.nix b/iso/configuration.nix index 7461131..e002625 100644 --- a/iso/configuration.nix +++ b/iso/configuration.nix @@ -20,19 +20,31 @@ vscodium firefox kitty + gnome-disk-utility ]; networking = { wireless.enable = false; networkmanager.enable = true; }; + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; - services.greetd = { - enable = true; - settings = { - initial_session = { - command = "${pkgs.hyprland}/bin/Hyprland"; - user = "nixos"; + # gnome is a good default that works with every gpu and doesn't require knowledge about custom keybinds. + services = { + xserver = { + enable = true; + displayManager = { + gdm.enable = true; }; + desktopManager = { + gnome.enable = true; + }; + }; + displayManager.autoLogin = { + enable = true; + user = "nixos"; }; }; diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index 690af93..c0bd40f 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -9,7 +9,6 @@ { options.mods = { base_packages = { - default_base_packages = { enable = lib.mkOption { default = true; example = false; @@ -26,16 +25,15 @@ Additional packages to install. Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. ''; - }; }; }; }; config = ( lib.optionalAttrs (options ? environment.systemPackages) { - environment.systemPackages = config.mods.base_packages.default_base_packages.additional_packages; + environment.systemPackages = config.mods.base_packages.additional_packages; } - // (lib.mkIf config.mods.base_packages.default_base_packages.enable ( + // (lib.mkIf config.mods.base_packages.enable ( lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = with pkgs; [ adwaita-icon-theme diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index fb5dff7..b1a6ca4 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -394,11 +394,10 @@ d-spy tmux tmate - #editors - neovide #fallback vscodium ]; + font_family = "${config.mods.stylix.fonts.monospace.name}"; in lib.mkIf config.mods.coding.enable ( lib.optionalAttrs (options ? home.packages) { @@ -406,9 +405,35 @@ enable = true; colorscheme = config.mods.stylix.colorscheme; }; + xdg.configFile."neovide/config.toml".source = lib.mkIf config.mods.coding.dashvim ( + (pkgs.formats.toml { }).generate "neovide" { + font = { + size = 12; + normal = { + family = font_family; + style = ""; + }; + bold = { + family = font_family; + style = "ExtraBold"; + }; + italic = { + family = font_family; + style = "Italic"; + }; + bold_italic = { + family = font_family; + style = "Bold Italic"; + }; + }; + } + ); home.packages = with pkgs; - [ (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) ] + [ + (lib.mkIf config.mods.coding.dashvim neovide) + (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) + ] ++ config.mods.coding.additionalPackages ++ (lib.lists.optionals config.mods.coding.useDefaultPackages basePackages) ++ (lib.lists.optionals config.mods.coding.languages.haskell.enable config.mods.coding.languages.haskell.packages) diff --git a/result b/result index f3888e2..921200f 120000 --- a/result +++ b/result @@ -1 +1 @@ -/nix/store/9snhsj18w6vyi4f25sq93az859yigcdp-DashNix.iso \ No newline at end of file +/nix/store/kh29b973hk8qhkkmnswr7cld66kyyjk6-DashNix.iso \ No newline at end of file From 9fecf0ec9659906079027bb56bd3e1f69aa3421a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 1 Sep 2024 02:18:09 +0200 Subject: [PATCH 123/330] Update documentation for ISO --- docs/src/README.md | 8 ++++++++ result | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/src/README.md b/docs/src/README.md index 2caf918..fd143cb 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -140,6 +140,14 @@ nixosConfigurations = ] ./. mods additionalMods); ``` +# Installation + +You can find a custom ISO on my NextCloud server: [Link](https://cloud.dashie.org/s/z7G3zS9SXeEt2ER). +With this, you will receive the example config in /iso/example alongside the gnome desktop environment, +as well as a few tools like gnome-disks, neovim, vscodium, a browser etc. + +Alternatively, you can use whatever NixOS installer and just install your config from there, just make sure to set the drive configuration before. + # Modules This configuration features several modules that can be used as preconfigured "recipies". diff --git a/result b/result index 921200f..7d08024 120000 --- a/result +++ b/result @@ -1 +1 @@ -/nix/store/kh29b973hk8qhkkmnswr7cld66kyyjk6-DashNix.iso \ No newline at end of file +/nix/store/a1irvapj0fhy92nk4yvzz9r03q4yw0lv-DashNix.iso \ No newline at end of file From 015eb32fcfbf62a440966a47265254787da2fcf9 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 1 Sep 2024 10:27:17 +0200 Subject: [PATCH 124/330] Fix neovide config file --- modules/programs/coding.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index b1a6ca4..bf39d7d 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -405,8 +405,8 @@ enable = true; colorscheme = config.mods.stylix.colorscheme; }; - xdg.configFile."neovide/config.toml".source = lib.mkIf config.mods.coding.dashvim ( - (pkgs.formats.toml { }).generate "neovide" { + xdg.configFile."neovide/config.toml" = lib.mkIf config.mods.coding.dashvim { + source = (pkgs.formats.toml { }).generate "neovide" { font = { size = 12; normal = { @@ -426,8 +426,8 @@ style = "Bold Italic"; }; }; - } - ); + }; + }; home.packages = with pkgs; [ From 07a4bd3a965422fba4158edd8ea3c5ce20443322 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 1 Sep 2024 10:33:20 +0200 Subject: [PATCH 125/330] Use optionalAttrs in hyprland.nix --- modules/programs/hyprland/hyprland.nix | 496 +++++++++++++------------ 1 file changed, 249 insertions(+), 247 deletions(-) diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 09d822b..bcea16d 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -84,270 +84,272 @@ hyprpicker ]; - wayland.windowManager.hyprland.enable = true; - wayland.windowManager.hyprland.settings = - lib.mkIf config.mods.hyprland.use_default_config { - "$mod" = "SUPER"; + wayland.windowManager.hyprland = { + enable = true; + settings = + lib.optionalAttrs config.mods.hyprland.use_default_config { + "$mod" = "SUPER"; - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" - ]; - - bind = [ - # screenshots - ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' - ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' - ''$mod SUPERSHIFTALT,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 - (lib.mkIf config.mods.scripts.audio-control ",XF86AudioMute,exec, audio-control mute") - (lib.mkIf config.mods.scripts.audio-control ",XF86AudioLowerVolume,exec, audio-control sink -5%") - (lib.mkIf config.mods.scripts.audio-control ",XF86AudioRaiseVolume,exec, audio-control sink +5%") - ",XF86AudioPlay,exec, playerctl play-pause" - ",XF86AudioNext,exec, playerctl next" - ",XF86AudioPrev,exec, playerctl previous" - (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-") - (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessUp,exec, 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 = lib.mkIf config.mods.hyprland.no_atomic 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" + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" ]; - }; - dwindle = { - preserve_split = true; - pseudotile = 0; - permanent_direction_override = false; - }; + bind = [ + # screenshots + ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' + ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' + ''$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy'' - 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; + # 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 + (lib.mkIf config.mods.scripts.audio-control ",XF86AudioMute,exec, audio-control mute") + (lib.mkIf config.mods.scripts.audio-control ",XF86AudioLowerVolume,exec, audio-control sink -5%") + (lib.mkIf config.mods.scripts.audio-control ",XF86AudioRaiseVolume,exec, audio-control sink +5%") + ",XF86AudioPlay,exec, playerctl play-pause" + ",XF86AudioNext,exec, playerctl next" + ",XF86AudioPrev,exec, playerctl previous" + (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-") + (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessUp,exec, 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 = lib.mkIf config.mods.hyprland.no_atomic true; }; - }; - misc = { - animate_manual_resizes = 1; - enable_swallow = true; - disable_splash_rendering = true; - disable_hyprland_logo = true; - swallow_regex = "^(.*)(kitty)(.*)$"; - initial_workspace_tracking = 1; - }; + decoration = { + rounding = 4; + }; - cursor = { - # conversion seems to be borked right now, i want a smooth bibata :( - enable_hyprcursor = false; - no_hardware_cursors = lib.mkIf config.mods.gpu.nvidia.enable true; - # no_break_fs_vrr = true; - }; + 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" + ]; + }; - gestures = { - workspace_swipe = true; - }; + dwindle = { + preserve_split = true; + pseudotile = 0; + permanent_direction_override = false; + }; - monitor = config.mods.hyprland.monitor; - workspace = config.mods.hyprland.workspace; + 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; + }; + }; - env = [ - "GTK_CSD,0" - ''TERM,"kitty /bin/fish"'' - "XDG_CURRENT_DESKTOP=Hyprland" - "XDG_SESSION_TYPE=wayland" - "XDG_SESSION_DESKTOP=Hyprland" - "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" - "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" - "XCURSOR_THEME,${config.mods.stylix.cursor.name}" - "XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" - "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"'' - (lib.mkIf config.mods.hyprland.no_atomic "WLR_DRM_NO_ATOMIC,1") - "GTK_USE_PORTAL, 1" + misc = { + animate_manual_resizes = 1; + enable_swallow = true; + disable_splash_rendering = true; + disable_hyprland_logo = true; + swallow_regex = "^(.*)(kitty)(.*)$"; + initial_workspace_tracking = 1; + }; - (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") - (lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland") - (lib.mkIf config.mods.gpu.nvidia.enable "GBM_BACKEND,nvidia-drm") - (lib.mkIf config.mods.gpu.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") - ]; + cursor = { + # conversion seems to be borked right now, i want a smooth bibata :( + enable_hyprcursor = false; + no_hardware_cursors = lib.mkIf config.mods.gpu.nvidia.enable 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,${config.mods.stylix.cursor.name}" + "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" + "XCURSOR_THEME,${config.mods.stylix.cursor.name}" + "XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" + "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"'' + (lib.mkIf config.mods.hyprland.no_atomic "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" + (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") + (lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland") + (lib.mkIf config.mods.gpu.nvidia.enable "GBM_BACKEND,nvidia-drm") + (lib.mkIf config.mods.gpu.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") + ]; - # 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; + layerrule = [ + # layer rules + # mainly to disable animations within slurp and grim + "noanim, selection" + ]; - # plugin = { - # hyprspace = { - # bind = [ - # "SUPER, W, overview:toggle, toggle" - # ]; - # }; - # }; - } - // config.mods.hyprland.custom_config; - # wayland.windowManager.hyprland.plugins = [ - # inputs.Hyprspace.packages.${pkgs.system}.Hyprspace - # ]; + 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 + # ]; + }; } ); } From a5eebb60300d26b6b55ea82640a63af8aa48b628 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 1 Sep 2024 11:03:49 +0200 Subject: [PATCH 126/330] Remove force on active border --- modules/programs/hyprland/hyprland.nix | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index bcea16d..e7634ba 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -65,6 +65,14 @@ Will be merged with default configuration if enabled. ''; }; + plugins = lib.mkOption { + default = [ ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + Plugins to be added to Hyprland. + ''; + }; }; }; @@ -346,9 +354,8 @@ # }; } // config.mods.hyprland.custom_config; - # wayland.windowManager.hyprland.plugins = [ - # inputs.Hyprspace.packages.${pkgs.system}.Hyprspace - # ]; + plugins = config.mods.hyprland.plugins; + #inputs.Hyprspace.packages.${pkgs.system}.Hyprspace }; } ); From 41001a9122bf4ca99f59e303ad60fc1b221588f1 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 1 Sep 2024 11:22:09 +0200 Subject: [PATCH 127/330] Hyprland move active border --- modules/programs/hyprland/hyprland.nix | 487 +++++++++++++------------ 1 file changed, 245 insertions(+), 242 deletions(-) diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index e7634ba..d4fc079 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -95,265 +95,268 @@ wayland.windowManager.hyprland = { enable = true; settings = - lib.optionalAttrs config.mods.hyprland.use_default_config { - "$mod" = "SUPER"; + if config.mods.hyprland.use_default_config then + { + "$mod" = "SUPER"; - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" - ]; - - bind = [ - # screenshots - ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' - ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' - ''$mod SUPERSHIFTALT,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 - (lib.mkIf config.mods.scripts.audio-control ",XF86AudioMute,exec, audio-control mute") - (lib.mkIf config.mods.scripts.audio-control ",XF86AudioLowerVolume,exec, audio-control sink -5%") - (lib.mkIf config.mods.scripts.audio-control ",XF86AudioRaiseVolume,exec, audio-control sink +5%") - ",XF86AudioPlay,exec, playerctl play-pause" - ",XF86AudioNext,exec, playerctl next" - ",XF86AudioPrev,exec, playerctl previous" - (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-") - (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessUp,exec, 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 = lib.mkIf config.mods.hyprland.no_atomic 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" + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" ]; - }; - dwindle = { - preserve_split = true; - pseudotile = 0; - permanent_direction_override = false; - }; + bind = [ + # screenshots + ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' + ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' + ''$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy'' - 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; + # 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 + (lib.mkIf config.mods.scripts.audio-control ",XF86AudioMute,exec, audio-control mute") + (lib.mkIf config.mods.scripts.audio-control ",XF86AudioLowerVolume,exec, audio-control sink -5%") + (lib.mkIf config.mods.scripts.audio-control ",XF86AudioRaiseVolume,exec, audio-control sink +5%") + ",XF86AudioPlay,exec, playerctl play-pause" + ",XF86AudioNext,exec, playerctl next" + ",XF86AudioPrev,exec, playerctl previous" + (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-") + (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessUp,exec, 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.mkOverride 51 "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; + # "col.inactive_border" = "0x66333333"; + allow_tearing = lib.mkIf config.mods.hyprland.no_atomic true; }; - }; - misc = { - animate_manual_resizes = 1; - enable_swallow = true; - disable_splash_rendering = true; - disable_hyprland_logo = true; - swallow_regex = "^(.*)(kitty)(.*)$"; - initial_workspace_tracking = 1; - }; + decoration = { + rounding = 4; + }; - cursor = { - # conversion seems to be borked right now, i want a smooth bibata :( - enable_hyprcursor = false; - no_hardware_cursors = lib.mkIf config.mods.gpu.nvidia.enable true; - # no_break_fs_vrr = true; - }; + 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" + ]; + }; - gestures = { - workspace_swipe = true; - }; + dwindle = { + preserve_split = true; + pseudotile = 0; + permanent_direction_override = false; + }; - monitor = config.mods.hyprland.monitor; - workspace = config.mods.hyprland.workspace; + 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; + }; + }; - env = [ - "GTK_CSD,0" - ''TERM,"kitty /bin/fish"'' - "XDG_CURRENT_DESKTOP=Hyprland" - "XDG_SESSION_TYPE=wayland" - "XDG_SESSION_DESKTOP=Hyprland" - "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" - "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" - "XCURSOR_THEME,${config.mods.stylix.cursor.name}" - "XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" - "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"'' - (lib.mkIf config.mods.hyprland.no_atomic "WLR_DRM_NO_ATOMIC,1") - "GTK_USE_PORTAL, 1" + misc = { + animate_manual_resizes = 1; + enable_swallow = true; + disable_splash_rendering = true; + disable_hyprland_logo = true; + swallow_regex = "^(.*)(kitty)(.*)$"; + initial_workspace_tracking = 1; + }; - (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") - (lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland") - (lib.mkIf config.mods.gpu.nvidia.enable "GBM_BACKEND,nvidia-drm") - (lib.mkIf config.mods.gpu.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") - ]; + cursor = { + # conversion seems to be borked right now, i want a smooth bibata :( + enable_hyprcursor = false; + no_hardware_cursors = lib.mkIf config.mods.gpu.nvidia.enable 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,${config.mods.stylix.cursor.name}" + "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" + "XCURSOR_THEME,${config.mods.stylix.cursor.name}" + "XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" + "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"'' + (lib.mkIf config.mods.hyprland.no_atomic "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" + (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") + (lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland") + (lib.mkIf config.mods.gpu.nvidia.enable "GBM_BACKEND,nvidia-drm") + (lib.mkIf config.mods.gpu.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") + ]; - # 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; + layerrule = [ + # layer rules + # mainly to disable animations within slurp and grim + "noanim, selection" + ]; - # plugin = { - # hyprspace = { - # bind = [ - # "SUPER, W, overview:toggle, toggle" - # ]; - # }; - # }; - } - // config.mods.hyprland.custom_config; + 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 + else + lib.mkForce config.mods.hyprland.custom_config; plugins = config.mods.hyprland.plugins; #inputs.Hyprspace.packages.${pkgs.system}.Hyprspace }; From cbaa111fbde450b045ac158777927b600b34e0e1 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 4 Sep 2024 09:49:32 +0200 Subject: [PATCH 128/330] Add qt5ct to system and greetd --- base/common_hardware.nix | 14 +++++++------- modules/programs/greetd.nix | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 7d7282c..58e630d 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -1,10 +1,9 @@ -{ - pkgs, - config, - lib, - hostName, - modulesPath, - ... +{ pkgs +, config +, lib +, hostName +, modulesPath +, ... }: let username = config.conf.username; @@ -99,6 +98,7 @@ in environment.variables = { XDG_CACHE_HOME = "$HOME/.cache"; DIRENV_LOG_FORMAT = ""; + QT_QPA_PLATFORMTHEME = "qt5ct"; }; # allows user change later on diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 24f328b..b31e4cb 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -1,10 +1,9 @@ -{ - config, - lib, - inputs, - pkgs, - options, - ... +{ config +, lib +, inputs +, pkgs +, options +, ... }: { options.mods = { @@ -118,6 +117,7 @@ env=XCURSOR_THEME,${config.mods.stylix.cursor.name} env=XCURSOR_SIZE,${toString config.mods.stylix.cursor.size} + env=QT_QPA_PLATFORMTHEME,qt5ct exec-once=regreet --style /home/${username}/.config/gtk-3.0/gtk.css; hyprctl dispatch exit ''; From 3d5fd504a92c6d2d0fa136a78a62cb486d26b4eb Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 8 Sep 2024 13:18:28 +0200 Subject: [PATCH 129/330] Add result to gitignore --- .gitignore | 1 + result | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 .gitignore delete mode 120000 result diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1cd791b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +result/ diff --git a/result b/result deleted file mode 120000 index 7d08024..0000000 --- a/result +++ /dev/null @@ -1 +0,0 @@ -/nix/store/a1irvapj0fhy92nk4yvzz9r03q4yw0lv-DashNix.iso \ No newline at end of file From 16732a903cf2ed95a9dacf61a6087a6a0cf17c08 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 8 Sep 2024 13:19:47 +0200 Subject: [PATCH 130/330] Add qt5ct to every variable placement --- home/common.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/common.nix b/home/common.nix index f976a76..82dc607 100644 --- a/home/common.nix +++ b/home/common.nix @@ -24,6 +24,7 @@ in sessionVariables = { GOROOT = "$HOME/.go"; + QT_QPA_PLATFORMTHEME = "qt5ct"; }; keyboard = null; From bac1d0f3f935c741afb599238e50ae2efcd61442 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 8 Sep 2024 13:42:07 +0200 Subject: [PATCH 131/330] Add breeze for qt6 --- home/themes/default.nix | 14 ++++--------- modules/programs/base_packages.nix | 33 +++++++++++++++--------------- 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/home/themes/default.nix b/home/themes/default.nix index 10c4ace..c0d11db 100644 --- a/home/themes/default.nix +++ b/home/themes/default.nix @@ -44,7 +44,7 @@ in color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf custom_palette=true icon_theme=MoreWaita - standard_dialogs=gtk3 + standard_dialogs=xdgdesktopportal style=Breeze [Fonts] @@ -77,10 +77,10 @@ in xdg.configFile."qt6ct/qt6ct.conf" = { text = '' [Appearance] - color_scheme_path=/home/${username}/.config/qt6ct/colors/toykonight.conf + color_scheme_path=/home/${username}/.config/qt6ct/colors/tokyonight.conf custom_palette=true - standard_dialogs=default - style=Adwaita-Dark + standard_dialogs=xdgdesktopportal + style=Breeze [Fonts] fixed="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1" @@ -101,12 +101,6 @@ in 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) - - [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() diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index c0bd40f..4172443 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -9,22 +9,22 @@ { options.mods = { base_packages = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables default system packages. - ''; - }; - additional_packages = lib.mkOption { - default = [ ]; - example = [ pkgs.openssl ]; - type = with lib.types; listOf package; - description = '' - Additional packages to install. - Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. - ''; + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables default system packages. + ''; + }; + additional_packages = lib.mkOption { + default = [ ]; + example = [ pkgs.openssl ]; + type = with lib.types; listOf package; + description = '' + Additional packages to install. + Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. + ''; }; }; }; @@ -50,6 +50,7 @@ hicolor-icon-theme icon-library kdePackages.breeze-icons + kdePackages.breeze libadwaita libxkbcommon nixfmt-rfc-style From a3d3b155071b3c8f48c5b63c208a7c14f87669af Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 8 Sep 2024 13:50:08 +0200 Subject: [PATCH 132/330] Move gnome-settings to top level --- base/common_hardware.nix | 13 +++++++------ modules/conf.nix | 2 +- modules/programs/gnome_services.nix | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 58e630d..101a0a7 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -1,9 +1,10 @@ -{ pkgs -, config -, lib -, hostName -, modulesPath -, ... +{ + pkgs, + config, + lib, + hostName, + modulesPath, + ... }: let username = config.conf.username; diff --git a/modules/conf.nix b/modules/conf.nix index dcaa1e7..7123c9f 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -175,8 +175,8 @@ }; systemStateVersion = lib.mkOption { - default = "unstable"; example = "24.05"; + default = "23.05"; type = lib.types.str; description = '' System state version diff --git a/modules/programs/gnome_services.nix b/modules/programs/gnome_services.nix index cebbad1..3c489cd 100644 --- a/modules/programs/gnome_services.nix +++ b/modules/programs/gnome_services.nix @@ -33,7 +33,7 @@ # needed for GNOME services outside of GNOME Desktop dbus.packages = with pkgs; [ gcr - gnome.gnome-settings-daemon + gnome-settings-daemon ]; gnome.gnome-keyring.enable = true; From 3ac742cc455288cbe884b2fa067927db305541f9 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 8 Sep 2024 14:44:27 +0200 Subject: [PATCH 133/330] Add anyrun config --- modules/programs/hyprland/anyrun.nix | 174 +++++++++++++++++---------- 1 file changed, 110 insertions(+), 64 deletions(-) diff --git a/modules/programs/hyprland/anyrun.nix b/modules/programs/hyprland/anyrun.nix index 33c38f7..8d8ac1b 100644 --- a/modules/programs/hyprland/anyrun.nix +++ b/modules/programs/hyprland/anyrun.nix @@ -8,12 +8,48 @@ }: { options.mods = { - hyprland.anyrun = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = "Enables anyrun"; + hyprland = { + anyrun = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables anyrun"; + }; + use_default_config = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use preconfigured anyrun config. + ''; + }; + custom_config = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + Custom anyrun configuration. + Will be merged with default configuration if enabled. + ''; + }; + use_default_css = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use preconfigured anyrun css. + ''; + }; + custom_css = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + Custom anyrun css. + Will be merged with default css if enabled. + ''; + }; }; }; }; @@ -22,74 +58,84 @@ lib.optionalAttrs (options ? programs.anyrun) { programs.anyrun = { enable = true; - config = { - plugins = [ - inputs.anyrun.packages.${pkgs.system}.applications - inputs.anyrun.packages.${pkgs.system}.rink - inputs.anyrun.packages.${pkgs.system}.translate - inputs.anyrun.packages.${pkgs.system}.websearch - ]; - #position = "center"; - hideIcons = false; - width = { - fraction = 0.3; - }; - y = { - fraction = 0.5; - }; - layer = "overlay"; - hidePluginInfo = true; - closeOnClick = true; - }; + config = + if config.mods.hyprland.anyrun.use_default_config then + { + plugins = [ + inputs.anyrun.packages.${pkgs.system}.applications + inputs.anyrun.packages.${pkgs.system}.rink + inputs.anyrun.packages.${pkgs.system}.translate + inputs.anyrun.packages.${pkgs.system}.websearch + ]; + #position = "center"; + hideIcons = false; + width = { + fraction = 0.3; + }; + y = { + fraction = 0.5; + }; + layer = "overlay"; + hidePluginInfo = true; + closeOnClick = true; + } + // config.mods.hyprland.anyrun.custom_config + else + config.mods.hyprland.anyrun.custom_config; - extraCss = '' - #window { - border-radius: 10px; - background-color: none; - } + extraCss = + if config.mods.hyprland.anyrun.use_default_css then + '' + #window { + border-radius: 10px; + background-color: none; + } - box#main { - border-radius: 10px; - } + box#main { + border-radius: 10px; + } - list#main { - border-radius: 10px; - margin: 0px 10px 10px 10px; - } + list#main { + border-radius: 10px; + margin: 0px 10px 10px 10px; + } - list#plugin { - border-radius: 10px; - } + list#plugin { + border-radius: 10px; + } - list#match { - border-radius: 10px; - } + list#match { + border-radius: 10px; + } - entry#entry { - border: none; - border-radius: 10px; - margin: 10px 10px 0px 10px; - } + entry#entry { + border: none; + border-radius: 10px; + margin: 10px 10px 0px 10px; + } - label#match-desc { - font-size: 12px; - border-radius: 10px; - } + label#match-desc { + font-size: 12px; + border-radius: 10px; + } - label#match-title { - font-size: 12px; - border-radius: 10px; - } + label#match-title { + font-size: 12px; + border-radius: 10px; + } - label#plugin { - font-size: 16px; - border-radius: 10px; - } + label#plugin { + font-size: 16px; + border-radius: 10px; + } - * { - border-radius: 10px; - } - ''; + * { + border-radius: 10px; + } + '' + ++ config.mods.hyprland.anyrun.custom_css + else + config.mods.hyprland.anyrun.custom_css; }; } ); From 2c45bcf6adafa88aa06248fdcf7e4b16083d3877 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 8 Sep 2024 15:20:26 +0200 Subject: [PATCH 134/330] Use defaultMonitor instead of monitor --- docs/src/README.md | 69 ++++++++++--------- example/hosts/example/configuration.nix | 89 +++++++++++++------------ modules/conf.nix | 19 ++++-- modules/programs/greetd.nix | 19 +++--- modules/programs/hyprland/anyrun.nix | 12 ++-- modules/programs/hyprland/hyprland.nix | 7 +- modules/programs/hyprland/hyprlock.nix | 4 +- modules/programs/hyprland/ironbar.nix | 2 +- 8 files changed, 128 insertions(+), 93 deletions(-) diff --git a/docs/src/README.md b/docs/src/README.md index fd143cb..1fc179d 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -60,7 +60,11 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang conf = { # change this to your monitor and your pc name # should be something like DP-1 - monitor = "YOURMONITOR"; + defaultMonitor = "YOURMONITOR"; + # width x height @ refreshrate + defaultMonitorMode = "1920x1080@60"; + # scale for your main monitor + defaultMonitorScale = "1"; # your username username = "YOURNAME"; # TODO only needed when you use intel -> amd is default @@ -72,41 +76,46 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang mods = { # default disk config has root home boot and swap partition, overwrite if you want something different drives = { - defaultDrives.enable = false; - extraDrives = [ - { - name = "boot"; - drive = { - device = "/dev/disk/by-label/BOOT"; - fsType = "vfat"; - options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; - }; - } - { - name = ""; - drive = { - device = "/dev/disk/by-label/ROOT"; - fsType = "ext4"; - options = [ "noatime" "nodiratime" "discard" ]; - }; - } - ]; + # default assumes ROOT, BOOT, HOME and SWAP labaled drives exist + # for an example without HOME see below + # defaultDrives.enable = false; + # extraDrives = [ + # { + # name = "boot"; + # drive = { + # device = "/dev/disk/by-label/BOOT"; + # fsType = "vfat"; + # options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; + # }; + # } + # { + # name = ""; + # drive = { + # device = "/dev/disk/by-label/ROOT"; + # fsType = "ext4"; + # options = [ "noatime" "nodiratime" "discard" ]; + # }; + # } + # ]; }; sops.enable = false; nextcloud.enable = false; - hyprland.monitor = [ - # default - # TODO change this to your resolution - "${config.conf.monitor},1920x1080@144,0x0,1" - # all others - ",highrr,auto,1" - ]; + # default hyprland monitor config -> uncomment when necessary + # TODO: Add more monitors when needed + # hyprland.monitor = [ + # # default + # "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" + # # all others + # ",highrr,auto,1" + # ]; # or amd, whatever you have gpu.nvidia.enable = true; kde_connect.enable = true; - # TODO change this to your main resolution - # -> this will be your login manager - greetd = { resolution = "3440x1440@180"; }; + # login manager: + # default is greetd + # greetd = { }; + # sddm = { }; + # gdm = { }; }; } ``` diff --git a/example/hosts/example/configuration.nix b/example/hosts/example/configuration.nix index 392656e..95ace40 100644 --- a/example/hosts/example/configuration.nix +++ b/example/hosts/example/configuration.nix @@ -5,7 +5,11 @@ conf = { # change this to your monitor and your pc name # should be something like DP-1 - monitor = "YOURMONITOR"; + defaultMonitor = "YOURMONITOR"; + # width x height @ refreshrate + defaultMonitorMode = "1920x1080@60"; + # scale for your main monitor + defaultMonitorScale = "1"; # your username username = "YOURNAME"; # TODO only needed when you use intel -> amd is default @@ -17,51 +21,54 @@ mods = { # default disk config has root home boot and swap partition, overwrite if you want something different drives = { - defaultDrives.enable = false; - extraDrives = [ - { - name = "boot"; - drive = { - device = "/dev/disk/by-label/BOOT"; - fsType = "vfat"; - options = [ - "rw" - "fmask=0022" - "dmask=0022" - "noatime" - ]; - }; - } - { - name = ""; - drive = { - device = "/dev/disk/by-label/ROOT"; - fsType = "ext4"; - options = [ - "noatime" - "nodiratime" - "discard" - ]; - }; - } - ]; + # default assumes ROOT, BOOT, HOME and SWAP labaled drives exist + # for an example without HOME see below + #defaultDrives.enable = false; + #extraDrives = [ + # { + # name = "boot"; + # drive = { + # device = "/dev/disk/by-label/BOOT"; + # fsType = "vfat"; + # options = [ + # "rw" + # "fmask=0022" + # "dmask=0022" + # "noatime" + # ]; + # }; + # } + # { + # name = ""; + # drive = { + # device = "/dev/disk/by-label/ROOT"; + # fsType = "ext4"; + # options = [ + # "noatime" + # "nodiratime" + # "discard" + # ]; + # }; + # } + #]; }; sops.enable = false; nextcloud.enable = false; - hyprland.monitor = [ - # default - # TODO change this to your resolution - "${config.conf.monitor},1920x1080@144,0x0,1" - # all others - ",highrr,auto,1" - ]; + # default hyprland monitor config -> uncomment when necessary + # TODO: Add more monitors when needed + # hyprland.monitor = [ + # # default + # "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" + # # all others + # ",highrr,auto,1" + # ]; # or amd, whatever you have gpu.nvidia.enable = true; kde_connect.enable = true; - # TODO change this to your main resolution - # -> this will be your login manager - greetd = { - resolution = "3440x1440@180"; - }; + # login manager: + # default is greetd + # greetd = { }; + # sddm = { }; + # gdm = { }; }; } diff --git a/modules/conf.nix b/modules/conf.nix index 7123c9f..15d6fda 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -39,7 +39,7 @@ ''; }; - monitor = lib.mkOption { + defaultMonitor = lib.mkOption { default = ""; example = "eDP-1"; type = lib.types.str; @@ -48,12 +48,21 @@ ''; }; - scale = lib.mkOption { - default = "1.0"; - example = "1.0"; + defaultMonitorMode = lib.mkOption { + default = ""; + example = "3440x1440@180"; type = lib.types.str; description = '' - Scale for the monitor + main monitor + ''; + }; + + defaultMonitorScale = lib.mkOption { + default = "1"; + example = "1.5"; + type = lib.types.str; + description = '' + main monitor scaling ''; }; diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index b31e4cb..5a3f598 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -1,9 +1,10 @@ -{ config -, lib -, inputs -, pkgs -, options -, ... +{ + config, + lib, + inputs, + pkgs, + options, + ... }: { options.mods = { @@ -17,7 +18,7 @@ ''; }; monitor = lib.mkOption { - default = "${config.conf.monitor}"; + default = "${config.conf.defaultMonitor}"; example = "eDP-1"; type = lib.types.str; description = '' @@ -26,7 +27,7 @@ ''; }; scale = lib.mkOption { - default = "${config.conf.scale}"; + default = "${config.conf.defaultMonitorScale}"; example = "1.5"; type = lib.types.str; description = '' @@ -35,7 +36,7 @@ ''; }; resolution = lib.mkOption { - default = "auto"; + default = "${config.conf.defaultMonitorMode}"; example = "3440x1440@180"; type = lib.types.str; description = '' diff --git a/modules/programs/hyprland/anyrun.nix b/modules/programs/hyprland/anyrun.nix index 8d8ac1b..5be6ad9 100644 --- a/modules/programs/hyprland/anyrun.nix +++ b/modules/programs/hyprland/anyrun.nix @@ -42,9 +42,13 @@ ''; }; custom_css = lib.mkOption { - default = { }; - example = { }; - type = with lib.types; attrsOf anything; + default = ''''; + example = '' + #window { + border-radius: none; + } + ''; + type = lib.types.lines; description = '' Custom anyrun css. Will be merged with default css if enabled. @@ -133,7 +137,7 @@ border-radius: 10px; } '' - ++ config.mods.hyprland.anyrun.custom_css + + config.mods.hyprland.anyrun.custom_css else config.mods.hyprland.anyrun.custom_css; }; diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index d4fc079..5f35aec 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -17,7 +17,12 @@ ''; }; monitor = lib.mkOption { - default = [ ]; + default = [ + # main monitor + "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" + # all others + ",highrr,auto,1" + ]; example = [ "DP-1,3440x1440@180,2560x0,1,vrr,0" ]; type = with lib.types; listOf str; description = '' diff --git a/modules/programs/hyprland/hyprlock.nix b/modules/programs/hyprland/hyprlock.nix index 091bb9e..5aa5934 100644 --- a/modules/programs/hyprland/hyprlock.nix +++ b/modules/programs/hyprland/hyprlock.nix @@ -33,7 +33,7 @@ input-field = [ { - monitor = "${config.conf.monitor}"; + monitor = "${config.conf.defaultMonitor}"; placeholder_text = "password or something"; } @@ -41,7 +41,7 @@ label = [ { - monitor = "${config.conf.monitor}"; + monitor = "${config.conf.defaultMonitor}"; text = "$TIME"; font_size = 50; position = "0, 200"; diff --git a/modules/programs/hyprland/ironbar.nix b/modules/programs/hyprland/ironbar.nix index dabf38f..578b542 100644 --- a/modules/programs/hyprland/ironbar.nix +++ b/modules/programs/hyprland/ironbar.nix @@ -162,7 +162,7 @@ in #"another_feature" ]; config = { - monitors."${config.conf.monitor}" = { + monitors."${config.conf.defaultMonitor}" = { end = config.conf.ironbar.modules ++ [ { type = "sys_info"; From 1ec22067ff57b44508f15b368ef377cb423fcb88 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 8 Sep 2024 15:27:45 +0200 Subject: [PATCH 135/330] Add inline doc for monitor mode --- modules/conf.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/conf.nix b/modules/conf.nix index 15d6fda..d7d30c0 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -53,7 +53,7 @@ example = "3440x1440@180"; type = lib.types.str; description = '' - main monitor + main monitor mode: width x height @ refreshrate ''; }; From 2e90a3b7a1f738e2e14e42cf5184fe91d327968b Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 8 Sep 2024 15:38:30 +0200 Subject: [PATCH 136/330] Add additional Kernel params --- docs/src/README.md | 2 ++ example/hosts/example/configuration.nix | 2 ++ modules/conf.nix | 16 +++++++++++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/src/README.md b/docs/src/README.md index 1fc179d..67fdca3 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -105,6 +105,8 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang # hyprland.monitor = [ # # default # "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" + # # second example monitor + # "DP-2,3440x1440@180,auto,1" # # all others # ",highrr,auto,1" # ]; diff --git a/example/hosts/example/configuration.nix b/example/hosts/example/configuration.nix index 95ace40..20a5134 100644 --- a/example/hosts/example/configuration.nix +++ b/example/hosts/example/configuration.nix @@ -59,6 +59,8 @@ # hyprland.monitor = [ # # default # "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" + # # second example monitor + # "DP-2,3440x1440@180,auto,1" # # all others # ",highrr,auto,1" # ]; diff --git a/modules/conf.nix b/modules/conf.nix index d7d30c0..8bed977 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -39,6 +39,17 @@ ''; }; + additionalBootKernalParams = lib.mkOption { + default = [ + "video=${config.conf.defaultMonitor}:${config.conf.defaultMonitorMode}" + ]; + example = [ ]; + type = with lib.types; listOf str; + description = '' + additional kernelParams passed to bootloader + ''; + }; + defaultMonitor = lib.mkOption { default = ""; example = "eDP-1"; @@ -204,7 +215,10 @@ config = (lib.optionalAttrs (options ? system.stateVersion) { - boot.kernelPackages = lib.mkIf (config.conf.kernelOverride != null) config.conf.kernel; + boot = { + kernelPackages = lib.mkIf (config.conf.kernelOverride != null) config.conf.kernel; + kernelParams = config.conf.additionalBootKernalParams; + }; system.stateVersion = config.conf.systemStateVersion; }) // (lib.optionalAttrs (options ? home.stateVersion) { From b83ccc7bfe0eaf78f9f4ff1ed8192e475b40b010 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 8 Sep 2024 17:30:48 +0200 Subject: [PATCH 137/330] Refactor additional packages --- modules/programs/base_packages.nix | 58 ++++++++---- modules/programs/home_packages.nix | 136 +++++++++++++++++------------ modules/programs/media.nix | 53 ++++++++--- 3 files changed, 161 insertions(+), 86 deletions(-) diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index 4172443..4ab9ae1 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -26,16 +26,30 @@ Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. ''; }; + special_programs = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + special program configuration to be added which require programs.something notation. + ''; + }; + special_services = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + special services configuration to be added which require an services.something notation. + ''; + }; }; }; - config = ( - lib.optionalAttrs (options ? environment.systemPackages) { - environment.systemPackages = config.mods.base_packages.additional_packages; - } - // (lib.mkIf config.mods.base_packages.enable ( - lib.optionalAttrs (options ? environment.systemPackages) { - environment.systemPackages = with pkgs; [ + config = lib.optionalAttrs (options ? environment.systemPackages) { + environment.systemPackages = + if config.mods.base_packages.enable then + with pkgs; + [ adwaita-icon-theme dbus dconf @@ -58,10 +72,15 @@ seahorse upower xorg.xkbutils - ]; + ] + ++ config.mods.base_packages.additional_packages + else + config.mods.base_packages.additional_packages; - gtk.iconCache.enable = false; - services = { + gtk.iconCache.enable = false; + services = + if config.mods.base_packages.enable then + { upower.enable = true; dbus = { enable = true; @@ -72,9 +91,14 @@ nssmdns4 = true; openFirewall = true; }; - }; + } + // config.mods.base_packages.special_services + else + config.mods.base_packages.special_services; - programs = { + programs = + if config.mods.base_packages.enable then + { nix-ld = { enable = true; libraries = with pkgs; [ @@ -94,8 +118,10 @@ }; ssh.startAgent = true; gnupg.agent.enable = true; - }; - } - )) - ); + } + // config.mods.base_packages.special_programs + else + config.mods.base_packages.special_programs; + }; + } diff --git a/modules/programs/home_packages.nix b/modules/programs/home_packages.nix index 21858fd..1992028 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/home_packages.nix @@ -22,6 +22,22 @@ Will be installed regardless of default home manager packages are installed. ''; }; + special_programs = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + special program configuration to be added which require programs.something notation. + ''; + }; + special_services = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + special services configuration to be added which require an services.something notation. + ''; + }; matrixClient = lib.mkOption { default = pkgs.nheko; example = null; @@ -59,62 +75,68 @@ description = "Additional browser -> second to firefox, the only installed browser if firefox is disabled"; }; }; - config = - (lib.optionalAttrs (options ? home.packages) { - home.packages = config.mods.home_packages.additional_packages; - }) - // lib.mkIf config.mods.home_packages.useDefaultPackages ( - lib.optionalAttrs (options ? home.packages) { - home.packages = - with pkgs; - [ - # TODO add fcp once fixed.... - (lib.mkIf config.mods.home_packages.ncspot ncspot) - (lib.mkIf config.mods.home_packages.vesktop vesktop) - (lib.mkIf config.mods.home_packages.nextcloudClient nextcloud-client) - (lib.mkIf (!isNull config.mods.home_packages.matrixClient) config.mods.home_packages.matrixClient) - (lib.mkIf (!isNull config.mods.home_packages.mailClient) config.mods.home_packages.mailClient) - (lib.mkIf ( - !isNull config.mods.home_packages.additionalBrowser - ) config.mods.home_packages.additionalBrowser) - adw-gtk3 - bat - brightnessctl - dbus - fastfetch - fd - ffmpeg - flake-checker - gnome-keyring - gnutar - greetd.regreet - killall - kitty - libnotify - lsd - networkmanager - nh - nix-index - playerctl - poppler_utils - pulseaudio - qt5ct - qt6ct - ripgrep - rm-improved - system-config-printer - xournalpp - zenith - zoxide - ] - ++ config.mods.home_packages.additional_packages; + config = lib.optionalAttrs (options ? home.packages) { + home.packages = + if config.mods.home_packages.useDefaultPackages then + with pkgs; + [ + # TODO add fcp once fixed.... + (lib.mkIf config.mods.home_packages.ncspot ncspot) + (lib.mkIf config.mods.home_packages.vesktop vesktop) + (lib.mkIf config.mods.home_packages.nextcloudClient nextcloud-client) + (lib.mkIf (!isNull config.mods.home_packages.matrixClient) config.mods.home_packages.matrixClient) + (lib.mkIf (!isNull config.mods.home_packages.mailClient) config.mods.home_packages.mailClient) + (lib.mkIf ( + !isNull config.mods.home_packages.additionalBrowser + ) config.mods.home_packages.additionalBrowser) + adw-gtk3 + bat + brightnessctl + dbus + fastfetch + fd + ffmpeg + flake-checker + gnome-keyring + gnutar + greetd.regreet + killall + kitty + libnotify + lsd + networkmanager + nh + nix-index + playerctl + poppler_utils + pulseaudio + qt5ct + qt6ct + ripgrep + rm-improved + system-config-printer + xournalpp + zenith + zoxide + ] + ++ config.mods.home_packages.additional_packages + else + config.mods.home_packages.additional_packages; - 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"; + }; + }; + programs = + if config.mods.home_packages.useDefaultPackages then + config.mods.home_packages.special_programs + else + config.mods.home_packages.special_programs; + services = + if config.mods.home_packages.useDefaultPackages then + config.mods.home_packages.special_services + else + config.mods.home_packages.special_services; + }; } diff --git a/modules/programs/media.nix b/modules/programs/media.nix index fcb5e10..deb895f 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -21,14 +21,28 @@ Additional media packages. ''; }; + special_programs = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + special program configuration to be added which require programs.something notation. + ''; + }; + special_services = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + special services configuration to be added which require an services.something notation. + ''; + }; }; - config = ( - lib.optionalAttrs (options ? home.packages) { - home.packages = config.mods.media.additionalPackages; - } - // (lib.mkIf config.mods.media.useBasePackages ( - lib.optionalAttrs (options ? home.packages) { - home.packages = with pkgs; [ + config = lib.optionalAttrs (options ? home.packages) { + home.packages = + if config.mods.media.useBasePackages then + with pkgs; + [ # base audio pipewire wireplumber @@ -54,10 +68,23 @@ gimp krita yt-dlp - ]; - programs.obs-studio.enable = true; - programs.obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ]; - } - )) - ); + ] + ++ config.mods.media.additionalPackages + else + config.mods.media.additionalPackages; + programs = + if config.mods.media.useBasePackages then + { + obs-studio.enable = true; + obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ]; + } + // config.mods.media.special_programs + else + config.mods.media.special_programs; + services = + if config.mods.media.useBasePackages then + config.mods.media.special_services + else + config.mods.media.special_services; + }; } From b994e4698c2116ac768ebdc2c01079a443f83e09 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 8 Sep 2024 18:48:22 +0200 Subject: [PATCH 138/330] Adjust hyprpaper documentation --- modules/conf.nix | 2 +- modules/programs/fish.nix | 1 + modules/programs/hyprland/hyprpaper.nix | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/conf.nix b/modules/conf.nix index 8bed977..cb92f2b 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -177,7 +177,7 @@ }; nix_path = lib.mkOption { - default = "/home${config.conf.username}/gits/nixos"; + default = "/home/${config.conf.username}/gits/nixos"; example = "yourpath"; type = lib.types.str; description = '' diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 8c702bd..4c9c8e1 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -46,6 +46,7 @@ set EDITOR "neovide --no-fork" alias rebuild='sudo nixos-rebuild switch --flake ${config.conf.nixos-config-path}' + alias update='sudo nixos-rebuild switch --flake ${config.conf.nixos-config-path}' abbr --add ls 'lsd' abbr --add :q 'exit' abbr --add gh 'git push origin' diff --git a/modules/programs/hyprland/hyprpaper.nix b/modules/programs/hyprland/hyprpaper.nix index d6eff04..a16e975 100644 --- a/modules/programs/hyprland/hyprpaper.nix +++ b/modules/programs/hyprland/hyprpaper.nix @@ -17,7 +17,8 @@ config = lib.mkOption { default = ""; example = '' - Hyprpaper config + preload = path/to/wallpaper + wallpaper = YOURMONITOR,path/to/wallpaper ''; type = lib.types.lines; description = '' From 9535108bb7dcb72f96a2feec6d22b69179484e3d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 8 Sep 2024 19:09:35 +0200 Subject: [PATCH 139/330] Simplify build systems --- .gitignore | 3 +- docs/default.nix | 25 ++++--- docs/src/README.md | 8 ++- example/flake.nix | 11 ++-- flake.nix | 17 ++--- lib/default.nix | 161 ++++++++++++++++++--------------------------- 6 files changed, 94 insertions(+), 131 deletions(-) diff --git a/.gitignore b/.gitignore index 1cd791b..a931378 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -result/ +result/* +result diff --git a/docs/default.nix b/docs/default.nix index a5a5f8d..34635bd 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -1,12 +1,8 @@ # with friendly help by stylix: https://github.com/danth/stylix/blob/master/docs/default.nix -{ - pkgs, - build_systems, - lib, - ... -}: +{ pkgs, build_systems, lib, ... }: let - makeOptionsDoc = configuration: pkgs.nixosOptionsDoc { options = configuration; }; + makeOptionsDoc = configuration: + pkgs.nixosOptionsDoc { options = configuration; }; generateDocs = obj: '' touch src/${obj.fst}.md sed '/*Declared by:*/,/^$/d' <${obj.snd.optionsCommonMark} >> src/${obj.fst}.md @@ -15,17 +11,18 @@ let echo "- [${name}](${name}.md)" >> src/SUMMARY.md ''; system = (build_systems ../example/.)."example".options; - makeOptionsDocPrograms = name: pkgs.nixosOptionsDoc { options = system.mods.${name}; }; + makeOptionsDocPrograms = name: + pkgs.nixosOptionsDoc { options = system.mods.${name}; }; conf = makeOptionsDoc system.conf; paths = builtins.readDir ../modules/programs; - names = lib.lists.remove "default" ( - map (name: lib.strings.removeSuffix ".nix" name) (lib.attrsets.mapAttrsToList (name: _: name) paths) - ); + names = lib.lists.remove "default" + (map (name: lib.strings.removeSuffix ".nix" name) + (lib.attrsets.mapAttrsToList (name: _: name) paths)); mods = map makeOptionsDocPrograms names; - docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods)); + docs = + lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods)); summary = lib.strings.concatStringsSep " " (map summaryAppend names); -in -pkgs.stdenvNoCC.mkDerivation { +in pkgs.stdenvNoCC.mkDerivation { name = "dashNix-book"; src = ./.; diff --git a/docs/src/README.md b/docs/src/README.md index 67fdca3..2e5d444 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -26,11 +26,13 @@ dashNix = { You can then configure your systems in your flake outputs with a provided library command: ```nix -nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems ./.); +nixosConfigurations = inputs.dashNix.dashNixLib.build_systems ./.; ``` -The paremeter specifies where your hosts directory will be placed, in said directory you can then create a directory for each system. -Note, the name of the systems directory is also its hostname. +This command will build each system that is placed within the hosts/ directory. +In this directory create one directory for each system you want to configure with DashNix. +This will automatically pick up the hostname for the system and look for 3 different files that are explained below. +(Optionally, you can also change the parameter root (./.) to define a different starting directory than hosts/) In order for your configuration to work, you are required to at least provide a single config file with a further config file being optional for custom configuration. The hardware.nix specifies additional NixOS configuration, while home.nix specifies additional home-manager configuration. (both optional) diff --git a/example/flake.nix b/example/flake.nix index 4ae9e17..1c4fa7d 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -4,7 +4,8 @@ inputs = { dashvim.url = "github:DashieTM/DashVim"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; - ironbar.url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; + ironbar.url = + "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; anyrun.url = "github:Kirottu/anyrun"; nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; stable.url = "github:NixOs/nixpkgs/nixos-24.05"; @@ -21,11 +22,9 @@ }; }; - outputs = - { ... }@inputs: - { - nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems ./.); - }; + outputs = { ... }@inputs: { + nixosConfigurations = inputs.dashNix.dashNixLib.build_systems ./.; + }; nixConfig = { builders-use-substitutes = true; diff --git a/flake.nix b/flake.nix index 52680f9..000c69d 100644 --- a/flake.nix +++ b/flake.nix @@ -5,9 +5,7 @@ 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"; @@ -25,7 +23,8 @@ hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; ironbar = { - url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; + url = + "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; }; stylix.url = "github:danth/stylix"; @@ -48,14 +47,11 @@ }; }; - outputs = - { self, ... }@inputs: + outputs = { self, ... }@inputs: let stable = import inputs.stable { system = "x86_64-linux"; - config = { - allowUnfree = true; - }; + config = { allowUnfree = true; }; }; pkgs = import inputs.nixpkgs { system = "x86_64-linux"; @@ -65,8 +61,7 @@ allowUnfree = true; }; }; - in - rec { + in rec { dashNixLib = import ./lib { inherit self inputs pkgs; lib = inputs.nixpkgs.lib; diff --git a/lib/default.nix b/lib/default.nix index f16ceb3..8a6cb87 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,60 +1,51 @@ -{ - inputs, - pkgs, - self, - lib, - additionalMods ? { - nixos = [ ]; - home = [ ]; - }, - mods ? { - nixos = [ - inputs.home-manager.nixosModules.home-manager - inputs.stylix.nixosModules.stylix - ../base - ../home - ../modules - ]; - home = [ - inputs.anyrun.homeManagerModules.default - inputs.ironbar.homeManagerModules.default - inputs.oxicalc.homeManagerModules.default - inputs.oxishut.homeManagerModules.default - inputs.oxinoti.homeManagerModules.default - inputs.oxidash.homeManagerModules.default - inputs.oxipaste.homeManagerModules.default - inputs.hyprdock.homeManagerModules.default - inputs.hyprland.homeManagerModules.default - inputs.reset.homeManagerModules.default - inputs.nix-flatpak.homeManagerModules.nix-flatpak - inputs.sops-nix.homeManagerModules.sops - inputs.dashvim.homeManagerModules.dashvim - ../modules - ]; - }, - ... -}: -{ - /** - # build_systems +{ inputs, pkgs, self, lib, additionalMods ? { + nixos = [ ]; + home = [ ]; +}, mods ? { + nixos = [ + inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + ../base + ../home + ../modules + ]; + home = [ + inputs.anyrun.homeManagerModules.default + inputs.ironbar.homeManagerModules.default + inputs.oxicalc.homeManagerModules.default + inputs.oxishut.homeManagerModules.default + inputs.oxinoti.homeManagerModules.default + inputs.oxidash.homeManagerModules.default + inputs.oxipaste.homeManagerModules.default + inputs.hyprdock.homeManagerModules.default + inputs.hyprland.homeManagerModules.default + inputs.reset.homeManagerModules.default + inputs.nix-flatpak.homeManagerModules.nix-flatpak + inputs.sops-nix.homeManagerModules.sops + inputs.dashvim.homeManagerModules.dashvim + ../modules + ]; +}, ... }: { + /* * + # build_systems - Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. + Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. - A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. + A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. - The second parameter is the root of your configuration, which should be ./. in most cases. + The second parameter is the root of your configuration, which should be ./. in most cases. - `root` + `root` - : the root path of your configuration + : the root path of your configuration - # Example usage - :::{.example} - ```nix - nixosConfigurations = - (build_systems [ "nixos" ] ./.); - ``` - ::: + # Example usage + :::{.example} + ```nix + nixosConfigurations = + (build_systems [ "nixos" ] ./.); + ``` + ::: */ # let # paths = builtins.readDir ; @@ -63,53 +54,31 @@ # ); # in - build_systems = - root: - builtins.listToAttrs ( - map - (name: { - name = name; - value = - let - mod = root + /hosts/${name}/configuration.nix; - additionalNixosConfig = root + /hosts/${name}/hardware.nix; - additionalHomeConfig = root + /hosts/${name}/home.nix; - in - inputs.nixpkgs.lib.nixosSystem { - specialArgs = { - inherit - self - inputs - pkgs - mod - additionalHomeConfig - root - ; - hostName = name; - homeMods = mods.home; - additionalHomeMods = additionalMods.home; - }; - modules = - [ mod ] - ++ mods.nixos - ++ additionalMods.nixos - ++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig - ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; - }; - }) - ( - lib.lists.remove "" ( - lib.attrsets.mapAttrsToList (name: fType: if fType == "directory" then name else "") ( - builtins.readDir (root + /hosts) - ) - ) - ) - ); + build_systems = root: + builtins.listToAttrs (map (name: { + name = name; + value = let + mod = root + /hosts/${name}/configuration.nix; + additionalNixosConfig = root + /hosts/${name}/hardware.nix; + additionalHomeConfig = root + /hosts/${name}/home.nix; + in inputs.nixpkgs.lib.nixosSystem { + specialArgs = { + inherit self inputs pkgs mod additionalHomeConfig root; + hostName = name; + homeMods = mods.home; + additionalHomeMods = additionalMods.home; + }; + modules = [ mod ] ++ mods.nixos ++ additionalMods.nixos + ++ inputs.nixpkgs.lib.optional + (builtins.pathExists additionalNixosConfig) additionalNixosConfig + ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; + }; + }) (lib.lists.remove "" (lib.attrsets.mapAttrsToList + (name: fType: if fType == "directory" then name else "") + (builtins.readDir (root + /hosts))))); buildIso = inputs.nixpkgs.lib.nixosSystem { - specialArgs = { - inherit self inputs pkgs; - }; + specialArgs = { inherit self inputs pkgs; }; modules = [ ../iso/configuration.nix ]; }; } From 6c57ca5b720780586959dd0435626c604ff143c9 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 8 Sep 2024 21:20:31 +0200 Subject: [PATCH 140/330] Make catppuccin default --- modules/programs/stylix.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index 9a84760..6f3ea07 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -8,7 +8,8 @@ { options.mods.stylix = { colorscheme = lib.mkOption { - default = { + default = "catppuccin-mocha"; + example = { # custom tokyo night base00 = "1A1B26"; # base01 = "16161E"; @@ -21,7 +22,7 @@ base06 = "CBCCD1"; base07 = "D5D6DB"; base08 = "C0CAF5"; - base09 = "A9B1D6"; + base09 = "A9B1D7"; base0A = "0DB9D7"; base0B = "9ECE6A"; base0C = "B4F9F8"; @@ -33,7 +34,6 @@ base0E = "BB9AF7"; base0F = "F7768E"; }; - example = "catppuccin-mocha"; type = with lib.types; oneOf [ From 3a2266d44ff3c39b111f13a5d24c386845b3d9ec Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 8 Sep 2024 21:34:28 +0200 Subject: [PATCH 141/330] Use nh --- modules/programs/fish.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 4c9c8e1..0386d57 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -45,8 +45,9 @@ set EDITOR "neovide --no-fork" - alias rebuild='sudo nixos-rebuild switch --flake ${config.conf.nixos-config-path}' - alias update='sudo nixos-rebuild switch --flake ${config.conf.nixos-config-path}' + alias rebuild='nh os switch' + alias update='nix flake update $FLAKE' + alias updateLock='nix flake lock $FLAKE --update-input' abbr --add ls 'lsd' abbr --add :q 'exit' abbr --add gh 'git push origin' From 69fb898087e420100c1347d4b2748f0380e8a133 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 9 Sep 2024 23:11:36 +0200 Subject: [PATCH 142/330] Add mime type module and refactor options --- docs/default.nix | 25 +- docs/src/README.md | 2 + example/flake.nix | 11 +- example/hosts/example/configuration.nix | 2 +- flake.nix | 17 +- home/default.nix | 1 - home/xdg.nix | 86 ---- lib/default.nix | 162 ++++--- .../{base_packages.nix => basePackages.nix} | 26 +- modules/programs/default.nix | 9 +- modules/programs/drives.nix | 4 +- modules/programs/fish.nix | 1 + modules/programs/gaming.nix | 8 +- modules/programs/git.nix | 5 +- .../{gnome_services.nix => gnomeServices.nix} | 4 +- .../{home_packages.nix => homePackages.nix} | 40 +- modules/programs/hyprland/anyrun.nix | 20 +- modules/programs/hyprland/hyprland.nix | 30 +- modules/programs/hyprland/ironbar.nix | 454 ++++++++++-------- .../{kde_connect.nix => kdeConnect.nix} | 4 +- modules/programs/media.nix | 12 +- modules/programs/mime.nix | 154 ++++++ modules/programs/printing.nix | 20 +- modules/programs/scripts.nix | 12 +- modules/programs/starship.nix | 10 +- 25 files changed, 641 insertions(+), 478 deletions(-) delete mode 100644 home/xdg.nix rename modules/programs/{base_packages.nix => basePackages.nix} (81%) rename modules/programs/{gnome_services.nix => gnomeServices.nix} (92%) rename modules/programs/{home_packages.nix => homePackages.nix} (72%) rename modules/programs/{kde_connect.nix => kdeConnect.nix} (88%) create mode 100644 modules/programs/mime.nix diff --git a/docs/default.nix b/docs/default.nix index 34635bd..a5a5f8d 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -1,8 +1,12 @@ # with friendly help by stylix: https://github.com/danth/stylix/blob/master/docs/default.nix -{ pkgs, build_systems, lib, ... }: +{ + pkgs, + build_systems, + lib, + ... +}: let - makeOptionsDoc = configuration: - pkgs.nixosOptionsDoc { options = configuration; }; + makeOptionsDoc = configuration: pkgs.nixosOptionsDoc { options = configuration; }; generateDocs = obj: '' touch src/${obj.fst}.md sed '/*Declared by:*/,/^$/d' <${obj.snd.optionsCommonMark} >> src/${obj.fst}.md @@ -11,18 +15,17 @@ let echo "- [${name}](${name}.md)" >> src/SUMMARY.md ''; system = (build_systems ../example/.)."example".options; - makeOptionsDocPrograms = name: - pkgs.nixosOptionsDoc { options = system.mods.${name}; }; + makeOptionsDocPrograms = name: pkgs.nixosOptionsDoc { options = system.mods.${name}; }; conf = makeOptionsDoc system.conf; paths = builtins.readDir ../modules/programs; - names = lib.lists.remove "default" - (map (name: lib.strings.removeSuffix ".nix" name) - (lib.attrsets.mapAttrsToList (name: _: name) paths)); + names = lib.lists.remove "default" ( + map (name: lib.strings.removeSuffix ".nix" name) (lib.attrsets.mapAttrsToList (name: _: name) paths) + ); mods = map makeOptionsDocPrograms names; - docs = - lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods)); + docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods)); summary = lib.strings.concatStringsSep " " (map summaryAppend names); -in pkgs.stdenvNoCC.mkDerivation { +in +pkgs.stdenvNoCC.mkDerivation { name = "dashNix-book"; src = ./.; diff --git a/docs/src/README.md b/docs/src/README.md index 2e5d444..0af74b9 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -198,4 +198,6 @@ For package lists, please check the individual modules, as the lists can be long - fish: Enables and configures fish shell - kitty: Enables and configures kitty terminal - oxi: My own programs, can be selectively disabled, or as a whole +- mime: Mime type configuration +- xkb: Keyboard layout configuration - scripts: Various preconfigured scripts with the ability to add more diff --git a/example/flake.nix b/example/flake.nix index 1c4fa7d..def9784 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -4,8 +4,7 @@ inputs = { dashvim.url = "github:DashieTM/DashVim"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; - ironbar.url = - "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; + ironbar.url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; anyrun.url = "github:Kirottu/anyrun"; nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; stable.url = "github:NixOs/nixpkgs/nixos-24.05"; @@ -22,9 +21,11 @@ }; }; - outputs = { ... }@inputs: { - nixosConfigurations = inputs.dashNix.dashNixLib.build_systems ./.; - }; + outputs = + { ... }@inputs: + { + nixosConfigurations = inputs.dashNix.dashNixLib.build_systems ./.; + }; nixConfig = { builders-use-substitutes = true; diff --git a/example/hosts/example/configuration.nix b/example/hosts/example/configuration.nix index 20a5134..ef9d710 100644 --- a/example/hosts/example/configuration.nix +++ b/example/hosts/example/configuration.nix @@ -66,7 +66,7 @@ # ]; # or amd, whatever you have gpu.nvidia.enable = true; - kde_connect.enable = true; + kdeConnect.enable = true; # login manager: # default is greetd # greetd = { }; diff --git a/flake.nix b/flake.nix index 000c69d..52680f9 100644 --- a/flake.nix +++ b/flake.nix @@ -5,7 +5,9 @@ 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"; @@ -23,8 +25,7 @@ hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; ironbar = { - url = - "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; + url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; }; stylix.url = "github:danth/stylix"; @@ -47,11 +48,14 @@ }; }; - outputs = { self, ... }@inputs: + outputs = + { self, ... }@inputs: let stable = import inputs.stable { system = "x86_64-linux"; - config = { allowUnfree = true; }; + config = { + allowUnfree = true; + }; }; pkgs = import inputs.nixpkgs { system = "x86_64-linux"; @@ -61,7 +65,8 @@ allowUnfree = true; }; }; - in rec { + in + rec { dashNixLib = import ./lib { inherit self inputs pkgs; lib = inputs.nixpkgs.lib; diff --git a/home/default.nix b/home/default.nix index 67c4290..7d0a2aa 100644 --- a/home/default.nix +++ b/home/default.nix @@ -29,7 +29,6 @@ imports = [ ./common.nix - ./xdg.nix ./themes ./sync.nix ] diff --git a/home/xdg.nix b/home/xdg.nix deleted file mode 100644 index aa9541a..0000000 --- a/home/xdg.nix +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright (c) 2020-2021 Mihai Fufezan -# credits to fufexan https://github.com/fufexan/dotfiles/blob/main/home/terminal/programs/xdg.nix -{ config, ... }: -let - browser = [ "firefox" ]; - imageViewer = [ "imv" ]; - videoPlayer = [ "mpv" ]; - audioPlayer = [ "io.bassi.Amberol" ]; - - xdgAssociations = - type: 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" - ]); - - # XDG MIME types - associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ( - { - "application/pdf" = [ "org.pwmt.zathura-pdf-mupdf" ]; - "text/html" = browser; - "text/plain" = [ "neovide" ]; - "x-scheme-handler/chrome" = [ "com.brave.browser" ]; - "inode/directory" = [ "yazi" ]; - } - // image - // video - // audio - // browserTypes - ); -in -{ - xdg = { - enable = true; - cacheHome = config.home.homeDirectory + "/.local/cache"; - - mimeApps = { - enable = true; - defaultApplications = associations; - }; - - userDirs = { - enable = true; - createDirectories = true; - extraConfig = { - XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; - }; - }; - }; -} diff --git a/lib/default.nix b/lib/default.nix index 8a6cb87..32910cc 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,51 +1,61 @@ -{ inputs, pkgs, self, lib, additionalMods ? { - nixos = [ ]; - home = [ ]; -}, mods ? { - nixos = [ - inputs.home-manager.nixosModules.home-manager - inputs.stylix.nixosModules.stylix - ../base - ../home - ../modules - ]; - home = [ - inputs.anyrun.homeManagerModules.default - inputs.ironbar.homeManagerModules.default - inputs.oxicalc.homeManagerModules.default - inputs.oxishut.homeManagerModules.default - inputs.oxinoti.homeManagerModules.default - inputs.oxidash.homeManagerModules.default - inputs.oxipaste.homeManagerModules.default - inputs.hyprdock.homeManagerModules.default - inputs.hyprland.homeManagerModules.default - inputs.reset.homeManagerModules.default - inputs.nix-flatpak.homeManagerModules.nix-flatpak - inputs.sops-nix.homeManagerModules.sops - inputs.dashvim.homeManagerModules.dashvim - ../modules - ]; -}, ... }: { - /* * - # build_systems +{ + inputs, + pkgs, + self, + lib, + additionalMods ? { + nixos = [ ]; + home = [ ]; + }, + mods ? { + nixos = [ + inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + ../base + ../home + ../modules + ]; + home = [ + inputs.anyrun.homeManagerModules.default + inputs.ironbar.homeManagerModules.default + inputs.oxicalc.homeManagerModules.default + inputs.oxishut.homeManagerModules.default + inputs.oxinoti.homeManagerModules.default + inputs.oxidash.homeManagerModules.default + inputs.oxipaste.homeManagerModules.default + inputs.hyprdock.homeManagerModules.default + inputs.hyprland.homeManagerModules.default + inputs.reset.homeManagerModules.default + inputs.nix-flatpak.homeManagerModules.nix-flatpak + inputs.sops-nix.homeManagerModules.sops + inputs.dashvim.homeManagerModules.dashvim + ../modules + ]; + }, + ... +}: +{ + /* + * + # build_systems - Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. + Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. - A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. + A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. - The second parameter is the root of your configuration, which should be ./. in most cases. + The second parameter is the root of your configuration, which should be ./. in most cases. - `root` + `root` - : the root path of your configuration + : the root path of your configuration - # Example usage - :::{.example} - ```nix - nixosConfigurations = - (build_systems [ "nixos" ] ./.); - ``` - ::: + # Example usage + :::{.example} + ```nix + nixosConfigurations = + (build_systems [ "nixos" ] ./.); + ``` + ::: */ # let # paths = builtins.readDir ; @@ -54,31 +64,53 @@ # ); # in - build_systems = root: - builtins.listToAttrs (map (name: { - name = name; - value = let - mod = root + /hosts/${name}/configuration.nix; - additionalNixosConfig = root + /hosts/${name}/hardware.nix; - additionalHomeConfig = root + /hosts/${name}/home.nix; - in inputs.nixpkgs.lib.nixosSystem { - specialArgs = { - inherit self inputs pkgs mod additionalHomeConfig root; - hostName = name; - homeMods = mods.home; - additionalHomeMods = additionalMods.home; - }; - modules = [ mod ] ++ mods.nixos ++ additionalMods.nixos - ++ inputs.nixpkgs.lib.optional - (builtins.pathExists additionalNixosConfig) additionalNixosConfig - ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; - }; - }) (lib.lists.remove "" (lib.attrsets.mapAttrsToList - (name: fType: if fType == "directory" then name else "") - (builtins.readDir (root + /hosts))))); + build_systems = + root: + builtins.listToAttrs ( + map + (name: { + name = name; + value = + let + mod = root + /hosts/${name}/configuration.nix; + additionalNixosConfig = root + /hosts/${name}/hardware.nix; + additionalHomeConfig = root + /hosts/${name}/home.nix; + in + inputs.nixpkgs.lib.nixosSystem { + specialArgs = { + inherit + self + inputs + pkgs + mod + additionalHomeConfig + root + ; + hostName = name; + homeMods = mods.home; + additionalHomeMods = additionalMods.home; + }; + modules = + [ mod ] + ++ mods.nixos + ++ additionalMods.nixos + ++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig + ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; + }; + }) + ( + lib.lists.remove "" ( + lib.attrsets.mapAttrsToList (name: fType: if fType == "directory" then name else "") ( + builtins.readDir (root + /hosts) + ) + ) + ) + ); buildIso = inputs.nixpkgs.lib.nixosSystem { - specialArgs = { inherit self inputs pkgs; }; + specialArgs = { + inherit self inputs pkgs; + }; modules = [ ../iso/configuration.nix ]; }; } diff --git a/modules/programs/base_packages.nix b/modules/programs/basePackages.nix similarity index 81% rename from modules/programs/base_packages.nix rename to modules/programs/basePackages.nix index 4ab9ae1..cd0a501 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/basePackages.nix @@ -8,7 +8,7 @@ }: { options.mods = { - base_packages = { + basePackages = { enable = lib.mkOption { default = true; example = false; @@ -17,7 +17,7 @@ Enables default system packages. ''; }; - additional_packages = lib.mkOption { + additionalPackages = lib.mkOption { default = [ ]; example = [ pkgs.openssl ]; type = with lib.types; listOf package; @@ -26,7 +26,7 @@ Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. ''; }; - special_programs = lib.mkOption { + specialPrograms = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -34,7 +34,7 @@ special program configuration to be added which require programs.something notation. ''; }; - special_services = lib.mkOption { + specialServices = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -47,7 +47,7 @@ config = lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = - if config.mods.base_packages.enable then + if config.mods.basePackages.enable then with pkgs; [ adwaita-icon-theme @@ -73,13 +73,13 @@ upower xorg.xkbutils ] - ++ config.mods.base_packages.additional_packages + ++ config.mods.basePackages.additionalPackages else - config.mods.base_packages.additional_packages; + config.mods.basePackages.additionalPackages; gtk.iconCache.enable = false; services = - if config.mods.base_packages.enable then + if config.mods.basePackages.enable then { upower.enable = true; dbus = { @@ -92,12 +92,12 @@ openFirewall = true; }; } - // config.mods.base_packages.special_services + // config.mods.basePackages.specialServices else - config.mods.base_packages.special_services; + config.mods.basePackages.specialServices; programs = - if config.mods.base_packages.enable then + if config.mods.basePackages.enable then { nix-ld = { enable = true; @@ -119,9 +119,9 @@ ssh.startAgent = true; gnupg.agent.enable = true; } - // config.mods.base_packages.special_programs + // config.mods.basePackages.specialPrograms else - config.mods.base_packages.special_programs; + config.mods.basePackages.specialPrograms; }; } diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 4a968be..7c7d8a9 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -1,7 +1,7 @@ { imports = [ ./acpid.nix - ./base_packages.nix + ./basePackages.nix ./bluetooth.nix ./coding.nix ./drives.nix @@ -12,13 +12,13 @@ ./gdm.nix ./git.nix ./gnome.nix - ./gnome_services.nix + ./gnomeServices.nix ./gpu.nix ./greetd.nix - ./home_packages.nix + ./homePackages.nix ./hyprland ./kde.nix - ./kde_connect.nix + ./kdeConnect.nix ./keepassxc.nix ./kitty.nix ./media.nix @@ -35,6 +35,7 @@ ./stylix.nix ./teams.nix ./virtualbox.nix + ./mime.nix ./xkb.nix ./xone.nix ./yazi diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix index 579ed70..9c0ecfe 100644 --- a/modules/programs/drives.nix +++ b/modules/programs/drives.nix @@ -130,7 +130,9 @@ in }; }; # TODO make this convert to choice of drives -> thanks to funny types this doesn't work... - swapDevices = lib.mkIf config.mods.drives.useSwap.enable [ { device = "/dev/disk/by-label/SWAP"; } ]; + swapDevices = lib.mkIf config.mods.drives.useSwap.enable [ + { device = "/dev/disk/by-label/SWAP"; } + ]; } ); } diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 0386d57..4e04b76 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -54,6 +54,7 @@ abbr --add gl 'git pull origin' abbr --add gm 'git commit -m' abbr --add ga "git add -A" + abbr --add gc "git commit --amend --no-edit" abbr --add g+ 'bear -- g++ -Wextra -Werror -std=c++20' abbr --add s "kitty +kitten ssh" abbr --add zl 'z "" ' diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 29ea71c..d3a23cd 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -44,13 +44,13 @@ type = lib.types.bool; description = "Whether to use gamemode"; }; - gpu_optimization = lib.mkOption { + gpuOptimization = lib.mkOption { default = true; example = false; type = lib.types.bool; description = "Whether to use GPU performance setting. NOTE: this is at your own risk!"; }; - gpu_device = lib.mkOption { + gpuDevice = lib.mkOption { default = 0; example = 1; type = lib.types.int; @@ -71,9 +71,9 @@ general = { governor = "performance"; }; - gpu = lib.mkIf config.mods.gaming.gpu_optimization { + gpu = lib.mkIf config.mods.gaming.gpuOptimization { apply_gpu_optimisations = "accept-responsibility"; - gpu_device = config.mods.gaming.gpu_device; + gpu_device = config.mods.gaming.gpuDevice; amd_performance_level = "high"; nv_powermizer_mode = 1; }; diff --git a/modules/programs/git.nix b/modules/programs/git.nix index e105cb7..2e78f4c 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -2,7 +2,6 @@ lib, config, options, - pkgs, ... }: { @@ -19,7 +18,7 @@ type = lib.types.str; description = "Git email"; }; - ssh_config = lib.mkOption { + sshConfig = lib.mkOption { default = '' Host github.com ${ @@ -63,7 +62,7 @@ }; }; }; - home.file.".ssh/config".text = config.mods.git.ssh_config; + home.file.".ssh/config".text = config.mods.git.sshConfig; } ); } diff --git a/modules/programs/gnome_services.nix b/modules/programs/gnomeServices.nix similarity index 92% rename from modules/programs/gnome_services.nix rename to modules/programs/gnomeServices.nix index 3c489cd..4bc4d7e 100644 --- a/modules/programs/gnome_services.nix +++ b/modules/programs/gnomeServices.nix @@ -7,7 +7,7 @@ }: { options.mods = { - gnome_services.enable = lib.mkOption { + gnomeServices.enable = lib.mkOption { default = true; example = false; type = lib.types.bool; @@ -26,7 +26,7 @@ }; }; - config = lib.mkIf config.mods.gnome_services.enable ( + config = lib.mkIf config.mods.gnomeServices.enable ( lib.optionalAttrs (options ? services.gnome.gnome-keyring) { programs.dconf.enable = true; services = { diff --git a/modules/programs/home_packages.nix b/modules/programs/homePackages.nix similarity index 72% rename from modules/programs/home_packages.nix rename to modules/programs/homePackages.nix index 1992028..e6f8890 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/homePackages.nix @@ -6,14 +6,14 @@ ... }: { - options.mods.home_packages = { + options.mods.homePackages = { useDefaultPackages = lib.mkOption { default = true; example = false; type = lib.types.bool; description = "Use default packages (will use additional_packages only if disabled)"; }; - additional_packages = lib.mkOption { + additionalPackages = lib.mkOption { default = [ ]; example = [ pkgs.flatpak ]; type = with lib.types; listOf package; @@ -22,7 +22,7 @@ Will be installed regardless of default home manager packages are installed. ''; }; - special_programs = lib.mkOption { + specialPrograms = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -30,7 +30,7 @@ special program configuration to be added which require programs.something notation. ''; }; - special_services = lib.mkOption { + specialServices = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -77,18 +77,18 @@ }; config = lib.optionalAttrs (options ? home.packages) { home.packages = - if config.mods.home_packages.useDefaultPackages then + if config.mods.homePackages.useDefaultPackages then with pkgs; [ # TODO add fcp once fixed.... - (lib.mkIf config.mods.home_packages.ncspot ncspot) - (lib.mkIf config.mods.home_packages.vesktop vesktop) - (lib.mkIf config.mods.home_packages.nextcloudClient nextcloud-client) - (lib.mkIf (!isNull config.mods.home_packages.matrixClient) config.mods.home_packages.matrixClient) - (lib.mkIf (!isNull config.mods.home_packages.mailClient) config.mods.home_packages.mailClient) + (lib.mkIf config.mods.homePackages.ncspot ncspot) + (lib.mkIf config.mods.homePackages.vesktop vesktop) + (lib.mkIf config.mods.homePackages.nextcloudClient nextcloud-client) + (lib.mkIf (!isNull config.mods.homePackages.matrixClient) config.mods.homePackages.matrixClient) + (lib.mkIf (!isNull config.mods.homePackages.mailClient) config.mods.homePackages.mailClient) (lib.mkIf ( - !isNull config.mods.home_packages.additionalBrowser - ) config.mods.home_packages.additionalBrowser) + !isNull config.mods.homePackages.additionalBrowser + ) config.mods.homePackages.additionalBrowser) adw-gtk3 bat brightnessctl @@ -119,9 +119,9 @@ zenith zoxide ] - ++ config.mods.home_packages.additional_packages + ++ config.mods.homePackages.additionalPackages else - config.mods.home_packages.additional_packages; + config.mods.homePackages.additionalPackages; xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" { global = { @@ -129,14 +129,14 @@ }; }; programs = - if config.mods.home_packages.useDefaultPackages then - config.mods.home_packages.special_programs + if config.mods.homePackages.useDefaultPackages then + config.mods.homePackages.specialPrograms else - config.mods.home_packages.special_programs; + config.mods.homePackages.specialPrograms; services = - if config.mods.home_packages.useDefaultPackages then - config.mods.home_packages.special_services + if config.mods.homePackages.useDefaultPackages then + config.mods.homePackages.specialServices else - config.mods.home_packages.special_services; + config.mods.homePackages.specialServices; }; } diff --git a/modules/programs/hyprland/anyrun.nix b/modules/programs/hyprland/anyrun.nix index 5be6ad9..5e7d9d8 100644 --- a/modules/programs/hyprland/anyrun.nix +++ b/modules/programs/hyprland/anyrun.nix @@ -16,7 +16,7 @@ type = lib.types.bool; description = "Enables anyrun"; }; - use_default_config = lib.mkOption { + useDefaultConfig = lib.mkOption { default = true; example = false; type = lib.types.bool; @@ -24,7 +24,7 @@ Use preconfigured anyrun config. ''; }; - custom_config = lib.mkOption { + customConfig = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -33,7 +33,7 @@ Will be merged with default configuration if enabled. ''; }; - use_default_css = lib.mkOption { + useDefaultCss = lib.mkOption { default = true; example = false; type = lib.types.bool; @@ -41,7 +41,7 @@ Use preconfigured anyrun css. ''; }; - custom_css = lib.mkOption { + customCss = lib.mkOption { default = ''''; example = '' #window { @@ -63,7 +63,7 @@ programs.anyrun = { enable = true; config = - if config.mods.hyprland.anyrun.use_default_config then + if config.mods.hyprland.anyrun.useDefaultConfig then { plugins = [ inputs.anyrun.packages.${pkgs.system}.applications @@ -83,12 +83,12 @@ hidePluginInfo = true; closeOnClick = true; } - // config.mods.hyprland.anyrun.custom_config + // config.mods.hyprland.anyrun.customConfig else - config.mods.hyprland.anyrun.custom_config; + config.mods.hyprland.anyrun.customConfig; extraCss = - if config.mods.hyprland.anyrun.use_default_css then + if config.mods.hyprland.anyrun.useDefaultCss then '' #window { border-radius: 10px; @@ -137,9 +137,9 @@ border-radius: 10px; } '' - + config.mods.hyprland.anyrun.custom_css + + config.mods.hyprland.anyrun.customCss else - config.mods.hyprland.anyrun.custom_css; + config.mods.hyprland.anyrun.customCss; }; } ); diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 5f35aec..f1f1bfa 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -37,7 +37,7 @@ The workspace configuration for hyprland. ''; }; - no_atomic = lib.mkOption { + noAtomic = lib.mkOption { default = false; example = true; type = lib.types.bool; @@ -45,7 +45,7 @@ Use tearing ''; }; - extra_autostart = lib.mkOption { + extraAutostart = lib.mkOption { default = [ ]; example = [ "your application" ]; type = lib.types.listOf lib.types.str; @@ -53,7 +53,7 @@ Extra exec_once. ''; }; - use_default_config = lib.mkOption { + useDefaultConfig = lib.mkOption { default = true; example = false; type = lib.types.bool; @@ -61,7 +61,7 @@ Use preconfigured Hyprland config. ''; }; - custom_config = lib.mkOption { + customConfig = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -100,7 +100,7 @@ wayland.windowManager.hyprland = { enable = true; settings = - if config.mods.hyprland.use_default_config then + if config.mods.hyprland.useDefaultConfig then { "$mod" = "SUPER"; @@ -131,14 +131,14 @@ "$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate" # media keys - (lib.mkIf config.mods.scripts.audio-control ",XF86AudioMute,exec, audio-control mute") - (lib.mkIf config.mods.scripts.audio-control ",XF86AudioLowerVolume,exec, audio-control sink -5%") - (lib.mkIf config.mods.scripts.audio-control ",XF86AudioRaiseVolume,exec, audio-control sink +5%") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioMute,exec, audio-control mute") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioLowerVolume,exec, audio-control sink -5%") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioRaiseVolume,exec, audio-control sink +5%") ",XF86AudioPlay,exec, playerctl play-pause" ",XF86AudioNext,exec, playerctl next" ",XF86AudioPrev,exec, playerctl previous" - (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-") - (lib.mkIf config.mods.scripts.change-brightness ",XF86MonBrightnessUp,exec, change-brightness brightness +10%") + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-") + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessUp,exec, change-brightness brightness +10%") # hyprland keybinds # misc @@ -219,7 +219,7 @@ border_size = 3; "col.active_border" = lib.mkOverride 51 "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; # "col.inactive_border" = "0x66333333"; - allow_tearing = lib.mkIf config.mods.hyprland.no_atomic true; + allow_tearing = lib.mkIf config.mods.hyprland.noAtomic true; }; decoration = { @@ -297,7 +297,7 @@ "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" "QT_SCALE_FACTOR,1" ''EDITOR,"neovide --novsync --nofork"'' - (lib.mkIf config.mods.hyprland.no_atomic "WLR_DRM_NO_ATOMIC,1") + (lib.mkIf config.mods.hyprland.noAtomic "WLR_DRM_NO_ATOMIC,1") "GTK_USE_PORTAL, 1" (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") @@ -349,7 +349,7 @@ # should be taken care of with the new systemd services # "nextcloud --background" "oxinoti" - ] ++ config.mods.hyprland.extra_autostart; + ] ++ config.mods.hyprland.extraAutostart; # plugin = { # hyprspace = { @@ -359,9 +359,9 @@ # }; # }; } - // config.mods.hyprland.custom_config + // config.mods.hyprland.customConfig else - lib.mkForce config.mods.hyprland.custom_config; + lib.mkForce config.mods.hyprland.customConfig; plugins = config.mods.hyprland.plugins; #inputs.Hyprspace.packages.${pkgs.system}.Hyprspace }; diff --git a/modules/programs/hyprland/ironbar.nix b/modules/programs/hyprland/ironbar.nix index 578b542..03d24e5 100644 --- a/modules/programs/hyprland/ironbar.nix +++ b/modules/programs/hyprland/ironbar.nix @@ -1,7 +1,6 @@ { lib, config, - pkgs, options, ... }: @@ -17,262 +16,309 @@ in type = lib.types.bool; description = "Enables ironbar"; }; + useDefaultConfig = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use preconfigured ironbar config. + ''; + }; + customConfig = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + Custom ironbar configuration. + Will be merged with default configuration if enabled. + ''; + }; + useDefaultCss = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use preconfigured ironbar css. + ''; + }; + customCss = lib.mkOption { + default = ''''; + example = '' + #window { + border-radius: none; + } + ''; + type = lib.types.lines; + description = '' + Custom ironbar css. + Will be merged with default css if enabled. + ''; + }; }; }; config = lib.mkIf config.mods.hyprland.ironbar.enable ( lib.optionalAttrs (options ? programs.ironbar) { - programs.ironbar = { enable = true; - style = '' - @import url("/home/${username}/.config/gtk-3.0/gtk.css"); + style = + if config.mods.hyprland.ironbar.useDefaultCss then + '' + @import url("/home/${username}/.config/gtk-3.0/gtk.css"); - * { - color: #71bbe6; - padding: 0px; - margin: 0px; - } + * { + color: #71bbe6; + padding: 0px; + margin: 0px; + } - .background { - background-color: rgba(0, 0, 0, 0); - } + .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 { + 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 { + 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:hover { + background-color: #3e4152; + } - .workspaces .item.focused { - background-color: #3e4152; - } + .workspaces .item.focused { + background-color: #3e4152; + } - .audio-box { - padding: 2em; - background-color: #1E1E2E; - border-radius: 5px; - } + .audio-box { + padding: 2em; + background-color: #1E1E2E; + border-radius: 5px; + } - .audio-slider { - padding: 5px; - margin: 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 { + 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; - } + .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; - } + .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; - } + #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 { + 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; - } + .popup-button-box { + padding: 2px 0px 2px 0px; + } - .clock { - padding: 0px 5px 0px 5px; - font-size: 17px; - background-color: #1E1E2E; - } + .clock { + padding: 0px 5px 0px 5px; + font-size: 17px; + background-color: #1E1E2E; + } - .clock:hover { - background-color: #3e4152; - } + .clock:hover { + background-color: #3e4152; + } - .custom button { - background-color: #1E1E2E; - } + .custom button { + background-color: #1E1E2E; + } - .custom button:hover { - background-color: #3e4152; - } + .custom button:hover { + background-color: #3e4152; + } - .memory-usage { - font-size: 15px; - margin: 0px 5px 0px 0px; - } + .memory-usage { + font-size: 15px; + margin: 0px 5px 0px 0px; + } - .memory-usage:hover { - background-color: #3e4152; - } + .memory-usage:hover { + background-color: #3e4152; + } - .popup-clock { - background-color: #1E1E2E; - border-radius: 5px; - padding: 2px 8px 10px 8px; - } + .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-clock { + font-size: 2.5em; + padding-bottom: 0.1em; + } - .popup-clock .calendar { - border-radius: 5px; - font-size: 1.05em; - } + .popup-clock .calendar { + border-radius: 5px; + font-size: 1.05em; + } - .popup-clock .calendar:selected { - background-color: #3e4152; - } - ''; + .popup-clock .calendar:selected { + background-color: #3e4152; + } + '' + + config.mods.hyprland.ironbar.customCss + else + config.mods.hyprland.ironbar.customCss; features = [ #"another_feature" ]; config = { - monitors."${config.conf.defaultMonitor}" = { - end = config.conf.ironbar.modules ++ [ + monitors."${config.conf.defaultMonitor}" = + if config.mods.hyprland.ironbar.useDefaultConfig then { - type = "sys_info"; - format = [ " {memory_percent}" ]; - interval.memory = 30; - class = "memory-usage"; - } - { - type = "custom"; - bar = [ + end = config.conf.ironbar.modules ++ [ { - type = "button"; - class = "popup-button"; - label = ""; - on_click = "popup:toggle"; + type = "sys_info"; + format = [ " {memory_percent}" ]; + interval.memory = 30; + class = "memory-usage"; } - ]; - class = "popup-button-box"; - popup = [ { - type = "box"; - orientation = "vertical"; - class = "audio-box"; - widgets = [ + type = "custom"; + bar = [ + { + type = "button"; + class = "popup-button"; + label = ""; + on_click = "popup:toggle"; + } + ]; + class = "popup-button-box"; + popup = [ { type = "box"; - orientation = "horizontal"; + orientation = "vertical"; + class = "audio-box"; widgets = [ { - type = "button"; - class = "audio-button"; - label = ""; - on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth"; + type = "box"; + orientation = "horizontal"; + widgets = [ + { + type = "button"; + class = "audio-button"; + label = ""; + 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"; + } + ]; + class = "audio-button-box"; } { - type = "button"; - class = "audio-button"; - label = "󰋋"; - on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh internal"; + type = "label"; + label = "Output"; + } + { + type = "slider"; + class = "audio-slider"; + step = 1.0; + length = 200; + value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; + on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; + } + { + type = "label"; + label = "Input"; + } + { + type = "slider"; + 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%"; } ]; - class = "audio-button-box"; - } - { - type = "label"; - label = "Output"; - } - { - type = "slider"; - class = "audio-slider"; - step = 1.0; - length = 200; - value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; - on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; - } - { - type = "label"; - label = "Input"; - } - { - type = "slider"; - 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%"; } ]; } - ]; - } - { - type = "custom"; - bar = [ { - type = "button"; - class = "popup-button"; - label = ""; - on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css"; + 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 = [ + { + type = "focused"; + show_icon = true; + show_title = true; + icon_size = 20; + truncate = "end"; } ]; - 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"; - } - ]; - }; + // config.mods.hyprland.ironbar.customConfig + else + config.mods.hyprland.ironbar.customConfig; }; }; } diff --git a/modules/programs/kde_connect.nix b/modules/programs/kdeConnect.nix similarity index 88% rename from modules/programs/kde_connect.nix rename to modules/programs/kdeConnect.nix index 153a149..da4cc22 100644 --- a/modules/programs/kde_connect.nix +++ b/modules/programs/kdeConnect.nix @@ -8,7 +8,7 @@ { options.mods = { - kde_connect.enable = lib.mkOption { + kdeConnect.enable = lib.mkOption { default = false; type = lib.types.bool; example = true; @@ -18,7 +18,7 @@ }; }; - config = lib.mkIf config.mods.kde_connect.enable ( + config = lib.mkIf config.mods.kdeConnect.enable ( lib.optionalAttrs (options ? networking.firewall) { networking.firewall = { allowedTCPPortRanges = [ diff --git a/modules/programs/media.nix b/modules/programs/media.nix index deb895f..a8f3cf5 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -21,7 +21,7 @@ Additional media packages. ''; }; - special_programs = lib.mkOption { + specialPrograms = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -29,7 +29,7 @@ special program configuration to be added which require programs.something notation. ''; }; - special_services = lib.mkOption { + specialServices = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -78,13 +78,13 @@ obs-studio.enable = true; obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ]; } - // config.mods.media.special_programs + // config.mods.media.specialPrograms else - config.mods.media.special_programs; + config.mods.media.specialPrograms; services = if config.mods.media.useBasePackages then - config.mods.media.special_services + config.mods.media.specialServices else - config.mods.media.special_services; + config.mods.media.specialServices; }; } diff --git a/modules/programs/mime.nix b/modules/programs/mime.nix new file mode 100644 index 0000000..9d8bc50 --- /dev/null +++ b/modules/programs/mime.nix @@ -0,0 +1,154 @@ +# Copyright (c) 2020-2021 Mihai Fufezan +# credits to fufexan https://github.com/fufexan/dotfiles/blob/main/home/terminal/programs/xdg.nix +{ + config, + lib, + options, + ... +}: +{ + options.mods.mime = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables mime handling with nix"; + }; + imageTypes = lib.mkOption { + default = [ + "png" + "svg" + "jpeg" + "gif" + ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Image mime handlers"; + }; + videoTypes = lib.mkOption { + default = [ + "mp4" + "avi" + "mkv" + ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Video mime handlers"; + }; + audioTypes = lib.mkOption { + default = [ + "mp3" + "flac" + "wav" + "aac" + ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Audio mime handlers"; + }; + browserTypes = lib.mkOption { + default = [ + "json" + "x-extension-htm" + "x-extension-html" + "x-extension-shtml" + "x-extension-xht" + "x-extension-xhtml" + ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Browser mime handlers"; + }; + browserXTypes = lib.mkOption { + default = [ + "about" + "ftp" + "http" + "https" + "unknown" + ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Browser X mime handlers"; + }; + browserApplications = lib.mkOption { + default = [ "firefox" ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Applications used for handling browser mime types"; + }; + imageApplications = lib.mkOption { + default = [ "imv" ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Applications used for handling image mime types"; + }; + videoApplications = lib.mkOption { + default = [ "mpv" ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Applications used for handling video mime types"; + }; + audioApplications = lib.mkOption { + default = [ "io.bassi.Amberol" ]; + example = [ ]; + type = with lib.types; listOf str; + description = "Applications used for handling audio mime types"; + }; + # TODO additional config + }; + config = lib.optionalAttrs (options ? home) { + xdg = + let + xdgAssociations = + type: program: list: + builtins.listToAttrs ( + map (e: { + name = "${type}/${e}"; + value = program; + }) list + ); + + imageAc = xdgAssociations "image" config.mods.mime.imageApplications config.mods.mime.imageTypes; + videoAc = xdgAssociations "video" config.mods.mime.videoApplications config.mods.mime.videoTypes; + audioAc = xdgAssociations "audio" config.mods.mime.audioApplications config.mods.mime.audioTypes; + browserAc = + (xdgAssociations "application" config.mods.mime.browserApplications config.mods.mime.browserTypes) + // (xdgAssociations "x-scheme-handler" config.mods.mime.browserApplications + config.mods.mime.browserXTypes + ); + associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ( + # TODO make configurable + { + "application/pdf" = [ "org.pwmt.zathura-pdf-mupdf" ]; + "text/html" = config.mods.mime.browserApplications; + "text/plain" = [ "neovide" ]; + "x-scheme-handler/chrome" = [ "com.brave.browser" ]; + "inode/directory" = [ "yazi" ]; + } + // imageAc + // audioAc + // videoAc + // browserAc + ); + in + lib.mkIf config.mods.mime.enable { + enable = true; + cacheHome = config.home.homeDirectory + "/.local/cache"; + + mimeApps = { + enable = true; + defaultApplications = associations; + }; + + userDirs = { + enable = true; + createDirectories = true; + extraConfig = { + XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; + pws = "${config.home.homeDirectory}/pws"; + }; + }; + }; + }; +} diff --git a/modules/programs/printing.nix b/modules/programs/printing.nix index 80144b8..ad75719 100644 --- a/modules/programs/printing.nix +++ b/modules/programs/printing.nix @@ -17,14 +17,18 @@ 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; + services = { + printing = { + enable = true; + browsing = true; + drivers = [ pkgs.hplip ]; + startWhenNeeded = true; # optional + }; + avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; }; } ); diff --git a/modules/programs/scripts.nix b/modules/programs/scripts.nix index 8a3889e..5a6ddd1 100644 --- a/modules/programs/scripts.nix +++ b/modules/programs/scripts.nix @@ -7,13 +7,13 @@ }: { options.mods.scripts = { - change-brightness = lib.mkOption { + changeBrightness = lib.mkOption { default = true; example = false; type = lib.types.bool; description = "Enables the change-brightness script"; }; - audio-control = lib.mkOption { + audioControl = lib.mkOption { default = true; example = false; type = lib.types.bool; @@ -28,8 +28,8 @@ config = ( lib.optionalAttrs (options ? home.packages) { home.packages = [ - (lib.mkIf config.mods.scripts.change-brightness ( - pkgs.writeShellScriptBin "change-brightness" '' + (lib.mkIf config.mods.scripts.changeBrightness ( + pkgs.writeShellScriptBin "changeBrightness" '' set_brightness() { brightnessctl set "$1" CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') @@ -41,8 +41,8 @@ fi '' )) - (lib.mkIf config.mods.scripts.audio-control ( - pkgs.writeShellScriptBin "audio-control" '' + (lib.mkIf config.mods.scripts.audioControl ( + pkgs.writeShellScriptBin "audioControl" '' ncspot() { NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n') CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') diff --git a/modules/programs/starship.nix b/modules/programs/starship.nix index 04f877e..f4a5def 100644 --- a/modules/programs/starship.nix +++ b/modules/programs/starship.nix @@ -17,7 +17,7 @@ Enables starship prompt ''; }; - use_default_prompt = lib.mkOption { + useDefaultPrompt = lib.mkOption { default = true; example = false; type = lib.types.bool; @@ -25,7 +25,7 @@ Enables preconfigured prompt ''; }; - custom_prompt = lib.mkOption { + customPrompt = lib.mkOption { default = { }; example = { }; type = with lib.types; attrsOf anything; @@ -49,9 +49,9 @@ { enable = true; interactiveOnly = true; - presets = lib.mkIf config.mods.starship.use_default_prompt [ "pastel-powerline" ]; + presets = lib.mkIf config.mods.starship.useDefaultPrompt [ "pastel-powerline" ]; settings = - lib.mkIf config.mods.starship.use_default_prompt { + lib.mkIf config.mods.starship.useDefaultPrompt { # 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"; @@ -170,7 +170,7 @@ format = "[ $time ]($style)"; }; } - // config.mods.starship.custom_prompt; + // config.mods.starship.customPrompt; }; } ); From 3adbcfab59211c0a6b7879aa7a0c65b115425e5c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 13 Sep 2024 17:56:22 +0200 Subject: [PATCH 143/330] Add vscodium config --- home/themes/default.nix | 111 ++---------------------------------- home/themes/oxiced.nix | 36 ++++++++++++ home/themes/qt.nix | 109 +++++++++++++++++++++++++++++++++++ modules/programs/coding.nix | 23 +++++++- 4 files changed, 170 insertions(+), 109 deletions(-) create mode 100644 home/themes/oxiced.nix create mode 100644 home/themes/qt.nix diff --git a/home/themes/default.nix b/home/themes/default.nix index c0d11db..9f799a7 100644 --- a/home/themes/default.nix +++ b/home/themes/default.nix @@ -1,109 +1,6 @@ { - config, - inputs, - pkgs, - ... -}: -let - username = config.conf.username; - # at time of using this here, stylix might not be evaluated yet - # hence ensure it is by using base16 mkSchemeAttrs - base16 = pkgs.callPackage inputs.base16.lib { }; - scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); - # active_colors=#ffc0caf5, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5 - # disabled_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d - # inactive_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d - color = '' - [ColorScheme] - active_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} - disabled_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} - inactive_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} - ''; - qss = '' - QTabBar::tab:selected { - color: palette(highlight); - } - QMenuBar, QMenu, QToolBar, QStatusBar, QFrame, QScrollBar { - 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}"; - }; - 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=xdgdesktopportal - 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" - - [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) - - [Troubleshooting] - force_raster_widgets=1 - ignored_applications=@Invalid() - ''; - }; - xdg.configFile."qt6ct/qt6ct.conf" = { - text = '' - [Appearance] - color_scheme_path=/home/${username}/.config/qt6ct/colors/tokyonight.conf - custom_palette=true - standard_dialogs=xdgdesktopportal - style=Breeze - - [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 - - [Troubleshooting] - force_raster_widgets=1 - ignored_applications=@Invalid() - ''; - }; + imports = [ + ./qt.nix + ./oxiced.nix + ]; } diff --git a/home/themes/oxiced.nix b/home/themes/oxiced.nix new file mode 100644 index 0000000..fbb79de --- /dev/null +++ b/home/themes/oxiced.nix @@ -0,0 +1,36 @@ +{ + config, + inputs, + pkgs, + ... +}: +let + username = config.conf.username; + # at time of using this here, stylix might not be evaluated yet + # hence ensure it is by using base16 mkSchemeAttrs + base16 = pkgs.callPackage inputs.base16.lib { }; + scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); +in +{ + xdg.configFile."oxiced/theme.toml" = { + source = (pkgs.formats.toml { }).generate "oxiced" { + name = scheme.scheme; + base00 = scheme.base00; + base01 = scheme.base01; + base02 = scheme.base02; + base03 = scheme.base03; + base04 = scheme.base04; + base05 = scheme.base05; + base06 = scheme.base06; + base07 = scheme.base07; + base08 = scheme.base08; + base09 = scheme.base09; + base0a = scheme.base0A; + base0b = scheme.base0B; + base0c = scheme.base0C; + base0d = scheme.base0D; + base0e = scheme.base0E; + base0f = scheme.base0F; + }; + }; +} diff --git a/home/themes/qt.nix b/home/themes/qt.nix new file mode 100644 index 0000000..c0d11db --- /dev/null +++ b/home/themes/qt.nix @@ -0,0 +1,109 @@ +{ + config, + inputs, + pkgs, + ... +}: +let + username = config.conf.username; + # at time of using this here, stylix might not be evaluated yet + # hence ensure it is by using base16 mkSchemeAttrs + base16 = pkgs.callPackage inputs.base16.lib { }; + scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); + # active_colors=#ffc0caf5, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5 + # disabled_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d + # inactive_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d + color = '' + [ColorScheme] + active_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} + disabled_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} + inactive_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} + ''; + qss = '' + QTabBar::tab:selected { + color: palette(highlight); + } + QMenuBar, QMenu, QToolBar, QStatusBar, QFrame, QScrollBar { + 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}"; + }; + 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=xdgdesktopportal + 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" + + [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) + + [Troubleshooting] + force_raster_widgets=1 + ignored_applications=@Invalid() + ''; + }; + xdg.configFile."qt6ct/qt6ct.conf" = { + text = '' + [Appearance] + color_scheme_path=/home/${username}/.config/qt6ct/colors/tokyonight.conf + custom_palette=true + standard_dialogs=xdgdesktopportal + style=Breeze + + [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 + + [Troubleshooting] + force_raster_widgets=1 + ignored_applications=@Invalid() + ''; + }; +} diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index bf39d7d..a4743e6 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -32,6 +32,22 @@ Enables jetbrains toolbox. ''; }; + vscodium = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Enables vscodium. + ''; + }; + extensions = lib.mkOption { + default = [ ]; + example = [ ]; + type = with lib.types; listOf package; + description = "Extensions to be installed"; + }; + }; useDefaultPackages = lib.mkOption { default = true; example = false; @@ -394,8 +410,6 @@ d-spy tmux tmate - #fallback - vscodium ]; font_family = "${config.mods.stylix.fonts.monospace.name}"; in @@ -405,6 +419,11 @@ enable = true; colorscheme = config.mods.stylix.colorscheme; }; + programs.vscode = lib.mkIf config.mods.coding.vscodium.enable { + enable = true; + package = pkgs.vscodium; + extensions = config.mods.coding.vscodium.extensions; + }; xdg.configFile."neovide/config.toml" = lib.mkIf config.mods.coding.dashvim { source = (pkgs.formats.toml { }).generate "neovide" { font = { From 8ba687edc15c472d3b7f176aea5ec16fd621adfa Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 15 Sep 2024 00:23:02 +0200 Subject: [PATCH 144/330] Sops: Add more configuration --- modules/programs/keepassxc.nix | 8 ++++---- modules/programs/sops.nix | 20 +++++++++++++++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/modules/programs/keepassxc.nix b/modules/programs/keepassxc.nix index 6bff531..4dda211 100644 --- a/modules/programs/keepassxc.nix +++ b/modules/programs/keepassxc.nix @@ -22,10 +22,10 @@ cache_config = lib.mkOption { default = '' [General] - LastDatabases=/home/${config.conf.username}/Music/Passwords.kdbx - LastActiveDatabase=/home/${config.conf.username}/Music/Passwords.kdbx - LastOpenedDatabases=/home/${config.conf.username}/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) + LastDatabases=/home/${config.conf.username}/pws/Passwords.kdbx + LastActiveDatabase=/home/${config.conf.username}/pws/Passwords.kdbx + LastOpenedDatabases=/home/${config.conf.username}/pws/Passwords.kdbx + LastKeyFiles=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0>\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0p\0w\0s\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>\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0p\0w\0s\0/\0l\0o\0g\0i\0n\0_\0k\0\x65\0y\0.\0k\0\x65\0y\0x) ''; example = ""; type = lib.types.lines; diff --git a/modules/programs/sops.nix b/modules/programs/sops.nix index b4b9657..452a9a1 100644 --- a/modules/programs/sops.nix +++ b/modules/programs/sops.nix @@ -26,6 +26,23 @@ type = with lib.types; attrsOf anything; description = "secrets for sops"; }; + sopsPath = lib.mkOption { + default = root + /secrets/secrets.yaml; + example = "/your/path"; + type = + with lib.types; + oneOf [ + string + path + ]; + description = "sops secrets path"; + }; + validateSopsFile = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Whether to validate the sops file -> set this to false when using full paths"; + }; }; config = lib.mkIf config.mods.sops.enable ( lib.optionalAttrs (options ? home.packages) { @@ -35,7 +52,8 @@ home = "~/.gnupg"; sshKeyPaths = [ ]; }; - defaultSopsFile = root + /secrets/secrets.yaml; + defaultSopsFile = config.mods.sops.sopsPath; + validateSopsFiles = config.mods.sops.validateSopsFile; secrets = config.mods.sops.secrets; }; From f2055e0d10c4f5c29bfb475b57cb68d67cda5597 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 15 Sep 2024 22:05:26 +0200 Subject: [PATCH 145/330] Rename string type to str --- modules/programs/sops.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/sops.nix b/modules/programs/sops.nix index 452a9a1..726bd9c 100644 --- a/modules/programs/sops.nix +++ b/modules/programs/sops.nix @@ -32,7 +32,7 @@ type = with lib.types; oneOf [ - string + str path ]; description = "sops secrets path"; From 531e37fbe395eabfea6adffc3cb50c09f0393775 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 21 Sep 2024 14:11:35 +0200 Subject: [PATCH 146/330] KDE specific themeing because fun --- home/themes/default.nix | 1 + home/themes/kdeglobals.nix | 259 ++++++++++++++++++++++++++++++ home/themes/qt.nix | 51 ++++++ modules/programs/basePackages.nix | 3 + modules/programs/default.nix | 1 + modules/programs/docker.nix | 32 ++++ 6 files changed, 347 insertions(+) create mode 100644 home/themes/kdeglobals.nix create mode 100644 modules/programs/docker.nix diff --git a/home/themes/default.nix b/home/themes/default.nix index 9f799a7..1e091a9 100644 --- a/home/themes/default.nix +++ b/home/themes/default.nix @@ -1,6 +1,7 @@ { imports = [ ./qt.nix + ./kdeglobals.nix ./oxiced.nix ]; } diff --git a/home/themes/kdeglobals.nix b/home/themes/kdeglobals.nix new file mode 100644 index 0000000..1a7f217 --- /dev/null +++ b/home/themes/kdeglobals.nix @@ -0,0 +1,259 @@ +# This is ABSOLUTE GARGABE, KDE srsly, remove this! +# props to catppuccin mocha for sparing me from doing this manually: https://github.com/catppuccin/kde/blob/main/Resources/Base.colors +{ + pkgs, + config, + lib, + inputs, + ... +}: +let + base16 = pkgs.callPackage inputs.base16.lib { }; + + baseScheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); + power = + number: powerIndex: + if powerIndex == 1 then + number + else if powerIndex == 0 then + 1 + else + number * power number (powerIndex - 1); + + lookupTable = powerIndex: { + "0" = 0 * (power 16 powerIndex); + "1" = 1 * (power 16 powerIndex); + "2" = 2 * (power 16 powerIndex); + "3" = 3 * (power 16 powerIndex); + "4" = 4 * (power 16 powerIndex); + "5" = 5 * (power 16 powerIndex); + "6" = 6 * (power 16 powerIndex); + "7" = 7 * (power 16 powerIndex); + "8" = 8 * (power 16 powerIndex); + "9" = 9 * (power 16 powerIndex); + "a" = 10 * (power 16 powerIndex); + "b" = 11 * (power 16 powerIndex); + "c" = 12 * (power 16 powerIndex); + "d" = 13 * (power 16 powerIndex); + "e" = 14 * (power 16 powerIndex); + "f" = 15 * (power 16 powerIndex); + }; + + convertHex = + hexChars: + recombineColors [ + (convertColor (lib.lists.take 2 hexChars)) + (convertColor (lib.lists.take 2 (lib.lists.drop 2 hexChars))) + (convertColor (lib.lists.take 2 (lib.lists.drop 4 hexChars))) + ]; + + convertColor = + color: (lookupTable 1).${(lib.lists.head color)} + (lookupTable 0).${(lib.lists.last color)}; + recombineColors = colors: lib.lists.foldr (a: b: (toString a) + "," + (toString b)) "end" colors; + + scheme = { + base00 = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base00) + ); + base01 = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base01) + ); + base02 = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base02) + ); + base03 = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base03) + ); + base04 = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base04) + ); + base05 = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base05) + ); + base06 = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base06) + ); + base07 = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base07) + ); + base08 = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base08) + ); + base09 = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base09) + ); + base0A = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base0A) + ); + base0B = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base0B) + ); + base0C = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base0C) + ); + base0D = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base0D) + ); + base0E = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base0E) + ); + base0F = lib.strings.removeSuffix ",end" ( + convertHex (lib.strings.stringToCharacters baseScheme.base0F) + ); + }; + +in +{ + # temp + # crust -> surface1 + # subtext0 -> surface2 + # accentColor -> lavender + xdg.configFile."kdeglobals" = { + text = '' + [ColorEffects:Disabled] + Color=${scheme.base01} + ColorAmount=0.30000000000000004 + ColorEffect=2 + ContrastAmount=0.1 + ContrastEffect=0 + IntensityAmount=-1 + IntensityEffect=0 + + [ColorEffects:Inactive] + ChangeSelectionColor=true + Color=${scheme.base01} + ColorAmount=0.5 + ColorEffect=3 + ContrastAmount=0 + ContrastEffect=0 + Enable=true + IntensityAmount=0 + IntensityEffect=0 + + [Colors:Button] + BackgroundAlternate=${scheme.base07} + BackgroundNormal=${scheme.base02} + DecorationFocus=${scheme.base07} + DecorationHover=${scheme.base02} + ForegroundActive=${scheme.base09} + ForegroundInactive=${scheme.base04} + ForegroundLink=${scheme.base07} + ForegroundNegative=${scheme.base08} + ForegroundNeutral=${scheme.base0A} + ForegroundNormal=${scheme.base05} + ForegroundPositive=${scheme.base0B} + ForegroundVisited=${scheme.base0E} + + + [Colors:Complementary] + BackgroundAlternate=${scheme.base03} + BackgroundNormal=${scheme.base00} + DecorationFocus=${scheme.base07} + DecorationHover=${scheme.base02} + ForegroundActive=${scheme.base09} + ForegroundInactive=${scheme.base04} + ForegroundLink=${scheme.base07} + ForegroundNegative=${scheme.base08} + ForegroundNeutral=${scheme.base0A} + ForegroundNormal=${scheme.base05} + ForegroundPositive=${scheme.base0B} + ForegroundVisited=${scheme.base0E} + + + [Colors:Header] + BackgroundAlternate=${scheme.base03} + BackgroundNormal=${scheme.base00} + DecorationFocus=${scheme.base07} + DecorationHover=${scheme.base02} + ForegroundActive=${scheme.base09} + ForegroundInactive=${scheme.base04} + ForegroundLink=${scheme.base07} + ForegroundNegative=${scheme.base08} + ForegroundNeutral=${scheme.base0A} + ForegroundNormal=${scheme.base05} + ForegroundPositive=${scheme.base0B} + ForegroundVisited=${scheme.base0E} + + + [Colors:Selection] + BackgroundAlternate=${scheme.base07} + BackgroundNormal=${scheme.base07} + DecorationFocus=${scheme.base07} + DecorationHover=${scheme.base02} + ForegroundLink=${scheme.base07} + ForegroundInactive=${scheme.base00} + ForegroundActive=${scheme.base09} + ForegroundLink=${scheme.base07} + ForegroundNegative=${scheme.base08} + ForegroundNeutral=${scheme.base0A} + ForegroundNormal=${scheme.base03} + ForegroundPositive=${scheme.base0B} + ForegroundVisited=${scheme.base0E} + + + [Colors:Tooltip] + BackgroundAlternate=27,25,35 + BackgroundNormal=${scheme.base01} + DecorationFocus=${scheme.base07} + DecorationHover=${scheme.base02} + ForegroundActive=${scheme.base09} + ForegroundInactive=${scheme.base04} + ForegroundLink=${scheme.base07} + ForegroundNegative=${scheme.base08} + ForegroundNeutral=${scheme.base0A} + ForegroundNormal=${scheme.base05} + ForegroundPositive=${scheme.base0B} + ForegroundVisited=${scheme.base0E} + + + [Colors:View] + BackgroundAlternate=${scheme.base00} + BackgroundNormal=${scheme.base01} + DecorationFocus=${scheme.base07} + DecorationHover=${scheme.base02} + ForegroundActive=${scheme.base09} + ForegroundInactive=${scheme.base04} + ForegroundLink=${scheme.base07} + ForegroundNegative=${scheme.base08} + ForegroundNeutral=${scheme.base0A} + ForegroundNormal=${scheme.base05} + ForegroundPositive=${scheme.base0B} + ForegroundVisited=${scheme.base0E} + + + [Colors:Window] + BackgroundAlternate=${scheme.base03} + BackgroundNormal=${scheme.base00} + DecorationFocus=${scheme.base07} + DecorationHover=${scheme.base02} + ForegroundActive=${scheme.base09} + ForegroundInactive=${scheme.base04} + ForegroundLink=${scheme.base07} + ForegroundNegative=${scheme.base08} + ForegroundNeutral=${scheme.base0A} + ForegroundNormal=${scheme.base05} + ForegroundPositive=${scheme.base0B} + ForegroundVisited=${scheme.base0E} + + + [General] + ColorScheme=CustomBase16Nix + Name=CustomBase16Nix + accentActiveTitlebar=false + shadeSortColumn=true + + + [KDE] + contrast=4 + + + [WM] + activeBackground=${scheme.base01} + activeBlend=${scheme.base05} + activeForeground=${scheme.base05} + inactiveBackground=${scheme.base03} + inactiveBlend=${scheme.base04} + inactiveForeground=${scheme.base04} + ''; + }; +} diff --git a/home/themes/qt.nix b/home/themes/qt.nix index c0d11db..5f77b89 100644 --- a/home/themes/qt.nix +++ b/home/themes/qt.nix @@ -27,6 +27,31 @@ let border: none; } ''; + + ## test + #cfg = config.stylix.targets.qt; + kvconfig = config.lib.stylix.colors { + template = ./kvconfig.mustache; + extension = ".kvconfig"; + }; + svg = config.lib.stylix.colors { + template = ./kvantum-svg.mustache; + extension = "svg"; + }; + kvantumPackage = pkgs.runCommandLocal "base16-kvantum" { } '' + directory="$out/share/Kvantum/Base16Kvantum" + mkdir --parents "$directory" + cat ${kvconfig} >>"$directory/Base16Kvantum.kvconfig" + cat ${svg} >>"$directory/Base16Kvantum.svg" + ''; + + xdg.configFile."Kvantum/kvantum.kvconfig".source = + (pkgs.formats.ini { }).generate "kvantum.kvconfig" + { + General.theme = "Base16Kvantum"; + }; + + xdg.configFile."Kvantum/Base16Kvantum".source = "${kvantumPackage}/share/Kvantum/Base16Kvantum"; in { xdg.configFile."qt5ct/colors/tokyonight.conf" = { @@ -38,6 +63,32 @@ in xdg.configFile."qt5ct/qss/tab.qss" = { text = "${qss}"; }; + qt = { + enable = true; + style.package = pkgs.libsForQt5.breeze-qt5; + style.name = "breeze-dark"; + }; + + # ## test + # xdg.configFile."Kvantum/kvantum.kvconfig".source = (pkgs.formats.ini {}).generate "kvantum.kvconfig" { + # General.theme = "Base16Kvantum"; + # }; + + # xdg.configFile."Kvantum/Base16Kvantum".source = "${kvantumPackage}/share/Kvantum/Base16Kvantum"; + + # xdg.configFile."qt5ct/qt5ct.conf".text = '' + # [Appearance] + # style=kvantum + # ''; + + # #icon_theme=${cfg.iconThemeName} + + # xdg.configFile."qt6ct/qt6ct.conf".text = '' + # [Appearance] + # style=kvantum + # ''; + # #icon_theme=${cfg.iconThemeName} + xdg.configFile."qt5ct/qt5ct.conf" = { text = '' [Appearance] diff --git a/modules/programs/basePackages.nix b/modules/programs/basePackages.nix index cd0a501..5fa0aff 100644 --- a/modules/programs/basePackages.nix +++ b/modules/programs/basePackages.nix @@ -65,6 +65,9 @@ icon-library kdePackages.breeze-icons kdePackages.breeze + libsForQt5.breeze-qt5 + kdePackages.qtstyleplugin-kvantum + libsForQt5.qtstyleplugin-kvantum libadwaita libxkbcommon nixfmt-rfc-style diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 7c7d8a9..0b74286 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -27,6 +27,7 @@ ./oxi ./piper.nix ./podman.nix + ./docker.nix ./printing.nix ./scripts.nix ./sddm.nix diff --git a/modules/programs/docker.nix b/modules/programs/docker.nix new file mode 100644 index 0000000..7045050 --- /dev/null +++ b/modules/programs/docker.nix @@ -0,0 +1,32 @@ +{ + lib, + config, + options, + pkgs, + ... +}: +{ + # TODO make exclusive with docker + options.mods.docker = { + enable = lib.mkOption { + default = false; + example = false; + type = lib.types.bool; + description = "Enables and configures docker"; + }; + }; + config = lib.mkIf config.mods.docker.enable ( + lib.optionalAttrs (options ? virtualisation.docker) { + environment.systemPackages = with pkgs; [ + docker-compose + dive + ]; + virtualisation = { + containers.enable = true; + docker = { + enable = true; + }; + }; + } + ); +} From 9bc0491caaac18bcace7b87b0a020d2bdefba31d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 24 Sep 2024 18:12:39 +0200 Subject: [PATCH 147/330] Include new oxipaste --- flake.lock | 353 ++++++++++--------------- modules/programs/hyprland/hyprland.nix | 2 +- 2 files changed, 147 insertions(+), 208 deletions(-) diff --git a/flake.lock b/flake.lock index 3633057..600d6fd 100644 --- a/flake.lock +++ b/flake.lock @@ -40,11 +40,11 @@ ] }, "locked": { - "lastModified": 1724273991, - "narHash": "sha256-+aUSOXKGpS5CRm1oTitgNAr05ThQNbKIXalZHl3nC6Y=", + "lastModified": 1726665257, + "narHash": "sha256-rEzEZtd3iyVo5RJ1OGujOlnywNf3gsrOnjAn1NLciD4=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "9a3161ad4c78dc420d1cbb3aae638222608c7de4", + "rev": "752d0fbd141fabb5a1e7f865199b80e6e76f8d8e", "type": "github" }, "original": { @@ -106,11 +106,11 @@ "base16-helix": { "flake": false, "locked": { - "lastModified": 1720809814, - "narHash": "sha256-numb3xigRGnr/deF7wdjBwVg7fpbTH7reFDkJ75AJkY=", + "lastModified": 1725860795, + "narHash": "sha256-Z2o8VBPW3I+KKTSfe25kskz0EUj7MpUh8u355Z1nVsU=", "owner": "tinted-theming", "repo": "base16-helix", - "rev": "34f41987bec14c0f3f6b2155c19787b1f6489625", + "rev": "7f795bf75d38e0eea9fed287264067ca187b88a9", "type": "github" }, "original": { @@ -218,11 +218,11 @@ "nixvim": "nixvim" }, "locked": { - "lastModified": 1724509876, - "narHash": "sha256-SvtppTW041MCVGmhKu8lsEbzVXwerLEIDcizdY0ZqEI=", + "lastModified": 1727194342, + "narHash": "sha256-B4ZE7B+YLK0l+dqViKH+IG1h02UmSqirgxgIV5uIlqQ=", "owner": "DashieTM", "repo": "DashVim", - "rev": "309544615a01e9aa242ca71bff58f503273345ea", + "rev": "09b7a5456e3b882b5c989b7e21547db66ce8546f", "type": "github" }, "original": { @@ -351,11 +351,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1722555600, - "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", + "lastModified": 1726153070, + "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", + "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", "type": "github" }, "original": { @@ -373,11 +373,11 @@ ] }, "locked": { - "lastModified": 1719994518, - "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", + "lastModified": 1726153070, + "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", + "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", "type": "github" }, "original": { @@ -478,11 +478,11 @@ ] }, "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "lastModified": 1722555600, + "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", "type": "github" }, "original": { @@ -639,24 +639,6 @@ } }, "flake-utils_8": { - "inputs": { - "systems": "systems_10" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_9": { "inputs": { "systems": [ "stylix", @@ -729,11 +711,11 @@ ] }, "locked": { - "lastModified": 1721042469, - "narHash": "sha256-6FPUl7HVtvRHCCBQne7Ylp4p+dpP3P/OYuzjztZ4s70=", + "lastModified": 1725513492, + "narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "f451c19376071a90d8c58ab1a953c6e9840527fd", + "rev": "7570de7b9b504cfe92025dd1be797bf546f66528", "type": "github" }, "original": { @@ -791,11 +773,11 @@ ] }, "locked": { - "lastModified": 1722407237, - "narHash": "sha256-wcpVHUc2nBSSgOM7UJSpcRbyus4duREF31xlzHV5T+A=", + "lastModified": 1726357542, + "narHash": "sha256-p4OrJL2weh0TRtaeu1fmNYP6+TOp/W2qdaIJxxQay4c=", "owner": "nix-community", "repo": "home-manager", - "rev": "58cef3796271aaeabaed98884d4abaab5d9d162d", + "rev": "e524c57b1fa55d6ca9d8354c6ce1e538d2a1f47f", "type": "github" }, "original": { @@ -811,11 +793,11 @@ ] }, "locked": { - "lastModified": 1724435763, - "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=", + "lastModified": 1727111745, + "narHash": "sha256-EYLvFRoTPWtD+3uDg2wwQvlz88OrIr3zld+jFE5gDcY=", "owner": "nix-community", "repo": "home-manager", - "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be", + "rev": "21c021862fa696c8199934e2153214ab57150cb6", "type": "github" }, "original": { @@ -832,11 +814,11 @@ ] }, "locked": { - "lastModified": 1715930644, - "narHash": "sha256-W9pyM3/vePxrffHtzlJI6lDS3seANQ+Nqp+i58O46LI=", + "lastModified": 1724435763, + "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=", "owner": "nix-community", "repo": "home-manager", - "rev": "e3ad5108f54177e6520535768ddbf1e6af54b59d", + "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be", "type": "github" }, "original": { @@ -905,11 +887,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1724442134, - "narHash": "sha256-RpA3GmcBvd6DLssIWfYKdDfiumLv8w4KIhDaI+//6ls=", + "lastModified": 1727173505, + "narHash": "sha256-DaiWKEntVBrgy1OZEGW3izIfzyIr1jav/Jpo9tqL4EU=", "ref": "refs/heads/main", - "rev": "688fe5c14781c63a1db23d4d02bf239283068ff6", - "revCount": 5131, + "rev": "00c862686354d139a53222d41a1c80d698a50c43", + "revCount": 5253, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -963,11 +945,11 @@ ] }, "locked": { - "lastModified": 1724174162, - "narHash": "sha256-fOOBLwil6M9QWMCiSULwjMQzrXhHXUnEqmjHX5ZHeVI=", + "lastModified": 1725997860, + "narHash": "sha256-d/rZ/fHR5l1n7PeyLw0StWMNLXVU9c4HFyfskw568so=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "16e5c9465f04477d8a3dd48a0a26bf437986336c", + "rev": "dfeb5811dd6485490cce18d6cc1e38a055eea876", "type": "github" }, "original": { @@ -988,11 +970,11 @@ ] }, "locked": { - "lastModified": 1722869141, - "narHash": "sha256-0KU4qhyMp441qfwbirNg3+wbm489KnEjXOz2I/RbeFs=", + "lastModified": 1726874949, + "narHash": "sha256-PNnIpwGqpTvMU3N2r0wMQwK1E+t4Bb5fbJwblQvr+80=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "0252fd13e78e60fb0da512a212e56007515a49f7", + "rev": "d97af4f6bd068c03a518b597675e598f57ea2291", "type": "github" }, "original": { @@ -1013,11 +995,11 @@ ] }, "locked": { - "lastModified": 1721324119, - "narHash": "sha256-SOOqIT27/X792+vsLSeFdrNTF+OSRp5qXv6Te+fb2Qg=", + "lastModified": 1726840673, + "narHash": "sha256-HIPEXyRRVZoqD6U+lFS1B0tsIU7p83FaB9m7KT/x6mQ=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "a048a6cb015340bd82f97c1f40a4b595ca85cc30", + "rev": "b68dab23fc922eae99306988133ee80a40b39ca5", "type": "github" }, "original": { @@ -1075,11 +1057,11 @@ ] }, "locked": { - "lastModified": 1722082646, - "narHash": "sha256-od8dBWVP/ngg0cuoyEl/w9D+TCNDj6Kh4tr151Aax7w=", + "lastModified": 1726188813, + "narHash": "sha256-Vop/VRi6uCiScg/Ic+YlwsdIrLabWUJc57dNczp0eBc=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "0413754b3cdb879ba14f6e96915e5fdf06c6aab6", + "rev": "21fe31f26473c180390cfa81e3ea81aca0204c80", "type": "github" }, "original": { @@ -1121,23 +1103,23 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1722555339, - "narHash": "sha256-uFf2QeW7eAHlYXuDktm9c25OxOyCoUOQmh5SZ9amE5Q=", + "lastModified": 1725233747, + "narHash": "sha256-Ss8QWLXdr2JCBPcYChJhz4xJm+h/xjl4G0c0XlP6a74=", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/a5d394176e64ab29c852d03346c1fc9b0b7d33eb.tar.gz" + "url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz" }, "original": { "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/a5d394176e64ab29c852d03346c1fc9b0b7d33eb.tar.gz" + "url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz" } }, "nixpkgs-stable": { "locked": { - "lastModified": 1721524707, - "narHash": "sha256-5NctRsoE54N86nWd0psae70YSLfrOek3Kv1e8KoXe/0=", + "lastModified": 1725762081, + "narHash": "sha256-vNv+aJUW5/YurRy1ocfvs4q/48yVESwlC/yHzjkZSP8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "556533a23879fc7e5f98dd2e0b31a6911a213171", + "rev": "dc454045f5b5d814e5862a6d057e7bb5c29edc05", "type": "github" }, "original": { @@ -1197,11 +1179,11 @@ }, "nixpkgs_13": { "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "lastModified": 1723637854, + "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", "type": "github" }, "original": { @@ -1213,53 +1195,37 @@ }, "nixpkgs_14": { "locked": { - "lastModified": 1716190602, - "narHash": "sha256-xYRimrR0duWvokWQEvB87bSsICeCvvX9DxpUOzCfsDE=", + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5a5ac83292c7842072318f57d68a48474f8bd34d", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_15": { "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_16": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_17": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -1275,7 +1241,7 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_17": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1291,7 +1257,7 @@ "type": "github" } }, - "nixpkgs_19": { + "nixpkgs_18": { "locked": { "lastModified": 1716948383, "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", @@ -1307,23 +1273,7 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1722185531, - "narHash": "sha256-veKR07psFoJjINLC8RK4DiLniGGMgF3QMlS4tb74S6k=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "52ec9ac3b12395ad677e8b62106f0b98c1f8569d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_20": { + "nixpkgs_19": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1339,13 +1289,29 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_2": { "locked": { - "lastModified": 1721466660, - "narHash": "sha256-pFSxgSZqZ3h+5Du0KvEL1ccDZBwu4zvOil1zzrPNb3c=", + "lastModified": 1726243404, + "narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6e14bbce7bea6c4efd7adfa88a40dac750d80100", + "rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_20": { + "locked": { + "lastModified": 1725534445, + "narHash": "sha256-Yd0FK9SkWy+ZPuNqUgmVPXokxDgMJoGuNpMEtkfcf84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9bb1e7571aadf31ddb4af77fc64b2d59580f9a39", "type": "github" }, "original": { @@ -1355,13 +1321,13 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_21": { "locked": { - "lastModified": 1714912032, - "narHash": "sha256-clkcOIkg8G4xuJh+1onLG4HPMpbtzdLv4rHxFzgsH9c=", + "lastModified": 1725194671, + "narHash": "sha256-tLGCFEFTB5TaOKkpfw3iYT9dnk4awTP/q4w+ROpMfuw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ee4a6e0f566fe5ec79968c57a9c2c3c25f2cf41d", + "rev": "b833ff01a0d694b910daca6e2ff4a3f26dee478c", "type": "github" }, "original": { @@ -1389,11 +1355,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1724224976, - "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=", + "lastModified": 1726755586, + "narHash": "sha256-PmUr/2GQGvFTIJ6/Tvsins7Q43KTMvMFhvG6oaYK+Wk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62", + "rev": "c04d5652cfa9742b1d519688f65d1bbccea9eb7e", "type": "github" }, "original": { @@ -1435,11 +1401,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1724224976, - "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=", + "lastModified": 1726937504, + "narHash": "sha256-bvGoiQBvponpZh8ClUcmJ6QnsNKw0EMrCQJARK3bI1c=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62", + "rev": "9357f4f23713673f310988025d9dc261c20e70c6", "type": "github" }, "original": { @@ -1494,11 +1460,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1722492816, - "narHash": "sha256-aZe7oSm/+GM1whS6bxZy+DJgbcy8rDIkygBA0owCvmU=", + "lastModified": 1726676531, + "narHash": "sha256-i8Pbd7JszwuCb0HqzAPypv2ytdcsFeAMFqbrmLaN4BE=", "owner": "nix-community", "repo": "nixvim", - "rev": "820f8d58eafd7121989fea3ae9e71f29699d856b", + "rev": "9307b201a3dc57d5b71ded4f897ea9d096544877", "type": "github" }, "original": { @@ -1509,11 +1475,11 @@ }, "nur": { "locked": { - "lastModified": 1724486206, - "narHash": "sha256-AktI2GKW4DnVwj3WS+mTmYjtL2qug8H46IN0Rtf4O+Q=", + "lastModified": 1727193941, + "narHash": "sha256-9WigVCIeVk1f/8NRcrv84BN6RfIJln4dPUhe+3pUBYg=", "owner": "nix-community", "repo": "nur", - "rev": "8feee883ff50c836e711bb7e08f91b34f31feb84", + "rev": "0a59305e9f8bad316931d4edd608847cbf6efe7b", "type": "github" }, "original": { @@ -1532,11 +1498,11 @@ ] }, "locked": { - "lastModified": 1722144272, - "narHash": "sha256-olZbfaEdd+zNPuuyYcYGaRzymA9rOmth8yXOlVm+LUs=", + "lastModified": 1726392886, + "narHash": "sha256-9RtOuG7V8KG8IU8nZje5EQ1WSM/inr7+zb3tAgTiHDM=", "owner": "NuschtOS", "repo": "search", - "rev": "16565307c267ec219c2b5d3494ba66df08e7d403", + "rev": "97d34b70deed4878fcb2449ac89dab717d72efa1", "type": "github" }, "original": { @@ -1607,15 +1573,14 @@ "oxipaste": { "inputs": { "flake-parts": "flake-parts_8", - "nixpkgs": "nixpkgs_13", - "rust-overlay": "rust-overlay_4" + "nixpkgs": "nixpkgs_13" }, "locked": { - "lastModified": 1716235097, - "narHash": "sha256-kTsSNciMnp3y/QOPseB/QlhRqVxrm7teRCMl05OIiBs=", + "lastModified": 1727193139, + "narHash": "sha256-o7bXBcE9+k8rzUh9mQ7lJs27uv7uVMWtFygvUjNa6Ik=", "owner": "DashieTM", "repo": "OxiPaste", - "rev": "3f494c1a3dd093e3c5761520554977a9dec33a3a", + "rev": "bad52f1cb1ee8eac996b23786fa2f1b195ac4c6f", "type": "github" }, "original": { @@ -1627,8 +1592,8 @@ "oxishut": { "inputs": { "flake-parts": "flake-parts_9", - "nixpkgs": "nixpkgs_15", - "rust-overlay": "rust-overlay_5" + "nixpkgs": "nixpkgs_14", + "rust-overlay": "rust-overlay_4" }, "locked": { "lastModified": 1716235696, @@ -1647,8 +1612,8 @@ "reset": { "inputs": { "flake-parts": "flake-parts_10", - "nixpkgs": "nixpkgs_17", - "rust-overlay": "rust-overlay_6" + "nixpkgs": "nixpkgs_16", + "rust-overlay": "rust-overlay_5" }, "locked": { "lastModified": 1718284469, @@ -1667,8 +1632,8 @@ "reset-plugins": { "inputs": { "flake-parts": "flake-parts_11", - "nixpkgs": "nixpkgs_19", - "rust-overlay": "rust-overlay_7" + "nixpkgs": "nixpkgs_18", + "rust-overlay": "rust-overlay_6" }, "locked": { "lastModified": 1718300175, @@ -1771,7 +1736,7 @@ "rust-overlay_4": { "inputs": { "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_14" + "nixpkgs": "nixpkgs_15" }, "locked": { "lastModified": 1716171463, @@ -1790,7 +1755,7 @@ "rust-overlay_5": { "inputs": { "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_16" + "nixpkgs": "nixpkgs_17" }, "locked": { "lastModified": 1716171463, @@ -1809,26 +1774,7 @@ "rust-overlay_6": { "inputs": { "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_18" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_7": { - "inputs": { - "flake-utils": "flake-utils_8", - "nixpkgs": "nixpkgs_20" + "nixpkgs": "nixpkgs_19" }, "locked": { "lastModified": 1717035469, @@ -1846,15 +1792,15 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_21", + "nixpkgs": "nixpkgs_20", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1723501126, - "narHash": "sha256-N9IcHgj/p1+2Pvk8P4Zc1bfrMwld5PcosVA0nL6IGdE=", + "lastModified": 1726524647, + "narHash": "sha256-qis6BtOOBBEAfUl7FMHqqTwRLB61OL5OFzIsOmRz2J4=", "owner": "Mic92", "repo": "sops-nix", - "rev": "be0eec2d27563590194a9206f551a6f73d52fa34", + "rev": "e2d404a7ea599a013189aa42947f66cede0645c8", "type": "github" }, "original": { @@ -1865,11 +1811,11 @@ }, "stable": { "locked": { - "lastModified": 1724316499, - "narHash": "sha256-Qb9MhKBUTCfWg/wqqaxt89Xfi6qTD3XpTzQ9eXi3JmE=", + "lastModified": 1726969270, + "narHash": "sha256-8fnFlXBgM/uSvBlLWjZ0Z0sOdRBesyNdH0+esxqizGc=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "797f7dc49e0bc7fab4b57c021cdf68f595e47841", + "rev": "23cbb250f3bf4f516a2d0bf03c51a30900848075", "type": "github" }, "original": { @@ -1889,18 +1835,18 @@ "base16-tmux": "base16-tmux", "base16-vim": "base16-vim", "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_9", + "flake-utils": "flake-utils_8", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", - "nixpkgs": "nixpkgs_22", - "systems": "systems_11" + "nixpkgs": "nixpkgs_21", + "systems": "systems_10" }, "locked": { - "lastModified": 1724444244, - "narHash": "sha256-fH1lyJvJjUhZ8xMlmiI18EZNzodDSe74rFuwlZDL0aQ=", + "lastModified": 1727093531, + "narHash": "sha256-hsb1bcUvpMecFHOP5F3LEyOnXiZ+5MikR92irJ8o7iE=", "owner": "danth", "repo": "stylix", - "rev": "d042af478ce87e188139480922a3085218194106", + "rev": "eccb9f2d63f4582b1c1ffe97d806156147aeee5f", "type": "github" }, "original": { @@ -1939,21 +1885,6 @@ "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, @@ -2083,11 +2014,11 @@ ] }, "locked": { - "lastModified": 1722330636, - "narHash": "sha256-uru7JzOa33YlSRwf9sfXpJG+UAV+bnBEYMjrzKrQZFw=", + "lastModified": 1725271838, + "narHash": "sha256-VcqxWT0O/gMaeWTTjf1r4MOyG49NaNxW4GHTO3xuThE=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "768acdb06968e53aa1ee8de207fd955335c754b7", + "rev": "9fb342d14b69aefdf46187f6bb80a4a0d97007cd", "type": "github" }, "original": { @@ -2103,6 +2034,14 @@ "hyprland", "hyprlang" ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], "nixpkgs": [ "hyprland", "nixpkgs" @@ -2113,11 +2052,11 @@ ] }, "locked": { - "lastModified": 1724073926, - "narHash": "sha256-nWlUL43jOFHf+KW6Hqrx+W/r1XdXuDyb0wC/SrHsOu4=", + "lastModified": 1727109343, + "narHash": "sha256-1PFckA8Im7wMSl26okwOKqBZeCFLD3LvZZFaxswDhbY=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "a08ecbbf33598924e93542f737fc6169a26b481e", + "rev": "4adb6c4c41ee5014bfe608123bfeddb26e5f5cea", "type": "github" }, "original": { diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index f1f1bfa..6c90992 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -125,7 +125,7 @@ "$mod SUPER,R,exec,anyrun" "$mod SUPER,G,exec,oxicalc" "$mod SUPER,D,exec,oxishut" - "$mod SUPER,A,exec,oxipaste" + "$mod SUPER,A,exec,oxipaste-iced" "$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" From 10adafe7038ea0c8771f931658f63a0987f4de85 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 26 Sep 2024 10:07:09 +0200 Subject: [PATCH 148/330] Ironbar fix --- modules/programs/hyprland/hyprland.nix | 6 +++--- modules/programs/hyprland/ironbar.nix | 6 +++--- modules/programs/scripts.nix | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 6c90992..3e05a38 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -131,9 +131,9 @@ "$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate" # media keys - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioMute,exec, audio-control mute") - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioLowerVolume,exec, audio-control sink -5%") - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioRaiseVolume,exec, audio-control sink +5%") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioMute,exec, audioControl mute") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioLowerVolume,exec, audioControl sink -5%") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioRaiseVolume,exec, audioControl sink +5%") ",XF86AudioPlay,exec, playerctl play-pause" ",XF86AudioNext,exec, playerctl next" ",XF86AudioPrev,exec, playerctl previous" diff --git a/modules/programs/hyprland/ironbar.nix b/modules/programs/hyprland/ironbar.nix index 03d24e5..81b2711 100644 --- a/modules/programs/hyprland/ironbar.nix +++ b/modules/programs/hyprland/ironbar.nix @@ -237,14 +237,14 @@ in { type = "button"; class = "audio-button"; - label = ""; - on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh bluetooth"; + label = ""; + on_click = (lib.mkIf config.mods.scripts.audioControl "!audioControl bluetooth"); } { type = "button"; class = "audio-button"; label = "󰋋"; - on_click = "!/home/${username}/.config/eww/scripts/audio_control.sh internal"; + on_click = (lib.mkIf config.mods.scripts.audioControl "!audioControl internal"); } ]; class = "audio-button-box"; diff --git a/modules/programs/scripts.nix b/modules/programs/scripts.nix index 5a6ddd1..99a75b0 100644 --- a/modules/programs/scripts.nix +++ b/modules/programs/scripts.nix @@ -17,7 +17,7 @@ default = true; example = false; type = lib.types.bool; - description = "Enables the audio-control script"; + description = "Enables the audioControl script"; }; scripts = lib.mkOption { default = [ ]; From b72d409a5af095806ce24ace4a0c63dbd695ad47 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 29 Sep 2024 12:48:39 +0200 Subject: [PATCH 149/330] Update browsers --- docs/default.nix | 2 +- example/flake.nix | 2 +- flake.lock | 37 +++++++++++- flake.nix | 2 + home/default.nix | 3 +- lib/default.nix | 68 ++++++++++++---------- modules/programs/browser/brave.nix | 23 ++++++++ modules/programs/browser/chromium.nix | 23 ++++++++ modules/programs/browser/default.nix | 8 +++ modules/programs/{ => browser}/firefox.nix | 53 ++++++++++++----- modules/programs/browser/zen.nix | 35 +++++++++++ modules/programs/default.nix | 2 +- modules/programs/homePackages.nix | 39 +++++++++---- modules/programs/hyprland/hyprland.nix | 19 +++++- modules/programs/mime.nix | 13 ++++- 15 files changed, 262 insertions(+), 67 deletions(-) create mode 100644 modules/programs/browser/brave.nix create mode 100644 modules/programs/browser/chromium.nix create mode 100644 modules/programs/browser/default.nix rename modules/programs/{ => browser}/firefox.nix (61%) create mode 100644 modules/programs/browser/zen.nix diff --git a/docs/default.nix b/docs/default.nix index a5a5f8d..42ae80c 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -14,7 +14,7 @@ let summaryAppend = name: '' echo "- [${name}](${name}.md)" >> src/SUMMARY.md ''; - system = (build_systems ../example/.)."example".options; + system = (build_systems { root = ../example/.; })."example".options; makeOptionsDocPrograms = name: pkgs.nixosOptionsDoc { options = system.mods.${name}; }; conf = makeOptionsDoc system.conf; paths = builtins.readDir ../modules/programs; diff --git a/example/flake.nix b/example/flake.nix index def9784..d4c1e09 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -24,7 +24,7 @@ outputs = { ... }@inputs: { - nixosConfigurations = inputs.dashNix.dashNixLib.build_systems ./.; + nixosConfigurations = inputs.dashNix.dashNixLib.build_systems { root = ./.; }; }; nixConfig = { diff --git a/flake.lock b/flake.lock index 600d6fd..56a600b 100644 --- a/flake.lock +++ b/flake.lock @@ -1337,6 +1337,22 @@ "type": "github" } }, + "nixpkgs_22": { + "locked": { + "lastModified": 1726937504, + "narHash": "sha256-bvGoiQBvponpZh8ClUcmJ6QnsNKw0EMrCQJARK3bI1c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9357f4f23713673f310988025d9dc261c20e70c6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_3": { "locked": { "lastModified": 1716330097, @@ -1670,7 +1686,8 @@ "reset-plugins": "reset-plugins", "sops-nix": "sops-nix", "stable": "stable", - "stylix": "stylix" + "stylix": "stylix", + "zen-browser": "zen-browser" } }, "rust-overlay": { @@ -2064,6 +2081,24 @@ "repo": "xdg-desktop-portal-hyprland", "type": "github" } + }, + "zen-browser": { + "inputs": { + "nixpkgs": "nixpkgs_22" + }, + "locked": { + "lastModified": 1727287465, + "narHash": "sha256-XQAf5M593WmxgaXagtkci/H9DA3jSVx1TJk6F3X5VQo=", + "owner": "MarceColl", + "repo": "zen-browser-flake", + "rev": "96f1b5d80bf7360cb77c9b521f388324f18383a0", + "type": "github" + }, + "original": { + "owner": "MarceColl", + "repo": "zen-browser-flake", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 52680f9..2f5bda7 100644 --- a/flake.nix +++ b/flake.nix @@ -28,6 +28,8 @@ url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; }; + zen-browser.url = "github:MarceColl/zen-browser-flake"; + stylix.url = "github:danth/stylix"; base16.url = "github:SenchoPens/base16.nix"; diff --git a/home/default.nix b/home/default.nix index 7d0a2aa..3764e3e 100644 --- a/home/default.nix +++ b/home/default.nix @@ -7,6 +7,7 @@ additionalHomeConfig, homeMods, additionalHomeMods, + additionalInputs, root, ... }: @@ -22,7 +23,7 @@ useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = { - inherit inputs root; + inherit inputs root additionalInputs; }; users.${config.conf.username} = { diff --git a/lib/default.nix b/lib/default.nix index 32910cc..9060867 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -3,35 +3,6 @@ pkgs, self, lib, - additionalMods ? { - nixos = [ ]; - home = [ ]; - }, - mods ? { - nixos = [ - inputs.home-manager.nixosModules.home-manager - inputs.stylix.nixosModules.stylix - ../base - ../home - ../modules - ]; - home = [ - inputs.anyrun.homeManagerModules.default - inputs.ironbar.homeManagerModules.default - inputs.oxicalc.homeManagerModules.default - inputs.oxishut.homeManagerModules.default - inputs.oxinoti.homeManagerModules.default - inputs.oxidash.homeManagerModules.default - inputs.oxipaste.homeManagerModules.default - inputs.hyprdock.homeManagerModules.default - inputs.hyprland.homeManagerModules.default - inputs.reset.homeManagerModules.default - inputs.nix-flatpak.homeManagerModules.nix-flatpak - inputs.sops-nix.homeManagerModules.sops - inputs.dashvim.homeManagerModules.dashvim - ../modules - ]; - }, ... }: { @@ -52,8 +23,7 @@ # Example usage :::{.example} ```nix - nixosConfigurations = - (build_systems [ "nixos" ] ./.); + nixosConfigurations = build_systems { root = ./.; }; ``` ::: */ @@ -65,7 +35,40 @@ # in build_systems = - root: + { + root, + additionalMods ? { + nixos = [ ]; + home = [ ]; + }, + mods ? { + nixos = [ + inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + ../base + ../home + ../modules + ]; + home = [ + inputs.anyrun.homeManagerModules.default + inputs.ironbar.homeManagerModules.default + inputs.oxicalc.homeManagerModules.default + inputs.oxishut.homeManagerModules.default + inputs.oxinoti.homeManagerModules.default + inputs.oxidash.homeManagerModules.default + inputs.oxipaste.homeManagerModules.default + inputs.hyprdock.homeManagerModules.default + inputs.hyprland.homeManagerModules.default + inputs.reset.homeManagerModules.default + inputs.nix-flatpak.homeManagerModules.nix-flatpak + inputs.sops-nix.homeManagerModules.sops + inputs.dashvim.homeManagerModules.dashvim + ../modules + ]; + }, + additionalInputs ? { }, + ... + }: builtins.listToAttrs ( map (name: { @@ -89,6 +92,7 @@ hostName = name; homeMods = mods.home; additionalHomeMods = additionalMods.home; + additionalInputs = additionalInputs; }; modules = [ mod ] diff --git a/modules/programs/browser/brave.nix b/modules/programs/browser/brave.nix new file mode 100644 index 0000000..5e71638 --- /dev/null +++ b/modules/programs/browser/brave.nix @@ -0,0 +1,23 @@ +{ + lib, + config, + options, + pkgs, + ... +}: +{ + options.mods.browser.brave = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables brave"; + }; + # TODO configure brave + }; + config = lib.mkIf config.mods.browser.brave.enable ( + lib.optionalAttrs (options ? home.packages) { + home.packages = with pkgs; [ brave ]; + } + ); +} diff --git a/modules/programs/browser/chromium.nix b/modules/programs/browser/chromium.nix new file mode 100644 index 0000000..b5d91f4 --- /dev/null +++ b/modules/programs/browser/chromium.nix @@ -0,0 +1,23 @@ +{ + lib, + config, + options, + pkgs, + ... +}: +{ + options.mods.browser.chromium = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables chromium"; + }; + # TODO configure chromium + }; + config = lib.mkIf config.mods.browser.chromium.enable ( + lib.optionalAttrs (options ? home.packages) { + home.packages = with pkgs; [ chromium ]; + } + ); +} diff --git a/modules/programs/browser/default.nix b/modules/programs/browser/default.nix new file mode 100644 index 0000000..a7436d9 --- /dev/null +++ b/modules/programs/browser/default.nix @@ -0,0 +1,8 @@ +{ + imports = [ + ./firefox.nix + ./zen.nix + ./chromium.nix + ./brave.nix + ]; +} diff --git a/modules/programs/firefox.nix b/modules/programs/browser/firefox.nix similarity index 61% rename from modules/programs/firefox.nix rename to modules/programs/browser/firefox.nix index d3305da..108ce1c 100644 --- a/modules/programs/firefox.nix +++ b/modules/programs/browser/firefox.nix @@ -6,10 +6,10 @@ ... }: { - options.mods.firefox = { + options.mods.browser.firefox = { enable = lib.mkOption { - default = true; - example = false; + default = false; + example = true; type = lib.types.bool; description = "Enables firefox"; }; @@ -62,22 +62,45 @@ type = with lib.types; listOf package; description = "Firefox extensions (from nur)"; }; + profiles = lib.mkOption { + default = [ + { + name = "${config.conf.username}"; + value = { + isDefault = true; + id = 0; + extensions = config.mods.browser.firefox.extensions; + }; + } + { + name = "special"; + value = { + isDefault = false; + id = 1; + extensions = config.mods.browser.firefox.extensions; + }; + } + ]; + example = [ + { + name = "custom"; + value = { + isDefault = true; + id = 0; + extensions = config.mods.browser.firefox.extensions; + }; + } + ]; + type = with lib.types; listOf (attrsOf anything); + description = "Firefox extensions (from nur)"; + }; }; - config = lib.mkIf config.mods.firefox.enable ( + config = lib.mkIf config.mods.browser.firefox.enable ( 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; - }; + policies = config.mods.browser.firefox.configuration; + profiles = builtins.listToAttrs config.mods.browser.firefox.profiles; }; } ); diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix new file mode 100644 index 0000000..855cc0e --- /dev/null +++ b/modules/programs/browser/zen.nix @@ -0,0 +1,35 @@ +{ + lib, + config, + options, + system, + inputs, + ... +}: +{ + options.mods.browser.zen = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables the zen browser"; + }; + optimization = lib.mkOption { + default = "specific"; + example = "generic"; + type = + with lib.types; + (enum [ + "specific" + "generic" + ]); + description = "Enables the zen browser"; + }; + # TODO configure zen + }; + config = lib.mkIf config.mods.browser.zen.enable ( + lib.optionalAttrs (options ? home.packages) { + home.packages = [ inputs.zen-browser.packages."${system}".${config.mods.browser.zen.optimization} ]; + } + ); +} diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 0b74286..d4877fc 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -3,9 +3,9 @@ ./acpid.nix ./basePackages.nix ./bluetooth.nix + ./browser ./coding.nix ./drives.nix - ./firefox.nix ./fish.nix ./flatpak.nix ./gaming.nix diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index e6f8890..fde33a4 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -3,6 +3,7 @@ options, config, pkgs, + inputs, ... }: { @@ -68,11 +69,17 @@ type = with lib.types; nullOr package; description = "The email client"; }; - additionalBrowser = lib.mkOption { - default = pkgs.brave; - example = null; - type = with lib.types; nullOr package; - description = "Additional browser -> second to firefox, the only installed browser if firefox is disabled"; + browser = lib.mkOption { + default = inputs.zen-browser.packages.${pkgs.system}.specific; + example = "firefox"; + type = + with lib.types; + nullOr ( + either (enum [ + "firefox" + ]) package + ); + description = "The browser (the enum variants have preconfigured modules)"; }; }; config = lib.optionalAttrs (options ? home.packages) { @@ -87,8 +94,9 @@ (lib.mkIf (!isNull config.mods.homePackages.matrixClient) config.mods.homePackages.matrixClient) (lib.mkIf (!isNull config.mods.homePackages.mailClient) config.mods.homePackages.mailClient) (lib.mkIf ( - !isNull config.mods.homePackages.additionalBrowser - ) config.mods.homePackages.additionalBrowser) + # NOTE: This should be package, but nix doesn't have that.... + builtins.isAttrs config.mods.homePackages.browser && !isNull config.mods.homePackages.browser + ) config.mods.homePackages.browser) adw-gtk3 bat brightnessctl @@ -129,10 +137,19 @@ }; }; programs = - if config.mods.homePackages.useDefaultPackages then - config.mods.homePackages.specialPrograms - else - config.mods.homePackages.specialPrograms; + config.mods.homePackages.specialPrograms + // ( + if config.mods.homePackages.browser == "firefox" then + { + firefox = { + enable = true; + policies = config.mods.browser.firefox.configuration; + profiles = builtins.listToAttrs config.mods.browser.firefox.profiles; + }; + } + else + { } + ); services = if config.mods.homePackages.useDefaultPackages then config.mods.homePackages.specialServices diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 3e05a38..15fbac0 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -5,6 +5,17 @@ pkgs, ... }: +let + browserName = + if (builtins.isString config.mods.homePackages.browser) then + config.mods.homePackages.browser + else if + config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram + then + config.mods.homePackages.browser.meta.mainProgram + else + config.mods.homePackages.browser.pname; +in { options.mods = { hyprland = { @@ -106,7 +117,7 @@ bindm = [ "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" + "$mod, mouse:273, resizeactive" ]; bind = [ @@ -116,8 +127,10 @@ ''$mod SUPERSHIFTALT,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,F,exec,${browserName}" + (lib.mkIf ( + browserName == "firefox" || browserName == "zen" + ) "$mod SUPERSHIFT,F,exec,${browserName} -p special") "$mod SUPER,T,exec,kitty -1" "$mod SUPER,E,exec,nautilus -w" "$mod SUPER,N,exec,neovide" diff --git a/modules/programs/mime.nix b/modules/programs/mime.nix index 9d8bc50..89dad89 100644 --- a/modules/programs/mime.nix +++ b/modules/programs/mime.nix @@ -6,6 +6,17 @@ options, ... }: +let + browserName = + if (builtins.isString config.mods.homePackages.browser) then + config.mods.homePackages.browser + else if + config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram + then + config.mods.homePackages.browser.meta.mainProgram + else + config.mods.homePackages.browser.pname; +in { options.mods.mime = { enable = lib.mkOption { @@ -72,7 +83,7 @@ description = "Browser X mime handlers"; }; browserApplications = lib.mkOption { - default = [ "firefox" ]; + default = [ "${browserName}" ]; example = [ ]; type = with lib.types; listOf str; description = "Applications used for handling browser mime types"; From 314a06779595fd7a11a1b95a6d1b9ecdf34d3310 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 29 Sep 2024 12:51:38 +0200 Subject: [PATCH 150/330] Update Readme --- docs/src/README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/src/README.md b/docs/src/README.md index 0af74b9..bb68834 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -26,7 +26,7 @@ dashNix = { You can then configure your systems in your flake outputs with a provided library command: ```nix -nixosConfigurations = inputs.dashNix.dashNixLib.build_systems ./.; +nixosConfigurations = inputs.dashNix.dashNixLib.build_systems { root = ./.; }; ``` This command will build each system that is placed within the hosts/ directory. @@ -148,9 +148,7 @@ nixosConfigurations = home = []; } in - (inputs.dashNix.dashNixLib.build_systems [ - "system1" - ] ./. mods additionalMods); + inputs.dashNix.dashNixLib.build_systems { root = ./.; inherit mods additionalMods; }; ``` # Installation @@ -199,5 +197,5 @@ For package lists, please check the individual modules, as the lists can be long - kitty: Enables and configures kitty terminal - oxi: My own programs, can be selectively disabled, or as a whole - mime: Mime type configuration -- xkb: Keyboard layout configuration +- xkb: Keyboard layout configuration - scripts: Various preconfigured scripts with the ability to add more From f1a93f1cf70b1d1336e3eb47bfb771b8b8fff979 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 19 Oct 2024 13:25:31 +0200 Subject: [PATCH 151/330] Remove lock --- .github/workflows/docs.yaml | 2 +- .github/workflows/release.yaml | 2 +- flake.lock | 2106 ------------------------ flake.nix | 2 +- modules/programs/coding.nix | 5 +- modules/programs/hyprland/hyprland.nix | 4 +- 6 files changed, 7 insertions(+), 2114 deletions(-) delete mode 100644 flake.lock diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index ae6de9e..015dc25 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -27,7 +27,7 @@ jobs: uses: DeterminateSystems/magic-nix-cache-action@main - name: Build docs - run: nix -L build github:${{ github.repository }}/${{ github.sha }}#docs + run: nix -L build github:${{ github.repository }}/${{ github.sha }}#docs --no-write-lock-file - name: Prepare docs for upload run: cp -r --dereference --no-preserve=mode,ownership result/ public/ diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ecee195..193d5e7 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -19,7 +19,7 @@ jobs: - name: Set up cache uses: DeterminateSystems/magic-nix-cache-action@main - name: Build ISO - run: nix build github:${{ github.repository }}/${{ github.sha }}#iso + run: nix build github:${{ github.repository }}/${{ github.sha }}#iso --no-write-lock-file - name: Prepare ISO for upload run: | cp -r --dereference --no-preserve=mode,ownership result/ public/ diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 56a600b..0000000 --- a/flake.lock +++ /dev/null @@ -1,2106 +0,0 @@ -{ - "nodes": { - "anyrun": { - "inputs": { - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs", - "systems": "systems" - }, - "locked": { - "lastModified": 1721135360, - "narHash": "sha256-ZhSA0e45UxiOAjEVqkym/aULh0Dt+KHJLNda7bjx9UI=", - "owner": "Kirottu", - "repo": "anyrun", - "rev": "c6101a31a80b51e32e96f6a77616b609770172e0", - "type": "github" - }, - "original": { - "owner": "Kirottu", - "repo": "anyrun", - "type": "github" - } - }, - "aquamarine": { - "inputs": { - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "hyprwayland-scanner": [ - "hyprland", - "hyprwayland-scanner" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1726665257, - "narHash": "sha256-rEzEZtd3iyVo5RJ1OGujOlnywNf3gsrOnjAn1NLciD4=", - "owner": "hyprwm", - "repo": "aquamarine", - "rev": "752d0fbd141fabb5a1e7f865199b80e6e76f8d8e", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "aquamarine", - "type": "github" - } - }, - "base16": { - "inputs": { - "fromYaml": "fromYaml" - }, - "locked": { - "lastModified": 1721224776, - "narHash": "sha256-iakVQHg2DSmdOc5dNBwrDt9JLRxX5MT+IIbxfZEpGdo=", - "owner": "SenchoPens", - "repo": "base16.nix", - "rev": "c89c8123310257f3ddc04cc59aa4b5573c6d515f", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "base16.nix", - "type": "github" - } - }, - "base16-fish": { - "flake": false, - "locked": { - "lastModified": 1622559957, - "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", - "owner": "tomyun", - "repo": "base16-fish", - "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", - "type": "github" - }, - "original": { - "owner": "tomyun", - "repo": "base16-fish", - "type": "github" - } - }, - "base16-foot": { - "flake": false, - "locked": { - "lastModified": 1696725948, - "narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=", - "owner": "tinted-theming", - "repo": "base16-foot", - "rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "base16-foot", - "type": "github" - } - }, - "base16-helix": { - "flake": false, - "locked": { - "lastModified": 1725860795, - "narHash": "sha256-Z2o8VBPW3I+KKTSfe25kskz0EUj7MpUh8u355Z1nVsU=", - "owner": "tinted-theming", - "repo": "base16-helix", - "rev": "7f795bf75d38e0eea9fed287264067ca187b88a9", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "base16-helix", - "type": "github" - } - }, - "base16-kitty": { - "flake": false, - "locked": { - "lastModified": 1665001328, - "narHash": "sha256-aRaizTYPpuWEcvoYE9U+YRX+Wsc8+iG0guQJbvxEdJY=", - "owner": "kdrag0n", - "repo": "base16-kitty", - "rev": "06bb401fa9a0ffb84365905ffbb959ae5bf40805", - "type": "github" - }, - "original": { - "owner": "kdrag0n", - "repo": "base16-kitty", - "type": "github" - } - }, - "base16-tmux": { - "flake": false, - "locked": { - "lastModified": 1696725902, - "narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=", - "owner": "tinted-theming", - "repo": "base16-tmux", - "rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "base16-tmux", - "type": "github" - } - }, - "base16-vim": { - "flake": false, - "locked": { - "lastModified": 1716150083, - "narHash": "sha256-ZMhnNmw34ogE5rJZrjRv5MtG3WaqKd60ds2VXvT6hEc=", - "owner": "tinted-theming", - "repo": "base16-vim", - "rev": "6e955d704d046b0dc3e5c2d68a2a6eeffd2b5d3d", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "base16-vim", - "type": "github" - } - }, - "base16_2": { - "inputs": { - "fromYaml": "fromYaml_2" - }, - "locked": { - "lastModified": 1708890466, - "narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=", - "owner": "SenchoPens", - "repo": "base16.nix", - "rev": "665b3c6748534eb766c777298721cece9453fdae", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "base16.nix", - "type": "github" - } - }, - "crane": { - "inputs": { - "nixpkgs": [ - "ironbar", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1713979152, - "narHash": "sha256-apdecPuh8SOQnkEET/kW/UcfjCRb8JbV5BKjoH+DcP4=", - "owner": "ipetkov", - "repo": "crane", - "rev": "a5eca68a2cf11adb32787fc141cddd29ac8eb79c", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "dashvim": { - "inputs": { - "base16": [ - "base16" - ], - "flake-parts": "flake-parts_2", - "nixpkgs": [ - "nixpkgs" - ], - "nixvim": "nixvim" - }, - "locked": { - "lastModified": 1727194342, - "narHash": "sha256-B4ZE7B+YLK0l+dqViKH+IG1h02UmSqirgxgIV5uIlqQ=", - "owner": "DashieTM", - "repo": "DashVim", - "rev": "09b7a5456e3b882b5c989b7e21547db66ce8546f", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "DashVim", - "type": "github" - } - }, - "devshell": { - "inputs": { - "nixpkgs": [ - "dashvim", - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1722113426, - "narHash": "sha256-Yo/3loq572A8Su6aY5GP56knpuKYRvM2a1meP9oJZCw=", - "owner": "numtide", - "repo": "devshell", - "rev": "67cce7359e4cd3c45296fb4aaf6a19e2a9c757ae", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "flake-compat": { - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "revCount": 57, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" - } - }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "anyrun", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1717285511, - "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_10": { - "inputs": { - "nixpkgs-lib": [ - "reset", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_11": { - "inputs": { - "nixpkgs-lib": [ - "reset-plugins", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, - "locked": { - "lastModified": 1726153070, - "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_3": { - "inputs": { - "nixpkgs-lib": [ - "dashvim", - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1726153070, - "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": [ - "hyprdock", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_5": { - "inputs": { - "nixpkgs-lib": [ - "oxicalc", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_6": { - "inputs": { - "nixpkgs-lib": [ - "oxidash", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_7": { - "inputs": { - "nixpkgs-lib": [ - "oxinoti", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_8": { - "inputs": { - "nixpkgs-lib": [ - "oxipaste", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1722555600, - "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_9": { - "inputs": { - "nixpkgs-lib": [ - "oxishut", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-utils": { - "inputs": { - "systems": "systems_2" - }, - "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" - } - }, - "flake-utils_2": { - "inputs": { - "systems": "systems_4" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "inputs": { - "systems": "systems_5" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { - "inputs": { - "systems": "systems_6" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { - "inputs": { - "systems": "systems_7" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_6": { - "inputs": { - "systems": "systems_8" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_7": { - "inputs": { - "systems": "systems_9" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_8": { - "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": { - "lastModified": 1721222302, - "narHash": "sha256-5vL4w9+tS9yd8WpIiDUtxN1IuxCVK2nebZMs/hCXXis=", - "owner": "SenchoPens", - "repo": "fromYaml", - "rev": "93bad85d1633b8b27287b438c0bd394094c24d06", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "fromYaml", - "type": "github" - } - }, - "fromYaml_2": { - "flake": false, - "locked": { - "lastModified": 1689549921, - "narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=", - "owner": "SenchoPens", - "repo": "fromYaml", - "rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "fromYaml", - "type": "github" - } - }, - "git-hooks": { - "inputs": { - "flake-compat": [ - "dashvim", - "nixvim", - "flake-compat" - ], - "gitignore": "gitignore", - "nixpkgs": [ - "dashvim", - "nixvim", - "nixpkgs" - ], - "nixpkgs-stable": [ - "dashvim", - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1725513492, - "narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "7570de7b9b504cfe92025dd1be797bf546f66528", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "dashvim", - "nixvim", - "git-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gnome-shell": { - "flake": false, - "locked": { - "lastModified": 1713702291, - "narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=", - "owner": "GNOME", - "repo": "gnome-shell", - "rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934", - "type": "github" - }, - "original": { - "owner": "GNOME", - "ref": "46.1", - "repo": "gnome-shell", - "type": "github" - } - }, - "home-manager": { - "inputs": { - "nixpkgs": [ - "dashvim", - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1726357542, - "narHash": "sha256-p4OrJL2weh0TRtaeu1fmNYP6+TOp/W2qdaIJxxQay4c=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "e524c57b1fa55d6ca9d8354c6ce1e538d2a1f47f", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_2": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1727111745, - "narHash": "sha256-EYLvFRoTPWtD+3uDg2wwQvlz88OrIr3zld+jFE5gDcY=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "21c021862fa696c8199934e2153214ab57150cb6", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_3": { - "inputs": { - "nixpkgs": [ - "stylix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1724435763, - "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "hyprcursor": { - "inputs": { - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1722623071, - "narHash": "sha256-sLADpVgebpCBFXkA1FlCXtvEPu1tdEsTfqK1hfeHySE=", - "owner": "hyprwm", - "repo": "hyprcursor", - "rev": "912d56025f03d41b1ad29510c423757b4379eb1c", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprcursor", - "type": "github" - } - }, - "hyprdock": { - "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_3" - }, - "locked": { - "lastModified": 1716453478, - "narHash": "sha256-EoKGnKvYKoe9geFoK0wyEAMTPGOfRtjXibt4GUCfvBA=", - "owner": "DashieTM", - "repo": "hyprdock", - "rev": "8d07dbdf446e6b21528cc994547cc8f173a70330", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "hyprdock", - "type": "github" - } - }, - "hyprland": { - "inputs": { - "aquamarine": "aquamarine", - "hyprcursor": "hyprcursor", - "hyprlang": "hyprlang", - "hyprutils": "hyprutils", - "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_4", - "systems": "systems_3", - "xdph": "xdph" - }, - "locked": { - "lastModified": 1727173505, - "narHash": "sha256-DaiWKEntVBrgy1OZEGW3izIfzyIr1jav/Jpo9tqL4EU=", - "ref": "refs/heads/main", - "rev": "00c862686354d139a53222d41a1c80d698a50c43", - "revCount": 5253, - "submodules": true, - "type": "git", - "url": "https://github.com/hyprwm/Hyprland" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://github.com/hyprwm/Hyprland" - } - }, - "hyprland-protocols": { - "inputs": { - "nixpkgs": [ - "hyprland", - "xdph", - "nixpkgs" - ], - "systems": [ - "hyprland", - "xdph", - "systems" - ] - }, - "locked": { - "lastModified": 1721326555, - "narHash": "sha256-zCu4R0CSHEactW9JqYki26gy8h9f6rHmSwj4XJmlHgg=", - "owner": "hyprwm", - "repo": "hyprland-protocols", - "rev": "5a11232266bf1a1f5952d5b179c3f4b2facaaa84", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-protocols", - "type": "github" - } - }, - "hyprlang": { - "inputs": { - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1725997860, - "narHash": "sha256-d/rZ/fHR5l1n7PeyLw0StWMNLXVU9c4HFyfskw568so=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "dfeb5811dd6485490cce18d6cc1e38a055eea876", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprutils": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1726874949, - "narHash": "sha256-PNnIpwGqpTvMU3N2r0wMQwK1E+t4Bb5fbJwblQvr+80=", - "owner": "hyprwm", - "repo": "hyprutils", - "rev": "d97af4f6bd068c03a518b597675e598f57ea2291", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprutils", - "type": "github" - } - }, - "hyprwayland-scanner": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1726840673, - "narHash": "sha256-HIPEXyRRVZoqD6U+lFS1B0tsIU7p83FaB9m7KT/x6mQ=", - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "rev": "b68dab23fc922eae99306988133ee80a40b39ca5", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "type": "github" - } - }, - "ironbar": { - "inputs": { - "crane": "crane", - "naersk": "naersk", - "nixpkgs": "nixpkgs_6", - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1714908451, - "narHash": "sha256-TPbvKQdoGfZMzp+fl72vy6MtRV1yGcOG/es67VOA0xw=", - "owner": "JakeStanger", - "repo": "ironbar", - "rev": "3a1c60442382f970cdb7669814b6ef3594d9f048", - "type": "github" - }, - "original": { - "owner": "JakeStanger", - "ref": "3a1c60442382f970cdb7669814b6ef3594d9f048", - "repo": "ironbar", - "type": "github" - } - }, - "naersk": { - "inputs": { - "nixpkgs": "nixpkgs_5" - }, - "locked": { - "lastModified": 1713520724, - "narHash": "sha256-CO8MmVDmqZX2FovL75pu5BvwhW+Vugc7Q6ze7Hj8heI=", - "owner": "nix-community", - "repo": "naersk", - "rev": "c5037590290c6c7dae2e42e7da1e247e54ed2d49", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "naersk", - "type": "github" - } - }, - "nix-darwin": { - "inputs": { - "nixpkgs": [ - "dashvim", - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1726188813, - "narHash": "sha256-Vop/VRi6uCiScg/Ic+YlwsdIrLabWUJc57dNczp0eBc=", - "owner": "lnl7", - "repo": "nix-darwin", - "rev": "21fe31f26473c180390cfa81e3ea81aca0204c80", - "type": "github" - }, - "original": { - "owner": "lnl7", - "repo": "nix-darwin", - "type": "github" - } - }, - "nix-flatpak": { - "locked": { - "lastModified": 1721549352, - "narHash": "sha256-nlXJa8RSOX0kykrIYW33ukoHYq+FOSNztHLLgqKwOp8=", - "owner": "gmodena", - "repo": "nix-flatpak", - "rev": "dbce39ea8664820ba9037caaf1e2fad365ed6b4b", - "type": "github" - }, - "original": { - "owner": "gmodena", - "repo": "nix-flatpak", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1717196966, - "narHash": "sha256-yZKhxVIKd2lsbOqYd5iDoUIwsRZFqE87smE2Vzf6Ck0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "57610d2f8f0937f39dbd72251e9614b1561942d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib": { - "locked": { - "lastModified": 1725233747, - "narHash": "sha256-Ss8QWLXdr2JCBPcYChJhz4xJm+h/xjl4G0c0XlP6a74=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1725762081, - "narHash": "sha256-vNv+aJUW5/YurRy1ocfvs4q/48yVESwlC/yHzjkZSP8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dc454045f5b5d814e5862a6d057e7bb5c29edc05", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-24.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_10": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_12": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_13": { - "locked": { - "lastModified": 1723637854, - "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_14": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_15": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_16": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_17": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_18": { - "locked": { - "lastModified": 1716948383, - "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_19": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1726243404, - "narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_20": { - "locked": { - "lastModified": 1725534445, - "narHash": "sha256-Yd0FK9SkWy+ZPuNqUgmVPXokxDgMJoGuNpMEtkfcf84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9bb1e7571aadf31ddb4af77fc64b2d59580f9a39", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_21": { - "locked": { - "lastModified": 1725194671, - "narHash": "sha256-tLGCFEFTB5TaOKkpfw3iYT9dnk4awTP/q4w+ROpMfuw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b833ff01a0d694b910daca6e2ff4a3f26dee478c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_22": { - "locked": { - "lastModified": 1726937504, - "narHash": "sha256-bvGoiQBvponpZh8ClUcmJ6QnsNKw0EMrCQJARK3bI1c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9357f4f23713673f310988025d9dc261c20e70c6", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1716330097, - "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1726755586, - "narHash": "sha256-PmUr/2GQGvFTIJ6/Tvsins7Q43KTMvMFhvG6oaYK+Wk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c04d5652cfa9742b1d519688f65d1bbccea9eb7e", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1714314149, - "narHash": "sha256-yNAevSKF4krRWacmLUsLK7D7PlfuY3zF0lYnGYNi9vQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "cf8cc1201be8bc71b7cbbbdaf349b22f4f99c7ae", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1714253743, - "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_7": { - "locked": { - "lastModified": 1726937504, - "narHash": "sha256-bvGoiQBvponpZh8ClUcmJ6QnsNKw0EMrCQJARK3bI1c=", - "owner": "NixOs", - "repo": "nixpkgs", - "rev": "9357f4f23713673f310988025d9dc261c20e70c6", - "type": "github" - }, - "original": { - "owner": "NixOs", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_8": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_9": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixvim": { - "inputs": { - "devshell": "devshell", - "flake-compat": "flake-compat", - "flake-parts": "flake-parts_3", - "git-hooks": "git-hooks", - "home-manager": "home-manager", - "nix-darwin": "nix-darwin", - "nixpkgs": "nixpkgs_2", - "nuschtosSearch": "nuschtosSearch", - "treefmt-nix": "treefmt-nix" - }, - "locked": { - "lastModified": 1726676531, - "narHash": "sha256-i8Pbd7JszwuCb0HqzAPypv2ytdcsFeAMFqbrmLaN4BE=", - "owner": "nix-community", - "repo": "nixvim", - "rev": "9307b201a3dc57d5b71ded4f897ea9d096544877", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixvim", - "type": "github" - } - }, - "nur": { - "locked": { - "lastModified": 1727193941, - "narHash": "sha256-9WigVCIeVk1f/8NRcrv84BN6RfIJln4dPUhe+3pUBYg=", - "owner": "nix-community", - "repo": "nur", - "rev": "0a59305e9f8bad316931d4edd608847cbf6efe7b", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nur", - "type": "github" - } - }, - "nuschtosSearch": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": [ - "dashvim", - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1726392886, - "narHash": "sha256-9RtOuG7V8KG8IU8nZje5EQ1WSM/inr7+zb3tAgTiHDM=", - "owner": "NuschtOS", - "repo": "search", - "rev": "97d34b70deed4878fcb2449ac89dab717d72efa1", - "type": "github" - }, - "original": { - "owner": "NuschtOS", - "repo": "search", - "type": "github" - } - }, - "oxicalc": { - "inputs": { - "flake-parts": "flake-parts_5", - "nixpkgs": "nixpkgs_8" - }, - "locked": { - "lastModified": 1716225554, - "narHash": "sha256-IenHIQgKdKJTt02VJLQ+q8EunIkMwQ57XFWyKO+rb7s=", - "owner": "DashieTM", - "repo": "OxiCalc", - "rev": "a3fa5d76941278fd0f586817dcd04be134159bd8", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiCalc", - "type": "github" - } - }, - "oxidash": { - "inputs": { - "flake-parts": "flake-parts_6", - "nixpkgs": "nixpkgs_9", - "rust-overlay": "rust-overlay_2" - }, - "locked": { - "lastModified": 1716235599, - "narHash": "sha256-6LDrLEfPzwbd5nEcis8us4BA18YhoWkzMVwafCJ5N/A=", - "owner": "DashieTM", - "repo": "OxiDash", - "rev": "fe6984abc73f75a64b0a03231068c20f53ec4f76", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiDash", - "type": "github" - } - }, - "oxinoti": { - "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_11", - "rust-overlay": "rust-overlay_3" - }, - "locked": { - "lastModified": 1716235566, - "narHash": "sha256-1U4/h0YyuoOERjQE68yQZVsDdIGl43OprDplSGBMhYY=", - "owner": "DashieTM", - "repo": "OxiNoti", - "rev": "c52c330d59a3b066e94618adbe9a7be5b9cfde24", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiNoti", - "type": "github" - } - }, - "oxipaste": { - "inputs": { - "flake-parts": "flake-parts_8", - "nixpkgs": "nixpkgs_13" - }, - "locked": { - "lastModified": 1727193139, - "narHash": "sha256-o7bXBcE9+k8rzUh9mQ7lJs27uv7uVMWtFygvUjNa6Ik=", - "owner": "DashieTM", - "repo": "OxiPaste", - "rev": "bad52f1cb1ee8eac996b23786fa2f1b195ac4c6f", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiPaste", - "type": "github" - } - }, - "oxishut": { - "inputs": { - "flake-parts": "flake-parts_9", - "nixpkgs": "nixpkgs_14", - "rust-overlay": "rust-overlay_4" - }, - "locked": { - "lastModified": 1716235696, - "narHash": "sha256-qqN2ev97ff1Yftr+8YS7Pm2/kk8SpQU8uxplbQYJGho=", - "owner": "DashieTM", - "repo": "OxiShut", - "rev": "d38d5c892b7ae2420715cbb6b4944abb76b49f9d", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiShut", - "type": "github" - } - }, - "reset": { - "inputs": { - "flake-parts": "flake-parts_10", - "nixpkgs": "nixpkgs_16", - "rust-overlay": "rust-overlay_5" - }, - "locked": { - "lastModified": 1718284469, - "narHash": "sha256-6cZjFyjhGTOj9r8eprCWZy1v2o1Tqcl6H6g/LTgHhp4=", - "owner": "Xetibo", - "repo": "ReSet", - "rev": "6c1291bd19383ea45d0610dcdc17e8491b8e20ea", - "type": "github" - }, - "original": { - "owner": "Xetibo", - "repo": "ReSet", - "type": "github" - } - }, - "reset-plugins": { - "inputs": { - "flake-parts": "flake-parts_11", - "nixpkgs": "nixpkgs_18", - "rust-overlay": "rust-overlay_6" - }, - "locked": { - "lastModified": 1718300175, - "narHash": "sha256-kPeJJ/au+jV4jhyAhkLI3uwqK7pEDjdVJvwDmtQq8/k=", - "owner": "Xetibo", - "repo": "ReSet-Plugins", - "rev": "8d3af2fab9425f8b89fb7b82b4e23eba12a42f85", - "type": "github" - }, - "original": { - "owner": "Xetibo", - "repo": "ReSet-Plugins", - "type": "github" - } - }, - "root": { - "inputs": { - "anyrun": "anyrun", - "base16": "base16", - "dashvim": "dashvim", - "home-manager": "home-manager_2", - "hyprdock": "hyprdock", - "hyprland": "hyprland", - "ironbar": "ironbar", - "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_7", - "nur": "nur", - "oxicalc": "oxicalc", - "oxidash": "oxidash", - "oxinoti": "oxinoti", - "oxipaste": "oxipaste", - "oxishut": "oxishut", - "reset": "reset", - "reset-plugins": "reset-plugins", - "sops-nix": "sops-nix", - "stable": "stable", - "stylix": "stylix", - "zen-browser": "zen-browser" - } - }, - "rust-overlay": { - "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": [ - "ironbar", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1714443211, - "narHash": "sha256-lKTA3XqRo4aVgkyTSCtpcALpGXdmkilHTtN00eRg0QU=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "ce35c36f58f82cee6ec959e0d44c587d64281b6f", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_10" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_3": { - "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_12" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_4": { - "inputs": { - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_15" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_5": { - "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_17" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_6": { - "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_19" - }, - "locked": { - "lastModified": 1717035469, - "narHash": "sha256-MzH+yjKULH3HCRj9QCTwBvqq4LZkR0ZqRE/QfGOGC2E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "095702e63a40e86f339d11864da9dc965b70a01e", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "sops-nix": { - "inputs": { - "nixpkgs": "nixpkgs_20", - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1726524647, - "narHash": "sha256-qis6BtOOBBEAfUl7FMHqqTwRLB61OL5OFzIsOmRz2J4=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "e2d404a7ea599a013189aa42947f66cede0645c8", - "type": "github" - }, - "original": { - "owner": "Mic92", - "repo": "sops-nix", - "type": "github" - } - }, - "stable": { - "locked": { - "lastModified": 1726969270, - "narHash": "sha256-8fnFlXBgM/uSvBlLWjZ0Z0sOdRBesyNdH0+esxqizGc=", - "owner": "NixOs", - "repo": "nixpkgs", - "rev": "23cbb250f3bf4f516a2d0bf03c51a30900848075", - "type": "github" - }, - "original": { - "owner": "NixOs", - "ref": "nixos-24.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "stylix": { - "inputs": { - "base16": "base16_2", - "base16-fish": "base16-fish", - "base16-foot": "base16-foot", - "base16-helix": "base16-helix", - "base16-kitty": "base16-kitty", - "base16-tmux": "base16-tmux", - "base16-vim": "base16-vim", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_8", - "gnome-shell": "gnome-shell", - "home-manager": "home-manager_3", - "nixpkgs": "nixpkgs_21", - "systems": "systems_10" - }, - "locked": { - "lastModified": 1727093531, - "narHash": "sha256-hsb1bcUvpMecFHOP5F3LEyOnXiZ+5MikR92irJ8o7iE=", - "owner": "danth", - "repo": "stylix", - "rev": "eccb9f2d63f4582b1c1ffe97d806156147aeee5f", - "type": "github" - }, - "original": { - "owner": "danth", - "repo": "stylix", - "type": "github" - } - }, - "systems": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_10": { - "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, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_3": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_4": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_5": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_6": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_7": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_8": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_9": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "dashvim", - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1725271838, - "narHash": "sha256-VcqxWT0O/gMaeWTTjf1r4MOyG49NaNxW4GHTO3xuThE=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "9fb342d14b69aefdf46187f6bb80a4a0d97007cd", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, - "xdph": { - "inputs": { - "hyprland-protocols": "hyprland-protocols", - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "hyprwayland-scanner": [ - "hyprland", - "hyprwayland-scanner" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1727109343, - "narHash": "sha256-1PFckA8Im7wMSl26okwOKqBZeCFLD3LvZZFaxswDhbY=", - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "rev": "4adb6c4c41ee5014bfe608123bfeddb26e5f5cea", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "type": "github" - } - }, - "zen-browser": { - "inputs": { - "nixpkgs": "nixpkgs_22" - }, - "locked": { - "lastModified": 1727287465, - "narHash": "sha256-XQAf5M593WmxgaXagtkci/H9DA3jSVx1TJk6F3X5VQo=", - "owner": "MarceColl", - "repo": "zen-browser-flake", - "rev": "96f1b5d80bf7360cb77c9b521f388324f18383a0", - "type": "github" - }, - "original": { - "owner": "MarceColl", - "repo": "zen-browser-flake", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix index 2f5bda7..810f010 100644 --- a/flake.nix +++ b/flake.nix @@ -28,7 +28,7 @@ url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; }; - zen-browser.url = "github:MarceColl/zen-browser-flake"; + zen-browser.url = "github:fufexan/zen-browser-flake"; stylix.url = "github:danth/stylix"; base16.url = "github:SenchoPens/base16.nix"; diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index a4743e6..456acfb 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -230,7 +230,7 @@ netcoredbg #fsharp fsharp - fsautocomplete + #fsautocomplete ]; example = [ ]; type = with lib.types; listOf package; @@ -250,7 +250,8 @@ }; packages = lib.mkOption { default = with pkgs; [ - bear + # broke + #bear gcc clang-tools ]; diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 15fbac0..f132ef5 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -357,10 +357,8 @@ in # other programs "hyprpaper" "ironbar" - "firefox" + "${browserName}" "oxipaste_daemon" - # should be taken care of with the new systemd services - # "nextcloud --background" "oxinoti" ] ++ config.mods.hyprland.extraAutostart; From d703b4dec084b7bf3cb1ed2cf304a2fff9b58285 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 25 Oct 2024 11:36:12 +0200 Subject: [PATCH 152/330] Update qt5ct/kdeconnect --- modules/programs/homePackages.nix | 2 +- modules/programs/kdeConnect.nix | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index fde33a4..f3c1bfc 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -118,7 +118,7 @@ playerctl poppler_utils pulseaudio - qt5ct + libsForQt5.qt5ct qt6ct ripgrep rm-improved diff --git a/modules/programs/kdeConnect.nix b/modules/programs/kdeConnect.nix index da4cc22..169814c 100644 --- a/modules/programs/kdeConnect.nix +++ b/modules/programs/kdeConnect.nix @@ -37,6 +37,8 @@ ]; }; } - // lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ kdeconnect ]; } + // lib.optionalAttrs (options ? home.packages) { + home.packages = with pkgs; [ kdePackages.kdeconnect-kde ]; + } ); } From 0c1291d3fd6e7c0cd58884b11c0ecf5efb31e28d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 2 Nov 2024 12:51:50 +0100 Subject: [PATCH 153/330] Update docker/podman config --- home/common.nix | 3 +- modules/programs/containers.nix | 79 +++++++++++++++++++++++++++++++ modules/programs/default.nix | 5 +- modules/programs/docker.nix | 32 ------------- modules/programs/fish.nix | 2 + modules/programs/homePackages.nix | 2 +- modules/programs/podman.nix | 34 ------------- 7 files changed, 85 insertions(+), 72 deletions(-) create mode 100644 modules/programs/containers.nix delete mode 100644 modules/programs/docker.nix delete mode 100644 modules/programs/podman.nix diff --git a/home/common.nix b/home/common.nix index 82dc607..4b01820 100644 --- a/home/common.nix +++ b/home/common.nix @@ -1,7 +1,6 @@ { config, lib, - options, ... }: let @@ -41,7 +40,7 @@ in }; nix = { - extraOptions = lib.mkIf (options ? config.sops.secrets.access.path) '' + extraOptions = lib.mkIf (config ? sops.secrets && config.sops.secrets ? access.path) '' !include ${config.sops.secrets.access.path} ''; }; diff --git a/modules/programs/containers.nix b/modules/programs/containers.nix new file mode 100644 index 0000000..6f9f605 --- /dev/null +++ b/modules/programs/containers.nix @@ -0,0 +1,79 @@ +{ + lib, + config, + options, + pkgs, + ... +}: +{ + options.mods.containers = { + variant = lib.mkOption { + default = ""; + example = "podman"; + type = lib.types.enum [ + "" + "podman" + "docker" + ]; + description = "Enables and configures a containerization solution: podman/docker"; + }; + podmanPackages = lib.mkOption { + default = with pkgs; [ + podman-tui + podman-compose + ]; + example = [ ]; + type = with lib.types; listOf package; + description = "Podman packages"; + }; + dockerPackages = lib.mkOption { + default = with pkgs; [ + docker-compose + ]; + example = [ ]; + type = with lib.types; listOf package; + description = "Docker packages"; + }; + combinedPackages = lib.mkOption { + default = with pkgs; [ + dive + ]; + example = [ ]; + type = with lib.types; listOf package; + description = "Container packages"; + }; + }; + config = ( + lib.optionalAttrs (options ? environment.systemPackages) { + environment.systemPackages = + (lib.lists.optionals ( + config.mods.containers.variant == "podman" + ) config.mods.containers.podmanPackages) + ++ (lib.lists.optionals ( + config.mods.containers.variant == "docker" + ) config.mods.containers.dockerPackages) + ++ (lib.lists.optionals ( + config.mods.containers.variant == "podman" || config.mods.containers.variant == "docker" + ) config.mods.containers.combinedPackages); + virtualisation = + if (config.mods.containers.variant == "podman") then + { + containers.enable = true; + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; + } + else if (config.mods.containers.variant == "docker") then + { + containers.enable = true; + docker = { + enable = true; + }; + } + else + { }; + } + ); +} diff --git a/modules/programs/default.nix b/modules/programs/default.nix index d4877fc..5c0769c 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -5,6 +5,7 @@ ./bluetooth.nix ./browser ./coding.nix + ./containers.nix ./drives.nix ./fish.nix ./flatpak.nix @@ -22,12 +23,11 @@ ./keepassxc.nix ./kitty.nix ./media.nix + ./mime.nix ./ncspot.nix ./nextcloud.nix ./oxi ./piper.nix - ./podman.nix - ./docker.nix ./printing.nix ./scripts.nix ./sddm.nix @@ -36,7 +36,6 @@ ./stylix.nix ./teams.nix ./virtualbox.nix - ./mime.nix ./xkb.nix ./xone.nix ./yazi diff --git a/modules/programs/docker.nix b/modules/programs/docker.nix deleted file mode 100644 index 7045050..0000000 --- a/modules/programs/docker.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ - lib, - config, - options, - pkgs, - ... -}: -{ - # TODO make exclusive with docker - options.mods.docker = { - enable = lib.mkOption { - default = false; - example = false; - type = lib.types.bool; - description = "Enables and configures docker"; - }; - }; - config = lib.mkIf config.mods.docker.enable ( - lib.optionalAttrs (options ? virtualisation.docker) { - environment.systemPackages = with pkgs; [ - docker-compose - dive - ]; - virtualisation = { - containers.enable = true; - docker = { - enable = true; - }; - }; - } - ); -} diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 4e04b76..41f394f 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -64,6 +64,8 @@ abbr --add cat 'bat' abbr --add find 'fd' abbr --add rm 'rip' + abbr --add cp 'fcp' + abbr --add cd 'z' set fish_greeting # pwd based on the value of _ZO_RESOLVE_SYMLINKS. diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index f3c1bfc..a887f47 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -87,7 +87,6 @@ if config.mods.homePackages.useDefaultPackages then with pkgs; [ - # TODO add fcp once fixed.... (lib.mkIf config.mods.homePackages.ncspot ncspot) (lib.mkIf config.mods.homePackages.vesktop vesktop) (lib.mkIf config.mods.homePackages.nextcloudClient nextcloud-client) @@ -120,6 +119,7 @@ pulseaudio libsForQt5.qt5ct qt6ct + fcp ripgrep rm-improved system-config-printer diff --git a/modules/programs/podman.nix b/modules/programs/podman.nix deleted file mode 100644 index 58441e4..0000000 --- a/modules/programs/podman.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - lib, - config, - options, - pkgs, - ... -}: -{ - options.mods.podman = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = "Enables and configures podman"; - }; - }; - config = lib.mkIf config.mods.podman.enable ( - lib.optionalAttrs (options ? virtualisation.podman) { - environment.systemPackages = with pkgs; [ - podman-tui - podman-compose - dive - ]; - virtualisation = { - containers.enable = true; - podman = { - enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; - }; - }; - } - ); -} From 03895585293de5931dac37b5f5c2ba88fce50f53 Mon Sep 17 00:00:00 2001 From: MathewHDYT <48954742+MathewHDYT@users.noreply.github.com> Date: Fri, 8 Nov 2024 19:41:51 +0100 Subject: [PATCH 154/330] Include `customSettings` option to configure regreet (#4) * Attempt to add regrett configuration * Prevent double install of regreet * Install regreet over program enable * Force regreet settings * Revert regreet over programs enable. * Move regreet config into homemanger. --- modules/conf.nix | 2 +- modules/programs/browser/firefox.nix | 2 +- modules/programs/greetd.nix | 14 +++++++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/modules/conf.nix b/modules/conf.nix index cb92f2b..2c3236f 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -88,7 +88,7 @@ ]; type = with lib.types; listOf attrs; description = '' - Adds modules to ironbar. + Adds modules to ironbar. See https://github.com/JakeStanger/ironbar/wiki/ for more information. ''; }; }; diff --git a/modules/programs/browser/firefox.nix b/modules/programs/browser/firefox.nix index 108ce1c..9452a07 100644 --- a/modules/programs/browser/firefox.nix +++ b/modules/programs/browser/firefox.nix @@ -46,7 +46,7 @@ }; example = { }; type = with lib.types; attrsOf anything; - description = "Firefox policy configuration"; + description = "Firefox policy configuration. See https://mozilla.github.io/policy-templates/ for more information."; }; extensions = lib.mkOption { default = with pkgs.nur.repos.rycee.firefox-addons; [ diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 5a3f598..075b575 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -58,6 +58,16 @@ ''; }; }; + regreet = { + customSettings = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + Custom regret settings. See https://github.com/rharish101/ReGreet/blob/main/regreet.sample.toml for more information. + ''; + }; + }; }; config = @@ -120,11 +130,13 @@ env=XCURSOR_SIZE,${toString config.mods.stylix.cursor.size} env=QT_QPA_PLATFORMTHEME,qt5ct - 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 --config /home/${username}/.config/regreet/regreet.toml; hyprctl dispatch exit ''; # unlock GPG keyring on login security.pam.services.greetd.enableGnomeKeyring = true; + } // lib.optionalAttrs (options ? home) { + xdg.configFile."regreet/regreet.toml".source = (pkgs.formats.toml { }).generate "regreet" config.mods.regreet.customSettings; } ); } From 35b2ba75b6447ede03a0772f7cd3eeb8295177e9 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 9 Nov 2024 16:19:50 +0100 Subject: [PATCH 155/330] Fix yazi config --- modules/programs/yazi/default.nix | 22 +++++++++++++--------- modules/programs/yazi/yazi.nix | 1 - 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/modules/programs/yazi/default.nix b/modules/programs/yazi/default.nix index 692b72d..58e9354 100644 --- a/modules/programs/yazi/default.nix +++ b/modules/programs/yazi/default.nix @@ -37,13 +37,17 @@ description = "Additional keymap for yazi"; }; }; - config = lib.mkIf config.mods.yazi.enable ( - lib.optionalAttrs (options ? home.packages) { programs.yazi = import ./yazi.nix; } - // { - programs.yazi.settings = { - settings = config.mods.yazi.additionalKeymap; - keymap = config.mods.yazi.additionalConfig; - }; - } - ); + config = + let + conf = import ./yazi.nix; + in + lib.optionalAttrs (options ? home.packages) ( + lib.mkIf config.mods.yazi.enable { + programs.yazi = { + enable = conf.enable; + settings = conf.settings // config.mods.yazi.additionalKeymap; + keymap = conf.keymap // config.mods.yazi.additionalConfig; + }; + } + ); } diff --git a/modules/programs/yazi/yazi.nix b/modules/programs/yazi/yazi.nix index 236d422..92853d0 100644 --- a/modules/programs/yazi/yazi.nix +++ b/modules/programs/yazi/yazi.nix @@ -1,4 +1,3 @@ -{ lib, config, ... }: { # don't ask.... enable = true; From 7cba9d23a13216a1430e14d1cec2a88bd686dbeb Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 9 Nov 2024 18:17:27 +0100 Subject: [PATCH 156/330] Fix regreet docs --- modules/programs/fish.nix | 1 + modules/programs/greetd.nix | 25 ++++++++++++++----------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 41f394f..25aa3d1 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -66,6 +66,7 @@ abbr --add rm 'rip' abbr --add cp 'fcp' abbr --add cd 'z' + abbr --add yazi 'y' set fish_greeting # pwd based on the value of _ZO_RESOLVE_SYMLINKS. diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 075b575..e8900f5 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -57,15 +57,15 @@ List of environments that should be available in the login prompt. ''; }; - }; - regreet = { - customSettings = lib.mkOption { - default = { }; - example = { }; - type = with lib.types; attrsOf anything; - description = '' - Custom regret settings. See https://github.com/rharish101/ReGreet/blob/main/regreet.sample.toml for more information. - ''; + regreet = { + customSettings = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + Custom regret settings. See https://github.com/rharish101/ReGreet/blob/main/regreet.sample.toml for more information. + ''; + }; }; }; }; @@ -135,8 +135,11 @@ # unlock GPG keyring on login security.pam.services.greetd.enableGnomeKeyring = true; - } // lib.optionalAttrs (options ? home) { - xdg.configFile."regreet/regreet.toml".source = (pkgs.formats.toml { }).generate "regreet" config.mods.regreet.customSettings; + } + // lib.optionalAttrs (options ? home) { + xdg.configFile."regreet/regreet.toml".source = + (pkgs.formats.toml { }).generate "regreet" + config.mods.greetd.regreet.customSettings; } ); } From a138b332a3c57e66acc3ccd22a7e7435b71a368c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 9 Nov 2024 23:25:39 +0100 Subject: [PATCH 157/330] Update update command (lel) --- modules/programs/fish.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 25aa3d1..6cfebc0 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -46,8 +46,7 @@ set EDITOR "neovide --no-fork" alias rebuild='nh os switch' - alias update='nix flake update $FLAKE' - alias updateLock='nix flake lock $FLAKE --update-input' + alias update='nix flake update --flake $FLAKE' abbr --add ls 'lsd' abbr --add :q 'exit' abbr --add gh 'git push origin' From eb1cb1f2974ea2b3778eac5bcd4e2c131c024737 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 9 Nov 2024 23:59:21 +0100 Subject: [PATCH 158/330] Include Hyprspace as a potential plugin --- base/common_hardware.nix | 2 +- base/env.nix | 2 +- flake.nix | 7 ++--- modules/conf.nix | 39 ++------------------------ modules/programs/fish.nix | 2 +- modules/programs/hyprland/hyprland.nix | 37 ++++++++++++++++++------ 6 files changed, 36 insertions(+), 53 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 101a0a7..e63eb76 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -41,7 +41,7 @@ in ''resume="PARTLABEL=SWAP"'' ''quiet'' ''udev.log_level=3'' - ] ++ config.conf.boot_params; + ] ++ config.conf.bootParams; }; # Enable networking diff --git a/base/env.nix b/base/env.nix index 9a62d7e..f4de6c3 100644 --- a/base/env.nix +++ b/base/env.nix @@ -12,7 +12,7 @@ sessionVariables = { NIXOS_OZONE_WL = "1"; GOPATH = "$HOME/.go"; - FLAKE = config.conf.nix_path; + FLAKE = config.conf.nixosConfigPath; }; }; } diff --git a/flake.nix b/flake.nix index 810f010..daa994d 100644 --- a/flake.nix +++ b/flake.nix @@ -16,10 +16,9 @@ sops-nix.url = "github:Mic92/sops-nix"; - # Hyprspace = { - # url = "github:KZDKM/Hyprspace"; - # inputs.hyprland.follows = "nixpkgs"; - # }; + Hyprspace = { + url = "github:KZDKM/Hyprspace"; + }; nur.url = "github:nix-community/nur"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; diff --git a/modules/conf.nix b/modules/conf.nix index 2c3236f..9d6a162 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -93,7 +93,7 @@ }; }; - boot_params = lib.mkOption { + bootParams = lib.mkOption { default = [ ]; example = [ "resume=something" ]; type = with lib.types; listOf str; @@ -150,7 +150,7 @@ ''; }; - nixos-config-path = lib.mkOption { + nixosConfigPath = lib.mkOption { default = "/home/${config.conf.username}/gits/nixos/."; example = "yourpath/."; type = lib.types.str; @@ -159,41 +159,6 @@ ''; }; - nvim-colorscheme = lib.mkOption { - default = { - tokyonight = { - enable = true; - }; - }; - example = { - catppuccin = { - enable = true; - }; - }; - type = lib.types.attrs; - description = '' - nixvim colorscheme. - ''; - }; - - nix_path = lib.mkOption { - default = "/home/${config.conf.username}/gits/nixos"; - example = "yourpath"; - type = lib.types.str; - description = '' - The default path for your configuration. - ''; - }; - - kb_layout = lib.mkOption { - default = "dashie"; - example = "us"; - type = lib.types.str; - description = '' - The layout used in services. - ''; - }; - systemStateVersion = lib.mkOption { example = "24.05"; default = "23.05"; diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 6cfebc0..b45ec5a 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -41,7 +41,7 @@ # Utility functions for zoxide. # - export NIX_PATH="$NIX_PATH:${config.conf.nixos-config-path}" + export NIX_PATH="$NIX_PATH:${config.conf.nixosConfigPath}" set EDITOR "neovide --no-fork" diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index f132ef5..ab23b34 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -3,6 +3,7 @@ lib, options, pkgs, + inputs, ... }: let @@ -89,6 +90,23 @@ in Plugins to be added to Hyprland. ''; }; + pluginConfig = lib.mkOption { + default = { }; + example = { }; + type = with lib.types; attrsOf anything; + description = '' + Plugin configuration to be added to Hyprland. + ''; + }; + hyprspaceEnable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables Hyprspace plugin for hyprland. + Please note, plugins tend to break VERY often. + ''; + }; }; }; @@ -362,19 +380,20 @@ in "oxinoti" ] ++ config.mods.hyprland.extraAutostart; - # plugin = { - # hyprspace = { - # bind = [ - # "SUPER, W, overview:toggle, toggle" - # ]; - # }; - # }; + plugin = { + hyprspace = lib.mkIf config.mods.hyprland.hyprspaceEnable { + bind = [ + "SUPER, W, overview:toggle, toggle" + ]; + }; + } // config.mods.hyprland.pluginConfig; } // config.mods.hyprland.customConfig else lib.mkForce config.mods.hyprland.customConfig; - plugins = config.mods.hyprland.plugins; - #inputs.Hyprspace.packages.${pkgs.system}.Hyprspace + plugins = [ + (lib.mkIf config.mods.hyprland.hyprspaceEnable inputs.Hyprspace.packages.${pkgs.system}.Hyprspace) + ] ++ config.mods.hyprland.plugins; }; } ); From 5ada5903ef57496d12bfe840dd454720486adee3 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 11 Nov 2024 15:51:39 +0100 Subject: [PATCH 159/330] Yazi alias fix --- modules/programs/fish.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index b45ec5a..ca9e628 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -65,7 +65,7 @@ abbr --add rm 'rip' abbr --add cp 'fcp' abbr --add cd 'z' - abbr --add yazi 'y' + abbr --add y 'yazi' set fish_greeting # pwd based on the value of _ZO_RESOLVE_SYMLINKS. From 10e362af1893185456e9f7515d5950a2696f86bf Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 16 Nov 2024 16:46:32 +0100 Subject: [PATCH 160/330] Add credits --- docs/src/README.md | 8 +++++++- flake.nix | 1 + modules/programs/hyprland/hyprlock.nix | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/src/README.md b/docs/src/README.md index bb68834..981ddd0 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -153,7 +153,7 @@ nixosConfigurations = # Installation -You can find a custom ISO on my NextCloud server: [Link](https://cloud.dashie.org/s/z7G3zS9SXeEt2ER). +You can find a custom ISO on my NextCloud server: [Link](https://cloud.dashie.org/s/z7G3zS9SXeEt2ERD). With this, you will receive the example config in /iso/example alongside the gnome desktop environment, as well as a few tools like gnome-disks, neovim, vscodium, a browser etc. @@ -199,3 +199,9 @@ For package lists, please check the individual modules, as the lists can be long - mime: Mime type configuration - xkb: Keyboard layout configuration - scripts: Various preconfigured scripts with the ability to add more + +# Credits + +- [Fufexan]( https://github.com/fufexan) for the xdg-mime config: +- [Catppuccin]( https://github.com/catppuccin) for base16 colors +- [Danth]( https://github.com/danth) for providing a base for the nix docs diff --git a/flake.nix b/flake.nix index daa994d..56557d7 100644 --- a/flake.nix +++ b/flake.nix @@ -18,6 +18,7 @@ Hyprspace = { url = "github:KZDKM/Hyprspace"; + inputs.hyprland.follows = "hyprland"; }; nur.url = "github:nix-community/nur"; diff --git a/modules/programs/hyprland/hyprlock.nix b/modules/programs/hyprland/hyprlock.nix index 5aa5934..a33243f 100644 --- a/modules/programs/hyprland/hyprlock.nix +++ b/modules/programs/hyprland/hyprlock.nix @@ -19,6 +19,9 @@ config = lib.mkIf config.mods.hyprland.hyprlock.enable ( lib.optionalAttrs (options ? xdg.configFile) { + stylix.targets.hyprlock = { + enable = false; + }; home.packages = with pkgs; [ hyprlock ]; programs.hyprlock = lib.mkIf config.mods.hyprland.hyprlock.enable { enable = true; From 05e3b8b222f67ed2d2487a9025f40a3b83777d89 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 17 Nov 2024 13:41:10 +0100 Subject: [PATCH 161/330] Temporarily remove neovide --- flake.nix | 4 +++- modules/programs/basePackages.nix | 2 +- modules/programs/coding.nix | 3 ++- modules/programs/gnomeServices.nix | 25 ++++++++++++++++--------- modules/programs/greetd.nix | 2 ++ 5 files changed, 24 insertions(+), 12 deletions(-) diff --git a/flake.nix b/flake.nix index 56557d7..f944a9b 100644 --- a/flake.nix +++ b/flake.nix @@ -14,7 +14,8 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - sops-nix.url = "github:Mic92/sops-nix"; + # wow... major fuckup -> TODO remove + sops-nix.url = "github:Mic92/sops-nix?ref=d2bd7f433b28db6bc7ae03d5eca43564da0af054"; Hyprspace = { url = "github:KZDKM/Hyprspace"; @@ -63,6 +64,7 @@ system = "x86_64-linux"; overlays = [ inputs.nur.overlay ]; config = { + allowUnsupportedSystem = true; permittedInsecurePackages = [ "olm-3.2.16" ]; allowUnfree = true; }; diff --git a/modules/programs/basePackages.nix b/modules/programs/basePackages.nix index 5fa0aff..3356e35 100644 --- a/modules/programs/basePackages.nix +++ b/modules/programs/basePackages.nix @@ -119,7 +119,7 @@ package = pkgs.nix-direnv; }; }; - ssh.startAgent = true; + #ssh.startAgent = true; gnupg.agent.enable = true; } // config.mods.basePackages.specialPrograms diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 456acfb..7969b01 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -451,7 +451,8 @@ home.packages = with pkgs; [ - (lib.mkIf config.mods.coding.dashvim neovide) + # TODO re-enable, fucking amazing experience right now + # (lib.mkIf config.mods.coding.dashvim neovide) (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) ] ++ config.mods.coding.additionalPackages diff --git a/modules/programs/gnomeServices.nix b/modules/programs/gnomeServices.nix index 4bc4d7e..886b9e7 100644 --- a/modules/programs/gnomeServices.nix +++ b/modules/programs/gnomeServices.nix @@ -29,6 +29,9 @@ config = lib.mkIf config.mods.gnomeServices.enable ( lib.optionalAttrs (options ? services.gnome.gnome-keyring) { programs.dconf.enable = true; + environment.extraInit = '' + export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/keyring/ssh" + ''; services = { # needed for GNOME services outside of GNOME Desktop dbus.packages = with pkgs; [ @@ -41,15 +44,19 @@ }; } // lib.optionalAttrs (options ? home.packages) { - home.packages = - let - packages = with pkgs; [ - nautilus - sushi - nautilus-python - ]; - in - lib.mkIf config.mods.nautilus.enable packages; + services.gnome-keyring.enable = true; + home = { + packages = + let + packages = with pkgs; [ + gcr + nautilus + sushi + nautilus-python + ]; + in + lib.mkIf config.mods.nautilus.enable packages; + }; } ); } diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index e8900f5..5756100 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -135,6 +135,8 @@ # unlock GPG keyring on login security.pam.services.greetd.enableGnomeKeyring = true; + security.pam.services.greetd.sshAgentAuth = true; + security.pam.sshAgentAuth.enable = true; } // lib.optionalAttrs (options ? home) { xdg.configFile."regreet/regreet.toml".source = From bcc3ba0aee4865c4ccc4b810f4392d0f2dbf6891 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 17 Nov 2024 13:49:28 +0100 Subject: [PATCH 162/330] Add additional git config --- modules/programs/git.nix | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/modules/programs/git.nix b/modules/programs/git.nix index 2e78f4c..f409106 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -18,6 +18,22 @@ type = lib.types.str; description = "Git email"; }; + additionalConfig = lib.mkOption { + default = { + merge = { + tool = "nvimdiff"; + }; + diff = { + tool = "nvimdiff"; + }; + pull.rebase = true; + }; + example = { + pull.rebase = false; + }; + type = with lib.types; attrsOf anything; + description = "Additional git config"; + }; sshConfig = lib.mkOption { default = '' Host github.com @@ -53,14 +69,7 @@ enable = true; userName = config.mods.git.username; userEmail = config.mods.git.email; - extraConfig = { - merge = { - tool = "nvimdiff"; - }; - diff = { - tool = "nvimdiff"; - }; - }; + extraConfig = config.mods.git.additionalConfig; }; home.file.".ssh/config".text = config.mods.git.sshConfig; } From e3a8bbe8535cc0edc2ceeb6151250d4a402809ee Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 17 Nov 2024 14:23:24 +0100 Subject: [PATCH 163/330] Update kitty config --- modules/programs/fish.nix | 10 ++++++++++ modules/programs/kitty.nix | 37 +++++++++++++++++++++++++++++++------ 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index ca9e628..722b101 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -1,9 +1,15 @@ { lib, + pkgs, + inputs, config, options, ... }: +let + base16 = pkgs.callPackage inputs.base16.lib { }; + scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); +in { options.mods.fish = { enable = lib.mkOption { @@ -67,6 +73,10 @@ abbr --add cd 'z' abbr --add y 'yazi' + set fish_color_autosuggestion '${scheme.base07}' + set fish_color_param '${scheme.base06}' + set fish_color_operator '${scheme.base0E}' + set fish_greeting # pwd based on the value of _ZO_RESOLVE_SYMLINKS. function __zoxide_pwd diff --git a/modules/programs/kitty.nix b/modules/programs/kitty.nix index 335c132..56b8126 100644 --- a/modules/programs/kitty.nix +++ b/modules/programs/kitty.nix @@ -88,23 +88,48 @@ in inactive_tab_foreground = "#" + scheme.base04; tab_bar_background = "#" + scheme.base01; - color0 = base; + mark1_foreground = "#" + scheme.base00; + mark1_background = "#" + scheme.base07; + mark2_foreground = "#" + scheme.base00; + mark2_background = "#" + scheme.base0E; + mark3_foreground = "#" + scheme.base00; + mark3_background = "#" + scheme.base08; + + color0 = "#" + scheme.base03; color1 = "#" + scheme.base08; color2 = "#" + scheme.base0B; color3 = "#" + scheme.base0A; color4 = "#" + scheme.base0D; - color5 = "#" + scheme.base0E; + color5 = "#" + scheme.base06; color6 = "#" + scheme.base0C; - color7 = "#" + scheme.base05; + color7 = "#" + scheme.base07; - color8 = "#" + scheme.base03; + color8 = "#" + scheme.base04; color9 = "#" + scheme.base08; color10 = "#" + scheme.base0B; color11 = "#" + scheme.base0A; color12 = "#" + scheme.base0D; - color13 = "#" + scheme.base0E; + color13 = "#" + scheme.base06; color14 = "#" + scheme.base0C; - color15 = "#" + scheme.base07; + color15 = "#" + scheme.base0B; + + # color0 = base; + # color1 = "#" + scheme.base08; + # color2 = "#" + scheme.base0B; + # color3 = "#" + scheme.base0A; + # color4 = "#" + scheme.base0D; + # color5 = "#" + scheme.base0E; + # color6 = "#" + scheme.base0C; + # color7 = "#" + scheme.base05; + # + # color8 = "#" + scheme.base03; + # color9 = "#" + scheme.base08; + # color10 = "#" + scheme.base0B; + # color11 = "#" + scheme.base0A; + # color12 = "#" + scheme.base0D; + # color13 = "#" + scheme.base0E; + # color14 = "#" + scheme.base0C; + # color15 = "#" + scheme.base07; shell = lib.mkIf config.mods.fish.enable "fish"; } // config.mods.kitty.additionalConfig; From 2073868189ad4f6b8f975d6dceea0e61242a8c97 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 27 Nov 2024 19:07:52 +0100 Subject: [PATCH 164/330] Update home-manager and nixos versions --- flake.nix | 5 ++--- home/common.nix | 1 + modules/conf.nix | 4 ++-- modules/programs/basePackages.nix | 1 - modules/programs/coding.nix | 3 +-- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/flake.nix b/flake.nix index f944a9b..bc506c1 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,7 @@ inputs = { nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; - stable.url = "github:NixOs/nixpkgs/nixos-24.05"; + stable.url = "github:NixOs/nixpkgs/nixos-24.11"; nix-flatpak = { url = "github:gmodena/nix-flatpak"; @@ -14,8 +14,7 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - # wow... major fuckup -> TODO remove - sops-nix.url = "github:Mic92/sops-nix?ref=d2bd7f433b28db6bc7ae03d5eca43564da0af054"; + sops-nix.url = "github:Mic92/sops-nix"; Hyprspace = { url = "github:KZDKM/Hyprspace"; diff --git a/home/common.nix b/home/common.nix index 4b01820..a65b7d5 100644 --- a/home/common.nix +++ b/home/common.nix @@ -21,6 +21,7 @@ in homeDirectory = "/home/${username}"; sessionPath = [ "$HOME/.cargo/bin" ]; + enableNixpkgsReleaseCheck = false; sessionVariables = { GOROOT = "$HOME/.go"; QT_QPA_PLATFORMTHEME = "qt5ct"; diff --git a/modules/conf.nix b/modules/conf.nix index 9d6a162..5645abb 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -160,7 +160,7 @@ }; systemStateVersion = lib.mkOption { - example = "24.05"; + example = "24.11"; default = "23.05"; type = lib.types.str; description = '' @@ -168,7 +168,7 @@ ''; }; homeStateVersion = lib.mkOption { - default = "24.05"; + default = "24.11"; example = "23.05"; type = lib.types.str; description = '' diff --git a/modules/programs/basePackages.nix b/modules/programs/basePackages.nix index 3356e35..0f82e0d 100644 --- a/modules/programs/basePackages.nix +++ b/modules/programs/basePackages.nix @@ -119,7 +119,6 @@ package = pkgs.nix-direnv; }; }; - #ssh.startAgent = true; gnupg.agent.enable = true; } // config.mods.basePackages.specialPrograms diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 7969b01..456acfb 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -451,8 +451,7 @@ home.packages = with pkgs; [ - # TODO re-enable, fucking amazing experience right now - # (lib.mkIf config.mods.coding.dashvim neovide) + (lib.mkIf config.mods.coding.dashvim neovide) (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) ] ++ config.mods.coding.additionalPackages From 5f60c3ba9181f6c03581f820af7beac2b0ca3af2 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 30 Nov 2024 13:02:31 +0100 Subject: [PATCH 165/330] Change default cursor to catppuccin --- modules/programs/gnome.nix | 5 +++++ modules/programs/gnomeServices.nix | 7 +++++++ modules/programs/greetd.nix | 8 ++------ modules/programs/hyprland/hyprland.nix | 3 +-- modules/programs/stylix.nix | 7 +++++-- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/modules/programs/gnome.nix b/modules/programs/gnome.nix index a4f0921..2446a42 100644 --- a/modules/programs/gnome.nix +++ b/modules/programs/gnome.nix @@ -63,6 +63,11 @@ disable-user-extensions = false; enabled-extensions = map (extension: extension.extensionUuid) defaultExtensions; }; + "org/gnome/desktop/interface" = { + cursor-theme = "${config.mods.stylix.cursor.name}"; + cursor-size = config.mods.stylix.cursor.size; + color-scheme = "prefer-dark"; + }; }; }; } diff --git a/modules/programs/gnomeServices.nix b/modules/programs/gnomeServices.nix index 886b9e7..0915e3a 100644 --- a/modules/programs/gnomeServices.nix +++ b/modules/programs/gnomeServices.nix @@ -45,6 +45,13 @@ } // lib.optionalAttrs (options ? home.packages) { services.gnome-keyring.enable = true; + dconf.settings = { + "org/gnome/desktop/interface" = { + cursor-theme = "${config.mods.stylix.cursor.name}"; + cursor-size = config.mods.stylix.cursor.size; + color-scheme = "prefer-dark"; + }; + }; home = { packages = let diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 5756100..a88e700 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -106,8 +106,6 @@ # 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 @@ -117,15 +115,13 @@ force_no_accel = true } - cursor { - enable_hyprcursor = false - } - misc { disable_splash_rendering = false disable_hyprland_logo = false } + "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" + "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" env=XCURSOR_THEME,${config.mods.stylix.cursor.name} env=XCURSOR_SIZE,${toString config.mods.stylix.cursor.size} env=QT_QPA_PLATFORMTHEME,qt5ct diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index ab23b34..238dd0e 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -298,8 +298,7 @@ in }; cursor = { - # conversion seems to be borked right now, i want a smooth bibata :( - enable_hyprcursor = false; + enable_hyprcursor = true; no_hardware_cursors = lib.mkIf config.mods.gpu.nvidia.enable true; # no_break_fs_vrr = true; }; diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index 6f3ea07..d63f4f8 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -50,8 +50,11 @@ }; cursor = lib.mkOption { default = { - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Classic"; + # broken + #package = pkgs.bibata-cursors; + #name = "Bibata-Modern-Classic"; + package = pkgs.catppuccin-cursors.mochaLavender; + name = "catppuccin-mocha-lavender-cursors"; size = 24; }; example = { }; From 639195dc432ee161b0523d5bd490bf63860919f8 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 2 Dec 2024 09:51:24 +0100 Subject: [PATCH 166/330] Update font --- modules/programs/stylix.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index d63f4f8..44a76b5 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -74,7 +74,7 @@ }; monospace = { - package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; }); + package = pkgs.nerd-fonts.jetbrains-mono; name = "JetBrainsMono Nerd Font Mono"; }; From c11addd4cb1fae493e3c9b06adc6db9ca3aa99f6 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 2 Dec 2024 10:31:34 +0100 Subject: [PATCH 167/330] Update .net --- flake.nix | 15 ++++++++++++++- modules/programs/coding.nix | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index bc506c1..7fe4767 100644 --- a/flake.nix +++ b/flake.nix @@ -64,7 +64,20 @@ overlays = [ inputs.nur.overlay ]; config = { allowUnsupportedSystem = true; - permittedInsecurePackages = [ "olm-3.2.16" ]; + permittedInsecurePackages = [ + "olm-3.2.16" + # well done dotnet... + # this is just for omnisharp + "dotnet-core-combined" + "dotnet-sdk-6.0.428" + "dotnet-sdk-wrapped-6.0.428" + "dotnet-sdk-6.0.136" + "dotnet-sdk-wrapped-6.0.136" + "dotnet-sdk-7.0.120" + "dotnet-sdk-wrapped-7.0.120" + "dotnet-sdk-7.0.410" + "dotnet-sdk-wrapped-7.0.410" + ]; allowUnfree = true; }; }; diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 456acfb..8f2b82f 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -224,7 +224,7 @@ packages = lib.mkOption { default = with pkgs; [ #.! - dotnet-sdk_8 + dotnet-sdk omnisharp-roslyn csharpier netcoredbg From e8ace4a2f30ea661e0034a1dced737291cf4d2b5 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 3 Dec 2024 20:58:18 +0100 Subject: [PATCH 168/330] Add gleam --- modules/programs/coding.nix | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 8f2b82f..4e2afc4 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -375,6 +375,24 @@ ''; }; }; + gleam = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables gleam. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ gleam ]; + example = [ ]; + type = with lib.types; listOf package; + description = '' + gleam packages + ''; + }; + }; asm = { enable = lib.mkOption { default = true; @@ -469,7 +487,8 @@ ++ (lib.lists.optionals config.mods.coding.languages.configFiles.enable config.mods.coding.languages.configFiles.packages) ++ (lib.lists.optionals config.mods.coding.languages.ts-js.enable config.mods.coding.languages.ts-js.packages) ++ (lib.lists.optionals config.mods.coding.languages.typst.enable config.mods.coding.languages.typst.packages) - ++ (lib.lists.optionals config.mods.coding.languages.zig.enable config.mods.coding.languages.zig.packages); + ++ (lib.lists.optionals config.mods.coding.languages.zig.enable config.mods.coding.languages.zig.packages) + ++ (lib.lists.optionals config.mods.coding.languages.gleam.enable config.mods.coding.languages.gleam.packages); } ); } From 8e221806d36d244f8cebd3ff006eff9ed4fbbac1 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 3 Dec 2024 21:05:39 +0100 Subject: [PATCH 169/330] Add oxipaste cache --- flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flake.nix b/flake.nix index 7fe4767..d7372cb 100644 --- a/flake.nix +++ b/flake.nix @@ -106,12 +106,14 @@ "https://hyprland.cachix.org" "https://anyrun.cachix.org" "https://cache.garnix.io" + "https://oxipaste.cachix.io" ]; extra-trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + "oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc=" ]; }; } From 5556e410aef954f503381d53a8744e86a1186c8d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 3 Dec 2024 23:55:39 +0100 Subject: [PATCH 170/330] Add caches --- flake.nix | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index d7372cb..b0aeb50 100644 --- a/flake.nix +++ b/flake.nix @@ -106,7 +106,13 @@ "https://hyprland.cachix.org" "https://anyrun.cachix.org" "https://cache.garnix.io" - "https://oxipaste.cachix.io" + "https://oxipaste.cachix.org" + "https://oxinoti.cachix.org" + "https://oxishut.cachix.org" + "https://oxidash.cachix.org" + "https://oxicalc.cachix.org" + "https://hyprdock.cachix.org" + "https://reset.cachix.org" ]; extra-trusted-public-keys = [ @@ -114,6 +120,12 @@ "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" "oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc=" + "oxinoti.cachix.org-1:dvSoJl2Pjo5HMaNngdBbSaixK9BSf2N8gzjP2MdGvfc=" + "oxishut.cachix.org-1:axyAGF3XMh1IyMAW4UMbQCdMNovDH0KH6hqLLRJH8jU=" + "oxidash.cachix.org-1:5K2FNHp7AS8VF7LmQkJAUG/dm6UHCz4ngshBVbjFX30=" + "oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ=" + "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" + "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" ]; }; } From 5b8c873527109d1a9acf2ee4492ea31a9adfb34c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 4 Dec 2024 14:53:53 +0100 Subject: [PATCH 171/330] Update ironbar --- flake.nix | 3 ++- modules/programs/gnome.nix | 2 +- modules/programs/gnomeServices.nix | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index b0aeb50..a84f2cb 100644 --- a/flake.nix +++ b/flake.nix @@ -25,7 +25,8 @@ hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; ironbar = { - url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; + url = "github:JakeStanger/ironbar"; + inputs.nixpkgs.follows = "nixpkgs"; }; zen-browser.url = "github:fufexan/zen-browser-flake"; diff --git a/modules/programs/gnome.nix b/modules/programs/gnome.nix index 2446a42..885eb2f 100644 --- a/modules/programs/gnome.nix +++ b/modules/programs/gnome.nix @@ -64,7 +64,7 @@ enabled-extensions = map (extension: extension.extensionUuid) defaultExtensions; }; "org/gnome/desktop/interface" = { - cursor-theme = "${config.mods.stylix.cursor.name}"; + cursor-theme = config.mods.stylix.cursor.name; cursor-size = config.mods.stylix.cursor.size; color-scheme = "prefer-dark"; }; diff --git a/modules/programs/gnomeServices.nix b/modules/programs/gnomeServices.nix index 0915e3a..8781c12 100644 --- a/modules/programs/gnomeServices.nix +++ b/modules/programs/gnomeServices.nix @@ -47,7 +47,7 @@ services.gnome-keyring.enable = true; dconf.settings = { "org/gnome/desktop/interface" = { - cursor-theme = "${config.mods.stylix.cursor.name}"; + cursor-theme = config.mods.stylix.cursor.name; cursor-size = config.mods.stylix.cursor.size; color-scheme = "prefer-dark"; }; From 37606eae74313a287db08eb69f32a7123af2b37c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 13 Dec 2024 10:45:35 +0100 Subject: [PATCH 172/330] Add dotnet wrapped to allowed packages --- flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flake.nix b/flake.nix index a84f2cb..55257e1 100644 --- a/flake.nix +++ b/flake.nix @@ -70,6 +70,8 @@ # well done dotnet... # this is just for omnisharp "dotnet-core-combined" + "dotnet-wrapped-combined" + "dotnet-combined" "dotnet-sdk-6.0.428" "dotnet-sdk-wrapped-6.0.428" "dotnet-sdk-6.0.136" From b0054a3fe150dd568eb27fd9a59231b277c6f503 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 18 Dec 2024 23:25:10 +0100 Subject: [PATCH 173/330] Update gnome services --- modules/programs/gnomeServices.nix | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/programs/gnomeServices.nix b/modules/programs/gnomeServices.nix index 8781c12..ffd8a06 100644 --- a/modules/programs/gnomeServices.nix +++ b/modules/programs/gnomeServices.nix @@ -28,7 +28,20 @@ config = lib.mkIf config.mods.gnomeServices.enable ( lib.optionalAttrs (options ? services.gnome.gnome-keyring) { - programs.dconf.enable = true; + programs.dconf = { + enable = true; + profiles.user.databases = [ + { + settings = { + "org/gnome/desktop/interface" = { + cursor-theme = config.mods.stylix.cursor.name; + cursor-size = lib.gvariant.mkInt32 config.mods.stylix.cursor.size; + color-scheme = "prefer-dark"; + }; + }; + } + ]; + }; environment.extraInit = '' export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/keyring/ssh" ''; From 01bbcad7faadbc90be2c2a0d257d18f0b7efcb1c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 22 Dec 2024 13:49:01 +0100 Subject: [PATCH 174/330] Allow pkg overrides --- lib/default.nix | 4 +++- modules/programs/hyprland/hyprland.nix | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/default.nix b/lib/default.nix index 9060867..f2bdc8b 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -67,6 +67,8 @@ ]; }, additionalInputs ? { }, + overridePkgs ? false, + pkgOverrides ? pkgs, ... }: builtins.listToAttrs ( @@ -84,11 +86,11 @@ inherit self inputs - pkgs mod additionalHomeConfig root ; + pkgs = if overridePkgs then pkgs else pkgOverrides; hostName = name; homeMods = mods.home; additionalHomeMods = additionalMods.home; diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 238dd0e..0d06c81 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -300,7 +300,8 @@ in cursor = { enable_hyprcursor = true; no_hardware_cursors = lib.mkIf config.mods.gpu.nvidia.enable true; - # no_break_fs_vrr = true; + # done with nix, this would break the current setup otherwise + sync_gsettings_theme = false; }; gestures = { From 9cef7c614b015c82e0469f442db41cf2806948c4 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 22 Dec 2024 14:11:02 +0100 Subject: [PATCH 175/330] Change to LGPL --- LICENSE | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 2 +- 2 files changed, 168 insertions(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index f288702..7b6bec5 100644 --- a/LICENSE +++ b/LICENSE @@ -1,3 +1,169 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 @@ -672,3 +838,4 @@ may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . + diff --git a/flake.nix b/flake.nix index 55257e1..3f12f65 100644 --- a/flake.nix +++ b/flake.nix @@ -62,7 +62,7 @@ }; pkgs = import inputs.nixpkgs { system = "x86_64-linux"; - overlays = [ inputs.nur.overlay ]; + overlays = [ inputs.nur.overlays.default ]; config = { allowUnsupportedSystem = true; permittedInsecurePackages = [ From 86238b157c02131eadd0e20d70019d22d6e34780 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 22 Dec 2024 15:00:48 +0100 Subject: [PATCH 176/330] Add jitsi to allowed pkgs --- base/common_hardware.nix | 3 ++- flake.nix | 44 ++++++++++++++++++++++++---------------- lib/default.nix | 5 +++-- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index e63eb76..07f0b88 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -91,7 +91,8 @@ in # Enable sound with pipewire. hardware = { pulseaudio.enable = false; - cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + cpu.${config.conf.cpu}.updateMicrocode = + lib.mkDefault config.hardware.enableRedistributableFirmware; }; security.rtkit.enable = true; diff --git a/flake.nix b/flake.nix index 3f12f65..2c2b320 100644 --- a/flake.nix +++ b/flake.nix @@ -54,10 +54,28 @@ outputs = { self, ... }@inputs: let + permittedPackages = [ + "olm-3.2.16" + # well done dotnet... + # this is just for omnisharp + "dotnet-core-combined" + "dotnet-wrapped-combined" + "dotnet-combined" + "dotnet-sdk-6.0.428" + "dotnet-sdk-wrapped-6.0.428" + "dotnet-sdk-6.0.136" + "dotnet-sdk-wrapped-6.0.136" + "dotnet-sdk-7.0.120" + "dotnet-sdk-wrapped-7.0.120" + "dotnet-sdk-7.0.410" + "dotnet-sdk-wrapped-7.0.410" + "jitsi-meet-1.0.8043" + ]; stable = import inputs.stable { system = "x86_64-linux"; config = { allowUnfree = true; + permittedInsecurePackages = permittedPackages; }; }; pkgs = import inputs.nixpkgs { @@ -65,33 +83,23 @@ overlays = [ inputs.nur.overlays.default ]; config = { allowUnsupportedSystem = true; - permittedInsecurePackages = [ - "olm-3.2.16" - # well done dotnet... - # this is just for omnisharp - "dotnet-core-combined" - "dotnet-wrapped-combined" - "dotnet-combined" - "dotnet-sdk-6.0.428" - "dotnet-sdk-wrapped-6.0.428" - "dotnet-sdk-6.0.136" - "dotnet-sdk-wrapped-6.0.136" - "dotnet-sdk-7.0.120" - "dotnet-sdk-wrapped-7.0.120" - "dotnet-sdk-7.0.410" - "dotnet-sdk-wrapped-7.0.410" - ]; + permittedInsecurePackages = permittedPackages; allowUnfree = true; }; }; in rec { dashNixLib = import ./lib { - inherit self inputs pkgs; + inherit + self + inputs + pkgs + stable + ; lib = inputs.nixpkgs.lib; }; docs = import ./docs { - inherit inputs pkgs; + inherit inputs pkgs stable; lib = inputs.nixpkgs.lib; build_systems = dashNixLib.build_systems; }; diff --git a/lib/default.nix b/lib/default.nix index f2bdc8b..8bad291 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -2,6 +2,7 @@ inputs, pkgs, self, + stable, lib, ... }: @@ -68,7 +69,6 @@ }, additionalInputs ? { }, overridePkgs ? false, - pkgOverrides ? pkgs, ... }: builtins.listToAttrs ( @@ -90,7 +90,8 @@ additionalHomeConfig root ; - pkgs = if overridePkgs then pkgs else pkgOverrides; + pkgs = if overridePkgs then pkgs else stable; + alternativePkgs = if overridePkgs then stable else pkgs; hostName = name; homeMods = mods.home; additionalHomeMods = additionalMods.home; From 8ffab823cacfba6df8f72fdfd183731f4cacf845 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 22 Dec 2024 15:50:26 +0100 Subject: [PATCH 177/330] Add plymouth to modules --- base/common_hardware.nix | 3 --- modules/programs/default.nix | 1 + modules/programs/plymouth.nix | 19 +++++++++++++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 modules/programs/plymouth.nix diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 07f0b88..24edad2 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -22,9 +22,6 @@ in }; efi.canTouchEfiVariables = true; }; - plymouth = { - enable = true; - }; kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; initrd = { verbose = false; diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 5c0769c..c14849e 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -28,6 +28,7 @@ ./nextcloud.nix ./oxi ./piper.nix + ./plymouth.nix ./printing.nix ./scripts.nix ./sddm.nix diff --git a/modules/programs/plymouth.nix b/modules/programs/plymouth.nix new file mode 100644 index 0000000..5bffa2d --- /dev/null +++ b/modules/programs/plymouth.nix @@ -0,0 +1,19 @@ +{ + lib, + config, + options, + ... +}: +{ + options.mods.plymouth = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables the plymouth"; + }; + }; + config = lib.mkIf config.mods.plymouth.enable ( + lib.optionalAttrs (options ? boot.plymouth) { boot.plymouth.enable = true; } + ); +} From 8551193dd2dc56444114b87f9c46c3f747a94301 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 22 Dec 2024 16:35:42 +0100 Subject: [PATCH 178/330] temporary nextcloud fix --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index 2c2b320..5367475 100644 --- a/flake.nix +++ b/flake.nix @@ -70,6 +70,7 @@ "dotnet-sdk-7.0.410" "dotnet-sdk-wrapped-7.0.410" "jitsi-meet-1.0.8043" + "nextcloud-27.1.11" ]; stable = import inputs.stable { system = "x86_64-linux"; From dacf8003632d86bedd361222ec4510cd3233440e Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 22 Dec 2024 19:31:20 +0100 Subject: [PATCH 179/330] Remove nur --- flake.nix | 2 -- modules/programs/browser/firefox.nix | 20 +------------------- 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/flake.nix b/flake.nix index 5367475..ef82fd2 100644 --- a/flake.nix +++ b/flake.nix @@ -21,7 +21,6 @@ inputs.hyprland.follows = "hyprland"; }; - nur.url = "github:nix-community/nur"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; ironbar = { @@ -81,7 +80,6 @@ }; pkgs = import inputs.nixpkgs { system = "x86_64-linux"; - overlays = [ inputs.nur.overlays.default ]; config = { allowUnsupportedSystem = true; permittedInsecurePackages = permittedPackages; diff --git a/modules/programs/browser/firefox.nix b/modules/programs/browser/firefox.nix index 9452a07..69d5799 100644 --- a/modules/programs/browser/firefox.nix +++ b/modules/programs/browser/firefox.nix @@ -2,7 +2,6 @@ lib, config, options, - pkgs, ... }: { @@ -48,20 +47,6 @@ type = with lib.types; attrsOf anything; description = "Firefox policy configuration. See https://mozilla.github.io/policy-templates/ for more information."; }; - extensions = lib.mkOption { - default = with pkgs.nur.repos.rycee.firefox-addons; [ - ublock-origin - darkreader - privacy-badger - vimium - keepassxc-browser - i-dont-care-about-cookies - tokyo-night-v2 - ]; - example = [ ]; - type = with lib.types; listOf package; - description = "Firefox extensions (from nur)"; - }; profiles = lib.mkOption { default = [ { @@ -69,7 +54,6 @@ value = { isDefault = true; id = 0; - extensions = config.mods.browser.firefox.extensions; }; } { @@ -77,7 +61,6 @@ value = { isDefault = false; id = 1; - extensions = config.mods.browser.firefox.extensions; }; } ]; @@ -87,12 +70,11 @@ value = { isDefault = true; id = 0; - extensions = config.mods.browser.firefox.extensions; }; } ]; type = with lib.types; listOf (attrsOf anything); - description = "Firefox extensions (from nur)"; + description = "Firefox profiles"; }; }; config = lib.mkIf config.mods.browser.firefox.enable ( From 82161469a026c8a6caf09b398ecd457b666d57b0 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 22 Dec 2024 19:33:46 +0100 Subject: [PATCH 180/330] Invert package override --- lib/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/default.nix b/lib/default.nix index 8bad291..f3a174b 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -90,8 +90,8 @@ additionalHomeConfig root ; - pkgs = if overridePkgs then pkgs else stable; - alternativePkgs = if overridePkgs then stable else pkgs; + pkgs = if overridePkgs then stable else pkgs; + alternativePkgs = if overridePkgs then pkgs else stable; hostName = name; homeMods = mods.home; additionalHomeMods = additionalMods.home; From dfa739e8a0002ff98ca480a2f84a1e5ed2580495 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 22 Dec 2024 19:43:19 +0100 Subject: [PATCH 181/330] Document new flags --- docs/src/README.md | 87 +++++++++++++++++++++++++++++++++------------- 1 file changed, 62 insertions(+), 25 deletions(-) diff --git a/docs/src/README.md b/docs/src/README.md index 981ddd0..cfb2737 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -151,6 +151,42 @@ nixosConfigurations = inputs.dashNix.dashNixLib.build_systems { root = ./.; inherit mods additionalMods; }; ``` +## Additional Inputs + +Just like modules, you can add additional inputs to your configuration. + +```nix +nixosConfigurations = + let + additionalInputs = { + something.url = "yoururl" + } + in + inputs.dashNix.dashNixLib.build_systems { root = ./.; inherit additionalInputs; }; +``` + +## Stable/Unstable + +Sometimes you want to differentiate between systems that are stable and unstable, e.g. for servers and desktops/laptops. +This can be done with the overridePkgs flag for the lib function: + +```nix + nixosConfigurations = + inputs.dashNix.dashNixLib.build_systems { + root = ./stable; + inherit additionalInputs; + overridePkgs = true; + } + // inputs.dashNix.dashNixLib.build_systems { + root = ./unstable; + inherit additionalInputs; + }; +``` + +You can now place your systems in the respective directories. +Keep in mind that the hosts directory will still need to exist in each variant. +E.g. stable/hosts/yourserver and unstable/hosts/yourdesktop + # Installation You can find a custom ISO on my NextCloud server: [Link](https://cloud.dashie.org/s/z7G3zS9SXeEt2ERD). @@ -165,43 +201,44 @@ This configuration features several modules that can be used as preconfigured "r These modules attempt to combine the home-manager and nixos packages/options to one single configuration file for each new system. For package lists, please check the individual modules, as the lists can be long. -- base packages : A list of system packages to be installed by default -- home packages : A list of home packages to be installed by default -- media packages : A list of media packages to be installed by default -- coding packages : A list of coding packages to be installed by default +- Hyprland: Installs and configures Hyprland with various additional packages - acpid : Enables the acpid daemon +- base packages : A list of system packages to be installed by default - bluetooth : Configures/enables bluetooth and installs tools for bluetooth +- coding packages : A list of coding packages to be installed by default - drives : A drive configuration module +- firefox: Enables and configures firefox (extensions and settings) +- fish: Enables and configures fish shell - flatpak : Installs and enables declarative flatpak +- gaming : Configures gaming related features (launchers, gamemode) +- git : Git key and config module - gnome_services : Gnome services for minimal enviroments -> Window managers etc - gpu : GPU settings (AMD) - greetd : Enables and configures the greetd/regreet login manager with Hyprland +- home packages : A list of home packages to be installed by default - kde_connect : Enables KDE connect and opens its ports -- layout : Modules to configure keyboard layout system wide -- piper : Installs and enables piper alongside its daemon -- printing : Enables and configures printing services -- virtualbox : Enables and configures virtualbox -- xone : Installs the xone driver -- starship : Configures the starship prompt - keepassxc : Configures keepassxc -- gaming : Configures gaming related features (launchers, gamemode) -- stylix : Configures system themes, can also be applied to dashvim if used. -- git : Git key and config module -- 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 -- fish: Enables and configures fish shell - kitty: Enables and configures kitty terminal -- oxi: My own programs, can be selectively disabled, or as a whole +- layout : Modules to configure keyboard layout system wide +- media packages : A list of media packages to be installed by default - mime: Mime type configuration -- xkb: Keyboard layout configuration +- nextcloud : Handles synchronization via nextcloud cmd. (requires config.sops.secrets.nextcloud) +- oxi: My own programs, can be selectively disabled, or as a whole +- piper : Installs and enables piper alongside its daemon +- plymouth: enable or disable plymouth +- printing : Enables and configures printing services - scripts: Various preconfigured scripts with the ability to add more +- sops: Enables sops-nix +- starship : Configures the starship prompt +- stylix : Configures system themes, can also be applied to dashvim if used. +- teams: For the poor souls that have to use this.... +- virtualbox : Enables and configures virtualbox +- xkb: Keyboard layout configuration +- xone : Installs the xone driver +- yazi: Installs yazi and sets custom keybinds # Credits -- [Fufexan]( https://github.com/fufexan) for the xdg-mime config: -- [Catppuccin]( https://github.com/catppuccin) for base16 colors -- [Danth]( https://github.com/danth) for providing a base for the nix docs +- [Fufexan](https://github.com/fufexan) for the xdg-mime config: +- [Catppuccin](https://github.com/catppuccin) for base16 colors +- [Danth](https://github.com/danth) for providing a base for the nix docs From fd8fb04fde530feb0c509e0559dfb656c51af015 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 31 Dec 2024 14:33:02 +0100 Subject: [PATCH 182/330] Add mangohud --- modules/programs/gaming.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index d3a23cd..d87d2c7 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -21,6 +21,7 @@ wine adwsteamgtk heroic + mangohud ]; example = [ ]; type = with lib.types; listOf package; From fbf9612ad435024394d110b8dc234a2778ac214e Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 31 Dec 2024 14:56:46 +0100 Subject: [PATCH 183/330] Remove gconf --- modules/programs/basePackages.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/programs/basePackages.nix b/modules/programs/basePackages.nix index 0f82e0d..519e715 100644 --- a/modules/programs/basePackages.nix +++ b/modules/programs/basePackages.nix @@ -87,7 +87,6 @@ upower.enable = true; dbus = { enable = true; - packages = with pkgs; [ gnome2.GConf ]; }; avahi = { enable = true; From 029a7b86d740170e010246d145b94e51784efb22 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 31 Dec 2024 15:16:43 +0100 Subject: [PATCH 184/330] temp disable heroic --- modules/programs/gaming.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index d87d2c7..f3d857c 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -20,7 +20,8 @@ lutris wine adwsteamgtk - heroic + # TODO broken + #heroic mangohud ]; example = [ ]; From b5f4e15db84e3cead102119ca7338b9dd873d708 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 31 Dec 2024 20:33:10 +0100 Subject: [PATCH 185/330] Update zen --- flake.nix | 2 +- modules/programs/browser/zen.nix | 13 +------------ modules/programs/homePackages.nix | 2 +- 3 files changed, 3 insertions(+), 14 deletions(-) diff --git a/flake.nix b/flake.nix index ef82fd2..ad2c326 100644 --- a/flake.nix +++ b/flake.nix @@ -28,7 +28,7 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - zen-browser.url = "github:fufexan/zen-browser-flake"; + zen-browser.url = "github:youwen5/zen-browser-flake"; stylix.url = "github:danth/stylix"; base16.url = "github:SenchoPens/base16.nix"; diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index 855cc0e..96de349 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -14,22 +14,11 @@ type = lib.types.bool; description = "Enables the zen browser"; }; - optimization = lib.mkOption { - default = "specific"; - example = "generic"; - type = - with lib.types; - (enum [ - "specific" - "generic" - ]); - description = "Enables the zen browser"; - }; # TODO configure zen }; config = lib.mkIf config.mods.browser.zen.enable ( lib.optionalAttrs (options ? home.packages) { - home.packages = [ inputs.zen-browser.packages."${system}".${config.mods.browser.zen.optimization} ]; + home.packages = [ inputs.zen-browser.packages."${system}".default ]; } ); } diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index a887f47..3b98eb9 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -70,7 +70,7 @@ description = "The email client"; }; browser = lib.mkOption { - default = inputs.zen-browser.packages.${pkgs.system}.specific; + default = inputs.zen-browser.packages.${pkgs.system}.default; example = "firefox"; type = with lib.types; From de61f5becdd64fa5adb7a8d3ef19df8afe7378a9 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 25 Dec 2024 16:39:38 +0100 Subject: [PATCH 186/330] Add virtmanager --- modules/programs/default.nix | 2 +- modules/programs/virtmanager.nix | 67 ++++++++++++++++++++++++++++++++ modules/programs/virtualbox.nix | 23 ----------- 3 files changed, 68 insertions(+), 24 deletions(-) create mode 100644 modules/programs/virtmanager.nix delete mode 100644 modules/programs/virtualbox.nix diff --git a/modules/programs/default.nix b/modules/programs/default.nix index c14849e..294f2f1 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -36,7 +36,7 @@ ./starship.nix ./stylix.nix ./teams.nix - ./virtualbox.nix + ./virtmanager.nix ./xkb.nix ./xone.nix ./yazi diff --git a/modules/programs/virtmanager.nix b/modules/programs/virtmanager.nix new file mode 100644 index 0000000..80d9233 --- /dev/null +++ b/modules/programs/virtmanager.nix @@ -0,0 +1,67 @@ +{ + lib, + config, + options, + pkgs, + ... +}: +let + module = + if config.conf.cpu == "intel" then + "kvm-intel" + else if config.conf.cpu == "amd" then + "kvm-amd" + else + ""; +in +{ + + options.mods = { + virtmanager.enable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables virt-manager kvm. + ''; + }; + }; + + config = + lib.optionalAttrs (options ? virtualisation.libvirtd) { + boot.kernelModules = [ + module + ]; + programs.virt-manager.enable = true; + environment.systemPackages = with pkgs; [ + spice + spice-gtk + spice-protocol + virt-viewer + ]; + virtualisation = { + libvirtd = { + enable = true; + qemu = { + package = pkgs.qemu_kvm; + swtpm.enable = true; + ovmf.enable = true; + ovmf.packages = [ pkgs.OVMFFull.fd ]; + }; + }; + spiceUSBRedirection.enable = true; + }; + services.spice-vdagentd.enable = true; + + users.users.${config.conf.username}.extraGroups = [ "libvirtd" ]; + + } + // lib.optionalAttrs (options ? dconf.settings) { + dconf.settings = { + "org/virt-manager/virt-manager/connections" = { + autoconnect = [ "qemu:///system" ]; + uris = [ "qemu:///system" ]; + }; + }; + }; +} diff --git a/modules/programs/virtualbox.nix b/modules/programs/virtualbox.nix deleted file mode 100644 index 1639305..0000000 --- a/modules/programs/virtualbox.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - options, - ... -}: -{ - - options.mods = { - virtualbox.enable = lib.mkOption { - default = false; - type = lib.types.bool; - example = true; - description = '' - Enables virtualbox. - ''; - }; - }; - - config = lib.optionalAttrs (options ? virtualisation.virtualbox.host) { - virtualisation.virtualbox.host.enable = lib.mkIf config.mods.virtualbox.enable true; - }; -} From cd783dfe71640f1f7a50713d8e1eca696a859a62 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 1 Jan 2025 17:10:10 +0100 Subject: [PATCH 187/330] virt update --- modules/programs/virtmanager.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/programs/virtmanager.nix b/modules/programs/virtmanager.nix index 80d9233..cfcb0df 100644 --- a/modules/programs/virtmanager.nix +++ b/modules/programs/virtmanager.nix @@ -22,7 +22,9 @@ in type = lib.types.bool; example = true; description = '' - Enables virt-manager kvm. + + + Enables virt-manager kvm. ''; }; }; @@ -53,7 +55,11 @@ in }; services.spice-vdagentd.enable = true; - users.users.${config.conf.username}.extraGroups = [ "libvirtd" ]; + users.users.${config.conf.username}.extraGroups = [ + "libvirtd" + "kvm" + "qemu-libvirtd" + ]; } // lib.optionalAttrs (options ? dconf.settings) { From 729d9f7cac078730056b1cb10ecc4f384cba2b94 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 1 Jan 2025 23:04:05 +0100 Subject: [PATCH 188/330] Add supersonic --- home/themes/oxiced.nix | 1 - modules/programs/default.nix | 1 + modules/programs/supersonic.nix | 72 +++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 modules/programs/supersonic.nix diff --git a/home/themes/oxiced.nix b/home/themes/oxiced.nix index fbb79de..4440b22 100644 --- a/home/themes/oxiced.nix +++ b/home/themes/oxiced.nix @@ -5,7 +5,6 @@ ... }: let - username = config.conf.username; # at time of using this here, stylix might not be evaluated yet # hence ensure it is by using base16 mkSchemeAttrs base16 = pkgs.callPackage inputs.base16.lib { }; diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 294f2f1..8bcb775 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -35,6 +35,7 @@ ./sops.nix ./starship.nix ./stylix.nix + ./supersonic.nix ./teams.nix ./virtmanager.nix ./xkb.nix diff --git a/modules/programs/supersonic.nix b/modules/programs/supersonic.nix new file mode 100644 index 0000000..b4074bf --- /dev/null +++ b/modules/programs/supersonic.nix @@ -0,0 +1,72 @@ +{ + lib, + config, + options, + pkgs, + inputs, + ... +}: +let + base16 = pkgs.callPackage inputs.base16.lib { }; + scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; +in +{ + options.mods.supersonic = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables and configures supersonic"; + }; + variant = lib.mkOption { + default = "wayland"; + example = "x11"; + type = lib.types.enum [ + "wayland" + "x11" + ]; + description = "The variant of supersonic"; + }; + }; + config = lib.mkIf config.mods.supersonic.enable ( + lib.optionalAttrs (options ? home.packages) { + home.packages = with pkgs; [ + (if config.mods.supersonic.variant == "wayland" then supersonic-wayland else supersonic) + ]; + xdg.configFile."supersonic/themes/custom.toml".source = + (pkgs.formats.toml { }).generate "customTheme" + { + SupersonicTheme = { + Name = "Custom"; + Version = "0.2"; + SupportsDark = true; + SupportsLight = true; + }; + + DarkColors = { + PageBackground = "#${scheme.base00}"; + ListHeader = "#${scheme.base02}"; + PageHeader = "#${scheme.base02}"; + Background = "#${scheme.base01}"; + ScrollBar = "#${scheme.base02}"; + Button = "#${scheme.base02}"; + Foreground = "#${scheme.base04}"; + InputBackground = "#${scheme.base02}"; + }; + + # just define the same as base 16 doesn't define if it is light or not + LightColors = { + PageBackground = "#${scheme.base00}"; + ListHeader = "#${scheme.base02}"; + PageHeader = "#${scheme.base02}"; + Background = "#${scheme.base01}"; + ScrollBar = "#${scheme.base02}"; + Button = "#${scheme.base02}"; + Foreground = "#${scheme.base04}"; + InputBackground = "#${scheme.base02}"; + }; + }; + } + + ); +} From 8e2f1e3f77fb45af1e0d51638f5a0bbec1972b95 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 18 Jan 2025 20:47:13 +0100 Subject: [PATCH 189/330] Remove unfree config from homemanager --- home/common.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home/common.nix b/home/common.nix index a65b7d5..19d704d 100644 --- a/home/common.nix +++ b/home/common.nix @@ -14,7 +14,6 @@ in }; fonts.fontconfig.enable = true; - nixpkgs.config.allowUnfree = true; home = { username = username; From 4c93565c743a9417e64a397e0c740cb0bf6d5a3f Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 16 Jan 2025 07:54:43 +0100 Subject: [PATCH 190/330] remove globalpkgs --- home/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home/default.nix b/home/default.nix index 3764e3e..a63ef8d 100644 --- a/home/default.nix +++ b/home/default.nix @@ -20,7 +20,6 @@ }; }; home-manager = { - useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = { inherit inputs root additionalInputs; From 57d32a4ccd464b070d42938da735399ac11c02b4 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 16 Jan 2025 08:03:32 +0100 Subject: [PATCH 191/330] remove nixpkgs config in homemanager --- home/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/default.nix b/home/default.nix index a63ef8d..3764e3e 100644 --- a/home/default.nix +++ b/home/default.nix @@ -20,6 +20,7 @@ }; }; home-manager = { + useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = { inherit inputs root additionalInputs; From 6d9724f0f486ffc50d2e4c52d255a3df05a5ff8b Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 6 Feb 2025 20:24:53 +0100 Subject: [PATCH 192/330] Add logo --- docs/src/README.md | 16 ++-- logo.svg | 199 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 208 insertions(+), 7 deletions(-) create mode 100644 logo.svg diff --git a/docs/src/README.md b/docs/src/README.md index cfb2737..1fd255b 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -1,10 +1,11 @@ -``` -██████ █████ ███████ ██ ██ ███ ██ ██ ██ ██ -██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ -██ ██ ███████ ███████ ███████ ██ ██ ██ ██ ███ -██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ -██████ ██ ██ ███████ ██ ██ ██ ████ ██ ██ ██ -``` + +
+ +# $${\color{cyan}DashNix}$$ + +![Logo of DashNix](./logo.svg) + +
A very opinionated (technically only for me) configuration that allows easy adding and removing of systems alongside custom configurations for each system. @@ -242,3 +243,4 @@ For package lists, please check the individual modules, as the lists can be long - [Fufexan](https://github.com/fufexan) for the xdg-mime config: - [Catppuccin](https://github.com/catppuccin) for base16 colors - [Danth](https://github.com/danth) for providing a base for the nix docs +- [Nix-Artwork](https://github.com/NixOS/nixos-artwork/tree/master/logo) for the Nix/NixOS logo (Tim Cuthbertson (@timbertson)) diff --git a/logo.svg b/logo.svg new file mode 100644 index 0000000..05408f4 --- /dev/null +++ b/logo.svg @@ -0,0 +1,199 @@ + + + + From dd57f9544084dac19f98933d384fe033986b1c0a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 8 Feb 2025 19:20:29 +0100 Subject: [PATCH 193/330] Force breeze --- home/themes/qt.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/home/themes/qt.nix b/home/themes/qt.nix index 5f77b89..488efb6 100644 --- a/home/themes/qt.nix +++ b/home/themes/qt.nix @@ -2,6 +2,7 @@ config, inputs, pkgs, + lib, ... }: let @@ -66,7 +67,7 @@ in qt = { enable = true; style.package = pkgs.libsForQt5.breeze-qt5; - style.name = "breeze-dark"; + style.name = lib.mkForce "breeze-dark"; }; # ## test From c256600c7e5dbc7e10e506f159400d2db3f1f657 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 8 Feb 2025 20:05:19 +0100 Subject: [PATCH 194/330] Don't override DashVim inputs --- flake.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/flake.nix b/flake.nix index ad2c326..4ea95b6 100644 --- a/flake.nix +++ b/flake.nix @@ -45,8 +45,6 @@ dashvim = { url = "github:DashieTM/DashVim"; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.base16.follows = "base16"; }; }; From 49a5671bf39ac066ac0c03ec736c77e4d3e6cde7 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 8 Feb 2025 20:14:28 +0100 Subject: [PATCH 195/330] Allow broken for now --- flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flake.nix b/flake.nix index 4ea95b6..1cdbd0e 100644 --- a/flake.nix +++ b/flake.nix @@ -73,6 +73,7 @@ system = "x86_64-linux"; config = { allowUnfree = true; + allowBroken = true; permittedInsecurePackages = permittedPackages; }; }; @@ -81,6 +82,7 @@ config = { allowUnsupportedSystem = true; permittedInsecurePackages = permittedPackages; + allowBroken = true; allowUnfree = true; }; }; From 5173a90965ad667c4d22ce68fa10ba44399fa853 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 9 Feb 2025 15:35:46 +0100 Subject: [PATCH 196/330] Update to adwaita fonts --- logo.svg | 31 ++++++++++++++++++++++++++++++- modules/programs/stylix.nix | 8 ++++---- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/logo.svg b/logo.svg index 05408f4..eb92235 100644 --- a/logo.svg +++ b/logo.svg @@ -8,9 +8,34 @@ version="1.1" id="svg1" xml:space="preserve" + sodipodi:docname="logo.svg" + inkscape:export-filename="logo.svg" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96" + inkscape:version="1.4 (e7c3feb100, 2024-10-09)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg"> Date: Sun, 9 Feb 2025 15:38:29 +0100 Subject: [PATCH 197/330] Update nixpkgs --- flake.lock | 2342 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2342 insertions(+) create mode 100644 flake.lock diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..3fb191d --- /dev/null +++ b/flake.lock @@ -0,0 +1,2342 @@ +{ + "nodes": { + "Hyprspace": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "systems": "systems" + }, + "locked": { + "lastModified": 1739004667, + "narHash": "sha256-t/KaeHEgzh225HUdAiHXRsgDeyDrBCMTg0LjR73v3Nw=", + "owner": "KZDKM", + "repo": "Hyprspace", + "rev": "ac55bbdb6cee760af9315899b5b187a40ce43e46", + "type": "github" + }, + "original": { + "owner": "KZDKM", + "repo": "Hyprspace", + "type": "github" + } + }, + "anyrun": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs", + "systems": "systems_2" + }, + "locked": { + "lastModified": 1735301051, + "narHash": "sha256-jU88Q9tP4vuvWYGQcmOdFwI9e2uMPVYJHbXdiklIH9o=", + "owner": "Kirottu", + "repo": "anyrun", + "rev": "06017e753c8886d5296768dca80745ee09402a2d", + "type": "github" + }, + "original": { + "owner": "Kirottu", + "repo": "anyrun", + "type": "github" + } + }, + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1738456976, + "narHash": "sha256-cufyHbOMnSt9V4w4OVSzNcpJ+8DwzRZRJaca2Q89KVI=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "257b2050790ab3b1eb389e0f8bdc400eb9510139", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1732200724, + "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "153d52373b0fb2d343592871009a286ec8837aec", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1622559957, + "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1736852337, + "narHash": "sha256-esD42YdgLlEh7koBrSqcT7p2fsMctPAcGl/+2sYJa2o=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "03860521c40b0b9c04818f2218d9cc9efc21e7a5", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + } + }, + "base16_2": { + "inputs": { + "fromYaml": "fromYaml_2" + }, + "locked": { + "lastModified": 1732200724, + "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "153d52373b0fb2d343592871009a286ec8837aec", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16_3": { + "inputs": { + "fromYaml": "fromYaml_3" + }, + "locked": { + "lastModified": 1732200724, + "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "153d52373b0fb2d343592871009a286ec8837aec", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "crane": { + "locked": { + "lastModified": 1737689766, + "narHash": "sha256-ivVXYaYlShxYoKfSo5+y5930qMKKJ8CLcAoIBPQfJ6s=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fe74265bbb6d016d663b1091f015e2976c4a527", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "dashvim": { + "inputs": { + "base16": "base16_2", + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_2", + "nixvim": "nixvim" + }, + "locked": { + "lastModified": 1738405487, + "narHash": "sha256-g9Wp/hYAfKbwqku2WPcBPjhVtnNQHQ14kVuuWsRZduQ=", + "owner": "DashieTM", + "repo": "DashVim", + "rev": "e563f6f5f2f8f7feb5cd50339d1baff1a26e2e6f", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "DashVim", + "type": "github" + } + }, + "devshell": { + "inputs": { + "nixpkgs": [ + "dashvim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1735644329, + "narHash": "sha256-tO3HrHriyLvipc4xr+Ewtdlo7wM1OjXNjlWRgmM7peY=", + "owner": "numtide", + "repo": "devshell", + "rev": "f7795ede5b02664b57035b3b757876703e2c3eac", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "firefox-gnome-theme": { + "flake": false, + "locked": { + "lastModified": 1736899990, + "narHash": "sha256-S79Hqn2EtSxU4kp99t8tRschSifWD4p/51++0xNWUxw=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "91ca1f82d717b02ceb03a3f423cbe8082ebbb26d", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, + "flake-compat": { + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "revCount": 69, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "anyrun", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1727826117, + "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_10": { + "inputs": { + "nixpkgs-lib": [ + "reset", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1727826117, + "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_11": { + "inputs": { + "nixpkgs-lib": [ + "reset-plugins", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1736143030, + "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "dashvim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736143030, + "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": [ + "hyprdock", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": [ + "oxicalc", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_6": { + "inputs": { + "nixpkgs-lib": [ + "oxidash", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ + "oxinoti", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_8": { + "inputs": { + "nixpkgs-lib": [ + "oxipaste", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1722555600, + "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_9": { + "inputs": { + "nixpkgs-lib": [ + "oxishut", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_5" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "inputs": { + "systems": "systems_6" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "inputs": { + "systems": "systems_7" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "inputs": { + "systems": "systems_8" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "inputs": { + "systems": [ + "stylix", + "systems" + ] + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "fromYaml_2": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "fromYaml_3": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": [ + "dashvim", + "nixvim", + "flake-compat" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "dashvim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "git-hooks_2": { + "inputs": { + "flake-compat": [ + "stylix", + "flake-compat" + ], + "gitignore": "gitignore_3", + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1735882644, + "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "dashvim", + "nixvim", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_2": { + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_3": { + "inputs": { + "nixpkgs": [ + "stylix", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gnome-shell": { + "flake": false, + "locked": { + "lastModified": 1732369855, + "narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "dadd58f630eeea41d645ee225a63f719390829dc", + "type": "github" + }, + "original": { + "owner": "GNOME", + "ref": "47.2", + "repo": "gnome-shell", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "dashvim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1738275749, + "narHash": "sha256-PM+cGduJ05EZ+YXulqAwUFjvfKpPmW080mcuN6R1POw=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "a8159195bfaef3c64df75d3b1e6a68d49d392be9", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1739051380, + "narHash": "sha256-p1QSLO8DJnANY+ppK7fjD8GqfCrEIDjso1CSRHsXL7Y=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "5af1b9a0f193ab6138b89a8e0af8763c21bbf491", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_3": { + "inputs": { + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737630279, + "narHash": "sha256-wJQCxyMRc4P26zDrHmZiRD5bbfcJpqPG3e2djdGG3pk=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "0db5c8bfcce78583ebbde0b2abbc95ad93445f7c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1738178255, + "narHash": "sha256-+D6Nu2ewXbMTFzx/Q4jDOo+LAOUPr0cxQJg5k33daIE=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "dcadd3398abe146d60c67e0d9ee6e27b301cae82", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprdock": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1733264848, + "narHash": "sha256-HVlpDNoxteGWBWn2rybr03uVt4k3AOpswBpa8acbzcY=", + "owner": "DashieTM", + "repo": "hyprdock", + "rev": "a67de182fd3c38dbc3186df9985443062b850e2b", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "hyprdock", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1738437059, + "narHash": "sha256-J+8ecqaP3zD9GHeN8Y4hUapoELSoggp0IZI8laTFt/0=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "5ac80e3686a4dfa55d2bd15c81a266b89594a295", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-protocols": "hyprland-protocols", + "hyprland-qtutils": "hyprland-qtutils", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs_5", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems_4", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1739111430, + "narHash": "sha256-WasuDUcKT6UpRam4SDYcJ+GO0yhE4Evv+4bQDutYu8U=", + "ref": "refs/heads/main", + "rev": "56f6f61596a547cdcdfb7aa7c3550e380b487ee3", + "revCount": 5802, + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1738422629, + "narHash": "sha256-5v+bv75wJWvahyM2xcMTSNNxmV8a7hb01Eey5zYnBJw=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "755aef8dab49d0fc4663c715fa4ad221b2aedaed", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprland-qt-support": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprland-qtutils", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "systems" + ] + }, + "locked": { + "lastModified": 1737634706, + "narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=", + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "rev": "8810df502cdee755993cb803eba7b23f189db795", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "type": "github" + } + }, + "hyprland-qtutils": { + "inputs": { + "hyprland-qt-support": "hyprland-qt-support", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-qtutils", + "hyprlang", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1737981711, + "narHash": "sha256-lh6cL5D8nPplB3WovCQjLUZ7k7MViiBrMlpkfm4R7/c=", + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "rev": "96bf0677fa9cd13508294e3d4559dfbbc8beff73", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1737634606, + "narHash": "sha256-W7W87Cv6wqZ9PHegI6rH1+ve3zJPiyevMFf0/HwdbCQ=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "f41271d35cc0f370d300413d756c2677f386af9d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1737978343, + "narHash": "sha256-TfFS0HCEJh63Kahrkp1h9hVDMdLU8a37Zz+IFucxyfA=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "6a8bc9d2a4451df12f5179dc0b1d2d46518a90ab", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1735493474, + "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "ironbar": { + "inputs": { + "crane": "crane", + "naersk": "naersk", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1738859373, + "narHash": "sha256-/ckqUSy2S75aPuZWJkE9jvxu3THvQyKrK0gYR6l1Gp0=", + "owner": "JakeStanger", + "repo": "ironbar", + "rev": "75375aa341ec154345a7f41d210c952d4ffe2002", + "type": "github" + }, + "original": { + "owner": "JakeStanger", + "repo": "ironbar", + "type": "github" + } + }, + "ixx": { + "inputs": { + "flake-utils": [ + "dashvim", + "nixvim", + "nuschtosSearch", + "flake-utils" + ], + "nixpkgs": [ + "dashvim", + "nixvim", + "nuschtosSearch", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729958008, + "narHash": "sha256-EiOq8jF4Z/zQe0QYVc3+qSKxRK//CFHMB84aYrYGwEs=", + "owner": "NuschtOS", + "repo": "ixx", + "rev": "9fd01aad037f345350eab2cd45e1946cc66da4eb", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "ref": "v0.0.6", + "repo": "ixx", + "type": "github" + } + }, + "naersk": { + "inputs": { + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1736429655, + "narHash": "sha256-BwMekRuVlSB9C0QgwKMICiJ5EVbLGjfe4qyueyNQyGI=", + "owner": "nix-community", + "repo": "naersk", + "rev": "0621e47bd95542b8e1ce2ee2d65d6a1f887a13ce", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "naersk", + "type": "github" + } + }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "dashvim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1738277753, + "narHash": "sha256-iyFcCOk0mmDiv4ut9mBEuMxMZIym3++0qN1rQBg8FW0=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "49b807fa7c37568d7fbe2aeaafb9255c185412f9", + "type": "github" + }, + "original": { + "owner": "lnl7", + "repo": "nix-darwin", + "type": "github" + } + }, + "nix-flatpak": { + "locked": { + "lastModified": 1738175805, + "narHash": "sha256-fPjaARmK522JLJ7wxFebxG4eE/3HHSmuAA78iAZ+A7g=", + "owner": "gmodena", + "repo": "nix-flatpak", + "rev": "d4c75a33c4a7a16bf87cfd804fb5444a1ec53d49", + "type": "github" + }, + "original": { + "owner": "gmodena", + "repo": "nix-flatpak", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1730200266, + "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1735774519, + "narHash": "sha256-CewEm1o2eVAnoqb6Ml+Qi9Gg/EfNAxbRx1lANGVyoLI=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz" + } + }, + "nixpkgs_10": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_12": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_13": { + "locked": { + "lastModified": 1723637854, + "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_15": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_16": { + "locked": { + "lastModified": 1729256560, + "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_17": { + "locked": { + "lastModified": 1728538411, + "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_18": { + "locked": { + "lastModified": 1716948383, + "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_19": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1738142207, + "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9d3ae807ebd2981d593cddd0080856873139aa40", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_20": { + "locked": { + "lastModified": 1731763621, + "narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c69a9bffbecde46b4b939465422ddc59493d3e4d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_21": { + "locked": { + "lastModified": 1736798957, + "narHash": "sha256-qwpCtZhSsSNQtK4xYGzMiyEDhkNzOCz/Vfu4oL2ETsQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9abb87b552b7f55ac8916b6fc9e5cb486656a2f3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_22": { + "locked": { + "lastModified": 1738680400, + "narHash": "sha256-ooLh+XW8jfa+91F1nhf9OF7qhuA/y1ChLx6lXDNeY5U=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "799ba5bffed04ced7067a91798353d360788b30d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1738136902, + "narHash": "sha256-pUvLijVGARw4u793APze3j6mU1Zwdtz7hGkGGkD87qw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9a5db3142ce450045840cc8d832b13b8a2018e0c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1716330097, + "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1738410390, + "narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3a228057f5b619feb3186e986dbe76278d707b6e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1738297584, + "narHash": "sha256-AYvaFBzt8dU0fcSK2jKD0Vg23K2eIRxfsVXIPCW9a0E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9189ac18287c599860e878e905da550aa6dec1cd", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1739020877, + "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=", + "owner": "NixOs", + "repo": "nixpkgs", + "rev": "a79cfe0ebd24952b580b1cf08cd906354996d547", + "type": "github" + }, + "original": { + "owner": "NixOs", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "devshell": "devshell", + "flake-compat": "flake-compat", + "flake-parts": "flake-parts_3", + "git-hooks": "git-hooks", + "home-manager": "home-manager", + "nix-darwin": "nix-darwin", + "nixpkgs": "nixpkgs_3", + "nuschtosSearch": "nuschtosSearch", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1738366771, + "narHash": "sha256-nyEBrP5t1g4vmy7YBkiGaIu19eG8zV3T4IQLQbJsVU8=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "c75e4ea37f25ec98aa6f2035e03e748e7369662c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "nuschtosSearch": { + "inputs": { + "flake-utils": "flake-utils", + "ixx": "ixx", + "nixpkgs": [ + "dashvim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737924095, + "narHash": "sha256-9RO/IlxiE7bpY7GYsdDMNB533PnDOBo9UvYyXXqlN4c=", + "owner": "NuschtOS", + "repo": "search", + "rev": "5efc9c966bb9bdad07a3c28667eac38b758c6f18", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "repo": "search", + "type": "github" + } + }, + "oxicalc": { + "inputs": { + "flake-parts": "flake-parts_5", + "nixpkgs": "nixpkgs_8" + }, + "locked": { + "lastModified": 1733264508, + "narHash": "sha256-5JN+XBh4HFuxiinRW2rRNTTknmuCnE4g8djxCMsGirE=", + "owner": "DashieTM", + "repo": "OxiCalc", + "rev": "82f3632cbcf02e6ad5326082cd6d43d64edb0a13", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiCalc", + "type": "github" + } + }, + "oxidash": { + "inputs": { + "flake-parts": "flake-parts_6", + "nixpkgs": "nixpkgs_9", + "rust-overlay": "rust-overlay_2" + }, + "locked": { + "lastModified": 1733264230, + "narHash": "sha256-hrQ+d2qHR/lMW5s8iQ6S3GAGeidRToih963Y5lUjDaE=", + "owner": "DashieTM", + "repo": "OxiDash", + "rev": "fae92da1f0cd44efbeb75c3b3407430dc9a69448", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiDash", + "type": "github" + } + }, + "oxinoti": { + "inputs": { + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_11", + "rust-overlay": "rust-overlay_3" + }, + "locked": { + "lastModified": 1733261311, + "narHash": "sha256-g6kbtp1MQUBavadCoJdSB1/2TtaNzjtC7wn48luJQ5k=", + "owner": "DashieTM", + "repo": "OxiNoti", + "rev": "68c48590ffdae7b70339de0f1d4807a45435db9b", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiNoti", + "type": "github" + } + }, + "oxipaste": { + "inputs": { + "flake-parts": "flake-parts_8", + "nixpkgs": "nixpkgs_13" + }, + "locked": { + "lastModified": 1737624143, + "narHash": "sha256-256aX66hq37tVhfimOmFrrHOba+E7hMvsVYxEvVPrmI=", + "owner": "DashieTM", + "repo": "OxiPaste", + "rev": "54beb71d3545825d4888f971fe54b1bc0dc2a62a", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiPaste", + "type": "github" + } + }, + "oxishut": { + "inputs": { + "flake-parts": "flake-parts_9", + "nixpkgs": "nixpkgs_14", + "rust-overlay": "rust-overlay_4" + }, + "locked": { + "lastModified": 1733262922, + "narHash": "sha256-fBgCJPyIBHMOJ4C54PmCVItcHwu7gTrVeSKkWkXXv2A=", + "owner": "DashieTM", + "repo": "OxiShut", + "rev": "3d3060e4e3668dbd8bd1f7b3a81728245de58d94", + "type": "github" + }, + "original": { + "owner": "DashieTM", + "repo": "OxiShut", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "gitignore": "gitignore_2", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "reset": { + "inputs": { + "flake-parts": "flake-parts_10", + "nixpkgs": "nixpkgs_16", + "rust-overlay": "rust-overlay_5" + }, + "locked": { + "lastModified": 1733265082, + "narHash": "sha256-UXIbssxKn8rjfBTBh8ukHBtPiGaR9pOQ59m42vFdh6Q=", + "owner": "Xetibo", + "repo": "ReSet", + "rev": "f09ed7558107a2bb5334c02305646af8e4bcebcb", + "type": "github" + }, + "original": { + "owner": "Xetibo", + "repo": "ReSet", + "type": "github" + } + }, + "reset-plugins": { + "inputs": { + "flake-parts": "flake-parts_11", + "nixpkgs": "nixpkgs_18", + "rust-overlay": "rust-overlay_6" + }, + "locked": { + "lastModified": 1718300175, + "narHash": "sha256-kPeJJ/au+jV4jhyAhkLI3uwqK7pEDjdVJvwDmtQq8/k=", + "owner": "Xetibo", + "repo": "ReSet-Plugins", + "rev": "8d3af2fab9425f8b89fb7b82b4e23eba12a42f85", + "type": "github" + }, + "original": { + "owner": "Xetibo", + "repo": "ReSet-Plugins", + "type": "github" + } + }, + "root": { + "inputs": { + "Hyprspace": "Hyprspace", + "anyrun": "anyrun", + "base16": "base16", + "dashvim": "dashvim", + "home-manager": "home-manager_2", + "hyprdock": "hyprdock", + "hyprland": "hyprland", + "ironbar": "ironbar", + "nix-flatpak": "nix-flatpak", + "nixpkgs": "nixpkgs_7", + "oxicalc": "oxicalc", + "oxidash": "oxidash", + "oxinoti": "oxinoti", + "oxipaste": "oxipaste", + "oxishut": "oxishut", + "reset": "reset", + "reset-plugins": "reset-plugins", + "sops-nix": "sops-nix", + "stable": "stable", + "stylix": "stylix", + "zen-browser": "zen-browser" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "ironbar", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1738290352, + "narHash": "sha256-YKOHUmc0Clm4tMV8grnxYL4IIwtjTayoq/3nqk0QM7k=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "b031b584125d33d23a0182f91ddbaf3ab4880236", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_10" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_3": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_12" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_4": { + "inputs": { + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_15" + }, + "locked": { + "lastModified": 1716171463, + "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_5": { + "inputs": { + "nixpkgs": "nixpkgs_17" + }, + "locked": { + "lastModified": 1729564184, + "narHash": "sha256-dP764PQ6YhjY7C84Txnrb2vf0H2YdQlp5c6a7G18fgw=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "d687672b4541496408068bc273d94c643005d4c9", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_6": { + "inputs": { + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_19" + }, + "locked": { + "lastModified": 1717035469, + "narHash": "sha256-MzH+yjKULH3HCRj9QCTwBvqq4LZkR0ZqRE/QfGOGC2E=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "095702e63a40e86f339d11864da9dc965b70a01e", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_20" + }, + "locked": { + "lastModified": 1738291974, + "narHash": "sha256-wkwYJc8cKmmQWUloyS9KwttBnja2ONRuJQDEsmef320=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "4c1251904d8a08c86ac6bc0d72cc09975e89aef7", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "stable": { + "locked": { + "lastModified": 1738843498, + "narHash": "sha256-7x+Q4xgFj9UxZZO9aUDCR8h4vyYut4zPUvfj3i+jBHE=", + "owner": "NixOs", + "repo": "nixpkgs", + "rev": "f5a32fa27df91dfc4b762671a0e0a859a8a0058f", + "type": "github" + }, + "original": { + "owner": "NixOs", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "stylix": { + "inputs": { + "base16": "base16_3", + "base16-fish": "base16-fish", + "base16-helix": "base16-helix", + "base16-vim": "base16-vim", + "firefox-gnome-theme": "firefox-gnome-theme", + "flake-compat": "flake-compat_3", + "flake-utils": "flake-utils_6", + "git-hooks": "git-hooks_2", + "gnome-shell": "gnome-shell", + "home-manager": "home-manager_3", + "nixpkgs": "nixpkgs_21", + "systems": "systems_9", + "tinted-foot": "tinted-foot", + "tinted-kitty": "tinted-kitty", + "tinted-tmux": "tinted-tmux", + "tinted-zed": "tinted-zed" + }, + "locked": { + "lastModified": 1739049610, + "narHash": "sha256-oPrTmixNln7tpLz2flsZBPgYqMuGksmIHla9oZDc9Uo=", + "owner": "danth", + "repo": "stylix", + "rev": "7818098f4df4ee73667036c65909cf311d36968b", + "type": "github" + }, + "original": { + "owner": "danth", + "repo": "stylix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_7": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_8": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_9": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "tinted-foot": { + "flake": false, + "locked": { + "lastModified": 1726913040, + "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=", + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + } + }, + "tinted-kitty": { + "flake": false, + "locked": { + "lastModified": 1716423189, + "narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=", + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "eb39e141db14baef052893285df9f266df041ff8", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "eb39e141db14baef052893285df9f266df041ff8", + "type": "github" + } + }, + "tinted-tmux": { + "flake": false, + "locked": { + "lastModified": 1735737224, + "narHash": "sha256-FO2hRBkZsjlIRqzNHCPc/52yxg11kHGA8MEtSun9RwE=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "aead506a9930c717ebf81cc83a2126e9ca08fa64", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, + "tinted-zed": { + "flake": false, + "locked": { + "lastModified": 1725758778, + "narHash": "sha256-8P1b6mJWyYcu36WRlSVbuj575QWIFZALZMTg5ID/sM4=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "122c9e5c0e6f27211361a04fae92df97940eccf9", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-zed", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "dashvim", + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1738070913, + "narHash": "sha256-j6jC12vCFsTGDmY2u1H12lMr62fnclNjuCtAdF1a4Nk=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "bebf27d00f7d10ba75332a0541ac43676985dea3", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1737634991, + "narHash": "sha256-dBAnb7Kbnier30cA7AgxVSxxARmxKZ1vHZT33THSIr8=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "e09dfe2726c8008f983e45a0aa1a3b7416aaeb8a", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + }, + "zen-browser": { + "inputs": { + "nixpkgs": "nixpkgs_22" + }, + "locked": { + "lastModified": 1739049205, + "narHash": "sha256-rYD1xP6PqPh3ZJZJdUVcn20toTt/77okIQAlJ1MlcNs=", + "owner": "youwen5", + "repo": "zen-browser-flake", + "rev": "56e034809a7d623c135ab0bcbb30764e416ec274", + "type": "github" + }, + "original": { + "owner": "youwen5", + "repo": "zen-browser-flake", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} From 693d4e3c70f602dca7997e12f37c894df56657d6 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 15 Feb 2025 16:23:22 +0100 Subject: [PATCH 198/330] Use alejandra formatter / fix warnings --- base/common_hardware.nix | 30 +-- base/env.nix | 5 +- base/xkb_layout.nix | 10 +- docs/default.nix | 35 ++-- example/flake.nix | 8 +- example/hosts/example/configuration.nix | 3 +- flake.nix | 112 +++++----- home/common.nix | 8 +- home/default.nix | 17 +- home/sync.nix | 89 ++++---- home/themes/kdeglobals.nix | 33 ++- home/themes/oxiced.nix | 12 +- home/themes/qt.nix | 63 ++---- iso/configuration.nix | 6 +- lib/default.nix | 192 +++++++++-------- modules/conf.nix | 39 ++-- modules/programs/acpid.nix | 6 +- modules/programs/basePackages.nix | 91 ++++---- modules/programs/bluetooth.nix | 3 +- modules/programs/browser/brave.nix | 5 +- modules/programs/browser/chromium.nix | 5 +- modules/programs/browser/firefox.nix | 5 +- modules/programs/browser/zen.nix | 5 +- modules/programs/coding.nix | 87 ++++---- modules/programs/containers.nix | 59 +++--- modules/programs/drives.nix | 19 +- modules/programs/fish.nix | 16 +- modules/programs/flatpak.nix | 21 +- modules/programs/gaming.nix | 5 +- modules/programs/gdm.nix | 7 +- modules/programs/git.nix | 30 ++- modules/programs/gnome.nix | 28 ++- modules/programs/gnomeServices.nix | 22 +- modules/programs/gpu.nix | 55 +++-- modules/programs/greetd.nix | 36 ++-- modules/programs/homePackages.nix | 140 ++++++------- modules/programs/hyprland/anyrun.nix | 21 +- modules/programs/hyprland/hyprland.nix | 97 ++++----- modules/programs/hyprland/hyprlock.nix | 5 +- modules/programs/hyprland/hyprpaper.nix | 7 +- modules/programs/hyprland/ironbar.nix | 206 +++++++++--------- modules/programs/kde.nix | 4 +- modules/programs/kdeConnect.nix | 6 +- modules/programs/keepassxc.nix | 5 +- modules/programs/kitty.nix | 148 ++++++------- modules/programs/media.nix | 92 ++++---- modules/programs/mime.nix | 111 +++++----- modules/programs/ncspot.nix | 9 +- modules/programs/nextcloud.nix | 6 +- modules/programs/oxi/default.nix | 3 +- modules/programs/oxi/oxidash.nix | 3 +- modules/programs/oxi/oxinoti.nix | 6 +- modules/programs/oxi/oxipaste.nix | 3 +- modules/programs/oxi/oxishut.nix | 3 +- modules/programs/piper.nix | 7 +- modules/programs/plymouth.nix | 5 +- modules/programs/printing.nix | 5 +- modules/programs/scripts.nix | 189 ++++++++--------- modules/programs/sddm.nix | 5 +- modules/programs/sops.nix | 24 +-- modules/programs/starship.nix | 267 ++++++++++++------------ modules/programs/stylix.nix | 17 +- modules/programs/supersonic.nix | 77 +++---- modules/programs/teams.nix | 13 +- modules/programs/virtmanager.nix | 31 ++- modules/programs/xkb.nix | 3 +- modules/programs/xone.nix | 6 +- modules/programs/yazi/default.nix | 18 +- modules/programs/yazi/yazi.nix | 254 +++++++++++----------- override/teams.nix | 8 +- 70 files changed, 1424 insertions(+), 1547 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 24edad2..8a0ba4b 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -5,12 +5,13 @@ hostName, modulesPath, ... -}: -let +}: let username = config.conf.username; -in -{ - imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; +in { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + #(modulesPath + "/misc/nixpkgs/read-only.nix") + ]; # Bootloader. boot = { @@ -34,11 +35,13 @@ in "sd_mod" ]; }; - kernelParams = [ - ''resume="PARTLABEL=SWAP"'' - ''quiet'' - ''udev.log_level=3'' - ] ++ config.conf.bootParams; + kernelParams = + [ + ''resume="PARTLABEL=SWAP"'' + ''quiet'' + ''udev.log_level=3'' + ] + ++ config.conf.bootParams; }; # Enable networking @@ -59,6 +62,8 @@ in flatpak.enable = true; xserver.enable = true; fstrim.enable = lib.mkDefault true; + # Enable sound with pipewire. + pulseaudio.enable = false; pipewire = { enable = true; alsa = { @@ -78,16 +83,14 @@ 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"; }; }; - # Enable sound with pipewire. hardware = { - pulseaudio.enable = false; cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; }; @@ -124,5 +127,4 @@ in password = "firstlogin"; }; }; - } diff --git a/base/env.nix b/base/env.nix index f4de6c3..8d6b97e 100644 --- a/base/env.nix +++ b/base/env.nix @@ -1,5 +1,8 @@ -{ pkgs, config, ... }: { + pkgs, + config, + ... +}: { environment = { variables = { GSETTINGS_SCHEMA_DIR = "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; diff --git a/base/xkb_layout.nix b/base/xkb_layout.nix index ecbc97c..0324c99 100644 --- a/base/xkb_layout.nix +++ b/base/xkb_layout.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -let +{pkgs, ...}: let layout = pkgs.writeText "dashie" '' xkb_symbols "dashie" { @@ -10,12 +9,11 @@ let key { [ u, U, udiaeresis, Udiaeresis ] }; }; ''; -in -{ - environment.systemPackages = [ pkgs.xorg.xkbcomp ]; +in { + environment.systemPackages = [pkgs.xorg.xkbcomp]; services.xserver.xkb.extraLayouts.dashie = { description = "US layout with 'umlaut'"; - languages = [ "eng" ]; + languages = ["eng"]; symbolsFile = "${layout}"; }; } diff --git a/docs/default.nix b/docs/default.nix index 42ae80c..f7e9622 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -4,9 +4,8 @@ build_systems, lib, ... -}: -let - makeOptionsDoc = configuration: pkgs.nixosOptionsDoc { options = configuration; }; +}: let + makeOptionsDoc = configuration: pkgs.nixosOptionsDoc {options = configuration;}; generateDocs = obj: '' touch src/${obj.fst}.md sed '/*Declared by:*/,/^$/d' <${obj.snd.optionsCommonMark} >> src/${obj.fst}.md @@ -14,8 +13,8 @@ let summaryAppend = name: '' echo "- [${name}](${name}.md)" >> src/SUMMARY.md ''; - system = (build_systems { root = ../example/.; })."example".options; - makeOptionsDocPrograms = name: pkgs.nixosOptionsDoc { options = system.mods.${name}; }; + system = (build_systems {root = ../example/.;})."example".options; + makeOptionsDocPrograms = name: pkgs.nixosOptionsDoc {options = system.mods.${name};}; conf = makeOptionsDoc system.conf; paths = builtins.readDir ../modules/programs; names = lib.lists.remove "default" ( @@ -25,18 +24,18 @@ let docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods)); summary = lib.strings.concatStringsSep " " (map summaryAppend names); in -pkgs.stdenvNoCC.mkDerivation { - name = "dashNix-book"; - src = ./.; + pkgs.stdenvNoCC.mkDerivation { + name = "dashNix-book"; + src = ./.; - patchPhase = '' - sed '/*Declared by:*/,/^$/d' <${conf.optionsCommonMark} >> src/conf.md - ${docs} - echo "[README](README.md)\n # Options\n - [Base Config](conf.md)" >> src/SUMMARY.md - ${summary} - ''; + patchPhase = '' + sed '/*Declared by:*/,/^$/d' <${conf.optionsCommonMark} >> src/conf.md + ${docs} + echo "[README](README.md)\n # Options\n - [Base Config](conf.md)" >> src/SUMMARY.md + ${summary} + ''; - buildPhase = '' - ${pkgs.mdbook}/bin/mdbook build --dest-dir $out - ''; -} + buildPhase = '' + ${pkgs.mdbook}/bin/mdbook build --dest-dir $out + ''; + } diff --git a/example/flake.nix b/example/flake.nix index d4c1e09..0ad08bc 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -21,11 +21,9 @@ }; }; - outputs = - { ... }@inputs: - { - nixosConfigurations = inputs.dashNix.dashNixLib.build_systems { root = ./.; }; - }; + outputs = {...} @ inputs: { + nixosConfigurations = inputs.dashNix.dashNixLib.build_systems {root = ./.;}; + }; nixConfig = { builders-use-substitutes = true; diff --git a/example/hosts/example/configuration.nix b/example/hosts/example/configuration.nix index ef9d710..c39c104 100644 --- a/example/hosts/example/configuration.nix +++ b/example/hosts/example/configuration.nix @@ -1,5 +1,4 @@ -{ config, ... }: -{ +{config, ...}: { # variables for system # TODO important changes conf = { diff --git a/flake.nix b/flake.nix index 1cdbd0e..7665cfe 100644 --- a/flake.nix +++ b/flake.nix @@ -48,66 +48,62 @@ }; }; - outputs = - { self, ... }@inputs: - let - permittedPackages = [ - "olm-3.2.16" - # well done dotnet... - # this is just for omnisharp - "dotnet-core-combined" - "dotnet-wrapped-combined" - "dotnet-combined" - "dotnet-sdk-6.0.428" - "dotnet-sdk-wrapped-6.0.428" - "dotnet-sdk-6.0.136" - "dotnet-sdk-wrapped-6.0.136" - "dotnet-sdk-7.0.120" - "dotnet-sdk-wrapped-7.0.120" - "dotnet-sdk-7.0.410" - "dotnet-sdk-wrapped-7.0.410" - "jitsi-meet-1.0.8043" - "nextcloud-27.1.11" - ]; - stable = import inputs.stable { - system = "x86_64-linux"; - config = { - allowUnfree = true; - allowBroken = true; - permittedInsecurePackages = permittedPackages; - }; + outputs = {self, ...} @ inputs: let + permittedPackages = [ + "olm-3.2.16" + # well done dotnet... + # this is just for omnisharp + "dotnet-core-combined" + "dotnet-wrapped-combined" + "dotnet-combined" + "dotnet-sdk-6.0.428" + "dotnet-sdk-wrapped-6.0.428" + "dotnet-sdk-6.0.136" + "dotnet-sdk-wrapped-6.0.136" + "dotnet-sdk-7.0.120" + "dotnet-sdk-wrapped-7.0.120" + "dotnet-sdk-7.0.410" + "dotnet-sdk-wrapped-7.0.410" + "jitsi-meet-1.0.8043" + "nextcloud-27.1.11" + ]; + stable = import inputs.stable { + system = "x86_64-linux"; + config = { + allowUnfree = true; + permittedInsecurePackages = permittedPackages; }; - pkgs = import inputs.nixpkgs { - system = "x86_64-linux"; - config = { - allowUnsupportedSystem = true; - permittedInsecurePackages = permittedPackages; - allowBroken = true; - allowUnfree = true; - }; - }; - in - rec { - dashNixLib = import ./lib { - inherit - self - inputs - pkgs - stable - ; - lib = inputs.nixpkgs.lib; - }; - docs = import ./docs { - inherit inputs pkgs stable; - lib = inputs.nixpkgs.lib; - build_systems = dashNixLib.build_systems; - }; - dashNixInputs = inputs; - stablePkgs = stable; - unstablePkgs = pkgs; - modules = ./modules; - iso = dashNixLib.buildIso.config.system.build.isoImage; }; + pkgs = import inputs.nixpkgs { + system = "x86_64-linux"; + config = { + allowUnsupportedSystem = true; + permittedInsecurePackages = permittedPackages; + allowBroken = true; + allowUnfree = true; + }; + }; + in rec { + dashNixLib = import ./lib { + inherit + self + inputs + pkgs + stable + ; + lib = inputs.nixpkgs.lib; + }; + docs = import ./docs { + inherit inputs pkgs stable; + lib = inputs.nixpkgs.lib; + build_systems = dashNixLib.build_systems; + }; + dashNixInputs = inputs; + stablePkgs = stable; + unstablePkgs = pkgs; + modules = ./modules; + iso = dashNixLib.buildIso.config.system.build.isoImage; + }; nixConfig = { builders-use-substitutes = true; diff --git a/home/common.nix b/home/common.nix index 19d704d..c1df32a 100644 --- a/home/common.nix +++ b/home/common.nix @@ -2,11 +2,9 @@ config, lib, ... -}: -let +}: let username = config.conf.username; -in -{ +in { manual = { html.enable = false; json.enable = false; @@ -18,7 +16,7 @@ in home = { username = username; homeDirectory = "/home/${username}"; - sessionPath = [ "$HOME/.cargo/bin" ]; + sessionPath = ["$HOME/.cargo/bin"]; enableNixpkgsReleaseCheck = false; sessionVariables = { diff --git a/home/default.nix b/home/default.nix index 3764e3e..662028e 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,22 +1,21 @@ { - inputs, - pkgs, - config, - lib, - mod, additionalHomeConfig, - homeMods, additionalHomeMods, additionalInputs, + config, + homeMods, + inputs, + lib, + mod, + pkgs, root, ... -}: -{ +}: { xdg = { portal.config.common.default = "*"; portal = { enable = true; - extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + extraPortals = [pkgs.xdg-desktop-portal-gtk]; }; }; home-manager = { diff --git a/home/sync.nix b/home/sync.nix index d82e269..06b6a02 100644 --- a/home/sync.nix +++ b/home/sync.nix @@ -4,53 +4,56 @@ pkgs, lib, ... -}: -let +}: let username = config.mods.nextcloud.username; password = - if (config.sops.secrets ? nextcloud.path) then config.sops.secrets.nextcloud.path else ""; + 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 { - systemd.user = { - services = ( - builtins.listToAttrs ( - map (opts: { - name = "${opts.name}"; - value = { - Unit = { - Description = "Auto sync Nextcloud"; - After = "network-online.target"; + 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"]; }; - 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"; + }) + 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" + ]; }; - 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; - }; -} + }) + synclist + ) + ); + startServices = true; + }; + } diff --git a/home/themes/kdeglobals.nix b/home/themes/kdeglobals.nix index 1a7f217..8fa5003 100644 --- a/home/themes/kdeglobals.nix +++ b/home/themes/kdeglobals.nix @@ -1,24 +1,21 @@ # This is ABSOLUTE GARGABE, KDE srsly, remove this! -# props to catppuccin mocha for sparing me from doing this manually: https://github.com/catppuccin/kde/blob/main/Resources/Base.colors +# props to catppuccin mocha for sparing me from doing this manually: https://github.com/catppuccin/kde/blob/main/Resources/Base.colors { pkgs, config, lib, inputs, ... -}: -let - base16 = pkgs.callPackage inputs.base16.lib { }; +}: let + base16 = pkgs.callPackage inputs.base16.lib {}; - baseScheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); - power = - number: powerIndex: - if powerIndex == 1 then - number - else if powerIndex == 0 then - 1 - else - number * power number (powerIndex - 1); + baseScheme = base16.mkSchemeAttrs config.stylix.base16Scheme; + power = number: powerIndex: + if powerIndex == 1 + then number + else if powerIndex == 0 + then 1 + else number * power number (powerIndex - 1); lookupTable = powerIndex: { "0" = 0 * (power 16 powerIndex); @@ -39,16 +36,14 @@ let "f" = 15 * (power 16 powerIndex); }; - convertHex = - hexChars: + convertHex = hexChars: recombineColors [ (convertColor (lib.lists.take 2 hexChars)) (convertColor (lib.lists.take 2 (lib.lists.drop 2 hexChars))) (convertColor (lib.lists.take 2 (lib.lists.drop 4 hexChars))) ]; - convertColor = - color: (lookupTable 1).${(lib.lists.head color)} + (lookupTable 0).${(lib.lists.last color)}; + convertColor = color: (lookupTable 1).${(lib.lists.head color)} + (lookupTable 0).${(lib.lists.last color)}; recombineColors = colors: lib.lists.foldr (a: b: (toString a) + "," + (toString b)) "end" colors; scheme = { @@ -101,9 +96,7 @@ let convertHex (lib.strings.stringToCharacters baseScheme.base0F) ); }; - -in -{ +in { # temp # crust -> surface1 # subtext0 -> surface2 diff --git a/home/themes/oxiced.nix b/home/themes/oxiced.nix index 4440b22..562ddd8 100644 --- a/home/themes/oxiced.nix +++ b/home/themes/oxiced.nix @@ -3,16 +3,14 @@ inputs, pkgs, ... -}: -let +}: let # at time of using this here, stylix might not be evaluated yet # hence ensure it is by using base16 mkSchemeAttrs - base16 = pkgs.callPackage inputs.base16.lib { }; - scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); -in -{ + base16 = pkgs.callPackage inputs.base16.lib {}; + scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; +in { xdg.configFile."oxiced/theme.toml" = { - source = (pkgs.formats.toml { }).generate "oxiced" { + source = (pkgs.formats.toml {}).generate "oxiced" { name = scheme.scheme; base00 = scheme.base00; base01 = scheme.base01; diff --git a/home/themes/qt.nix b/home/themes/qt.nix index 488efb6..042c0f6 100644 --- a/home/themes/qt.nix +++ b/home/themes/qt.nix @@ -4,23 +4,25 @@ pkgs, lib, ... -}: -let +}: let username = config.conf.username; # at time of using this here, stylix might not be evaluated yet # hence ensure it is by using base16 mkSchemeAttrs - base16 = pkgs.callPackage inputs.base16.lib { }; - scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); + base16 = pkgs.callPackage inputs.base16.lib {}; + scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; # active_colors=#ffc0caf5, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ffc0caf5, #ffc0caf5, #ffc0caf5, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ffc0caf5, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ffc0caf5, #ffc0caf5 # disabled_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d # inactive_colors=#ff6d728d, #${scheme.base00}, #ff373949, #ff2b2c3b, #ff1a1b26, #ff2b2c3b, #ff6d728d, #ff6d728d, #ff6d728d, #ff1a1b26, #ff1a1b26, #19000000, #ff2b2c3b, #ff6d728d, #ff3584e4, #ff1b6acb, #ff1a1b26, #ff242530, #ff1a1b26, #ff6d728d, #ff6d728d color = '' + + [ColorScheme] active_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} disabled_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} inactive_colors=#ff${scheme.base05}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base00}, #ff${scheme.base05}, #ff${scheme.base04}, #ff${scheme.base05}, #ff${scheme.base00}, #ff${scheme.base00}, #00${scheme.base01}, #ff${scheme.base02}, #ff${scheme.base04}, #ff${scheme.base08}, #ff${scheme.base04}, #ff${scheme.base01}, #ff${scheme.base00}, #ff${scheme.base01}, #ff${scheme.base05}, #ff${scheme.base04} ''; qss = '' + QTabBar::tab:selected { color: palette(highlight); } @@ -28,33 +30,7 @@ let border: none; } ''; - - ## test - #cfg = config.stylix.targets.qt; - kvconfig = config.lib.stylix.colors { - template = ./kvconfig.mustache; - extension = ".kvconfig"; - }; - svg = config.lib.stylix.colors { - template = ./kvantum-svg.mustache; - extension = "svg"; - }; - kvantumPackage = pkgs.runCommandLocal "base16-kvantum" { } '' - directory="$out/share/Kvantum/Base16Kvantum" - mkdir --parents "$directory" - cat ${kvconfig} >>"$directory/Base16Kvantum.kvconfig" - cat ${svg} >>"$directory/Base16Kvantum.svg" - ''; - - xdg.configFile."Kvantum/kvantum.kvconfig".source = - (pkgs.formats.ini { }).generate "kvantum.kvconfig" - { - General.theme = "Base16Kvantum"; - }; - - xdg.configFile."Kvantum/Base16Kvantum".source = "${kvantumPackage}/share/Kvantum/Base16Kvantum"; -in -{ +in { xdg.configFile."qt5ct/colors/tokyonight.conf" = { text = "${color}"; }; @@ -64,34 +40,18 @@ in xdg.configFile."qt5ct/qss/tab.qss" = { text = "${qss}"; }; + stylix.targets.qt = { + enable = false; + }; qt = { enable = true; style.package = pkgs.libsForQt5.breeze-qt5; style.name = lib.mkForce "breeze-dark"; }; - # ## test - # xdg.configFile."Kvantum/kvantum.kvconfig".source = (pkgs.formats.ini {}).generate "kvantum.kvconfig" { - # General.theme = "Base16Kvantum"; - # }; - - # xdg.configFile."Kvantum/Base16Kvantum".source = "${kvantumPackage}/share/Kvantum/Base16Kvantum"; - - # xdg.configFile."qt5ct/qt5ct.conf".text = '' - # [Appearance] - # style=kvantum - # ''; - - # #icon_theme=${cfg.iconThemeName} - - # xdg.configFile."qt6ct/qt6ct.conf".text = '' - # [Appearance] - # style=kvantum - # ''; - # #icon_theme=${cfg.iconThemeName} - xdg.configFile."qt5ct/qt5ct.conf" = { text = '' + [Appearance] color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf custom_palette=true @@ -128,6 +88,7 @@ in }; xdg.configFile."qt6ct/qt6ct.conf" = { text = '' + [Appearance] color_scheme_path=/home/${username}/.config/qt6ct/colors/tokyonight.conf custom_palette=true diff --git a/iso/configuration.nix b/iso/configuration.nix index e002625..a17ba81 100644 --- a/iso/configuration.nix +++ b/iso/configuration.nix @@ -4,10 +4,8 @@ modulesPath, self, ... -}: -{ - - imports = [ "${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix" ]; +}: { + imports = ["${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"]; nixpkgs.hostPlatform = { system = "x86_64-linux"; }; diff --git a/lib/default.nix b/lib/default.nix index f3a174b..757fdf4 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,32 +1,31 @@ { inputs, + lib, pkgs, self, stable, - lib, ... -}: -{ +}: { /* - * - # build_systems + * + # build_systems - Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. + Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. - A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. + A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. - The second parameter is the root of your configuration, which should be ./. in most cases. + The second parameter is the root of your configuration, which should be ./. in most cases. - `root` + `root` - : the root path of your configuration + : the root path of your configuration - # Example usage - :::{.example} - ```nix - nixosConfigurations = build_systems { root = ./.; }; - ``` - ::: + # Example usage + :::{.example} + ```nix + nixosConfigurations = build_systems { root = ./.; }; + ``` + ::: */ # let # paths = builtins.readDir ; @@ -35,89 +34,102 @@ # ); # in - build_systems = - { - root, - additionalMods ? { - nixos = [ ]; - home = [ ]; - }, - mods ? { - nixos = [ - inputs.home-manager.nixosModules.home-manager - inputs.stylix.nixosModules.stylix - ../base - ../home - ../modules - ]; - home = [ - inputs.anyrun.homeManagerModules.default - inputs.ironbar.homeManagerModules.default - inputs.oxicalc.homeManagerModules.default - inputs.oxishut.homeManagerModules.default - inputs.oxinoti.homeManagerModules.default - inputs.oxidash.homeManagerModules.default - inputs.oxipaste.homeManagerModules.default - inputs.hyprdock.homeManagerModules.default - inputs.hyprland.homeManagerModules.default - inputs.reset.homeManagerModules.default - inputs.nix-flatpak.homeManagerModules.nix-flatpak - inputs.sops-nix.homeManagerModules.sops - inputs.dashvim.homeManagerModules.dashvim - ../modules - ]; - }, - additionalInputs ? { }, - overridePkgs ? false, - ... - }: + build_systems = { + root, + additionalMods ? { + nixos = []; + home = []; + }, + mods ? { + nixos = [ + inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + ../base + ../home + ../modules + ]; + home = [ + inputs.anyrun.homeManagerModules.default + inputs.ironbar.homeManagerModules.default + inputs.oxicalc.homeManagerModules.default + inputs.oxishut.homeManagerModules.default + inputs.oxinoti.homeManagerModules.default + inputs.oxidash.homeManagerModules.default + inputs.oxipaste.homeManagerModules.default + inputs.hyprdock.homeManagerModules.default + inputs.hyprland.homeManagerModules.default + inputs.reset.homeManagerModules.default + inputs.nix-flatpak.homeManagerModules.nix-flatpak + inputs.sops-nix.homeManagerModules.sops + inputs.dashvim.homeManagerModules.dashvim + ../modules + ]; + }, + additionalInputs ? {}, + overridePkgs ? false, + ... + }: builtins.listToAttrs ( map - (name: { - name = name; - value = - let - mod = root + /hosts/${name}/configuration.nix; - additionalNixosConfig = root + /hosts/${name}/hardware.nix; - additionalHomeConfig = root + /hosts/${name}/home.nix; - in - inputs.nixpkgs.lib.nixosSystem { - specialArgs = { - inherit - self - inputs - mod - additionalHomeConfig - root - ; - pkgs = if overridePkgs then stable else pkgs; - alternativePkgs = if overridePkgs then pkgs else stable; - hostName = name; - homeMods = mods.home; - additionalHomeMods = additionalMods.home; - additionalInputs = additionalInputs; - }; - modules = - [ mod ] - ++ mods.nixos - ++ additionalMods.nixos - ++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig - ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; - }; - }) - ( - lib.lists.remove "" ( - lib.attrsets.mapAttrsToList (name: fType: if fType == "directory" then name else "") ( - builtins.readDir (root + /hosts) - ) + (name: { + name = name; + value = let + mod = root + /hosts/${name}/configuration.nix; + additionalNixosConfig = root + /hosts/${name}/hardware.nix; + additionalHomeConfig = root + /hosts/${name}/home.nix; + args = { + inherit + self + inputs + mod + additionalHomeConfig + root + ; + pkgs = lib.mkForce ( + if overridePkgs + then stable + else pkgs + ); + alternativePkgs = + if overridePkgs + then pkgs + else stable; + hostName = name; + homeMods = mods.home; + additionalHomeMods = additionalMods.home; + additionalInputs = additionalInputs; + }; + in + inputs.nixpkgs.lib.nixosSystem { + modules = + [ + {_module.args = args;} + mod + ] + ++ mods.nixos + ++ additionalMods.nixos + ++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig + ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; + }; + }) + ( + lib.lists.remove "" ( + lib.attrsets.mapAttrsToList (name: fType: + if fType == "directory" + then name + else "") ( + builtins.readDir (root + /hosts) ) ) + ) ); buildIso = inputs.nixpkgs.lib.nixosSystem { specialArgs = { inherit self inputs pkgs; }; - modules = [ ../iso/configuration.nix ]; + modules = [ + ../iso/configuration.nix + ]; }; } diff --git a/modules/conf.nix b/modules/conf.nix index 5645abb..91f83db 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -4,20 +4,16 @@ pkgs, options, ... -}: -{ +}: { options.conf = { - 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. @@ -27,12 +23,10 @@ cpu = lib.mkOption { # TODO: how to enable arm? default = "amd"; - type = - with lib.types; - (enum [ - "amd" - "intel" - ]); + type = with lib.types; (enum [ + "amd" + "intel" + ]); example = "intel"; description = '' cpu microcode. @@ -43,7 +37,7 @@ default = [ "video=${config.conf.defaultMonitor}:${config.conf.defaultMonitorMode}" ]; - example = [ ]; + example = []; type = with lib.types; listOf str; description = '' additional kernelParams passed to bootloader @@ -79,7 +73,7 @@ ironbar = { modules = lib.mkOption { - default = [ ]; + default = []; example = [ { type = "upower"; @@ -94,8 +88,8 @@ }; bootParams = lib.mkOption { - default = [ ]; - example = [ "resume=something" ]; + default = []; + example = ["resume=something"]; type = with lib.types; listOf str; description = '' Boot params @@ -164,7 +158,7 @@ default = "23.05"; type = lib.types.str; description = '' - System state version + System state version ''; }; homeStateVersion = lib.mkOption { @@ -172,10 +166,9 @@ example = "23.05"; type = lib.types.str; description = '' - Home state version + Home state version ''; }; - }; config = diff --git a/modules/programs/acpid.nix b/modules/programs/acpid.nix index 2c0eeab..228c402 100644 --- a/modules/programs/acpid.nix +++ b/modules/programs/acpid.nix @@ -3,9 +3,7 @@ config, options, ... -}: -{ - +}: { options.mods = { acpid.enable = lib.mkOption { default = false; @@ -18,6 +16,6 @@ }; config = lib.mkIf config.mods.acpid.enable ( - lib.optionalAttrs (options ? virtualisation.virtualbox.host) { services.acpid.enable = true; } + lib.optionalAttrs (options ? virtualisation.virtualbox.host) {services.acpid.enable = true;} ); } diff --git a/modules/programs/basePackages.nix b/modules/programs/basePackages.nix index 519e715..635a2a7 100644 --- a/modules/programs/basePackages.nix +++ b/modules/programs/basePackages.nix @@ -3,10 +3,8 @@ lib, options, pkgs, - inputs, ... -}: -{ +}: { options.mods = { basePackages = { enable = lib.mkOption { @@ -18,8 +16,8 @@ ''; }; additionalPackages = lib.mkOption { - default = [ ]; - example = [ pkgs.openssl ]; + default = []; + example = [pkgs.openssl]; type = with lib.types; listOf package; description = '' Additional packages to install. @@ -27,16 +25,16 @@ ''; }; specialPrograms = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' special program configuration to be added which require programs.something notation. ''; }; specialServices = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' special services configuration to be added which require an services.something notation. @@ -47,42 +45,43 @@ config = lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = - if config.mods.basePackages.enable then + if config.mods.basePackages.enable + then with pkgs; - [ - adwaita-icon-theme - dbus - dconf - direnv - glib - gnome.nixos-gsettings-overrides - gsettings-desktop-schemas - gtk-layer-shell - gtk3 - gtk4 - gtk4-layer-shell - hicolor-icon-theme - icon-library - kdePackages.breeze-icons - kdePackages.breeze - libsForQt5.breeze-qt5 - kdePackages.qtstyleplugin-kvantum - libsForQt5.qtstyleplugin-kvantum - libadwaita - libxkbcommon - nixfmt-rfc-style - openssl - seahorse - upower - xorg.xkbutils - ] - ++ config.mods.basePackages.additionalPackages - else - config.mods.basePackages.additionalPackages; + [ + adwaita-icon-theme + dbus + dconf + direnv + glib + gnome.nixos-gsettings-overrides + gsettings-desktop-schemas + gtk-layer-shell + gtk3 + gtk4 + gtk4-layer-shell + hicolor-icon-theme + icon-library + kdePackages.breeze-icons + kdePackages.breeze + libsForQt5.breeze-qt5 + kdePackages.qtstyleplugin-kvantum + libsForQt5.qtstyleplugin-kvantum + libadwaita + libxkbcommon + alejandra + openssl + seahorse + upower + xorg.xkbutils + ] + ++ config.mods.basePackages.additionalPackages + else config.mods.basePackages.additionalPackages; gtk.iconCache.enable = false; services = - if config.mods.basePackages.enable then + if config.mods.basePackages.enable + then { upower.enable = true; dbus = { @@ -95,11 +94,11 @@ }; } // config.mods.basePackages.specialServices - else - config.mods.basePackages.specialServices; + else config.mods.basePackages.specialServices; programs = - if config.mods.basePackages.enable then + if config.mods.basePackages.enable + then { nix-ld = { enable = true; @@ -121,8 +120,6 @@ gnupg.agent.enable = true; } // config.mods.basePackages.specialPrograms - else - config.mods.basePackages.specialPrograms; + else config.mods.basePackages.specialPrograms; }; - } diff --git a/modules/programs/bluetooth.nix b/modules/programs/bluetooth.nix index 7818d34..e09b382 100644 --- a/modules/programs/bluetooth.nix +++ b/modules/programs/bluetooth.nix @@ -3,8 +3,7 @@ config, options, ... -}: -{ +}: { options.mods = { bluetooth.enable = lib.mkOption { default = false; diff --git a/modules/programs/browser/brave.nix b/modules/programs/browser/brave.nix index 5e71638..9a09e7e 100644 --- a/modules/programs/browser/brave.nix +++ b/modules/programs/browser/brave.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods.browser.brave = { enable = lib.mkOption { default = false; @@ -17,7 +16,7 @@ }; config = lib.mkIf config.mods.browser.brave.enable ( lib.optionalAttrs (options ? home.packages) { - home.packages = with pkgs; [ brave ]; + home.packages = with pkgs; [brave]; } ); } diff --git a/modules/programs/browser/chromium.nix b/modules/programs/browser/chromium.nix index b5d91f4..7ed237a 100644 --- a/modules/programs/browser/chromium.nix +++ b/modules/programs/browser/chromium.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods.browser.chromium = { enable = lib.mkOption { default = false; @@ -17,7 +16,7 @@ }; config = lib.mkIf config.mods.browser.chromium.enable ( lib.optionalAttrs (options ? home.packages) { - home.packages = with pkgs; [ chromium ]; + home.packages = with pkgs; [chromium]; } ); } diff --git a/modules/programs/browser/firefox.nix b/modules/programs/browser/firefox.nix index 69d5799..0220cf8 100644 --- a/modules/programs/browser/firefox.nix +++ b/modules/programs/browser/firefox.nix @@ -3,8 +3,7 @@ config, options, ... -}: -{ +}: { options.mods.browser.firefox = { enable = lib.mkOption { default = false; @@ -43,7 +42,7 @@ SkipOnboarding = true; }; }; - example = { }; + example = {}; type = with lib.types; attrsOf anything; description = "Firefox policy configuration. See https://mozilla.github.io/policy-templates/ for more information."; }; diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index 96de349..96ef32c 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -5,8 +5,7 @@ system, inputs, ... -}: -{ +}: { options.mods.browser.zen = { enable = lib.mkOption { default = false; @@ -18,7 +17,7 @@ }; config = lib.mkIf config.mods.browser.zen.enable ( lib.optionalAttrs (options ? home.packages) { - home.packages = [ inputs.zen-browser.packages."${system}".default ]; + home.packages = [inputs.zen-browser.packages."${system}".default]; } ); } diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 4e2afc4..dbf78f3 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -4,8 +4,7 @@ pkgs, options, ... -}: -{ +}: { options.mods = { coding = { enable = lib.mkOption { @@ -42,8 +41,8 @@ ''; }; extensions = lib.mkOption { - default = [ ]; - example = [ ]; + default = []; + example = []; type = with lib.types; listOf package; description = "Extensions to be installed"; }; @@ -55,8 +54,8 @@ description = "Use default base packages (only additionalPackages are installed if false)"; }; additionalPackages = lib.mkOption { - default = [ ]; - example = [ ]; + default = []; + example = []; type = with lib.types; listOf package; description = "Additional packages to be installed"; }; @@ -76,7 +75,7 @@ ghc haskellPackages.haskell-language-server ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = '' haskell packages @@ -98,7 +97,7 @@ tinymist ltex-ls ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = '' typst packages @@ -119,7 +118,7 @@ go gopls ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = '' Go packages @@ -136,8 +135,8 @@ ''; }; packages = lib.mkOption { - default = with pkgs; [ rustup ]; - example = [ ]; + default = with pkgs; [rustup]; + example = []; type = with lib.types; listOf package; description = '' Rust packages @@ -161,7 +160,7 @@ nodePackages.typescript-language-server nodePackages.prettier ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = '' TS/JS packages @@ -182,7 +181,7 @@ zig zls ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = '' zig packages @@ -205,7 +204,7 @@ jdt-language-server temurin-jre-bin ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = '' Java packages @@ -232,7 +231,7 @@ fsharp #fsautocomplete ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = '' C#/F# packages @@ -255,7 +254,7 @@ gcc clang-tools ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = '' C/C++ packages @@ -278,7 +277,7 @@ python312Packages.python-lsp-ruff python312Packages.python-lsp-black ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = '' python packages @@ -304,7 +303,7 @@ #json jq ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = '' packages for said filetypes @@ -325,7 +324,7 @@ bash-language-server shfmt ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = '' bash packages @@ -347,7 +346,7 @@ tailwindcss-language-server # html-tidy ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = '' html/css packages @@ -368,7 +367,7 @@ nodePackages.sql-formatter sqls ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = '' sql packages @@ -385,8 +384,8 @@ ''; }; packages = lib.mkOption { - default = with pkgs; [ gleam ]; - example = [ ]; + default = with pkgs; [gleam]; + example = []; type = with lib.types; listOf package; description = '' gleam packages @@ -403,8 +402,8 @@ ''; }; packages = lib.mkOption { - default = with pkgs; [ asm-lsp ]; - example = [ ]; + default = with pkgs; [asm-lsp]; + example = []; type = with lib.types; listOf package; description = '' assembly packages @@ -415,23 +414,22 @@ }; }; - config = - let - basePackages = with pkgs; [ - gitui - meson - ninja - tree-sitter - unzip - pkg-config - sqlite - plantuml - d-spy - tmux - tmate - ]; - font_family = "${config.mods.stylix.fonts.monospace.name}"; - in + config = let + basePackages = with pkgs; [ + gitui + meson + ninja + tree-sitter + unzip + pkg-config + sqlite + plantuml + d-spy + tmux + tmate + ]; + font_family = "${config.mods.stylix.fonts.monospace.name}"; + in lib.mkIf config.mods.coding.enable ( lib.optionalAttrs (options ? home.packages) { programs.dashvim = lib.mkIf config.mods.coding.dashvim { @@ -444,7 +442,7 @@ extensions = config.mods.coding.vscodium.extensions; }; xdg.configFile."neovide/config.toml" = lib.mkIf config.mods.coding.dashvim { - source = (pkgs.formats.toml { }).generate "neovide" { + source = (pkgs.formats.toml {}).generate "neovide" { font = { size = 12; normal = { @@ -466,8 +464,7 @@ }; }; }; - home.packages = - with pkgs; + home.packages = with pkgs; [ (lib.mkIf config.mods.coding.dashvim neovide) (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) diff --git a/modules/programs/containers.nix b/modules/programs/containers.nix index 6f9f605..aacf6f4 100644 --- a/modules/programs/containers.nix +++ b/modules/programs/containers.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods.containers = { variant = lib.mkOption { default = ""; @@ -22,7 +21,7 @@ podman-tui podman-compose ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = "Podman packages"; }; @@ -30,7 +29,7 @@ default = with pkgs; [ docker-compose ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = "Docker packages"; }; @@ -38,7 +37,7 @@ default = with pkgs; [ dive ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = "Container packages"; }; @@ -47,33 +46,35 @@ lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = (lib.lists.optionals ( - config.mods.containers.variant == "podman" - ) config.mods.containers.podmanPackages) + config.mods.containers.variant == "podman" + ) + config.mods.containers.podmanPackages) ++ (lib.lists.optionals ( - config.mods.containers.variant == "docker" - ) config.mods.containers.dockerPackages) + config.mods.containers.variant == "docker" + ) + config.mods.containers.dockerPackages) ++ (lib.lists.optionals ( - config.mods.containers.variant == "podman" || config.mods.containers.variant == "docker" - ) config.mods.containers.combinedPackages); + config.mods.containers.variant == "podman" || config.mods.containers.variant == "docker" + ) + config.mods.containers.combinedPackages); virtualisation = - if (config.mods.containers.variant == "podman") then - { - containers.enable = true; - podman = { - enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; - }; - } - else if (config.mods.containers.variant == "docker") then - { - containers.enable = true; - docker = { - enable = true; - }; - } - else - { }; + if (config.mods.containers.variant == "podman") + then { + containers.enable = true; + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; + } + else if (config.mods.containers.variant == "docker") + then { + containers.enable = true; + docker = { + enable = true; + }; + } + else {}; } ); } diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix index 9c0ecfe..35bf396 100644 --- a/modules/programs/drives.nix +++ b/modules/programs/drives.nix @@ -3,9 +3,7 @@ config, options, ... -}: -let - +}: let driveModule = lib.types.submodule { options = { name = lib.mkOption { @@ -20,7 +18,7 @@ let drive = lib.mkOption { type = lib.types.attrsOf lib.types.anything; description = "The attrs of the drive"; - default = { }; + default = {}; example = { device = "/dev/disk/by-label/DRIVE2"; fsType = "ext4"; @@ -33,8 +31,7 @@ let }; }; }; -in -{ +in { options.mods = { drives = { useSwap = { @@ -59,7 +56,6 @@ in }; extraDrives = lib.mkOption { default = [ - ]; example = [ { @@ -90,12 +86,15 @@ in fileSystems = builtins.listToAttrs ( map ( - { name, drive }: { + name, + drive, + }: { name = "/" + name; value = drive; } - ) config.mods.drives.extraDrives + ) + config.mods.drives.extraDrives ) // (lib.optionalAttrs config.mods.drives.defaultDrives.enable) { "/" = { @@ -131,7 +130,7 @@ in }; # TODO make this convert to choice of drives -> thanks to funny types this doesn't work... swapDevices = lib.mkIf config.mods.drives.useSwap.enable [ - { device = "/dev/disk/by-label/SWAP"; } + {device = "/dev/disk/by-label/SWAP";} ]; } ); diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 722b101..ffeea1e 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -5,12 +5,10 @@ config, options, ... -}: -let - base16 = pkgs.callPackage inputs.base16.lib { }; - scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); -in -{ +}: let + base16 = pkgs.callPackage inputs.base16.lib {}; + scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; +in { options.mods.fish = { enable = lib.mkOption { default = true; @@ -36,7 +34,8 @@ in programs.fish = { enable = true; shellInit = - if config.mods.fish.useDefaultConfig then + if config.mods.fish.useDefaultConfig + then '' if status is-interactive # Commands to run in interactive sessions can go here @@ -182,8 +181,7 @@ in direnv hook fish | source '' + config.mods.fish.additionalConfig - else - config.mods.fish.additionalConfig; + else config.mods.fish.additionalConfig; }; } ); diff --git a/modules/programs/flatpak.nix b/modules/programs/flatpak.nix index 3ffd068..7c13e9b 100644 --- a/modules/programs/flatpak.nix +++ b/modules/programs/flatpak.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods.flatpak = { enable = lib.mkOption { default = true; @@ -14,15 +13,15 @@ description = "Enables the flatpak package manager"; }; additional_packages = lib.mkOption { - default = [ ]; - example = [ ]; + default = []; + example = []; type = with lib.types; listOf str; description = "Flatpak packages"; }; }; config = lib.mkIf config.mods.flatpak.enable ( lib.optionalAttrs (options ? services.flatpak.remote) { - environment.systemPackages = [ pkgs.flatpak ]; + environment.systemPackages = [pkgs.flatpak]; services.flatpak.remotes = lib.mkOptionDefault [ { name = "flathub-stable"; @@ -32,11 +31,13 @@ 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 - "com.github.tchx84.Flatseal" - ] ++ config.mods.flatpak.additional_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 + "com.github.tchx84.Flatseal" + ] + ++ config.mods.flatpak.additional_packages; } ); } diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index f3d857c..18b95c0 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods.gaming = { enable = lib.mkOption { default = false; @@ -24,7 +23,7 @@ #heroic mangohud ]; - example = [ ]; + example = []; type = with lib.types; listOf package; description = "Install gaming related packages"; }; diff --git a/modules/programs/gdm.nix b/modules/programs/gdm.nix index 2bb3e47..343c6cd 100644 --- a/modules/programs/gdm.nix +++ b/modules/programs/gdm.nix @@ -3,8 +3,7 @@ options, config, ... -}: -{ +}: { options.mods.gdm = { enable = lib.mkOption { default = false; @@ -13,8 +12,8 @@ description = "Enables the gdm displayManager"; }; extraOptions = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = "Extra options to be applied to the gnome config"; }; diff --git a/modules/programs/git.nix b/modules/programs/git.nix index f409106..dec2aa5 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -3,8 +3,7 @@ config, options, ... -}: -{ +}: { options.mods.git = { username = lib.mkOption { default = "DashieTM"; @@ -38,25 +37,22 @@ default = '' Host github.com ${ - if (config ? sops.secrets && config.sops.secrets ? hub.path) then - "IdentityFile ${config.sops.secrets.hub.path}" - else - "" - } + if (config ? sops.secrets && config.sops.secrets ? hub.path) + then "IdentityFile ${config.sops.secrets.hub.path}" + else "" + } Host gitlab.com ${ - if (config ? sops.secrets && config.sops.secrets ? lab.path) then - "IdentityFile ${config.sops.secrets.lab.path}" - else - "" - } + if (config ? sops.secrets && config.sops.secrets ? lab.path) + then "IdentityFile ${config.sops.secrets.lab.path}" + else "" + } Host dashie.org ${ - if (config ? sops.secrets && config.sops.secrets ? dashie.path) then - "IdentityFile ${config.sops.secrets.dashie.path}" - else - "" - } + if (config ? sops.secrets && config.sops.secrets ? dashie.path) + then "IdentityFile ${config.sops.secrets.dashie.path}" + else "" + } ''; example = ""; type = lib.types.lines; diff --git a/modules/programs/gnome.nix b/modules/programs/gnome.nix index 885eb2f..faf2b1e 100644 --- a/modules/programs/gnome.nix +++ b/modules/programs/gnome.nix @@ -4,8 +4,7 @@ config, pkgs, ... -}: -{ +}: { options.mods.gnome = { enable = lib.mkOption { default = false; @@ -20,27 +19,26 @@ description = "Use default options provided by module. If disabled, will only apply extraOptions."; }; extraOptions = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = "Extra options to be applied to the gnome config"; }; extraDconf = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = "Extra options to be applied to the dconf config"; }; }; - config = - let - defaultExtensions = with pkgs.gnomeExtensions; [ - blur-my-shell - dash-to-dock - tray-icons-reloaded - ]; - in + config = let + defaultExtensions = with pkgs.gnomeExtensions; [ + blur-my-shell + dash-to-dock + tray-icons-reloaded + ]; + in lib.mkIf config.mods.gnome.enable ( lib.optionalAttrs (options ? services.xserver.desktopManager.gnome) ( { @@ -49,7 +47,7 @@ desktopManager.gnome.enable = true; }; } - // lib.mkIf config.mods.gnome.useDefaultOptions { environment.systemPackages = defaultExtensions; } + // lib.mkIf config.mods.gnome.useDefaultOptions {environment.systemPackages = defaultExtensions;} // { services.xserver.desktopManager.gnome = config.mods.gnome.extraOptions; } diff --git a/modules/programs/gnomeServices.nix b/modules/programs/gnomeServices.nix index ffd8a06..01ab872 100644 --- a/modules/programs/gnomeServices.nix +++ b/modules/programs/gnomeServices.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods = { gnomeServices.enable = lib.mkOption { default = true; @@ -43,7 +42,7 @@ ]; }; environment.extraInit = '' - export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/keyring/ssh" + export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/keyring/ssh" ''; services = { # needed for GNOME services outside of GNOME Desktop @@ -66,15 +65,14 @@ }; }; home = { - packages = - let - packages = with pkgs; [ - gcr - nautilus - sushi - nautilus-python - ]; - in + packages = let + packages = with pkgs; [ + gcr + nautilus + sushi + nautilus-python + ]; + in lib.mkIf config.mods.nautilus.enable packages; }; } diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index 69592a2..5efa416 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -4,9 +4,7 @@ options, pkgs, ... -}: -{ - +}: { options.mods = { gpu = { nvidia.enable = lib.mkOption { @@ -57,35 +55,34 @@ config = (lib.optionalAttrs (options ? hardware.graphics) { boot = lib.mkIf config.mods.amdgpu.enable { - kernelModules = [ "kvm-amd" ]; - initrd.kernelModules = [ "amdgpu" ]; - kernelParams = [ "amdgpu.ppfeaturemask=0xffffffff" ]; + kernelModules = ["kvm-amd"]; + initrd.kernelModules = ["amdgpu"]; + kernelParams = ["amdgpu.ppfeaturemask=0xffffffff"]; }; hardware = { - graphics = - let - amdPackages = [ - (lib.mkIf (config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable) pkgs.vpl-gpu-rt) - (lib.mkIf ( + graphics = let + amdPackages = [ + (lib.mkIf (config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable) pkgs.vpl-gpu-rt) + (lib.mkIf ( config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable - ) pkgs.intel-media-driver) - (lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl) - (lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau) - (lib.mkIf (config.mods.gpu.intelgpu || config.mods.gpu.amdgpu) pkgs.mesa.drivers) - ]; - rocmPackages = [ - pkgs.rocmPackages.clr.icd - pkgs.rocm-opencl-runtime - ]; - in - { - enable = true; - enable32Bit = lib.mkDefault true; - extraPackages = - amdPackages - ++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu) rocmPackages); - }; + ) + pkgs.intel-media-driver) + (lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl) + (lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau) + (lib.mkIf (config.mods.gpu.intelgpu || config.mods.gpu.amdgpu) pkgs.mesa.drivers) + ]; + rocmPackages = [ + pkgs.rocmPackages.clr.icd + pkgs.rocm-opencl-runtime + ]; + in { + enable = true; + enable32Bit = lib.mkDefault true; + extraPackages = + amdPackages + ++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu) rocmPackages); + }; }; }) // lib.optionalAttrs (options ? hardware.graphics) ( @@ -98,7 +95,7 @@ nvidiaSettings = true; package = config.boot.kernelPackages.nvidiaPackages.beta; }; - services.xserver.videoDrivers = [ "nvidia" ]; + services.xserver.videoDrivers = ["nvidia"]; } ); } diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index a88e700..d00baa6 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -5,8 +5,7 @@ pkgs, options, ... -}: -{ +}: { options.mods = { greetd = { enable = lib.mkOption { @@ -32,7 +31,7 @@ type = lib.types.str; description = '' Scale used by the monitor in the login screen. - By default the scale of the main monitor is used. + By default the scale of the main monitor is used. ''; }; resolution = lib.mkOption { @@ -40,7 +39,7 @@ example = "3440x1440@180"; type = lib.types.str; description = '' - Resolution/refreshrate used by the monitor in the login screen. + Resolution/refreshrate used by the monitor in the login screen. ''; }; environments = lib.mkOption { @@ -54,13 +53,13 @@ ''; type = lib.types.lines; description = '' - List of environments that should be available in the login prompt. + List of environments that should be available in the login prompt. ''; }; regreet = { customSettings = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' Custom regret settings. See https://github.com/rharish101/ReGreet/blob/main/regreet.sample.toml for more information. @@ -70,16 +69,15 @@ }; }; - 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 + 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 = [ @@ -136,8 +134,8 @@ } // lib.optionalAttrs (options ? home) { xdg.configFile."regreet/regreet.toml".source = - (pkgs.formats.toml { }).generate "regreet" - config.mods.greetd.regreet.customSettings; + (pkgs.formats.toml {}).generate "regreet" + config.mods.greetd.regreet.customSettings; } ); } diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index 3b98eb9..07b599b 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -5,8 +5,7 @@ pkgs, inputs, ... -}: -{ +}: { options.mods.homePackages = { useDefaultPackages = lib.mkOption { default = true; @@ -15,8 +14,8 @@ description = "Use default packages (will use additional_packages only if disabled)"; }; additionalPackages = lib.mkOption { - default = [ ]; - example = [ pkgs.flatpak ]; + default = []; + example = [pkgs.flatpak]; type = with lib.types; listOf package; description = '' Additional Home manager packages. @@ -24,16 +23,16 @@ ''; }; specialPrograms = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' special program configuration to be added which require programs.something notation. ''; }; specialServices = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' special services configuration to be added which require an services.something notation. @@ -72,66 +71,67 @@ browser = lib.mkOption { default = inputs.zen-browser.packages.${pkgs.system}.default; example = "firefox"; - type = - with lib.types; + type = with lib.types; nullOr ( either (enum [ "firefox" - ]) package + ]) + package ); description = "The browser (the enum variants have preconfigured modules)"; }; }; config = lib.optionalAttrs (options ? home.packages) { home.packages = - if config.mods.homePackages.useDefaultPackages then + if config.mods.homePackages.useDefaultPackages + then with pkgs; - [ - (lib.mkIf config.mods.homePackages.ncspot ncspot) - (lib.mkIf config.mods.homePackages.vesktop vesktop) - (lib.mkIf config.mods.homePackages.nextcloudClient nextcloud-client) - (lib.mkIf (!isNull config.mods.homePackages.matrixClient) config.mods.homePackages.matrixClient) - (lib.mkIf (!isNull config.mods.homePackages.mailClient) config.mods.homePackages.mailClient) - (lib.mkIf ( - # NOTE: This should be package, but nix doesn't have that.... - builtins.isAttrs config.mods.homePackages.browser && !isNull config.mods.homePackages.browser - ) config.mods.homePackages.browser) - adw-gtk3 - bat - brightnessctl - dbus - fastfetch - fd - ffmpeg - flake-checker - gnome-keyring - gnutar - greetd.regreet - killall - kitty - libnotify - lsd - networkmanager - nh - nix-index - playerctl - poppler_utils - pulseaudio - libsForQt5.qt5ct - qt6ct - fcp - ripgrep - rm-improved - system-config-printer - xournalpp - zenith - zoxide - ] - ++ config.mods.homePackages.additionalPackages - else - config.mods.homePackages.additionalPackages; + [ + (lib.mkIf config.mods.homePackages.ncspot ncspot) + (lib.mkIf config.mods.homePackages.vesktop vesktop) + (lib.mkIf config.mods.homePackages.nextcloudClient nextcloud-client) + (lib.mkIf (!isNull config.mods.homePackages.matrixClient) config.mods.homePackages.matrixClient) + (lib.mkIf (!isNull config.mods.homePackages.mailClient) config.mods.homePackages.mailClient) + (lib.mkIf ( + # NOTE: This should be package, but nix doesn't have that.... + builtins.isAttrs config.mods.homePackages.browser && !isNull config.mods.homePackages.browser + ) + config.mods.homePackages.browser) + adw-gtk3 + bat + brightnessctl + dbus + fastfetch + fd + ffmpeg + flake-checker + gnome-keyring + gnutar + greetd.regreet + killall + kitty + libnotify + lsd + networkmanager + nh + nix-index + playerctl + poppler_utils + pulseaudio + libsForQt5.qt5ct + qt6ct + fcp + ripgrep + rm-improved + system-config-printer + xournalpp + zenith + zoxide + ] + ++ config.mods.homePackages.additionalPackages + else config.mods.homePackages.additionalPackages; - xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" { + xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml {}).generate "direnv" { global = { warn_timeout = "-1s"; }; @@ -139,21 +139,19 @@ programs = config.mods.homePackages.specialPrograms // ( - if config.mods.homePackages.browser == "firefox" then - { - firefox = { - enable = true; - policies = config.mods.browser.firefox.configuration; - profiles = builtins.listToAttrs config.mods.browser.firefox.profiles; - }; - } - else - { } + if config.mods.homePackages.browser == "firefox" + then { + firefox = { + enable = true; + policies = config.mods.browser.firefox.configuration; + profiles = builtins.listToAttrs config.mods.browser.firefox.profiles; + }; + } + else {} ); services = - if config.mods.homePackages.useDefaultPackages then - config.mods.homePackages.specialServices - else - config.mods.homePackages.specialServices; + if config.mods.homePackages.useDefaultPackages + then config.mods.homePackages.specialServices + else config.mods.homePackages.specialServices; }; } diff --git a/modules/programs/hyprland/anyrun.nix b/modules/programs/hyprland/anyrun.nix index 5e7d9d8..832a0be 100644 --- a/modules/programs/hyprland/anyrun.nix +++ b/modules/programs/hyprland/anyrun.nix @@ -5,8 +5,7 @@ options, inputs, ... -}: -{ +}: { options.mods = { hyprland = { anyrun = { @@ -25,8 +24,8 @@ ''; }; customConfig = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' Custom anyrun configuration. @@ -63,7 +62,8 @@ programs.anyrun = { enable = true; config = - if config.mods.hyprland.anyrun.useDefaultConfig then + if config.mods.hyprland.anyrun.useDefaultConfig + then { plugins = [ inputs.anyrun.packages.${pkgs.system}.applications @@ -84,15 +84,15 @@ closeOnClick = true; } // config.mods.hyprland.anyrun.customConfig - else - config.mods.hyprland.anyrun.customConfig; + else config.mods.hyprland.anyrun.customConfig; extraCss = - if config.mods.hyprland.anyrun.useDefaultCss then + if config.mods.hyprland.anyrun.useDefaultCss + then '' #window { border-radius: 10px; - background-color: none; + background-color: none; } box#main { @@ -138,8 +138,7 @@ } '' + config.mods.hyprland.anyrun.customCss - else - config.mods.hyprland.anyrun.customCss; + else config.mods.hyprland.anyrun.customCss; }; } ); diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 0d06c81..503c992 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -5,19 +5,14 @@ pkgs, inputs, ... -}: -let +}: let browserName = - if (builtins.isString config.mods.homePackages.browser) then - config.mods.homePackages.browser - else if - config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram - then - config.mods.homePackages.browser.meta.mainProgram - else - config.mods.homePackages.browser.pname; -in -{ + if (builtins.isString config.mods.homePackages.browser) + then config.mods.homePackages.browser + else if config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram + then config.mods.homePackages.browser.meta.mainProgram + else config.mods.homePackages.browser.pname; +in { options.mods = { hyprland = { enable = lib.mkOption { @@ -35,15 +30,15 @@ in # all others ",highrr,auto,1" ]; - 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. ''; }; workspace = lib.mkOption { - default = [ ]; - example = [ "2,monitor:DP-1, default:true" ]; + default = []; + example = ["2,monitor:DP-1, default:true"]; type = with lib.types; listOf str; description = '' The workspace configuration for hyprland. @@ -58,8 +53,8 @@ in ''; }; extraAutostart = lib.mkOption { - default = [ ]; - example = [ "your application" ]; + default = []; + example = ["your application"]; type = lib.types.listOf lib.types.str; description = '' Extra exec_once. @@ -74,8 +69,8 @@ in ''; }; customConfig = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' Custom Hyprland configuration. @@ -83,16 +78,16 @@ in ''; }; plugins = lib.mkOption { - default = [ ]; - example = [ ]; + default = []; + example = []; type = with lib.types; listOf package; description = '' Plugins to be added to Hyprland. ''; }; pluginConfig = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' Plugin configuration to be added to Hyprland. @@ -129,7 +124,8 @@ in wayland.windowManager.hyprland = { enable = true; settings = - if config.mods.hyprland.useDefaultConfig then + if config.mods.hyprland.useDefaultConfig + then { "$mod" = "SUPER"; @@ -366,34 +362,39 @@ in "immediate,class:^(.*)(needforspeedheat.exe)$" ]; - exec-once = [ - # environment - "systemctl --user import-environment" - "dbus-update-activation-environment --systemd --all" - "hyprctl setcursor Bibata-Modern-Classic 24" + exec-once = + [ + # environment + "systemctl --user import-environment" + "dbus-update-activation-environment --systemd --all" + "hyprctl setcursor Bibata-Modern-Classic 24" - # other programs - "hyprpaper" - "ironbar" - "${browserName}" - "oxipaste_daemon" - "oxinoti" - ] ++ config.mods.hyprland.extraAutostart; + # other programs + "hyprpaper" + "ironbar" + "${browserName}" + "oxipaste_daemon" + "oxinoti" + ] + ++ config.mods.hyprland.extraAutostart; - plugin = { - hyprspace = lib.mkIf config.mods.hyprland.hyprspaceEnable { - bind = [ - "SUPER, W, overview:toggle, toggle" - ]; - }; - } // config.mods.hyprland.pluginConfig; + plugin = + { + hyprspace = lib.mkIf config.mods.hyprland.hyprspaceEnable { + bind = [ + "SUPER, W, overview:toggle, toggle" + ]; + }; + } + // config.mods.hyprland.pluginConfig; } // config.mods.hyprland.customConfig - else - lib.mkForce config.mods.hyprland.customConfig; - plugins = [ - (lib.mkIf config.mods.hyprland.hyprspaceEnable inputs.Hyprspace.packages.${pkgs.system}.Hyprspace) - ] ++ config.mods.hyprland.plugins; + else lib.mkForce config.mods.hyprland.customConfig; + plugins = + [ + (lib.mkIf config.mods.hyprland.hyprspaceEnable inputs.Hyprspace.packages.${pkgs.system}.Hyprspace) + ] + ++ config.mods.hyprland.plugins; }; } ); diff --git a/modules/programs/hyprland/hyprlock.nix b/modules/programs/hyprland/hyprlock.nix index a33243f..0a807ea 100644 --- a/modules/programs/hyprland/hyprlock.nix +++ b/modules/programs/hyprland/hyprlock.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods = { hyprland.hyprlock = { enable = lib.mkOption { @@ -22,7 +21,7 @@ stylix.targets.hyprlock = { enable = false; }; - home.packages = with pkgs; [ hyprlock ]; + home.packages = with pkgs; [hyprlock]; programs.hyprlock = lib.mkIf config.mods.hyprland.hyprlock.enable { enable = true; settings = { diff --git a/modules/programs/hyprland/hyprpaper.nix b/modules/programs/hyprland/hyprpaper.nix index a16e975..31c4d05 100644 --- a/modules/programs/hyprland/hyprpaper.nix +++ b/modules/programs/hyprland/hyprpaper.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods = { hyprland.hyprpaper = { enable = lib.mkOption { @@ -17,7 +16,7 @@ config = lib.mkOption { default = ""; example = '' - preload = path/to/wallpaper + preload = path/to/wallpaper wallpaper = YOURMONITOR,path/to/wallpaper ''; type = lib.types.lines; @@ -30,7 +29,7 @@ config = lib.mkIf config.mods.hyprland.hyprpaper.enable ( lib.optionalAttrs (options ? xdg.configFile) { - home.packages = with pkgs; [ hyprpaper ]; + 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 81b2711..cb16289 100644 --- a/modules/programs/hyprland/ironbar.nix +++ b/modules/programs/hyprland/ironbar.nix @@ -3,11 +3,9 @@ config, options, ... -}: -let +}: let username = config.conf.username; -in -{ +in { options.mods = { hyprland.ironbar = { enable = lib.mkOption { @@ -25,8 +23,8 @@ in ''; }; customConfig = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' Custom ironbar configuration. @@ -61,7 +59,8 @@ in programs.ironbar = { enable = true; style = - if config.mods.hyprland.ironbar.useDefaultCss then + if config.mods.hyprland.ironbar.useDefaultCss + then '' @import url("/home/${username}/.config/gtk-3.0/gtk.css"); @@ -197,106 +196,108 @@ in } '' + config.mods.hyprland.ironbar.customCss - else - config.mods.hyprland.ironbar.customCss; + else config.mods.hyprland.ironbar.customCss; features = [ #"another_feature" ]; config = { monitors."${config.conf.defaultMonitor}" = - if config.mods.hyprland.ironbar.useDefaultConfig then + if config.mods.hyprland.ironbar.useDefaultConfig + then { - 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 = [ - { - type = "box"; - orientation = "vertical"; - class = "audio-box"; - widgets = [ - { - type = "box"; - orientation = "horizontal"; - widgets = [ - { - type = "button"; - class = "audio-button"; - label = ""; - on_click = (lib.mkIf config.mods.scripts.audioControl "!audioControl bluetooth"); - } - { - type = "button"; - class = "audio-button"; - label = "󰋋"; - on_click = (lib.mkIf config.mods.scripts.audioControl "!audioControl internal"); - } - ]; - class = "audio-button-box"; - } - { - type = "label"; - label = "Output"; - } - { - type = "slider"; - class = "audio-slider"; - step = 1.0; - length = 200; - value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; - on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; - } - { - type = "label"; - label = "Input"; - } - { - type = "slider"; - 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%"; - } - ]; - } - ]; - } - { - 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"; } - ]; + 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 = [ + { + type = "box"; + orientation = "vertical"; + class = "audio-box"; + widgets = [ + { + type = "box"; + orientation = "horizontal"; + widgets = [ + { + type = "button"; + class = "audio-button"; + label = ""; + on_click = lib.mkIf config.mods.scripts.audioControl "!audioControl bluetooth"; + } + { + type = "button"; + class = "audio-button"; + label = "󰋋"; + on_click = lib.mkIf config.mods.scripts.audioControl "!audioControl internal"; + } + ]; + class = "audio-button-box"; + } + { + type = "label"; + label = "Output"; + } + { + type = "slider"; + class = "audio-slider"; + step = 1.0; + length = 200; + value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; + on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; + } + { + type = "label"; + label = "Input"; + } + { + type = "slider"; + 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%"; + } + ]; + } + ]; + } + { + 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; @@ -317,8 +318,7 @@ in ]; } // config.mods.hyprland.ironbar.customConfig - else - config.mods.hyprland.ironbar.customConfig; + else config.mods.hyprland.ironbar.customConfig; }; }; } diff --git a/modules/programs/kde.nix b/modules/programs/kde.nix index 1497094..f81194d 100644 --- a/modules/programs/kde.nix +++ b/modules/programs/kde.nix @@ -3,8 +3,7 @@ options, config, ... -}: -{ +}: { options.mods.kde = { enable = lib.mkOption { default = false; @@ -20,5 +19,4 @@ services.desktopManager.plasma6.enable = true; } ); - } diff --git a/modules/programs/kdeConnect.nix b/modules/programs/kdeConnect.nix index 169814c..46b12e8 100644 --- a/modules/programs/kdeConnect.nix +++ b/modules/programs/kdeConnect.nix @@ -4,9 +4,7 @@ options, pkgs, ... -}: -{ - +}: { options.mods = { kdeConnect.enable = lib.mkOption { default = false; @@ -38,7 +36,7 @@ }; } // lib.optionalAttrs (options ? home.packages) { - home.packages = with pkgs; [ kdePackages.kdeconnect-kde ]; + home.packages = with pkgs; [kdePackages.kdeconnect-kde]; } ); } diff --git a/modules/programs/keepassxc.nix b/modules/programs/keepassxc.nix index 4dda211..93c9142 100644 --- a/modules/programs/keepassxc.nix +++ b/modules/programs/keepassxc.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods.keepassxc = { enable = lib.mkOption { default = true; @@ -34,7 +33,7 @@ }; config = lib.mkIf config.mods.keepassxc.enable ( lib.optionalAttrs (options ? home.file) { - home.packages = [ pkgs.keepassxc ]; + home.packages = [pkgs.keepassxc]; xdg.configFile."keepassxc/keepassxc.ini" = { text = '' [General] diff --git a/modules/programs/kitty.nix b/modules/programs/kitty.nix index 56b8126..eb41e44 100644 --- a/modules/programs/kitty.nix +++ b/modules/programs/kitty.nix @@ -5,10 +5,9 @@ pkgs, inputs, ... -}: -let - base16 = pkgs.callPackage inputs.base16.lib { }; - scheme = (base16.mkSchemeAttrs config.stylix.base16Scheme); +}: let + base16 = pkgs.callPackage inputs.base16.lib {}; + scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; hexTable = { "0" = "1"; "1" = "0"; @@ -32,10 +31,9 @@ let "#" + lib.strings.concatStrings ( (lib.lists.take 5 (lib.strings.stringToCharacters scheme.base00)) - ++ [ hexTable."${(lib.lists.last (lib.strings.stringToCharacters scheme.base00))}" ] + ++ [hexTable."${(lib.lists.last (lib.strings.stringToCharacters scheme.base00))}"] ); -in -{ +in { options.mods.kitty = { enable = lib.mkOption { default = true; @@ -44,7 +42,7 @@ in description = "Enables kitty"; }; additionalConfig = lib.mkOption { - default = { }; + default = {}; example = { # for the insane people out there :P enable_audio_bell = "yes"; @@ -60,79 +58,81 @@ in }; programs.kitty = { enable = true; - settings = { - enable_audio_bell = "no"; - window_alert_on_bell = "no"; - cursor_blink_interval = "0"; - window_padding_width = "1"; - shell_integration = "yes"; - sync_with_monitor = "no"; - background_opacity = "0.8"; + settings = + { + enable_audio_bell = "no"; + window_alert_on_bell = "no"; + cursor_blink_interval = "0"; + window_padding_width = "1"; + shell_integration = "yes"; + sync_with_monitor = "no"; + background_opacity = "0.8"; - font_family = "${config.mods.stylix.fonts.monospace.name}"; - bold_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold"; - italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Italic"; - bold_italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold Italic"; + font_family = "${config.mods.stylix.fonts.monospace.name}"; + bold_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold"; + italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Italic"; + bold_italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold Italic"; - background = base; - foreground = "#" + scheme.base05; - selection_foreground = "#" + scheme.base05; - selection_background = base; - url_color = "#" + scheme.base04; - cursor = "#" + scheme.base05; - active_border_color = "#" + scheme.base03; - inactive_border_color = "#" + scheme.base01; - active_tab_background = base; - active_tab_foreground = "#" + scheme.base05; - inactive_tab_background = "#" + scheme.base01; - inactive_tab_foreground = "#" + scheme.base04; - tab_bar_background = "#" + scheme.base01; + background = base; + foreground = "#" + scheme.base05; + selection_foreground = "#" + scheme.base05; + selection_background = base; + url_color = "#" + scheme.base04; + cursor = "#" + scheme.base05; + active_border_color = "#" + scheme.base03; + inactive_border_color = "#" + scheme.base01; + active_tab_background = base; + active_tab_foreground = "#" + scheme.base05; + inactive_tab_background = "#" + scheme.base01; + inactive_tab_foreground = "#" + scheme.base04; + tab_bar_background = "#" + scheme.base01; - mark1_foreground = "#" + scheme.base00; - mark1_background = "#" + scheme.base07; - mark2_foreground = "#" + scheme.base00; - mark2_background = "#" + scheme.base0E; - mark3_foreground = "#" + scheme.base00; - mark3_background = "#" + scheme.base08; + mark1_foreground = "#" + scheme.base00; + mark1_background = "#" + scheme.base07; + mark2_foreground = "#" + scheme.base00; + mark2_background = "#" + scheme.base0E; + mark3_foreground = "#" + scheme.base00; + mark3_background = "#" + scheme.base08; - color0 = "#" + scheme.base03; - color1 = "#" + scheme.base08; - color2 = "#" + scheme.base0B; - color3 = "#" + scheme.base0A; - color4 = "#" + scheme.base0D; - color5 = "#" + scheme.base06; - color6 = "#" + scheme.base0C; - color7 = "#" + scheme.base07; + color0 = "#" + scheme.base03; + color1 = "#" + scheme.base08; + color2 = "#" + scheme.base0B; + color3 = "#" + scheme.base0A; + color4 = "#" + scheme.base0D; + color5 = "#" + scheme.base06; + color6 = "#" + scheme.base0C; + color7 = "#" + scheme.base07; - color8 = "#" + scheme.base04; - color9 = "#" + scheme.base08; - color10 = "#" + scheme.base0B; - color11 = "#" + scheme.base0A; - color12 = "#" + scheme.base0D; - color13 = "#" + scheme.base06; - color14 = "#" + scheme.base0C; - color15 = "#" + scheme.base0B; + color8 = "#" + scheme.base04; + color9 = "#" + scheme.base08; + color10 = "#" + scheme.base0B; + color11 = "#" + scheme.base0A; + color12 = "#" + scheme.base0D; + color13 = "#" + scheme.base06; + color14 = "#" + scheme.base0C; + color15 = "#" + scheme.base0B; - # color0 = base; - # color1 = "#" + scheme.base08; - # color2 = "#" + scheme.base0B; - # color3 = "#" + scheme.base0A; - # color4 = "#" + scheme.base0D; - # color5 = "#" + scheme.base0E; - # color6 = "#" + scheme.base0C; - # color7 = "#" + scheme.base05; - # - # color8 = "#" + scheme.base03; - # color9 = "#" + scheme.base08; - # color10 = "#" + scheme.base0B; - # color11 = "#" + scheme.base0A; - # color12 = "#" + scheme.base0D; - # color13 = "#" + scheme.base0E; - # color14 = "#" + scheme.base0C; - # color15 = "#" + scheme.base07; + # color0 = base; + # color1 = "#" + scheme.base08; + # color2 = "#" + scheme.base0B; + # color3 = "#" + scheme.base0A; + # color4 = "#" + scheme.base0D; + # color5 = "#" + scheme.base0E; + # color6 = "#" + scheme.base0C; + # color7 = "#" + scheme.base05; + # + # color8 = "#" + scheme.base03; + # color9 = "#" + scheme.base08; + # color10 = "#" + scheme.base0B; + # color11 = "#" + scheme.base0A; + # color12 = "#" + scheme.base0D; + # color13 = "#" + scheme.base0E; + # color14 = "#" + scheme.base0C; + # color15 = "#" + scheme.base07; - shell = lib.mkIf config.mods.fish.enable "fish"; - } // config.mods.kitty.additionalConfig; + shell = lib.mkIf config.mods.fish.enable "fish"; + } + // config.mods.kitty.additionalConfig; }; } ); diff --git a/modules/programs/media.nix b/modules/programs/media.nix index a8f3cf5..4bb57b6 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -4,8 +4,7 @@ config, pkgs, ... -}: -{ +}: { options.mods.media = { useBasePackages = lib.mkOption { default = true; @@ -14,24 +13,24 @@ description = "Default media packages (If disabled, only the additional packages will be installed)"; }; additionalPackages = lib.mkOption { - default = [ ]; - example = [ pkgs.flatpak ]; + default = []; + example = [pkgs.flatpak]; type = with lib.types; listOf package; description = '' Additional media packages. ''; }; specialPrograms = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' special program configuration to be added which require programs.something notation. ''; }; specialServices = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' special services configuration to be added which require an services.something notation. @@ -40,51 +39,50 @@ }; config = lib.optionalAttrs (options ? home.packages) { home.packages = - if config.mods.media.useBasePackages then + if config.mods.media.useBasePackages + then with pkgs; - [ - # base audio - pipewire - wireplumber - # audio control - playerctl - # images - imv - # videos - mpv - # pdf - zathura - evince - libreoffice-fresh - onlyoffice-bin - pdftk - pdfpc - polylux2pdfpc - # spotify - # video editing - kdenlive - # image creation - inkscape - gimp - krita - yt-dlp - ] - ++ config.mods.media.additionalPackages - else - config.mods.media.additionalPackages; + [ + # base audio + pipewire + wireplumber + # audio control + playerctl + # images + imv + # videos + mpv + # pdf + zathura + evince + libreoffice-fresh + onlyoffice-bin + pdftk + pdfpc + polylux2pdfpc + # spotify + # video editing + kdenlive + # image creation + inkscape + gimp + krita + yt-dlp + ] + ++ config.mods.media.additionalPackages + else config.mods.media.additionalPackages; programs = - if config.mods.media.useBasePackages then + if config.mods.media.useBasePackages + then { obs-studio.enable = true; - obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ]; + obs-studio.plugins = with pkgs; [obs-studio-plugins.obs-vaapi]; } // config.mods.media.specialPrograms - else - config.mods.media.specialPrograms; + else config.mods.media.specialPrograms; services = - if config.mods.media.useBasePackages then - config.mods.media.specialServices - else - config.mods.media.specialServices; + if config.mods.media.useBasePackages + then config.mods.media.specialServices + else config.mods.media.specialServices; }; } diff --git a/modules/programs/mime.nix b/modules/programs/mime.nix index 89dad89..1f193d2 100644 --- a/modules/programs/mime.nix +++ b/modules/programs/mime.nix @@ -5,19 +5,14 @@ lib, options, ... -}: -let +}: let browserName = - if (builtins.isString config.mods.homePackages.browser) then - config.mods.homePackages.browser - else if - config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram - then - config.mods.homePackages.browser.meta.mainProgram - else - config.mods.homePackages.browser.pname; -in -{ + if (builtins.isString config.mods.homePackages.browser) + then config.mods.homePackages.browser + else if config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram + then config.mods.homePackages.browser.meta.mainProgram + else config.mods.homePackages.browser.pname; +in { options.mods.mime = { enable = lib.mkOption { default = true; @@ -32,7 +27,7 @@ in "jpeg" "gif" ]; - example = [ ]; + example = []; type = with lib.types; listOf str; description = "Image mime handlers"; }; @@ -42,7 +37,7 @@ in "avi" "mkv" ]; - example = [ ]; + example = []; type = with lib.types; listOf str; description = "Video mime handlers"; }; @@ -53,7 +48,7 @@ in "wav" "aac" ]; - example = [ ]; + example = []; type = with lib.types; listOf str; description = "Audio mime handlers"; }; @@ -66,7 +61,7 @@ in "x-extension-xht" "x-extension-xhtml" ]; - example = [ ]; + example = []; type = with lib.types; listOf str; description = "Browser mime handlers"; }; @@ -78,71 +73,71 @@ in "https" "unknown" ]; - example = [ ]; + example = []; type = with lib.types; listOf str; description = "Browser X mime handlers"; }; browserApplications = lib.mkOption { - default = [ "${browserName}" ]; - example = [ ]; + default = ["${browserName}"]; + example = []; type = with lib.types; listOf str; description = "Applications used for handling browser mime types"; }; imageApplications = lib.mkOption { - default = [ "imv" ]; - example = [ ]; + default = ["imv"]; + example = []; type = with lib.types; listOf str; description = "Applications used for handling image mime types"; }; videoApplications = lib.mkOption { - default = [ "mpv" ]; - example = [ ]; + default = ["mpv"]; + example = []; type = with lib.types; listOf str; description = "Applications used for handling video mime types"; }; audioApplications = lib.mkOption { - default = [ "io.bassi.Amberol" ]; - example = [ ]; + default = ["io.bassi.Amberol"]; + example = []; type = with lib.types; listOf str; description = "Applications used for handling audio mime types"; }; # TODO additional config }; config = lib.optionalAttrs (options ? home) { - xdg = - let - xdgAssociations = - type: program: list: - builtins.listToAttrs ( - map (e: { - name = "${type}/${e}"; - value = program; - }) list - ); - - imageAc = xdgAssociations "image" config.mods.mime.imageApplications config.mods.mime.imageTypes; - videoAc = xdgAssociations "video" config.mods.mime.videoApplications config.mods.mime.videoTypes; - audioAc = xdgAssociations "audio" config.mods.mime.audioApplications config.mods.mime.audioTypes; - browserAc = - (xdgAssociations "application" config.mods.mime.browserApplications config.mods.mime.browserTypes) - // (xdgAssociations "x-scheme-handler" config.mods.mime.browserApplications - config.mods.mime.browserXTypes - ); - associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ( - # TODO make configurable - { - "application/pdf" = [ "org.pwmt.zathura-pdf-mupdf" ]; - "text/html" = config.mods.mime.browserApplications; - "text/plain" = [ "neovide" ]; - "x-scheme-handler/chrome" = [ "com.brave.browser" ]; - "inode/directory" = [ "yazi" ]; - } - // imageAc - // audioAc - // videoAc - // browserAc + xdg = let + xdgAssociations = type: program: list: + builtins.listToAttrs ( + map (e: { + name = "${type}/${e}"; + value = program; + }) + list ); - in + + imageAc = xdgAssociations "image" config.mods.mime.imageApplications config.mods.mime.imageTypes; + videoAc = xdgAssociations "video" config.mods.mime.videoApplications config.mods.mime.videoTypes; + audioAc = xdgAssociations "audio" config.mods.mime.audioApplications config.mods.mime.audioTypes; + browserAc = + (xdgAssociations "application" config.mods.mime.browserApplications config.mods.mime.browserTypes) + // ( + xdgAssociations "x-scheme-handler" config.mods.mime.browserApplications + config.mods.mime.browserXTypes + ); + associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ( + # TODO make configurable + { + "application/pdf" = ["org.pwmt.zathura-pdf-mupdf"]; + "text/html" = config.mods.mime.browserApplications; + "text/plain" = ["neovide"]; + "x-scheme-handler/chrome" = ["com.brave.browser"]; + "inode/directory" = ["yazi"]; + } + // imageAc + // audioAc + // videoAc + // browserAc + ); + in lib.mkIf config.mods.mime.enable { enable = true; cacheHome = config.home.homeDirectory + "/.local/cache"; diff --git a/modules/programs/ncspot.nix b/modules/programs/ncspot.nix index 98dfe96..8e9064d 100644 --- a/modules/programs/ncspot.nix +++ b/modules/programs/ncspot.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods.ncspot = { enable = lib.mkOption { default = false; @@ -16,13 +15,13 @@ }; config = lib.mkIf config.mods.ncspot.enable ( lib.optionalAttrs (options ? home.packages) { - home.packages = with pkgs; [ ncspot ]; - xdg.configFile."ncspot/config.toml".source = (pkgs.formats.toml { }).generate "ncspot" { + home.packages = with pkgs; [ncspot]; + 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" ]; + library_tabs = ["playlists"]; theme = { background = "#1a1b26"; primary = "#9aa5ce"; diff --git a/modules/programs/nextcloud.nix b/modules/programs/nextcloud.nix index ab2333a..16b2d29 100644 --- a/modules/programs/nextcloud.nix +++ b/modules/programs/nextcloud.nix @@ -1,5 +1,4 @@ -{ lib, ... }: -{ +{lib, ...}: { options.mods = { nextcloud = { enable = lib.mkOption { @@ -21,7 +20,7 @@ description = "Your url"; }; synclist = lib.mkOption { - default = [ ]; + default = []; example = [ { name = "sync globi folder"; @@ -36,5 +35,4 @@ }; }; }; - } diff --git a/modules/programs/oxi/default.nix b/modules/programs/oxi/default.nix index 7dee3fd..ad31d84 100644 --- a/modules/programs/oxi/default.nix +++ b/modules/programs/oxi/default.nix @@ -4,8 +4,7 @@ options, inputs, ... -}: -{ +}: { imports = [ ./oxidash.nix ./oxinoti.nix diff --git a/modules/programs/oxi/oxidash.nix b/modules/programs/oxi/oxidash.nix index 03cb684..476eb60 100644 --- a/modules/programs/oxi/oxidash.nix +++ b/modules/programs/oxi/oxidash.nix @@ -3,8 +3,7 @@ config, options, ... -}: -{ +}: { options.mods.oxi.oxidash = { enable = lib.mkOption { default = true; diff --git a/modules/programs/oxi/oxinoti.nix b/modules/programs/oxi/oxinoti.nix index 188ec11..b3ecafc 100644 --- a/modules/programs/oxi/oxinoti.nix +++ b/modules/programs/oxi/oxinoti.nix @@ -3,8 +3,7 @@ config, options, ... -}: -{ +}: { options.mods.oxi.oxinoti = { enable = lib.mkOption { default = true; @@ -17,7 +16,8 @@ lib.optionalAttrs (options ? xdg.configFile) { programs.oxinoti.enable = true; xdg.configFile."oxinoti/style.css" = { - text = # css + text = + # css '' @import url("/home/${config.conf.username}/.config/gtk-3.0/gtk.css"); diff --git a/modules/programs/oxi/oxipaste.nix b/modules/programs/oxi/oxipaste.nix index aa4af70..4ec7b1d 100644 --- a/modules/programs/oxi/oxipaste.nix +++ b/modules/programs/oxi/oxipaste.nix @@ -3,8 +3,7 @@ config, options, ... -}: -{ +}: { options.mods.oxi.oxipaste = { enable = lib.mkOption { default = true; diff --git a/modules/programs/oxi/oxishut.nix b/modules/programs/oxi/oxishut.nix index 466be06..25ebe0b 100644 --- a/modules/programs/oxi/oxishut.nix +++ b/modules/programs/oxi/oxishut.nix @@ -3,8 +3,7 @@ config, options, ... -}: -{ +}: { options.mods.oxi.oxishut = { enable = lib.mkOption { default = true; diff --git a/modules/programs/piper.nix b/modules/programs/piper.nix index dac9ece..24beced 100644 --- a/modules/programs/piper.nix +++ b/modules/programs/piper.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods.piper = { enable = lib.mkOption { default = false; @@ -15,7 +14,7 @@ }; }; 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/plymouth.nix b/modules/programs/plymouth.nix index 5bffa2d..af9c615 100644 --- a/modules/programs/plymouth.nix +++ b/modules/programs/plymouth.nix @@ -3,8 +3,7 @@ config, options, ... -}: -{ +}: { options.mods.plymouth = { enable = lib.mkOption { default = true; @@ -14,6 +13,6 @@ }; }; config = lib.mkIf config.mods.plymouth.enable ( - lib.optionalAttrs (options ? boot.plymouth) { boot.plymouth.enable = true; } + lib.optionalAttrs (options ? boot.plymouth) {boot.plymouth.enable = true;} ); } diff --git a/modules/programs/printing.nix b/modules/programs/printing.nix index ad75719..848ffef 100644 --- a/modules/programs/printing.nix +++ b/modules/programs/printing.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods.printing = { enable = lib.mkOption { default = true; @@ -21,7 +20,7 @@ printing = { enable = true; browsing = true; - drivers = [ pkgs.hplip ]; + drivers = [pkgs.hplip]; startWhenNeeded = true; # optional }; avahi = { diff --git a/modules/programs/scripts.nix b/modules/programs/scripts.nix index 99a75b0..e17a96b 100644 --- a/modules/programs/scripts.nix +++ b/modules/programs/scripts.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods.scripts = { changeBrightness = lib.mkOption { default = true; @@ -20,111 +19,113 @@ description = "Enables the audioControl script"; }; scripts = lib.mkOption { - default = [ ]; - example = [ ]; + default = []; + example = []; description = "More scripts to be passed. (check existing ones for types and examples)"; }; }; config = ( lib.optionalAttrs (options ? home.packages) { - home.packages = [ - (lib.mkIf config.mods.scripts.changeBrightness ( - pkgs.writeShellScriptBin "changeBrightness" '' - set_brightness() { - brightnessctl set "$1" - CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') - dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%" - } + home.packages = + [ + (lib.mkIf config.mods.scripts.changeBrightness ( + pkgs.writeShellScriptBin "changeBrightness" '' + set_brightness() { + brightnessctl set "$1" + CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') + dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%" + } - if [ "$1" == "brightness" ]; then - set_brightness "$2" - fi - '' - )) - (lib.mkIf config.mods.scripts.audioControl ( - pkgs.writeShellScriptBin "audioControl" '' - ncspot() { - NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n') - CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') - pactl set-sink-input-volume "$CHANGE" "$1" - VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') - notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: ''${VOLUME}%" - } + if [ "$1" == "brightness" ]; then + set_brightness "$2" + fi + '' + )) + (lib.mkIf config.mods.scripts.audioControl ( + pkgs.writeShellScriptBin "audioControl" '' + ncspot() { + NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n') + CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') + pactl set-sink-input-volume "$CHANGE" "$1" + VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') + notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: ''${VOLUME}%" + } - firefox() { - STRING=$(pactl list clients short | rg "firefox" | awk -F 'PipeWire' ' { print $1 "," } ' | tr -d ' \t\n') - # NUMS=',' read -r -a array <<< "$STRING" - readarray -td, NUMS <<<"$STRING" - declare -p NUMS - for index in "''${!NUMS[@]}"; do #"''${!array[@]}" - NUM=$(echo "''${NUMS[index]}" | tr -d ' \t\n') - CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') - pactl set-sink-input-volume "$CHANGE" "$1" - done - VOLUME=$(pactl list sink-inputs | rg "''${NUMS[0]}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') - notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: ''${VOLUME}%" - } + firefox() { + STRING=$(pactl list clients short | rg "firefox" | awk -F 'PipeWire' ' { print $1 "," } ' | tr -d ' \t\n') + # NUMS=',' read -r -a array <<< "$STRING" + readarray -td, NUMS <<<"$STRING" + declare -p NUMS + for index in "''${!NUMS[@]}"; do #"''${!array[@]}" + NUM=$(echo "''${NUMS[index]}" | tr -d ' \t\n') + CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') + pactl set-sink-input-volume "$CHANGE" "$1" + done + VOLUME=$(pactl list sink-inputs | rg "''${NUMS[0]}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') + notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: ''${VOLUME}%" + } - internal() { - SPEAKER=$(pactl list sinks | grep "Name" | grep "alsa" | awk -F ': ' '{ print $2 }') - if [ "$SPEAKER" != "" ]; then - pactl set-default-sink "$SPEAKER" - pactl set-sink-mute "$SPEAKER" false - DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') - notify-send "changed audio to "$DEVICE" " - else - notify-send "failed, not available!" - fi - } + internal() { + SPEAKER=$(pactl list sinks | grep "Name" | grep "alsa" | awk -F ': ' '{ print $2 }') + if [ "$SPEAKER" != "" ]; then + pactl set-default-sink "$SPEAKER" + pactl set-sink-mute "$SPEAKER" false + DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') + notify-send "changed audio to "$DEVICE" " + else + notify-send "failed, not available!" + fi + } - set_volume_sink() { - pactl set-sink-volume @DEFAULT_SINK@ "$1" - CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %') - notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: ''${CURRENT}%" - } + set_volume_sink() { + pactl set-sink-volume @DEFAULT_SINK@ "$1" + CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %') + notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: ''${CURRENT}%" + } - set_volume_source() { - pactl set-source-volume @DEFAULT_SOURCE@ "$1" - CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %') - notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: ''${CURRENT}%" - } + set_volume_source() { + pactl set-source-volume @DEFAULT_SOURCE@ "$1" + CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %') + notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: ''${CURRENT}%" + } - bluetooth() { - SPEAKER=$(pactl list sinks | grep "Name" | grep "blue" | awk -F ': ' '{ print $2 }') - if [ "$SPEAKER" != "" ]; then - pactl set-default-sink "$SPEAKER" - pactl set-sink-mute "$SPEAKER" false - DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') - notify-send "changed audio to "$DEVICE" " - else - notify-send "failed, not available!" - fi - } + bluetooth() { + SPEAKER=$(pactl list sinks | grep "Name" | grep "blue" | awk -F ': ' '{ print $2 }') + if [ "$SPEAKER" != "" ]; then + pactl set-default-sink "$SPEAKER" + pactl set-sink-mute "$SPEAKER" false + DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') + notify-send "changed audio to "$DEVICE" " + else + notify-send "failed, not available!" + fi + } - mute() { - pactl set-sink-mute @DEFAULT_SINK@ toggle - MUTE=$(pactl get-sink-mute @DEFAULT_SINK@) - notify-send -a "Audio" -r 994 -u low -i audio-volume-high "Audio: $MUTE" - } + mute() { + pactl set-sink-mute @DEFAULT_SINK@ toggle + MUTE=$(pactl get-sink-mute @DEFAULT_SINK@) + notify-send -a "Audio" -r 994 -u low -i audio-volume-high "Audio: $MUTE" + } - if [ "$1" == "internal" ]; then - internal - elif [ "$1" == "bluetooth" ]; then - bluetooth - elif [ "$1" == "firefox" ]; then - firefox "$2" - elif [ "$1" == "ncspot" ]; then - ncspot "$2" - elif [ "$1" == "mute" ]; then - mute - elif [ "$1" == "sink" ]; then - set_volume_sink "$2" - elif [ "$1" == "source" ]; then - set_volume_source "$2" - fi - '' - )) - ] ++ config.mods.scripts.scripts; + if [ "$1" == "internal" ]; then + internal + elif [ "$1" == "bluetooth" ]; then + bluetooth + elif [ "$1" == "firefox" ]; then + firefox "$2" + elif [ "$1" == "ncspot" ]; then + ncspot "$2" + elif [ "$1" == "mute" ]; then + mute + elif [ "$1" == "sink" ]; then + set_volume_sink "$2" + elif [ "$1" == "source" ]; then + set_volume_source "$2" + fi + '' + )) + ] + ++ config.mods.scripts.scripts; } ); } diff --git a/modules/programs/sddm.nix b/modules/programs/sddm.nix index d358777..57328d4 100644 --- a/modules/programs/sddm.nix +++ b/modules/programs/sddm.nix @@ -3,8 +3,7 @@ options, config, ... -}: -{ +}: { options.mods.sddm = { enable = lib.mkOption { default = false; @@ -19,7 +18,7 @@ description = "Use default options provided by module. If disabled, will only apply extraOptions."; }; extraOptions = lib.mkOption { - default = { }; + default = {}; example = { wayland.enable = false; }; diff --git a/modules/programs/sops.nix b/modules/programs/sops.nix index 726bd9c..5897eaa 100644 --- a/modules/programs/sops.nix +++ b/modules/programs/sops.nix @@ -5,8 +5,7 @@ options, root, ... -}: -{ +}: { options.mods.sops = { enable = lib.mkOption { default = true; @@ -15,13 +14,13 @@ description = "Enable sops secrets"; }; secrets = lib.mkOption { - default = { }; + default = {}; example = { - hub = { }; - lab = { }; - ${config.conf.username} = { }; - nextcloud = { }; - access = { }; + hub = {}; + lab = {}; + ${config.conf.username} = {}; + nextcloud = {}; + access = {}; }; type = with lib.types; attrsOf anything; description = "secrets for sops"; @@ -29,8 +28,7 @@ sopsPath = lib.mkOption { default = root + /secrets/secrets.yaml; example = "/your/path"; - type = - with lib.types; + type = with lib.types; oneOf [ str path @@ -46,18 +44,18 @@ }; config = lib.mkIf config.mods.sops.enable ( lib.optionalAttrs (options ? home.packages) { - home.packages = with pkgs; [ sops ]; + home.packages = with pkgs; [sops]; sops = { gnupg = { home = "~/.gnupg"; - sshKeyPaths = [ ]; + sshKeyPaths = []; }; defaultSopsFile = config.mods.sops.sopsPath; validateSopsFiles = config.mods.sops.validateSopsFile; secrets = config.mods.sops.secrets; }; - systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ]; + systemd.user.services.mbsync.Unit.After = ["sops-nix.service"]; } ); } diff --git a/modules/programs/starship.nix b/modules/programs/starship.nix index f4a5def..25fc53b 100644 --- a/modules/programs/starship.nix +++ b/modules/programs/starship.nix @@ -5,8 +5,7 @@ pkgs, inputs, ... -}: -{ +}: { options.mods = { starship = { enable = lib.mkOption { @@ -26,8 +25,8 @@ ''; }; customPrompt = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' Custom configuration for prompt. @@ -40,138 +39,136 @@ # environment.systemPackages needed in order to configure systemwide 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 - { - enable = true; - interactiveOnly = true; - presets = lib.mkIf config.mods.starship.useDefaultPrompt [ "pastel-powerline" ]; - settings = - lib.mkIf config.mods.starship.useDefaultPrompt { - # 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; + 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 { + enable = true; + interactiveOnly = true; + presets = lib.mkIf config.mods.starship.useDefaultPrompt ["pastel-powerline"]; + settings = + lib.mkIf config.mods.starship.useDefaultPrompt { + # 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 = "  "; }; - 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.customPrompt; - }; + 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.customPrompt; + }; } ); } diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index 6792ba4..3e80808 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -4,8 +4,7 @@ options, pkgs, ... -}: -{ +}: { options.mods.stylix = { colorscheme = lib.mkOption { default = "catppuccin-mocha"; @@ -34,8 +33,7 @@ base0E = "BB9AF7"; base0F = "F7768E"; }; - type = - with lib.types; + type = with lib.types; oneOf [ str attrs @@ -57,7 +55,7 @@ name = "catppuccin-mocha-lavender-cursors"; size = 24; }; - example = { }; + example = {}; type = with lib.types; attrsOf anything; description = "Xcursor config"; }; @@ -83,7 +81,7 @@ name = "Noto Color Emoji"; }; }; - example = { }; + example = {}; type = with lib.types; attrsOf anything; description = "font config"; }; @@ -101,10 +99,9 @@ fonts = config.mods.stylix.fonts; cursor = config.mods.stylix.cursor; base16Scheme = ( - if builtins.isAttrs config.mods.stylix.colorscheme then - config.mods.stylix.colorscheme - else - "${pkgs.base16-schemes}/share/themes/${config.mods.stylix.colorscheme}.yaml" + 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/supersonic.nix b/modules/programs/supersonic.nix index b4074bf..3b732df 100644 --- a/modules/programs/supersonic.nix +++ b/modules/programs/supersonic.nix @@ -5,12 +5,10 @@ pkgs, inputs, ... -}: -let - base16 = pkgs.callPackage inputs.base16.lib { }; +}: let + base16 = pkgs.callPackage inputs.base16.lib {}; scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; -in -{ +in { options.mods.supersonic = { enable = lib.mkOption { default = false; @@ -31,42 +29,45 @@ in config = lib.mkIf config.mods.supersonic.enable ( lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [ - (if config.mods.supersonic.variant == "wayland" then supersonic-wayland else supersonic) + ( + if config.mods.supersonic.variant == "wayland" + then supersonic-wayland + else supersonic + ) ]; xdg.configFile."supersonic/themes/custom.toml".source = - (pkgs.formats.toml { }).generate "customTheme" - { - SupersonicTheme = { - Name = "Custom"; - Version = "0.2"; - SupportsDark = true; - SupportsLight = true; - }; - - DarkColors = { - PageBackground = "#${scheme.base00}"; - ListHeader = "#${scheme.base02}"; - PageHeader = "#${scheme.base02}"; - Background = "#${scheme.base01}"; - ScrollBar = "#${scheme.base02}"; - Button = "#${scheme.base02}"; - Foreground = "#${scheme.base04}"; - InputBackground = "#${scheme.base02}"; - }; - - # just define the same as base 16 doesn't define if it is light or not - LightColors = { - PageBackground = "#${scheme.base00}"; - ListHeader = "#${scheme.base02}"; - PageHeader = "#${scheme.base02}"; - Background = "#${scheme.base01}"; - ScrollBar = "#${scheme.base02}"; - Button = "#${scheme.base02}"; - Foreground = "#${scheme.base04}"; - InputBackground = "#${scheme.base02}"; - }; + (pkgs.formats.toml {}).generate "customTheme" + { + SupersonicTheme = { + Name = "Custom"; + Version = "0.2"; + SupportsDark = true; + SupportsLight = true; }; - } + DarkColors = { + PageBackground = "#${scheme.base00}"; + ListHeader = "#${scheme.base02}"; + PageHeader = "#${scheme.base02}"; + Background = "#${scheme.base01}"; + ScrollBar = "#${scheme.base02}"; + Button = "#${scheme.base02}"; + Foreground = "#${scheme.base04}"; + InputBackground = "#${scheme.base02}"; + }; + + # just define the same as base 16 doesn't define if it is light or not + LightColors = { + PageBackground = "#${scheme.base00}"; + ListHeader = "#${scheme.base02}"; + PageHeader = "#${scheme.base02}"; + Background = "#${scheme.base01}"; + ScrollBar = "#${scheme.base02}"; + Button = "#${scheme.base02}"; + Foreground = "#${scheme.base04}"; + InputBackground = "#${scheme.base02}"; + }; + }; + } ); } diff --git a/modules/programs/teams.nix b/modules/programs/teams.nix index 15b8748..dc159a9 100644 --- a/modules/programs/teams.nix +++ b/modules/programs/teams.nix @@ -3,12 +3,11 @@ config, options, pkgs, + stable, ... -}: -let +}: let callPackage = lib.callPackageWith pkgs; -in -{ +in { options.mods.teams = { enable = lib.mkOption { default = false; @@ -25,12 +24,12 @@ in }; config = lib.mkIf config.mods.teams.enable ( lib.optionalAttrs (options ? home.packages) { - home.packages = [ (callPackage ../../override/teams.nix { }) ]; + home.packages = [(callPackage ../../override/teams.nix {pkgs = stable;})]; } // (lib.optionalAttrs (options ? boot.kernelModules) { boot = { - extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ]; - kernelModules = [ "v4l2loopback" ]; + extraModulePackages = with config.boot.kernelPackages; [v4l2loopback]; + kernelModules = ["v4l2loopback"]; extraModprobeConfig = '' options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" ''; diff --git a/modules/programs/virtmanager.nix b/modules/programs/virtmanager.nix index cfcb0df..84c7c0a 100644 --- a/modules/programs/virtmanager.nix +++ b/modules/programs/virtmanager.nix @@ -4,27 +4,23 @@ options, pkgs, ... -}: -let +}: let module = - if config.conf.cpu == "intel" then - "kvm-intel" - else if config.conf.cpu == "amd" then - "kvm-amd" - else - ""; -in -{ - + if config.conf.cpu == "intel" + then "kvm-intel" + else if config.conf.cpu == "amd" + then "kvm-amd" + else ""; +in { options.mods = { virtmanager.enable = lib.mkOption { default = false; type = lib.types.bool; example = true; description = '' - - - Enables virt-manager kvm. + + + Enables virt-manager kvm. ''; }; }; @@ -48,7 +44,7 @@ in package = pkgs.qemu_kvm; swtpm.enable = true; ovmf.enable = true; - ovmf.packages = [ pkgs.OVMFFull.fd ]; + ovmf.packages = [pkgs.OVMFFull.fd]; }; }; spiceUSBRedirection.enable = true; @@ -60,13 +56,12 @@ in "kvm" "qemu-libvirtd" ]; - } // lib.optionalAttrs (options ? dconf.settings) { dconf.settings = { "org/virt-manager/virt-manager/connections" = { - autoconnect = [ "qemu:///system" ]; - uris = [ "qemu:///system" ]; + autoconnect = ["qemu:///system"]; + uris = ["qemu:///system"]; }; }; }; diff --git a/modules/programs/xkb.nix b/modules/programs/xkb.nix index c0e162c..7ae8414 100644 --- a/modules/programs/xkb.nix +++ b/modules/programs/xkb.nix @@ -3,8 +3,7 @@ options, config, ... -}: -{ +}: { options.mods.xkb = { layout = lib.mkOption { default = "dashie"; diff --git a/modules/programs/xone.nix b/modules/programs/xone.nix index 0779744..36d92f0 100644 --- a/modules/programs/xone.nix +++ b/modules/programs/xone.nix @@ -3,9 +3,7 @@ config, options, ... -}: -{ - +}: { options.mods = { xone.enable = lib.mkOption { default = false; @@ -17,5 +15,5 @@ }; }; - 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 index 58e9354..4e7fb59 100644 --- a/modules/programs/yazi/default.nix +++ b/modules/programs/yazi/default.nix @@ -3,8 +3,7 @@ config, options, ... -}: -{ +}: { options.mods.yazi = { enable = lib.mkOption { default = true; @@ -19,8 +18,8 @@ description = "Use default yazi config (if disabled only additionalConfig is used)"; }; additionalConfig = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = "Additional config for yazi"; }; @@ -31,16 +30,15 @@ description = "Use default yazi keymap (if disabled only additionalKeymap is used)"; }; additionalKeymap = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = "Additional keymap for yazi"; }; }; - config = - let - conf = import ./yazi.nix; - in + config = let + conf = import ./yazi.nix; + in lib.optionalAttrs (options ? home.packages) ( lib.mkIf config.mods.yazi.enable { programs.yazi = { diff --git a/modules/programs/yazi/yazi.nix b/modules/programs/yazi/yazi.nix index 92853d0..233ab22 100644 --- a/modules/programs/yazi/yazi.nix +++ b/modules/programs/yazi/yazi.nix @@ -99,125 +99,125 @@ keymap = { manager.keymap = [ { - on = [ "" ]; + on = [""]; run = "escape"; desc = "Exit visual mode clear selected or cancel search"; } { - on = [ "q" ]; + on = ["q"]; run = "quit"; desc = "Exit the process"; } { - on = [ "Q" ]; + on = ["Q"]; run = "quit --no-cwd-file"; desc = "Exit the process without writing cwd-file"; } { - on = [ "" ]; + on = [""]; run = "close"; desc = "Close the current tab or quit if it is last tab"; } { - on = [ "" ]; + on = [""]; run = "suspend"; desc = "Suspend the process"; } # Navigation { - on = [ "l" ]; + on = ["l"]; run = "arrow -1"; desc = "Move cursor up"; } { - on = [ "k" ]; + on = ["k"]; run = "arrow 1"; desc = "Move cursor down"; } { - on = [ "L" ]; + on = ["L"]; run = "arrow -5"; desc = "Move cursor up 5 lines"; } { - on = [ "K" ]; + on = ["K"]; run = "arrow 5"; desc = "Move cursor down 5 lines"; } { - on = [ "" ]; + on = [""]; run = "arrow -50%"; desc = "Move cursor up half page"; } { - on = [ "" ]; + on = [""]; run = "arrow 50%"; desc = "Move cursor down half page"; } { - on = [ "" ]; + on = [""]; run = "arrow -100%"; desc = "Move cursor up one page"; } { - on = [ "" ]; + on = [""]; run = "arrow 100%"; desc = "Move cursor down one page"; } { - on = [ "j" ]; + on = ["j"]; run = "leave"; desc = "Go back to the parent directory"; } { - on = [ ";" ]; + on = [";"]; run = "enter"; desc = "Enter the child directory"; } { - on = [ "J" ]; + on = ["J"]; run = "back"; desc = "Go back to the previous directory"; } { - on = [ "P" ]; + on = ["P"]; run = "forward"; desc = "Go forward to the next directory"; } { - on = [ "" ]; + on = [""]; run = "peek -5"; desc = "Peek up 5 units in the preview"; } { - on = [ "" ]; + on = [""]; run = "peek 5"; desc = "Peek down 5 units in the preview"; } { - on = [ "" ]; + on = [""]; run = "arrow -1"; desc = "Move cursor up"; } { - on = [ "" ]; + on = [""]; run = "arrow 1"; desc = "Move cursor down"; } { - on = [ "" ]; + on = [""]; run = "leave"; desc = "Go back to the parent directory"; } { - on = [ "" ]; + on = [""]; run = "enter"; desc = "Enter the child directory"; } @@ -231,116 +231,116 @@ desc = "Move cursor to the top"; } { - on = [ "G" ]; + on = ["G"]; run = "arrow 99999999"; desc = "Move cursor to the bottom"; } # Selection { - on = [ "v" ]; + on = ["v"]; run = "visual_mode"; desc = "Enter visual mode (selection mode)"; } { - on = [ "V" ]; + on = ["V"]; run = "visual_mode --unset"; desc = "Enter visual mode (unset mode)"; } { - on = [ "" ]; + on = [""]; run = "select_all --state=true"; desc = "Select all files"; } { - on = [ "" ]; + on = [""]; run = "select_all --state=none"; desc = "Inverse selection of all files"; } # Operation { - on = [ "o" ]; + on = ["o"]; run = "open"; desc = "Open the selected files"; } { - on = [ "O" ]; + on = ["O"]; run = "open --interactive"; desc = "Open the selected files interactively"; } { - on = [ "" ]; + on = [""]; run = "open"; desc = "Open the selected files"; } { - on = [ "" ]; + 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" ]; + on = ["y"]; run = "yank"; desc = "Copy the selected files"; } { - on = [ "x" ]; + on = ["x"]; run = "yank --cut"; desc = "Cut the selected files"; } { - on = [ "p" ]; + on = ["p"]; run = "paste"; desc = "Paste the files"; } { - on = [ "P" ]; + on = ["P"]; run = "paste --force"; desc = "Paste the files (overwrite if the destination exists)"; } { - on = [ "-" ]; + on = ["-"]; run = "link"; desc = "Symlink the absolute path of files"; } { - on = [ "_" ]; + on = ["_"]; run = "link --relative"; desc = "Symlink the relative path of files"; } { - on = [ "d" ]; + on = ["d"]; run = "remove"; desc = "Move the files to the trash"; } { - on = [ "D" ]; + on = ["D"]; run = "remove --permanently"; desc = "Permanently delete the files"; } { - on = [ "a" ]; + on = ["a"]; run = "create"; desc = "Create a file or directory (ends with / for directories)"; } { - on = [ "r" ]; + on = ["r"]; run = "rename"; desc = "Rename a file or directory"; } { - on = [ ";" ]; + on = [";"]; run = "shell"; desc = "Run a shell command"; } { - on = [ ":" ]; + on = [":"]; run = "shell --block"; desc = "Run a shell command (block the UI until the command finishes)"; } { - on = [ "." ]; + on = ["."]; run = "hidden toggle"; desc = "Toggle the visibility of hidden files"; } @@ -363,17 +363,17 @@ desc = "Search files by content using ripgrep"; } { - on = [ "" ]; + on = [""]; run = "search none"; desc = "Cancel the ongoing search"; } { - on = [ "z" ]; + on = ["z"]; run = "jump zoxide"; desc = "Jump to a directory using zoxide"; } { - on = [ "Z" ]; + on = ["Z"]; run = "jump fzf"; desc = "Jump to a directory or reveal a file using fzf"; } @@ -414,19 +414,19 @@ # Find { - on = [ "/" ]; + on = ["/"]; run = "find --smart"; } { - on = [ "?" ]; + on = ["?"]; run = "find --previous --smart"; } { - on = [ "n" ]; + on = ["n"]; run = "find_arrow"; } { - on = [ "N" ]; + on = ["N"]; run = "find_arrow --previous"; } @@ -514,82 +514,82 @@ # Tabs { - on = [ "t" ]; + on = ["t"]; run = "tab_create --current"; desc = "Create a new tab using the current path"; } { - on = [ "1" ]; + on = ["1"]; run = "tab_switch 0"; desc = "Switch to the first tab"; } { - on = [ "2" ]; + on = ["2"]; run = "tab_switch 1"; desc = "Switch to the second tab"; } { - on = [ "3" ]; + on = ["3"]; run = "tab_switch 2"; desc = "Switch to the third tab"; } { - on = [ "4" ]; + on = ["4"]; run = "tab_switch 3"; desc = "Switch to the fourth tab"; } { - on = [ "5" ]; + on = ["5"]; run = "tab_switch 4"; desc = "Switch to the fifth tab"; } { - on = [ "6" ]; + on = ["6"]; run = "tab_switch 5"; desc = "Switch to the sixth tab"; } { - on = [ "7" ]; + on = ["7"]; run = "tab_switch 6"; desc = "Switch to the seventh tab"; } { - on = [ "8" ]; + on = ["8"]; run = "tab_switch 7"; desc = "Switch to the eighth tab"; } { - on = [ "9" ]; + on = ["9"]; run = "tab_switch 8"; desc = "Switch to the ninth tab"; } { - on = [ "[" ]; + on = ["["]; run = "tab_switch -1 --relative"; desc = "Switch to the previous tab"; } { - on = [ "]" ]; + on = ["]"]; run = "tab_switch 1 --relative"; desc = "Switch to the next tab"; } { - on = [ "{" ]; + on = ["{"]; run = "tab_swap -1"; desc = "Swap the current tab with the previous tab"; } { - on = [ "}" ]; + on = ["}"]; run = "tab_swap 1"; desc = "Swap the current tab with the next tab"; } # Tasks { - on = [ "w" ]; + on = ["w"]; run = "tasks_show"; desc = "Show the tasks manager"; } @@ -638,7 +638,7 @@ # Help { - on = [ "~" ]; + on = ["~"]; run = "help"; desc = "Open help"; } @@ -646,56 +646,56 @@ tasks.keymap = [ { - on = [ "" ]; + on = [""]; run = "close"; desc = "Hide the task manager"; } { - on = [ "" ]; + on = [""]; run = "close"; desc = "Hide the task manager"; } { - on = [ "w" ]; + on = ["w"]; run = "close"; desc = "Hide the task manager"; } { - on = [ "k" ]; + on = ["k"]; run = "arrow -1"; desc = "Move cursor up"; } { - on = [ "j" ]; + on = ["j"]; run = "arrow 1"; desc = "Move cursor down"; } { - on = [ "" ]; + on = [""]; run = "arrow -1"; desc = "Move cursor up"; } { - on = [ "" ]; + on = [""]; run = "arrow 1"; desc = "Move cursor down"; } { - on = [ "" ]; + on = [""]; run = "inspect"; desc = "Inspect the task"; } { - on = [ "x" ]; + on = ["x"]; run = "cancel"; desc = "Cancel the task"; } { - on = [ "~" ]; + on = ["~"]; run = "help"; desc = "Open help"; } @@ -703,56 +703,56 @@ select.keymap = [ { - on = [ "" ]; + on = [""]; run = "close"; desc = "Cancel selection"; } { - on = [ "" ]; + on = [""]; run = "close"; desc = "Cancel selection"; } { - on = [ "" ]; + on = [""]; run = "close --submit"; desc = "Submit the selection"; } { - on = [ "k" ]; + on = ["k"]; run = "arrow -1"; desc = "Move cursor up"; } { - on = [ "j" ]; + on = ["j"]; run = "arrow 1"; desc = "Move cursor down"; } { - on = [ "K" ]; + on = ["K"]; run = "arrow -5"; desc = "Move cursor up 5 lines"; } { - on = [ "J" ]; + on = ["J"]; run = "arrow 5"; desc = "Move cursor down 5 lines"; } { - on = [ "" ]; + on = [""]; run = "arrow -1"; desc = "Move cursor up"; } { - on = [ "" ]; + on = [""]; run = "arrow 1"; desc = "Move cursor down"; } { - on = [ "~" ]; + on = ["~"]; run = "help"; desc = "Open help"; } @@ -760,39 +760,39 @@ input.keymap = [ { - on = [ "" ]; + on = [""]; run = "close"; desc = "Cancel input"; } { - on = [ "" ]; + on = [""]; run = "close --submit"; desc = "Submit the input"; } { - on = [ "" ]; + on = [""]; run = "escape"; desc = "Go back the normal mode or cancel input"; } # Mode { - on = [ "i" ]; + on = ["i"]; run = "insert"; desc = "Enter insert mode"; } { - on = [ "a" ]; + on = ["a"]; run = "insert --append"; desc = "Enter append mode"; } { - on = [ "v" ]; + on = ["v"]; run = "visual"; desc = "Enter visual mode"; } { - on = [ "V" ]; + on = ["V"]; run = [ "move -999" "visual" @@ -803,28 +803,28 @@ # Navigation { - on = [ "h" ]; + on = ["h"]; run = "move -1"; desc = "Move cursor left"; } { - on = [ "l" ]; + on = ["l"]; run = "move 1"; desc = "Move cursor right"; } { - on = [ "0" ]; + on = ["0"]; run = "move -999"; desc = "Move to the BOL"; } { - on = [ "$" ]; + on = ["$"]; run = "move 999"; desc = "Move to the EOL"; } { - on = [ "I" ]; + on = ["I"]; run = [ "move -999" "insert" @@ -832,7 +832,7 @@ desc = "Move to the BOL and enter insert mode"; } { - on = [ "A" ]; + on = ["A"]; run = [ "move 999" "insert --append" @@ -841,40 +841,40 @@ } { - on = [ "" ]; + on = [""]; run = "move -1"; desc = "Move cursor left"; } { - on = [ "" ]; + on = [""]; run = "move 1"; desc = "Move cursor right"; } { - on = [ "b" ]; + on = ["b"]; run = "backward"; desc = "Move to the beginning of the previous word"; } { - on = [ "w" ]; + on = ["w"]; run = "forward"; desc = "Move to the beginning of the next word"; } { - on = [ "e" ]; + on = ["e"]; run = "forward --end-of-word"; desc = "Move to the end of the next word"; } # Deletion { - on = [ "d" ]; + on = ["d"]; run = "delete --cut"; desc = "Cut the selected characters"; } { - on = [ "D" ]; + on = ["D"]; run = [ "delete --cut" "move 999" @@ -882,12 +882,12 @@ desc = "Cut until the EOL"; } { - on = [ "c" ]; + on = ["c"]; run = "delete --cut --insert"; desc = "Cut the selected characters and enter insert mode"; } { - on = [ "C" ]; + on = ["C"]; run = [ "delete --cut --insert" "move 999" @@ -895,7 +895,7 @@ desc = "Cut until the EOL and enter insert mode"; } { - on = [ "x" ]; + on = ["x"]; run = [ "delete --cut" "move 1 --in-operating" @@ -905,36 +905,36 @@ # Yank/Paste { - on = [ "y" ]; + on = ["y"]; run = "yank"; desc = "Copy the selected characters"; } { - on = [ "p" ]; + on = ["p"]; run = "paste"; desc = "Paste the copied characters after the cursor"; } { - on = [ "P" ]; + on = ["P"]; run = "paste --before"; desc = "Paste the copied characters before the cursor"; } # Undo/Redo { - on = [ "u" ]; + on = ["u"]; run = "undo"; desc = "Undo the last operation"; } { - on = [ "" ]; + on = [""]; run = "redo"; desc = "Redo the last operation"; } # Help { - on = [ "~" ]; + on = ["~"]; run = "help"; desc = "Open help"; } @@ -942,58 +942,58 @@ help.keymap = [ { - on = [ "" ]; + on = [""]; run = "escape"; desc = "Clear the filter or hide the help"; } { - on = [ "q" ]; + on = ["q"]; run = "close"; desc = "Exit the process"; } { - on = [ "" ]; + on = [""]; run = "close"; desc = "Hide the help"; } # Navigation { - on = [ "k" ]; + on = ["k"]; run = "arrow -1"; desc = "Move cursor up"; } { - on = [ "j" ]; + on = ["j"]; run = "arrow 1"; desc = "Move cursor down"; } { - on = [ "K" ]; + on = ["K"]; run = "arrow -5"; desc = "Move cursor up 5 lines"; } { - on = [ "J" ]; + on = ["J"]; run = "arrow 5"; desc = "Move cursor down 5 lines"; } { - on = [ "" ]; + on = [""]; run = "arrow -1"; desc = "Move cursor up"; } { - on = [ "" ]; + on = [""]; run = "arrow 1"; desc = "Move cursor down"; } # Filtering { - on = [ "/" ]; + on = ["/"]; run = "filter"; desc = "Apply a filter for the help items"; } diff --git a/override/teams.nix b/override/teams.nix index 4370d7a..7d4f454 100644 --- a/override/teams.nix +++ b/override/teams.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation (final: { pname = "teams-pwa"; name = final.pname; - nativeBuildInputs = [ copyDesktopItems ]; + nativeBuildInputs = [copyDesktopItems]; dontUnpack = true; desktopItems = [ @@ -21,15 +21,15 @@ stdenv.mkDerivation (final: { } --app=https://teams.microsoft.com"; desktopName = "Microsoft Teams PWA"; genericName = "Progressive Web App for Microsoft Teams"; - categories = [ "Network" ]; - mimeTypes = [ "x-scheme-handler/msteams" ]; + categories = ["Network"]; + mimeTypes = ["x-scheme-handler/msteams"]; }) ]; meta = with lib; { description = "Microsoft Teams PWA"; homepage = "https://teams.microsoft.com"; - maintainers = with maintainers; [ ners ]; + maintainers = with maintainers; [ners]; platforms = chromium.meta.platforms; }; }) From e214c4eb701da7d613ecfe18d9ce30e8d6da9ef2 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 15 Feb 2025 23:55:33 +0100 Subject: [PATCH 199/330] Use stable chromium for vesktop --- home/default.nix | 3 ++- modules/programs/homePackages.nix | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/home/default.nix b/home/default.nix index 662028e..f4fb47b 100644 --- a/home/default.nix +++ b/home/default.nix @@ -9,6 +9,7 @@ mod, pkgs, root, + alternativePkgs, ... }: { xdg = { @@ -22,7 +23,7 @@ useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = { - inherit inputs root additionalInputs; + inherit inputs root additionalInputs alternativePkgs; }; users.${config.conf.username} = { diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index 07b599b..223283d 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -5,7 +5,10 @@ pkgs, inputs, ... -}: { +}: let + # TODO remove when chromium works again + fixedVesktop = pkgs.vesktop.override {electron = pkgs.electron_33;}; +in { options.mods.homePackages = { useDefaultPackages = lib.mkOption { default = true; @@ -88,7 +91,7 @@ with pkgs; [ (lib.mkIf config.mods.homePackages.ncspot ncspot) - (lib.mkIf config.mods.homePackages.vesktop vesktop) + (lib.mkIf config.mods.homePackages.vesktop fixedVesktop) (lib.mkIf config.mods.homePackages.nextcloudClient nextcloud-client) (lib.mkIf (!isNull config.mods.homePackages.matrixClient) config.mods.homePackages.matrixClient) (lib.mkIf (!isNull config.mods.homePackages.mailClient) config.mods.homePackages.mailClient) From 88c57dac7290c7ca6f2f1ba67b46073f239d14a5 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 16 Feb 2025 22:19:20 +0100 Subject: [PATCH 200/330] Update logo --- assets/logo.svg | 228 +++++++++++++++++++++ assets/logo2.svg | 238 ++++++++++++++++++++++ assets/logo3.svg | 238 ++++++++++++++++++++++ docs/src/README.md | 492 ++++++++++++++++++++++----------------------- docs/src/logo.svg | 238 ++++++++++++++++++++++ logo.svg | 168 ++++++++-------- 6 files changed, 1277 insertions(+), 325 deletions(-) create mode 100644 assets/logo.svg create mode 100644 assets/logo2.svg create mode 100644 assets/logo3.svg create mode 100644 docs/src/logo.svg diff --git a/assets/logo.svg b/assets/logo.svg new file mode 100644 index 0000000..7ca00e2 --- /dev/null +++ b/assets/logo.svg @@ -0,0 +1,228 @@ + + + + diff --git a/assets/logo2.svg b/assets/logo2.svg new file mode 100644 index 0000000..08baa43 --- /dev/null +++ b/assets/logo2.svg @@ -0,0 +1,238 @@ + + + +DashNixDashNix diff --git a/assets/logo3.svg b/assets/logo3.svg new file mode 100644 index 0000000..6076a01 --- /dev/null +++ b/assets/logo3.svg @@ -0,0 +1,238 @@ + + + +DashNixDashNix diff --git a/docs/src/README.md b/docs/src/README.md index 1fd255b..e1d2797 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -1,246 +1,246 @@ - -
- -# $${\color{cyan}DashNix}$$ - -![Logo of DashNix](./logo.svg) - -
- -A very opinionated (technically only for me) configuration that allows easy adding and removing of systems alongside custom configurations for each system. - -# Usage - -This flake is intended to be used as an input to your own NixOS configuration: - -```nix -dashNix = { - url = "github:DashieTM/DashNix"; - inputs = { - # ensure these are here to update the packages on your own - nixpkgs.follows = "nixpkgs"; - stable.follows = "stable"; - }; -}; -``` - -You can then configure your systems in your flake outputs with a provided library command: - -```nix -nixosConfigurations = inputs.dashNix.dashNixLib.build_systems { root = ./.; }; -``` - -This command will build each system that is placed within the hosts/ directory. -In this directory create one directory for each system you want to configure with DashNix. -This will automatically pick up the hostname for the system and look for 3 different files that are explained below. -(Optionally, you can also change the parameter root (./.) to define a different starting directory than hosts/) - -In order for your configuration to work, you are required to at least provide a single config file with a further config file being optional for custom configuration. -The hardware.nix specifies additional NixOS configuration, while home.nix specifies additional home-manager configuration. (both optional) - -|- flake.nix\ -|- flake.lock\ -|- hosts/\ -|--- system1/\ -|------ configuration.nix (required)\ -|------ hardware.nix (optional)\ -|------ home.nix (optional)\ -|--- system2/\ -|------ configuration.nix (required)\ -|------ hardware.nix (optional)\ -|------ home.nix (optional)\ -|--- system3/\ -|------ configuration.nix (required)\ -|------ hardware.nix (optional)\ -|------ home.nix (optional) - -Here is a minimal required configuration.nix (the TODOs mention a required change): - -```nix -{config, ...}: { - # variables for system - # TODO important changes - conf = { - # change this to your monitor and your pc name - # should be something like DP-1 - defaultMonitor = "YOURMONITOR"; - # width x height @ refreshrate - defaultMonitorMode = "1920x1080@60"; - # scale for your main monitor - defaultMonitorScale = "1"; - # your username - username = "YOURNAME"; - # TODO only needed when you use intel -> amd is default - # cpu = "intel"; - locale = "something.UTF-8"; - timezone = "CONTINENT/CITY"; - }; - # modules - mods = { - # default disk config has root home boot and swap partition, overwrite if you want something different - drives = { - # default assumes ROOT, BOOT, HOME and SWAP labaled drives exist - # for an example without HOME see below - # defaultDrives.enable = false; - # extraDrives = [ - # { - # name = "boot"; - # drive = { - # device = "/dev/disk/by-label/BOOT"; - # fsType = "vfat"; - # options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; - # }; - # } - # { - # name = ""; - # drive = { - # device = "/dev/disk/by-label/ROOT"; - # fsType = "ext4"; - # options = [ "noatime" "nodiratime" "discard" ]; - # }; - # } - # ]; - }; - sops.enable = false; - nextcloud.enable = false; - # default hyprland monitor config -> uncomment when necessary - # TODO: Add more monitors when needed - # hyprland.monitor = [ - # # default - # "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" - # # second example monitor - # "DP-2,3440x1440@180,auto,1" - # # all others - # ",highrr,auto,1" - # ]; - # or amd, whatever you have - gpu.nvidia.enable = true; - kde_connect.enable = true; - # login manager: - # default is greetd - # greetd = { }; - # sddm = { }; - # gdm = { }; - }; -} -``` - -## First Login - -After logging in the first time, your password will be set to "firstlogin", please change this to whatever you like. - -## Nixos and Home-manager Modules - -You can add additional modules or remove all of them by overriding parameters to the build_systems command: - -```nix -nixosConfigurations = - let - additionalMods = { - nixos = [ - # your modules - ]; home = [ - # your modules - ]; - } - # passing this parameter will override the existing modules - mods = { - nixos = []; - home = []; - } - in - inputs.dashNix.dashNixLib.build_systems { root = ./.; inherit mods additionalMods; }; -``` - -## Additional Inputs - -Just like modules, you can add additional inputs to your configuration. - -```nix -nixosConfigurations = - let - additionalInputs = { - something.url = "yoururl" - } - in - inputs.dashNix.dashNixLib.build_systems { root = ./.; inherit additionalInputs; }; -``` - -## Stable/Unstable - -Sometimes you want to differentiate between systems that are stable and unstable, e.g. for servers and desktops/laptops. -This can be done with the overridePkgs flag for the lib function: - -```nix - nixosConfigurations = - inputs.dashNix.dashNixLib.build_systems { - root = ./stable; - inherit additionalInputs; - overridePkgs = true; - } - // inputs.dashNix.dashNixLib.build_systems { - root = ./unstable; - inherit additionalInputs; - }; -``` - -You can now place your systems in the respective directories. -Keep in mind that the hosts directory will still need to exist in each variant. -E.g. stable/hosts/yourserver and unstable/hosts/yourdesktop - -# Installation - -You can find a custom ISO on my NextCloud server: [Link](https://cloud.dashie.org/s/z7G3zS9SXeEt2ERD). -With this, you will receive the example config in /iso/example alongside the gnome desktop environment, -as well as a few tools like gnome-disks, neovim, vscodium, a browser etc. - -Alternatively, you can use whatever NixOS installer and just install your config from there, just make sure to set the drive configuration before. - -# Modules - -This configuration features several modules that can be used as preconfigured "recipies". -These modules attempt to combine the home-manager and nixos packages/options to one single configuration file for each new system. -For package lists, please check the individual modules, as the lists can be long. - -- Hyprland: Installs and configures Hyprland with various additional packages -- acpid : Enables the acpid daemon -- base packages : A list of system packages to be installed by default -- bluetooth : Configures/enables bluetooth and installs tools for bluetooth -- coding packages : A list of coding packages to be installed by default -- drives : A drive configuration module -- firefox: Enables and configures firefox (extensions and settings) -- fish: Enables and configures fish shell -- flatpak : Installs and enables declarative flatpak -- gaming : Configures gaming related features (launchers, gamemode) -- git : Git key and config module -- gnome_services : Gnome services for minimal enviroments -> Window managers etc -- gpu : GPU settings (AMD) -- greetd : Enables and configures the greetd/regreet login manager with Hyprland -- home packages : A list of home packages to be installed by default -- kde_connect : Enables KDE connect and opens its ports -- keepassxc : Configures keepassxc -- kitty: Enables and configures kitty terminal -- layout : Modules to configure keyboard layout system wide -- media packages : A list of media packages to be installed by default -- mime: Mime type configuration -- nextcloud : Handles synchronization via nextcloud cmd. (requires config.sops.secrets.nextcloud) -- oxi: My own programs, can be selectively disabled, or as a whole -- piper : Installs and enables piper alongside its daemon -- plymouth: enable or disable plymouth -- printing : Enables and configures printing services -- scripts: Various preconfigured scripts with the ability to add more -- sops: Enables sops-nix -- starship : Configures the starship prompt -- stylix : Configures system themes, can also be applied to dashvim if used. -- teams: For the poor souls that have to use this.... -- virtualbox : Enables and configures virtualbox -- xkb: Keyboard layout configuration -- xone : Installs the xone driver -- yazi: Installs yazi and sets custom keybinds - -# Credits - -- [Fufexan](https://github.com/fufexan) for the xdg-mime config: -- [Catppuccin](https://github.com/catppuccin) for base16 colors -- [Danth](https://github.com/danth) for providing a base for the nix docs -- [Nix-Artwork](https://github.com/NixOS/nixos-artwork/tree/master/logo) for the Nix/NixOS logo (Tim Cuthbertson (@timbertson)) + +
+ +# $${\color{cyan}DashNix}$$ + +![Logo of DashNix](logo.svg) + +
+ +A very opinionated (technically only for me) configuration that allows easy adding and removing of systems alongside custom configurations for each system. + +# Usage + +This flake is intended to be used as an input to your own NixOS configuration: + +```nix +dashNix = { + url = "github:DashieTM/DashNix"; + inputs = { + # ensure these are here to update the packages on your own + nixpkgs.follows = "nixpkgs"; + stable.follows = "stable"; + }; +}; +``` + +You can then configure your systems in your flake outputs with a provided library command: + +```nix +nixosConfigurations = inputs.dashNix.dashNixLib.build_systems { root = ./.; }; +``` + +This command will build each system that is placed within the hosts/ directory. +In this directory create one directory for each system you want to configure with DashNix. +This will automatically pick up the hostname for the system and look for 3 different files that are explained below. +(Optionally, you can also change the parameter root (./.) to define a different starting directory than hosts/) + +In order for your configuration to work, you are required to at least provide a single config file with a further config file being optional for custom configuration. +The hardware.nix specifies additional NixOS configuration, while home.nix specifies additional home-manager configuration. (both optional) + +|- flake.nix\ +|- flake.lock\ +|- hosts/\ +|--- system1/\ +|------ configuration.nix (required)\ +|------ hardware.nix (optional)\ +|------ home.nix (optional)\ +|--- system2/\ +|------ configuration.nix (required)\ +|------ hardware.nix (optional)\ +|------ home.nix (optional)\ +|--- system3/\ +|------ configuration.nix (required)\ +|------ hardware.nix (optional)\ +|------ home.nix (optional) + +Here is a minimal required configuration.nix (the TODOs mention a required change): + +```nix +{config, ...}: { + # variables for system + # TODO important changes + conf = { + # change this to your monitor and your pc name + # should be something like DP-1 + defaultMonitor = "YOURMONITOR"; + # width x height @ refreshrate + defaultMonitorMode = "1920x1080@60"; + # scale for your main monitor + defaultMonitorScale = "1"; + # your username + username = "YOURNAME"; + # TODO only needed when you use intel -> amd is default + # cpu = "intel"; + locale = "something.UTF-8"; + timezone = "CONTINENT/CITY"; + }; + # modules + mods = { + # default disk config has root home boot and swap partition, overwrite if you want something different + drives = { + # default assumes ROOT, BOOT, HOME and SWAP labaled drives exist + # for an example without HOME see below + # defaultDrives.enable = false; + # extraDrives = [ + # { + # name = "boot"; + # drive = { + # device = "/dev/disk/by-label/BOOT"; + # fsType = "vfat"; + # options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; + # }; + # } + # { + # name = ""; + # drive = { + # device = "/dev/disk/by-label/ROOT"; + # fsType = "ext4"; + # options = [ "noatime" "nodiratime" "discard" ]; + # }; + # } + # ]; + }; + sops.enable = false; + nextcloud.enable = false; + # default hyprland monitor config -> uncomment when necessary + # TODO: Add more monitors when needed + # hyprland.monitor = [ + # # default + # "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" + # # second example monitor + # "DP-2,3440x1440@180,auto,1" + # # all others + # ",highrr,auto,1" + # ]; + # or amd, whatever you have + gpu.nvidia.enable = true; + kde_connect.enable = true; + # login manager: + # default is greetd + # greetd = { }; + # sddm = { }; + # gdm = { }; + }; +} +``` + +## First Login + +After logging in the first time, your password will be set to "firstlogin", please change this to whatever you like. + +## Nixos and Home-manager Modules + +You can add additional modules or remove all of them by overriding parameters to the build_systems command: + +```nix +nixosConfigurations = + let + additionalMods = { + nixos = [ + # your modules + ]; home = [ + # your modules + ]; + } + # passing this parameter will override the existing modules + mods = { + nixos = []; + home = []; + } + in + inputs.dashNix.dashNixLib.build_systems { root = ./.; inherit mods additionalMods; }; +``` + +## Additional Inputs + +Just like modules, you can add additional inputs to your configuration. + +```nix +nixosConfigurations = + let + additionalInputs = { + something.url = "yoururl" + } + in + inputs.dashNix.dashNixLib.build_systems { root = ./.; inherit additionalInputs; }; +``` + +## Stable/Unstable + +Sometimes you want to differentiate between systems that are stable and unstable, e.g. for servers and desktops/laptops. +This can be done with the overridePkgs flag for the lib function: + +```nix + nixosConfigurations = + inputs.dashNix.dashNixLib.build_systems { + root = ./stable; + inherit additionalInputs; + overridePkgs = true; + } + // inputs.dashNix.dashNixLib.build_systems { + root = ./unstable; + inherit additionalInputs; + }; +``` + +You can now place your systems in the respective directories. +Keep in mind that the hosts directory will still need to exist in each variant. +E.g. stable/hosts/yourserver and unstable/hosts/yourdesktop + +# Installation + +You can find a custom ISO on my NextCloud server: [Link](https://cloud.dashie.org/s/z7G3zS9SXeEt2ERD). +With this, you will receive the example config in /iso/example alongside the gnome desktop environment, +as well as a few tools like gnome-disks, neovim, vscodium, a browser etc. + +Alternatively, you can use whatever NixOS installer and just install your config from there, just make sure to set the drive configuration before. + +# Modules + +This configuration features several modules that can be used as preconfigured "recipies". +These modules attempt to combine the home-manager and nixos packages/options to one single configuration file for each new system. +For package lists, please check the individual modules, as the lists can be long. + +- Hyprland: Installs and configures Hyprland with various additional packages +- acpid : Enables the acpid daemon +- base packages : A list of system packages to be installed by default +- bluetooth : Configures/enables bluetooth and installs tools for bluetooth +- coding packages : A list of coding packages to be installed by default +- drives : A drive configuration module +- firefox: Enables and configures firefox (extensions and settings) +- fish: Enables and configures fish shell +- flatpak : Installs and enables declarative flatpak +- gaming : Configures gaming related features (launchers, gamemode) +- git : Git key and config module +- gnome_services : Gnome services for minimal enviroments -> Window managers etc +- gpu : GPU settings (AMD) +- greetd : Enables and configures the greetd/regreet login manager with Hyprland +- home packages : A list of home packages to be installed by default +- kde_connect : Enables KDE connect and opens its ports +- keepassxc : Configures keepassxc +- kitty: Enables and configures kitty terminal +- layout : Modules to configure keyboard layout system wide +- media packages : A list of media packages to be installed by default +- mime: Mime type configuration +- nextcloud : Handles synchronization via nextcloud cmd. (requires config.sops.secrets.nextcloud) +- oxi: My own programs, can be selectively disabled, or as a whole +- piper : Installs and enables piper alongside its daemon +- plymouth: enable or disable plymouth +- printing : Enables and configures printing services +- scripts: Various preconfigured scripts with the ability to add more +- sops: Enables sops-nix +- starship : Configures the starship prompt +- stylix : Configures system themes, can also be applied to dashvim if used. +- teams: For the poor souls that have to use this.... +- virtualbox : Enables and configures virtualbox +- xkb: Keyboard layout configuration +- xone : Installs the xone driver +- yazi: Installs yazi and sets custom keybinds + +# Credits + +- [Fufexan](https://github.com/fufexan) for the xdg-mime config: +- [Catppuccin](https://github.com/catppuccin) for base16 colors +- [Danth](https://github.com/danth) for providing a base for the nix docs +- [Nix-Artwork](https://github.com/NixOS/nixos-artwork/tree/master/logo) for the Nix/NixOS logo (Tim Cuthbertson (@timbertson)) diff --git a/docs/src/logo.svg b/docs/src/logo.svg new file mode 100644 index 0000000..08baa43 --- /dev/null +++ b/docs/src/logo.svg @@ -0,0 +1,238 @@ + + + +DashNixDashNix diff --git a/logo.svg b/logo.svg index eb92235..08baa43 100644 --- a/logo.svg +++ b/logo.svg @@ -2,40 +2,19 @@ DashNix + d="m 277.21377,-582.32585 178.97491,-166.45237 -53.52586,-16.99636 -47.88683,44.78006 -14.79485,-63.7204 -26.67512,-8.18413 -20.91172,19.40373 21.10703,90.68829 -48.74692,45.51646 z" + style="fill:#f8f641;fill-opacity:1" />DashNix From 1273cd73618e983bd0c0bb10f37b2e516d1b8316 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 18 Feb 2025 08:04:50 +0100 Subject: [PATCH 201/330] add lorri --- base/common_hardware.nix | 1 + logo.svg | 61 ++++++++++++++++++++++++++++++++++++-- modules/programs/teams.nix | 4 +-- 3 files changed, 61 insertions(+), 5 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 8a0ba4b..f1288df 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -59,6 +59,7 @@ in { # Enable the X11 windowing system. services = { + lorri.enable = true; flatpak.enable = true; xserver.enable = true; fstrim.enable = lib.mkDefault true; diff --git a/logo.svg b/logo.svg index 08baa43..8c9526c 100644 --- a/logo.svg +++ b/logo.svg @@ -8,13 +8,38 @@ version="1.1" id="svg1" xml:space="preserve" + sodipodi:docname="logo.svg" + inkscape:export-filename="logo4.svg" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96" + inkscape:version="1.4 (e7c3feb100, 2024-10-09)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">DashNixDashNixDashNix Date: Sat, 22 Feb 2025 01:36:33 +0100 Subject: [PATCH 202/330] Add opencl to amd --- modules/programs/gpu.nix | 165 +++++++++++++++++++++------------------ 1 file changed, 87 insertions(+), 78 deletions(-) diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index 5efa416..56083db 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -5,97 +5,106 @@ pkgs, ... }: { - options.mods = { - gpu = { - nvidia.enable = lib.mkOption { - default = false; - example = true; + options.mods.gpu = { + nvidia.enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Enables nvidia support. + ''; + }; + amdgpu.enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Enables amdgpu support. + ''; + }; + intelgpu.enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Enables intel support. + ''; + }; + vapi = { + enable = lib.mkOption { + default = true; + example = false; type = lib.types.bool; description = '' - Enables nvidia support. + Enables vapi. ''; }; - amdgpu.enable = lib.mkOption { + rocm.enable = lib.mkOption { default = false; - example = true; type = lib.types.bool; - description = '' - Enables amdgpu support. - ''; - }; - intelgpu.enable = lib.mkOption { - default = false; example = true; - type = lib.types.bool; description = '' - Enables intel support. + Enables rocm support. ''; }; - vapi = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables vapi. - ''; - }; - rocm.enable = lib.mkOption { - default = false; - type = lib.types.bool; - example = true; - description = '' - Enables rocm support. - ''; - }; - }; }; }; - config = - (lib.optionalAttrs (options ? hardware.graphics) { - boot = lib.mkIf config.mods.amdgpu.enable { - kernelModules = ["kvm-amd"]; - initrd.kernelModules = ["amdgpu"]; - kernelParams = ["amdgpu.ppfeaturemask=0xffffffff"]; - }; + config = lib.optionalAttrs (options ? boot) { + boot = lib.mkIf config.mods.gpu.amdgpu.enable { + kernelModules = ["kvm-amd"]; + initrd.kernelModules = ["amdgpu"]; + kernelParams = ["amdgpu.ppfeaturemask=0xffffffff"]; + }; + services.xserver.videoDrivers = + if config.mods.gpu.amdgpu.enable + then ["amdgpu"] + else if config.mods.gpu.nvidia.enable + then ["nvidia"] + else []; - hardware = { - graphics = let - amdPackages = [ - (lib.mkIf (config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable) pkgs.vpl-gpu-rt) - (lib.mkIf ( - config.mods.gpu.intelgpu && lib.mkIf config.mods.gpu.vapi.enable - ) - pkgs.intel-media-driver) - (lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl) - (lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau) - (lib.mkIf (config.mods.gpu.intelgpu || config.mods.gpu.amdgpu) pkgs.mesa.drivers) - ]; - rocmPackages = [ - pkgs.rocmPackages.clr.icd - pkgs.rocm-opencl-runtime - ]; - in { - enable = true; - enable32Bit = lib.mkDefault true; - extraPackages = - amdPackages - ++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu) rocmPackages); - }; - }; - }) - // lib.optionalAttrs (options ? hardware.graphics) ( - lib.mkIf config.mods.gpu.nvidia.enable { - hardware.nvidia = { - modesetting.enable = true; - # powerManagement.enable = false; - # powerManagement.finegrained = true; - open = true; - nvidiaSettings = true; - package = config.boot.kernelPackages.nvidiaPackages.beta; - }; - services.xserver.videoDrivers = ["nvidia"]; + environment.variables = + if (config.mods.gpu.amdgpu.enable && config.mods.gpu.vapi.rocm.enable) + then { + RUSTICL_ENABLE = "radeonsi"; } - ); + else {}; + + hardware = { + nvidia = lib.mkIf config.mods.gpu.nvidia.enable { + modesetting.enable = true; + open = true; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.beta; + }; + graphics = let + amdPackages = [ + (lib.mkIf (config.mods.gpu.intelgpu.enable && lib.mkIf config.mods.gpu.vapi.enable) pkgs.vpl-gpu-rt) + (lib.mkIf ( + config.mods.gpu.intelgpu.enable && lib.mkIf config.mods.gpu.vapi.enable + ) + pkgs.intel-media-driver) + (lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl) + (lib.mkIf config.mods.gpu.vapi.enable pkgs.libva) + (lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau) + (lib.mkIf (config.mods.gpu.intelgpu.enable || config.mods.gpu.amdgpu.enable) pkgs.mesa.drivers) + ]; + rocmPackages = [ + pkgs.rocmPackages.clr.icd + pkgs.mesa + pkgs.mesa.opencl + pkgs.vulkan-loader + pkgs.vulkan-validation-layers + pkgs.vulkan-tools + pkgs.clinfo + ]; + in { + enable = true; + enable32Bit = lib.mkDefault true; + extraPackages = + amdPackages + ++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu.enable) rocmPackages); + }; + }; + }; } From 6c1aff4c0e942487032dc66d153e82d115a76bf6 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 22 Feb 2025 13:12:48 +0100 Subject: [PATCH 203/330] Use cachyOS kernel for gaming --- flake.nix | 13 +++++++++++-- modules/programs/gaming.nix | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index 7665cfe..b7f7af9 100644 --- a/flake.nix +++ b/flake.nix @@ -43,12 +43,16 @@ reset.url = "github:Xetibo/ReSet"; reset-plugins.url = "github:Xetibo/ReSet-Plugins"; + # absolute insanity + chaoticNyx.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; + dashvim = { url = "github:DashieTM/DashVim"; }; }; outputs = {self, ...} @ inputs: let + currentSystem = "x86_64-linux"; permittedPackages = [ "olm-3.2.16" # well done dotnet... @@ -68,20 +72,23 @@ "nextcloud-27.1.11" ]; stable = import inputs.stable { - system = "x86_64-linux"; + system = currentSystem; config = { allowUnfree = true; permittedInsecurePackages = permittedPackages; }; + overlays = [inputs.chaoticNyx.overlays.default]; }; pkgs = import inputs.nixpkgs { - system = "x86_64-linux"; + system = currentSystem; config = { allowUnsupportedSystem = true; permittedInsecurePackages = permittedPackages; + # Often happens with neovim, this should not block everything. allowBroken = true; allowUnfree = true; }; + overlays = [inputs.chaoticNyx.overlays.default]; }; in rec { dashNixLib = import ./lib { @@ -119,6 +126,7 @@ "https://oxicalc.cachix.org" "https://hyprdock.cachix.org" "https://reset.cachix.org" + "https://chaotic-nyx.cachix.org/" ]; extra-trusted-public-keys = [ @@ -132,6 +140,7 @@ "oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ=" "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" + "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" ]; }; } diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 18b95c0..76a86e7 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -61,7 +61,7 @@ config = lib.mkIf config.mods.gaming.enable ( lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = config.mods.gaming.tools; - boot.kernelPackages = lib.mkForce pkgs.linuxPackages_xanmod_latest; + boot.kernelPackages = lib.mkForce pkgs.linuxPackages_cachyos; programs = { steam.enable = config.mods.gaming.steam; From 7e54da92b9e5c4d24cc3ac490f75c7de681420c7 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 23 Feb 2025 12:54:28 +0100 Subject: [PATCH 204/330] Use displaySessions for display manager --- modules/programs/fish.nix | 4 ++-- modules/programs/gaming.nix | 2 +- modules/programs/greetd.nix | 38 +++++++++++++++++++------------------ 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index ffeea1e..fc89e95 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -50,8 +50,8 @@ in { set EDITOR "neovide --no-fork" - alias rebuild='nh os switch' - alias update='nix flake update --flake $FLAKE' + alias rebuild='nh os switch -- --accept-flake-config' + alias update='nix flake update --flake $FLAKE --accept-flake-config' abbr --add ls 'lsd' abbr --add :q 'exit' abbr --add gh 'git push origin' diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 76a86e7..3998c78 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -31,7 +31,7 @@ default = true; example = false; type = lib.types.bool; - description = "Whether to use the xanmod kernel"; + description = "Whether to use the CachyOS kernel"; }; steam = lib.mkOption { default = true; diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index d00baa6..0101c3c 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -43,15 +43,16 @@ ''; }; environments = lib.mkOption { - default = '' - Hyprland - ''; + default = [ + inputs.hyprland.packages.${config.conf.system}.hyprland + ]; # no idea if these are written correctly - example = '' - Niri - River - ''; - type = lib.types.lines; + example = [ + pkgs.niri + pkgs.river + pkgs.swayfx + ]; + type = with lib.types; listOf package; description = '' List of environments that should be available in the login prompt. ''; @@ -85,23 +86,24 @@ manage = "desktop"; name = "Hyprland"; start = '' - ${lib.getExe pkgs.hyprland} & waitPID=$! + ${inputs.hyprland.packages.${config.conf.system}.hyprland} & waitPID=$! ''; } ]; # greetd display manager programs.hyprland.enable = true; - services.greetd = { - enable = true; - settings = { - terminal.vt = 1; - default_session = session; + services = { + displayManager.sessionPackages = config.mods.greetd.environments; + greetd = { + enable = true; + settings = { + terminal.vt = 1; + default_session = session; + }; }; }; - environment.etc."greetd/environments".text = config.mods.greetd.environments; - # 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 = '' monitor=${config.mods.greetd.monitor},${config.mods.greetd.resolution},0x0,${config.mods.greetd.scale} @@ -118,8 +120,8 @@ disable_hyprland_logo = false } - "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" - "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" + env="HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" + env="HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" env=XCURSOR_THEME,${config.mods.stylix.cursor.name} env=XCURSOR_SIZE,${toString config.mods.stylix.cursor.size} env=QT_QPA_PLATFORMTHEME,qt5ct From c021794165d426e73c8ca1705406c96c3f7a6f9e Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 23 Feb 2025 13:10:57 +0100 Subject: [PATCH 205/330] Change regreet session dir --- modules/programs/greetd.nix | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 0101c3c..9b5791d 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -81,16 +81,6 @@ in lib.mkIf config.mods.greetd.enable ( lib.optionalAttrs (options ? environment) { - services.xserver.displayManager.session = [ - { - manage = "desktop"; - name = "Hyprland"; - start = '' - ${inputs.hyprland.packages.${config.conf.system}.hyprland} & waitPID=$! - ''; - } - ]; - # greetd display manager programs.hyprland.enable = true; services = { @@ -117,11 +107,13 @@ misc { disable_splash_rendering = false - disable_hyprland_logo = false + disable_hyprland_logo = true } - env="HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" - env="HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" + env=STATE_DIR,var/cache/regreet + env=CACHE_DIR,var/cache/regreet + env=HYPRCURSOR_THEME,${config.mods.stylix.cursor.name} + env=HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size} env=XCURSOR_THEME,${config.mods.stylix.cursor.name} env=XCURSOR_SIZE,${toString config.mods.stylix.cursor.size} env=QT_QPA_PLATFORMTHEME,qt5ct From d88a6c3e4d644132dc790d2b1c0c8bde61e5d276 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 23 Feb 2025 15:57:30 +0100 Subject: [PATCH 206/330] Add wine64 --- modules/programs/gaming.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 3998c78..2557049 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -17,7 +17,7 @@ gamemode steam lutris - wine + wineWowPackages.stable adwsteamgtk # TODO broken #heroic From c2ca2e5b718bcba7015397f066dd01a9b12d243d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 25 Feb 2025 21:40:41 +0100 Subject: [PATCH 207/330] Add initial sway module --- flake.lock | 655 ++++++++++++++++++++++++----------- modules/programs/default.nix | 1 + modules/programs/greetd.nix | 14 +- modules/programs/media.nix | 92 ++--- modules/programs/stylix.nix | 7 +- modules/programs/sway.nix | 30 ++ 6 files changed, 540 insertions(+), 259 deletions(-) create mode 100644 modules/programs/sway.nix diff --git a/flake.lock b/flake.lock index 3fb191d..98a66e3 100644 --- a/flake.lock +++ b/flake.lock @@ -61,11 +61,11 @@ ] }, "locked": { - "lastModified": 1738456976, - "narHash": "sha256-cufyHbOMnSt9V4w4OVSzNcpJ+8DwzRZRJaca2Q89KVI=", + "lastModified": 1739298463, + "narHash": "sha256-oAFv9jKwwA7d7384d2LeywDSgwhvb3ZnrwbfoWPhXsI=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "257b2050790ab3b1eb389e0f8bdc400eb9510139", + "rev": "f239e5aadd6d23c48e085c2de3397e2058e54d16", "type": "github" }, "original": { @@ -177,6 +177,29 @@ "type": "github" } }, + "chaoticNyx": { + "inputs": { + "fenix": "fenix", + "flake-schemas": "flake-schemas", + "home-manager": "home-manager", + "jovian": "jovian", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1740408177, + "narHash": "sha256-baFhGvCncDj3zJlDODJESVE83lV5+tGOrvgwQczzp84=", + "owner": "chaotic-cx", + "repo": "nyx", + "rev": "62e2d6c89e4310c7cb56ee5f6bbdc280072dd082", + "type": "github" + }, + "original": { + "owner": "chaotic-cx", + "ref": "nyxpkgs-unstable", + "repo": "nyx", + "type": "github" + } + }, "crane": { "locked": { "lastModified": 1737689766, @@ -196,15 +219,15 @@ "inputs": { "base16": "base16_2", "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "nixvim": "nixvim" }, "locked": { - "lastModified": 1738405487, - "narHash": "sha256-g9Wp/hYAfKbwqku2WPcBPjhVtnNQHQ14kVuuWsRZduQ=", + "lastModified": 1740315793, + "narHash": "sha256-GXmi3T2Lj9a2LwfADZ82WiZTgPTH+vbUwj4647Bjeqc=", "owner": "DashieTM", "repo": "DashVim", - "rev": "e563f6f5f2f8f7feb5cd50339d1baff1a26e2e6f", + "rev": "752206afc9a03954b221d0a8880151636d8dbf53", "type": "github" }, "original": { @@ -235,14 +258,36 @@ "type": "github" } }, + "fenix": { + "inputs": { + "nixpkgs": [ + "chaoticNyx", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1740292204, + "narHash": "sha256-ZbptkmqaenRhUKsodSEcVzBw+kXZ8DcZpTGutU1HEiI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "93d59130e3fc121f927c03e406142df8d544b901", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1736899990, - "narHash": "sha256-S79Hqn2EtSxU4kp99t8tRschSifWD4p/51++0xNWUxw=", + "lastModified": 1739223196, + "narHash": "sha256-vAxN2f3rvl5q62gQQjZGVSvF93nAsOxntuFz+e/655w=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "91ca1f82d717b02ceb03a3f423cbe8082ebbb26d", + "rev": "a89108e6272426f4eddd93ba17d0ea101c34fb21", "type": "github" }, "original": { @@ -282,7 +327,6 @@ } }, "flake-compat_3": { - "flake": false, "locked": { "lastModified": 1733328505, "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", @@ -326,11 +370,11 @@ ] }, "locked": { - "lastModified": 1727826117, - "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", + "lastModified": 1738453229, + "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", + "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", "type": "github" }, "original": { @@ -360,16 +404,38 @@ "type": "github" } }, + "flake-parts_12": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-parts_2": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1736143030, - "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=", + "lastModified": 1738453229, + "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de", + "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", "type": "github" }, "original": { @@ -387,11 +453,11 @@ ] }, "locked": { - "lastModified": 1736143030, - "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=", + "lastModified": 1738453229, + "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de", + "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", "type": "github" }, "original": { @@ -526,6 +592,20 @@ "type": "github" } }, + "flake-schemas": { + "locked": { + "lastModified": 1721999734, + "narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=", + "rev": "0a5c42297d870156d9c57d8f99e476b738dcd982", + "revCount": 75, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz" + } + }, "flake-utils": { "inputs": { "systems": "systems_3" @@ -726,11 +806,11 @@ ] }, "locked": { - "lastModified": 1735882644, - "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", "type": "github" }, "original": { @@ -826,17 +906,16 @@ "home-manager": { "inputs": { "nixpkgs": [ - "dashvim", - "nixvim", + "chaoticNyx", "nixpkgs" ] }, "locked": { - "lastModified": 1738275749, - "narHash": "sha256-PM+cGduJ05EZ+YXulqAwUFjvfKpPmW080mcuN6R1POw=", + "lastModified": 1740318342, + "narHash": "sha256-fjr9+3Iru6O5qE+2oERQkabqAUXx4awm0+i2MBcta1U=", "owner": "nix-community", "repo": "home-manager", - "rev": "a8159195bfaef3c64df75d3b1e6a68d49d392be9", + "rev": "b5ab2c7fdaa807cf425066ab7cd34b073946b1ca", "type": "github" }, "original": { @@ -848,15 +927,17 @@ "home-manager_2": { "inputs": { "nixpkgs": [ + "dashvim", + "nixvim", "nixpkgs" ] }, "locked": { - "lastModified": 1739051380, - "narHash": "sha256-p1QSLO8DJnANY+ppK7fjD8GqfCrEIDjso1CSRHsXL7Y=", + "lastModified": 1738878603, + "narHash": "sha256-fmhq8B3MvQLawLbMO+LWLcdC2ftLMmwSk+P29icJ3tE=", "owner": "nix-community", "repo": "home-manager", - "rev": "5af1b9a0f193ab6138b89a8e0af8763c21bbf491", + "rev": "433799271274c9f2ab520a49527ebfe2992dcfbd", "type": "github" }, "original": { @@ -866,6 +947,26 @@ } }, "home-manager_3": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1740494361, + "narHash": "sha256-Dd/GhJ9qKmUwuhgt/PAROG8J6YdU2ZjtJI9SQX5sVQI=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "74f0a8546e3f2458c870cf90fc4b38ac1f498b17", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_4": { "inputs": { "nixpkgs": [ "stylix", @@ -873,11 +974,11 @@ ] }, "locked": { - "lastModified": 1737630279, - "narHash": "sha256-wJQCxyMRc4P26zDrHmZiRD5bbfcJpqPG3e2djdGG3pk=", + "lastModified": 1740347597, + "narHash": "sha256-st5q9egkPGz8TUcVVlIQX7y6G3AzHob+6M963bwVq74=", "owner": "nix-community", "repo": "home-manager", - "rev": "0db5c8bfcce78583ebbde0b2abbc95ad93445f7c", + "rev": "12e26a74e5eb1a31e13daaa08858689e25ebd449", "type": "github" }, "original": { @@ -902,11 +1003,11 @@ ] }, "locked": { - "lastModified": 1738178255, - "narHash": "sha256-+D6Nu2ewXbMTFzx/Q4jDOo+LAOUPr0cxQJg5k33daIE=", + "lastModified": 1738664950, + "narHash": "sha256-xIeGNM+iivwVHkv9tHwOqoUP5dDrtees34bbFKKMZYs=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "dcadd3398abe146d60c67e0d9ee6e27b301cae82", + "rev": "7c6d165e1eb9045a996551eb9f121b6d1b30adc3", "type": "github" }, "original": { @@ -918,7 +1019,7 @@ "hyprdock": { "inputs": { "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1733264848, @@ -950,11 +1051,11 @@ ] }, "locked": { - "lastModified": 1738437059, - "narHash": "sha256-J+8ecqaP3zD9GHeN8Y4hUapoELSoggp0IZI8laTFt/0=", + "lastModified": 1739049071, + "narHash": "sha256-3+7TpXMrbsUXSwgr5VAKAnmkzMb6JO+Rvc9XRb5NMg4=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "5ac80e3686a4dfa55d2bd15c81a266b89594a295", + "rev": "175c6b29b6ff82100539e7c4363a35a02c74dd73", "type": "github" }, "original": { @@ -973,17 +1074,17 @@ "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_6", "pre-commit-hooks": "pre-commit-hooks", "systems": "systems_4", "xdph": "xdph" }, "locked": { - "lastModified": 1739111430, - "narHash": "sha256-WasuDUcKT6UpRam4SDYcJ+GO0yhE4Evv+4bQDutYu8U=", + "lastModified": 1740492189, + "narHash": "sha256-ulVWP6hjMT+aByXlqjaLSEywkfw8lbTwVg4K9J/j5f0=", "ref": "refs/heads/main", - "rev": "56f6f61596a547cdcdfb7aa7c3550e380b487ee3", - "revCount": 5802, + "rev": "f0850905f0275922340035f62b6d808c2980ceda", + "revCount": 5843, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -1074,11 +1175,11 @@ ] }, "locked": { - "lastModified": 1737981711, - "narHash": "sha256-lh6cL5D8nPplB3WovCQjLUZ7k7MViiBrMlpkfm4R7/c=", + "lastModified": 1739048983, + "narHash": "sha256-REhTcXq4qs3B3cCDtLlYDz0GZvmsBSh947Ub6pQWGTQ=", "owner": "hyprwm", "repo": "hyprland-qtutils", - "rev": "96bf0677fa9cd13508294e3d4559dfbbc8beff73", + "rev": "3504a293c8f8db4127cb0f7cfc1a318ffb4316f8", "type": "github" }, "original": { @@ -1103,11 +1204,11 @@ ] }, "locked": { - "lastModified": 1737634606, - "narHash": "sha256-W7W87Cv6wqZ9PHegI6rH1+ve3zJPiyevMFf0/HwdbCQ=", + "lastModified": 1739048914, + "narHash": "sha256-vd5rJBTmp2w7SDgfv23Zcd84ktI5eDA7e5UBzx+pKrU=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "f41271d35cc0f370d300413d756c2677f386af9d", + "rev": "a7334904d591f38757c46fbe2ab68651877d9099", "type": "github" }, "original": { @@ -1128,11 +1229,11 @@ ] }, "locked": { - "lastModified": 1737978343, - "narHash": "sha256-TfFS0HCEJh63Kahrkp1h9hVDMdLU8a37Zz+IFucxyfA=", + "lastModified": 1739891528, + "narHash": "sha256-h8HOCZ/rw2Buzku+GKF77VXxrGjCSOQkLhptiEKMYg0=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "6a8bc9d2a4451df12f5179dc0b1d2d46518a90ab", + "rev": "61a5382f4b1ab578064d470b1b3d3f0df396b8ba", "type": "github" }, "original": { @@ -1153,11 +1254,11 @@ ] }, "locked": { - "lastModified": 1735493474, - "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=", + "lastModified": 1739049028, + "narHash": "sha256-RleJp7LYbr6s+M1xgbmhtBs+fYa3ZdIiF7+QalJ4D1g=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b", + "rev": "04146df74a8d5ec0b579657307be01f1e241125f", "type": "github" }, "original": { @@ -1176,11 +1277,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1738859373, - "narHash": "sha256-/ckqUSy2S75aPuZWJkE9jvxu3THvQyKrK0gYR6l1Gp0=", + "lastModified": 1740229415, + "narHash": "sha256-9x2r4mCmyZelgdlcd3Zla0bQp/dQhTvjMyb6OO1CMWY=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "75375aa341ec154345a7f41d210c952d4ffe2002", + "rev": "9b67719cac7b66727b16fe7a490039510fcc1965", "type": "github" }, "original": { @@ -1219,9 +1320,31 @@ "type": "github" } }, + "jovian": { + "inputs": { + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "chaoticNyx", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1740269380, + "narHash": "sha256-l+zB5a39MJp4Olc4YxP7GChFXmNZIhoXaiSS6QRXa9o=", + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "rev": "11ba89d13831cb399194310304fffb025081c674", + "type": "github" + }, + "original": { + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "type": "github" + } + }, "naersk": { "inputs": { - "nixpkgs": "nixpkgs_6" + "nixpkgs": "nixpkgs_7" }, "locked": { "lastModified": 1736429655, @@ -1246,11 +1369,11 @@ ] }, "locked": { - "lastModified": 1738277753, - "narHash": "sha256-iyFcCOk0mmDiv4ut9mBEuMxMZIym3++0qN1rQBg8FW0=", + "lastModified": 1738743987, + "narHash": "sha256-O3bnAfsObto6l2tQOmQlrO6Z2kD6yKwOWfs7pA0CpOc=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "49b807fa7c37568d7fbe2aeaafb9255c185412f9", + "rev": "ae406c04577ff9a64087018c79b4fdc02468c87c", "type": "github" }, "original": { @@ -1261,11 +1384,11 @@ }, "nix-flatpak": { "locked": { - "lastModified": 1738175805, - "narHash": "sha256-fPjaARmK522JLJ7wxFebxG4eE/3HHSmuAA78iAZ+A7g=", + "lastModified": 1739444422, + "narHash": "sha256-iAVVHi7X3kWORftY+LVbRiStRnQEob2TULWyjMS6dWg=", "owner": "gmodena", "repo": "nix-flatpak", - "rev": "d4c75a33c4a7a16bf87cfd804fb5444a1ec53d49", + "rev": "5e54c3ca05a7c7d968ae1ddeabe01d2a9bc1e177", "type": "github" }, "original": { @@ -1274,6 +1397,29 @@ "type": "github" } }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "chaoticNyx", + "jovian", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729697500, + "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", + "owner": "zhaofengli", + "repo": "nix-github-actions", + "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "ref": "matrix-name", + "repo": "nix-github-actions", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1730200266, @@ -1292,33 +1438,17 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1735774519, - "narHash": "sha256-CewEm1o2eVAnoqb6Ml+Qi9Gg/EfNAxbRx1lANGVyoLI=", + "lastModified": 1738452942, + "narHash": "sha256-vJzFZGaCpnmo7I6i416HaBLpC+hvcURh/BQwROcGIp8=", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz" + "url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz" }, "original": { "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz" + "url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz" } }, "nixpkgs_10": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -1334,7 +1464,7 @@ "type": "github" } }, - "nixpkgs_12": { + "nixpkgs_11": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1350,7 +1480,39 @@ "type": "github" } }, + "nixpkgs_12": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_13": { + "locked": { + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { "locked": { "lastModified": 1723637854, "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", @@ -1366,7 +1528,7 @@ "type": "github" } }, - "nixpkgs_14": { + "nixpkgs_15": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -1382,7 +1544,7 @@ "type": "github" } }, - "nixpkgs_15": { + "nixpkgs_16": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1398,13 +1560,13 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_17": { "locked": { - "lastModified": 1729256560, - "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=", + "lastModified": 1739446958, + "narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0", + "rev": "2ff53fe64443980e139eaa286017f53f88336dd0", "type": "github" }, "original": { @@ -1414,13 +1576,13 @@ "type": "github" } }, - "nixpkgs_17": { + "nixpkgs_18": { "locked": { - "lastModified": 1728538411, - "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", + "lastModified": 1736320768, + "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221", + "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8", "type": "github" }, "original": { @@ -1430,7 +1592,7 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_19": { "locked": { "lastModified": 1716948383, "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", @@ -1446,7 +1608,23 @@ "type": "github" } }, - "nixpkgs_19": { + "nixpkgs_2": { + "locked": { + "lastModified": 1740367490, + "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0196c0175e9191c474c26ab5548db27ef5d34b05", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_20": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1462,23 +1640,7 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1738142207, - "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9d3ae807ebd2981d593cddd0080856873139aa40", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_20": { + "nixpkgs_21": { "locked": { "lastModified": 1731763621, "narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=", @@ -1494,13 +1656,13 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_22": { "locked": { - "lastModified": 1736798957, - "narHash": "sha256-qwpCtZhSsSNQtK4xYGzMiyEDhkNzOCz/Vfu4oL2ETsQ=", + "lastModified": 1740367490, + "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9abb87b552b7f55ac8916b6fc9e5cb486656a2f3", + "rev": "0196c0175e9191c474c26ab5548db27ef5d34b05", "type": "github" }, "original": { @@ -1510,13 +1672,13 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_23": { "locked": { - "lastModified": 1738680400, - "narHash": "sha256-ooLh+XW8jfa+91F1nhf9OF7qhuA/y1ChLx6lXDNeY5U=", + "lastModified": 1740367490, + "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "799ba5bffed04ced7067a91798353d360788b30d", + "rev": "0196c0175e9191c474c26ab5548db27ef5d34b05", "type": "github" }, "original": { @@ -1528,11 +1690,27 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1738136902, - "narHash": "sha256-pUvLijVGARw4u793APze3j6mU1Zwdtz7hGkGGkD87qw=", + "lastModified": 1739866667, + "narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1738797219, + "narHash": "sha256-KRwX9Z1XavpgeSDVM/THdFd6uH8rNm/6R+7kIbGa+2s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9a5db3142ce450045840cc8d832b13b8a2018e0c", + "rev": "1da52dd49a127ad74486b135898da2cef8c62665", "type": "github" }, "original": { @@ -1542,7 +1720,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1716330097, "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", @@ -1558,13 +1736,13 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { - "lastModified": 1738410390, - "narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=", + "lastModified": 1739020877, + "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3a228057f5b619feb3186e986dbe76278d707b6e", + "rev": "a79cfe0ebd24952b580b1cf08cd906354996d547", "type": "github" }, "original": { @@ -1574,7 +1752,7 @@ "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_7": { "locked": { "lastModified": 1738297584, "narHash": "sha256-AYvaFBzt8dU0fcSK2jKD0Vg23K2eIRxfsVXIPCW9a0E=", @@ -1588,33 +1766,17 @@ "type": "indirect" } }, - "nixpkgs_7": { - "locked": { - "lastModified": 1739020877, - "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=", - "owner": "NixOs", - "repo": "nixpkgs", - "rev": "a79cfe0ebd24952b580b1cf08cd906354996d547", - "type": "github" - }, - "original": { - "owner": "NixOs", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_8": { "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", + "lastModified": 1740367490, + "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", + "owner": "NixOs", "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "rev": "0196c0175e9191c474c26ab5548db27ef5d34b05", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "NixOs", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -1642,18 +1804,18 @@ "flake-compat": "flake-compat", "flake-parts": "flake-parts_3", "git-hooks": "git-hooks", - "home-manager": "home-manager", + "home-manager": "home-manager_2", "nix-darwin": "nix-darwin", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_4", "nuschtosSearch": "nuschtosSearch", "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1738366771, - "narHash": "sha256-nyEBrP5t1g4vmy7YBkiGaIu19eG8zV3T4IQLQbJsVU8=", + "lastModified": 1739902813, + "narHash": "sha256-BgOQcKKz7VNvSHIbBllHisv32HvF3W3ALF9sdnC++V8=", "owner": "nix-community", "repo": "nixvim", - "rev": "c75e4ea37f25ec98aa6f2035e03e748e7369662c", + "rev": "0ab9947137cd034ec64eb5cd9ede94e53af21f50", "type": "github" }, "original": { @@ -1662,6 +1824,29 @@ "type": "github" } }, + "nur": { + "inputs": { + "flake-parts": "flake-parts_12", + "nixpkgs": [ + "stylix", + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix_2" + }, + "locked": { + "lastModified": 1740408283, + "narHash": "sha256-2xECnhgF3MU9YjmvOkrRp8wRFo2OjjewgCtlfckhL5s=", + "owner": "nix-community", + "repo": "NUR", + "rev": "496a4a11162bdffb9a7b258942de138873f019f7", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, "nuschtosSearch": { "inputs": { "flake-utils": "flake-utils", @@ -1673,11 +1858,11 @@ ] }, "locked": { - "lastModified": 1737924095, - "narHash": "sha256-9RO/IlxiE7bpY7GYsdDMNB533PnDOBo9UvYyXXqlN4c=", + "lastModified": 1738508923, + "narHash": "sha256-4DaDrQDAIxlWhTjH6h/+xfG05jt3qDZrZE/7zDLQaS4=", "owner": "NuschtOS", "repo": "search", - "rev": "5efc9c966bb9bdad07a3c28667eac38b758c6f18", + "rev": "86e2038290859006e05ca7201425ea5b5de4aecb", "type": "github" }, "original": { @@ -1689,7 +1874,7 @@ "oxicalc": { "inputs": { "flake-parts": "flake-parts_5", - "nixpkgs": "nixpkgs_8" + "nixpkgs": "nixpkgs_9" }, "locked": { "lastModified": 1733264508, @@ -1708,7 +1893,7 @@ "oxidash": { "inputs": { "flake-parts": "flake-parts_6", - "nixpkgs": "nixpkgs_9", + "nixpkgs": "nixpkgs_10", "rust-overlay": "rust-overlay_2" }, "locked": { @@ -1728,7 +1913,7 @@ "oxinoti": { "inputs": { "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_11", + "nixpkgs": "nixpkgs_12", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -1748,7 +1933,7 @@ "oxipaste": { "inputs": { "flake-parts": "flake-parts_8", - "nixpkgs": "nixpkgs_13" + "nixpkgs": "nixpkgs_14" }, "locked": { "lastModified": 1737624143, @@ -1767,7 +1952,7 @@ "oxishut": { "inputs": { "flake-parts": "flake-parts_9", - "nixpkgs": "nixpkgs_14", + "nixpkgs": "nixpkgs_15", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -1810,15 +1995,15 @@ "reset": { "inputs": { "flake-parts": "flake-parts_10", - "nixpkgs": "nixpkgs_16", + "nixpkgs": "nixpkgs_17", "rust-overlay": "rust-overlay_5" }, "locked": { - "lastModified": 1733265082, - "narHash": "sha256-UXIbssxKn8rjfBTBh8ukHBtPiGaR9pOQ59m42vFdh6Q=", + "lastModified": 1739632626, + "narHash": "sha256-ReEPsodGJDp3AUOoi+t7pQZaYZiZFxyz9TDEveSiBkI=", "owner": "Xetibo", "repo": "ReSet", - "rev": "f09ed7558107a2bb5334c02305646af8e4bcebcb", + "rev": "f229ed7dea514bc7307cea8682553afd9584eaaa", "type": "github" }, "original": { @@ -1830,7 +2015,7 @@ "reset-plugins": { "inputs": { "flake-parts": "flake-parts_11", - "nixpkgs": "nixpkgs_18", + "nixpkgs": "nixpkgs_19", "rust-overlay": "rust-overlay_6" }, "locked": { @@ -1852,13 +2037,14 @@ "Hyprspace": "Hyprspace", "anyrun": "anyrun", "base16": "base16", + "chaoticNyx": "chaoticNyx", "dashvim": "dashvim", - "home-manager": "home-manager_2", + "home-manager": "home-manager_3", "hyprdock": "hyprdock", "hyprland": "hyprland", "ironbar": "ironbar", "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_8", "oxicalc": "oxicalc", "oxidash": "oxidash", "oxinoti": "oxinoti", @@ -1872,6 +2058,23 @@ "zen-browser": "zen-browser" } }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1740259966, + "narHash": "sha256-FJU9qiELvmJzNRr7wLFtJUy4bSk1PNqsRB7wOQz6zUE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "9df88ff0f65f8de9f73684d2bb96e1b62669d083", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, "rust-overlay": { "inputs": { "nixpkgs": [ @@ -1896,7 +2099,7 @@ "rust-overlay_2": { "inputs": { "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_10" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1716171463, @@ -1915,7 +2118,7 @@ "rust-overlay_3": { "inputs": { "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_12" + "nixpkgs": "nixpkgs_13" }, "locked": { "lastModified": 1716171463, @@ -1934,7 +2137,7 @@ "rust-overlay_4": { "inputs": { "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_15" + "nixpkgs": "nixpkgs_16" }, "locked": { "lastModified": 1716171463, @@ -1952,14 +2155,14 @@ }, "rust-overlay_5": { "inputs": { - "nixpkgs": "nixpkgs_17" + "nixpkgs": "nixpkgs_18" }, "locked": { - "lastModified": 1729564184, - "narHash": "sha256-dP764PQ6YhjY7C84Txnrb2vf0H2YdQlp5c6a7G18fgw=", + "lastModified": 1739586408, + "narHash": "sha256-UN9hRKRE1eLU8C0cioTZubaCZQTA8NDc8/4vCpS5pS0=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "d687672b4541496408068bc273d94c643005d4c9", + "rev": "3dbc0ce1c0690b83cfb9a9a51fbe90c3bc8f9916", "type": "github" }, "original": { @@ -1971,7 +2174,7 @@ "rust-overlay_6": { "inputs": { "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_19" + "nixpkgs": "nixpkgs_20" }, "locked": { "lastModified": 1717035469, @@ -1989,14 +2192,14 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_20" + "nixpkgs": "nixpkgs_21" }, "locked": { - "lastModified": 1738291974, - "narHash": "sha256-wkwYJc8cKmmQWUloyS9KwttBnja2ONRuJQDEsmef320=", + "lastModified": 1739262228, + "narHash": "sha256-7JAGezJ0Dn5qIyA2+T4Dt/xQgAbhCglh6lzCekTVMeU=", "owner": "Mic92", "repo": "sops-nix", - "rev": "4c1251904d8a08c86ac6bc0d72cc09975e89aef7", + "rev": "07af005bb7d60c7f118d9d9f5530485da5d1e975", "type": "github" }, "original": { @@ -2007,11 +2210,11 @@ }, "stable": { "locked": { - "lastModified": 1738843498, - "narHash": "sha256-7x+Q4xgFj9UxZZO9aUDCR8h4vyYut4zPUvfj3i+jBHE=", + "lastModified": 1740339700, + "narHash": "sha256-cbrw7EgQhcdFnu6iS3vane53bEagZQy/xyIkDWpCgVE=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "f5a32fa27df91dfc4b762671a0e0a859a8a0058f", + "rev": "04ef94c4c1582fd485bbfdb8c4a8ba250e359195", "type": "github" }, "original": { @@ -2032,20 +2235,22 @@ "flake-utils": "flake-utils_6", "git-hooks": "git-hooks_2", "gnome-shell": "gnome-shell", - "home-manager": "home-manager_3", - "nixpkgs": "nixpkgs_21", + "home-manager": "home-manager_4", + "nixpkgs": "nixpkgs_22", + "nur": "nur", "systems": "systems_9", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", + "tinted-schemes": "tinted-schemes", "tinted-tmux": "tinted-tmux", "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1739049610, - "narHash": "sha256-oPrTmixNln7tpLz2flsZBPgYqMuGksmIHla9oZDc9Uo=", + "lastModified": 1740484771, + "narHash": "sha256-vVuuizPabugzTQtOKHB8NV/RC1PQWH6KxQtRW8Jqkyg=", "owner": "danth", "repo": "stylix", - "rev": "7818098f4df4ee73667036c65909cf311d36968b", + "rev": "c9195530b40e2589a70d3bf4154d2f92de1fafca", "type": "github" }, "original": { @@ -2223,14 +2428,30 @@ "type": "github" } }, + "tinted-schemes": { + "flake": false, + "locked": { + "lastModified": 1740351358, + "narHash": "sha256-Hdk850xgAd3DL8KX0AbyU7tC834d3Lej1jOo3duWiOA=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "a1bc2bd89e693e7e3f5764cfe8114e2ae150e184", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1735737224, - "narHash": "sha256-FO2hRBkZsjlIRqzNHCPc/52yxg11kHGA8MEtSun9RwE=", + "lastModified": 1740272597, + "narHash": "sha256-/etfUV3HzAaLW3RSJVwUaW8ULbMn3v6wbTlXSKbcoWQ=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "aead506a9930c717ebf81cc83a2126e9ca08fa64", + "rev": "b6c7f46c8718cc484f2db8b485b06e2a98304cd0", "type": "github" }, "original": { @@ -2264,11 +2485,33 @@ ] }, "locked": { - "lastModified": 1738070913, - "narHash": "sha256-j6jC12vCFsTGDmY2u1H12lMr62fnclNjuCtAdF1a4Nk=", + "lastModified": 1738680491, + "narHash": "sha256-8X7tR3kFGkE7WEF5EXVkt4apgaN85oHZdoTGutCFs6I=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "bebf27d00f7d10ba75332a0541ac43676985dea3", + "rev": "64dbb922d51a42c0ced6a7668ca008dded61c483", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_2": { + "inputs": { + "nixpkgs": [ + "stylix", + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", "type": "github" }, "original": { @@ -2320,14 +2563,14 @@ }, "zen-browser": { "inputs": { - "nixpkgs": "nixpkgs_22" + "nixpkgs": "nixpkgs_23" }, "locked": { - "lastModified": 1739049205, - "narHash": "sha256-rYD1xP6PqPh3ZJZJdUVcn20toTt/77okIQAlJ1MlcNs=", + "lastModified": 1740442108, + "narHash": "sha256-TfLmlndhcaGBzYMkv3QFrcwXJwony5apCBOWErKQov8=", "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "56e034809a7d623c135ab0bcbb30764e416ec274", + "rev": "4d82cf9b46b099c81758bd3fa2b5ce617db05532", "type": "github" }, "original": { diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 8bcb775..3248690 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -36,6 +36,7 @@ ./starship.nix ./stylix.nix ./supersonic.nix + ./sway.nix ./teams.nix ./virtmanager.nix ./xkb.nix diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 9b5791d..48120ba 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -34,6 +34,16 @@ By default the scale of the main monitor is used. ''; }; + greeterCommand = lib.mkOption { + default = "${ + lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland + } --config /etc/greetd/hyprgreet.conf"; + example = "${ + lib.getExe pkgs.cage + } -s -- ${lib.getEze pkgs.regreet}"; + type = lib.types.str; + description = "The compositor/greeter command to run"; + }; resolution = lib.mkOption { default = "${config.conf.defaultMonitorMode}"; example = "3440x1440@180"; @@ -73,9 +83,7 @@ config = let username = config.conf.username; session = { - command = "${ - lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland - } --config /etc/greetd/hyprgreet.conf"; + command = config.mods.greetd.greeterCommand; user = username; }; in diff --git a/modules/programs/media.nix b/modules/programs/media.nix index 4bb57b6..62080f3 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -4,7 +4,8 @@ config, pkgs, ... -}: { +}: +{ options.mods.media = { useBasePackages = lib.mkOption { default = true; @@ -13,24 +14,24 @@ description = "Default media packages (If disabled, only the additional packages will be installed)"; }; additionalPackages = lib.mkOption { - default = []; - example = [pkgs.flatpak]; + default = [ ]; + example = [ pkgs.flatpak ]; type = with lib.types; listOf package; description = '' Additional media packages. ''; }; specialPrograms = lib.mkOption { - default = {}; - example = {}; + default = { }; + example = { }; type = with lib.types; attrsOf anything; description = '' special program configuration to be added which require programs.something notation. ''; }; specialServices = lib.mkOption { - default = {}; - example = {}; + default = { }; + example = { }; type = with lib.types; attrsOf anything; description = '' special services configuration to be added which require an services.something notation. @@ -39,50 +40,51 @@ }; config = lib.optionalAttrs (options ? home.packages) { home.packages = - if config.mods.media.useBasePackages - then + if config.mods.media.useBasePackages then with pkgs; - [ - # base audio - pipewire - wireplumber - # audio control - playerctl - # images - imv - # videos - mpv - # pdf - zathura - evince - libreoffice-fresh - onlyoffice-bin - pdftk - pdfpc - polylux2pdfpc - # spotify - # video editing - kdenlive - # image creation - inkscape - gimp - krita - yt-dlp - ] - ++ config.mods.media.additionalPackages - else config.mods.media.additionalPackages; + [ + # base audio + pipewire + wireplumber + # audio control + playerctl + # images + imv + # videos + mpv + # pdf + zathura + evince + libreoffice-fresh + onlyoffice-bin + pdftk + pdfpc + polylux2pdfpc + # spotify + # video editing + kdePackages.kdenlive + # image creation + inkscape + gimp + krita + yt-dlp + ] + ++ config.mods.media.additionalPackages + else + config.mods.media.additionalPackages; programs = - if config.mods.media.useBasePackages - then + if config.mods.media.useBasePackages then { obs-studio.enable = true; - obs-studio.plugins = with pkgs; [obs-studio-plugins.obs-vaapi]; + obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ]; } // config.mods.media.specialPrograms - else config.mods.media.specialPrograms; + else + config.mods.media.specialPrograms; services = - if config.mods.media.useBasePackages - then config.mods.media.specialServices - else config.mods.media.specialServices; + if config.mods.media.useBasePackages then + config.mods.media.specialServices + else + config.mods.media.specialServices; }; } diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index 3e80808..cd00501 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -48,11 +48,8 @@ }; cursor = lib.mkOption { default = { - # broken - #package = pkgs.bibata-cursors; - #name = "Bibata-Modern-Classic"; - package = pkgs.catppuccin-cursors.mochaLavender; - name = "catppuccin-mocha-lavender-cursors"; + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; size = 24; }; example = {}; diff --git a/modules/programs/sway.nix b/modules/programs/sway.nix new file mode 100644 index 0000000..7e45a9d --- /dev/null +++ b/modules/programs/sway.nix @@ -0,0 +1,30 @@ +{ + lib, + config, + options, + ... +}: { + options.mods.sway = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables sway"; + }; + config = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = "sway config"; + }; + }; + config = lib.mkIf config.mods.sway.enable ( + lib.optionalAttrs (options ? wayland.windowManger) { + wayland.windowManager.sway = + { + enable = true; + } + // config.mods.sway.config; + } + ); +} From 4afd99989483819ad462e3263f8f29edad4d1472 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 25 Feb 2025 21:40:41 +0100 Subject: [PATCH 208/330] Add initial sway module --- modules/programs/greetd.nix | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 48120ba..e5bcfb9 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -82,10 +82,6 @@ config = let username = config.conf.username; - session = { - command = config.mods.greetd.greeterCommand; - user = username; - }; in lib.mkIf config.mods.greetd.enable ( lib.optionalAttrs (options ? environment) { @@ -97,7 +93,10 @@ enable = true; settings = { terminal.vt = 1; - default_session = session; + default_session = { + command = config.mods.greetd.greeterCommand; + user = username; + }; }; }; }; From 8c19df773b8cc1192e2eeadc5285e601bbe3d411 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 25 Feb 2025 23:02:29 +0100 Subject: [PATCH 209/330] Make systemdboot optional --- base/common_hardware.nix | 2 +- modules/conf.nix | 8 ++++++++ modules/programs/greetd.nix | 2 +- modules/programs/sway.nix | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index f1288df..7e6239a 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -17,7 +17,7 @@ in { boot = { consoleLogLevel = 0; loader = { - systemd-boot = { + systemd-boot = lib.mkIf config.conf.useSystemdBootloader { enable = true; configurationLimit = 5; }; diff --git a/modules/conf.nix b/modules/conf.nix index 91f83db..a9e9734 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -20,6 +20,14 @@ ''; }; + useSystemdBootloader = lib.mkOption { + default = true; + example = false; + description = '' + use systemd bootloader. + ''; + }; + cpu = lib.mkOption { # TODO: how to enable arm? default = "amd"; diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index e5bcfb9..f7cd71c 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -40,7 +40,7 @@ } --config /etc/greetd/hyprgreet.conf"; example = "${ lib.getExe pkgs.cage - } -s -- ${lib.getEze pkgs.regreet}"; + } -s -- ${lib.getExe pkgs.regreet}"; type = lib.types.str; description = "The compositor/greeter command to run"; }; diff --git a/modules/programs/sway.nix b/modules/programs/sway.nix index 7e45a9d..eef6025 100644 --- a/modules/programs/sway.nix +++ b/modules/programs/sway.nix @@ -19,7 +19,7 @@ }; }; config = lib.mkIf config.mods.sway.enable ( - lib.optionalAttrs (options ? wayland.windowManger) { + lib.optionalAttrs (options ? wayland.windowManger.sway) { wayland.windowManager.sway = { enable = true; From 5c967ddd0dd9195cc08bcc16df3ae5e8f632602e Mon Sep 17 00:00:00 2001 From: MathewHDYT <48954742+MathewHDYT@users.noreply.github.com> Date: Wed, 26 Feb 2025 10:55:22 +0100 Subject: [PATCH 210/330] Readd firefox extensions via NUR (#5) --- flake.nix | 10 ++++++++-- modules/programs/browser/firefox.nix | 2 ++ modules/programs/coding.nix | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index b7f7af9..15d1e5e 100644 --- a/flake.nix +++ b/flake.nix @@ -4,6 +4,7 @@ inputs = { nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; stable.url = "github:NixOs/nixpkgs/nixos-24.11"; + nur.url = "github:nix-community/NUR"; nix-flatpak = { url = "github:gmodena/nix-flatpak"; @@ -77,7 +78,9 @@ allowUnfree = true; permittedInsecurePackages = permittedPackages; }; - overlays = [inputs.chaoticNyx.overlays.default]; + overlays = [ + inputs.nur.overlays.default + inputs.chaoticNyx.overlays.default]; }; pkgs = import inputs.nixpkgs { system = currentSystem; @@ -88,7 +91,10 @@ allowBroken = true; allowUnfree = true; }; - overlays = [inputs.chaoticNyx.overlays.default]; + overlays = [ + inputs.nur.overlays.default + inputs.chaoticNyx.overlays.default + ]; }; in rec { dashNixLib = import ./lib { diff --git a/modules/programs/browser/firefox.nix b/modules/programs/browser/firefox.nix index 0220cf8..048263d 100644 --- a/modules/programs/browser/firefox.nix +++ b/modules/programs/browser/firefox.nix @@ -2,6 +2,7 @@ lib, config, options, + pkgs, ... }: { options.mods.browser.firefox = { @@ -69,6 +70,7 @@ value = { isDefault = true; id = 0; + extensions.packages = [ pkgs.nur.repos.rycee.firefox-addons.darkreader ]; }; } ]; diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index dbf78f3..c26d365 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -439,7 +439,7 @@ programs.vscode = lib.mkIf config.mods.coding.vscodium.enable { enable = true; package = pkgs.vscodium; - extensions = config.mods.coding.vscodium.extensions; + profiles.default.extensions = config.mods.coding.vscodium.extensions; }; xdg.configFile."neovide/config.toml" = lib.mkIf config.mods.coding.dashvim { source = (pkgs.formats.toml {}).generate "neovide" { From 94dd7b8b483c8f8ce13440d7280900f668716fc9 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 27 Feb 2025 19:23:37 +0100 Subject: [PATCH 211/330] Fix cpu governor for gamemode --- modules/programs/gaming.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 2557049..8d1fdd3 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -70,7 +70,7 @@ enableRenice = true; settings = { general = { - governor = "performance"; + desiredgov = "performance"; }; gpu = lib.mkIf config.mods.gaming.gpuOptimization { apply_gpu_optimisations = "accept-responsibility"; From b596b0e0445cea1182f7bf43f96f4d0a733fa564 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 28 Feb 2025 17:33:39 +0100 Subject: [PATCH 212/330] Fix regreet docs --- modules/programs/greetd.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index f7cd71c..01c13a3 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -40,7 +40,7 @@ } --config /etc/greetd/hyprgreet.conf"; example = "${ lib.getExe pkgs.cage - } -s -- ${lib.getExe pkgs.regreet}"; + } -s -- ${lib.getExe pkgs.greetd.regreet}"; type = lib.types.str; description = "The compositor/greeter command to run"; }; From 547ea3e7bbde9a7aaa69a819a22257e2866e9ccc Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 28 Feb 2025 17:36:35 +0100 Subject: [PATCH 213/330] Update Readme --- docs/src/README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/src/README.md b/docs/src/README.md index e1d2797..2fc1e31 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -1,13 +1,12 @@
-# $${\color{cyan}DashNix}$$ - ![Logo of DashNix](logo.svg)
-A very opinionated (technically only for me) configuration that allows easy adding and removing of systems alongside custom configurations for each system. +An opinionated flake to bootstrap NixOS systems with default configurations for various programs and services from both NixOS and HomeManger which can be enabled, disabled, configured or replaced at will. + # Usage From ae8fb251024f6f0f256ad91af88924b0a2bdda0f Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 2 Mar 2025 15:29:47 +0100 Subject: [PATCH 214/330] Add disko variant for drive configuration --- flake.nix | 6 +- lib/default.nix | 1 + modules/programs/drives.nix | 298 +++++++++++++++++++++++++++--------- 3 files changed, 228 insertions(+), 77 deletions(-) diff --git a/flake.nix b/flake.nix index 15d1e5e..4ae8f79 100644 --- a/flake.nix +++ b/flake.nix @@ -33,6 +33,7 @@ stylix.url = "github:danth/stylix"; base16.url = "github:SenchoPens/base16.nix"; + disko.url = "github:nix-community/disko/latest"; anyrun.url = "github:Kirottu/anyrun"; oxicalc.url = "github:DashieTM/OxiCalc"; @@ -80,7 +81,8 @@ }; overlays = [ inputs.nur.overlays.default - inputs.chaoticNyx.overlays.default]; + inputs.chaoticNyx.overlays.default + ]; }; pkgs = import inputs.nixpkgs { system = currentSystem; @@ -94,7 +96,7 @@ overlays = [ inputs.nur.overlays.default inputs.chaoticNyx.overlays.default - ]; + ]; }; in rec { dashNixLib = import ./lib { diff --git a/lib/default.nix b/lib/default.nix index 757fdf4..93408b3 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -44,6 +44,7 @@ nixos = [ inputs.home-manager.nixosModules.home-manager inputs.stylix.nixosModules.stylix + inputs.disko.nixosModules.disko ../base ../home ../modules diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix index 35bf396..8331464 100644 --- a/modules/programs/drives.nix +++ b/modules/programs/drives.nix @@ -3,87 +3,151 @@ config, options, ... -}: let - driveModule = lib.types.submodule { - options = { - name = lib.mkOption { - type = lib.types.str; +}: { + options.mods.drives = { + variant = lib.mkOption { + default = "manual"; + example = "disko"; + type = with lib.types; (enum [ + "manual" + "disko" + ]); + description = '' + Disk configuration type, either "manual" for regular NixOS disk configuration, + or "disko" for using disko to automatically format your drives. + ''; + }; + useSwap = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use swap in drive. + ''; + }; + homeAndRootFsTypes = lib.mkOption { + default = "ext4"; + example = "btrfs"; + type = with lib.types; (enum [ + "btrfs" + "ext2" + "ext3" + "ext4" + "exfat" + "f2fs" + "fat8" + "fat16" + "fat32" + "ntfs" + "xfs" + "zfs" + ]); + description = '' + Filesystem for the home and root partitions. + ''; + }; + defaultDrives = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; description = '' - The path of the drive. - Note that a / is already added at the beginning. + Use default drive config. + + ## Manual variant + This config expects 4 different partitions on a single drive: + - boot partition with "BOOT" label and vfat format (filesystem configurable) + - swap partition with "SWAP" label + - root partition with "ROOT" label and ext4 format (filesystem configurable) + - home partition with "HOME" label and ext4 format (filesystem configurable) + - gpt disk format + NOTE: Any different configuration must be done manually with this turned off. + + ## Disko variant + This config creates 4 different partitions on a single drive: + - boot partition with 1GB size and vfat format + - swap partition with 32GB (size configurable) + - root partition with 30% size and ext4 format (size and filesystem configurable) + - home partition with 70%~ size and ext4 format (size and filesystem configurable) + - gpt disk format + NOTE: Any different configuration must be done manually with this turned off. ''; - default = ""; - example = "drive2"; - }; - drive = lib.mkOption { - type = lib.types.attrsOf lib.types.anything; - description = "The attrs of the drive"; - default = {}; - example = { - device = "/dev/disk/by-label/DRIVE2"; - fsType = "ext4"; - options = [ - "noatime" - "nodiratime" - "discard" - ]; - }; }; }; - }; -in { - options.mods = { - drives = { - useSwap = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Use default drive config - ''; - }; - }; - defaultDrives = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Use default drive config - ''; - }; - }; - extraDrives = lib.mkOption { - default = [ - ]; - example = [ - { - name = "drive2"; - drive = { - device = "/dev/disk/by-label/DRIVE2"; - fsType = "ext4"; - options = [ - "noatime" - "nodiratime" - "discard" - ]; + extraDrives = lib.mkOption { + default = [ + ]; + example = [ + { + name = "drive2"; + drive = { + device = "/dev/disk/by-label/DRIVE2"; + fsType = "ext4"; + options = [ + "noatime" + "nodiratime" + "discard" + ]; + }; + } + ]; + type = with lib.types; listOf (attrsOf anything); + description = '' + Extra drives to add. + Please ensure to add variant compliant attrsets (manual/disko). + (The example is for manual variant, here an example for disko): + ```nix + drive2 = (lib.optionalAttrs config.mods.drives.defaultDrives.enable) { + device = "/dev/nvme1n1" + type = "disk"; + content = { + type = "gpt"; + partitions = { + drive2 = { + start = "0%"; + end = "100%"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/drive2"; + mountOptions = [ + "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. - ''; + }; + ``` + ''; + }; + disko = { + defaultDiskId = lib.mkOption { + default = "TODO"; + example = "/dev/nvme0n1"; + type = lib.types.string; + description = "The name, ID, UUID or similar for the default drive."; + }; + rootAmount = lib.mkOption { + default = 70; + example = 60; + type = lib.types.number; + description = "The percentage of the disk for root. (Home will take up the rest) (Only for disko)"; + }; + swapAmount = lib.mkOption { + default = 32; + example = 64; + type = lib.types.number; + description = "The amount of swap to use. (Only for disko)"; }; }; }; config = ( lib.optionalAttrs (options ? fileSystems) { - fileSystems = + fileSystems = lib.mkIf (config.mods.drives.variant == "manual") ( builtins.listToAttrs ( map ( { @@ -99,7 +163,7 @@ in { // (lib.optionalAttrs config.mods.drives.defaultDrives.enable) { "/" = { device = "/dev/disk/by-label/ROOT"; - fsType = "btrfs"; + fsType = config.mods.drives.homeAndRootFsTypes; options = [ "noatime" "nodiratime" @@ -120,18 +184,102 @@ in { "/home" = { device = "/dev/disk/by-label/HOME"; - fsType = "btrfs"; + fsType = config.mods.drives.homeAndRootFsTypes; options = [ "noatime" "nodiratime" "discard" ]; }; - }; - # TODO make this convert to choice of drives -> thanks to funny types this doesn't work... - swapDevices = lib.mkIf config.mods.drives.useSwap.enable [ + } + ); + + swapDevices = lib.mkIf (config.mods.drives.useSwap && config.mods.drives.variant == "manual") [ {device = "/dev/disk/by-label/SWAP";} ]; + + disko.devices = lib.mkIf (config.mods.drives.variant == "disko") { + disk = + { + main = (lib.optionalAttrs config.mods.drives.defaultDrives.enable) { + device = "${config.mods.drives.disko.defaultDiskId}"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + root = { + start = "${ + if config.mods.drives.useSwap + then builtins.toString config.mods.drives.disko.swapAmount + else builtins.toString 1 + }G"; + end = "${builtins.toString config.mods.drives.disko.rootAmount}%"; + content = { + type = "filesystem"; + format = config.mods.drives.homeAndRootFsTypes; + mountpoint = "/"; + mountOptions = [ + "noatime" + "nodiratime" + "discard" + ]; + }; + }; + plainSwap = { + start = "1G"; + end = "33G"; + content = { + type = "swap"; + discardPolicy = "both"; + resumeDevice = true; + }; + }; + boot = { + start = "0G"; + end = "1G"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ + "rw" + "fmask=0022" + "dmask=0022" + "noatime" + ]; + }; + }; + home = { + start = "${builtins.toString config.mods.drives.disko.rootAmount}%"; + end = "100%"; + content = { + type = "filesystem"; + format = config.mods.drives.homeAndRootFsTypes; + mountpoint = "/home"; + mountOptions = [ + "noatime" + "nodiratime" + "discard" + ]; + }; + }; + }; + }; + }; + } + // builtins.listToAttrs ( + map ( + { + name, + drive, + }: { + name = "/" + name; + value = drive; + } + ) + config.mods.drives.extraDrives + ); + }; } ); } From 54174d9a95782976dc06e5105d694471f5a5106f Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 2 Mar 2025 16:10:52 +0100 Subject: [PATCH 215/330] Disable ANR for Hyprland (broken) --- modules/programs/hyprland/hyprland.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 503c992..5b16349 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -291,6 +291,8 @@ in { disable_hyprland_logo = true; swallow_regex = "^(.*)(kitty)(.*)$"; initial_workspace_tracking = 1; + # just doesn't work + enable_anr_dialog = false; }; cursor = { From bf3230ad43ce114d7121ac402a0b213c143af36b Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 2 Mar 2025 16:20:43 +0100 Subject: [PATCH 216/330] Fix documentation generation --- docs/src/README.md | 2 ++ modules/programs/drives.nix | 38 +++++++++++++++++++------------------ 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/docs/src/README.md b/docs/src/README.md index 2fc1e31..2da86c4 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -99,6 +99,8 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang # }; # } # ]; + # You can also use disko to format your disks on installation. + # Please refer to the Documentation about the drives module for an example. }; sops.enable = false; nextcloud.enable = false; diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix index 8331464..2df11b5 100644 --- a/modules/programs/drives.nix +++ b/modules/programs/drives.nix @@ -54,23 +54,25 @@ description = '' Use default drive config. - ## Manual variant - This config expects 4 different partitions on a single drive: - - boot partition with "BOOT" label and vfat format (filesystem configurable) - - swap partition with "SWAP" label - - root partition with "ROOT" label and ext4 format (filesystem configurable) - - home partition with "HOME" label and ext4 format (filesystem configurable) - - gpt disk format - NOTE: Any different configuration must be done manually with this turned off. + - Manual variant + This config expects 4 different partitions on a single drive: + - boot partition with BOOT label and vfat format (filesystem configurable) + - swap partition with SWAP label + - root partition with ROOT label and ext4 format (filesystem configurable) + - home partition with HOME label and ext4 format (filesystem configurable) + - gpt disk format - ## Disko variant - This config creates 4 different partitions on a single drive: - - boot partition with 1GB size and vfat format - - swap partition with 32GB (size configurable) - - root partition with 30% size and ext4 format (size and filesystem configurable) - - home partition with 70%~ size and ext4 format (size and filesystem configurable) - - gpt disk format - NOTE: Any different configuration must be done manually with this turned off. + NOTE: Any different configuration must be done manually with this turned off. + + - Disko variant + This config creates 4 different partitions on a single drive: + - boot partition with 1GB size and vfat format + - swap partition with 32GB (size configurable) + - root partition with 30% size and ext4 format (size and filesystem configurable) + - home partition with 70%~ size and ext4 format (size and filesystem configurable) + - gpt disk format + + NOTE: Any different configuration must be done manually with this turned off. ''; }; }; @@ -131,8 +133,8 @@ description = "The name, ID, UUID or similar for the default drive."; }; rootAmount = lib.mkOption { - default = 70; - example = 60; + default = 30; + example = 40; type = lib.types.number; description = "The percentage of the disk for root. (Home will take up the rest) (Only for disko)"; }; From 4c5ebe96910782dde3a39dafaad3ddafbffd92d3 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 2 Mar 2025 17:10:13 +0100 Subject: [PATCH 217/330] Update iso and installation instructions --- docs/src/README.md | 26 ++ example/flake.nix | 24 +- example/hosts/example/configuration.nix | 2 + flake.lock | 335 ++++++++++++++++-------- iso/configuration.nix | 8 +- 5 files changed, 275 insertions(+), 120 deletions(-) diff --git a/docs/src/README.md b/docs/src/README.md index 2da86c4..a667e34 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -197,6 +197,32 @@ as well as a few tools like gnome-disks, neovim, vscodium, a browser etc. Alternatively, you can use whatever NixOS installer and just install your config from there, just make sure to set the drive configuration before. +## Commands + +First, copy the readonly config from /iso/example-config to a location of your choice. + +```sh +cp /iso/example-config ~/config -r +``` + +Then configure as you please and choose a command below depending on your disk installation variant. + +Installation via manual configuration: + +```sh +sudo nixos-install --flake # --root +#example +#nixos-install --flake ~/config#globi --root /mnt +``` + +Installation via disko: + +```sh +sudo disko-install --flake # --disk +#example +#disko-install -- --flake ~/config#globi --disk main /dev/nvme0n1 +``` + # Modules This configuration features several modules that can be used as preconfigured "recipies". diff --git a/example/flake.nix b/example/flake.nix index 0ad08bc..c621766 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -2,10 +2,6 @@ description = "some dots"; inputs = { - dashvim.url = "github:DashieTM/DashVim"; - hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; - ironbar.url = "github:JakeStanger/ironbar?ref=3a1c60442382f970cdb7669814b6ef3594d9f048"; - anyrun.url = "github:Kirottu/anyrun"; nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; stable.url = "github:NixOs/nixpkgs/nixos-24.05"; dashNix = { @@ -13,10 +9,6 @@ inputs = { nixpkgs.follows = "nixpkgs"; stable.follows = "stable"; - dashvim.follows = "dashvim"; - hyprland.follows = "hyprland"; - ironbar.follows = "ironbar"; - anyrun.follows = "anyrun"; }; }; }; @@ -32,12 +24,28 @@ "https://hyprland.cachix.org" "https://anyrun.cachix.org" "https://cache.garnix.io" + "https://oxipaste.cachix.org" + "https://oxinoti.cachix.org" + "https://oxishut.cachix.org" + "https://oxidash.cachix.org" + "https://oxicalc.cachix.org" + "https://hyprdock.cachix.org" + "https://reset.cachix.org" + "https://chaotic-nyx.cachix.org/" ]; extra-trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + "oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc=" + "oxinoti.cachix.org-1:dvSoJl2Pjo5HMaNngdBbSaixK9BSf2N8gzjP2MdGvfc=" + "oxishut.cachix.org-1:axyAGF3XMh1IyMAW4UMbQCdMNovDH0KH6hqLLRJH8jU=" + "oxidash.cachix.org-1:5K2FNHp7AS8VF7LmQkJAUG/dm6UHCz4ngshBVbjFX30=" + "oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ=" + "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" + "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" + "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" ]; }; } diff --git a/example/hosts/example/configuration.nix b/example/hosts/example/configuration.nix index c39c104..b08e1c0 100644 --- a/example/hosts/example/configuration.nix +++ b/example/hosts/example/configuration.nix @@ -20,6 +20,8 @@ mods = { # default disk config has root home boot and swap partition, overwrite if you want something different drives = { + # WARNING: Only do this when installing for the first time, as I am not sure if disko would format your disk + variant = "disko"; # default assumes ROOT, BOOT, HOME and SWAP labaled drives exist # for an example without HOME see below #defaultDrives.enable = false; diff --git a/flake.lock b/flake.lock index 98a66e3..e49b268 100644 --- a/flake.lock +++ b/flake.lock @@ -258,6 +258,25 @@ "type": "github" } }, + "disko": { + "inputs": { + "nixpkgs": "nixpkgs_5" + }, + "locked": { + "lastModified": 1736864502, + "narHash": "sha256-ItkIZyebGvNH2dK9jVGzJHGPtb6BSWLN8Gmef16NeY0=", + "owner": "nix-community", + "repo": "disko", + "rev": "0141aabed359f063de7413f80d906e1d98c0c123", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "latest", + "repo": "disko", + "type": "github" + } + }, "fenix": { "inputs": { "nixpkgs": [ @@ -363,6 +382,27 @@ } }, "flake-parts_10": { + "inputs": { + "nixpkgs-lib": [ + "oxishut", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_11": { "inputs": { "nixpkgs-lib": [ "reset", @@ -383,7 +423,7 @@ "type": "github" } }, - "flake-parts_11": { + "flake-parts_12": { "inputs": { "nixpkgs-lib": [ "reset-plugins", @@ -404,7 +444,7 @@ "type": "github" } }, - "flake-parts_12": { + "flake-parts_13": { "inputs": { "nixpkgs-lib": [ "stylix", @@ -490,16 +530,16 @@ "flake-parts_5": { "inputs": { "nixpkgs-lib": [ - "oxicalc", + "nur", "nixpkgs" ] }, "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", "type": "github" }, "original": { @@ -511,7 +551,7 @@ "flake-parts_6": { "inputs": { "nixpkgs-lib": [ - "oxidash", + "oxicalc", "nixpkgs" ] }, @@ -532,7 +572,7 @@ "flake-parts_7": { "inputs": { "nixpkgs-lib": [ - "oxinoti", + "oxidash", "nixpkgs" ] }, @@ -553,16 +593,16 @@ "flake-parts_8": { "inputs": { "nixpkgs-lib": [ - "oxipaste", + "oxinoti", "nixpkgs" ] }, "locked": { - "lastModified": 1722555600, - "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", "type": "github" }, "original": { @@ -574,16 +614,16 @@ "flake-parts_9": { "inputs": { "nixpkgs-lib": [ - "oxishut", + "oxipaste", "nixpkgs" ] }, "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "lastModified": 1722555600, + "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", "type": "github" }, "original": { @@ -1019,7 +1059,7 @@ "hyprdock": { "inputs": { "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_6" }, "locked": { "lastModified": 1733264848, @@ -1074,7 +1114,7 @@ "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_7", "pre-commit-hooks": "pre-commit-hooks", "systems": "systems_4", "xdph": "xdph" @@ -1344,7 +1384,7 @@ }, "naersk": { "inputs": { - "nixpkgs": "nixpkgs_7" + "nixpkgs": "nixpkgs_8" }, "locked": { "lastModified": 1736429655, @@ -1449,6 +1489,22 @@ } }, "nixpkgs_10": { + "locked": { + "lastModified": 1740828860, + "narHash": "sha256-cjbHI+zUzK5CPsQZqMhE3npTyYFt9tJ3+ohcfaOF/WM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "303bd8071377433a2d8f76e684ec773d70c5b642", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -1464,22 +1520,6 @@ "type": "github" } }, - "nixpkgs_11": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_12": { "locked": { "lastModified": 1716137900, @@ -1513,22 +1553,6 @@ } }, "nixpkgs_14": { - "locked": { - "lastModified": 1723637854, - "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_15": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -1544,7 +1568,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_15": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1560,13 +1584,29 @@ "type": "github" } }, - "nixpkgs_17": { + "nixpkgs_16": { "locked": { - "lastModified": 1739446958, - "narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=", + "lastModified": 1723637854, + "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2ff53fe64443980e139eaa286017f53f88336dd0", + "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_17": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", "type": "github" }, "original": { @@ -1578,11 +1618,11 @@ }, "nixpkgs_18": { "locked": { - "lastModified": 1736320768, - "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", "type": "github" }, "original": { @@ -1594,11 +1634,11 @@ }, "nixpkgs_19": { "locked": { - "lastModified": 1716948383, - "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", + "lastModified": 1739446958, + "narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", + "rev": "2ff53fe64443980e139eaa286017f53f88336dd0", "type": "github" }, "original": { @@ -1625,6 +1665,38 @@ } }, "nixpkgs_20": { + "locked": { + "lastModified": 1736320768, + "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_21": { + "locked": { + "lastModified": 1716948383, + "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_22": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1640,7 +1712,7 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_23": { "locked": { "lastModified": 1731763621, "narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=", @@ -1656,7 +1728,7 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_24": { "locked": { "lastModified": 1740367490, "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", @@ -1672,7 +1744,7 @@ "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_25": { "locked": { "lastModified": 1740367490, "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", @@ -1721,6 +1793,22 @@ } }, "nixpkgs_5": { + "locked": { + "lastModified": 1736241350, + "narHash": "sha256-CHd7yhaDigUuJyDeX0SADbTM9FXfiWaeNyY34FL1wQU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8c9fd3e564728e90829ee7dbac6edc972971cd0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { "locked": { "lastModified": 1716330097, "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", @@ -1736,7 +1824,7 @@ "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_7": { "locked": { "lastModified": 1739020877, "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=", @@ -1752,7 +1840,7 @@ "type": "github" } }, - "nixpkgs_7": { + "nixpkgs_8": { "locked": { "lastModified": 1738297584, "narHash": "sha256-AYvaFBzt8dU0fcSK2jKD0Vg23K2eIRxfsVXIPCW9a0E=", @@ -1766,7 +1854,7 @@ "type": "indirect" } }, - "nixpkgs_8": { + "nixpkgs_9": { "locked": { "lastModified": 1740367490, "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", @@ -1782,22 +1870,6 @@ "type": "github" } }, - "nixpkgs_9": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixvim": { "inputs": { "devshell": "devshell", @@ -1826,12 +1898,32 @@ }, "nur": { "inputs": { - "flake-parts": "flake-parts_12", + "flake-parts": "flake-parts_5", + "nixpkgs": "nixpkgs_10", + "treefmt-nix": "treefmt-nix_2" + }, + "locked": { + "lastModified": 1740926717, + "narHash": "sha256-KBCQdP1rSQAXjy1ZNf68foSsqnT3LXJliMBGLW+SNsU=", + "owner": "nix-community", + "repo": "NUR", + "rev": "1788063f2dfe4bc8ed0d643abb1df2771446b7af", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "nur_2": { + "inputs": { + "flake-parts": "flake-parts_13", "nixpkgs": [ "stylix", "nixpkgs" ], - "treefmt-nix": "treefmt-nix_2" + "treefmt-nix": "treefmt-nix_3" }, "locked": { "lastModified": 1740408283, @@ -1873,8 +1965,8 @@ }, "oxicalc": { "inputs": { - "flake-parts": "flake-parts_5", - "nixpkgs": "nixpkgs_9" + "flake-parts": "flake-parts_6", + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1733264508, @@ -1892,8 +1984,8 @@ }, "oxidash": { "inputs": { - "flake-parts": "flake-parts_6", - "nixpkgs": "nixpkgs_10", + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_12", "rust-overlay": "rust-overlay_2" }, "locked": { @@ -1912,8 +2004,8 @@ }, "oxinoti": { "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_12", + "flake-parts": "flake-parts_8", + "nixpkgs": "nixpkgs_14", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -1932,8 +2024,8 @@ }, "oxipaste": { "inputs": { - "flake-parts": "flake-parts_8", - "nixpkgs": "nixpkgs_14" + "flake-parts": "flake-parts_9", + "nixpkgs": "nixpkgs_16" }, "locked": { "lastModified": 1737624143, @@ -1951,8 +2043,8 @@ }, "oxishut": { "inputs": { - "flake-parts": "flake-parts_9", - "nixpkgs": "nixpkgs_15", + "flake-parts": "flake-parts_10", + "nixpkgs": "nixpkgs_17", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -1994,8 +2086,8 @@ }, "reset": { "inputs": { - "flake-parts": "flake-parts_10", - "nixpkgs": "nixpkgs_17", + "flake-parts": "flake-parts_11", + "nixpkgs": "nixpkgs_19", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -2014,8 +2106,8 @@ }, "reset-plugins": { "inputs": { - "flake-parts": "flake-parts_11", - "nixpkgs": "nixpkgs_19", + "flake-parts": "flake-parts_12", + "nixpkgs": "nixpkgs_21", "rust-overlay": "rust-overlay_6" }, "locked": { @@ -2039,12 +2131,14 @@ "base16": "base16", "chaoticNyx": "chaoticNyx", "dashvim": "dashvim", + "disko": "disko", "home-manager": "home-manager_3", "hyprdock": "hyprdock", "hyprland": "hyprland", "ironbar": "ironbar", "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_8", + "nixpkgs": "nixpkgs_9", + "nur": "nur", "oxicalc": "oxicalc", "oxidash": "oxidash", "oxinoti": "oxinoti", @@ -2099,7 +2193,7 @@ "rust-overlay_2": { "inputs": { "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_13" }, "locked": { "lastModified": 1716171463, @@ -2118,7 +2212,7 @@ "rust-overlay_3": { "inputs": { "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_13" + "nixpkgs": "nixpkgs_15" }, "locked": { "lastModified": 1716171463, @@ -2137,7 +2231,7 @@ "rust-overlay_4": { "inputs": { "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_16" + "nixpkgs": "nixpkgs_18" }, "locked": { "lastModified": 1716171463, @@ -2155,7 +2249,7 @@ }, "rust-overlay_5": { "inputs": { - "nixpkgs": "nixpkgs_18" + "nixpkgs": "nixpkgs_20" }, "locked": { "lastModified": 1739586408, @@ -2174,7 +2268,7 @@ "rust-overlay_6": { "inputs": { "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_20" + "nixpkgs": "nixpkgs_22" }, "locked": { "lastModified": 1717035469, @@ -2192,7 +2286,7 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_21" + "nixpkgs": "nixpkgs_23" }, "locked": { "lastModified": 1739262228, @@ -2236,8 +2330,8 @@ "git-hooks": "git-hooks_2", "gnome-shell": "gnome-shell", "home-manager": "home-manager_4", - "nixpkgs": "nixpkgs_22", - "nur": "nur", + "nixpkgs": "nixpkgs_24", + "nur": "nur_2", "systems": "systems_9", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", @@ -2499,6 +2593,27 @@ } }, "treefmt-nix_2": { + "inputs": { + "nixpkgs": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_3": { "inputs": { "nixpkgs": [ "stylix", @@ -2563,7 +2678,7 @@ }, "zen-browser": { "inputs": { - "nixpkgs": "nixpkgs_23" + "nixpkgs": "nixpkgs_25" }, "locked": { "lastModified": 1740442108, diff --git a/iso/configuration.nix b/iso/configuration.nix index a17ba81..0f6247d 100644 --- a/iso/configuration.nix +++ b/iso/configuration.nix @@ -3,11 +3,14 @@ lib, modulesPath, self, + inputs, ... -}: { +}: let + system = "x86_64-linux"; +in { imports = ["${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"]; nixpkgs.hostPlatform = { - system = "x86_64-linux"; + system = system; }; environment.systemPackages = with pkgs; [ @@ -19,6 +22,7 @@ firefox kitty gnome-disk-utility + inputs.disko.packages.${system}.disko-install ]; networking = { wireless.enable = false; From 24acd1b1a3ae491f9e4e394e96332073cfb3adcc Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 3 Mar 2025 08:01:08 +0100 Subject: [PATCH 218/330] Include fsautocomplete again --- modules/programs/coding.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index c26d365..f69835d 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -229,7 +229,7 @@ netcoredbg #fsharp fsharp - #fsautocomplete + fsautocomplete ]; example = []; type = with lib.types; listOf package; From dc83628ac968e8da08718ef15148c441a5f72380 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 10 Mar 2025 09:18:02 +0100 Subject: [PATCH 219/330] Update deps --- flake.lock | 722 +++++++++++++++++++++++++---------------------------- 1 file changed, 335 insertions(+), 387 deletions(-) diff --git a/flake.lock b/flake.lock index e49b268..8f2283a 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1739004667, - "narHash": "sha256-t/KaeHEgzh225HUdAiHXRsgDeyDrBCMTg0LjR73v3Nw=", + "lastModified": 1740777046, + "narHash": "sha256-hPp+DnTYjE6M9Mdau7inbqMeLR1SpSPVyuxd+nabwaA=", "owner": "KZDKM", "repo": "Hyprspace", - "rev": "ac55bbdb6cee760af9315899b5b187a40ce43e46", + "rev": "b5c8adb16f4729572c67883da1bcb46e11f195d6", "type": "github" }, "original": { @@ -61,11 +61,11 @@ ] }, "locked": { - "lastModified": 1739298463, - "narHash": "sha256-oAFv9jKwwA7d7384d2LeywDSgwhvb3ZnrwbfoWPhXsI=", + "lastModified": 1741282631, + "narHash": "sha256-jZE1CmQ53uN1Gq4FjaLFzSSjDqzL0pG4mdRbjBqSmho=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "f239e5aadd6d23c48e085c2de3397e2058e54d16", + "rev": "81498562d0f53e613d30368bb5b076784fa86f80", "type": "github" }, "original": { @@ -177,6 +177,26 @@ "type": "github" } }, + "blink": { + "inputs": { + "fenix": "fenix_2", + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1741016004, + "narHash": "sha256-2iNZP6Znrk6/orVEKR8VCYWIr71L0cwaRMWjRNbvAjA=", + "owner": "Saghen", + "repo": "blink.cmp", + "rev": "273bb364d8601dd72ca0b657079f4624bc76c3af", + "type": "github" + }, + "original": { + "owner": "Saghen", + "repo": "blink.cmp", + "type": "github" + } + }, "chaoticNyx": { "inputs": { "fenix": "fenix", @@ -186,11 +206,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1740408177, - "narHash": "sha256-baFhGvCncDj3zJlDODJESVE83lV5+tGOrvgwQczzp84=", + "lastModified": 1741572691, + "narHash": "sha256-CsX+uf0w7FGx/bMraCBzU9BQu9A3iaWnY7nV/Sbq6Js=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "62e2d6c89e4310c7cb56ee5f6bbdc280072dd082", + "rev": "ebc0b86d16f902b79d6345a4ec365716b4495f3f", "type": "github" }, "original": { @@ -202,11 +222,11 @@ }, "crane": { "locked": { - "lastModified": 1737689766, - "narHash": "sha256-ivVXYaYlShxYoKfSo5+y5930qMKKJ8CLcAoIBPQfJ6s=", + "lastModified": 1739936662, + "narHash": "sha256-x4syUjNUuRblR07nDPeLDP7DpphaBVbUaSoeZkFbGSk=", "owner": "ipetkov", "repo": "crane", - "rev": "6fe74265bbb6d016d663b1091f015e2976c4a527", + "rev": "19de14aaeb869287647d9461cbd389187d8ecdb7", "type": "github" }, "original": { @@ -218,16 +238,17 @@ "dashvim": { "inputs": { "base16": "base16_2", - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_3", + "blink": "blink", + "flake-parts": "flake-parts_3", + "nixpkgs": "nixpkgs_4", "nixvim": "nixvim" }, "locked": { - "lastModified": 1740315793, - "narHash": "sha256-GXmi3T2Lj9a2LwfADZ82WiZTgPTH+vbUwj4647Bjeqc=", + "lastModified": 1741038146, + "narHash": "sha256-j+GXUXWx88sAdRSRAXdvixnJxfDH8rWcQ473MuhklJ0=", "owner": "DashieTM", "repo": "DashVim", - "rev": "752206afc9a03954b221d0a8880151636d8dbf53", + "rev": "cd82156b3b32a6bbb06bc4a4c16e0303d523e655", "type": "github" }, "original": { @@ -236,31 +257,9 @@ "type": "github" } }, - "devshell": { - "inputs": { - "nixpkgs": [ - "dashvim", - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1735644329, - "narHash": "sha256-tO3HrHriyLvipc4xr+Ewtdlo7wM1OjXNjlWRgmM7peY=", - "owner": "numtide", - "repo": "devshell", - "rev": "f7795ede5b02664b57035b3b757876703e2c3eac", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, "disko": { "inputs": { - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_6" }, "locked": { "lastModified": 1736864502, @@ -286,11 +285,34 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1740292204, - "narHash": "sha256-ZbptkmqaenRhUKsodSEcVzBw+kXZ8DcZpTGutU1HEiI=", + "lastModified": 1741329193, + "narHash": "sha256-niB60+AZBnp535cwvu5jU+K/cKfJeaWqt3GtrDMlLU0=", "owner": "nix-community", "repo": "fenix", - "rev": "93d59130e3fc121f927c03e406142df8d544b901", + "rev": "232581de4261157f316848773574d1f5895805f3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_2": { + "inputs": { + "nixpkgs": [ + "dashvim", + "blink", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src_2" + }, + "locked": { + "lastModified": 1734676450, + "narHash": "sha256-iwcxhTVe4h5TqW0HsNiOQP27eMBmbBshF+q2UjEy5aU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "46e19fa0eb3260b2c3ee5b2cf89e73343c1296ab", "type": "github" }, "original": { @@ -316,20 +338,6 @@ } }, "flake-compat": { - "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", - "revCount": 69, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" - } - }, - "flake-compat_2": { "flake": false, "locked": { "lastModified": 1696426674, @@ -345,7 +353,7 @@ "type": "github" } }, - "flake-compat_3": { + "flake-compat_2": { "locked": { "lastModified": 1733328505, "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", @@ -382,6 +390,27 @@ } }, "flake-parts_10": { + "inputs": { + "nixpkgs-lib": [ + "oxipaste", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1722555600, + "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_11": { "inputs": { "nixpkgs-lib": [ "oxishut", @@ -402,7 +431,7 @@ "type": "github" } }, - "flake-parts_11": { + "flake-parts_12": { "inputs": { "nixpkgs-lib": [ "reset", @@ -423,7 +452,7 @@ "type": "github" } }, - "flake-parts_12": { + "flake-parts_13": { "inputs": { "nixpkgs-lib": [ "reset-plugins", @@ -444,7 +473,7 @@ "type": "github" } }, - "flake-parts_13": { + "flake-parts_14": { "inputs": { "nixpkgs-lib": [ "stylix", @@ -471,11 +500,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1738453229, - "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", "type": "github" }, "original": { @@ -485,6 +514,24 @@ } }, "flake-parts_3": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1740872218, + "narHash": "sha256-ZaMw0pdoUKigLpv9HiNDH2Pjnosg7NBYMJlHTIsHEUo=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "3876f6b87db82f33775b1ef5ea343986105db764", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { "inputs": { "nixpkgs-lib": [ "dashvim", @@ -506,7 +553,7 @@ "type": "github" } }, - "flake-parts_4": { + "flake-parts_5": { "inputs": { "nixpkgs-lib": [ "hyprdock", @@ -527,7 +574,7 @@ "type": "github" } }, - "flake-parts_5": { + "flake-parts_6": { "inputs": { "nixpkgs-lib": [ "nur", @@ -548,7 +595,7 @@ "type": "github" } }, - "flake-parts_6": { + "flake-parts_7": { "inputs": { "nixpkgs-lib": [ "oxicalc", @@ -569,7 +616,7 @@ "type": "github" } }, - "flake-parts_7": { + "flake-parts_8": { "inputs": { "nixpkgs-lib": [ "oxidash", @@ -590,7 +637,7 @@ "type": "github" } }, - "flake-parts_8": { + "flake-parts_9": { "inputs": { "nixpkgs-lib": [ "oxinoti", @@ -611,27 +658,6 @@ "type": "github" } }, - "flake-parts_9": { - "inputs": { - "nixpkgs-lib": [ - "oxipaste", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1722555600, - "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, "flake-schemas": { "locked": { "lastModified": 1721999734, @@ -806,40 +832,12 @@ } }, "git-hooks": { - "inputs": { - "flake-compat": [ - "dashvim", - "nixvim", - "flake-compat" - ], - "gitignore": "gitignore", - "nixpkgs": [ - "dashvim", - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1737465171, - "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, - "git-hooks_2": { "inputs": { "flake-compat": [ "stylix", "flake-compat" ], - "gitignore": "gitignore_3", + "gitignore": "gitignore_2", "nixpkgs": [ "stylix", "nixpkgs" @@ -860,29 +858,6 @@ } }, "gitignore": { - "inputs": { - "nixpkgs": [ - "dashvim", - "nixvim", - "git-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_2": { "inputs": { "nixpkgs": [ "hyprland", @@ -904,7 +879,7 @@ "type": "github" } }, - "gitignore_3": { + "gitignore_2": { "inputs": { "nixpkgs": [ "stylix", @@ -951,11 +926,11 @@ ] }, "locked": { - "lastModified": 1740318342, - "narHash": "sha256-fjr9+3Iru6O5qE+2oERQkabqAUXx4awm0+i2MBcta1U=", + "lastModified": 1741393072, + "narHash": "sha256-+Su28oU1FBvptj1AO0geJP+BcIJghSVxaNFagvW5K2M=", "owner": "nix-community", "repo": "home-manager", - "rev": "b5ab2c7fdaa807cf425066ab7cd34b073946b1ca", + "rev": "d2c014e1c73195d1958abec0c5ca6112b07b79da", "type": "github" }, "original": { @@ -967,17 +942,15 @@ "home-manager_2": { "inputs": { "nixpkgs": [ - "dashvim", - "nixvim", "nixpkgs" ] }, "locked": { - "lastModified": 1738878603, - "narHash": "sha256-fmhq8B3MvQLawLbMO+LWLcdC2ftLMmwSk+P29icJ3tE=", + "lastModified": 1741579508, + "narHash": "sha256-skRbH+UF2ES+msEa+KWi7AQFX73S+QsGlPsyCU6XyE0=", "owner": "nix-community", "repo": "home-manager", - "rev": "433799271274c9f2ab520a49527ebfe2992dcfbd", + "rev": "744f749dd6fbc1489591ea370b95156858629cb9", "type": "github" }, "original": { @@ -987,26 +960,6 @@ } }, "home-manager_3": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1740494361, - "narHash": "sha256-Dd/GhJ9qKmUwuhgt/PAROG8J6YdU2ZjtJI9SQX5sVQI=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "74f0a8546e3f2458c870cf90fc4b38ac1f498b17", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_4": { "inputs": { "nixpkgs": [ "stylix", @@ -1058,8 +1011,8 @@ }, "hyprdock": { "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_6" + "flake-parts": "flake-parts_5", + "nixpkgs": "nixpkgs_7" }, "locked": { "lastModified": 1733264848, @@ -1114,17 +1067,17 @@ "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_8", "pre-commit-hooks": "pre-commit-hooks", "systems": "systems_4", "xdph": "xdph" }, "locked": { - "lastModified": 1740492189, - "narHash": "sha256-ulVWP6hjMT+aByXlqjaLSEywkfw8lbTwVg4K9J/j5f0=", + "lastModified": 1741461862, + "narHash": "sha256-oq8drhL7ejjGjcv2Hg5gdESbnCMgv+vVsxiKHNnHmBQ=", "ref": "refs/heads/main", - "rev": "f0850905f0275922340035f62b6d808c2980ceda", - "revCount": 5843, + "rev": "d30cc19d253a3db784ad10c3084f58cbb52d325a", + "revCount": 5874, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -1244,11 +1197,11 @@ ] }, "locked": { - "lastModified": 1739048914, - "narHash": "sha256-vd5rJBTmp2w7SDgfv23Zcd84ktI5eDA7e5UBzx+pKrU=", + "lastModified": 1741191527, + "narHash": "sha256-kM+11Nch47Xwfgtw2EpRitJuORy4miwoMuRi5tyMBDY=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "a7334904d591f38757c46fbe2ab68651877d9099", + "rev": "72df3861f1197e41b078faa3e38eedd60e00018d", "type": "github" }, "original": { @@ -1269,11 +1222,11 @@ ] }, "locked": { - "lastModified": 1739891528, - "narHash": "sha256-h8HOCZ/rw2Buzku+GKF77VXxrGjCSOQkLhptiEKMYg0=", + "lastModified": 1741123584, + "narHash": "sha256-mprerMlucqtirmbx6L3VoFnF2bGYc2WSUCj7tuc6xTQ=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "61a5382f4b1ab578064d470b1b3d3f0df396b8ba", + "rev": "6b0154b183f9539097f13af9b5da78ca24da6df2", "type": "github" }, "original": { @@ -1294,11 +1247,11 @@ ] }, "locked": { - "lastModified": 1739049028, - "narHash": "sha256-RleJp7LYbr6s+M1xgbmhtBs+fYa3ZdIiF7+QalJ4D1g=", + "lastModified": 1739870480, + "narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "04146df74a8d5ec0b579657307be01f1e241125f", + "rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b", "type": "github" }, "original": { @@ -1317,11 +1270,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1740229415, - "narHash": "sha256-9x2r4mCmyZelgdlcd3Zla0bQp/dQhTvjMyb6OO1CMWY=", + "lastModified": 1741037542, + "narHash": "sha256-ZyodYB5R2KJzTZjIHZMA8AwDfaZIuOD/5vDP2VvrE1Q=", "owner": "JakeStanger", "repo": "ironbar", - "rev": "9b67719cac7b66727b16fe7a490039510fcc1965", + "rev": "00e5ac8191edd5e039c4ea1b96845b14047298b2", "type": "github" }, "original": { @@ -1369,11 +1322,11 @@ ] }, "locked": { - "lastModified": 1740269380, - "narHash": "sha256-l+zB5a39MJp4Olc4YxP7GChFXmNZIhoXaiSS6QRXa9o=", + "lastModified": 1741338475, + "narHash": "sha256-+vAXiFRQ6ykBX7iFI20rV+xMyOVNtULbFWy6BHKPP+0=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "11ba89d13831cb399194310304fffb025081c674", + "rev": "1821e6ae980ff6175d28065ad6d0c87560d2b8ea", "type": "github" }, "original": { @@ -1384,14 +1337,14 @@ }, "naersk": { "inputs": { - "nixpkgs": "nixpkgs_8" + "nixpkgs": "nixpkgs_9" }, "locked": { - "lastModified": 1736429655, - "narHash": "sha256-BwMekRuVlSB9C0QgwKMICiJ5EVbLGjfe4qyueyNQyGI=", + "lastModified": 1739824009, + "narHash": "sha256-fcNrCMUWVLMG3gKC5M9CBqVOAnJtyRvGPxptQFl5mVg=", "owner": "nix-community", "repo": "naersk", - "rev": "0621e47bd95542b8e1ce2ee2d65d6a1f887a13ce", + "rev": "e5130d37369bfa600144c2424270c96f0ef0e11d", "type": "github" }, "original": { @@ -1400,28 +1353,6 @@ "type": "github" } }, - "nix-darwin": { - "inputs": { - "nixpkgs": [ - "dashvim", - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1738743987, - "narHash": "sha256-O3bnAfsObto6l2tQOmQlrO6Z2kD6yKwOWfs7pA0CpOc=", - "owner": "lnl7", - "repo": "nix-darwin", - "rev": "ae406c04577ff9a64087018c79b4fdc02468c87c", - "type": "github" - }, - "original": { - "owner": "lnl7", - "repo": "nix-darwin", - "type": "github" - } - }, "nix-flatpak": { "locked": { "lastModified": 1739444422, @@ -1478,27 +1409,39 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1738452942, - "narHash": "sha256-vJzFZGaCpnmo7I6i416HaBLpC+hvcURh/BQwROcGIp8=", + "lastModified": 1733096140, + "narHash": "sha256-1qRH7uAUsyQI7R1Uwl4T+XvdNv778H0Nb5njNrqvylY=", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz" + "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" }, "original": { "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz" + "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" + } + }, + "nixpkgs-lib_2": { + "locked": { + "lastModified": 1740872140, + "narHash": "sha256-3wHafybyRfpUCLoE8M+uPVZinImg3xX+Nm6gEfN3G8I=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/6d3702243441165a03f699f64416f635220f4f15.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/6d3702243441165a03f699f64416f635220f4f15.tar.gz" } }, "nixpkgs_10": { "locked": { - "lastModified": 1740828860, - "narHash": "sha256-cjbHI+zUzK5CPsQZqMhE3npTyYFt9tJ3+ohcfaOF/WM=", - "owner": "nixos", + "lastModified": 1741379970, + "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=", + "owner": "NixOs", "repo": "nixpkgs", - "rev": "303bd8071377433a2d8f76e684ec773d70c5b642", + "rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOs", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -1506,15 +1449,15 @@ }, "nixpkgs_11": { "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", + "lastModified": 1741379970, + "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -1537,6 +1480,22 @@ } }, "nixpkgs_13": { + "locked": { + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1552,7 +1511,7 @@ "type": "github" } }, - "nixpkgs_14": { + "nixpkgs_15": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -1568,7 +1527,7 @@ "type": "github" } }, - "nixpkgs_15": { + "nixpkgs_16": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1584,7 +1543,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_17": { "locked": { "lastModified": 1723637854, "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", @@ -1600,7 +1559,7 @@ "type": "github" } }, - "nixpkgs_17": { + "nixpkgs_18": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -1616,7 +1575,7 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_19": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1632,7 +1591,23 @@ "type": "github" } }, - "nixpkgs_19": { + "nixpkgs_2": { + "locked": { + "lastModified": 1741379970, + "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_20": { "locked": { "lastModified": 1739446958, "narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=", @@ -1648,23 +1623,7 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1740367490, - "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0196c0175e9191c474c26ab5548db27ef5d34b05", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_20": { + "nixpkgs_21": { "locked": { "lastModified": 1736320768, "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", @@ -1680,7 +1639,7 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_22": { "locked": { "lastModified": 1716948383, "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", @@ -1696,7 +1655,7 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_23": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1712,7 +1671,7 @@ "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_24": { "locked": { "lastModified": 1731763621, "narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=", @@ -1728,7 +1687,7 @@ "type": "github" } }, - "nixpkgs_24": { + "nixpkgs_25": { "locked": { "lastModified": 1740367490, "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", @@ -1744,13 +1703,13 @@ "type": "github" } }, - "nixpkgs_25": { + "nixpkgs_26": { "locked": { - "lastModified": 1740367490, - "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", + "lastModified": 1741379970, + "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "0196c0175e9191c474c26ab5548db27ef5d34b05", + "rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f", "type": "github" }, "original": { @@ -1762,11 +1721,27 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1739866667, - "narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=", + "lastModified": 1736166416, + "narHash": "sha256-U47xeACNBpkSO6IcCm0XvahsVXpJXzjPIQG7TZlOToU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680", + "rev": "b30f97d8c32d804d2d832ee837d0f1ca0695faa5", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1740828860, + "narHash": "sha256-cjbHI+zUzK5CPsQZqMhE3npTyYFt9tJ3+ohcfaOF/WM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "303bd8071377433a2d8f76e684ec773d70c5b642", "type": "github" }, "original": { @@ -1776,7 +1751,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1738797219, "narHash": "sha256-KRwX9Z1XavpgeSDVM/THdFd6uH8rNm/6R+7kIbGa+2s=", @@ -1792,7 +1767,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { "lastModified": 1736241350, "narHash": "sha256-CHd7yhaDigUuJyDeX0SADbTM9FXfiWaeNyY34FL1wQU=", @@ -1808,7 +1783,7 @@ "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_7": { "locked": { "lastModified": 1716330097, "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", @@ -1824,13 +1799,13 @@ "type": "github" } }, - "nixpkgs_7": { + "nixpkgs_8": { "locked": { - "lastModified": 1739020877, - "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=", + "lastModified": 1741246872, + "narHash": "sha256-Q6pMP4a9ed636qilcYX8XUguvKl/0/LGXhHcRI91p0U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a79cfe0ebd24952b580b1cf08cd906354996d547", + "rev": "10069ef4cf863633f57238f179a0297de84bd8d3", "type": "github" }, "original": { @@ -1840,13 +1815,13 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_9": { "locked": { - "lastModified": 1738297584, - "narHash": "sha256-AYvaFBzt8dU0fcSK2jKD0Vg23K2eIRxfsVXIPCW9a0E=", + "lastModified": 1740547748, + "narHash": "sha256-Ly2fBL1LscV+KyCqPRufUBuiw+zmWrlJzpWOWbahplg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9189ac18287c599860e878e905da550aa6dec1cd", + "rev": "3a05eebede89661660945da1f151959900903b6a", "type": "github" }, "original": { @@ -1854,40 +1829,18 @@ "type": "indirect" } }, - "nixpkgs_9": { - "locked": { - "lastModified": 1740367490, - "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", - "owner": "NixOs", - "repo": "nixpkgs", - "rev": "0196c0175e9191c474c26ab5548db27ef5d34b05", - "type": "github" - }, - "original": { - "owner": "NixOs", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixvim": { "inputs": { - "devshell": "devshell", - "flake-compat": "flake-compat", - "flake-parts": "flake-parts_3", - "git-hooks": "git-hooks", - "home-manager": "home-manager_2", - "nix-darwin": "nix-darwin", - "nixpkgs": "nixpkgs_4", - "nuschtosSearch": "nuschtosSearch", - "treefmt-nix": "treefmt-nix" + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_5", + "nuschtosSearch": "nuschtosSearch" }, "locked": { - "lastModified": 1739902813, - "narHash": "sha256-BgOQcKKz7VNvSHIbBllHisv32HvF3W3ALF9sdnC++V8=", + "lastModified": 1740520037, + "narHash": "sha256-TpZMYjOre+6GhKDVHFwoW2iBWqpNQppQTuqIAo+OBV8=", "owner": "nix-community", "repo": "nixvim", - "rev": "0ab9947137cd034ec64eb5cd9ede94e53af21f50", + "rev": "6f8d8f7aee84f377f52c8bb58385015f9168a666", "type": "github" }, "original": { @@ -1898,16 +1851,16 @@ }, "nur": { "inputs": { - "flake-parts": "flake-parts_5", - "nixpkgs": "nixpkgs_10", - "treefmt-nix": "treefmt-nix_2" + "flake-parts": "flake-parts_6", + "nixpkgs": "nixpkgs_11", + "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1740926717, - "narHash": "sha256-KBCQdP1rSQAXjy1ZNf68foSsqnT3LXJliMBGLW+SNsU=", + "lastModified": 1741581473, + "narHash": "sha256-GN1Jkhs5jBJnMzbY5ok8fK07Vr/RSOxOL+QMSx5mAHA=", "owner": "nix-community", "repo": "NUR", - "rev": "1788063f2dfe4bc8ed0d643abb1df2771446b7af", + "rev": "05607425540ace50b41392637ea33b23bff0d2c7", "type": "github" }, "original": { @@ -1918,12 +1871,12 @@ }, "nur_2": { "inputs": { - "flake-parts": "flake-parts_13", + "flake-parts": "flake-parts_14", "nixpkgs": [ "stylix", "nixpkgs" ], - "treefmt-nix": "treefmt-nix_3" + "treefmt-nix": "treefmt-nix_2" }, "locked": { "lastModified": 1740408283, @@ -1965,8 +1918,8 @@ }, "oxicalc": { "inputs": { - "flake-parts": "flake-parts_6", - "nixpkgs": "nixpkgs_11" + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1733264508, @@ -1984,8 +1937,8 @@ }, "oxidash": { "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_12", + "flake-parts": "flake-parts_8", + "nixpkgs": "nixpkgs_13", "rust-overlay": "rust-overlay_2" }, "locked": { @@ -2004,8 +1957,8 @@ }, "oxinoti": { "inputs": { - "flake-parts": "flake-parts_8", - "nixpkgs": "nixpkgs_14", + "flake-parts": "flake-parts_9", + "nixpkgs": "nixpkgs_15", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -2024,8 +1977,8 @@ }, "oxipaste": { "inputs": { - "flake-parts": "flake-parts_9", - "nixpkgs": "nixpkgs_16" + "flake-parts": "flake-parts_10", + "nixpkgs": "nixpkgs_17" }, "locked": { "lastModified": 1737624143, @@ -2043,8 +1996,8 @@ }, "oxishut": { "inputs": { - "flake-parts": "flake-parts_10", - "nixpkgs": "nixpkgs_17", + "flake-parts": "flake-parts_11", + "nixpkgs": "nixpkgs_18", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -2063,19 +2016,19 @@ }, "pre-commit-hooks": { "inputs": { - "flake-compat": "flake-compat_2", - "gitignore": "gitignore_2", + "flake-compat": "flake-compat", + "gitignore": "gitignore", "nixpkgs": [ "hyprland", "nixpkgs" ] }, "locked": { - "lastModified": 1737465171, - "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", + "lastModified": 1741379162, + "narHash": "sha256-srpAbmJapkaqGRE3ytf3bj4XshspVR5964OX5LfjDWc=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", + "rev": "b5a62751225b2f62ff3147d0a334055ebadcd5cc", "type": "github" }, "original": { @@ -2086,8 +2039,8 @@ }, "reset": { "inputs": { - "flake-parts": "flake-parts_11", - "nixpkgs": "nixpkgs_19", + "flake-parts": "flake-parts_12", + "nixpkgs": "nixpkgs_20", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -2106,8 +2059,8 @@ }, "reset-plugins": { "inputs": { - "flake-parts": "flake-parts_12", - "nixpkgs": "nixpkgs_21", + "flake-parts": "flake-parts_13", + "nixpkgs": "nixpkgs_22", "rust-overlay": "rust-overlay_6" }, "locked": { @@ -2132,12 +2085,12 @@ "chaoticNyx": "chaoticNyx", "dashvim": "dashvim", "disko": "disko", - "home-manager": "home-manager_3", + "home-manager": "home-manager_2", "hyprdock": "hyprdock", "hyprland": "hyprland", "ironbar": "ironbar", "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_9", + "nixpkgs": "nixpkgs_10", "nur": "nur", "oxicalc": "oxicalc", "oxidash": "oxidash", @@ -2155,11 +2108,28 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1740259966, - "narHash": "sha256-FJU9qiELvmJzNRr7wLFtJUy4bSk1PNqsRB7wOQz6zUE=", + "lastModified": 1741300343, + "narHash": "sha256-Engmn908XKEy/hmriudPQbX1QWr7ySpmQg9HbTigiME=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "9df88ff0f65f8de9f73684d2bb96e1b62669d083", + "rev": "21a88a3767c4a6b3f211ed12174b923be851e1c6", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_2": { + "flake": false, + "locked": { + "lastModified": 1734622712, + "narHash": "sha256-2Oc2LbFypF1EG3zTVIVcuT5XFJ7R3oAwu2tS8B0qQ0I=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "fe027d79d22f2a7645da4143f5cc0f5f56239b97", "type": "github" }, "original": { @@ -2177,11 +2147,11 @@ ] }, "locked": { - "lastModified": 1738290352, - "narHash": "sha256-YKOHUmc0Clm4tMV8grnxYL4IIwtjTayoq/3nqk0QM7k=", + "lastModified": 1740709839, + "narHash": "sha256-4dF++MXIXna/AwlZWDKr7bgUmY4xoEwvkF1GewjNrt0=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "b031b584125d33d23a0182f91ddbaf3ab4880236", + "rev": "b4270835bf43c6f80285adac6f66a26d83f0f277", "type": "github" }, "original": { @@ -2193,7 +2163,7 @@ "rust-overlay_2": { "inputs": { "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_13" + "nixpkgs": "nixpkgs_14" }, "locked": { "lastModified": 1716171463, @@ -2212,7 +2182,7 @@ "rust-overlay_3": { "inputs": { "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_15" + "nixpkgs": "nixpkgs_16" }, "locked": { "lastModified": 1716171463, @@ -2231,7 +2201,7 @@ "rust-overlay_4": { "inputs": { "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_18" + "nixpkgs": "nixpkgs_19" }, "locked": { "lastModified": 1716171463, @@ -2249,7 +2219,7 @@ }, "rust-overlay_5": { "inputs": { - "nixpkgs": "nixpkgs_20" + "nixpkgs": "nixpkgs_21" }, "locked": { "lastModified": 1739586408, @@ -2268,7 +2238,7 @@ "rust-overlay_6": { "inputs": { "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_22" + "nixpkgs": "nixpkgs_23" }, "locked": { "lastModified": 1717035469, @@ -2286,14 +2256,14 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_23" + "nixpkgs": "nixpkgs_24" }, "locked": { - "lastModified": 1739262228, - "narHash": "sha256-7JAGezJ0Dn5qIyA2+T4Dt/xQgAbhCglh6lzCekTVMeU=", + "lastModified": 1741043164, + "narHash": "sha256-9lfmSZLz6eq9Ygr6cCmvQiiBEaPb54pUBcjvbEMPORc=", "owner": "Mic92", "repo": "sops-nix", - "rev": "07af005bb7d60c7f118d9d9f5530485da5d1e975", + "rev": "3f2412536eeece783f0d0ad3861417f347219f4d", "type": "github" }, "original": { @@ -2304,11 +2274,11 @@ }, "stable": { "locked": { - "lastModified": 1740339700, - "narHash": "sha256-cbrw7EgQhcdFnu6iS3vane53bEagZQy/xyIkDWpCgVE=", + "lastModified": 1741445498, + "narHash": "sha256-F5Em0iv/CxkN5mZ9hRn3vPknpoWdcdCyR0e4WklHwiE=", "owner": "NixOs", "repo": "nixpkgs", - "rev": "04ef94c4c1582fd485bbfdb8c4a8ba250e359195", + "rev": "52e3095f6d812b91b22fb7ad0bfc1ab416453634", "type": "github" }, "original": { @@ -2325,12 +2295,12 @@ "base16-helix": "base16-helix", "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat_2", "flake-utils": "flake-utils_6", - "git-hooks": "git-hooks_2", + "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", - "home-manager": "home-manager_4", - "nixpkgs": "nixpkgs_24", + "home-manager": "home-manager_3", + "nixpkgs": "nixpkgs_25", "nur": "nur_2", "systems": "systems_9", "tinted-foot": "tinted-foot", @@ -2340,11 +2310,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1740484771, - "narHash": "sha256-vVuuizPabugzTQtOKHB8NV/RC1PQWH6KxQtRW8Jqkyg=", + "lastModified": 1741533345, + "narHash": "sha256-wStpjHkVAuwYvs3oNSLWz8A2QkicfrGlP4rw2+OiyAU=", "owner": "danth", "repo": "stylix", - "rev": "c9195530b40e2589a70d3bf4154d2f92de1fafca", + "rev": "a76068262cfc16c04f9c07a6458715548b067450", "type": "github" }, "original": { @@ -2571,28 +2541,6 @@ } }, "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "dashvim", - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1738680491, - "narHash": "sha256-8X7tR3kFGkE7WEF5EXVkt4apgaN85oHZdoTGutCFs6I=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "64dbb922d51a42c0ced6a7668ca008dded61c483", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, - "treefmt-nix_2": { "inputs": { "nixpkgs": [ "nur", @@ -2613,7 +2561,7 @@ "type": "github" } }, - "treefmt-nix_3": { + "treefmt-nix_2": { "inputs": { "nixpkgs": [ "stylix", @@ -2678,14 +2626,14 @@ }, "zen-browser": { "inputs": { - "nixpkgs": "nixpkgs_25" + "nixpkgs": "nixpkgs_26" }, "locked": { - "lastModified": 1740442108, - "narHash": "sha256-TfLmlndhcaGBzYMkv3QFrcwXJwony5apCBOWErKQov8=", + "lastModified": 1741493092, + "narHash": "sha256-jShBVqU8K5rN8xtsq2JDgq+KInRw3pDbp8SViMIz5pE=", "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "4d82cf9b46b099c81758bd3fa2b5ce617db05532", + "rev": "117945c4162d78f2cc7ad578cf44edbbf1ee33fb", "type": "github" }, "original": { From 18867008575b1bbd5946d2ead1590d07da6ee064 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 12 Mar 2025 11:11:10 +0100 Subject: [PATCH 220/330] Add zen and librewolf configuration --- flake.nix | 2 + home/default.nix | 4 +- lib/default.nix | 2 + modules/programs/browser/default.nix | 7 +- modules/programs/browser/firefox.nix | 2 +- modules/programs/browser/foxwrappers.nix | 25 +++++++ modules/programs/browser/librewolf.nix | 29 ++++++++ modules/programs/browser/zen.nix | 94 +++++++++++++++++++++++- modules/programs/homePackages.nix | 25 +++++-- modules/programs/media.nix | 91 +++++++++++------------ 10 files changed, 219 insertions(+), 62 deletions(-) create mode 100644 modules/programs/browser/foxwrappers.nix create mode 100644 modules/programs/browser/librewolf.nix diff --git a/flake.nix b/flake.nix index 4ae8f79..5eeb4a4 100644 --- a/flake.nix +++ b/flake.nix @@ -106,10 +106,12 @@ pkgs stable ; + system = currentSystem; lib = inputs.nixpkgs.lib; }; docs = import ./docs { inherit inputs pkgs stable; + system = currentSystem; lib = inputs.nixpkgs.lib; build_systems = dashNixLib.build_systems; }; diff --git a/home/default.nix b/home/default.nix index f4fb47b..50f1c66 100644 --- a/home/default.nix +++ b/home/default.nix @@ -10,6 +10,7 @@ pkgs, root, alternativePkgs, + system, ... }: { xdg = { @@ -23,7 +24,7 @@ useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = { - inherit inputs root additionalInputs alternativePkgs; + inherit inputs root additionalInputs alternativePkgs system; }; users.${config.conf.username} = { @@ -32,6 +33,7 @@ ./common.nix ./themes ./sync.nix + ../modules/programs/browser/foxwrappers.nix ] ++ homeMods ++ additionalHomeMods diff --git a/lib/default.nix b/lib/default.nix index 93408b3..5bd2ce3 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -4,6 +4,7 @@ pkgs, self, stable, + system, ... }: { /* @@ -84,6 +85,7 @@ inputs mod additionalHomeConfig + system root ; pkgs = lib.mkForce ( diff --git a/modules/programs/browser/default.nix b/modules/programs/browser/default.nix index a7436d9..ade4ecf 100644 --- a/modules/programs/browser/default.nix +++ b/modules/programs/browser/default.nix @@ -1,8 +1,9 @@ { imports = [ - ./firefox.nix - ./zen.nix - ./chromium.nix ./brave.nix + ./chromium.nix + ./firefox.nix + ./librewolf.nix + ./zen.nix ]; } diff --git a/modules/programs/browser/firefox.nix b/modules/programs/browser/firefox.nix index 048263d..1bb07d7 100644 --- a/modules/programs/browser/firefox.nix +++ b/modules/programs/browser/firefox.nix @@ -70,7 +70,7 @@ value = { isDefault = true; id = 0; - extensions.packages = [ pkgs.nur.repos.rycee.firefox-addons.darkreader ]; + extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader]; }; } ]; diff --git a/modules/programs/browser/foxwrappers.nix b/modules/programs/browser/foxwrappers.nix new file mode 100644 index 0000000..a6a5c21 --- /dev/null +++ b/modules/programs/browser/foxwrappers.nix @@ -0,0 +1,25 @@ +{inputs, ...}: let + mkFirefoxModule = import "${inputs.home-manager.outPath}/modules/programs/firefox/mkFirefoxModule.nix"; +in { + imports = [ + (mkFirefoxModule { + modulePath = [ + "programs" + "zen-browser" + ]; + name = "Zen Browser"; + wrappedPackageName = "zen-browser-unwrapped"; + unwrappedPackageName = "zen-browser"; + visible = true; + platforms = { + linux = { + vendorPath = ".zen"; + configPath = ".zen"; + }; + darwin = { + configPath = "Library/Application Support/Zen"; + }; + }; + }) + ]; +} diff --git a/modules/programs/browser/librewolf.nix b/modules/programs/browser/librewolf.nix new file mode 100644 index 0000000..9a17bda --- /dev/null +++ b/modules/programs/browser/librewolf.nix @@ -0,0 +1,29 @@ +{ + lib, + config, + options, + ... +}: { + options.mods.browser.librewolf = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables the librwolf browser"; + }; + settings = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = "librewolf settings"; + }; + }; + config = lib.mkIf config.mods.browser.librewolf.enable ( + lib.optionalAttrs (options ? home.packages) { + programs.librewolf = { + enable = true; + settings = config.mods.browser.librewolf.settings; + }; + } + ); +} diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index 96ef32c..ced52ea 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -2,8 +2,8 @@ lib, config, options, - system, inputs, + pkgs, ... }: { options.mods.browser.zen = { @@ -13,11 +13,99 @@ type = lib.types.bool; description = "Enables the zen browser"; }; - # TODO configure zen + configuration = lib.mkOption { + default = { + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + DisplayBookmarksToolbar = "never"; + DisplayMenuBar = "default-off"; + CaptivePortal = false; + DisableFirefoxStudies = true; + DisableTelemetry = true; + DisableFirefoxAccounts = false; + NoDefaultBookmarks = true; + OfferToSaveLogins = false; + OfferToSaveLoginsDefault = false; + PasswordManagerEnabled = false; + FirefoxHome = { + Search = true; + Pocket = false; + Snippets = false; + TopSites = true; + Highlights = false; + }; + UserMessaging = { + ExtensionRecommendations = false; + SkipOnboarding = true; + }; + }; + example = {}; + type = with lib.types; attrsOf anything; + description = "Zen policy configuration. See https://mozilla.github.io/policy-templates/ for more information."; + }; + profiles = lib.mkOption { + default = [ + { + name = "${config.conf.username}"; + value = { + isDefault = true; + id = 0; + }; + } + { + name = "special"; + value = { + isDefault = false; + id = 1; + }; + } + ]; + example = [ + { + name = "custom"; + value = { + isDefault = true; + id = 0; + extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader]; + }; + } + ]; + type = with lib.types; listOf (attrsOf anything); + description = "Zen profiles"; + }; }; config = lib.mkIf config.mods.browser.zen.enable ( lib.optionalAttrs (options ? home.packages) { - home.packages = [inputs.zen-browser.packages."${system}".default]; + programs.zen-browser = { + enable = true; + package = + pkgs.wrapFirefox + (inputs.zen-browser.packages.${pkgs.system}.default.overrideAttrs (prevAttrs: { + passthru = + prevAttrs.passthru + or {} + // { + applicationName = "Zen Browser"; + binaryName = "zen"; + + ffmpegSupport = true; + gssSupport = true; + gtk3 = pkgs.gtk3; + }; + })) + { + icon = "zen-beta"; + wmClass = "zen"; + hasMozSystemDirPatch = false; + }; + policies = config.mods.browser.zen.configuration; + profiles = builtins.listToAttrs config.mods.browser.zen.profiles; + }; } ); } diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index 223283d..4ca908b 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -3,7 +3,6 @@ options, config, pkgs, - inputs, ... }: let # TODO remove when chromium works again @@ -72,12 +71,14 @@ in { description = "The email client"; }; browser = lib.mkOption { - default = inputs.zen-browser.packages.${pkgs.system}.default; + default = "zen"; example = "firefox"; type = with lib.types; nullOr ( either (enum [ "firefox" + "zen" + "librewolf" ]) package ); @@ -150,11 +151,23 @@ in { profiles = builtins.listToAttrs config.mods.browser.firefox.profiles; }; } + else if config.mods.homePackages.browser == "zen" + then { + zen-browser = { + enable = true; + policies = config.mods.browser.zen.configuration; + profiles = builtins.listToAttrs config.mods.browser.zen.profiles; + }; + } + else if config.mods.homePackages.browser == "librewolf" + then { + librewolf = { + enable = true; + settings = config.mods.browser.librewolf.settings; + }; + } else {} ); - services = - if config.mods.homePackages.useDefaultPackages - then config.mods.homePackages.specialServices - else config.mods.homePackages.specialServices; + services = config.mods.homePackages.specialServices; }; } diff --git a/modules/programs/media.nix b/modules/programs/media.nix index 62080f3..207fa9c 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -4,8 +4,7 @@ config, pkgs, ... -}: -{ +}: { options.mods.media = { useBasePackages = lib.mkOption { default = true; @@ -14,24 +13,24 @@ description = "Default media packages (If disabled, only the additional packages will be installed)"; }; additionalPackages = lib.mkOption { - default = [ ]; - example = [ pkgs.flatpak ]; + default = []; + example = [pkgs.flatpak]; type = with lib.types; listOf package; description = '' Additional media packages. ''; }; specialPrograms = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' special program configuration to be added which require programs.something notation. ''; }; specialServices = lib.mkOption { - default = { }; - example = { }; + default = {}; + example = {}; type = with lib.types; attrsOf anything; description = '' special services configuration to be added which require an services.something notation. @@ -40,51 +39,47 @@ }; config = lib.optionalAttrs (options ? home.packages) { home.packages = - if config.mods.media.useBasePackages then + if config.mods.media.useBasePackages + then with pkgs; - [ - # base audio - pipewire - wireplumber - # audio control - playerctl - # images - imv - # videos - mpv - # pdf - zathura - evince - libreoffice-fresh - onlyoffice-bin - pdftk - pdfpc - polylux2pdfpc - # spotify - # video editing - kdePackages.kdenlive - # image creation - inkscape - gimp - krita - yt-dlp - ] - ++ config.mods.media.additionalPackages - else - config.mods.media.additionalPackages; + [ + # base audio + pipewire + wireplumber + # audio control + playerctl + # images + imv + # videos + mpv + # pdf + zathura + evince + libreoffice-fresh + onlyoffice-bin + pdftk + pdfpc + polylux2pdfpc + # spotify + # video editing + kdePackages.kdenlive + # image creation + inkscape + gimp + krita + yt-dlp + ] + ++ config.mods.media.additionalPackages + else config.mods.media.additionalPackages; programs = - if config.mods.media.useBasePackages then + if config.mods.media.useBasePackages + then { obs-studio.enable = true; - obs-studio.plugins = with pkgs; [ obs-studio-plugins.obs-vaapi ]; + obs-studio.plugins = with pkgs; [obs-studio-plugins.obs-vaapi]; } // config.mods.media.specialPrograms - else - config.mods.media.specialPrograms; - services = - if config.mods.media.useBasePackages then - config.mods.media.specialServices - else - config.mods.media.specialServices; + else config.mods.media.specialPrograms; + services = config.mods.media.specialServices; }; } From 4ca16884348a642661d8c7620d36715f82a96e6d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 12 Mar 2025 22:05:56 +0100 Subject: [PATCH 221/330] Add userContent and userChrome to firefox/zen/librewolf --- base/common_hardware.nix | 3 +- docs/src/README.md | 3 +- home/themes/default.nix | 1 + home/themes/firefoxTheme.nix | 325 +++++++++++++++++++++++ iso/configuration.nix | 1 + modules/programs/browser/foxwrappers.nix | 1 + 6 files changed, 332 insertions(+), 2 deletions(-) create mode 100644 home/themes/firefoxTheme.nix diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 7e6239a..988e2ba 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -87,7 +87,8 @@ in { trusted-users = [username]; auto-optimise-store = true; - experimental-features = "nix-command flakes"; + experimental-features = "nix-command flakes pipe-operators"; + }; }; diff --git a/docs/src/README.md b/docs/src/README.md index a667e34..7141724 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -268,6 +268,7 @@ For package lists, please check the individual modules, as the lists can be long # Credits - [Fufexan](https://github.com/fufexan) for the xdg-mime config: -- [Catppuccin](https://github.com/catppuccin) for base16 colors +- [Catppuccin](https://github.com/catppuccin) for base16 colors and zen-browser css - [Danth](https://github.com/danth) for providing a base for the nix docs +- [chermnyx](https://github.com/chermnyx) for providing a base for zen configuration - [Nix-Artwork](https://github.com/NixOS/nixos-artwork/tree/master/logo) for the Nix/NixOS logo (Tim Cuthbertson (@timbertson)) diff --git a/home/themes/default.nix b/home/themes/default.nix index 1e091a9..9976455 100644 --- a/home/themes/default.nix +++ b/home/themes/default.nix @@ -3,5 +3,6 @@ ./qt.nix ./kdeglobals.nix ./oxiced.nix + ./firefoxTheme.nix ]; } diff --git a/home/themes/firefoxTheme.nix b/home/themes/firefoxTheme.nix new file mode 100644 index 0000000..91c5804 --- /dev/null +++ b/home/themes/firefoxTheme.nix @@ -0,0 +1,325 @@ +# css from https://github.com/catppuccin/zen-browser/tree/main/themes +{ + config, + inputs, + pkgs, + lib, + ... +}: let + # at time of using this here, stylix might not be evaluated yet + # hence ensure it is by using base16 mkSchemeAttrs + base16 = pkgs.callPackage inputs.base16.lib {}; + scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; + userChrome = + /* + css + */ + '' + /* Catppuccin Mocha Blue userContent.css*/ + + @media (prefers-color-scheme: dark) { + + /* Common variables affecting all pages */ + @-moz-document url-prefix("about:") { + :root { + --in-content-page-color: #${scheme.base05} !important; + --color-accent-primary: #${scheme.base0D} !important; + --color-accent-primary-hover: rgb(163, 197, 251) !important; // TODO + --color-accent-primary-active: rgb(138, 153, 250) !important; // TODO + background-color: #${scheme.base00} !important; + --in-content-page-background: #${scheme.base00} !important; + } + + } + + /* Variables and styles specific to about:newtab and about:home */ + @-moz-document url("about:newtab"), url("about:home") { + + :root { + --newtab-background-color: #${scheme.base00} !important; + --newtab-background-color-secondary: #${scheme.base02} !important; + --newtab-element-hover-color: #${scheme.base02} !important; + --newtab-text-primary-color: #${scheme.base05} !important; + --newtab-wordmark-color: #${scheme.base05} !important; + --newtab-primary-action-background: #${scheme.base0D} !important; + } + + .icon { + color: #${scheme.base0D} !important; + } + + .search-wrapper .logo-and-wordmark .logo { + //background: url("zen-logo-mocha.svg"), url("https://raw.githubusercontent.com/IAmJafeth/zen-browser/main/themes/Mocha/Blue/zen-logo-mocha.svg") no-repeat center !important; // TODO + display: inline-block !important; + height: 82px !important; + width: 82px !important; + background-size: 82px !important; + } + + @media (max-width: 609px) { + .search-wrapper .logo-and-wordmark .logo { + background-size: 64px !important; + height: 64px !important; + width: 64px !important; + } + } + + .card-outer:is(:hover, :focus, .active):not(.placeholder) .card-title { + color: #${scheme.base0D} !important; + } + + .top-site-outer .search-topsite { + background-color: #${scheme.base0D} !important; + } + + .compact-cards .card-outer .card-context .card-context-icon.icon-download { + fill: #${scheme.base0B} !important; + } + } + + /* Variables and styles specific to about:preferences */ + @-moz-document url-prefix("about:preferences") { + :root { + --zen-colors-tertiary: #${scheme.base01} !important; + --in-content-text-color: #${scheme.base05} !important; + --link-color: #${scheme.base0D} !important; + --link-color-hover: rgb(163, 197, 251) !important; // TODO + --zen-colors-primary: #${scheme.base02} !important; + --in-content-box-background: #${scheme.base02} !important; + --zen-primary-color: #${scheme.base0D} !important; + } + + groupbox , moz-card{ + background: #${scheme.base00} !important; + } + + button, + groupbox menulist { + background: #${scheme.base02} !important; + color: #${scheme.base05} !important; + } + + .main-content { + background-color: #${scheme.base01} !important; + } + + .identity-color-blue { + --identity-tab-color: #8aadf4 !important; // TODO + --identity-icon-color: #8aadf4 !important; // TODO + } + + .identity-color-turquoise { + --identity-tab-color: #8bd5ca !important; // TODO + --identity-icon-color: #8bd5ca !important; // TODO + } + + .identity-color-green { + --identity-tab-color: #${scheme.base0B} !important; + --identity-icon-color: #${scheme.base0B} !important; + } + + .identity-color-yellow { + --identity-tab-color: #eed49f !important; // TODO + --identity-icon-color: #eed49f !important; // TODO + } + + .identity-color-orange { + --identity-tab-color: #f5a97f !important; // TODO + --identity-icon-color: #f5a97f !important; // TODO + } + + .identity-color-red { + --identity-tab-color: #ed8796 !important; // TODO + --identity-icon-color: #ed8796 !important; // TODO + } + + .identity-color-pink { + --identity-tab-color: #f5bde6 !important; // TODO + --identity-icon-color: #f5bde6 !important; // TODO + } + + .identity-color-purple { + --identity-tab-color: #c6a0f6 !important; // TODO + --identity-icon-color: #c6a0f6 !important; // TODO + } + } + + /* Variables and styles specific to about:addons */ + @-moz-document url-prefix("about:addons") { + :root { + --zen-dark-color-mix-base: #${scheme.base01} !important; + --background-color-box: #${scheme.base00} !important; + } + } + + /* Variables and styles specific to about:protections */ + @-moz-document url-prefix("about:protections") { + :root { + --zen-primary-color: #${scheme.base00} !important; + --social-color: #${scheme.base0E} !important; + --coockie-color: #${scheme.base08} !important; + --fingerprinter-color: #${scheme.base0A} !important; + --cryptominer-color: #${scheme.base07} !important; + --tracker-color: #${scheme.base0B} !important; + --in-content-primary-button-background-hover: rgb(81, 83, 05) !important; + --in-content-primary-button-text-color-hover: #${scheme.base05} !important; + --in-content-primary-button-background: #${scheme.base03} !important; + --in-content-primary-button-text-color: #${scheme.base05} !important; + } + + + .card { + background-color: #${scheme.base02} !important; + } + } + } + ''; + userContent = + /* + css + */ + '' + /* Catppuccin Mocha Blue userChrome.css*/ + @media (prefers-color-scheme: dark) { + + :root { + --zen-colors-primary: #${scheme.base02} !important; + --zen-primary-color: #${scheme.base0D} !important; + --zen-colors-secondary: #${scheme.base02} !important; + --zen-colors-tertiary: #${scheme.base01} !important; + --zen-colors-border: #${scheme.base0D} !important; + --toolbarbutton-icon-fill: #${scheme.base0D} !important; + --lwt-text-color: #${scheme.base05} !important; + --toolbar-field-color: #${scheme.base05} !important; + --tab-selected-textcolor: rgb(171, 197, 247) !important; // TODO + --toolbar-field-focus-color: #${scheme.base05} !important; + --toolbar-color: #${scheme.base05} !important; + --newtab-text-primary-color: #${scheme.base05} !important; + --arrowpanel-color: #${scheme.base05} !important; + --arrowpanel-background: #${scheme.base00} !important; + --sidebar-text-color: #${scheme.base05} !important; + --lwt-sidebar-text-color: #${scheme.base05} !important; + --lwt-sidebar-background-color: #${scheme.base01} !important; //TODO 11111b !important; + --toolbar-bgcolor: #${scheme.base02} !important; + --newtab-background-color: #${scheme.base00} !important; + --zen-themed-toolbar-bg: #${scheme.base01} !important; + --zen-main-browser-background: #${scheme.base01} !important; + } + + #permissions-granted-icon{ + color: #${scheme.base01} !important; + } + + .sidebar-placesTree { + background-color: #${scheme.base00} !important; + } + + #zen-workspaces-button { + background-color: #${scheme.base00} !important; + } + + #TabsToolbar { + background-color: #${scheme.base01} !important; + } + + #urlbar-background { + background-color: #${scheme.base00} !important; + } + + .content-shortcuts { + background-color: #${scheme.base00} !important; + border-color: #${scheme.base0D} !important; + } + + .urlbarView-url { + color: #${scheme.base0D} !important; + } + + #zenEditBookmarkPanelFaviconContainer { + background: #${scheme.base01} !important; + } + + toolbar .toolbarbutton-1 { + &:not([disabled]) { + &:is([open], [checked]) > :is(.toolbarbutton-icon, .toolbarbutton-text, .toolbarbutton-badge-stack){ + fill: #${scheme.base01}; + } + } + } + + .identity-color-blue { + --identity-tab-color: #${scheme.base0D} !important; + --identity-icon-color: #${scheme.base0D} !important; + } + + .identity-color-turquoise { + --identity-tab-color: #${scheme.base0C} !important; + --identity-icon-color: #${scheme.base0C} !important; + } + + .identity-color-green { + --identity-tab-color: #${scheme.base0B} !important; + --identity-icon-color: #${scheme.base0B} !important; + } + + .identity-color-yellow { + --identity-tab-color: #${scheme.base0A} !important; + --identity-icon-color: #${scheme.base0A} !important; + } + + .identity-color-orange { + --identity-tab-color: #${scheme.base09} !important; + --identity-icon-color: #${scheme.base09} !important; + } + + .identity-color-red { + --identity-tab-color: #${scheme.base08} !important; + --identity-icon-color: #${scheme.base08} !important; + } + + .identity-color-pink { + --identity-tab-color: #${scheme.base0F} !important; + --identity-icon-color: #${scheme.base0F} !important; // TODO f5c2e7 + } + + .identity-color-purple { + --identity-tab-color: #${scheme.base0E} !important; + --identity-icon-color: #${scheme.base0E} !important; + } + } + ''; + browsername = config.mods.homePackages.browser; + profiles = + if config.mods.homePackages.browser == "firefox" then + config.mods.browser.firefox.profiles + else if config.mods.homePackages.browser == "zen" then + config.mods.browser.zen.profiles + else if config.mods.homePackages.browser == "librewolf" then + [{name = "default"; value = {};}] + else + []; + profileNamesFn = + builtins.catAttrs "name"; + chromesFn = builtins.map ( + name: + if (builtins.isString browsername) + then { + ".${browsername}/${name}/chrome/userContent.css" = { + text = userChrome; + }; + + ".${browsername}/${name}/chrome/userChrome.css" = { + text = userContent; + }; + } + else {} + ); + moduleFn = lib.lists.foldr (attr1: attr2: attr1 // attr2) {}; + mkFirefoxTheme = (profiles: + profiles + |> profileNamesFn + |> chromesFn + |> moduleFn + ); +in + {home.file = mkFirefoxTheme profiles;} diff --git a/iso/configuration.nix b/iso/configuration.nix index 0f6247d..5745fe7 100644 --- a/iso/configuration.nix +++ b/iso/configuration.nix @@ -31,6 +31,7 @@ in { nix.settings.experimental-features = [ "nix-command" "flakes" + "pipe-operators" ]; # gnome is a good default that works with every gpu and doesn't require knowledge about custom keybinds. diff --git a/modules/programs/browser/foxwrappers.nix b/modules/programs/browser/foxwrappers.nix index a6a5c21..45fcd13 100644 --- a/modules/programs/browser/foxwrappers.nix +++ b/modules/programs/browser/foxwrappers.nix @@ -1,3 +1,4 @@ +# https://github.com/0xc000022070/zen-browser-flake/issues/9#issuecomment-2711057434 {inputs, ...}: let mkFirefoxModule = import "${inputs.home-manager.outPath}/modules/programs/firefox/mkFirefoxModule.nix"; in { From 58c42ed7d80c00a157dd251dca59b1e365e665fe Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 13 Mar 2025 12:29:44 +0100 Subject: [PATCH 222/330] Add librewolf module configuration --- modules/programs/browser/foxwrappers.nix | 17 ++++++ modules/programs/browser/librewolf.nix | 72 ++++++++++++++++++++++-- modules/programs/browser/zen.nix | 43 +++++++++++++- modules/programs/homePackages.nix | 5 +- 4 files changed, 127 insertions(+), 10 deletions(-) diff --git a/modules/programs/browser/foxwrappers.nix b/modules/programs/browser/foxwrappers.nix index 45fcd13..fc166cb 100644 --- a/modules/programs/browser/foxwrappers.nix +++ b/modules/programs/browser/foxwrappers.nix @@ -22,5 +22,22 @@ in { }; }; }) + (mkFirefoxModule { + modulePath = [ + "programs" + "librewolf-dashnix" + ]; + name = "LibreWolf"; + description = "LibreWolf is a privacy enhanced Firefox fork."; + wrappedPackageName = "librewolf"; + unwrappedPackageName = "librewolf-unwrapped"; + + platforms.linux = {configPath = ".librewolf";}; + platforms.darwin = { + configPath = "Library/Application Support/LibreWolf"; + }; + + enableBookmarks = false; + }) ]; } diff --git a/modules/programs/browser/librewolf.nix b/modules/programs/browser/librewolf.nix index 9a17bda..8bbbfd5 100644 --- a/modules/programs/browser/librewolf.nix +++ b/modules/programs/browser/librewolf.nix @@ -2,6 +2,7 @@ lib, config, options, + pkgs, ... }: { options.mods.browser.librewolf = { @@ -11,18 +12,79 @@ type = lib.types.bool; description = "Enables the librwolf browser"; }; - settings = lib.mkOption { - default = {}; + configuration = lib.mkOption { + default = { + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + DisplayBookmarksToolbar = "never"; + DisplayMenuBar = "default-off"; + CaptivePortal = false; + DisableFirefoxStudies = true; + DisableTelemetry = true; + DisableFirefoxAccounts = false; + NoDefaultBookmarks = true; + OfferToSaveLogins = false; + OfferToSaveLoginsDefault = false; + PasswordManagerEnabled = false; + FirefoxHome = { + Search = true; + Pocket = false; + Snippets = false; + TopSites = true; + Highlights = false; + }; + UserMessaging = { + ExtensionRecommendations = false; + SkipOnboarding = true; + }; + }; example = {}; type = with lib.types; attrsOf anything; - description = "librewolf settings"; + description = "Librewolf policy configuration. See https://mozilla.github.io/policy-templates/ for more information."; + }; + profiles = lib.mkOption { + default = [ + { + name = "${config.conf.username}"; + value = { + isDefault = true; + id = 0; + }; + } + { + name = "special"; + value = { + isDefault = false; + id = 1; + }; + } + ]; + example = [ + { + name = "custom"; + value = { + isDefault = true; + id = 0; + extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader]; + }; + } + ]; + type = with lib.types; listOf (attrsOf anything); + description = "Librewolf profiles"; }; }; config = lib.mkIf config.mods.browser.librewolf.enable ( lib.optionalAttrs (options ? home.packages) { - programs.librewolf = { + programs.librewolf-dashnix = { enable = true; - settings = config.mods.browser.librewolf.settings; + package = pkgs.librewolf; + policies = config.mods.browser.librewolf.configuration; + profiles = builtins.listToAttrs config.mods.browser.librewolf.profiles; }; } ); diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index ced52ea..33f2da8 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -46,13 +46,37 @@ }; example = {}; type = with lib.types; attrsOf anything; - description = "Zen policy configuration. See https://mozilla.github.io/policy-templates/ for more information."; + description = "Zen policy configuration. See https://mozilla.github.io/policy-templates for more information."; }; profiles = lib.mkOption { - default = [ + default = let + extensions = [ + pkgs.nur.repos.rycee.firefox-addons.darkreader + pkgs.nur.repos.rycee.firefox-addons.ublock-origin + pkgs.nur.repos.rycee.firefox-addons.ghostery + pkgs.nur.repos.rycee.firefox-addons.canvasblocker + pkgs.nur.repos.rycee.firefox-addons.i-dont-care-about-cookies + pkgs.nur.repos.rycee.firefox-addons.keepassxc-browser + pkgs.nur.repos.rycee.firefox-addons.vimium + pkgs.nur.repos.rycee.firefox-addons.react-devtools + pkgs.nur.repos.rycee.firefox-addons.reduxdevtools + pkgs.nur.repos.rycee.firefox-addons.user-agent-string-switcher + pkgs.nur.repos.rycee.firefox-addons.private-relay + ]; + in [ { name = "${config.conf.username}"; value = { + settings = { + zen.view.compact.hide-tabbar = false; + zen.view.compact.hide-toolbar = true; + zen.view.sidebar-expanded = false; + zen.view.use-single-toolbar = false; + zen.view.welcome-screen.seen = true; + zen.theme.accent-color = "#b4bbff"; + extensions.autoDisableScopes = 0; + }; + extensions.packages = extensions; isDefault = true; id = 0; }; @@ -60,6 +84,16 @@ { name = "special"; value = { + settings = { + zen.view.compact.hide-tabbar = false; + zen.view.compact.hide-toolbar = true; + zen.view.sidebar-expanded = false; + zen.view.use-single-toolbar = false; + zen.view.welcome-screen.seen = true; + zen.theme.accent-color = "#b4bbff"; + extensions.autoDisableScopes = 0; + }; + extensions.packages = extensions; isDefault = false; id = 1; }; @@ -69,9 +103,12 @@ { name = "custom"; value = { + settings = { + extensions.autoDisableScopes = 0; + }; + extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader]; isDefault = true; id = 0; - extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader]; }; } ]; diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index 4ca908b..8df753f 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -161,9 +161,10 @@ in { } else if config.mods.homePackages.browser == "librewolf" then { - librewolf = { + librewolf-dashnix = { enable = true; - settings = config.mods.browser.librewolf.settings; + policies = config.mods.browser.librewolf.configuration; + profiles = builtins.listToAttrs config.mods.browser.librewolf.profiles; }; } else {} From 4f04b5d683792185b7708781a8762f88858b5c54 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 14 Mar 2025 23:10:08 +0100 Subject: [PATCH 223/330] Add zen extension config and fix zen policy config --- docs/src/README.md | 1 + flake.lock | 154 ++++---- flake.nix | 19 +- home/default.nix | 4 +- lib/default.nix | 18 +- modules/programs/browser/darkeader.patch | 456 +++++++++++++++++++++++ modules/programs/browser/darkreader.nix | 23 ++ modules/programs/browser/foxwrappers.nix | 4 +- modules/programs/browser/zen.nix | 103 +++-- modules/programs/drives.nix | 2 +- modules/programs/homePackages.nix | 7 +- 11 files changed, 647 insertions(+), 144 deletions(-) create mode 100644 modules/programs/browser/darkeader.patch create mode 100644 modules/programs/browser/darkreader.nix diff --git a/docs/src/README.md b/docs/src/README.md index 7141724..fa1d1e3 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -271,4 +271,5 @@ For package lists, please check the individual modules, as the lists can be long - [Catppuccin](https://github.com/catppuccin) for base16 colors and zen-browser css - [Danth](https://github.com/danth) for providing a base for the nix docs - [chermnyx](https://github.com/chermnyx) for providing a base for zen configuration +- [voronind-com](https://github.com/voronind-com) for providing the darkreader configuration - [Nix-Artwork](https://github.com/NixOS/nixos-artwork/tree/master/logo) for the Nix/NixOS logo (Tim Cuthbertson (@timbertson)) diff --git a/flake.lock b/flake.lock index 8f2283a..46c9e0f 100644 --- a/flake.lock +++ b/flake.lock @@ -942,7 +942,7 @@ "home-manager_2": { "inputs": { "nixpkgs": [ - "nixpkgs" + "unstable" ] }, "locked": { @@ -1265,7 +1265,7 @@ "crane": "crane", "naersk": "naersk", "nixpkgs": [ - "nixpkgs" + "unstable" ], "rust-overlay": "rust-overlay" }, @@ -1435,13 +1435,13 @@ "locked": { "lastModified": 1741379970, "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=", - "owner": "NixOs", + "owner": "nixos", "repo": "nixpkgs", "rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f", "type": "github" }, "original": { - "owner": "NixOs", + "owner": "nixos", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -1449,15 +1449,15 @@ }, "nixpkgs_11": { "locked": { - "lastModified": 1741379970, - "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=", - "owner": "nixos", + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -1481,37 +1481,21 @@ }, "nixpkgs_13": { "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "lastModified": 1706487304, + "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_14": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_15": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -1527,7 +1511,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_15": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1543,7 +1527,7 @@ "type": "github" } }, - "nixpkgs_17": { + "nixpkgs_16": { "locked": { "lastModified": 1723637854, "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", @@ -1559,7 +1543,7 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_17": { "locked": { "lastModified": 1716137900, "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", @@ -1575,7 +1559,7 @@ "type": "github" } }, - "nixpkgs_19": { + "nixpkgs_18": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1591,6 +1575,22 @@ "type": "github" } }, + "nixpkgs_19": { + "locked": { + "lastModified": 1739446958, + "narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2ff53fe64443980e139eaa286017f53f88336dd0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1741379970, @@ -1608,22 +1608,6 @@ } }, "nixpkgs_20": { - "locked": { - "lastModified": 1739446958, - "narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "2ff53fe64443980e139eaa286017f53f88336dd0", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_21": { "locked": { "lastModified": 1736320768, "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", @@ -1639,7 +1623,7 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_21": { "locked": { "lastModified": 1716948383, "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", @@ -1655,7 +1639,7 @@ "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_22": { "locked": { "lastModified": 1706487304, "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", @@ -1671,7 +1655,7 @@ "type": "github" } }, - "nixpkgs_24": { + "nixpkgs_23": { "locked": { "lastModified": 1731763621, "narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=", @@ -1687,7 +1671,7 @@ "type": "github" } }, - "nixpkgs_25": { + "nixpkgs_24": { "locked": { "lastModified": 1740367490, "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", @@ -1703,13 +1687,13 @@ "type": "github" } }, - "nixpkgs_26": { + "nixpkgs_25": { "locked": { - "lastModified": 1741379970, - "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=", + "lastModified": 1741513245, + "narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f", + "rev": "e3e32b642a31e6714ec1b712de8c91a3352ce7e1", "type": "github" }, "original": { @@ -1852,7 +1836,7 @@ "nur": { "inputs": { "flake-parts": "flake-parts_6", - "nixpkgs": "nixpkgs_11", + "nixpkgs": "nixpkgs_10", "treefmt-nix": "treefmt-nix" }, "locked": { @@ -1919,7 +1903,7 @@ "oxicalc": { "inputs": { "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_12" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1733264508, @@ -1938,7 +1922,7 @@ "oxidash": { "inputs": { "flake-parts": "flake-parts_8", - "nixpkgs": "nixpkgs_13", + "nixpkgs": "nixpkgs_12", "rust-overlay": "rust-overlay_2" }, "locked": { @@ -1958,7 +1942,7 @@ "oxinoti": { "inputs": { "flake-parts": "flake-parts_9", - "nixpkgs": "nixpkgs_15", + "nixpkgs": "nixpkgs_14", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -1978,7 +1962,7 @@ "oxipaste": { "inputs": { "flake-parts": "flake-parts_10", - "nixpkgs": "nixpkgs_17" + "nixpkgs": "nixpkgs_16" }, "locked": { "lastModified": 1737624143, @@ -1997,7 +1981,7 @@ "oxishut": { "inputs": { "flake-parts": "flake-parts_11", - "nixpkgs": "nixpkgs_18", + "nixpkgs": "nixpkgs_17", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -2040,7 +2024,7 @@ "reset": { "inputs": { "flake-parts": "flake-parts_12", - "nixpkgs": "nixpkgs_20", + "nixpkgs": "nixpkgs_19", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -2060,7 +2044,7 @@ "reset-plugins": { "inputs": { "flake-parts": "flake-parts_13", - "nixpkgs": "nixpkgs_22", + "nixpkgs": "nixpkgs_21", "rust-overlay": "rust-overlay_6" }, "locked": { @@ -2090,7 +2074,6 @@ "hyprland": "hyprland", "ironbar": "ironbar", "nix-flatpak": "nix-flatpak", - "nixpkgs": "nixpkgs_10", "nur": "nur", "oxicalc": "oxicalc", "oxidash": "oxidash", @@ -2102,6 +2085,7 @@ "sops-nix": "sops-nix", "stable": "stable", "stylix": "stylix", + "unstable": "unstable", "zen-browser": "zen-browser" } }, @@ -2163,7 +2147,7 @@ "rust-overlay_2": { "inputs": { "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_14" + "nixpkgs": "nixpkgs_13" }, "locked": { "lastModified": 1716171463, @@ -2182,7 +2166,7 @@ "rust-overlay_3": { "inputs": { "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_16" + "nixpkgs": "nixpkgs_15" }, "locked": { "lastModified": 1716171463, @@ -2201,7 +2185,7 @@ "rust-overlay_4": { "inputs": { "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_19" + "nixpkgs": "nixpkgs_18" }, "locked": { "lastModified": 1716171463, @@ -2219,7 +2203,7 @@ }, "rust-overlay_5": { "inputs": { - "nixpkgs": "nixpkgs_21" + "nixpkgs": "nixpkgs_20" }, "locked": { "lastModified": 1739586408, @@ -2238,7 +2222,7 @@ "rust-overlay_6": { "inputs": { "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_23" + "nixpkgs": "nixpkgs_22" }, "locked": { "lastModified": 1717035469, @@ -2256,7 +2240,7 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_24" + "nixpkgs": "nixpkgs_23" }, "locked": { "lastModified": 1741043164, @@ -2300,7 +2284,7 @@ "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", - "nixpkgs": "nixpkgs_25", + "nixpkgs": "nixpkgs_24", "nur": "nur_2", "systems": "systems_9", "tinted-foot": "tinted-foot", @@ -2583,6 +2567,22 @@ "type": "github" } }, + "unstable": { + "locked": { + "lastModified": 1741851582, + "narHash": "sha256-cPfs8qMccim2RBgtKGF+x9IBCduRvd/N5F4nYpU0TVE=", + "owner": "NixOs", + "repo": "nixpkgs", + "rev": "6607cf789e541e7873d40d3a8f7815ea92204f32", + "type": "github" + }, + "original": { + "owner": "NixOs", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": [ @@ -2626,14 +2626,14 @@ }, "zen-browser": { "inputs": { - "nixpkgs": "nixpkgs_26" + "nixpkgs": "nixpkgs_25" }, "locked": { - "lastModified": 1741493092, - "narHash": "sha256-jShBVqU8K5rN8xtsq2JDgq+KInRw3pDbp8SViMIz5pE=", + "lastModified": 1741838758, + "narHash": "sha256-nGTC/y9e+1+QIVCzIbiSpPiXM2HfS8YwIDCp52CcOQ4=", "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "117945c4162d78f2cc7ad578cf44edbbf1ee33fb", + "rev": "03a7fc89bc48344aed00e01b409c1d6ffc4c52ce", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 5eeb4a4..a418e8b 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "DashNix"; inputs = { - nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; + unstable.url = "github:NixOs/nixpkgs/nixos-unstable"; stable.url = "github:NixOs/nixpkgs/nixos-24.11"; nur.url = "github:nix-community/NUR"; @@ -12,7 +12,7 @@ home-manager = { url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "unstable"; }; sops-nix.url = "github:Mic92/sops-nix"; @@ -26,7 +26,7 @@ ironbar = { url = "github:JakeStanger/ironbar"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "unstable"; }; zen-browser.url = "github:youwen5/zen-browser-flake"; @@ -84,7 +84,7 @@ inputs.chaoticNyx.overlays.default ]; }; - pkgs = import inputs.nixpkgs { + unstable = import inputs.unstable { system = currentSystem; config = { allowUnsupportedSystem = true; @@ -103,21 +103,22 @@ inherit self inputs - pkgs + unstable stable ; system = currentSystem; - lib = inputs.nixpkgs.lib; + lib = inputs.unstable.lib; }; docs = import ./docs { - inherit inputs pkgs stable; + inherit inputs; + pkgs = unstable; system = currentSystem; - lib = inputs.nixpkgs.lib; + lib = inputs.unstable.lib; build_systems = dashNixLib.build_systems; }; dashNixInputs = inputs; stablePkgs = stable; - unstablePkgs = pkgs; + unstablePkgs = unstable; modules = ./modules; iso = dashNixLib.buildIso.config.system.build.isoImage; }; diff --git a/home/default.nix b/home/default.nix index 50f1c66..5cd013a 100644 --- a/home/default.nix +++ b/home/default.nix @@ -11,6 +11,8 @@ root, alternativePkgs, system, + stable, + unstable, ... }: { xdg = { @@ -24,7 +26,7 @@ useGlobalPkgs = true; useUserPackages = true; extraSpecialArgs = { - inherit inputs root additionalInputs alternativePkgs system; + inherit inputs root additionalInputs alternativePkgs system stable unstable; }; users.${config.conf.username} = { diff --git a/lib/default.nix b/lib/default.nix index 5bd2ce3..3b01e7e 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,7 +1,7 @@ { inputs, lib, - pkgs, + unstable, self, stable, system, @@ -87,15 +87,17 @@ additionalHomeConfig system root + stable + unstable ; pkgs = lib.mkForce ( if overridePkgs then stable - else pkgs + else unstable ); alternativePkgs = if overridePkgs - then pkgs + then unstable else stable; hostName = name; homeMods = mods.home; @@ -103,7 +105,7 @@ additionalInputs = additionalInputs; }; in - inputs.nixpkgs.lib.nixosSystem { + inputs.unstable.lib.nixosSystem { modules = [ {_module.args = args;} @@ -111,8 +113,8 @@ ] ++ mods.nixos ++ additionalMods.nixos - ++ inputs.nixpkgs.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig - ++ inputs.nixpkgs.lib.optional (builtins.pathExists mod) mod; + ++ inputs.unstable.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig + ++ inputs.unstable.lib.optional (builtins.pathExists mod) mod; }; }) ( @@ -127,9 +129,9 @@ ) ); - buildIso = inputs.nixpkgs.lib.nixosSystem { + buildIso = inputs.unstable.lib.nixosSystem { specialArgs = { - inherit self inputs pkgs; + inherit self inputs unstable; }; modules = [ ../iso/configuration.nix diff --git a/modules/programs/browser/darkeader.patch b/modules/programs/browser/darkeader.patch new file mode 100644 index 0000000..f1663df --- /dev/null +++ b/modules/programs/browser/darkeader.patch @@ -0,0 +1,456 @@ +diff --git a/src/background/user-storage.ts b/src/background/user-storage.ts +index 54612fb3b1f6..298e5032fc94 100644 +--- a/src/background/user-storage.ts ++++ b/src/background/user-storage.ts +@@ -5,7 +5,7 @@ import {PromiseBarrier} from '../utils/promise-barrier'; + import {isURLMatched} from '../utils/url'; + import {validateSettings} from '../utils/validation'; + +-import {readSyncStorage, readLocalStorage, writeSyncStorage, writeLocalStorage, removeSyncStorage, removeLocalStorage} from './utils/extension-api'; ++import {readManagedStorage, readSyncStorage, readLocalStorage, writeSyncStorage, writeLocalStorage, removeSyncStorage, removeLocalStorage} from './utils/extension-api'; + import {logWarn} from './utils/log'; + + +@@ -78,12 +78,7 @@ export default class UserStorage { + return settings; + } + +- private static async loadSettingsFromStorage(): Promise { +- if (UserStorage.loadBarrier) { +- return await UserStorage.loadBarrier.entry(); +- } +- UserStorage.loadBarrier = new PromiseBarrier(); +- ++ private static async loadSettingsFromStorageWithoutManaged(): Promise { + let local = await readLocalStorage(DEFAULT_SETTINGS); + + if (local.schemeVersion < 2) { +@@ -113,10 +108,8 @@ export default class UserStorage { + if (local.syncSettings == null) { + local.syncSettings = DEFAULT_SETTINGS.syncSettings; + } ++ + if (!local.syncSettings) { +- UserStorage.migrateAutomationSettings(local); +- UserStorage.fillDefaults(local); +- UserStorage.loadBarrier.resolve(local); + return local; + } + +@@ -126,18 +119,34 @@ export default class UserStorage { + local.syncSettings = false; + UserStorage.set({syncSettings: false}); + UserStorage.saveSyncSetting(false); +- UserStorage.loadBarrier.resolve(local); + return local; + } + + const {errors: syncCfgErrors} = validateSettings($sync); + syncCfgErrors.forEach((err) => logWarn(err)); ++ return $sync; ++ } ++ ++ private static async loadSettingsFromStorage(): Promise { ++ if (UserStorage.loadBarrier) { ++ return await UserStorage.loadBarrier.entry(); ++ } ++ UserStorage.loadBarrier = new PromiseBarrier(); + +- UserStorage.migrateAutomationSettings($sync); +- UserStorage.fillDefaults($sync); ++ let settings = await UserStorage.loadSettingsFromStorageWithoutManaged(); + +- UserStorage.loadBarrier.resolve($sync); +- return $sync; ++ const managed = await readManagedStorage(settings); ++ const {errors: managedCfgErrors} = validateSettings(managed); ++ if (managedCfgErrors.length === 0) { ++ settings = managed; ++ } else { ++ managedCfgErrors.forEach((err) => logWarn(err)); ++ } ++ ++ UserStorage.migrateAutomationSettings(settings); ++ UserStorage.fillDefaults(settings); ++ UserStorage.loadBarrier.resolve(settings); ++ return settings; + } + + static async saveSettings(): Promise { +diff --git a/src/background/utils/extension-api.ts b/src/background/utils/extension-api.ts +index 6d18fc0919df..6812ac2e4224 100644 +--- a/src/background/utils/extension-api.ts ++++ b/src/background/utils/extension-api.ts +@@ -97,6 +97,19 @@ export async function readLocalStorage(defaults: + }); + } + ++export async function readManagedStorage(defaults: T): Promise { ++ return new Promise((resolve) => { ++ chrome.storage.managed.get(defaults, (managed: T) => { ++ if (chrome.runtime.lastError) { ++ console.error(chrome.runtime.lastError.message); ++ resolve(defaults); ++ return; ++ } ++ resolve(managed); ++ }); ++ }); ++} ++ + function prepareSyncStorage(values: T): {[key: string]: any} { + for (const key in values) { + const value = values[key]; +diff --git a/src/managed-storage.json b/src/managed-storage.json +new file mode 100644 +index 000000000000..e394d0f1ff60 +--- /dev/null ++++ b/src/managed-storage.json +@@ -0,0 +1,304 @@ ++{ ++ ++ "$schema": "http://json-schema.org/draft-07/schema#", ++ "type": "object", ++ "properties": { ++ "schemeVersion": { ++ "type": "integer" ++ }, ++ "enabled": { ++ "type": "boolean" ++ }, ++ "fetchNews": { ++ "type": "boolean" ++ }, ++ "theme": { ++ "$ref": "Theme" ++ }, ++ "presets": { ++ "type": "array", ++ "items": { ++ "$ref": "ThemePreset" ++ } ++ }, ++ "customThemes": { ++ "type": "array", ++ "items": { ++ "$ref": "CustomSiteConfig" ++ } ++ }, ++ "enabledByDefault": { ++ "type": "boolean" ++ }, ++ "enabledFor": { ++ "type": "array", ++ "items": { ++ "type": "string", ++ "minLength": 1 ++ } ++ }, ++ "disabledFor": { ++ "type": "array", ++ "items": { ++ "type": "string", ++ "minLength": 1 ++ } ++ }, ++ "changeBrowserTheme": { ++ "type": "boolean" ++ }, ++ "syncSettings": { ++ "type": "boolean" ++ }, ++ "syncSitesFixes": { ++ "type": "boolean" ++ }, ++ "automation": { ++ "$ref": "Automation" ++ }, ++ "time": { ++ "$ref": "TimeSettings" ++ }, ++ "location": { ++ "$ref": "LocationSettings" ++ }, ++ "previewNewDesign": { ++ "type": "boolean" ++ }, ++ "previewNewestDesign": { ++ "type": "boolean" ++ }, ++ "enableForPDF": { ++ "type": "boolean" ++ }, ++ "enableForProtectedPages": { ++ "type": "boolean" ++ }, ++ "enableContextMenus": { ++ "type": "boolean" ++ }, ++ "detectDarkTheme": { ++ "type": "boolean" ++ }, ++ // Chrome's JSON schema format is weird and doesn't support `definitions` property and thus `#/definitions` references ++ // https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-03 ++ // This "property" mimics it ++ "definitions": { ++ "type": "object", ++ "properties": { ++ "Theme": { ++ "id": "Theme", ++ "type": "object", ++ "properties": { ++ "mode": { ++ "$ref": "FilterMode" ++ }, ++ "brightness": { ++ "type": "integer", ++ "minimum": 0, ++ "maximum": 200 ++ }, ++ "contrast": { ++ "type": "integer", ++ "minimum": 0, ++ "maximum": 200 ++ }, ++ "grayscale": { ++ "type": "integer", ++ "minimum": 0, ++ "maximum": 100 ++ }, ++ "sepia": { ++ "type": "integer", ++ "minimum": 0, ++ "maximum": 100 ++ }, ++ "useFont": { ++ "type": "boolean" ++ }, ++ "fontFamily": { ++ "type": "string", ++ "minLength": 1 ++ }, ++ "textStroke": { ++ "type": "number" ++ }, ++ "engine": { ++ "type": "string", ++ "enum": [ ++ "cssFilter", ++ "svgFilter", ++ "staticTheme", ++ "dynamicTheme" ++ ] ++ }, ++ "stylesheet": { ++ "type": "string" ++ }, ++ "darkSchemeBackgroundColor": { ++ "$ref": "HexColor" ++ }, ++ "darkSchemeTextColor": { ++ "$ref": "HexColor" ++ }, ++ "lightSchemeBackgroundColor": { ++ "$ref": "HexColor" ++ }, ++ "lightSchemeTextColor": { ++ "$ref": "HexColor" ++ }, ++ "scrollbarColor": { ++ "$ref": "HexColorOrAuto" ++ }, ++ "selectionColor": { ++ "$ref": "HexColorOrAuto" ++ }, ++ "styleSystemControls": { ++ "type": "boolean" ++ }, ++ "lightColorScheme": { ++ "type": "string", ++ "minLength": 1 ++ }, ++ "darkColorScheme": { ++ "type": "string", ++ "minLength": 1 ++ }, ++ "immediateModify": { ++ "type": "boolean" ++ } ++ } ++ }, ++ "HexColor": { ++ "id": "HexColor", ++ "type": "string", ++ "pattern": "^[0-9a-f]{6}$" ++ }, ++ "HexColorOrAuto": { ++ "id": "HexColorOrAuto", ++ "type": "string", ++ "pattern": "^([0-9a-f]{6}|auto)$" ++ }, ++ "FilterMode": { ++ "id": "FilterMode", ++ "type": "integer", ++ "enum": [ ++ 0, ++ 1 ++ ] ++ }, ++ "ThemePreset": { ++ "id": "ThemePreset", ++ "type": "object", ++ "properties": { ++ "id": { ++ "type": "string", ++ "minLength": 1 ++ }, ++ "name": { ++ "type": "string", ++ "minLength": 1 ++ }, ++ "urls": { ++ "type": "array", ++ "items": { ++ "type": "string", ++ "minLength": 1 ++ } ++ }, ++ "theme": { ++ "$ref": "Theme" ++ } ++ }, ++ "required": [ ++ "id", ++ "name", ++ "urls", ++ "theme" ++ ] ++ }, ++ "CustomSiteConfig": { ++ "id": "CustomSiteConfig", ++ "type": "object", ++ "properties": { ++ "url": { ++ "type": "array", ++ "items": { ++ "type": "string", ++ "minLength": 1 ++ } ++ }, ++ "theme": { ++ "$ref": "Theme" ++ }, ++ "builtin": { ++ "type": "boolean" ++ } ++ }, ++ "required": [ ++ "url", ++ "theme" ++ ] ++ }, ++ "Automation": { ++ "id": "Automation", ++ "type": "object", ++ "properties": { ++ "enabled": { ++ "type": "boolean" ++ }, ++ "mode": { ++ "$ref": "AutomationMode" ++ }, ++ "behavior": { ++ "type": "string", ++ "enum": [ ++ "OnOff", ++ "Scheme" ++ ] ++ } ++ } ++ }, ++ "AutomationMode": { ++ "id": "AutomationMode", ++ "type": "string", ++ "enum": [ ++ "", ++ "time", ++ "system", ++ "location" ++ ] ++ }, ++ "TimeSettings": { ++ "id": "TimeSettings", ++ "type": "object", ++ "properties": { ++ "activation": { ++ "$ref": "Time" ++ }, ++ "deactivation": { ++ "$ref": "Time" ++ } ++ } ++ }, ++ "Time": { ++ "id": "Time", ++ "type": "string", ++ "pattern": "^((0?[0-9])|(1[0-9])|(2[0-3])):([0-5][0-9])$" ++ }, ++ "LocationSettings": { ++ "id": "LocationSettings", ++ "type": "object", ++ "properties": { ++ "latitude": { ++ "type": "number" ++ }, ++ "longitude": { ++ "type": "number" ++ } ++ } ++ } ++ } ++ } ++ } ++} +diff --git a/tasks/bundle-manifest.js b/tasks/bundle-manifest.js +index ae29531e67b7..f4058a129f52 100644 +--- a/tasks/bundle-manifest.js ++++ b/tasks/bundle-manifest.js +@@ -4,6 +4,7 @@ import {PLATFORM} from './platform.js'; + import * as reload from './reload.js'; + import {createTask} from './task.js'; + import {readJSON, writeJSON} from './utils.js'; ++import {copyFile} from 'node:fs/promises'; + + async function patchManifest(platform, debug, watch, test) { + const manifest = await readJSON(absolutePath('src/manifest.json')); +@@ -16,6 +17,11 @@ async function patchManifest(platform, debug, watch, test) { + if (platform === PLATFORM.CHROMIUM_MV3) { + patched.browser_action = undefined; + } ++ if (platform === PLATFORM.CHROMIUM_MV2 || platform === PLATFORM.CHROMIUM_MV3) { ++ patched.storage = { ++ managed_schema: 'managed-storage.json', ++ }; ++ } + if (debug) { + patched.version = '1'; + patched.description = `Debug build, platform: ${platform}, watch: ${watch ? 'yes' : 'no'}.`; +@@ -42,6 +48,9 @@ async function manifests({platforms, debug, watch, test}) { + const manifest = await patchManifest(platform, debug, watch, test); + const destDir = getDestDir({debug, platform}); + await writeJSON(`${destDir}/manifest.json`, manifest); ++ if (platform === PLATFORM.CHROMIUM_MV2 || platform === PLATFORM.CHROMIUM_MV3) { ++ await copyFile(absolutePath('src/managed-storage.json'), `${destDir}/managed-storage.json`); ++ } + } + } + +@@ -49,7 +58,7 @@ const bundleManifestTask = createTask( + 'bundle-manifest', + manifests, + ).addWatcher( +- ['src/manifest*.json'], ++ ['src/manifest*.json', 'src/managed-storage.json'], + async (changedFiles, _, buildPlatforms) => { + const chrome = changedFiles.some((file) => file.endsWith('manifest.json')); + const platforms = {}; diff --git a/modules/programs/browser/darkreader.nix b/modules/programs/browser/darkreader.nix new file mode 100644 index 0000000..a1c462a --- /dev/null +++ b/modules/programs/browser/darkreader.nix @@ -0,0 +1,23 @@ +# credits to Voronind for darkreader config https://github.com/voronind-com/nix/blob/main/home/program/firefox/default.nix +{ + lib, + stable, + ... +}: +stable.buildNpmPackage rec { + version = "4.9.99"; + pname = "dark-reader"; + npmDepsHash = "sha256-m41HkwgbeRRmxJALQFJl/grYjjIqFOc47ltaesob1FA="; + env.ESBUILD_BINARY_PATH = lib.getExe stable.esbuild; + patches = [./darkeader.patch]; + src = stable.fetchFromGitHub { + hash = "sha256-K375/4qOyE1Tp/T5V5uCGcNd1IVVbT1Pjdnq/8oRHj0="; + owner = "darkreader"; + repo = "darkreader"; + rev = "v${version}"; + }; + installPhase = '' + mkdir -p $out + cp build/release/darkreader-firefox.xpi $out/latest.xpi + ''; +} diff --git a/modules/programs/browser/foxwrappers.nix b/modules/programs/browser/foxwrappers.nix index fc166cb..e5c39a7 100644 --- a/modules/programs/browser/foxwrappers.nix +++ b/modules/programs/browser/foxwrappers.nix @@ -9,8 +9,8 @@ in { "zen-browser" ]; name = "Zen Browser"; - wrappedPackageName = "zen-browser-unwrapped"; - unwrappedPackageName = "zen-browser"; + wrappedPackageName = "zen"; + unwrappedPackageName = "zen-unwrapped"; visible = true; platforms = { linux = { diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index 33f2da8..375756c 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -1,11 +1,25 @@ +# credits to Voronind for darkreader config https://github.com/voronind-com/nix/blob/main/home/program/firefox/default.nix { lib, config, options, inputs, + stable, + system, pkgs, ... -}: { +}: let + # at time of using this here, stylix might not be evaluated yet + # hence ensure it is by using base16 mkSchemeAttrs + base16 = pkgs.callPackage inputs.base16.lib {}; + scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; + mkExtension = id: install_url: { + ${id} = { + inherit install_url; + installation_mode = "normal_installed"; + }; + }; +in { options.mods.browser.zen = { enable = lib.mkOption { default = false; @@ -13,6 +27,37 @@ type = lib.types.bool; description = "Enables the zen browser"; }; + extensions = lib.mkOption { + default = [ + (mkExtension "uBlock0@raymondhill.net" "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi") + (mkExtension "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}" "https://addons.mozilla.org/firefox/downloads/latest/user-agent-string-switcher/latest.xpi") + (mkExtension "{d7742d87-e61d-4b78-b8a1-b469842139fa}" "https://addons.mozilla.org/firefox/downloads/latest/vimium-ff/latest.xpi") + (mkExtension "firefox@ghostery.com" "https://addons.mozilla.org/firefox/downloads/latest/ghostery/latest.xpi") + (mkExtension "CanvasBlocker@kkapsner.de" "https://addons.mozilla.org/firefox/downloads/latest/canvasblocker/latest.xpi") + (mkExtension "jid1-KKzOGWgsW3Ao4Q@jetpack" "https://addons.mozilla.org/firefox/downloads/latest/i-dont-care-about-cookies/latest.xpi") + (mkExtension "keepassxc-browser@keepassxc.org" "https://addons.mozilla.org/firefox/downloads/latest/keepassxc-browser/latest.xpi") + (mkExtension "@react-devtools" "https://addons.mozilla.org/firefox/downloads/latest/react-devtools/latest.xpi") + (mkExtension "extension@redux.devtools" "https://addons.mozilla.org/firefox/downloads/latest/reduxdevtools/latest.xpi") + (mkExtension "private-relay@firefox.com" "https://addons.mozilla.org/firefox/downloads/latest/private-relay/latest.xpi") + (mkExtension "addon@darkreader.org" "file://${pkgs.callPackage ./darkreader.nix {inherit lib stable;}}/latest.xpi") + ]; + example = []; + type = with lib.types; listOf anything; + description = '' + List of extensions via attrsets: + ```nix + # id + # figure out the id via: + # nix run github:tupakkatapa/mozid -- 'https://addons.mozilla.org/en/firefox/addon/ublock-origin' + "uBlock0@raymondhill.net" = { + # install url + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + # method https://mozilla.github.io/policy-templates/#extensionsettings + installation_mode = "force_installed"; + }; + ``` + ''; + }; configuration = lib.mkOption { default = { EnableTrackingProtection = { @@ -22,15 +67,10 @@ Fingerprinting = true; }; DisablePocket = true; - DisplayBookmarksToolbar = "never"; - DisplayMenuBar = "default-off"; CaptivePortal = false; DisableFirefoxStudies = true; DisableTelemetry = true; - DisableFirefoxAccounts = false; NoDefaultBookmarks = true; - OfferToSaveLogins = false; - OfferToSaveLoginsDefault = false; PasswordManagerEnabled = false; FirefoxHome = { Search = true; @@ -43,27 +83,22 @@ ExtensionRecommendations = false; SkipOnboarding = true; }; + "3rdparty".Extensions = { + "addon@darkreader.org" = { + theme = { + darkSchemeBackgroundColor = "#${scheme.base00}"; + darkSchemeTextColor = "#${scheme.base05}"; + }; + previewNewDesign = true; + }; + }; }; example = {}; type = with lib.types; attrsOf anything; description = "Zen policy configuration. See https://mozilla.github.io/policy-templates for more information."; }; profiles = lib.mkOption { - default = let - extensions = [ - pkgs.nur.repos.rycee.firefox-addons.darkreader - pkgs.nur.repos.rycee.firefox-addons.ublock-origin - pkgs.nur.repos.rycee.firefox-addons.ghostery - pkgs.nur.repos.rycee.firefox-addons.canvasblocker - pkgs.nur.repos.rycee.firefox-addons.i-dont-care-about-cookies - pkgs.nur.repos.rycee.firefox-addons.keepassxc-browser - pkgs.nur.repos.rycee.firefox-addons.vimium - pkgs.nur.repos.rycee.firefox-addons.react-devtools - pkgs.nur.repos.rycee.firefox-addons.reduxdevtools - pkgs.nur.repos.rycee.firefox-addons.user-agent-string-switcher - pkgs.nur.repos.rycee.firefox-addons.private-relay - ]; - in [ + default = [ { name = "${config.conf.username}"; value = { @@ -76,7 +111,6 @@ zen.theme.accent-color = "#b4bbff"; extensions.autoDisableScopes = 0; }; - extensions.packages = extensions; isDefault = true; id = 0; }; @@ -93,7 +127,6 @@ zen.theme.accent-color = "#b4bbff"; extensions.autoDisableScopes = 0; }; - extensions.packages = extensions; isDefault = false; id = 1; }; @@ -122,25 +155,15 @@ enable = true; package = pkgs.wrapFirefox - (inputs.zen-browser.packages.${pkgs.system}.default.overrideAttrs (prevAttrs: { - passthru = - prevAttrs.passthru - or {} - // { - applicationName = "Zen Browser"; - binaryName = "zen"; - - ffmpegSupport = true; - gssSupport = true; - gtk3 = pkgs.gtk3; - }; - })) + inputs.zen-browser.packages.${system}.zen-browser-unwrapped { - icon = "zen-beta"; - wmClass = "zen"; - hasMozSystemDirPatch = false; + pname = "zen-browser"; + extraPolicies = + config.mods.browser.zen.configuration + // { + ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} config.mods.browser.zen.extensions; + }; }; - policies = config.mods.browser.zen.configuration; profiles = builtins.listToAttrs config.mods.browser.zen.profiles; }; } diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix index 2df11b5..0f67be2 100644 --- a/modules/programs/drives.nix +++ b/modules/programs/drives.nix @@ -129,7 +129,7 @@ defaultDiskId = lib.mkOption { default = "TODO"; example = "/dev/nvme0n1"; - type = lib.types.string; + type = lib.types.str; description = "The name, ID, UUID or similar for the default drive."; }; rootAmount = lib.mkOption { diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index 8df753f..d96036b 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -3,6 +3,7 @@ options, config, pkgs, + inputs, ... }: let # TODO remove when chromium works again @@ -147,24 +148,18 @@ in { then { firefox = { enable = true; - policies = config.mods.browser.firefox.configuration; - profiles = builtins.listToAttrs config.mods.browser.firefox.profiles; }; } else if config.mods.homePackages.browser == "zen" then { zen-browser = { enable = true; - policies = config.mods.browser.zen.configuration; - profiles = builtins.listToAttrs config.mods.browser.zen.profiles; }; } else if config.mods.homePackages.browser == "librewolf" then { librewolf-dashnix = { enable = true; - policies = config.mods.browser.librewolf.configuration; - profiles = builtins.listToAttrs config.mods.browser.librewolf.profiles; }; } else {} From 5443370f169cef4ef05d0f90e10edfbdd8b93d43 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 15 Mar 2025 15:45:11 +0100 Subject: [PATCH 224/330] Fix brightness script --- modules/programs/hyprland/hyprland.nix | 4 ++-- modules/programs/scripts.nix | 8 +------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 5b16349..fe25f14 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -164,8 +164,8 @@ in { ",XF86AudioPlay,exec, playerctl play-pause" ",XF86AudioNext,exec, playerctl next" ",XF86AudioPrev,exec, playerctl previous" - (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessDown,exec, change-brightness brightness 10%-") - (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessUp,exec, change-brightness brightness +10%") + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessDown,exec, changeBrightness brightness 10%-") + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessUp,exec, changeBrightness brightness +10%") # hyprland keybinds # misc diff --git a/modules/programs/scripts.nix b/modules/programs/scripts.nix index e17a96b..ce0f4f0 100644 --- a/modules/programs/scripts.nix +++ b/modules/programs/scripts.nix @@ -30,15 +30,9 @@ [ (lib.mkIf config.mods.scripts.changeBrightness ( pkgs.writeShellScriptBin "changeBrightness" '' - set_brightness() { brightnessctl set "$1" CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') - dunstify -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%" - } - - if [ "$1" == "brightness" ]; then - set_brightness "$2" - fi + notify-send -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%" '' )) (lib.mkIf config.mods.scripts.audioControl ( From 7c70384da2c8b53ba837a216da5b3922259c5c44 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 15 Mar 2025 17:37:06 +0100 Subject: [PATCH 225/330] Rework docs and add streamcontroller --- .github/workflows/docs.yaml | 2 +- .github/workflows/release.yaml | 3 +- docs/default.nix | 34 +++- home/default.nix | 2 +- .../programs/browser => lib}/foxwrappers.nix | 0 modules/conf.nix | 11 -- modules/programs/browser/zen.nix | 2 +- modules/programs/default.nix | 1 + modules/programs/hyprland/hyprland.nix | 176 +++++++++--------- modules/programs/streamcontroller.nix | 37 ++++ .../browser => patches}/darkeader.patch | 0 .../browser => patches}/darkreader.nix | 0 12 files changed, 156 insertions(+), 112 deletions(-) rename {modules/programs/browser => lib}/foxwrappers.nix (100%) create mode 100644 modules/programs/streamcontroller.nix rename {modules/programs/browser => patches}/darkeader.patch (100%) rename {modules/programs/browser => patches}/darkreader.nix (100%) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 015dc25..62524cb 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -21,7 +21,7 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} extra-conf: | - extra-experimental-features = nix-command flakes + extra-experimental-features = nix-command flakes pipe-operators - name: Set up cache uses: DeterminateSystems/magic-nix-cache-action@main diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 193d5e7..84bda95 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -15,7 +15,7 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} extra-conf: | - extra-experimental-features = nix-command flakes + extra-experimental-features = nix-command flakes pipe-operators - name: Set up cache uses: DeterminateSystems/magic-nix-cache-action@main - name: Build ISO @@ -27,4 +27,3 @@ jobs: uses: softprops/action-gh-release@v1 with: path: path/ - diff --git a/docs/default.nix b/docs/default.nix index f7e9622..65a0659 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -14,15 +14,35 @@ echo "- [${name}](${name}.md)" >> src/SUMMARY.md ''; system = (build_systems {root = ../example/.;})."example".options; - makeOptionsDocPrograms = name: pkgs.nixosOptionsDoc {options = system.mods.${name};}; + makeOptionsDocPrograms = names: pkgs.nixosOptionsDoc {options = lib.attrByPath (lib.splitString "." names) null system.mods;}; conf = makeOptionsDoc system.conf; - paths = builtins.readDir ../modules/programs; - names = lib.lists.remove "default" ( - map (name: lib.strings.removeSuffix ".nix" name) (lib.attrsets.mapAttrsToList (name: _: name) paths) + basePath = ../modules/programs; + pathToAttrs = path: + lib.attrsets.mapAttrsToList ( + name: meta: { + name = name; + meta = meta; + } + ) + (builtins.readDir path); + pathToStrings = path: prefix: let + mapFn = attrs: + if attrs.meta == "directory" + then pathToStrings "${basePath}/${attrs.name}" attrs.name + else if prefix != "" + then "${prefix}.${attrs.name}" + else attrs.name; + in + map + mapFn + (pathToAttrs path); + filteredNames = builtins.filter (names: !(lib.strings.hasInfix "default" names)) ( + map (name: lib.strings.removeSuffix ".nix" name) (lib.lists.flatten (pathToStrings basePath "")) ); - mods = map makeOptionsDocPrograms names; - docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods)); - summary = lib.strings.concatStringsSep " " (map summaryAppend names); + deduplicatedNames = map (name: lib.strings.splitString "." name |> lib.lists.unique |> lib.strings.concatStringsSep "." ) filteredNames; + mods = map makeOptionsDocPrograms deduplicatedNames; + docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists deduplicatedNames mods)); + summary = lib.strings.concatStringsSep " " (map summaryAppend deduplicatedNames); in pkgs.stdenvNoCC.mkDerivation { name = "dashNix-book"; diff --git a/home/default.nix b/home/default.nix index 5cd013a..6e178e2 100644 --- a/home/default.nix +++ b/home/default.nix @@ -35,7 +35,7 @@ ./common.nix ./themes ./sync.nix - ../modules/programs/browser/foxwrappers.nix + ../lib/foxwrappers.nix ] ++ homeMods ++ additionalHomeMods diff --git a/modules/programs/browser/foxwrappers.nix b/lib/foxwrappers.nix similarity index 100% rename from modules/programs/browser/foxwrappers.nix rename to lib/foxwrappers.nix diff --git a/modules/conf.nix b/modules/conf.nix index a9e9734..2cfc57b 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -104,17 +104,6 @@ ''; }; - streamdeck = { - enable = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = '' - Install streamdeck configuration program. - ''; - }; - }; - kernelOverride = lib.mkOption { default = null; type = with lib.types; nullOr package; diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index 375756c..b9840d0 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -39,7 +39,7 @@ in { (mkExtension "@react-devtools" "https://addons.mozilla.org/firefox/downloads/latest/react-devtools/latest.xpi") (mkExtension "extension@redux.devtools" "https://addons.mozilla.org/firefox/downloads/latest/reduxdevtools/latest.xpi") (mkExtension "private-relay@firefox.com" "https://addons.mozilla.org/firefox/downloads/latest/private-relay/latest.xpi") - (mkExtension "addon@darkreader.org" "file://${pkgs.callPackage ./darkreader.nix {inherit lib stable;}}/latest.xpi") + (mkExtension "addon@darkreader.org" "file://${pkgs.callPackage ../../../patches/darkreader.nix {inherit lib stable;}}/latest.xpi") ]; example = []; type = with lib.types; listOf anything; diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 3248690..f46243c 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -34,6 +34,7 @@ ./sddm.nix ./sops.nix ./starship.nix + ./streamcontroller.nix ./stylix.nix ./supersonic.nix ./sway.nix diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index fe25f14..25dcc05 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -13,95 +13,93 @@ then config.mods.homePackages.browser.meta.mainProgram else config.mods.homePackages.browser.pname; in { - options.mods = { - hyprland = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enable Hyprland - ''; - }; - monitor = lib.mkOption { - default = [ - # main monitor - "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" - # all others - ",highrr,auto,1" - ]; - example = ["DP-1,3440x1440@180,2560x0,1,vrr,0"]; - type = with lib.types; listOf str; - description = '' - The monitor configuration for hyprland. - ''; - }; - workspace = lib.mkOption { - default = []; - example = ["2,monitor:DP-1, default:true"]; - type = with lib.types; listOf str; - description = '' - The workspace configuration for hyprland. - ''; - }; - noAtomic = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = '' - Use tearing - ''; - }; - extraAutostart = lib.mkOption { - default = []; - example = ["your application"]; - type = lib.types.listOf lib.types.str; - description = '' - Extra exec_once. - ''; - }; - useDefaultConfig = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Use preconfigured Hyprland config. - ''; - }; - customConfig = lib.mkOption { - default = {}; - example = {}; - type = with lib.types; attrsOf anything; - description = '' - Custom Hyprland configuration. - Will be merged with default configuration if enabled. - ''; - }; - plugins = lib.mkOption { - default = []; - example = []; - type = with lib.types; listOf package; - description = '' - Plugins to be added to Hyprland. - ''; - }; - pluginConfig = lib.mkOption { - default = {}; - example = {}; - type = with lib.types; attrsOf anything; - description = '' - Plugin configuration to be added to Hyprland. - ''; - }; - hyprspaceEnable = lib.mkOption { - default = false; - type = lib.types.bool; - example = true; - description = '' - Enables Hyprspace plugin for hyprland. - Please note, plugins tend to break VERY often. - ''; - }; + options.mods.hyprland = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enable Hyprland + ''; + }; + monitor = lib.mkOption { + default = [ + # main monitor + "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" + # all others + ",highrr,auto,1" + ]; + example = ["DP-1,3440x1440@180,2560x0,1,vrr,0"]; + type = with lib.types; listOf str; + description = '' + The monitor configuration for hyprland. + ''; + }; + workspace = lib.mkOption { + default = []; + example = ["2,monitor:DP-1, default:true"]; + type = with lib.types; listOf str; + description = '' + The workspace configuration for hyprland. + ''; + }; + noAtomic = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Use tearing + ''; + }; + extraAutostart = lib.mkOption { + default = []; + example = ["your application"]; + type = lib.types.listOf lib.types.str; + description = '' + Extra exec_once. + ''; + }; + useDefaultConfig = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use preconfigured Hyprland config. + ''; + }; + customConfig = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = '' + Custom Hyprland configuration. + Will be merged with default configuration if enabled. + ''; + }; + plugins = lib.mkOption { + default = []; + example = []; + type = with lib.types; listOf package; + description = '' + Plugins to be added to Hyprland. + ''; + }; + pluginConfig = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = '' + Plugin configuration to be added to Hyprland. + ''; + }; + hyprspaceEnable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables Hyprspace plugin for hyprland. + Please note, plugins tend to break VERY often. + ''; }; }; diff --git a/modules/programs/streamcontroller.nix b/modules/programs/streamcontroller.nix new file mode 100644 index 0000000..4db158b --- /dev/null +++ b/modules/programs/streamcontroller.nix @@ -0,0 +1,37 @@ +{ + lib, + pkgs, + config, + options, + ... +}: { + options.mods = { + streamcontroller = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables starship prompt + ''; + }; + configFilePath = lib.mkOption { + default = null; + type = with lib.types; nullOr path; + description = '' + Path to the config json for the streamcontroller. + -> ./something.json + ''; + }; + }; + }; + + config = lib.mkIf config.mods.streamcontroller.enable ( + lib.optionalAttrs (options ? environment.systemPackages) { + programs.streamcontroller.enable = true; + } + // (lib.optionalAttrs (options ? home.file) { + home.file."var/app/com.core447.StreamController/data/pages/defaultpage.json".path = lib.mkIf (!isNull config.mods.streamcontroller.path) config.mods.streamcontroller.path; + }) + ); +} diff --git a/modules/programs/browser/darkeader.patch b/patches/darkeader.patch similarity index 100% rename from modules/programs/browser/darkeader.patch rename to patches/darkeader.patch diff --git a/modules/programs/browser/darkreader.nix b/patches/darkreader.nix similarity index 100% rename from modules/programs/browser/darkreader.nix rename to patches/darkreader.nix From b461a27228a120e66d0e531dcb8832ab0afb3d50 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 16 Mar 2025 17:49:06 +0100 Subject: [PATCH 226/330] Fix streamcontroller --- modules/programs/browser/brave.nix | 2 +- modules/programs/browser/chromium.nix | 2 +- modules/programs/browser/firefox.nix | 2 +- modules/programs/browser/librewolf.nix | 2 +- modules/programs/browser/zen.nix | 2 +- modules/programs/homePackages.nix | 27 ++++---------------------- modules/programs/streamcontroller.nix | 12 +++++++----- 7 files changed, 16 insertions(+), 33 deletions(-) diff --git a/modules/programs/browser/brave.nix b/modules/programs/browser/brave.nix index 9a09e7e..404fddd 100644 --- a/modules/programs/browser/brave.nix +++ b/modules/programs/browser/brave.nix @@ -14,7 +14,7 @@ }; # TODO configure brave }; - config = lib.mkIf config.mods.browser.brave.enable ( + config = lib.mkIf (config.mods.browser.brave.enable || config.mods.homePackages.browser == "brave") ( lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [brave]; } diff --git a/modules/programs/browser/chromium.nix b/modules/programs/browser/chromium.nix index 7ed237a..5d48046 100644 --- a/modules/programs/browser/chromium.nix +++ b/modules/programs/browser/chromium.nix @@ -14,7 +14,7 @@ }; # TODO configure chromium }; - config = lib.mkIf config.mods.browser.chromium.enable ( + config = lib.mkIf (config.mods.browser.chromium.enable || config.mods.homePackages.browser == "chromium") ( lib.optionalAttrs (options ? home.packages) { home.packages = with pkgs; [chromium]; } diff --git a/modules/programs/browser/firefox.nix b/modules/programs/browser/firefox.nix index 1bb07d7..01722c9 100644 --- a/modules/programs/browser/firefox.nix +++ b/modules/programs/browser/firefox.nix @@ -78,7 +78,7 @@ description = "Firefox profiles"; }; }; - config = lib.mkIf config.mods.browser.firefox.enable ( + config = lib.mkIf (config.mods.browser.firefox.enable || config.mods.homePackages.browser == "firefox") ( lib.optionalAttrs (options ? programs.firefox.profiles) { programs.firefox = { enable = true; diff --git a/modules/programs/browser/librewolf.nix b/modules/programs/browser/librewolf.nix index 8bbbfd5..713423c 100644 --- a/modules/programs/browser/librewolf.nix +++ b/modules/programs/browser/librewolf.nix @@ -78,7 +78,7 @@ description = "Librewolf profiles"; }; }; - config = lib.mkIf config.mods.browser.librewolf.enable ( + config = lib.mkIf (config.mods.browser.librewolf.enable || config.mods.homePackages.browser == "librewolf") ( lib.optionalAttrs (options ? home.packages) { programs.librewolf-dashnix = { enable = true; diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index b9840d0..4c5c078 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -149,7 +149,7 @@ in { description = "Zen profiles"; }; }; - config = lib.mkIf config.mods.browser.zen.enable ( + config = lib.mkIf (config.mods.browser.zen.enable || config.mods.homePackages.browser == "firefox") ( lib.optionalAttrs (options ? home.packages) { programs.zen-browser = { enable = true; diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index d96036b..1235bda 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -80,12 +80,15 @@ in { "firefox" "zen" "librewolf" + "chromium" + "brave" ]) package ); description = "The browser (the enum variants have preconfigured modules)"; }; }; + config = lib.optionalAttrs (options ? home.packages) { home.packages = if config.mods.homePackages.useDefaultPackages @@ -141,29 +144,7 @@ in { warn_timeout = "-1s"; }; }; - programs = - config.mods.homePackages.specialPrograms - // ( - if config.mods.homePackages.browser == "firefox" - then { - firefox = { - enable = true; - }; - } - else if config.mods.homePackages.browser == "zen" - then { - zen-browser = { - enable = true; - }; - } - else if config.mods.homePackages.browser == "librewolf" - then { - librewolf-dashnix = { - enable = true; - }; - } - else {} - ); + programs = config.mods.homePackages.specialPrograms; services = config.mods.homePackages.specialServices; }; } diff --git a/modules/programs/streamcontroller.nix b/modules/programs/streamcontroller.nix index 4db158b..544367f 100644 --- a/modules/programs/streamcontroller.nix +++ b/modules/programs/streamcontroller.nix @@ -1,6 +1,5 @@ { lib, - pkgs, config, options, ... @@ -8,11 +7,11 @@ options.mods = { streamcontroller = { enable = lib.mkOption { - default = true; - example = false; + default = false; + example = true; type = lib.types.bool; description = '' - Enables starship prompt + Enables streamcontroller ''; }; configFilePath = lib.mkOption { @@ -31,7 +30,10 @@ programs.streamcontroller.enable = true; } // (lib.optionalAttrs (options ? home.file) { - home.file."var/app/com.core447.StreamController/data/pages/defaultpage.json".path = lib.mkIf (!isNull config.mods.streamcontroller.path) config.mods.streamcontroller.path; + home.file.".var/app/com.core447.StreamController/data/pages/defaultpage.json" = + lib.mkIf + (!isNull config.mods.streamcontroller.configFilePath) + {source = config.mods.streamcontroller.configFilePath;}; }) ); } From 16e3985e87353f69a2b8c1a811ad51f06cd2b334 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 16 Mar 2025 17:49:06 +0100 Subject: [PATCH 227/330] Fix streamcontroller --- base/common_hardware.nix | 1 - flake.lock | 2648 ------------------------------ modules/programs/browser/zen.nix | 2 +- 3 files changed, 1 insertion(+), 2650 deletions(-) delete mode 100644 flake.lock diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 988e2ba..ede1c08 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -88,7 +88,6 @@ in { auto-optimise-store = true; experimental-features = "nix-command flakes pipe-operators"; - }; }; diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 46c9e0f..0000000 --- a/flake.lock +++ /dev/null @@ -1,2648 +0,0 @@ -{ - "nodes": { - "Hyprspace": { - "inputs": { - "hyprland": [ - "hyprland" - ], - "systems": "systems" - }, - "locked": { - "lastModified": 1740777046, - "narHash": "sha256-hPp+DnTYjE6M9Mdau7inbqMeLR1SpSPVyuxd+nabwaA=", - "owner": "KZDKM", - "repo": "Hyprspace", - "rev": "b5c8adb16f4729572c67883da1bcb46e11f195d6", - "type": "github" - }, - "original": { - "owner": "KZDKM", - "repo": "Hyprspace", - "type": "github" - } - }, - "anyrun": { - "inputs": { - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs", - "systems": "systems_2" - }, - "locked": { - "lastModified": 1735301051, - "narHash": "sha256-jU88Q9tP4vuvWYGQcmOdFwI9e2uMPVYJHbXdiklIH9o=", - "owner": "Kirottu", - "repo": "anyrun", - "rev": "06017e753c8886d5296768dca80745ee09402a2d", - "type": "github" - }, - "original": { - "owner": "Kirottu", - "repo": "anyrun", - "type": "github" - } - }, - "aquamarine": { - "inputs": { - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "hyprwayland-scanner": [ - "hyprland", - "hyprwayland-scanner" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1741282631, - "narHash": "sha256-jZE1CmQ53uN1Gq4FjaLFzSSjDqzL0pG4mdRbjBqSmho=", - "owner": "hyprwm", - "repo": "aquamarine", - "rev": "81498562d0f53e613d30368bb5b076784fa86f80", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "aquamarine", - "type": "github" - } - }, - "base16": { - "inputs": { - "fromYaml": "fromYaml" - }, - "locked": { - "lastModified": 1732200724, - "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", - "owner": "SenchoPens", - "repo": "base16.nix", - "rev": "153d52373b0fb2d343592871009a286ec8837aec", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "base16.nix", - "type": "github" - } - }, - "base16-fish": { - "flake": false, - "locked": { - "lastModified": 1622559957, - "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", - "owner": "tomyun", - "repo": "base16-fish", - "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", - "type": "github" - }, - "original": { - "owner": "tomyun", - "repo": "base16-fish", - "type": "github" - } - }, - "base16-helix": { - "flake": false, - "locked": { - "lastModified": 1736852337, - "narHash": "sha256-esD42YdgLlEh7koBrSqcT7p2fsMctPAcGl/+2sYJa2o=", - "owner": "tinted-theming", - "repo": "base16-helix", - "rev": "03860521c40b0b9c04818f2218d9cc9efc21e7a5", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "base16-helix", - "type": "github" - } - }, - "base16-vim": { - "flake": false, - "locked": { - "lastModified": 1732806396, - "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", - "owner": "tinted-theming", - "repo": "base16-vim", - "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "base16-vim", - "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", - "type": "github" - } - }, - "base16_2": { - "inputs": { - "fromYaml": "fromYaml_2" - }, - "locked": { - "lastModified": 1732200724, - "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", - "owner": "SenchoPens", - "repo": "base16.nix", - "rev": "153d52373b0fb2d343592871009a286ec8837aec", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "base16.nix", - "type": "github" - } - }, - "base16_3": { - "inputs": { - "fromYaml": "fromYaml_3" - }, - "locked": { - "lastModified": 1732200724, - "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", - "owner": "SenchoPens", - "repo": "base16.nix", - "rev": "153d52373b0fb2d343592871009a286ec8837aec", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "base16.nix", - "type": "github" - } - }, - "blink": { - "inputs": { - "fenix": "fenix_2", - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_3" - }, - "locked": { - "lastModified": 1741016004, - "narHash": "sha256-2iNZP6Znrk6/orVEKR8VCYWIr71L0cwaRMWjRNbvAjA=", - "owner": "Saghen", - "repo": "blink.cmp", - "rev": "273bb364d8601dd72ca0b657079f4624bc76c3af", - "type": "github" - }, - "original": { - "owner": "Saghen", - "repo": "blink.cmp", - "type": "github" - } - }, - "chaoticNyx": { - "inputs": { - "fenix": "fenix", - "flake-schemas": "flake-schemas", - "home-manager": "home-manager", - "jovian": "jovian", - "nixpkgs": "nixpkgs_2" - }, - "locked": { - "lastModified": 1741572691, - "narHash": "sha256-CsX+uf0w7FGx/bMraCBzU9BQu9A3iaWnY7nV/Sbq6Js=", - "owner": "chaotic-cx", - "repo": "nyx", - "rev": "ebc0b86d16f902b79d6345a4ec365716b4495f3f", - "type": "github" - }, - "original": { - "owner": "chaotic-cx", - "ref": "nyxpkgs-unstable", - "repo": "nyx", - "type": "github" - } - }, - "crane": { - "locked": { - "lastModified": 1739936662, - "narHash": "sha256-x4syUjNUuRblR07nDPeLDP7DpphaBVbUaSoeZkFbGSk=", - "owner": "ipetkov", - "repo": "crane", - "rev": "19de14aaeb869287647d9461cbd389187d8ecdb7", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "dashvim": { - "inputs": { - "base16": "base16_2", - "blink": "blink", - "flake-parts": "flake-parts_3", - "nixpkgs": "nixpkgs_4", - "nixvim": "nixvim" - }, - "locked": { - "lastModified": 1741038146, - "narHash": "sha256-j+GXUXWx88sAdRSRAXdvixnJxfDH8rWcQ473MuhklJ0=", - "owner": "DashieTM", - "repo": "DashVim", - "rev": "cd82156b3b32a6bbb06bc4a4c16e0303d523e655", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "DashVim", - "type": "github" - } - }, - "disko": { - "inputs": { - "nixpkgs": "nixpkgs_6" - }, - "locked": { - "lastModified": 1736864502, - "narHash": "sha256-ItkIZyebGvNH2dK9jVGzJHGPtb6BSWLN8Gmef16NeY0=", - "owner": "nix-community", - "repo": "disko", - "rev": "0141aabed359f063de7413f80d906e1d98c0c123", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "latest", - "repo": "disko", - "type": "github" - } - }, - "fenix": { - "inputs": { - "nixpkgs": [ - "chaoticNyx", - "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src" - }, - "locked": { - "lastModified": 1741329193, - "narHash": "sha256-niB60+AZBnp535cwvu5jU+K/cKfJeaWqt3GtrDMlLU0=", - "owner": "nix-community", - "repo": "fenix", - "rev": "232581de4261157f316848773574d1f5895805f3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_2": { - "inputs": { - "nixpkgs": [ - "dashvim", - "blink", - "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src_2" - }, - "locked": { - "lastModified": 1734676450, - "narHash": "sha256-iwcxhTVe4h5TqW0HsNiOQP27eMBmbBshF+q2UjEy5aU=", - "owner": "nix-community", - "repo": "fenix", - "rev": "46e19fa0eb3260b2c3ee5b2cf89e73343c1296ab", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "firefox-gnome-theme": { - "flake": false, - "locked": { - "lastModified": 1739223196, - "narHash": "sha256-vAxN2f3rvl5q62gQQjZGVSvF93nAsOxntuFz+e/655w=", - "owner": "rafaelmardojai", - "repo": "firefox-gnome-theme", - "rev": "a89108e6272426f4eddd93ba17d0ea101c34fb21", - "type": "github" - }, - "original": { - "owner": "rafaelmardojai", - "repo": "firefox-gnome-theme", - "type": "github" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_2": { - "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "anyrun", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1727826117, - "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_10": { - "inputs": { - "nixpkgs-lib": [ - "oxipaste", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1722555600, - "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_11": { - "inputs": { - "nixpkgs-lib": [ - "oxishut", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_12": { - "inputs": { - "nixpkgs-lib": [ - "reset", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1738453229, - "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_13": { - "inputs": { - "nixpkgs-lib": [ - "reset-plugins", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_14": { - "inputs": { - "nixpkgs-lib": [ - "stylix", - "nur", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, - "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_3": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_2" - }, - "locked": { - "lastModified": 1740872218, - "narHash": "sha256-ZaMw0pdoUKigLpv9HiNDH2Pjnosg7NBYMJlHTIsHEUo=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "3876f6b87db82f33775b1ef5ea343986105db764", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": [ - "dashvim", - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1738453229, - "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_5": { - "inputs": { - "nixpkgs-lib": [ - "hyprdock", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_6": { - "inputs": { - "nixpkgs-lib": [ - "nur", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_7": { - "inputs": { - "nixpkgs-lib": [ - "oxicalc", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_8": { - "inputs": { - "nixpkgs-lib": [ - "oxidash", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_9": { - "inputs": { - "nixpkgs-lib": [ - "oxinoti", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-schemas": { - "locked": { - "lastModified": 1721999734, - "narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=", - "rev": "0a5c42297d870156d9c57d8f99e476b738dcd982", - "revCount": 75, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz" - } - }, - "flake-utils": { - "inputs": { - "systems": "systems_3" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { - "inputs": { - "systems": "systems_5" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "inputs": { - "systems": "systems_6" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { - "inputs": { - "systems": "systems_7" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { - "inputs": { - "systems": "systems_8" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_6": { - "inputs": { - "systems": [ - "stylix", - "systems" - ] - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "fromYaml": { - "flake": false, - "locked": { - "lastModified": 1731966426, - "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", - "owner": "SenchoPens", - "repo": "fromYaml", - "rev": "106af9e2f715e2d828df706c386a685698f3223b", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "fromYaml", - "type": "github" - } - }, - "fromYaml_2": { - "flake": false, - "locked": { - "lastModified": 1731966426, - "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", - "owner": "SenchoPens", - "repo": "fromYaml", - "rev": "106af9e2f715e2d828df706c386a685698f3223b", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "fromYaml", - "type": "github" - } - }, - "fromYaml_3": { - "flake": false, - "locked": { - "lastModified": 1731966426, - "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", - "owner": "SenchoPens", - "repo": "fromYaml", - "rev": "106af9e2f715e2d828df706c386a685698f3223b", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "fromYaml", - "type": "github" - } - }, - "git-hooks": { - "inputs": { - "flake-compat": [ - "stylix", - "flake-compat" - ], - "gitignore": "gitignore_2", - "nixpkgs": [ - "stylix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1737465171, - "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "hyprland", - "pre-commit-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_2": { - "inputs": { - "nixpkgs": [ - "stylix", - "git-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gnome-shell": { - "flake": false, - "locked": { - "lastModified": 1732369855, - "narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=", - "owner": "GNOME", - "repo": "gnome-shell", - "rev": "dadd58f630eeea41d645ee225a63f719390829dc", - "type": "github" - }, - "original": { - "owner": "GNOME", - "ref": "47.2", - "repo": "gnome-shell", - "type": "github" - } - }, - "home-manager": { - "inputs": { - "nixpkgs": [ - "chaoticNyx", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1741393072, - "narHash": "sha256-+Su28oU1FBvptj1AO0geJP+BcIJghSVxaNFagvW5K2M=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "d2c014e1c73195d1958abec0c5ca6112b07b79da", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_2": { - "inputs": { - "nixpkgs": [ - "unstable" - ] - }, - "locked": { - "lastModified": 1741579508, - "narHash": "sha256-skRbH+UF2ES+msEa+KWi7AQFX73S+QsGlPsyCU6XyE0=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "744f749dd6fbc1489591ea370b95156858629cb9", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_3": { - "inputs": { - "nixpkgs": [ - "stylix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1740347597, - "narHash": "sha256-st5q9egkPGz8TUcVVlIQX7y6G3AzHob+6M963bwVq74=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "12e26a74e5eb1a31e13daaa08858689e25ebd449", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "hyprcursor": { - "inputs": { - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1738664950, - "narHash": "sha256-xIeGNM+iivwVHkv9tHwOqoUP5dDrtees34bbFKKMZYs=", - "owner": "hyprwm", - "repo": "hyprcursor", - "rev": "7c6d165e1eb9045a996551eb9f121b6d1b30adc3", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprcursor", - "type": "github" - } - }, - "hyprdock": { - "inputs": { - "flake-parts": "flake-parts_5", - "nixpkgs": "nixpkgs_7" - }, - "locked": { - "lastModified": 1733264848, - "narHash": "sha256-HVlpDNoxteGWBWn2rybr03uVt4k3AOpswBpa8acbzcY=", - "owner": "DashieTM", - "repo": "hyprdock", - "rev": "a67de182fd3c38dbc3186df9985443062b850e2b", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "hyprdock", - "type": "github" - } - }, - "hyprgraphics": { - "inputs": { - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1739049071, - "narHash": "sha256-3+7TpXMrbsUXSwgr5VAKAnmkzMb6JO+Rvc9XRb5NMg4=", - "owner": "hyprwm", - "repo": "hyprgraphics", - "rev": "175c6b29b6ff82100539e7c4363a35a02c74dd73", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprgraphics", - "type": "github" - } - }, - "hyprland": { - "inputs": { - "aquamarine": "aquamarine", - "hyprcursor": "hyprcursor", - "hyprgraphics": "hyprgraphics", - "hyprland-protocols": "hyprland-protocols", - "hyprland-qtutils": "hyprland-qtutils", - "hyprlang": "hyprlang", - "hyprutils": "hyprutils", - "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_8", - "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems_4", - "xdph": "xdph" - }, - "locked": { - "lastModified": 1741461862, - "narHash": "sha256-oq8drhL7ejjGjcv2Hg5gdESbnCMgv+vVsxiKHNnHmBQ=", - "ref": "refs/heads/main", - "rev": "d30cc19d253a3db784ad10c3084f58cbb52d325a", - "revCount": 5874, - "submodules": true, - "type": "git", - "url": "https://github.com/hyprwm/Hyprland" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://github.com/hyprwm/Hyprland" - } - }, - "hyprland-protocols": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1738422629, - "narHash": "sha256-5v+bv75wJWvahyM2xcMTSNNxmV8a7hb01Eey5zYnBJw=", - "owner": "hyprwm", - "repo": "hyprland-protocols", - "rev": "755aef8dab49d0fc4663c715fa4ad221b2aedaed", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-protocols", - "type": "github" - } - }, - "hyprland-qt-support": { - "inputs": { - "hyprlang": [ - "hyprland", - "hyprland-qtutils", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "hyprland-qtutils", - "nixpkgs" - ], - "systems": [ - "hyprland", - "hyprland-qtutils", - "systems" - ] - }, - "locked": { - "lastModified": 1737634706, - "narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=", - "owner": "hyprwm", - "repo": "hyprland-qt-support", - "rev": "8810df502cdee755993cb803eba7b23f189db795", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-qt-support", - "type": "github" - } - }, - "hyprland-qtutils": { - "inputs": { - "hyprland-qt-support": "hyprland-qt-support", - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "hyprutils": [ - "hyprland", - "hyprland-qtutils", - "hyprlang", - "hyprutils" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1739048983, - "narHash": "sha256-REhTcXq4qs3B3cCDtLlYDz0GZvmsBSh947Ub6pQWGTQ=", - "owner": "hyprwm", - "repo": "hyprland-qtutils", - "rev": "3504a293c8f8db4127cb0f7cfc1a318ffb4316f8", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-qtutils", - "type": "github" - } - }, - "hyprlang": { - "inputs": { - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1741191527, - "narHash": "sha256-kM+11Nch47Xwfgtw2EpRitJuORy4miwoMuRi5tyMBDY=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "72df3861f1197e41b078faa3e38eedd60e00018d", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprutils": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1741123584, - "narHash": "sha256-mprerMlucqtirmbx6L3VoFnF2bGYc2WSUCj7tuc6xTQ=", - "owner": "hyprwm", - "repo": "hyprutils", - "rev": "6b0154b183f9539097f13af9b5da78ca24da6df2", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprutils", - "type": "github" - } - }, - "hyprwayland-scanner": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1739870480, - "narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=", - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "type": "github" - } - }, - "ironbar": { - "inputs": { - "crane": "crane", - "naersk": "naersk", - "nixpkgs": [ - "unstable" - ], - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1741037542, - "narHash": "sha256-ZyodYB5R2KJzTZjIHZMA8AwDfaZIuOD/5vDP2VvrE1Q=", - "owner": "JakeStanger", - "repo": "ironbar", - "rev": "00e5ac8191edd5e039c4ea1b96845b14047298b2", - "type": "github" - }, - "original": { - "owner": "JakeStanger", - "repo": "ironbar", - "type": "github" - } - }, - "ixx": { - "inputs": { - "flake-utils": [ - "dashvim", - "nixvim", - "nuschtosSearch", - "flake-utils" - ], - "nixpkgs": [ - "dashvim", - "nixvim", - "nuschtosSearch", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1729958008, - "narHash": "sha256-EiOq8jF4Z/zQe0QYVc3+qSKxRK//CFHMB84aYrYGwEs=", - "owner": "NuschtOS", - "repo": "ixx", - "rev": "9fd01aad037f345350eab2cd45e1946cc66da4eb", - "type": "github" - }, - "original": { - "owner": "NuschtOS", - "ref": "v0.0.6", - "repo": "ixx", - "type": "github" - } - }, - "jovian": { - "inputs": { - "nix-github-actions": "nix-github-actions", - "nixpkgs": [ - "chaoticNyx", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1741338475, - "narHash": "sha256-+vAXiFRQ6ykBX7iFI20rV+xMyOVNtULbFWy6BHKPP+0=", - "owner": "Jovian-Experiments", - "repo": "Jovian-NixOS", - "rev": "1821e6ae980ff6175d28065ad6d0c87560d2b8ea", - "type": "github" - }, - "original": { - "owner": "Jovian-Experiments", - "repo": "Jovian-NixOS", - "type": "github" - } - }, - "naersk": { - "inputs": { - "nixpkgs": "nixpkgs_9" - }, - "locked": { - "lastModified": 1739824009, - "narHash": "sha256-fcNrCMUWVLMG3gKC5M9CBqVOAnJtyRvGPxptQFl5mVg=", - "owner": "nix-community", - "repo": "naersk", - "rev": "e5130d37369bfa600144c2424270c96f0ef0e11d", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "naersk", - "type": "github" - } - }, - "nix-flatpak": { - "locked": { - "lastModified": 1739444422, - "narHash": "sha256-iAVVHi7X3kWORftY+LVbRiStRnQEob2TULWyjMS6dWg=", - "owner": "gmodena", - "repo": "nix-flatpak", - "rev": "5e54c3ca05a7c7d968ae1ddeabe01d2a9bc1e177", - "type": "github" - }, - "original": { - "owner": "gmodena", - "repo": "nix-flatpak", - "type": "github" - } - }, - "nix-github-actions": { - "inputs": { - "nixpkgs": [ - "chaoticNyx", - "jovian", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1729697500, - "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", - "owner": "zhaofengli", - "repo": "nix-github-actions", - "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", - "type": "github" - }, - "original": { - "owner": "zhaofengli", - "ref": "matrix-name", - "repo": "nix-github-actions", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1730200266, - "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib": { - "locked": { - "lastModified": 1733096140, - "narHash": "sha256-1qRH7uAUsyQI7R1Uwl4T+XvdNv778H0Nb5njNrqvylY=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" - } - }, - "nixpkgs-lib_2": { - "locked": { - "lastModified": 1740872140, - "narHash": "sha256-3wHafybyRfpUCLoE8M+uPVZinImg3xX+Nm6gEfN3G8I=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/6d3702243441165a03f699f64416f635220f4f15.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/6d3702243441165a03f699f64416f635220f4f15.tar.gz" - } - }, - "nixpkgs_10": { - "locked": { - "lastModified": 1741379970, - "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_12": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_13": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_14": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_15": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_16": { - "locked": { - "lastModified": 1723637854, - "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_17": { - "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_18": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_19": { - "locked": { - "lastModified": 1739446958, - "narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "2ff53fe64443980e139eaa286017f53f88336dd0", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1741379970, - "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "36fd87baa9083f34f7f5027900b62ee6d09b1f2f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_20": { - "locked": { - "lastModified": 1736320768, - "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_21": { - "locked": { - "lastModified": 1716948383, - "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_22": { - "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_23": { - "locked": { - "lastModified": 1731763621, - "narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c69a9bffbecde46b4b939465422ddc59493d3e4d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_24": { - "locked": { - "lastModified": 1740367490, - "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0196c0175e9191c474c26ab5548db27ef5d34b05", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_25": { - "locked": { - "lastModified": 1741513245, - "narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "e3e32b642a31e6714ec1b712de8c91a3352ce7e1", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1736166416, - "narHash": "sha256-U47xeACNBpkSO6IcCm0XvahsVXpJXzjPIQG7TZlOToU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "b30f97d8c32d804d2d832ee837d0f1ca0695faa5", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1740828860, - "narHash": "sha256-cjbHI+zUzK5CPsQZqMhE3npTyYFt9tJ3+ohcfaOF/WM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "303bd8071377433a2d8f76e684ec773d70c5b642", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1738797219, - "narHash": "sha256-KRwX9Z1XavpgeSDVM/THdFd6uH8rNm/6R+7kIbGa+2s=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1da52dd49a127ad74486b135898da2cef8c62665", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1736241350, - "narHash": "sha256-CHd7yhaDigUuJyDeX0SADbTM9FXfiWaeNyY34FL1wQU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "8c9fd3e564728e90829ee7dbac6edc972971cd0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_7": { - "locked": { - "lastModified": 1716330097, - "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_8": { - "locked": { - "lastModified": 1741246872, - "narHash": "sha256-Q6pMP4a9ed636qilcYX8XUguvKl/0/LGXhHcRI91p0U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "10069ef4cf863633f57238f179a0297de84bd8d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_9": { - "locked": { - "lastModified": 1740547748, - "narHash": "sha256-Ly2fBL1LscV+KyCqPRufUBuiw+zmWrlJzpWOWbahplg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3a05eebede89661660945da1f151959900903b6a", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixvim": { - "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_5", - "nuschtosSearch": "nuschtosSearch" - }, - "locked": { - "lastModified": 1740520037, - "narHash": "sha256-TpZMYjOre+6GhKDVHFwoW2iBWqpNQppQTuqIAo+OBV8=", - "owner": "nix-community", - "repo": "nixvim", - "rev": "6f8d8f7aee84f377f52c8bb58385015f9168a666", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixvim", - "type": "github" - } - }, - "nur": { - "inputs": { - "flake-parts": "flake-parts_6", - "nixpkgs": "nixpkgs_10", - "treefmt-nix": "treefmt-nix" - }, - "locked": { - "lastModified": 1741581473, - "narHash": "sha256-GN1Jkhs5jBJnMzbY5ok8fK07Vr/RSOxOL+QMSx5mAHA=", - "owner": "nix-community", - "repo": "NUR", - "rev": "05607425540ace50b41392637ea33b23bff0d2c7", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "NUR", - "type": "github" - } - }, - "nur_2": { - "inputs": { - "flake-parts": "flake-parts_14", - "nixpkgs": [ - "stylix", - "nixpkgs" - ], - "treefmt-nix": "treefmt-nix_2" - }, - "locked": { - "lastModified": 1740408283, - "narHash": "sha256-2xECnhgF3MU9YjmvOkrRp8wRFo2OjjewgCtlfckhL5s=", - "owner": "nix-community", - "repo": "NUR", - "rev": "496a4a11162bdffb9a7b258942de138873f019f7", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "NUR", - "type": "github" - } - }, - "nuschtosSearch": { - "inputs": { - "flake-utils": "flake-utils", - "ixx": "ixx", - "nixpkgs": [ - "dashvim", - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1738508923, - "narHash": "sha256-4DaDrQDAIxlWhTjH6h/+xfG05jt3qDZrZE/7zDLQaS4=", - "owner": "NuschtOS", - "repo": "search", - "rev": "86e2038290859006e05ca7201425ea5b5de4aecb", - "type": "github" - }, - "original": { - "owner": "NuschtOS", - "repo": "search", - "type": "github" - } - }, - "oxicalc": { - "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_11" - }, - "locked": { - "lastModified": 1733264508, - "narHash": "sha256-5JN+XBh4HFuxiinRW2rRNTTknmuCnE4g8djxCMsGirE=", - "owner": "DashieTM", - "repo": "OxiCalc", - "rev": "82f3632cbcf02e6ad5326082cd6d43d64edb0a13", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiCalc", - "type": "github" - } - }, - "oxidash": { - "inputs": { - "flake-parts": "flake-parts_8", - "nixpkgs": "nixpkgs_12", - "rust-overlay": "rust-overlay_2" - }, - "locked": { - "lastModified": 1733264230, - "narHash": "sha256-hrQ+d2qHR/lMW5s8iQ6S3GAGeidRToih963Y5lUjDaE=", - "owner": "DashieTM", - "repo": "OxiDash", - "rev": "fae92da1f0cd44efbeb75c3b3407430dc9a69448", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiDash", - "type": "github" - } - }, - "oxinoti": { - "inputs": { - "flake-parts": "flake-parts_9", - "nixpkgs": "nixpkgs_14", - "rust-overlay": "rust-overlay_3" - }, - "locked": { - "lastModified": 1733261311, - "narHash": "sha256-g6kbtp1MQUBavadCoJdSB1/2TtaNzjtC7wn48luJQ5k=", - "owner": "DashieTM", - "repo": "OxiNoti", - "rev": "68c48590ffdae7b70339de0f1d4807a45435db9b", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiNoti", - "type": "github" - } - }, - "oxipaste": { - "inputs": { - "flake-parts": "flake-parts_10", - "nixpkgs": "nixpkgs_16" - }, - "locked": { - "lastModified": 1737624143, - "narHash": "sha256-256aX66hq37tVhfimOmFrrHOba+E7hMvsVYxEvVPrmI=", - "owner": "DashieTM", - "repo": "OxiPaste", - "rev": "54beb71d3545825d4888f971fe54b1bc0dc2a62a", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiPaste", - "type": "github" - } - }, - "oxishut": { - "inputs": { - "flake-parts": "flake-parts_11", - "nixpkgs": "nixpkgs_17", - "rust-overlay": "rust-overlay_4" - }, - "locked": { - "lastModified": 1733262922, - "narHash": "sha256-fBgCJPyIBHMOJ4C54PmCVItcHwu7gTrVeSKkWkXXv2A=", - "owner": "DashieTM", - "repo": "OxiShut", - "rev": "3d3060e4e3668dbd8bd1f7b3a81728245de58d94", - "type": "github" - }, - "original": { - "owner": "DashieTM", - "repo": "OxiShut", - "type": "github" - } - }, - "pre-commit-hooks": { - "inputs": { - "flake-compat": "flake-compat", - "gitignore": "gitignore", - "nixpkgs": [ - "hyprland", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1741379162, - "narHash": "sha256-srpAbmJapkaqGRE3ytf3bj4XshspVR5964OX5LfjDWc=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "b5a62751225b2f62ff3147d0a334055ebadcd5cc", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, - "reset": { - "inputs": { - "flake-parts": "flake-parts_12", - "nixpkgs": "nixpkgs_19", - "rust-overlay": "rust-overlay_5" - }, - "locked": { - "lastModified": 1739632626, - "narHash": "sha256-ReEPsodGJDp3AUOoi+t7pQZaYZiZFxyz9TDEveSiBkI=", - "owner": "Xetibo", - "repo": "ReSet", - "rev": "f229ed7dea514bc7307cea8682553afd9584eaaa", - "type": "github" - }, - "original": { - "owner": "Xetibo", - "repo": "ReSet", - "type": "github" - } - }, - "reset-plugins": { - "inputs": { - "flake-parts": "flake-parts_13", - "nixpkgs": "nixpkgs_21", - "rust-overlay": "rust-overlay_6" - }, - "locked": { - "lastModified": 1718300175, - "narHash": "sha256-kPeJJ/au+jV4jhyAhkLI3uwqK7pEDjdVJvwDmtQq8/k=", - "owner": "Xetibo", - "repo": "ReSet-Plugins", - "rev": "8d3af2fab9425f8b89fb7b82b4e23eba12a42f85", - "type": "github" - }, - "original": { - "owner": "Xetibo", - "repo": "ReSet-Plugins", - "type": "github" - } - }, - "root": { - "inputs": { - "Hyprspace": "Hyprspace", - "anyrun": "anyrun", - "base16": "base16", - "chaoticNyx": "chaoticNyx", - "dashvim": "dashvim", - "disko": "disko", - "home-manager": "home-manager_2", - "hyprdock": "hyprdock", - "hyprland": "hyprland", - "ironbar": "ironbar", - "nix-flatpak": "nix-flatpak", - "nur": "nur", - "oxicalc": "oxicalc", - "oxidash": "oxidash", - "oxinoti": "oxinoti", - "oxipaste": "oxipaste", - "oxishut": "oxishut", - "reset": "reset", - "reset-plugins": "reset-plugins", - "sops-nix": "sops-nix", - "stable": "stable", - "stylix": "stylix", - "unstable": "unstable", - "zen-browser": "zen-browser" - } - }, - "rust-analyzer-src": { - "flake": false, - "locked": { - "lastModified": 1741300343, - "narHash": "sha256-Engmn908XKEy/hmriudPQbX1QWr7ySpmQg9HbTigiME=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "21a88a3767c4a6b3f211ed12174b923be851e1c6", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-analyzer-src_2": { - "flake": false, - "locked": { - "lastModified": 1734622712, - "narHash": "sha256-2Oc2LbFypF1EG3zTVIVcuT5XFJ7R3oAwu2tS8B0qQ0I=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "fe027d79d22f2a7645da4143f5cc0f5f56239b97", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-overlay": { - "inputs": { - "nixpkgs": [ - "ironbar", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1740709839, - "narHash": "sha256-4dF++MXIXna/AwlZWDKr7bgUmY4xoEwvkF1GewjNrt0=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "b4270835bf43c6f80285adac6f66a26d83f0f277", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { - "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_13" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_3": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_15" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_4": { - "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_18" - }, - "locked": { - "lastModified": 1716171463, - "narHash": "sha256-lc7wOh5BjYUoxdhcPkeUY8BmuL2qtRaHlW1403RW48E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "04d61d14803854fd8453ec43c5c53a471e5407a8", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_5": { - "inputs": { - "nixpkgs": "nixpkgs_20" - }, - "locked": { - "lastModified": 1739586408, - "narHash": "sha256-UN9hRKRE1eLU8C0cioTZubaCZQTA8NDc8/4vCpS5pS0=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "3dbc0ce1c0690b83cfb9a9a51fbe90c3bc8f9916", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_6": { - "inputs": { - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_22" - }, - "locked": { - "lastModified": 1717035469, - "narHash": "sha256-MzH+yjKULH3HCRj9QCTwBvqq4LZkR0ZqRE/QfGOGC2E=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "095702e63a40e86f339d11864da9dc965b70a01e", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "sops-nix": { - "inputs": { - "nixpkgs": "nixpkgs_23" - }, - "locked": { - "lastModified": 1741043164, - "narHash": "sha256-9lfmSZLz6eq9Ygr6cCmvQiiBEaPb54pUBcjvbEMPORc=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "3f2412536eeece783f0d0ad3861417f347219f4d", - "type": "github" - }, - "original": { - "owner": "Mic92", - "repo": "sops-nix", - "type": "github" - } - }, - "stable": { - "locked": { - "lastModified": 1741445498, - "narHash": "sha256-F5Em0iv/CxkN5mZ9hRn3vPknpoWdcdCyR0e4WklHwiE=", - "owner": "NixOs", - "repo": "nixpkgs", - "rev": "52e3095f6d812b91b22fb7ad0bfc1ab416453634", - "type": "github" - }, - "original": { - "owner": "NixOs", - "ref": "nixos-24.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "stylix": { - "inputs": { - "base16": "base16_3", - "base16-fish": "base16-fish", - "base16-helix": "base16-helix", - "base16-vim": "base16-vim", - "firefox-gnome-theme": "firefox-gnome-theme", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_6", - "git-hooks": "git-hooks", - "gnome-shell": "gnome-shell", - "home-manager": "home-manager_3", - "nixpkgs": "nixpkgs_24", - "nur": "nur_2", - "systems": "systems_9", - "tinted-foot": "tinted-foot", - "tinted-kitty": "tinted-kitty", - "tinted-schemes": "tinted-schemes", - "tinted-tmux": "tinted-tmux", - "tinted-zed": "tinted-zed" - }, - "locked": { - "lastModified": 1741533345, - "narHash": "sha256-wStpjHkVAuwYvs3oNSLWz8A2QkicfrGlP4rw2+OiyAU=", - "owner": "danth", - "repo": "stylix", - "rev": "a76068262cfc16c04f9c07a6458715548b067450", - "type": "github" - }, - "original": { - "owner": "danth", - "repo": "stylix", - "type": "github" - } - }, - "systems": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_2": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_4": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_5": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_6": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_7": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_8": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_9": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "tinted-foot": { - "flake": false, - "locked": { - "lastModified": 1726913040, - "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=", - "owner": "tinted-theming", - "repo": "tinted-foot", - "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "tinted-foot", - "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", - "type": "github" - } - }, - "tinted-kitty": { - "flake": false, - "locked": { - "lastModified": 1716423189, - "narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=", - "owner": "tinted-theming", - "repo": "tinted-kitty", - "rev": "eb39e141db14baef052893285df9f266df041ff8", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "tinted-kitty", - "rev": "eb39e141db14baef052893285df9f266df041ff8", - "type": "github" - } - }, - "tinted-schemes": { - "flake": false, - "locked": { - "lastModified": 1740351358, - "narHash": "sha256-Hdk850xgAd3DL8KX0AbyU7tC834d3Lej1jOo3duWiOA=", - "owner": "tinted-theming", - "repo": "schemes", - "rev": "a1bc2bd89e693e7e3f5764cfe8114e2ae150e184", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "schemes", - "type": "github" - } - }, - "tinted-tmux": { - "flake": false, - "locked": { - "lastModified": 1740272597, - "narHash": "sha256-/etfUV3HzAaLW3RSJVwUaW8ULbMn3v6wbTlXSKbcoWQ=", - "owner": "tinted-theming", - "repo": "tinted-tmux", - "rev": "b6c7f46c8718cc484f2db8b485b06e2a98304cd0", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "tinted-tmux", - "type": "github" - } - }, - "tinted-zed": { - "flake": false, - "locked": { - "lastModified": 1725758778, - "narHash": "sha256-8P1b6mJWyYcu36WRlSVbuj575QWIFZALZMTg5ID/sM4=", - "owner": "tinted-theming", - "repo": "base16-zed", - "rev": "122c9e5c0e6f27211361a04fae92df97940eccf9", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "base16-zed", - "type": "github" - } - }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "nur", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733222881, - "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "49717b5af6f80172275d47a418c9719a31a78b53", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, - "treefmt-nix_2": { - "inputs": { - "nixpkgs": [ - "stylix", - "nur", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733222881, - "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "49717b5af6f80172275d47a418c9719a31a78b53", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, - "unstable": { - "locked": { - "lastModified": 1741851582, - "narHash": "sha256-cPfs8qMccim2RBgtKGF+x9IBCduRvd/N5F4nYpU0TVE=", - "owner": "NixOs", - "repo": "nixpkgs", - "rev": "6607cf789e541e7873d40d3a8f7815ea92204f32", - "type": "github" - }, - "original": { - "owner": "NixOs", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "xdph": { - "inputs": { - "hyprland-protocols": [ - "hyprland", - "hyprland-protocols" - ], - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "hyprwayland-scanner": [ - "hyprland", - "hyprwayland-scanner" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1737634991, - "narHash": "sha256-dBAnb7Kbnier30cA7AgxVSxxARmxKZ1vHZT33THSIr8=", - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "rev": "e09dfe2726c8008f983e45a0aa1a3b7416aaeb8a", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "type": "github" - } - }, - "zen-browser": { - "inputs": { - "nixpkgs": "nixpkgs_25" - }, - "locked": { - "lastModified": 1741838758, - "narHash": "sha256-nGTC/y9e+1+QIVCzIbiSpPiXM2HfS8YwIDCp52CcOQ4=", - "owner": "youwen5", - "repo": "zen-browser-flake", - "rev": "03a7fc89bc48344aed00e01b409c1d6ffc4c52ce", - "type": "github" - }, - "original": { - "owner": "youwen5", - "repo": "zen-browser-flake", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index 4c5c078..a3b6095 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -149,7 +149,7 @@ in { description = "Zen profiles"; }; }; - config = lib.mkIf (config.mods.browser.zen.enable || config.mods.homePackages.browser == "firefox") ( + config = lib.mkIf (config.mods.browser.zen.enable || config.mods.homePackages.browser == "zen") ( lib.optionalAttrs (options ? home.packages) { programs.zen-browser = { enable = true; From 41b539eea86d6d418ff3ec7a5de5565a75fe3887 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 17 Mar 2025 20:43:38 +0100 Subject: [PATCH 228/330] Theme ironbar --- modules/conf.nix | 16 -------- modules/programs/browser/zen.nix | 1 + modules/programs/coding.nix | 1 + modules/programs/hyprland/ironbar.nix | 57 +++++++++++++++++---------- 4 files changed, 39 insertions(+), 36 deletions(-) diff --git a/modules/conf.nix b/modules/conf.nix index 2cfc57b..55ec2b9 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -79,22 +79,6 @@ ''; }; - ironbar = { - modules = lib.mkOption { - default = []; - example = [ - { - type = "upower"; - class = "memory-usage"; - } - ]; - type = with lib.types; listOf attrs; - description = '' - Adds modules to ironbar. See https://github.com/JakeStanger/ironbar/wiki/ for more information. - ''; - }; - }; - bootParams = lib.mkOption { default = []; example = ["resume=something"]; diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index a3b6095..b1c3169 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -110,6 +110,7 @@ in { zen.view.welcome-screen.seen = true; zen.theme.accent-color = "#b4bbff"; extensions.autoDisableScopes = 0; + cookiebanners.service.mode = 2; }; isDefault = true; id = 0; diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index f69835d..781f9e1 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -251,6 +251,7 @@ default = with pkgs; [ # broke #bear + gdb gcc clang-tools ]; diff --git a/modules/programs/hyprland/ironbar.nix b/modules/programs/hyprland/ironbar.nix index cb16289..8e60c8b 100644 --- a/modules/programs/hyprland/ironbar.nix +++ b/modules/programs/hyprland/ironbar.nix @@ -1,10 +1,14 @@ { lib, config, + pkgs, + inputs, options, ... }: let username = config.conf.username; + base16 = pkgs.callPackage inputs.base16.lib {}; + scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; in { options.mods = { hyprland.ironbar = { @@ -22,6 +26,19 @@ in { Use preconfigured ironbar config. ''; }; + modules = lib.mkOption { + default = []; + example = [ + { + type = "upower"; + class = "memory-usage"; + } + ]; + type = with lib.types; listOf attrs; + description = '' + Adds modules to ironbar. See https://github.com/JakeStanger/ironbar/wiki/ for more information. + ''; + }; customConfig = lib.mkOption { default = {}; example = {}; @@ -61,11 +78,14 @@ in { style = if config.mods.hyprland.ironbar.useDefaultCss then + /* + css + */ '' @import url("/home/${username}/.config/gtk-3.0/gtk.css"); * { - color: #71bbe6; + color: #${scheme.base0D}; padding: 0px; margin: 0px; } @@ -77,8 +97,7 @@ in { .workspaces { margin: 2px 0px 0px 5px; border-radius: 10px; - /* background-color: #2b2c3b; */ - background-color: #1E1E2E; + background-color: #${scheme.base00}; padding: 2px 5px 2px 5px; } @@ -91,16 +110,16 @@ in { } .workspaces .item:hover { - background-color: #3e4152; + background-color: #${scheme.base02}; } .workspaces .item.focused { - background-color: #3e4152; + background-color: #${scheme.base02}; } .audio-box { padding: 2em; - background-color: #1E1E2E; + background-color: #${scheme.base00}; border-radius: 5px; } @@ -121,10 +140,8 @@ in { } .focused { - /* margin: 2px 0px 0px 0px; */ padding: 0px 5px 0px 5px; - /* background-color: 1a1b26; */ - background-color: #1E1E2E; + background-color: #${scheme.base00}; font-size: 17px; border-radius: 10px; } @@ -132,7 +149,7 @@ in { #bar #end { margin: 0px 5px 0px 0px; padding: 0px 5px 0px 5px; - background-color: #1E1E2E; + background-color: #${scheme.base00}; border-radius: 10px; } @@ -141,7 +158,7 @@ in { margin: 0em 3px; border-radius: 100%; font-size: 13px; - background-color: #1E1E2E; + background-color: #${scheme.base00}; } .popup-button-box { @@ -151,19 +168,19 @@ in { .clock { padding: 0px 5px 0px 5px; font-size: 17px; - background-color: #1E1E2E; + background-color: #${scheme.base00}; } .clock:hover { - background-color: #3e4152; + background-color: #${scheme.base02}; } .custom button { - background-color: #1E1E2E; + background-color: #${scheme.base00}; } .custom button:hover { - background-color: #3e4152; + background-color: #${scheme.base02}; } .memory-usage { @@ -172,11 +189,11 @@ in { } .memory-usage:hover { - background-color: #3e4152; + background-color: #${scheme.base02}; } .popup-clock { - background-color: #1E1E2E; + background-color: #${scheme.base00}; border-radius: 5px; padding: 2px 8px 10px 8px; } @@ -192,7 +209,7 @@ in { } .popup-clock .calendar:selected { - background-color: #3e4152; + background-color: #${scheme.base02}; } '' + config.mods.hyprland.ironbar.customCss @@ -206,11 +223,11 @@ in { then { end = - config.conf.ironbar.modules + config.mods.hyprland.ironbar.modules ++ [ { type = "sys_info"; - format = [" {memory_percent}"]; + format = [" {memory_percent}"]; interval.memory = 30; class = "memory-usage"; } From 867e56cdf1927f5d00cb296d8247c6f8357e693d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 27 Mar 2025 14:38:55 +0100 Subject: [PATCH 229/330] Add orca slicer --- modules/programs/homePackages.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index 1235bda..4714f91 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -59,6 +59,12 @@ in { type = lib.types.bool; description = "Adds the ncspot spotify client"; }; + orcaSlicer = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables orca slicer"; + }; nextcloudClient = lib.mkOption { default = false; example = true; @@ -96,6 +102,7 @@ in { with pkgs; [ (lib.mkIf config.mods.homePackages.ncspot ncspot) + (lib.mkIf config.mods.homePackages.orcaSlicer orca-slicer) (lib.mkIf config.mods.homePackages.vesktop fixedVesktop) (lib.mkIf config.mods.homePackages.nextcloudClient nextcloud-client) (lib.mkIf (!isNull config.mods.homePackages.matrixClient) config.mods.homePackages.matrixClient) From 46f4507034c629d17bb8124858e24c1d2044e16b Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 28 Mar 2025 08:05:56 +0100 Subject: [PATCH 230/330] Update hyprland windowrules --- modules/programs/hyprland/hyprland.nix | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 25dcc05..ab8bf53 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -341,22 +341,16 @@ in { windowrule = [ # window rules - "tile,^(.*)(Spotify)(.*)$" - "float,^(.*)(OxiCalc)(.*)$" - "float,^(.*)(winecfg.exe)(.*)$" - "float,^(.*)(speed.exe)(.*)$" - "float,^(.*)(copyq)(.*)$" - "center,^(.*)(swappy)(.*)$" - "float,title:^(.*)(Spirit)(.*)$" + "float,class:^(.*)(OxiCalc)(.*)$" + "float,class:^(.*)(winecfg.exe)(.*)$" + "float,class:^(.*)(copyq)(.*)$" + "center,class:^(.*)(swappy)(.*)$" "float,title:^(.*)(reset)(.*)$" - "workspace 10 silent,^(.*)(steam)(.*)$" - "workspace 9 silent,^(.*)(dota)(.*)$" - "workspace 9 silent,^(.*)(battlebits)(.*)$" - "workspace 9 silent,^(.*)(aoe)(.*)$" - "suppressevent fullscreen maximize,^(.*)(neovide)(.*)$" - ]; - - windowrulev2 = [ + "workspace 10 silent,class:^(.*)(steam)(.*)$" + "workspace 9 silent,class:^(.*)(dota)(.*)$" + "workspace 9 silent,class:^(.*)(battlebits)(.*)$" + "workspace 9 silent,class:^(.*)(aoe)(.*)$" + "suppressevent fullscreen maximize,class:^(.*)(neovide)(.*)$" "immediate,class:^(.*)(Pal)$" "immediate,class:^(.*)(dota2)$" "immediate,class:^(.*)(needforspeedheat.exe)$" From ac6cf624541aabffb66d80d708713ae79177ed0d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 11 Apr 2025 09:52:53 +0200 Subject: [PATCH 231/330] Use unstable for adwaita fonts --- modules/programs/stylix.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index cd00501..515f45c 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -2,6 +2,7 @@ lib, config, options, + unstable, pkgs, ... }: { @@ -59,17 +60,17 @@ fonts = lib.mkOption { default = { serif = { - package = pkgs.adwaita-fonts; + package = unstable.adwaita-fonts; name = "Adwaita Sans"; }; sansSerif = { - package = pkgs.adwaita-fonts; + package = unstable.adwaita-fonts; name = "Adwaita Sans"; }; monospace = { - package = pkgs.nerd-fonts.jetbrains-mono; + package = unstable.nerd-fonts.jetbrains-mono; name = "JetBrainsMono Nerd Font Mono"; }; From 3527bf2d829adca6ff08f9865321a47d9ef11c1c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 13 Apr 2025 19:13:46 +0200 Subject: [PATCH 232/330] Pin and Park cores --- modules/programs/gaming.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 8d1fdd3..2e235bc 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -45,6 +45,18 @@ type = lib.types.bool; description = "Whether to use gamemode"; }; + pinCores = lib.mkOption { + default = "false"; + example = "true"; + type = lib.types.str; + description = "Pin Cores gamemode config"; + }; + parkCores = lib.mkOption { + default = "false"; + example = "true"; + type = lib.types.str; + description = "Park Cores gamemode config"; + }; gpuOptimization = lib.mkOption { default = true; example = false; @@ -72,6 +84,10 @@ general = { desiredgov = "performance"; }; + cpu = { + pin_cores = config.mods.gaming.pinCores; + park_cores = config.mods.gaming.parkCores; + }; gpu = lib.mkIf config.mods.gaming.gpuOptimization { apply_gpu_optimisations = "accept-responsibility"; gpu_device = config.mods.gaming.gpuDevice; From 145ca4d804642820b78c9ba4dfa941369c824f50 Mon Sep 17 00:00:00 2001 From: Dashie Date: Sun, 27 Apr 2025 17:03:19 +0200 Subject: [PATCH 233/330] Replace DashieTM with Xetibo as new owner (#6) * Pin and Park cores * Replace DashieTM with Xetibo as new owner --- docs/src/README.md | 2 +- example/flake.nix | 2 +- flake.nix | 14 +++++++------- home/default.nix | 1 + modules/programs/hyprland/anyrun.nix | 9 ++++----- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/src/README.md b/docs/src/README.md index fa1d1e3..1f42122 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -14,7 +14,7 @@ This flake is intended to be used as an input to your own NixOS configuration: ```nix dashNix = { - url = "github:DashieTM/DashNix"; + url = "github:Xetibo/DashNix"; inputs = { # ensure these are here to update the packages on your own nixpkgs.follows = "nixpkgs"; diff --git a/example/flake.nix b/example/flake.nix index c621766..3e7cb65 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -5,7 +5,7 @@ nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable"; stable.url = "github:NixOs/nixpkgs/nixos-24.05"; dashNix = { - url = "github:DashieTM/DashNix"; + url = "github:Xetibo/DashNix"; inputs = { nixpkgs.follows = "nixpkgs"; stable.follows = "stable"; diff --git a/flake.nix b/flake.nix index a418e8b..eabe92d 100644 --- a/flake.nix +++ b/flake.nix @@ -36,12 +36,12 @@ disko.url = "github:nix-community/disko/latest"; 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"; + oxicalc.url = "github:Xetibo/OxiCalc"; + oxishut.url = "github:Xetibo/OxiShut"; + oxinoti.url = "github:Xetibo/OxiNoti"; + oxidash.url = "github:Xetibo/OxiDash"; + oxipaste.url = "github:Xetibo/OxiPaste"; + hyprdock.url = "github:Xetibo/hyprdock"; reset.url = "github:Xetibo/ReSet"; reset-plugins.url = "github:Xetibo/ReSet-Plugins"; @@ -49,7 +49,7 @@ chaoticNyx.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; dashvim = { - url = "github:DashieTM/DashVim"; + url = "github:Xetibo/DashVim"; }; }; diff --git a/home/default.nix b/home/default.nix index 6e178e2..03c25f9 100644 --- a/home/default.nix +++ b/home/default.nix @@ -30,6 +30,7 @@ }; users.${config.conf.username} = { + disabledModules = ["programs/anyrun.nix"]; imports = [ ./common.nix diff --git a/modules/programs/hyprland/anyrun.nix b/modules/programs/hyprland/anyrun.nix index 832a0be..5b17669 100644 --- a/modules/programs/hyprland/anyrun.nix +++ b/modules/programs/hyprland/anyrun.nix @@ -58,8 +58,8 @@ }; config = lib.mkIf config.mods.hyprland.anyrun.enable ( - lib.optionalAttrs (options ? programs.anyrun) { - programs.anyrun = { + lib.optionalAttrs (options ? home.packages) { + programs.anyrun = lib.mkForce { enable = true; config = if config.mods.hyprland.anyrun.useDefaultConfig @@ -71,7 +71,6 @@ inputs.anyrun.packages.${pkgs.system}.translate inputs.anyrun.packages.${pkgs.system}.websearch ]; - #position = "center"; hideIcons = false; width = { fraction = 0.3; @@ -92,7 +91,7 @@ '' #window { border-radius: 10px; - background-color: none; + background-color: transparent; } box#main { @@ -113,7 +112,7 @@ } entry#entry { - border: none; + border: 0; border-radius: 10px; margin: 10px 10px 0px 10px; } From 3a0b6081c770b64421b605991e9cd0a8c1ec4b93 Mon Sep 17 00:00:00 2001 From: Dashie Date: Mon, 28 Apr 2025 10:59:49 +0200 Subject: [PATCH 234/330] Add oxirun (#7) --- flake.nix | 1 + modules/programs/oxi/default.nix | 3 ++- modules/programs/oxi/oxirun.nix | 20 ++++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 modules/programs/oxi/oxirun.nix diff --git a/flake.nix b/flake.nix index eabe92d..cbc7dae 100644 --- a/flake.nix +++ b/flake.nix @@ -41,6 +41,7 @@ oxinoti.url = "github:Xetibo/OxiNoti"; oxidash.url = "github:Xetibo/OxiDash"; oxipaste.url = "github:Xetibo/OxiPaste"; + oxirun.url = "github:Xetibo/OxiRun"; hyprdock.url = "github:Xetibo/hyprdock"; reset.url = "github:Xetibo/ReSet"; reset-plugins.url = "github:Xetibo/ReSet-Plugins"; diff --git a/modules/programs/oxi/default.nix b/modules/programs/oxi/default.nix index ad31d84..9c3ac57 100644 --- a/modules/programs/oxi/default.nix +++ b/modules/programs/oxi/default.nix @@ -8,8 +8,9 @@ imports = [ ./oxidash.nix ./oxinoti.nix - ./oxishut.nix ./oxipaste.nix + ./oxirun.nix + ./oxishut.nix ]; options.mods.oxi = { enable = lib.mkOption { diff --git a/modules/programs/oxi/oxirun.nix b/modules/programs/oxi/oxirun.nix new file mode 100644 index 0000000..55f4d75 --- /dev/null +++ b/modules/programs/oxi/oxirun.nix @@ -0,0 +1,20 @@ +{ + lib, + config, + options, + ... +}: { + options.mods.oxi.oxirun = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables OxiRun"; + }; + }; + config = lib.mkIf (config.mods.oxi.oxirun.enable && config.mods.oxi.enable) ( + lib.optionalAttrs (options ? xdg.configFile) { + programs.oxirun.enable = true; + } + ); +} From ed401579869c56f35c1c523149388bf1b7d12c65 Mon Sep 17 00:00:00 2001 From: Dashie Date: Mon, 28 Apr 2025 22:40:33 +0200 Subject: [PATCH 235/330] nh update FLAKE env var (#8) --- base/env.nix | 1 + docs/src/README.md | 4 ++-- ltex.dictionary.en-US.txt | 4 ++++ ltex.hiddenFalsePositives.en-US.txt | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 ltex.dictionary.en-US.txt create mode 100644 ltex.hiddenFalsePositives.en-US.txt diff --git a/base/env.nix b/base/env.nix index 8d6b97e..c85a06e 100644 --- a/base/env.nix +++ b/base/env.nix @@ -16,6 +16,7 @@ NIXOS_OZONE_WL = "1"; GOPATH = "$HOME/.go"; FLAKE = config.conf.nixosConfigPath; + NH_FLAKE = config.conf.nixosConfigPath; }; }; } diff --git a/docs/src/README.md b/docs/src/README.md index 1f42122..43f7ac8 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -193,13 +193,13 @@ E.g. stable/hosts/yourserver and unstable/hosts/yourdesktop You can find a custom ISO on my NextCloud server: [Link](https://cloud.dashie.org/s/z7G3zS9SXeEt2ERD). With this, you will receive the example config in /iso/example alongside the gnome desktop environment, -as well as a few tools like gnome-disks, neovim, vscodium, a browser etc. +as well as a few tools like gnome-disks, Neovim, Vscodium, a browser etc. Alternatively, you can use whatever NixOS installer and just install your config from there, just make sure to set the drive configuration before. ## Commands -First, copy the readonly config from /iso/example-config to a location of your choice. +First, copy the read-only config from /iso/example-config to a location of your choice. ```sh cp /iso/example-config ~/config -r diff --git a/ltex.dictionary.en-US.txt b/ltex.dictionary.en-US.txt new file mode 100644 index 0000000..9b935cb --- /dev/null +++ b/ltex.dictionary.en-US.txt @@ -0,0 +1,4 @@ +DashNix +HomeManger +Neovim +Vscodium diff --git a/ltex.hiddenFalsePositives.en-US.txt b/ltex.hiddenFalsePositives.en-US.txt new file mode 100644 index 0000000..5088c1d --- /dev/null +++ b/ltex.hiddenFalsePositives.en-US.txt @@ -0,0 +1 @@ +{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QYou can find a custom ISO on my NextCloud server: Link.\\E$"} From 8cf9a40763605d896729c1a60fb7c06066e91894 Mon Sep 17 00:00:00 2001 From: Dashie Date: Mon, 28 Apr 2025 22:48:29 +0200 Subject: [PATCH 236/330] Fix oxirun (#9) --- lib/default.nix | 1 + ltex.dictionary.en-US.txt | 4 ---- ltex.hiddenFalsePositives.en-US.txt | 1 - 3 files changed, 1 insertion(+), 5 deletions(-) delete mode 100644 ltex.dictionary.en-US.txt delete mode 100644 ltex.hiddenFalsePositives.en-US.txt diff --git a/lib/default.nix b/lib/default.nix index 3b01e7e..db9723c 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -58,6 +58,7 @@ inputs.oxinoti.homeManagerModules.default inputs.oxidash.homeManagerModules.default inputs.oxipaste.homeManagerModules.default + inputs.oxirun.homeManagerModules.default inputs.hyprdock.homeManagerModules.default inputs.hyprland.homeManagerModules.default inputs.reset.homeManagerModules.default diff --git a/ltex.dictionary.en-US.txt b/ltex.dictionary.en-US.txt deleted file mode 100644 index 9b935cb..0000000 --- a/ltex.dictionary.en-US.txt +++ /dev/null @@ -1,4 +0,0 @@ -DashNix -HomeManger -Neovim -Vscodium diff --git a/ltex.hiddenFalsePositives.en-US.txt b/ltex.hiddenFalsePositives.en-US.txt deleted file mode 100644 index 5088c1d..0000000 --- a/ltex.hiddenFalsePositives.en-US.txt +++ /dev/null @@ -1 +0,0 @@ -{"rule":"MORFOLOGIK_RULE_EN_US","sentence":"^\\QYou can find a custom ISO on my NextCloud server: Link.\\E$"} From 32f0512ef5f534ed23baae71c1fc881613fbe912 Mon Sep 17 00:00:00 2001 From: Dashie Date: Fri, 2 May 2025 10:16:15 +0200 Subject: [PATCH 237/330] Secure boot and wsl (#10) - Add secure boot via lanzaboote - Add wsl flag - Remove flatpak flake --- base/common_hardware.nix | 21 +++++++++++++++---- docs/src/README.md | 1 - flake.nix | 7 ++++--- home/common.nix | 8 ++++---- lib/default.nix | 3 ++- modules/conf.nix | 17 ++++++++++++++++ modules/programs/basePackages.nix | 1 + modules/programs/drives.nix | 4 ++-- modules/programs/flatpak.nix | 28 +++----------------------- modules/programs/hyprland/hyprland.nix | 2 +- 10 files changed, 51 insertions(+), 41 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index ede1c08..0688ded 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -13,16 +13,30 @@ in { #(modulesPath + "/misc/nixpkgs/read-only.nix") ]; + wsl.enable = config.conf.wsl; + # Bootloader. - boot = { + boot = lib.mkIf (!config.conf.wsl) { consoleLogLevel = 0; + + lanzaboote = lib.mkIf config.conf.secureBoot { + enable = true; + pkiBundle = "/var/lib/sbctl"; + }; + loader = { - systemd-boot = lib.mkIf config.conf.useSystemdBootloader { - enable = true; + systemd-boot = { + enable = + if config.conf.secureBoot + then lib.mkForce false + else if config.conf.useSystemdBootloader + then true + else false; configurationLimit = 5; }; efi.canTouchEfiVariables = true; }; + kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; initrd = { verbose = false; @@ -60,7 +74,6 @@ in { # Enable the X11 windowing system. services = { lorri.enable = true; - flatpak.enable = true; xserver.enable = true; fstrim.enable = lib.mkDefault true; # Enable sound with pipewire. diff --git a/docs/src/README.md b/docs/src/README.md index 43f7ac8..0a9e778 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -237,7 +237,6 @@ For package lists, please check the individual modules, as the lists can be long - drives : A drive configuration module - firefox: Enables and configures firefox (extensions and settings) - fish: Enables and configures fish shell -- flatpak : Installs and enables declarative flatpak - gaming : Configures gaming related features (launchers, gamemode) - git : Git key and config module - gnome_services : Gnome services for minimal enviroments -> Window managers etc diff --git a/flake.nix b/flake.nix index cbc7dae..b1ffa47 100644 --- a/flake.nix +++ b/flake.nix @@ -4,10 +4,11 @@ inputs = { unstable.url = "github:NixOs/nixpkgs/nixos-unstable"; stable.url = "github:NixOs/nixpkgs/nixos-24.11"; + nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; nur.url = "github:nix-community/NUR"; - - nix-flatpak = { - url = "github:gmodena/nix-flatpak"; + lanzaboote = { + url = "github:nix-community/lanzaboote/v0.4.2"; + inputs.nixpkgs.follows = "unstable"; }; home-manager = { diff --git a/home/common.nix b/home/common.nix index c1df32a..8d21635 100644 --- a/home/common.nix +++ b/home/common.nix @@ -26,10 +26,10 @@ in { keyboard = null; - file.".local/share/flatpak/overrides/global".text = '' - [Context] - filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0 - ''; + #file.".local/share/flatpak/overrides/global".text = lib.mkForce '' + # [Context] + # filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0 + #''; }; programs.nix-index = { diff --git a/lib/default.nix b/lib/default.nix index db9723c..2ad1719 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -43,6 +43,8 @@ }, mods ? { nixos = [ + inputs.lanzaboote.nixosModules.lanzaboote + inputs.nixos-wsl.nixosModules.default inputs.home-manager.nixosModules.home-manager inputs.stylix.nixosModules.stylix inputs.disko.nixosModules.disko @@ -62,7 +64,6 @@ inputs.hyprdock.homeManagerModules.default inputs.hyprland.homeManagerModules.default inputs.reset.homeManagerModules.default - inputs.nix-flatpak.homeManagerModules.nix-flatpak inputs.sops-nix.homeManagerModules.sops inputs.dashvim.homeManagerModules.dashvim ../modules diff --git a/modules/conf.nix b/modules/conf.nix index 55ec2b9..c7d26b5 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -20,6 +20,23 @@ ''; }; + wsl = lib.mkOption { + default = false; + example = true; + description = '' + Runs Nix in wsl + ''; + }; + + secureBoot = lib.mkOption { + default = false; + example = true; + description = '' + enables secure boot. + Please don't forget to add your keys. + ''; + }; + useSystemdBootloader = lib.mkOption { default = true; example = false; diff --git a/modules/programs/basePackages.nix b/modules/programs/basePackages.nix index 635a2a7..0f2ff25 100644 --- a/modules/programs/basePackages.nix +++ b/modules/programs/basePackages.nix @@ -74,6 +74,7 @@ seahorse upower xorg.xkbutils + sbctl ] ++ config.mods.basePackages.additionalPackages else config.mods.basePackages.additionalPackages; diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix index 0f67be2..647bf80 100644 --- a/modules/programs/drives.nix +++ b/modules/programs/drives.nix @@ -149,7 +149,7 @@ config = ( lib.optionalAttrs (options ? fileSystems) { - fileSystems = lib.mkIf (config.mods.drives.variant == "manual") ( + fileSystems = lib.mkIf (config.mods.drives.variant == "manual" && !config.conf.wsl) ( builtins.listToAttrs ( map ( { @@ -196,7 +196,7 @@ } ); - swapDevices = lib.mkIf (config.mods.drives.useSwap && config.mods.drives.variant == "manual") [ + swapDevices = lib.mkIf (config.mods.drives.useSwap && config.mods.drives.variant == "manual" && !config.conf.wsl) [ {device = "/dev/disk/by-label/SWAP";} ]; diff --git a/modules/programs/flatpak.nix b/modules/programs/flatpak.nix index 7c13e9b..68ec2da 100644 --- a/modules/programs/flatpak.nix +++ b/modules/programs/flatpak.nix @@ -7,37 +7,15 @@ }: { options.mods.flatpak = { enable = lib.mkOption { - default = true; - example = false; + default = false; + example = true; type = lib.types.bool; description = "Enables the flatpak package manager"; }; - additional_packages = lib.mkOption { - default = []; - example = []; - type = with lib.types; listOf str; - description = "Flatpak packages"; - }; }; config = lib.mkIf config.mods.flatpak.enable ( - lib.optionalAttrs (options ? services.flatpak.remote) { + lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = [pkgs.flatpak]; - 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 - "com.github.tchx84.Flatseal" - ] - ++ config.mods.flatpak.additional_packages; } ); } diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index ab8bf53..4fa4c79 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -147,7 +147,7 @@ in { "$mod SUPER,E,exec,nautilus -w" "$mod SUPER,N,exec,neovide" "$mod SUPER,M,exec,oxidash" - "$mod SUPER,R,exec,anyrun" + "$mod SUPER,R,exec,oxirun" "$mod SUPER,G,exec,oxicalc" "$mod SUPER,D,exec,oxishut" "$mod SUPER,A,exec,oxipaste-iced" From 45954db37a269e678f908bb0a83c4bb43d768ea2 Mon Sep 17 00:00:00 2001 From: Dashie Date: Fri, 2 May 2025 12:19:48 +0200 Subject: [PATCH 238/330] Drive encryption (#11) - Add drive encryption with luks - Refactor Hyprland binds - Refactor cache - Minor spelling fixes - Add firefox stylix profiles --- base/common_hardware.nix | 30 ++ docs/src/README.md | 4 +- flake.nix | 32 -- home/common.nix | 5 - modules/conf.nix | 11 +- modules/programs/browser/firefox.nix | 6 + modules/programs/drives.nix | 27 ++ modules/programs/gpu.nix | 2 +- modules/programs/hyprland/anyrun.nix | 4 +- modules/programs/hyprland/hyprland.nix | 505 +++++++++++++------------ 10 files changed, 334 insertions(+), 292 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 0688ded..87d6279 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -100,6 +100,36 @@ in { trusted-users = [username]; auto-optimise-store = true; + builders-use-substitutes = true; + + substituters = [ + "https://hyprland.cachix.org" + "https://anyrun.cachix.org" + "https://cache.garnix.io" + "https://oxipaste.cachix.org" + "https://oxinoti.cachix.org" + "https://oxishut.cachix.org" + "https://oxidash.cachix.org" + "https://oxicalc.cachix.org" + "https://hyprdock.cachix.org" + "https://reset.cachix.org" + "https://chaotic-nyx.cachix.org/" + ]; + + trusted-public-keys = [ + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" + "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + "oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc=" + "oxinoti.cachix.org-1:dvSoJl2Pjo5HMaNngdBbSaixK9BSf2N8gzjP2MdGvfc=" + "oxishut.cachix.org-1:axyAGF3XMh1IyMAW4UMbQCdMNovDH0KH6hqLLRJH8jU=" + "oxidash.cachix.org-1:5K2FNHp7AS8VF7LmQkJAUG/dm6UHCz4ngshBVbjFX30=" + "oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ=" + "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" + "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" + "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" + ]; + experimental-features = "nix-command flakes pipe-operators"; }; }; diff --git a/docs/src/README.md b/docs/src/README.md index 0a9e778..d5f1a80 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -5,7 +5,7 @@ -An opinionated flake to bootstrap NixOS systems with default configurations for various programs and services from both NixOS and HomeManger which can be enabled, disabled, configured or replaced at will. +An opinionated flake to bootstrap NixOS systems with default configurations for various programs and services from both NixOS and HomeManager which can be enabled, disabled, configured or replaced at will. # Usage @@ -116,7 +116,7 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang # ]; # or amd, whatever you have gpu.nvidia.enable = true; - kde_connect.enable = true; + kdeConnect.enable = true; # login manager: # default is greetd # greetd = { }; diff --git a/flake.nix b/flake.nix index b1ffa47..e7e7c44 100644 --- a/flake.nix +++ b/flake.nix @@ -124,36 +124,4 @@ modules = ./modules; iso = dashNixLib.buildIso.config.system.build.isoImage; }; - - nixConfig = { - builders-use-substitutes = true; - - extra-substituters = [ - "https://hyprland.cachix.org" - "https://anyrun.cachix.org" - "https://cache.garnix.io" - "https://oxipaste.cachix.org" - "https://oxinoti.cachix.org" - "https://oxishut.cachix.org" - "https://oxidash.cachix.org" - "https://oxicalc.cachix.org" - "https://hyprdock.cachix.org" - "https://reset.cachix.org" - "https://chaotic-nyx.cachix.org/" - ]; - - extra-trusted-public-keys = [ - "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" - "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" - "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" - "oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc=" - "oxinoti.cachix.org-1:dvSoJl2Pjo5HMaNngdBbSaixK9BSf2N8gzjP2MdGvfc=" - "oxishut.cachix.org-1:axyAGF3XMh1IyMAW4UMbQCdMNovDH0KH6hqLLRJH8jU=" - "oxidash.cachix.org-1:5K2FNHp7AS8VF7LmQkJAUG/dm6UHCz4ngshBVbjFX30=" - "oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ=" - "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" - "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" - "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" - ]; - }; } diff --git a/home/common.nix b/home/common.nix index 8d21635..31d67b9 100644 --- a/home/common.nix +++ b/home/common.nix @@ -25,11 +25,6 @@ in { }; keyboard = null; - - #file.".local/share/flatpak/overrides/global".text = lib.mkForce '' - # [Context] - # filesystems=xdg-config/gtk-3.0;xdg-config/gtk-4.0 - #''; }; programs.nix-index = { diff --git a/modules/conf.nix b/modules/conf.nix index c7d26b5..5189e92 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -33,7 +33,16 @@ example = true; description = '' enables secure boot. - Please don't forget to add your keys. + Note: Secure boot is NOT reproducible + Here are the necessary steps: + + create your keys with sbctl -> sudo sbctl create-keys + + build with systemd once -> set this to false and build once + + build with secureBoot true + + verify that your keys are signed (note, only systemd and your generations should now be signed): sudo sbtcl verify + + enroll your keys (microsoft is necessary for windows dualboot support, leave it there): sudo sbctl enroll-keys --microsoft + + reboot with secureboot enabled + Note: Some motherboards have vendor specific keys for secure boot, this may not necessarily work with our self signed keys + You likely have to disable these vendor specific keys (example HP: sure boot) ''; }; diff --git a/modules/programs/browser/firefox.nix b/modules/programs/browser/firefox.nix index 01722c9..4db465a 100644 --- a/modules/programs/browser/firefox.nix +++ b/modules/programs/browser/firefox.nix @@ -80,6 +80,12 @@ }; config = lib.mkIf (config.mods.browser.firefox.enable || config.mods.homePackages.browser == "firefox") ( lib.optionalAttrs (options ? programs.firefox.profiles) { + stylix.targets.firefox.profileNames = + map ( + {name, ...}: + name + ) + config.mods.browser.firefox.profiles; programs.firefox = { enable = true; policies = config.mods.browser.firefox.configuration; diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix index 647bf80..c085144 100644 --- a/modules/programs/drives.nix +++ b/modules/programs/drives.nix @@ -25,6 +25,18 @@ Use swap in drive. ''; }; + useEncryption = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Enables encryption. + !WARNING! + You need your root drive to be named root exactly! + Otherwise there will not be a root crypt! + !WARNING! + ''; + }; homeAndRootFsTypes = lib.mkOption { default = "ext4"; example = "btrfs"; @@ -149,6 +161,21 @@ config = ( lib.optionalAttrs (options ? fileSystems) { + boot.initrd.luks.devices = lib.mkIf (config.mods.drives.variant == "manual" && config.mods.drives.useEncryption) ( + builtins.listToAttrs ( + map ( + { + name, + drive, + }: { + cryptstorage.device = lib.mkIf (name != "root") drive?device; + cryptoroot.device = lib.mkIf (name == "root") drive?device; + } + ) + config.mods.drives.extraDrives + ) + ); + fileSystems = lib.mkIf (config.mods.drives.variant == "manual" && !config.conf.wsl) ( builtins.listToAttrs ( map ( diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index 56083db..339b694 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -87,7 +87,7 @@ (lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl) (lib.mkIf config.mods.gpu.vapi.enable pkgs.libva) (lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau) - (lib.mkIf (config.mods.gpu.intelgpu.enable || config.mods.gpu.amdgpu.enable) pkgs.mesa.drivers) + (lib.mkIf (config.mods.gpu.intelgpu.enable || config.mods.gpu.amdgpu.enable) pkgs.mesa) ]; rocmPackages = [ pkgs.rocmPackages.clr.icd diff --git a/modules/programs/hyprland/anyrun.nix b/modules/programs/hyprland/anyrun.nix index 5b17669..6a3a24e 100644 --- a/modules/programs/hyprland/anyrun.nix +++ b/modules/programs/hyprland/anyrun.nix @@ -10,8 +10,8 @@ hyprland = { anyrun = { enable = lib.mkOption { - default = true; - example = false; + default = false; + example = true; type = lib.types.bool; description = "Enables anyrun"; }; diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 4fa4c79..ff13a4c 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -124,265 +124,272 @@ in { settings = if config.mods.hyprland.useDefaultConfig then - { - "$mod" = "SUPER"; + lib.mkMerge + [ + { + "$mod" = "SUPER"; - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizeactive" - ]; - - bind = [ - # screenshots - ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' - ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' - ''$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy'' - - # regular programs - "$mod SUPER,F,exec,${browserName}" - (lib.mkIf ( - browserName == "firefox" || browserName == "zen" - ) "$mod SUPERSHIFT,F,exec,${browserName} -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,oxirun" - "$mod SUPER,G,exec,oxicalc" - "$mod SUPER,D,exec,oxishut" - "$mod SUPER,A,exec,oxipaste-iced" - "$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 - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioMute,exec, audioControl mute") - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioLowerVolume,exec, audioControl sink -5%") - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioRaiseVolume,exec, audioControl sink +5%") - ",XF86AudioPlay,exec, playerctl play-pause" - ",XF86AudioNext,exec, playerctl next" - ",XF86AudioPrev,exec, playerctl previous" - (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessDown,exec, changeBrightness brightness 10%-") - (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessUp,exec, changeBrightness 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.mkOverride 51 "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; - # "col.inactive_border" = "0x66333333"; - allow_tearing = lib.mkIf config.mods.hyprland.noAtomic 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" + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizeactive" ]; - }; - dwindle = { - preserve_split = true; - pseudotile = 0; - permanent_direction_override = false; - }; + bind = [ + # screenshots + ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' + ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' + ''$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy'' - 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; + # regular programs + "$mod SUPER,F,exec,${browserName}" + (lib.mkIf ( + browserName == "firefox" || browserName == "zen" + ) "$mod SUPERSHIFT,F,exec,${browserName} -p special") + "$mod SUPER,T,exec,kitty -1" + "$mod SUPER,E,exec,nautilus -w" + "$mod SUPER,N,exec,neovide" + (lib.mkIf (config.mods.hyprland.anyrun.enable) "$mod SUPER,R,exec,anyrun") + (lib.mkIf (config.mods.oxi.oxirun.enable) "$mod SUPER,R,exec,oxirun") + (lib.mkIf (config.mods.oxi.oxidash.enable) "$mod SUPER,M,exec,oxidash") + (lib.mkIf (config.mods.oxi.oxicalc.enable) "$mod SUPER,G,exec,oxicalc") + (lib.mkIf (config.mods.oxi.oxishut.enable) "$mod SUPER,D,exec,oxishut") + (lib.mkIf (config.mods.oxi.oxipaste.enable) "$mod SUPER,A,exec,oxipaste-iced") + (lib.mkIf (config.mods.oxi.hyprdock.enable) "$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 + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioMute,exec, audioControl mute") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioLowerVolume,exec, audioControl sink -5%") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioRaiseVolume,exec, audioControl sink +5%") + ",XF86AudioPlay,exec, playerctl play-pause" + ",XF86AudioNext,exec, playerctl next" + ",XF86AudioPrev,exec, playerctl previous" + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessDown,exec, changeBrightness brightness 10%-") + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessUp,exec, changeBrightness 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.mkOverride 51 "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; + # "col.inactive_border" = "0x66333333"; + allow_tearing = lib.mkIf config.mods.hyprland.noAtomic true; }; - }; - misc = { - animate_manual_resizes = 1; - enable_swallow = true; - disable_splash_rendering = true; - disable_hyprland_logo = true; - swallow_regex = "^(.*)(kitty)(.*)$"; - initial_workspace_tracking = 1; - # just doesn't work - enable_anr_dialog = false; - }; + decoration = { + rounding = 4; + }; - cursor = { - enable_hyprcursor = true; - no_hardware_cursors = lib.mkIf config.mods.gpu.nvidia.enable true; - # done with nix, this would break the current setup otherwise - sync_gsettings_theme = false; - }; + 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" + ]; + }; - gestures = { - workspace_swipe = true; - }; + dwindle = { + preserve_split = true; + pseudotile = 0; + permanent_direction_override = false; + }; - monitor = config.mods.hyprland.monitor; - workspace = config.mods.hyprland.workspace; - - env = [ - "GTK_CSD,0" - ''TERM,"kitty /bin/fish"'' - "XDG_CURRENT_DESKTOP=Hyprland" - "XDG_SESSION_TYPE=wayland" - "XDG_SESSION_DESKTOP=Hyprland" - "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" - "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" - "XCURSOR_THEME,${config.mods.stylix.cursor.name}" - "XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" - "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"'' - (lib.mkIf config.mods.hyprland.noAtomic "WLR_DRM_NO_ATOMIC,1") - "GTK_USE_PORTAL, 1" - - (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") - (lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland") - (lib.mkIf config.mods.gpu.nvidia.enable "GBM_BACKEND,nvidia-drm") - (lib.mkIf config.mods.gpu.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") - ]; - - layerrule = [ - # layer rules - # mainly to disable animations within slurp and grim - "noanim, selection" - ]; - - windowrule = [ - # window rules - "float,class:^(.*)(OxiCalc)(.*)$" - "float,class:^(.*)(winecfg.exe)(.*)$" - "float,class:^(.*)(copyq)(.*)$" - "center,class:^(.*)(swappy)(.*)$" - "float,title:^(.*)(reset)(.*)$" - "workspace 10 silent,class:^(.*)(steam)(.*)$" - "workspace 9 silent,class:^(.*)(dota)(.*)$" - "workspace 9 silent,class:^(.*)(battlebits)(.*)$" - "workspace 9 silent,class:^(.*)(aoe)(.*)$" - "suppressevent fullscreen maximize,class:^(.*)(neovide)(.*)$" - "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" - "${browserName}" - "oxipaste_daemon" - "oxinoti" - ] - ++ config.mods.hyprland.extraAutostart; - - plugin = - { - hyprspace = lib.mkIf config.mods.hyprland.hyprspaceEnable { - bind = [ - "SUPER, W, overview:toggle, toggle" - ]; + 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; }; - } - // config.mods.hyprland.pluginConfig; - } - // config.mods.hyprland.customConfig + }; + + misc = { + animate_manual_resizes = 1; + enable_swallow = true; + disable_splash_rendering = true; + disable_hyprland_logo = true; + swallow_regex = "^(.*)(kitty)(.*)$"; + initial_workspace_tracking = 1; + # just doesn't work + enable_anr_dialog = false; + }; + + cursor = { + enable_hyprcursor = true; + no_hardware_cursors = lib.mkIf config.mods.gpu.nvidia.enable true; + # done with nix, this would break the current setup otherwise + sync_gsettings_theme = false; + }; + + gestures = { + workspace_swipe = true; + }; + + monitor = config.mods.hyprland.monitor; + workspace = config.mods.hyprland.workspace; + + env = [ + "GTK_CSD,0" + ''TERM,"kitty /bin/fish"'' + "XDG_CURRENT_DESKTOP=Hyprland" + "XDG_SESSION_TYPE=wayland" + "XDG_SESSION_DESKTOP=Hyprland" + "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" + "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" + "XCURSOR_THEME,${config.mods.stylix.cursor.name}" + "XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" + "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"'' + (lib.mkIf config.mods.hyprland.noAtomic "WLR_DRM_NO_ATOMIC,1") + "GTK_USE_PORTAL, 1" + + (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") + (lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland") + (lib.mkIf config.mods.gpu.nvidia.enable "GBM_BACKEND,nvidia-drm") + (lib.mkIf config.mods.gpu.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") + ]; + + layerrule = [ + # layer rules + # mainly to disable animations within slurp and grim + "noanim, selection" + ]; + + windowrule = [ + # window rules + "float,class:^(.*)(OxiCalc)(.*)$" + "float,class:^(.*)(winecfg.exe)(.*)$" + "float,class:^(.*)(copyq)(.*)$" + "center,class:^(.*)(swappy)(.*)$" + "float,title:^(.*)(reset)(.*)$" + "workspace 10 silent,class:^(.*)(steam)(.*)$" + "workspace 9 silent,class:^(.*)(dota)(.*)$" + "workspace 9 silent,class:^(.*)(battlebits)(.*)$" + "workspace 9 silent,class:^(.*)(aoe)(.*)$" + "suppressevent fullscreen maximize,class:^(.*)(neovide)(.*)$" + "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" + "${browserName}" + "oxipaste_daemon" + "oxinoti" + ] + ++ config.mods.hyprland.extraAutostart; + + plugin = + lib.mkMerge + [ + { + hyprspace = lib.mkIf config.mods.hyprland.hyprspaceEnable { + bind = [ + "SUPER, W, overview:toggle, toggle" + ]; + }; + } + config.mods.hyprland.pluginConfig + ]; + } + config.mods.hyprland.customConfig + ] else lib.mkForce config.mods.hyprland.customConfig; plugins = [ From 62ab685cd4349c4b017c3607ab38925e8c817198 Mon Sep 17 00:00:00 2001 From: Dashie Date: Fri, 2 May 2025 12:28:22 +0200 Subject: [PATCH 239/330] Remove vesktop electron override (#12) --- modules/programs/homePackages.nix | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index 4714f91..b1303b2 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -3,12 +3,9 @@ options, config, pkgs, - inputs, ... -}: let - # TODO remove when chromium works again - fixedVesktop = pkgs.vesktop.override {electron = pkgs.electron_33;}; -in { +} +: { options.mods.homePackages = { useDefaultPackages = lib.mkOption { default = true; @@ -103,7 +100,7 @@ in { [ (lib.mkIf config.mods.homePackages.ncspot ncspot) (lib.mkIf config.mods.homePackages.orcaSlicer orca-slicer) - (lib.mkIf config.mods.homePackages.vesktop fixedVesktop) + (lib.mkIf config.mods.homePackages.vesktop vesktop) (lib.mkIf config.mods.homePackages.nextcloudClient nextcloud-client) (lib.mkIf (!isNull config.mods.homePackages.matrixClient) config.mods.homePackages.matrixClient) (lib.mkIf (!isNull config.mods.homePackages.mailClient) config.mods.homePackages.mailClient) From e4d521e10f5ba83000ce2b3e5ae5793d8f632e5d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 5 May 2025 17:25:26 +0200 Subject: [PATCH 240/330] Add bitlocker fix to lanzaboote --- base/common_hardware.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 87d6279..6f3c94d 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -22,6 +22,7 @@ in { lanzaboote = lib.mkIf config.conf.secureBoot { enable = true; pkiBundle = "/var/lib/sbctl"; + settings.reboot-for-bitlocker = true; }; loader = { From 711c2a128f41651c90196af29fcfec6971accd01 Mon Sep 17 00:00:00 2001 From: Dashie Date: Tue, 6 May 2025 19:23:00 +0200 Subject: [PATCH 241/330] Add custom fetch (#13) * Remove vesktop electron override * Add custom fetch --- assets/logo2.png | Bin 0 -> 38860 bytes modules/programs/default.nix | 1 + modules/programs/fastfetch.nix | 67 +++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 assets/logo2.png create mode 100644 modules/programs/fastfetch.nix diff --git a/assets/logo2.png b/assets/logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..beeac559e7f1a4ca67df34b609fba52c894e34de GIT binary patch literal 38860 zcmeAS@N?(olHy`uVBq!ia0y~yVDw~QU{d2?V_;yocc5Yy0|NtRfk$L90|S2|2s5s* zU!KXppuphi;uuoF_$HRULGZniI~L(R^eX5X*al; zx-PDWShUC_+T`1j2&bHacGaKiZkJ6q9_1)+?}}X$@#6cvcYo^d-`ks9R`&kt-O8uW zE^ZSgFYDFpx$y;R%MwGh=5Ky_SW@xG z)ZE8edOZ6hc3o<7KOzt|`OXc|J?qa#&ONYRV2%EEiMq;oo^A3^b>Cgv*>hECKEqbd za}~V{Owvv7q;ekI`$?)VK77HN)pD;&mIWTO*gnx+w14@Jk9E4oV$ZQ2{(tvr4`*HC z?Hxy)mp(qTYhL*rb+)BC-~D@bZhh^=?VWf*Z?h2l*1m`N;%x`FoN8zOGC{JVk=fct zZJVEkpLM|ZZh^m1if@j6EBteoqfo4O)ke!wrIyRNuF73<2d%ZkZu7qPeXx45`&@aq z4=?yWy!i1a>T8Vjj=KBzru;}eZ+d3x3X25S))Nmt7BesvS$QoInQ+BX{@mQ`Kekit zuJ5|Fk9+ct>E8aH4NV9C{@yj2dFd?fSK=i-Z2{JLr}7MUTNb%^7oFEAl!|#MW8h>o zN8feowe#L}(j0wST%PB9`!ini&WmlDx4EqIZQuOs=Y^xw)=Gr4 zzA-PjzDw?fa{N|Hri$lW)_RwC@A>h$)IF}UOg9)8Sm>BoKV<>nflt=-`PnGAKeuT8Nq3s|*q!9L4U6OCVUZ(TL}%Mv}mEUmaD zRP)%hHC&R?&(*j0Zp}X{*t;@}f!%3G9D~^9C9|0;H2au?-@nmwNMe@pKXYICD4Uvy zr$+cI#l1pF1%LKu-AI@H7tOk`D(Ur(BeJ$8+MXNB8zvV-U96nzbHLKtBImqsOc?vi zFl9~~=_UhR23?->_D+({?_O?K@aU^p*JjDJI`-kaT@^8J>x+(u)SR7Ie3W7N`tAB} zXP=yBe<#sBZ|?u^x&MN?V=qZfSTq0H(l?3v@~8G|%u8xk>|ws=ZuzE3^YnaXi#3t_ z`oBW6PG4@{#meb%=(2qG%FWyO_XSvR?wj;0__tQ-zPADYrX@Uzn#xwSll{ABPPf%T zvz4Ov+?(wr{(ji^{h+YN=A#-cDqpQxjJFstrW9uL9ljL4RQKGT;OW0CKm2BSvf*Eo z?8eX!bZcex7AotL<#BsDc@a&HH-n}^$x z6B9ol;j4%^A9!(Y^bzlg$6WP~?|i6#+;WC*-u!jpeEZkS90+gf`y3LL7nQV8e{z*t zk%_l0Z&MKK8Rg~uSz>|NGAr&@RO-!{>G5Tv{=3~PPnX>_P}uWSEAq1STKyXmH724S zHxA8QJ7s2$3n(KAqXPYici+m4Sa`Ly;hnje+A1}4mx2_6IsGOY_ zyeeKszUfGZCCjoc*<*b>)URQK+a#x)9!5fa*c7zc}vxlZ@jbTtX%R!UYvLF zJn=0T_WK>Jf0NLj+gf{5BjK{0#a3w{ksW5@#^39_Sp3Qsz1VF2m}6hj-kH*@J#*!} z5+fUzp7Z|@lp}f3d!kx)u}qCXoal}N3teWuJiWDlWvyJvJ=M!z>gSB(ydU^P^S{|Q zF`@clNNi)Bsiu0tj%8OgEp~r${w^}Zxo?6XPg8((-t7mqlV3lXZC54Tp1am2KHx=u z%&tp+Blqp_`FjQww#N0F;{Il|RvVQlxt|g>?|!({!o%@FE``={uckq64O4CYz(y(v2sj}qM%8d^bHyVb->4mSH-_dTKa^7QY zSirn1X&L@n3{EkIU;LB)I#hCUi}gK}Kh){kV81zTbEJDhlQ{pv+fJ%4+GmumR7eWo z+%&V;^2tVjhl_Ea7!Nj!O`X&9srsQp#`Xt}7u2$|f>NKeEM34j%~M%frF*BK={XaV z`vGnnx&7q%dE_>n2<`HdXZd5z_VuaR+StjvR%AR8RQ9-atyDlJ|3t?9*t0kPzGwB9 zdtw#1%wOtJ)vlRb=kC6Wp0jw$rl!q@XIqyY{PRymlF>Ke{Na5oj3!Q9EizSY&%#^6 zP4gRTulsg8>jc*&*E+S{uVist7|*()@Ygy2u76pT_bN43MyI&nO*NdE zSI_Y!S-R=h+Lxy%{<*|icfx0<-ozs2^Jyxw-<(w3Jj5z4%jWsJTs}~e;c`abbym!! z>5Ctgd9J3pl)#jf-`+PY%l-jll)%#n1js;bNKp403#;i=VWt!#PzJ6Q9a?(Rv;mo0jhu=874ioIM>gv#|!Bj0Tw_3I!0zwvGrctK^@`%+8K4FsLzj)i?R|Yo40O%7t|?m`ju@_ykO}Bz6EiILYhvrimh>wD!DKrTi)dG z#u?tT80~ia&YfMm!;ODGn}b~Y&lfK5!=FA{EL@t=tei0aZ}1GcRm+<8Il9eQIQ7)j zw+AmvP4E8vaFOnZqdgm5$F-m0ILVP$89n*0!37)L#Zm7H%8c(czho*p=2fRI>JgE; zLTJm1mCw#E_$)Z{+E#_yZEjN+sD02n;{IIW_Q|}plL}%k{l4S4Y`zSaym(QE+VxJO zTKzCB#fLKgZrE*mwo>D_;SQ0f;fE(MSvKfz&#m07d|&*}LjIg@v)raGFg_gGbj)On z3cp4{%0|=ToxXafYqGTJU2Nu0pAvj)2ge7Q8*M9C4)zo&{bYN)^1ffG;z#bUzjj8X zwXaBCc~$9Tebd{{=!HG<4DaFuG>lnYiyiKVEYAo!Eq(Bi;a2_TL$_14Vmr=AN`=Op z*m&%t;=QyDKW6#r?Mb=iH8;*?nttP~mpW7XUIr`-dVG0B>7rAUIWs$)>T;*&U$~Gr zr)Bw?_r-U1v+v=3D;uKAl`HT1uyjV@`mk+wA6MMHymXqFt2kTx5k_Sd)ijaWK0Cg- z9@rRj>~nt3y8mB=Yjf<_)VFW>GPyA(qf&3rlS4)x+~$R}q zzwX_W=+HNxvcB)RyrV+wx=XHAIlK1UyTI+gZYPt%k)_J>1*BO|c}HBZo2TDiVi~Xc z(Cy9BOY_$8Dac;laC7^r3I4`~c^joeX4Uod3u*ShW{8@3!6%w^Mqm8a9i98vPn%t1 z0;=Ss?8=f0b6!{NxtCueuCVa->$Cp?IF-a>xpH2VRK#_Ii^X}{-!roQpSUuj?ZeLP z**sqb%zmrMFPyv2$yzh|Yh!iWE1&5~_WyWZx$IgXX?&tJUQ?d`+`Xus$GCE$Uo2W_ z{$+8&9&;Yce}>o2`}elnuJ;e`bvk_RzOv+^`QrSxYa_PF{hcp$b;q5JvenO9+dsH| z{1PQ`t?k(pxeIf@96h4gJ(a!O+vpSfO6Gs>le_2s&PtfJ?aaE3?GGR9?f0nqxS9Rb zmKaMT(QV5$!#j2MGHsgiX#HjOBkUakx6SlEPFQ~?Md@k7Oi#B{=loLM`hKg~bE|$@ z;NAW)M^Dw z;pxv+k0%H9JE&%S==H?nRpD~_+QI4amdit$M!5O}nV?ga@y%?d-mrO;^1b9+Uy$-K^F>hUWTg>mseWw=Pc>4at*ZW6wUVWE(`@p|>aZJ&S z+rkt2PXwDJ@n)syL%6#9=9-=R1E=u>-HUC)wa=1;++hbX4H|8~2oqY6;NyW}VVNG>&wNKGh zkITOw1w4}O@)Fp_WcJ_=C&vd5Ydr=@CtI5i<)7(KmT5oW@>wqXr)BNoQu*Tt?nN(8 z%3MZa9-Tz z4J&F5!flprOnuuYSSrjbCF2sIl)?Ug!7*q3Ap4-T8Ep=tnObvRzG^!EA*bbL`r&PV zWZuub3Chjb(O^uubw+v{7WnGx@|Q3-NmmrCMj+;l;`;7k{$fWFn;FABj*^ERg%*U ztv;l=^Xjuhw%h$V|8Zj>%r&2sT% z&J0P}X?Km?&xvlm+cMShQSad&$A9dKSvAQ>nCsatzP(rWl|DIXH~Y$w5CNwwwy^?ROqhO?x*mpiGx zNcP>VJgeE4Z*%amX{mqrY_-l#^L+NM;KkL_1jgEi(hE%66H5*R>VDAsqIh__;GNAk zS>9QHSUt@!{FFt{1f7F(qipm(TEx9S{&ZdD&b7s5SDNQ;I;vakw{s=S#YWb2Ca<4$ zGx{z_lw1hpb&%_KO4@4A!S7kWw(Vo+CyAa3Iv4L2&scu$;cVH7(RFh-FP3{V<$L4w z1*0(Y*Tzh!Wzw^i?(UskW0uNrY9ICFU+Q{}kac<@j!;hB) zWbc`-?<+t1YEAc+aQ2YomCyf9KUZzJ<@K@d)psjaq>1NA8I%YM&N}jU)8^@=ItpL; zXUWR;2=G`v@L0j}_aSrl-pAVoU({LM6a`4xO(pE3a6hY@;3Vd7<(hN z{GadD4w?6?KHOG*{R+j8-3wk@bv!8e@q>|T+m}-x`DIHk)am^^x5h<*-#zP34$rT< zj7o-kg^maJnuMP}SI$?yeBV*asoWn|%dDEVg{!r#w&c6Y>(wtAzGv!uRofS|^S*ab zc9q0JxhB1bURBbY%l=u~Nca9vR}%QbqyLmYvF^w3H5@*yx-u_JPrqGQFZ9~k;nKda zo6K{I{y&rT6%xAh$Y%?lMi*1G|c{ksnrS8;Z&-ESdqnXx07Q8-Cy;-hqS579T<^!PmrH!N3}<2+BObV0G2)NQ@( z>-EjQZfIhgn!fnd-Hubq3#NToboZx>ML^1))q+AH4>&#S*W6n_DSZ9%*Fnl&%Rj#? zv6{cnFQqL0^)3&4ljn+eSYE!qn<-Kf`>C$yCxxUMMDB7)8 z_pZD4@8R2mZ@16+DQ%kjGTkU^Pik|%i+7QK#10!}VHfGYB?g;VYn6FJc-ZGT*DMH* zJEfy>y*(=Uvs_iJ{jF52Edr*p;pC!zcIU%77m zcjnz6PQu?^w@q0W9=mDR^xKzPo^oYxtGZs-^B}^_VO5Og|37&%{-$%!|DfvEQ{Owo z;we{o>l;&N;Z>q$e^Zy2GBQ@G{?Op|NP7K1RLAvUeKqft_m@Qu>Sp|DD>e~Zw>Tx_ zN$|%Xicj~-OnzyaY0rM5Ina07@^6g-cb)C0U3xO@k-|Ik3ok<$U(f7Jxx9YbbR+vc zJCnn|)aOX>awrzcz5U!CyZYEBo&M;je3j4DUF%)$?e>yA`10YsomaEe;+M%N#LqaM zpgMu`#fP>>rPFVxoqAKye(-bR{I}e1CuZhEtxIH0GkpDvr}pbXyZVIIX$$LI<5xu~ z-n{s5(%si#pYAFy=X<>U#Gj^{%bL zEno8H6Zgpg`&*V=XKv_nJ0H8M?;$s1sb6T!Ixoe}ic120k8Hm3`K~I6bttvjYwBNE zrQr~6wqV9p#d)QhOuPSBoy}R#yZL-tlGvm4{eqS4t_m&^{frknd1kn@9sTi8Z}+-8 zhw4NOzsSuFTRLIOjL+UZJLcPDZPHrUThDy;U}JN_?R}Sj&3vzZbFux0x&rA*G=F%Q7q9;(KeAUbD`}OVhuM~r z3yxO9`OR;PbPz8}vX&iJWyRC1>LDuz$z^X1P^U;T9H z8FL$@HV4s{F;m&P9PJqH&(c(UFHqATt5b|K>HSst1HB*3olUHt*=NMECVQ3l>`LG(TbKq}Ca-_Q`_6BL_bl ztmfJH(Y~sp_>*Dzeg^ zE*0jSX8xtvzrpN;p3(Q0kBgo7<>v=4$o6rQG&+#=BKzy#JCmPm%JK|vop3~_D0s)O zeI9!?OClzpwQ|l){xtPCqphL95u60a&EbB5VB68MD3$NOz)w1NR)#U=^Ym@VjnVSpb=&$%I@j_PS zhVb`a(bB2=?u*?2vt4SgkHQfoYJz3{^(TnWN{M9lz9JX?^$vU{138i{?7 zn62JFS+*iz=JwZV4Dl}_8!Go8YTM1iZ?GzvSH}I?`Tx7S#j-UVtoG2NuJ@l?0#*##9L3DW${3`4fn!~Da zYH#R-Aes7UZ`LMi3jcb?lO@rUgms_G)&nT}y*tqKb9EY{Rnm@ZlCwYhOP*1W? zZ8?*%Nmuo*9`oMW%uilwrgXke_R^kmdbZ)>E3CqWQa;N+aP>IneEvIS(~Zq}bE~bG zI_k7sk6SM4Fm6@DN zl##@XyD~2-J6}IP{guPnJFVL)!TZO-KPMj~q^G#u-l}!UkxjYOQsRBwqB6H>rmg#| z<@UdJe)EEL{tH>Ym2*QQ_9?ZdL{vlsxmyU#KF7wx-od=(h^@lu&klY1dG*2f!@pW^ zoLnI9v+?nzsqfC0+}+ypI;L-5jr!{&tN%9LW~`iOB4x2p{z*BL+|G5Yzc|n75}st+ z+HNa8`*CRToN3n|XKH;v(pX#+5qanLy0iCMy-j5u%$}vU%k(&K{{A#K>PTDRWrHHe zg|@s4@5+x+F^x*}fR{FYy=+V!J0sY6ql zuP`m&HvG$3QU9G+KO3&O(-HiVlbheW)a-!eL$T7V+`T`Gl2!DLo4j1lMV&Zt{Xws~ z^qoIjRc_ZVKJd_aTN-O@J*(N>@Z}a86eoxR&P4Jpk)rx#SSw_7-j>mjXz5D#l zqb-8<m_@I8KbUOPv!B2F`vE``7iIlN%1HD{OBq4VrO! zv(oNQvw~M#;r0oFtp%9!K1asFWv%eK^oPQ(;!%YmEfc;RI&2hH_R(R>JHm`1Za|%BZ_pzR4rBNkc>K`6H%MpULexkGpGes~^T6 zTys#O=zHU#qL#=VKYh9Tq>bdixtM-SR#cJyc_2xC?NaNjoI8&9%C9T%cYJrOB+_vI zwt{uXnlJbt`qpUvjWbyplrr-Fu`JbHj^7HIr;mLn@<7(2i;v(@Ucb_r7@#W)= znsDN(lK16(DsTO@Ht_tB57YTCI4P08Ch))JW3{92ckWibc|pgo>#14mvhat(yRYBR zlFSr1ae#IH6{~aebf-@(-la6{_R}*5k}{M}D{`FpbldI0pGisa7m|J~TAdp%(R%;X z--)*0d0Juv?q%=vT9Rqhz!4aK`^3u+HA}?qiSt=0Dy$C{ykNJ4kJ0n*q_~U~m$UW0 zg}>B#zDID9>K^OZcbm+#6*(K%ZTyq-cK^;&?*~p(#T?!~doFRytFq$%zd4(i+h6>g zbsxvJjs2Wk1W}2N6aOE+xNB&YCyjbd__} zS%&PgyIjv*dP*~@_PlqLoaG~S^6Nal1v3omkG%<MrQ zy?1XHD~pQW@)_Ba?PAwAZ~ykNqwcWUYUcfab!XQq&9zy5ees!mF8jVjCP^*s%_sgR zudAJy&&+Y+K!nB|&b3}844l6#XLPbR#@{KE_^%TYcTd&LBWs_1ET2EKdi9s4C$B$j z5xA6@S;xz#7INTpMRJT0EZxx850inRSWLX4Wt2e-E^m|Em8o z{o9nyG3`m`f498aH+xqP)8m&+LBD@md?zrCN zKRx$IoDiz;zd!Cq%Gahz>*vqEBQAZT{p8UnFU)zC$EctB^83cJAHE(gUMpVC`+L2% z!lv3YkWYbSy5J;5pU%}8$19Tr%pU27ef<6)$!l#`$-FPu)^SI&ITrs}^uPD%eDS-E zt;!j)x1WddJWMNt1@8*>~5NYxyrtnX|td z_wRD8e{EJD`Tne9=Wn5&d&^z?jXh^IzGm2Eo%l~y@tI#<#D=ov^D(0C&op(Xot`|S|wmf9?a`(ce$s!__ebY}WzUGVlcyRio zj7Qrao?g&7br;X1O3Bb!Q(hzr7ESExPkW%f2ir_U2u%F8&y?&xM`0@M~gAO3a+8AFKGcxnASn$Nr~d ztxWF6gU=r@IK{F#wid;y>Nlr|xzCg{xv)!gd)KskcO8sBSQp+}%dHWjovC!9q5XOF z*R$s=cJ^G-oVe)b`(s6xmfuvT8pVE4u+i8n_vQA_#=UBVQ}v`Cy*kcua)*WX!`4lo z_!FOh%UyXQ_?4~ig&mjGeVHSl9{BR0r^N2BcbLtVpo@%8EMKZs1Ozb_-&@J8{y{XWa_Q4% z<<(mRr&#WN@{IShd(i0*2QxR+DHw0u(a0yWj(2N~K(Scg^YzE?)-QdOFCYF{yyk}7 zw3q%#Np90Dc0JIz5xKfuZ^zu*xBIH6xihz>Y>*97|14H#lrig&bIu9N2e^iamgs*|Es6lu6~>t$@V075^1S~&?t|+#9T^Xw2UQ&x3@^<1 zy`Y)hsv%(a!e*}6g>r2NEnPW&?5|tl;KpgSM@&#R`vXhsyYpOiHxC*9IV@16z3l|Y zNr^n!NP7hxrvndH`n_iFQuSr$HF~i2m-Fixv(ld!O+I(7@!RvazXM)J?o6|~(i|fe z{>yVe_tpz}Zil_xrw1|#I;j7ZXYu=WH2a&>>t6v(+B+_Q%#54<_3$~PtW9+mj+1Ze zT16~aI)N$M<&>Sjrt!@f3xnR>>t0v|PJ4B^(N)iI?^3l&^~_^#R_kUuEDvP5=xA8^ zE+pxCfaN2lxy>`n*_W>7WXcaRJ|_-!NY6#iY`n%n+qyVt?VSuct| z?zr{eVe0F=N}VNfqU9^ti^LS!xhDViU(Vk?|HQ8ks+GIEmh4ZdbvYExwkAj}Uv~D1 z)9;tw**E91n}=IX`L3kNKi0^5r29_)$}FpK;b0Tf`|m4#eZo)qnECU4Xz^VbS$pbY zVO!M?j%7>A+hqC=mq8zlScBGO&tE(x)Yr`5)+)(JPBx>Yf43&i z$epvSZ0+e^54APE1ii@+HF!Al*D1!DrBQjGeiknH>ab5lD|Y(owP^`yTg})kOJ%3s zeAVOo_O}Sf30_kP)qwpb#q;EnW;9$7zaF|-|I!2LrT17TpYLVfP}i`1vgL|5w;iOm zx1K)H7sh^viP5tusIh))|5rY_DM^!cTbMm>TTl2LsWp+`mFug3>Yh)jFM7^iKU&7Y zZOs^FxhvscQ1@0=USYd;E4*3kWOij-0+r5!g*!JMmE;fkee%T#=F>B0t&yLW&}nP# zQqIrLmmc2zwE4{Kpr!HlGbXe8DV%YgvQVzdNHz4hP34Zqtlhz(#T=F29rev*EFKrxT0O7h>fjb+?z zf7~l?1h!Qzu-%_?@526OkG}i&G}=t}*=T6iYQNbWdYENS`u+>Q7S&D0$Zv+ z>^Ytu_;X=H+~oG3yZWkH>}v848a(_r;VsLg+kOg&*AwY-O7IH|Wjy zIZJk%*Ut5|HD~QhE(V;cGud-&sm#2#eY*M_HT64}+nNcz***Kk&ja`PFFPAKhCJ}? zQUxs?J0j!p;mA^lpEG;5%?RMPt?Zxv@v`SPPvSA9R!zxe_c5Jn z6*`%>XJ3}vvP6a6&(>w_6;^KVx~4hpax%IgcQLmhNs!^(vH+cz4m&kFrZ9`x@bWp= zEmYDqxxyTIEhSjhD!KZ4@r^a#B;DtQX&M`JhcG7Z<6@6^zw+tTS>{fgE?8UpMl`X% z4XN*_J+W}sG$(VXr|owZYJLd0E%94$>6w(|M-IQUxE39YpLkJR=+#2@_aBX-&aX=Q zBX&^w-D;7@QGFZJHE+*_Ylh{(Nqc(;MM<3r$tQ|C<=dfoc>>$#E&^V*P- z1L+Y z3fI@p+WAJv;^uW7k%9>037q-*myYkbocPzkK=6N?)mMjU{8|1L^?A9{_m7*e{wSDX zw6S2p+Lh1N^PXMF-ni$sshnXEmft$a?q9Xb&@e@%s64wFLin-#<0{N`7RY->-5z!Z6VG`&E|T z`}>X02iI8|9pyXb9>HF+V0Lo+ibVO}kDSZC`BeM7RG(9)>HlEq$L_se{FkJ=woG?b z*dF{j(qwESj_yRzq7VT-uv2GPBZEnP? z>xSsBvDZ>wz#h@wuw>sl{=zaYBf0Ks|F&Od6QtR1&3%gO!@mUPSn*#nxIF3i+HEGfjW4vVxn;%7d{Dl^K4|jny*?#VZkt|WvCyj6;PNUz zKEK~__u+Ek?nE}${Y5if|B2KV=$OszZTPZLRnI zxW3iMy?&PmGiI09zQ^+m59$YX?iAa0!Et}jzbN&j|8ec|LG|mWPQA_1 zo}iv9KBpn^qUq#6yWK2jd9P*Yngddq}6 z9|Je?%CW>RF{xUr`D5y@EOFON{hU8>{Z%Cu95%Bb#+{hLCG{!(`$NsVo$1eldy*P`%>NtZ?#A13-kG;mCv|?bOxoorbM^(xT)*eI zF00ek*fi#^+%e@18RJUQK*U89HX`9WuynXi<$72VkI@7dmom6Niosz2m1 z{aDUa(zLGMNp(enqUD}Q69+3f9bva$-tDYkr$5nBo6F2D*EaveQSF-ha#>riL`~gc z)&6Xmmt@g`(w@?}4`jp?|AbDpDOz7XOU-^s*8QuK>{+!Ow{(RjeE%i(Tw|%u`<#PL zLTL`^EB5}a*@@dz+zZ>S0D5=3iGL_P1_)&8FqM z{1I#X{WbeSwmq4u&iM0kZu9M$8CgE}tJW#_C$Ku-xIIIAlk?LqYsaVUSL%2~jyFaN z-2ZVpB|*&d*wg!Ze48_4v-nC%mSp5ly7Ru2x%Jl%#}h#tcQ<)HIn$``bmrW{g2$7; zOT0cI>FIIwQ0tNe{*yocvENQIx@8_&e|pKpoOW_!f;C4E|PU}m-7##cqH+@81h1**Py_01)sCT{Djliv?CMn3%5 zyF0r$G1lGe(_L1zKtmZ1!{<^0uY;%F=6wXD6lS* z<-Eif;fRN}lXl%%?{wvwGJUqeMo!No1D`R!V-@~V05X2q;{Ra7zg z-`!t}YV)V~XheAk8G33vs+aGpIKQ@Fqu<2qJYUWT+lrZz}?rVix&!0*ST%s&E$;D&2aK!%Ri~a&k zU*DBGEvXfm5^mAAUt!9N&#(5at-5S@ta$gIqM(LfXPFOP`BAWZy|e-U+Jb8#Ha~fF zPcj>Hs8uRFQT{aNZL^;QB;Gti-^rh5T9iHY@Y~PDhbP3Z^-%u@UYr{6@VpkMak-y(mJ*#e|&)>}-DisX1ue)#UYTFvYBl9hW_cucr)64{$Z|j~IEU7>8 z?dX+O#@J8mCwW%ikZ%9jZ~V~c`j>))E1wsoUA=UrK9TRab%eF#@|(*uY%VUV&Eq~e zNmI`3QN!<;(xsnYF4v!{&euBi<-?e~y%Tob;r|zV_+Ho+M}te<0_VPW-P!OYT>HbZ zr`PYq@2-tG8~+Luyeyv8d2ft1SzhPeUw!?YmV&0lm6@l`B-iU)m#c_hF^l>2)hia^2|VgA z<=S8BpJ){Iz8kz#NuiYeNOhTH`tp5mqF=Ieo?WcsQ?M#^ihAPgwvv0omttE*9?naW zth#tk{+esj|ixRq>Z+dD_StUxDSu)w8!dY7VxbM&me zal4bd-mbnVZIbKQQ@^ck?YT{#thkvzS+KMOH9AfFry)@s5wXrX>*9~7uCF-@Tx1%4 zAMmv(jys(E^z)bEuO~#T9fJ2P7uomIJ!#oil@-iJrG_0P@q z4rTmlDs$yRW3S$i!@tYc3r(0Y$L_M-u{s04e{Omzoj10YcE&$?e%XSvpX>Vz-Y>QX zM9OzQJ^V&TefB+{g9|jC6*x%F-2DEUenDSHmp+?+olHi=hB9>>UH^&E7ma+=9roxa z%n(=>qkB0dH8YWulbim0PvSeA)x3x8WP^Ju zn@rEPJ?4$Sbrw9aQj=w7&tSX%XhQ9__dgdkZ+AQMr}W@i1D^;+Z4uFcBJNWi0xe9( zZ$Ew1|L?WVmrE7$*K_5AI6uYJZdq7$@9R0UxLU2nRt~2&=03f;d`r0B{ws3-m!4k1 zcQ2V={Z+~J&$pECm-enJxwi2BxnDnC+EsgPU!KSD__Ecu8A*bZOq$kd6rK;*CBvZp zKK${MyU)+B&n#}w^-2n5w&9y9Kg%s?1@PT_@;Y$&NrQ(67bG&JEVACUb>+9CD}KNB{ZSLY zFH6=!R?X32o^pS`-?92tnPQ$?U#}m$A8WQCV9!_PBH>#m+KOyZr{xlik$+@gh&l-^f4fBP!Db&z8RLz) zCOcOtwN_bOJ;$=;c!kwBsn3nJhv#nl=55i(DKU*-xqC(QcBbm29^R>eInB-6<#T1P z_)K{1GV@>Yj6|m7_@$G+wFZ8>99hIe&;zGkYLv?2Se=bgG64aE(P&ow#ov7}h}ou0^DsS`<` zPRX*=tu!>?C|WvU(kih@DSsJ$3I@3Ul1$6lmDGH`@f3gLjTEL?7saeTFK`I5=b62A z#~&**-;l3=&mIYuy}sjVOlRG%)3tB+O-vA(<|uxL`Ebk9>?`Y+MC7dB#`G|>xlRrTVo+GY0Bn{yo={1a~;jR zmHO@=N zYHg}J5cDEw>M2i)LLE1Sl|QOZO>UnQ6H-@pd&7^J?c#Ura_oaQtlp?1b3?dy*&YWz zho{Gr4o=_^kt+NB?`Q5z5s${}Iebn_FBC#}Y0SDqDf);-LA>NoSqfiRI+4U#HvjDfO?*5Iug?=nG-ngF2$<@$3A9dng1h?Z z@)<|2?mQekZ`rCCIrmvM8}9sYrS#TC(WpQ)3vm^V{>2B?Lwxinwc5K*Q=g2+%|V* zEquh~Bpm)FmTuAHf`#FJICPxxDL0f)=FhbaeMmz?N$_T)QgV0%6@Z-0lP1&2*| zZlzq>2gR(2tgRlOws`Gite&X#KrY_l*@3K`C&kY*J}uRfOVl*1Sje-3?d5iPzT|0l3(4;*3?2_Z?i{!a6uTXcsIb%=d5!U1Ug*Vg~kCtqF?0)+0lRkdvOVWgpd@NFch(y1zu(;Se)HKZI?nkd=3$P`?$85yZ=Wj97kI*Z z(!owlH;=pQ0a9EOoz5xF79E*s00+_`r2JLFogJtt}^hV{E;? zKyo+Vf(PNoBKH@@?Qe?z`%3XotgOkGXLd!^n@`Vl4)|HP)0SK1mt17f&&&%?K1^X* z^6HI9@s9nDn#GN$cD;6o^{6%FG1K#ef_9s~CCn@T%vpEx;md4} z9bXh4b!jN%T(^z3_?9x|_p)Mc0kLoO@oDkXw104&o7cM6vrFhD^TBWV8HLAwodV5P z%_zC{SmA@tSEiMJF8IWA0cS@MH+(@+Oph#)q zfua{TKdtnYZJGH~PwKG1eGf&+E4SSbuAlYh#vNZ|V-2y|r53JrZT)j`swKPq?S@(X~-_j@61j z367`WJ2h2C-nVy#FE4+0 z@5UE1mMyxv^wZ@=-IX&Fe|OJ`|MsflU*N2D)A^sqD=1ZOzu+@Hp51=3$Tdgy3#VmQ zoj-o`sP#GF=8_8mp0yXajy`JgiLNcUlhDq4Nkq8QE_2Hxj+$F6yK^7TxHY}DWv0&> znH3R=C$pNg?Bm-{o&RpK^3Q~z_thV)-m!n2wfEGngYm~AZcDu`dy~6YX?m~)JJ;(4 z+#ULho2Dr;Pu?bMvGb~H@Xl|WUpap-xugHaeO>ce!IRI_1t#r!;92pbQgU9M$Pc5b z5!<~2*UilFky+uPcysBYqE%;vtLBuf{8Q6*_RH;iT!IBn{#>PHT-h9R4*E}dxzwb! zl%r~DShnkA^?wt*CR9CWm@)sjxmkIQ@~k*5d2SoE+^*VpnXf!D)Z{D}g0)?z#Pde_ z$h{49FxZ{BUjB@I;AvmGIKGf26W(yWd0O3dEVHMu#`#Ck&y(BKtQUNmys!3ca`rr@ zUlU8_)oHGAzHwRswCyx*0$+2r8LNVQqOa4&#k?C@UdQm6tl8`{QPj07vu4=2XCeX z>wKHX_-l@c@a^Ye|NAWtD6+5G)$m6yNWnyM!f(DLcmD~etCFP@CCd(~Jvjeluhpp&7MjF({?8F{x6ey_W_!MV=p5XI8=*dw+wQL09KuCa-m}S9N}^e7aZdzT~7t zzGJVe)%g}iyqMJ^)Ny@tp@fGv4{Ow|W7lj}PMNtzjqisXhi|Re9bf18=M{4@-fJi? z;4LjOS-_lO{CB^j>xa}b-$$3`{1)f5(s*h2cUjrn8FMEohsHYO-8vCFn`ee$?&e85 zpPx$ItI2D>q&;y@_330a;Y-FQZ7CIYHU%<0alRgGKli=xdtGhZEfX2;uv$CBBt7d^ z!14y~#NX{PAG*clPE21}@^wmk)6b$e|5zWLo1lEP;ZlLWN0*Mec>I%fx*SQb`ue+a zo1R{c-Sjo)qWI_I4W0Kroj>=t#%V0iP%YFA)6^2} zWLcJ0n9J;wy>5q2pKY8KQg_Jw^3T=HY*E{{opO0PA+P@4zTJr;D`$4R3r;n%-!1zr zUD!Eh&eH~?_gYWZ_5Kq%Z&Vx1nQk>9aKY+0=D)A+c;4uiQR1KR=<0>duIIcn&hZ*M z$XBGss=mxFii|oKsK>o}y4&vuzrzd)WRm68-?}6uJy1T9lJuP6t@m`>3vbj?t-BpF z=K8#ud*8#zsUv0b5DqQRkz~wk$HQMx-0&fkjH9X{UvAW-8!8x8TBpwzIP;V@|t&WJ#ui> z*{-PYGW(VAgeQB#+8b2XT{5y(+4pgAE0@Qiof$c2?^~o7YtCgW>U4c5U&8p-`=7y) z7GcAs&o^W)QkvJBRC#n}v1q}RxeYBwzqz+O(kQE0R{K$A#T0SH4gT9C`Ep7aRzA0p z+_L#yL5~02ht@Y@5>{x@}gPHqo1x2yd{eZ5;28@XHqolT&#v`^Fd zl7ez#xP34C`JJaH-FT(8N@?2d!?P#f-zf2ac8#`&`KLe~U-RCJ)27*cmHAuat5BnU zrDECk{?(T8%a&g#NiP0W5Fb5p(g`{DY4U{y6mXjmn;7 zs~0YA|E&4P`+?E~N2}iONWJ%dmrJiKeie6j-LIxomom5bF4x^T$7}bksvo;voi63b z-`Eh{eb%jx(am5lJ<6Ms|-(((|vem<(K~=okNlt9Z!lSomx*|{#MvFWaLtt^+u{-r&yo2uIXIt1&a-yOJypi09cI_;oA(`@@fWw-|m{6g2HNkC^WBgg`F^k=tY|KaZNn;_29%+Od_|RoRv{B&^pU?ZqoAEx4Np7xa3x4u9(j3H~l`--o0*D zX3zT?<8nl3R@<~I8*kX{i*~aV=-U7JyT?Y}gy}M@bN+fY*?wNBq-(Kze{RmB6&fGD zw=6EKdnG3m_9tSWAJ={JH;eK$|7b`2YuVK}xkHNQ>O$khUMB~B0X`|450~b8=C|9g znR9B_s`70gx4zv|FDJKh5BJjR{dde_^Xi&q6#SM=z5X)m*VzS|-kHpeEj0~&{p)hc=Q+Pz$Mg4sv0&ua@jcTyq0-=uR( zxqEem_@fPrBYqq=($-LrjGpRoGr0Tc+_ifTzx}-MhL72iyH(XGg3cxr<5uul@SSsd z_VB=~#|^93mF}IqT&n2T0`Hf#vFFu9b=faH(vw>A!SiMh5pU z)huy2$I!da`j3E;*tUa#E`|?|n#ak+>^dy-$xHTQuekZg?++usW|i_7I|iRJkJ{>1 z@^hbroomDymLuw)!jcaZD4cDaSF_k@@7qh;4*y7hSvB=XbfuF}OkVD)T0!mB=+w5! zJUhACEli&3i)8Rm@cAkdv8il z`r+KZ-$m|AOjX~vmH&I>(H5nS6(9C;&QW?kXZfPtlInM#B92f|jmo-$xhGXC z%aanE9gL1#aIewOpjLXhWMhEVcl--utXR&2s+o5e6 zx9TsLz5D69j%$*NTTYcO@|hg_r_;G9m}MvbtcRC;4mrGk%ustUJ@K^a6PX8n-#*sH ztrY7E`E%K~jz96*ck7>R6IjogzD?Yi@g!>Q%i|l{J*#JO>7?epoICf{v|7d&QHqzp z-FZI8cI~TzQ=&?K^1R_$(WxKvJ!i2lxst!2yzqg1fIqk8p6JHs-yUT>ayiQF`9AGR zmELitLr?VO)8*veE?jg$P0*5n`U0ehFtu&`5@KUsF>cJA7*-6y{= za;v8YaxRi|y^*tLMxF2NPtO=+Z=9{t-EfBO;-6FJo^RXp@_hTQGeIiyKB{YOS1H7E zrTa`@rE;dhAaL%}Q>8Cl-UZJ&^Rr=d{g(c%?>|qSYOpztLFR$cw`D$ucHi)-a9Heh z;oj_BIpH_T(woFJJ39ELM%(~oAouhjKl#JyydR*OpS-MHjf z{=Y>YF>}<0mJtsjgOojc#p||0Qv&256xoYKzTCU)63GbcIa(W|Qk8y&0 zl{wSi{qD2cxy~HXnXKcU;;=SeUn>6hq?j%IVo}sHs0;_j#u_pBE=QSs2gCfp)+> z`y>7|Bl*`uuJ0l_%5Po>-v7$K@|g_3yU4D_JvwuD%{BTP*0JE`+pmi4iC(6Y*9P## zwCjqNvbLRn_TJF(XLu{0ruNNHb(PzEPxBwP=sr+sVo|<(r{H(azx&@pr=1tG(SB|c z0@~-q!&o`dKLr)eL+AA`SNJrf%0hO_BYu zCZ6%|$(cu12~RR9nzJF6nO!3PWK4xLyJS*;b{ZmuYhKYHL>s7~`4(Ab$lyz>5;cO9ai1{a=^xncBv-9q(`x<9u4 zd8am$_3NSa7KPx+I=D6%ITgjqY{Yr{2PhZ`AyKSs~Xk~48vBj@@ z-tX!e$~Z463P1T2v~>H?eNO@{63??NS>eC@E}PbD<}FOzSvnuW&E+%h2HsRY-TUj6 z=p+eyAMS-QdiS`}TPt)kSwpiAy?&*Aw`$#sZq8dgTaQoPUVOuC>r=ySpUY)Re!Dhb zbkV=@Td`_Yrp&YLdn`Xl+Le^I*1p(by;SJ%VX;GRSBXtJGNEPik2r~Bi^swnLn5Th z)=o)fes!n#;{R<%yv_#M)6J)u!K|3zW#w6S z#QMZVbcEAAa-USL=$BZb!#5#)xqI`&S+Ojuxo4aVyLRH!;%(u!JL9WeayBgDFFswm zdFMXMuMBx7CVtYrBdnOZ{<=g^*gNa%CNIy+{!j8f_Dbc6|IulVvT9RBZtrIM_jbh^ zHfFyI`MY{P{ZO_pl&%+Py5`MX{cHNE7g4+TW|b{J`DWg;wL9*_vU|#3FlDlQlAG?C z`ERN3l=TVEwllTIWPjjXe$#yF#T^}Ci!PsjeEoF!)Y9dWM40yX(_wh$lJ&(HZ9e*-sx(JE!znzvM z@_g5w#z(r}1%kHR@%;Y6I)!_B?4=d|HRk={@^P9|{^>(3mqO!9;Z+Jvb|z1bD6vda zpZtw4U*?!S-_EeDu1DmVmp(fXlgK@NkHpVLnR{VP4Jxb7JFZ~=WE;8C;h}X@b5+Ae zzV<^K=KV-|$)dvBH|5AlbCruu)%{D{?=&~K}aHsh&F{ME~ogjRZQ=xJ2$E_HYqb3Bdn`L1oc6hW zTVkv0ufK|TyJL^O6XW$qB}>J2$8G(f(Qp4J=+>h6d+ob*6fHI@*u6Nz*yR?x-(vDY zo6UF5eOg!Zz4X}b)2&xS#UGj&7rco0dP`=7_QaE_vIa+audur=*(30Kr&hz8&X6`+ z=LpvZLY6o1RT^|y|z`ROk=?5&EsvLkD!(Qx0x;1C}oR_~?RL&}BhdKxe zzgS)UZo>mj!?<6;QetcFcD|azy~kjdy5av>OD;Jtn=(J6NXBRR>0qZHt^KF2TH9;> zTD@iFo;uKp6!V|Q^@EoG>!g00zI*x8SCJ8Qp;kQ&!hIhDRt6qOT30K3__(8{e&)7X zpR>XWFA8UJSUuevw|MG>>*fME@+{H838(u~UfC=?lj41VQCY?Nz!ydTPAd(L^Fh1+ z-4tk_c>QA*!>w%YLY_VT$=$^sJA2P3&NHvR|7H7A=kC2+<@viBz7=I|zQEoz|9NEM zPcC0KbM~GISI!oG3EzH5HGaDD({r(S%`CS5r3@7jJhV7 z3*T8-e!rWlx~)LtUthj+U4JjjZSC&m@4ZsQZf4A9e!j<1VE>Bw>f3mxO<$J+I(sZ6 zRWD3aVX8vx!s_ep3${*nVp`j{&N4@8N(Il97Us5(QaAmKnPj5>M7*2yZQ-&Eo|6tA zC*@b4E?=NGS-7$)U&iCjw!{RpoAaa3O`TXCrgF%Uc}=`Ccj3gIHl3up&wX}vvOA|9 z-WHa2|G~X=Ul-3^oU+R&N*)w$N3-+Q4rr=0^JmCwMSpROZ&oti-&F6w)%Hz|Y4J;j zSFLtTjn16M`dnq^$CiRl5Su4_bHWXea%YdaEpGh#Grq|#d&nTFwODA%>)xIn^8_ae z8gEfA`MP*ca^c(ApT6>L++(GhQmG0Wll#Xg-%{_u9y~d6{ma?16Mx?2H*gL**!?&- zP0O)E-nVdKR7%v|h(}VPP2X;xNwrqiS_VEZ?}XxJ##UyI&8YI**(b=U9T>0-Z+8`W-~Z^x#Xd{_2k&8a-e&Kn+2Lar?rT4FrS z;%ub)`vF>YeMZlvi69V`JIIj21(PsN{Wu3^=xEvL|ynx?oQx%MquP~ZS z{!?eLuj>Ak+>oY{5Ap8~b9l~_He4bt*7305QNgyZDlMOjPTyW$$(r~ibEk#2ii*Zt z?{l^O_czU+cIS5T%e4ol<=wv$vUJUpo4b}Q7y2^OheLC^{W`;GKO#3M@^juUEP4E= z?{4ZYAFDV%2}Mc$`k4iDZ@xGre)|E#8G#cbzTyE#4lT8nvAOeU+0hqAqS-IFKa7!i zw1R4OxpOY(zYqJ)-n$@?+-fHzvfrKU%vmi|qoFY|oxq zylf`lZa>c3r%kmS12^w-ulco1z;;r=T=6+|?`FJL19Rf7J^GdL~u;rVnC`B?G!MK9AIR{XO%Bg%X&$SSmH-`U%yhl4{pZr$L2{akgw z?&Z`=7mF0W_;zjUj%(pnE9*G!@^N$R>kY~qmYdW#I7l2hHY0w2>c;cTS+;+cg0>I6 z^xJ!)e9pwwPX4^3p5+_XuJ=lj{8ceWTxb`=8*A>krdP_ZHJDtyzdes<@;z|$F7J)m zF_N2v`WBpK=u&)Wr!M&SbOk4uf%YLLWfkR=w7*QxGZuXQ`ET*%lb20yrRyKe`M~(X zbyY&)_Z+jv-*L~k8Gch<@jZO!yQ22ZvmdfJi`Vep7GP&nc2=A5l*MNI>qRS<*IC&c z{n`KN>v^jMNlP!T7MfW;>FXqZ3+cNCw=9o^rx{Hwbhv+8K=S0%&JLf~4_2yfurIN? zV$Q^0>f^j1yxoWQl-xdY3)EowN#V^2q1?mPZi zU0~8|_9<^F|E}V{yQ%A{uZ_?lwdtv{M*B}Rp5T5klkdgJJ;K_}C!eO>TiGmM_Nc*yAF>QkA|6hD_+c4bQ`^RbU@ zG2dg~Y@YbxD(mld>wgjZj}_`&c6DC&m&4rgq56XSU3|AT_Iv+Yxod&?=X1wcPriS( zXrcL+4;MW`c+#h{Dm;9FaeK01o;%~w}vFeG9y3Mx* zUL{JlY~WiE=b`HHmUoT~=R&!%i;m9gY7abrQgp%f_XRtJzaf_dE->28EawuBYdUpi zPcXavqgRJHPAXaKPFh*5HEpGGib(UX2LeofIwg!hE#~YuDUgnx{!m10`SqU{F5XKy z@7`>GI@g2!gIlkbBX5A7Jqx=qR|Lmb1NPaCRZIFWRr=rjCjRDrg8nbopH?qt+*^2Y zbrAovx$*1YKX2up=xO|t$x@(VH`kHNuV*RNeN($JeOHL=4;P)yzq6tWFKT`%X-NrS zob=?{QQxh0wRT(mGUS{@19{FLG`;WlWO0DZ>Wz0{YXLa93=4T&1zjIX1{A)OfAa7i z?^(W^bEfnAJpN)hYlTpWen^wkw|4Les(U8?SjuGAA0Bi=VC$VHpPx4fPWt)zOm^ds zo9vDfxeLse3#{7JuqWlRPY~OQv-$~p$|lB4^WT;0Gygy1zIR?nXj6y3r_tp+!KDBH-+na<^zXT{X2X1mlkiVeJt=?SZ9xZ=*J6h zI%+guF?78(s%)PiIY~e~VRf>$tjUvG?w~Cq=}B!-^A`mlTPx%eH#@DRh271gXLW)6 z{oqWapMNY9T2lVmyw2NL5%Z|O#)m>7~>jEk*x>J<4=gji`#d4Wx$N69Pr++-FmfrrOwq--zmeQQF z|3xk5ynAL6eC(3#hAn$-OW1DT)w#q{XmG|>;#9xp_KwB}*STb-%~@~sKrMr9!s}fY z4I!KJVuh4i?%w&D{CL6YTLn^zkxyiEr4Jk4=CVprUH_o)NJgEQ+>y-v-i>?*-!}9u z4pM)g^IBqd+DZRYyqU{<-W@DC7;r;FK2lMTIXZsJ`&NrT+s{aMxk!dDFbz5zC3t6I z#j3R@>mrsNT+;p6;X$r8U+nvwyMfbp$S8leOo{CXe$IOEhmoschoA4sFS;B_&mL{8 z@!YWIgwQ9UCpS!Hf7#o$Wcp5x7hm_BI9HV?_e!p3<6Wu!4|gtmy>sC^?Ep@$&q6MJ zJ(|ZVr(9tBH#ut>lU~f3r)%X`KQM@FWp?w>;?Y#`=8OEu#j-|!-Qi6ZUhQj&KW@_H zbTj>PAnxtV6QWL4*UY&2A9e?57D%`pin6Re*R}crm+emW=B%Gzii-KKS*`mP+4DKB za!pBvvG$V!*L9QqXZ`Tg7M=S4!ExOshoajOqJF!{!3wSU?lEZ=X?4?E>!#>D4Rd|gRl$)msnimTJPR`9fZQCqxW zpF;ja?Iw1H^V{t6?=LTrtlak2;Gd+AjDDctbD_)8xxpFp?lk*4&RM{4z&7G<&BoXT zdsG5^^YGyR)tH}96R>$elDcKo^O$gDGe>XbX{J;jeRDywuqj$cqZUHrq< zPpnqG%Yt7zHK@s5chIzavgFUYqmQ%x2XmZrx&`V0$9A)ZG`-`g&E$TmxZP~>f&{;= zXIwII_b1(P*VN9O7IWoc-~8o5j_P;g6J9S7P_Vsvf1mK52(FeX9bWd^1a__3>zi1< z`qs{%CqJZ~S&J+CeO{_HOS9tO+Xvk1!ahI!&l2ol#2Lb{d`4OF@?R5+RG;P47H2W8 zu#9-uc1S1)e!EwLI-K9nE&F3z&x%z&U_O5l+`#mmCw5r=v z*3x`x<(q34YUBQS-OhR~owdO@L|^tmc3^V%XPy)P`n-^vO$M@?Rqohd)QWJR_9vcR*8?t4AEaH*uACuYa`+%doI;)w+B^c%!p_F&$#+{G62iH7rH0vwR)phbT zDXa48pHa}fZZ>n}x$IrHXS%TQ?YVFyJn@=yVL%eYM7zBfT$`sPC%sTm_Oh6r>+aDi zZ5*a`(e=&DxQ)TxH#WH3Z7;ihE9AG*lE<+N#k+NmRIE2;+T@}3?7|(6lQJ_xJVeiA z{A*Zx!MJtH**k6J=O1hk`W>3QSz_AGx-a3`YmcNJ_!aqOM)$EDh3&IYu-nA)TI%`ucILIYcu3%FDg;g*yAgEbRCG{`9v`;?KuP zxqBarzcDP332Tr$R`|-nCD`)R4A%1>-~WcL2yDl`A_;PNzwos7LQANJ0X`fVEf^kie(&z0>8zI?BD&a?pS zAMLk|?|Gg}>>7F1SrOK>s1<(|v%AT|P zrpd&$antT`?KpFHWyaQR4bv`~HmaAtxi;4$9>)SQ{zD zu=&b?j>F|od%12`$xi3xH=94dpMHJ4uhsRZ_t%{eJAE_X;Ckgs51pfC^6G3GYP(&7 z0)9^^<-B#Yydv#m_K|5f7Mm=X%IxNmm0B)0*Kz)ZM>$1ux;3E-9V(pu{<*>upLj-c z4Xf-6^LfI><~J`E+ev$0Ua))48(r>oj0bI)j9(gayG`(RKDaG0Ui6>OlS{2Dg`YGC zPI8<##ntn0(-paji`}q(wHMnmY=pXIDcDvi^bVH zyM5h?Gr|%?>-Gh5YE39*H8Td?NpSR@&j*dPl-HYEiq~)7E@^!*h<%y`zvbGrNkQ*p zJ?mO;uq+B<=V{?vo$&kR3$ELeON3n7Q`k%j4{&(;_MBTjdtCvGEKxcJL3N$jS0^3^r}RQe3H9RK|mNI%DM(qd<{LSEj| zjC}1))y$Vaa7#Z^|E@J*&Y@XXcPwG}TbS6pI7?NnllR7i6&qR~Nj}(lq42FK;$!~m9cf+4pgZnpZ%JA8Y+Wt_5` zp3d8R^MBSW-96HZeJxEtw;$3Mi+okU_3i2B4c42OGBSC zdfz+s_~(V94Cl?&L3X@dE4edy_P3`l5Ni1w_(s<4*P8N|NpgWa^-3ALHRr6z6=IZY zR$^vXsx2`3lC1aiK;u&Fxz2&Pw`Ep|#kF=@DnDB<8)?z>C(23nh31wDmHlB8uiq2( zzAW$BD$2B-?ev@1iw}hx$emmM`TXC+Z0=*JQr}K6Dyvkd^#0=xVCZ*xt1kVpRL}p; z{;x3^w_h@O2ke=D=~tD=pI0Z=gkDQto@8^&&Sc?sPX`OWg5~XT#;p^J4se|GxEX1& zsqNVlxeVWWDTg;E3)U|_drVTxG2g*At*@;y^;ObqjWwYg&fMc+&z_$8%HzDL;mrC2 zVJ}~`M{a6DZX#BkS^vz!$ zE~{zG*ayTsyFxpaZkH)UV^7G3#YNag58fwIM)-bx6aOj`HcCwx9vsKmsk z`yGcjv?fmXiL?Rbbh&-cdP>`mCnOwG3YR;-vp(d`@`dZYw_V%ld~*fM&Usz|b%*k7 zza<-Fe7`Ys%Fbs0h(mLy?d;kqWy;<&p=Z|O%15gU?>@fB(zI!cf?ocd`wLwe62!iU z_msqGx_9sU-okwQaM4o6GOyPUH$0ma^ZIzW|DQSa2lsXG?>{JWj8R$T@Qy{Rc}~Y1 z>9vavFPHqa@!{T2cIQ=$oR^-^`)Cxv`DjB};u?RyWUnakh4&WBd37xOrTvG$b>THH zc%RL)NN7p%pK~#AAII$XO}f`EhVs?sgzvt#GqU}r(*Lf#ZMtni+R6N_AD>6w{J}K& z7~7nQK4-%8zrBw6Q(t|bN!>kkX?_0J-RVLC5sq^8jEXZEr>HJCa9>o-k#(BNgLO?h z+9#rqoG4~x^yT2{wh=6aGjLc!RXB~W3JzzG!v7N&<26$PGMylWg=`fatR znvapKZEWcFSNGo8ef_O^x%TzE_j5kqeRp~Lt9e%CQt$XJ7QRkoJuLB|EIw_9g*i)V z!gtm!y>D;Sv!7FMPSTt>{n2gN$&WWrNtnv$SlDs4Raa1Ft6kW4!8(z$qq+@~u67w* zp0X&=uIK;$sAE$({7zb@OfRls>56dWWUEk%Y?`7mJI=;uUvs=x@jeEXb@}t$cekBA zcwn#Tr8z=R?s0Eh)9wDHv}eXDdj}=fdxhuZFS^+YS~1J0I4`d#Vf9{qM1D$Bon6&= zk1CT11@CUw@~Jvszh*l@=!?^fs#BT@R;>OP-)zhjKcf_Q*S-2-!VCxFl>TRHtISoG zpSxE)!6fCt@8pl4KlB#p@8-40$hVFznXkk7^#ISVj049KfAF1H&8D}uz3R5bhKJYu zoM)TtiR-F-qHp>lb*i((f#*~BgC%a1+L<0d5yw-#NZT&(TBX&FWUogPH^qv~Sz>s} zm$U1g;K?8}Zz~>dFaBN21AZm53r?10{(W-FE9ubL&hZCzK5blaW#ha{JRf{EndnDF z#n023zKCV|zo}Pv@13@`FSc*pzd+?>%!(_qswd|9s>F=C1{+zq~y4&Toa}ODvTe-vjW|Qdq z#ddkuK56MEmGp_7T~i{#ys+*^d*Pd~7JnRVx<<6S78}bfG ze2wng{NB4=eLnZ`+odaJ9G%;y@O8C8X$a%D*NeJm8NS%5wPCBC&y$%;79PH1X!_CO zQj=4B;<^ieTar&!PZYZnkyu}Uch}Lg0&CuLnY*MHH+=d2k<+`YIVIwZ)`7db4C@RN z<^?e+)ztYVhOYLt9ui9X~hNTl&bdC5dlL*rF~svF4=1?N_%{=6Ool{W-nt z)b$Ow{>lcQnG$s8Nmvm7^?8j`79{Pk@^PMiy|BR~*XP>J!;Y8E6y7|ss&D1T>I(+h zi`{DT&4df9zwNR;blA|TtTT1R{Rn^mS$o=(cD-9GYR8k((7dFvIp~y1QPSlL|GZWf zOWpcbzkBzO#{plD&6#;1UU(H>@`0CsN~;+plLe%WS{V1KTek3Aj_;d&`+KE#RDILj zLgpM-U7uMm)*Wh3<-T^w-`y)%U9_qA(Y zo37szlr9--;CgTG@549lD6Cl={YUD;*1Z!B9xXZi>x;(WrwS{3PGvMq)7!T0NU#C- z;)`ahroDYz_gn0YhVxD(#tgxwhtA1e?OOF#A^))QO#kq;KTDG;H00k|J@lJB`?36j z+@-1Z{LI^~q#Y4Bs`4cB^s*y)GMAQoQ4MMmWB3q1wdobRcC={h{>q$#3d}Z>Wl|P( z{nN9KS=Y4l`0OO3c|5z)w(o4cdw6sDf*Z}Ua{Jg)JTJT7GIMG+U9*XYSw`jbgyc^v z`!oy9AKsec+Pg*h@%J2i_Nfxi788W7G)__Y+p2!$=Qp9Qm)9oQznWnv&TsvQK>Hg4l-OVYY{10Zk zpPJ)(H2+ZR9>u&lc6D`ySrXe48k2d&3YWDv${Idf`6PmwPG&d-bd>ba_*Jdija%W=25=rPsVtKO*r`FCtO@%_^HBjb*ocq9(2nU;4E) z%jCRDcEW?{vT1ia(pTNBP4cnWwxOkV`V42otH*d^7KIgi30$l%ZV36il0&|~Ipv2; z`+CN!XL7sdvbermwVm_$k!3y2zn8w^k14Zfxzc`BxxH@(Q|g67yVIq2{rtMRp*f|u z$5t=jy7NVJ0ekpTHJK96&v*9yb=ugn%22hV`(@jw$PR`n%_%G@?n{$yUUAV*dh#^z zrL?Pm&l1z>=kA%C1AkT8*#-plJmHeIOB2XBdsG<;VKz(Vw#_4|5y#qKG)rhQHEaWk*Q zFOGb73VSR#@7uP`u3w{{)TziFxx3HZMoQTAyM6M;XX`XXHue=rK2VU<+aGnoIQE-i zz@DvQPoGYiWV1c9?*GB3yDDtA=Q*YR!(1$9~PZYB!%uje56#9wXnRt=|G? zIEsmxoY~8wYWdpu`(^deOMR^q#RFCUx=o#NaKn?eMQba}B-p%XA7Wtl40dyxD0{a0 zcKZU3yv<5G3=+2a9eEphi1(Qmf6+4Lb1hRAY;Bsu9lGmSM3rQ~Z^x^zxwF}sBR-mz zi&IM1w$2a|p zQvLVE`{A4IC0;=@_x@<~SmZTfwvdURHoI8uJpJuk`x=6t+Ds1dS{`S>;_*3sqI~d_ z1G$aW6U46kC=A{Z{^RKT!!c3z?0tL07-y?19BjKRk;ymd7>}!g^S2+&Zy8z^H!XD0 z)je)0`TM!o*0N649nU|k2=aNK5HHgE==Hs$5rnoN@-V|_MdEbgPkj1 ze&4dVzNJ@nW5FgCO~?KBc9?!Dx9&20bmqj?O-@gF3MPd3WqxTWyj{rsuCF(4vr%ud z>z#RbFS)%+J9N&$>q1nj*e|9@;sMQ#o`3h%tc+LWn-psIt=it3GbT>Uclkw^lmGI| z#p~C2nWs%&eekqTXoX$jF^k>(iqg1uy`h(TrIev(rHmrfN4U(gewlaw5Ixg?q+{9si;ZI#<^hI z@|N1}O}3NI%bY~JPlxAU^1K$GTm!NLpZ+*epEU+_qY|zJ6^ex0>%_h{~@Il(F0S&njQ-0zt+*{jHr`PRWliwzDq7Kt?VSm~}# z_&=+FvwLFd-OZmDZ;4DW?fa~pP{MkQlS$#}(GO3A9Tg(XYS=71+Rkqj;(h$=Yc1pS zuJ|CPXZ%k@>yx^cdc2vTbHkjaHb-#t$@0RZe}#`;t8Bd;WO2%VcGQ8700I>QRbMk?8y&Pj^l;p(LQWa zQ}RAmpRkwXP~P$3p@+eI5t%l@LkSMo#r1jOvxGix{`^w-M%7o9+H)sghx<(V>G*eJ z%payT8?&iuL>a93YW^Y@93|Cn?4I^X`fciMB4v+wOKI_hp}&vSmTUzeke z>E`)`&z^kbDv)q8Wd5P}^l%8<9dA$T56yun_IsVw0XT@28whJ!4 zSbam^XPSJ(q<_LI`q-ab*!3v=>8EFvwZeb24xF**f4TYHlm$~1UKj1R+b{=|^;SI( z;Z*X9%$VbP>Zok+qi(IjCreLu+HVcFJo}ludV%hRuD8o(#NB)B^~>vf(XODGxl)g&FL*y+>#cmA zy(QoGqPyyuHL^2&CvD*I;1pukbo}%8i)mL@YlXm-Pb*n^U3?zv1nt>a>ilMVoJ{6? zjqXJf)@(*q-zP-on=JaxdG>Rcd*#Q(jQE{lI&NMUWSwuD?77D--M(|X(T@vf7}!0} zGH+P<>skBD;2EcPFuGq>thW>RVw3g$$E=t}u1BhuTWy>)U-mgvPX2ANJm28j%9G5J+|Zn2@NbHDaDAbagYc z@O3GR=!S|V zpZ9H%-<1{C*1Sa1`E_2AEA#4AyL4u4e!{UcsP)s+;K}DbH1&fTmohMK^t*Sr#6I^W z_v+{!-4XsjCVkaaS%2u!#AjC1_w}x~bmW`V#`E$=&tKCSnZ zqp!cO$Lf1?Uc8m+%58sc^1QTAD%06hQ{S=tR$SA4u$ljs#I>XIaG)EO*YkbO=4Rke8h zbfGJcV=qiT5`4nsue`s|9m^6>sp|Lf1=o^m?gA^5UvA#m?za6>e1B^2WBvz9<%?%c z`8Q#T$I{M6-*fESjp8m&5Zb~u{q@5*w&*W^8&6lSKUVlZ0MsDV+UsDjb|(XaxSyws zW60v>_x~8)HpRL3+%sMy_bIE<`|*Ygv3KU(lgLv&A%6HuprzT{ixal~Jv(Rj(W^U* zf4V*0wdc!}?T9%~aY{v}tvoYac zwhJ-u@V^48J7#_K{j&4C&Et7@PtG=R|5$e8pJ}4@+Zj2r{IZ`9Ukg_JCpK-vd$GK_ zRqe?S<}H-*;QXWzy6yGpMc#iF9C-z%!*!KK4O-6gyB8n ztyf`j;BLI&$lxO)tUcXEJ*<7=Gnd<4YhFx~<=AIk@tyH}db#B>os`P$`|DIJJZ70) zt8fu)EYdqOOQtJRW!~EvLcg1)zm;^_$h^RpJ7Z44o97>lteg10SH3J~V^$DMYbd(Q zbD?O?)NMX%V&)zGdsca=ZBxyQvnF9Oy^65m z6uj-wsn?$k-UhEa>-_5U#n;`BSG9d>HLr{NDB<0e|KQ`%sX-oRm<*X^cJTDA-%@qt zw!WNZZ`>6Jk?Bc2CBaSKR?lIu;+%eSd)U4C)vrLK8h+nSzmT)vUN3a2*S1Yh>-dY_ zT&d*wA2-`NO9sFGCz3Y#caqu9=Ukl;I=fzQOI!()+&sJtBQuZ#ddG5Sz+_zW9t7O?W@%K9S+;?quIq$x3bt-??$)f^3Rbq0E2b8Lv zHYHA+eJuHiqlxP5^QHHbChANmvD%olPii}xRUps0%M-6nmla}89 zdoZvnLGZbR&Z9efIbU$;Tr+umdfNRZbMJ>SGRvr}PM8of!{dsO{*x#14WcHM)xyOu zzQ4@*y+8NTinqD@${*=3sEJ}_d(bJKqua>P6>zij=8vp1hpagdihPd?S8gav3hwng zEjHIRGG^|{h>UD`(-VrXqFx6#+3lO__~rc!*L(4ezITo~fV^m-kvL<@>zO9Z)1O>+ zK5(q%>^~59^9OUuOTD3yQ`9 zr>3i=%$B^z%p7snPwdm&%?ACPxobXp|NiRqu;E!q*2N(HWtwlh7=9Wv%o0%8T`;q* z>BaH1iG{CqZ~Dq8OzkWAk`VSqD>8Ws&y(WS`fd$(lvCzTOFpj06M4MjgGbN&mdVR| zZzvuTJ|SaaJvp;hcBP%R>-6tYQw3+8TBViJpub&PWtG(KuiyOci0^OmKUC&_b$jiv zEbh~Je#^!8z6riJT|#V$)JBD;_xSH#6mRfS)Rgl}zr`2Ic{1XcaTBkCmYLbA}?>H;(sZJc{P6{Bi|&&30X`jiqp%4ryqCE z=N-p* zr*`90Wn9lwV!D2?K6J?M@hW){k#o4}^s%+K?wviGa_ildWphQ_LH*f)msgqfPVN+$ z^|eR$V&Tp^)Bnfcm?!?Jb@c+}65GW;6(>%JD_Ill_WJnq)zcYmUkp*4UN2ggyZYqz zCf|>9rKRLtKk{y6U;Fb@TI-g#&*b>@l@^ADvSxhRuJPexFPBx(bgi_8^hu#M70NU9 zo;t7K^vo;Tx=vYi^3l(S0`5&OTF1JMkuhk`_3)CO6K8pv(~td`!8p&e?u@JN-lE`! z4Tt_p&AAmdIeF(IXKQn_ZTlB{)$dDxlvt5gwNGo0g2j(Vf2y@^A9K}inh>G7$!7AJ zNsXVfmQC@08u0w!S;Z@*DUYU=uG4z@#qsnrjtS-~4{y>_WyD7l*~`|8l`m;3&`=goa^ed}2U_LEX_ z@#Vq#SKRhQE$-(181d%Kf?tI*ZACY4&u2XvsN`SLb>~kf|C9tnk5GdH-&Iy8&G;kj z`Q@nL&zK@swkq!b8jUKugZ`eBeVX=v_c4C1wYC-APK(~Vp2&Ob9=DX|mHWMkSsAu* zs%ptI&oi7?IV-=|LCouC%5>G%-AZd-OHA(nKKEsKrQOAH*_5s99ydOuZA$q0?eO~l zI?LxX&hvaF-+VzgVt(`vrY7D=XhT^>*uNhVv@fJdYyNj zZ~aJ}Yk0tMQy<%&`)cO0E8M4_=D3u;Te@uO<@e7*Cr#L|bzS{X@%}R@w{9z6Ilc-y ze;_o?Gx_+o@<%iC%n!y~-x#VGuJe0OvC^~x<|UI@zBKsln{>*gE$Xbsf?6FpL1q~h zWu;pprhm&maouQg7b}%5S@%1pQuFPOGsjfTYWH5**>QWr)rCK{P5FGMcH7St#cUQH z*KV>WoSET%&spKuR=4fj^_~PB?z&P|F2BWep6UL$#j(yIr?WTRG%IH|wVT1{dv*29 zinTm9Qg)|a`Sh!2f_*`D9N$&>?JwMHs&+iRV5Ym?Q_nYbPWP4i*0YW?C}gQ)@}tYDuY|30K=d4s&K# z|G2TWq*o1~h#a{jTBUmL>>XU~bXm&<>WIe*LC)tbJpTm0kCV#S<-9BGZ0yJ#1*f2!>dGN|s{exHU zUv1xA5~y|cUZDKGP17Ag-JB^0r6x^3cOXY7e35Cb&CF9&TRy;=4t*+I}F27yh!gy}R){~(8RUA`WojP&Hk?k8kHhrq$n{bSOQX$(X zpG!LwFXji>nHTO;D4bE}9TMe`yVB>kqsQ-+UvG12c_!-^95D9$C&80^K*_Q=BDvJO zWU`2QLBpDNj#pA`**#;=NUt%UnOiF*+Vt;wg7Ds%ZY6qVU!orRc2pZPzm|BQaB_aj zBp!>cMzd8udhA*l`@Bq4_2<)LuM!)YQ@-|uE}53Ld2M~up=%yfSB0q^jdH)##`R*= zL&^1a5)Tw2Qn(%{DK5W^};u(w&Wl$Bc?rWtmmhYh4ao@7mJ) z^URe=iZUwMnI_JkRPWySXTVvdrcyC=!`#1Rk4&aE^c>|WnDFGhgDa26rk?%go$7r4 z(#Fpwe%C7Mur_2CH9D~Rwy4n2yDbi_3-&K^x)7&U)Od8({gh3)_f0OEZCklZ^1;lM z(*F1**B*;sy>j!(?!T_Dzj&NXNG&}K$}wpxnytM~oYQ-v{#RBywBF2OmJ^Fm`*P`9 z&$L`pG}027nQbQDabVpq(aX5Kt52oq`ys<;2g-Jo7d4oqS!7)j;G1M>x#pqe)H5cXZ&h5fWYc`!`h`!NcmC&HS z{dK~G=3O^#S0CULJ31}FyM3eMMv)W$wdUqNp5wvlV&swvnv6G^_iER4*K2FrSWeV0 zG3u1R@-<<@=ZVG#9F2-jt@cjbxBO{{;?r=R4N|w?MI873>Cw-)Z3AcN5r+7@>lYKM zOHHTG{*tNEzn@{JVO;9f@5{3<-~6`u%3~uXs=)4PwxiC6baBt-5n(TPdZe`kI`%&bvTKt|=Kv%;sJosS)x1x1f9onjo^ z%RT>jVj`PQVng#1P346r`4;6LS)%-|;a88Eu-OV##d*HV=KjBT;eh@OMrP0u!2yLA zCJXhiSMoJouCvOGSid{r=$+GVzAXa9!kGhXY!)7Q3l{y06X9YvQFb_IaFU8W-{uOprO{CcC#xf3xiES*+88cilav*5jYpyivRK_Q78>8-sWXCg>dX zlHKz4srC8EPIdPf!i!Um?$dqBbDSai21{Ck1apj5u7v8=`vEVqZZ;=f^1b5s>U-F{ zspq!Et-jB+n}4n1gZ-5-O=;( zerxva=~MoPb2%9|xkng=NIhqW+&zEWtq(ovleQZ6iB?{`Zd>SoTXwt%x;DJd5@Ux8Aw2Jn@x%w)ylU$t!bihgXWNtW~+uz$NkE z^jj{ERjqnI?`;%6$S=(F#69Bdv3)mdX2x>QUtRT~F?~|0!KqqX_BT&Y%&_k6d0jSL zW$u)dTXt7J|8S5egq7K5@|v#1Px&g7j!o_pozKehmQg6$$>s#(rT-C|mdLSLc)WUO zYqa*~y>l;{UTmJIDHD0IeVed-<&(=bZIT9)8TZ{WD~_2GarOG;P5sJCcXx*Qa3(Ma zO!{=gXW7?v3<5f*crp?j(kDe_^t)-EY}8HM%I;C|n}PjA#<4kDSEM&IFRAkDb@X}m z*!+>*gQ&S|4}+fmU6ed`)n&G8XL(pa#k;^ap6OGgZMIF5`RTnk?b6HMUhex>vzfEg z+5Q+GaJ*z+9;$dV|8#ajM!#C}d+*fS^@}~tSEsT~F*x8D#M%3-sYiDAhg!uay;3?g z>(_hSzq(+0s1dW56;th&S{ix(o0j|0Szb~T$MPZ zxA*P)14~ZKD{{QM`M;;>mj4G0q;ANh9S{eN*j@~)b?V!o-+ndlP3m5)yVvd4{*p-Q zp4oT_l)lb-pWT|axjSspk|T2$TDv_;+4)mgzGYpzr~$JeXp&56QE!0o$%Rp`aWf&&Xtau7s|GA8^h8RY(VZlzINh?l~)!mHF#6E^qA)^!?|%kRs{L5CA0B> za-br!;8MwH&h~*T-fsxYf^cw%ye|w)?_8JcF z*cYtceDj)p<@99Ev<1IF)pl+2vTI50clMk-#XreASn}iIQ>;7GjRWq2O1XC*xpQiF zZTy>Fj3v=)EN^-O^@=aQJAu4u(Sg6@-6`|?s(qeYOvG+D^ zJ>y`&R^fd!;m_3;lcxDPPt^a`PWiiYzJKbrUwfu}|9Z9M@*5W807X!yn6M)1o!Zg^ zPTPw!CFOsAoWiHK+0tR!!w&ze8q6{(*(C{kcTGLBSfLxdsA zQvX};Qp>6fJ*4-iu)P9Fmzv&rI#-sXP37+10yaL)r(dqj_@>(Y{-?fiKtIU;#{=~r z7i-PlCA&Oa@$EzXlV7HVPkDK2`3%Oi2FVrvY@cj(my2=f`hI Date: Tue, 6 May 2025 19:34:05 +0200 Subject: [PATCH 242/330] Fix zen config --- modules/programs/browser/zen.nix | 30 +++++++++++++++--------------- modules/programs/fastfetch.nix | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index b1c3169..29a61b5 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -103,14 +103,14 @@ in { name = "${config.conf.username}"; value = { settings = { - zen.view.compact.hide-tabbar = false; - zen.view.compact.hide-toolbar = true; - zen.view.sidebar-expanded = false; - zen.view.use-single-toolbar = false; - zen.view.welcome-screen.seen = true; - zen.theme.accent-color = "#b4bbff"; - extensions.autoDisableScopes = 0; - cookiebanners.service.mode = 2; + "zen.view.compact.hide-tabbar" = false; + "zen.view.compact.hide-toolbar" = true; + "zen.view.sidebar-expanded" = false; + "zen.view.use-single-toolbar" = false; + "zen.view.welcome-screen.seen" = true; + "zen.theme.accent-color" = "#b4bbff"; + "extensions.autoDisableScopes" = 0; + "cookiebanners.service.mode" = 2; }; isDefault = true; id = 0; @@ -120,13 +120,13 @@ in { name = "special"; value = { settings = { - zen.view.compact.hide-tabbar = false; - zen.view.compact.hide-toolbar = true; - zen.view.sidebar-expanded = false; - zen.view.use-single-toolbar = false; - zen.view.welcome-screen.seen = true; - zen.theme.accent-color = "#b4bbff"; - extensions.autoDisableScopes = 0; + "zen.view.compact.hide-tabbar" = false; + "zen.view.compact.hide-toolbar" = true; + "zen.view.sidebar-expanded" = false; + "zen.view.use-single-toolbar" = false; + "zen.view.welcome-screen.seen" = true; + "zen.theme.accent-color" = "#b4bbff"; + "extensions.autoDisableScopes" = 0; }; isDefault = false; id = 1; diff --git a/modules/programs/fastfetch.nix b/modules/programs/fastfetch.nix index 60e51cd..9652bf3 100644 --- a/modules/programs/fastfetch.nix +++ b/modules/programs/fastfetch.nix @@ -23,7 +23,7 @@ source = ../../assets/logo2.png; width = 35; padding = { - top = 2; + top = 1; }; }; modules = [ From 4d5638baca7d9752bbfd0e2e0b93a3320529585a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 6 May 2025 21:49:40 +0200 Subject: [PATCH 243/330] Add SystemLocalTime for duabloot --- base/common_hardware.nix | 10 ++++------ modules/conf.nix | 9 ++++++++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 6f3c94d..e5b9029 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -59,25 +59,23 @@ in { ++ config.conf.bootParams; }; - # Enable networking networking = { useDHCP = lib.mkDefault true; networkmanager.enable = true; hostName = hostName; }; - # Set your time zone. - time.timeZone = config.conf.timezone; + time = { + timeZone = config.conf.timezone; + hardwareClockInLocalTime = config.conf.systemLocalTime; + }; - # Select internationalisation properties. i18n.defaultLocale = config.conf.locale; - # Enable the X11 windowing system. services = { lorri.enable = true; xserver.enable = true; fstrim.enable = lib.mkDefault true; - # Enable sound with pipewire. pulseaudio.enable = false; pipewire = { enable = true; diff --git a/modules/conf.nix b/modules/conf.nix index 5189e92..d7a8dc2 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -1,7 +1,6 @@ { lib, config, - pkgs, options, ... }: { @@ -20,6 +19,14 @@ ''; }; + systemLocalTime = lib.mkOption { + default = false; + example = true; + description = '' + System time for dualbooting + ''; + }; + wsl = lib.mkOption { default = false; example = true; From 207b5165a3e259be98e1b5aa23110b2c84627d8c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 7 May 2025 13:01:54 +0200 Subject: [PATCH 244/330] Hyprland hardware cursor fix --- modules/programs/hyprland/hyprland.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index ff13a4c..9ba4c3e 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -27,7 +27,6 @@ in { # main monitor "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" # all others - ",highrr,auto,1" ]; example = ["DP-1,3440x1440@180,2560x0,1,vrr,0"]; type = with lib.types; listOf str; @@ -298,7 +297,7 @@ in { cursor = { enable_hyprcursor = true; - no_hardware_cursors = lib.mkIf config.mods.gpu.nvidia.enable true; + no_hardware_cursors = lib.mkDefault config.mods.gpu.nvidia.enable; # done with nix, this would break the current setup otherwise sync_gsettings_theme = false; }; From 786217106b6ac93f180d4fa3ed5ede6860d494b6 Mon Sep 17 00:00:00 2001 From: Dashie Date: Fri, 9 May 2025 23:27:37 +0200 Subject: [PATCH 245/330] Add lib.mkDefault for non configurable defaults (#15) --- base/common_hardware.nix | 83 ++++++++++++++++++++-------------------- base/env.nix | 21 +++++----- base/xkb_layout.nix | 8 +++- home/common.nix | 25 ++++++------ home/default.nix | 10 +++-- lib/default.nix | 1 + lib/override.nix | 1 + modules/programs/gpu.nix | 3 +- 8 files changed, 82 insertions(+), 70 deletions(-) create mode 100644 lib/override.nix diff --git a/base/common_hardware.nix b/base/common_hardware.nix index e5b9029..8eb4e78 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -1,4 +1,5 @@ { + mkDashDefault, pkgs, config, lib, @@ -10,19 +11,18 @@ in { imports = [ (modulesPath + "/installer/scan/not-detected.nix") - #(modulesPath + "/misc/nixpkgs/read-only.nix") ]; - wsl.enable = config.conf.wsl; + wsl.enable = mkDashDefault config.conf.wsl; # Bootloader. boot = lib.mkIf (!config.conf.wsl) { - consoleLogLevel = 0; + consoleLogLevel = mkDashDefault 0; lanzaboote = lib.mkIf config.conf.secureBoot { - enable = true; - pkiBundle = "/var/lib/sbctl"; - settings.reboot-for-bitlocker = true; + enable = mkDashDefault true; + pkiBundle = mkDashDefault "/var/lib/sbctl"; + settings.reboot-for-bitlocker = mkDashDefault true; }; loader = { @@ -32,15 +32,15 @@ in { then lib.mkForce false else if config.conf.useSystemdBootloader then true - else false; + else mkDashDefault false; configurationLimit = 5; }; - efi.canTouchEfiVariables = true; + efi.canTouchEfiVariables = mkDashDefault true; }; - kernelPackages = lib.mkDefault pkgs.linuxPackages_latest; + kernelPackages = mkDashDefault pkgs.linuxPackages_latest; initrd = { - verbose = false; + verbose = mkDashDefault false; availableKernelModules = [ "nvme" "xhci_pci" @@ -60,46 +60,46 @@ in { }; networking = { - useDHCP = lib.mkDefault true; - networkmanager.enable = true; - hostName = hostName; + useDHCP = mkDashDefault true; + networkmanager.enable = mkDashDefault true; + hostName = mkDashDefault hostName; }; time = { - timeZone = config.conf.timezone; - hardwareClockInLocalTime = config.conf.systemLocalTime; + timeZone = mkDashDefault config.conf.timezone; + hardwareClockInLocalTime = mkDashDefault config.conf.systemLocalTime; }; - i18n.defaultLocale = config.conf.locale; + i18n.defaultLocale = mkDashDefault config.conf.locale; services = { - lorri.enable = true; - xserver.enable = true; - fstrim.enable = lib.mkDefault true; - pulseaudio.enable = false; + lorri.enable = mkDashDefault true; + xserver.enable = mkDashDefault true; + fstrim.enable = mkDashDefault true; + pulseaudio.enable = mkDashDefault false; pipewire = { - enable = true; + enable = mkDashDefault true; alsa = { - enable = true; - support32Bit = true; + enable = mkDashDefault true; + support32Bit = mkDashDefault true; }; - jack.enable = true; - pulse.enable = true; + jack.enable = mkDashDefault true; + pulse.enable = mkDashDefault true; }; }; - nixpkgs.hostPlatform = lib.mkDefault config.conf.system; + nixpkgs.hostPlatform = mkDashDefault config.conf.system; nix = { gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 7d --delete-generations +5"; + automatic = mkDashDefault true; + dates = mkDashDefault "weekly"; + options = mkDashDefault "--delete-older-than 7d --delete-generations +5"; }; settings = { trusted-users = [username]; - auto-optimise-store = true; + auto-optimise-store = mkDashDefault true; - builders-use-substitutes = true; + builders-use-substitutes = mkDashDefault true; substituters = [ "https://hyprland.cachix.org" @@ -129,29 +129,30 @@ in { "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" ]; - experimental-features = "nix-command flakes pipe-operators"; + experimental-features = mkDashDefault "nix-command flakes pipe-operators"; }; }; hardware = { cpu.${config.conf.cpu}.updateMicrocode = - lib.mkDefault config.hardware.enableRedistributableFirmware; + mkDashDefault + config.hardware.enableRedistributableFirmware; }; - security.rtkit.enable = true; + security.rtkit.enable = mkDashDefault true; environment.variables = { - XDG_CACHE_HOME = "$HOME/.cache"; - DIRENV_LOG_FORMAT = ""; - QT_QPA_PLATFORMTHEME = "qt5ct"; + XDG_CACHE_HOME = mkDashDefault "$HOME/.cache"; + DIRENV_LOG_FORMAT = mkDashDefault ""; + QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct"; }; # allows user change later on users = { - mutableUsers = true; + mutableUsers = mkDashDefault true; users.${username} = { - isNormalUser = true; - description = username; + isNormalUser = mkDashDefault true; + description = mkDashDefault username; extraGroups = [ "networkmanager" "wheel" @@ -167,7 +168,7 @@ in { ]; # 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"; + password = mkDashDefault "firstlogin"; }; }; } diff --git a/base/env.nix b/base/env.nix index c85a06e..95248dc 100644 --- a/base/env.nix +++ b/base/env.nix @@ -1,22 +1,23 @@ { + mkDashDefault, pkgs, config, ... }: { environment = { variables = { - GSETTINGS_SCHEMA_DIR = "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; - NEOVIDE_MAXIMIZED = "0"; - GPG_TTY = "$(tty)"; - EDITOR = "neovide --no-fork"; - SUDO_EDITOR = "neovide --no-fork"; - SCRIPTS = "$HOME/.config/scripts"; + GSETTINGS_SCHEMA_DIR = mkDashDefault "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; + NEOVIDE_MAXIMIZED = mkDashDefault "0"; + GPG_TTY = mkDashDefault "$(tty)"; + EDITOR = mkDashDefault "neovide --no-fork"; + SUDO_EDITOR = mkDashDefault "neovide --no-fork"; + SCRIPTS = mkDashDefault "$HOME/.config/scripts"; }; sessionVariables = { - NIXOS_OZONE_WL = "1"; - GOPATH = "$HOME/.go"; - FLAKE = config.conf.nixosConfigPath; - NH_FLAKE = config.conf.nixosConfigPath; + NIXOS_OZONE_WL = mkDashDefault "1"; + GOPATH = mkDashDefault "$HOME/.go"; + FLAKE = mkDashDefault config.conf.nixosConfigPath; + NH_FLAKE = mkDashDefault config.conf.nixosConfigPath; }; }; } diff --git a/base/xkb_layout.nix b/base/xkb_layout.nix index 0324c99..db4fa60 100644 --- a/base/xkb_layout.nix +++ b/base/xkb_layout.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: let +{ + mkDashDefault, + pkgs, + ... +}: let layout = pkgs.writeText "dashie" '' xkb_symbols "dashie" { @@ -10,7 +14,7 @@ }; ''; in { - environment.systemPackages = [pkgs.xorg.xkbcomp]; + environment.systemPackages = mkDashDefault [pkgs.xorg.xkbcomp]; services.xserver.xkb.extraLayouts.dashie = { description = "US layout with 'umlaut'"; languages = ["eng"]; diff --git a/home/common.nix b/home/common.nix index 31d67b9..1a3ccf3 100644 --- a/home/common.nix +++ b/home/common.nix @@ -1,4 +1,5 @@ { + mkDashDefault, config, lib, ... @@ -6,30 +7,30 @@ username = config.conf.username; in { manual = { - html.enable = false; - json.enable = false; - manpages.enable = false; + html.enable = mkDashDefault false; + json.enable = mkDashDefault false; + manpages.enable = mkDashDefault false; }; - fonts.fontconfig.enable = true; + fonts.fontconfig.enable = mkDashDefault true; home = { - username = username; - homeDirectory = "/home/${username}"; + username = mkDashDefault username; + homeDirectory = mkDashDefault "/home/${username}"; sessionPath = ["$HOME/.cargo/bin"]; - enableNixpkgsReleaseCheck = false; + enableNixpkgsReleaseCheck = mkDashDefault false; sessionVariables = { - GOROOT = "$HOME/.go"; - QT_QPA_PLATFORMTHEME = "qt5ct"; + GOROOT = mkDashDefault "$HOME/.go"; + QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct"; }; - keyboard = null; + keyboard = mkDashDefault null; }; programs.nix-index = { - enable = true; - enableFishIntegration = true; + enable = mkDashDefault true; + enableFishIntegration = mkDashDefault true; }; nix = { diff --git a/home/default.nix b/home/default.nix index 03c25f9..c459466 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,4 +1,5 @@ { + mkDashDefault, additionalHomeConfig, additionalHomeMods, additionalInputs, @@ -16,17 +17,18 @@ ... }: { xdg = { - portal.config.common.default = "*"; + portal.config.common.default = mkDashDefault "*"; portal = { - enable = true; + enable = mkDashDefault true; extraPortals = [pkgs.xdg-desktop-portal-gtk]; }; }; home-manager = { - useGlobalPkgs = true; - useUserPackages = true; + useGlobalPkgs = mkDashDefault true; + useUserPackages = mkDashDefault true; extraSpecialArgs = { inherit inputs root additionalInputs alternativePkgs system stable unstable; + mkDashDefault = import ../lib/override.nix {inherit lib;}; }; users.${config.conf.username} = { diff --git a/lib/default.nix b/lib/default.nix index 2ad1719..9e0d75a 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -105,6 +105,7 @@ homeMods = mods.home; additionalHomeMods = additionalMods.home; additionalInputs = additionalInputs; + mkDashDefault = import ./override.nix {inherit lib;}; }; in inputs.unstable.lib.nixosSystem { diff --git a/lib/override.nix b/lib/override.nix new file mode 100644 index 0000000..4d222f8 --- /dev/null +++ b/lib/override.nix @@ -0,0 +1 @@ +{lib, ...}: value: lib.mkOverride 999 value diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index 339b694..9bc2a4a 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -1,4 +1,5 @@ { + mkDashDefault, lib, config, options, @@ -100,7 +101,7 @@ ]; in { enable = true; - enable32Bit = lib.mkDefault true; + enable32Bit = mkDashDefault true; extraPackages = amdPackages ++ (lib.lists.optionals (config.mods.gpu.vapi.rocm.enable && config.mods.gpu.amdgpu.enable) rocmPackages); From f699577158104a6846e245f762acc812c96739dc Mon Sep 17 00:00:00 2001 From: Dashie Date: Fri, 9 May 2025 23:27:54 +0200 Subject: [PATCH 246/330] Add fancontrol (#16) --- flake.nix | 3 +++ lib/default.nix | 1 + modules/programs/default.nix | 1 + modules/programs/fancontrol.nix | 36 +++++++++++++++++++++++++++++++++ 4 files changed, 41 insertions(+) create mode 100644 modules/programs/fancontrol.nix diff --git a/flake.nix b/flake.nix index e7e7c44..bbddc3a 100644 --- a/flake.nix +++ b/flake.nix @@ -32,6 +32,9 @@ zen-browser.url = "github:youwen5/zen-browser-flake"; + # TODO move to upstream repository after merged nix flake pr + fancontrol.url = "git+https://github.com/DashieTM/fancontrol-gui?ref=nix-flake"; + stylix.url = "github:danth/stylix"; base16.url = "github:SenchoPens/base16.nix"; disko.url = "github:nix-community/disko/latest"; diff --git a/lib/default.nix b/lib/default.nix index 9e0d75a..3ee4fc8 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -66,6 +66,7 @@ inputs.reset.homeManagerModules.default inputs.sops-nix.homeManagerModules.sops inputs.dashvim.homeManagerModules.dashvim + inputs.fancontrol.homeManagerModules.default ../modules ]; }, diff --git a/modules/programs/default.nix b/modules/programs/default.nix index f454717..17be977 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -7,6 +7,7 @@ ./coding.nix ./containers.nix ./drives.nix + ./fancontrol.nix ./fastfetch.nix ./fish.nix ./flatpak.nix diff --git a/modules/programs/fancontrol.nix b/modules/programs/fancontrol.nix new file mode 100644 index 0000000..87be9af --- /dev/null +++ b/modules/programs/fancontrol.nix @@ -0,0 +1,36 @@ +{ + lib, + config, + options, + ... +}: { + options.mods.fancontrol = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables fancontrol-gui with needed drivers"; + }; + forceId = lib.mkOption { + default = null; + example = "force_id=0x8628"; + type = with lib.types; nullOr str; + description = "Modprobe options for the it87 driver. Information at: https://wiki.archlinux.org/title/Lm_sensors#Gigabyte_B250/Z370/B450M/B560M/B660M/Z690/B550_motherboards"; + }; + }; + config = lib.mkIf config.mods.fancontrol.enable ( + lib.optionalAttrs (options ? home.packages) { + programs.fancontrol-gui.enable = true; + } + // (lib.optionalAttrs (options ? boot.kernelModules) { + boot = { + kernelParams = ["acpi_enforce_resources=lax"]; + extraModulePackages = with config.boot.kernelPackages; [liquidtux it87]; + kernelModules = ["v4l2loopback" "it87"]; + extraModprobeConfig = lib.mkIf (config.mods.fancontrol.forceId != null) '' + options it87 ${config.mods.fancontrol.forceId} + ''; + }; + }) + ); +} From 1cb30eadca4c01298647096233de85ff9ec8f0b8 Mon Sep 17 00:00:00 2001 From: Dashie Date: Fri, 9 May 2025 23:29:53 +0200 Subject: [PATCH 247/330] Add penpot (#17) * basePackages use mkDashDefault * Add penpot --- base/env.nix | 1 + modules/programs/basePackages.nix | 28 ++++++++++++++------------ modules/programs/coding.nix | 7 +++++++ modules/programs/hyprland/hyprland.nix | 3 ++- 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/base/env.nix b/base/env.nix index 95248dc..0eaf068 100644 --- a/base/env.nix +++ b/base/env.nix @@ -2,6 +2,7 @@ mkDashDefault, pkgs, config, + lib, ... }: { environment = { diff --git a/modules/programs/basePackages.nix b/modules/programs/basePackages.nix index 0f2ff25..3531f77 100644 --- a/modules/programs/basePackages.nix +++ b/modules/programs/basePackages.nix @@ -1,4 +1,5 @@ { + mkDashDefault, config, lib, options, @@ -84,14 +85,15 @@ if config.mods.basePackages.enable then { - upower.enable = true; + preload.enable = mkDashDefault true; + upower.enable = mkDashDefault true; dbus = { - enable = true; + enable = mkDashDefault true; }; avahi = { - enable = true; - nssmdns4 = true; - openFirewall = true; + enable = mkDashDefault true; + nssmdns4 = mkDashDefault true; + openFirewall = mkDashDefault true; }; } // config.mods.basePackages.specialServices @@ -102,23 +104,23 @@ then { nix-ld = { - enable = true; + enable = mkDashDefault true; libraries = with pkgs; [ jdk zlib ]; }; direnv = { - package = pkgs.direnv; - silent = false; - loadInNixShell = true; - direnvrcExtra = ""; + package = mkDashDefault pkgs.direnv; + silent = mkDashDefault false; + loadInNixShell = mkDashDefault true; + direnvrcExtra = mkDashDefault ""; nix-direnv = { - enable = true; - package = pkgs.nix-direnv; + enable = mkDashDefault true; + package = mkDashDefault pkgs.nix-direnv; }; }; - gnupg.agent.enable = true; + gnupg.agent.enable = mkDashDefault true; } // config.mods.basePackages.specialPrograms else config.mods.basePackages.specialPrograms; diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 781f9e1..46007ee 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -47,6 +47,12 @@ description = "Extensions to be installed"; }; }; + penpot = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables penpot"; + }; useDefaultPackages = lib.mkOption { default = true; example = false; @@ -469,6 +475,7 @@ [ (lib.mkIf config.mods.coding.dashvim neovide) (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) + (lib.mkIf config.mods.coding.penpot pkgs.penpot-desktop) ] ++ config.mods.coding.additionalPackages ++ (lib.lists.optionals config.mods.coding.useDefaultPackages basePackages) diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 9ba4c3e..c6ce857 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -1,4 +1,5 @@ { + mkDashDefault, config, lib, options, @@ -297,7 +298,7 @@ in { cursor = { enable_hyprcursor = true; - no_hardware_cursors = lib.mkDefault config.mods.gpu.nvidia.enable; + no_hardware_cursors = mkDashDefault config.mods.gpu.nvidia.enable; # done with nix, this would break the current setup otherwise sync_gsettings_theme = false; }; From cee415973f2f60e71a9b124e6354d6940eb08398 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 10 May 2025 13:29:37 +0200 Subject: [PATCH 248/330] Add gh --- base/common_hardware.nix | 348 ++++---- base/env.nix | 48 +- flake.nix | 260 +++--- home/common.nix | 82 +- home/default.nix | 98 +-- lib/default.nix | 288 +++---- modules/programs/basePackages.nix | 256 +++--- modules/programs/coding.nix | 1066 +++++++++++++----------- modules/programs/default.nix | 98 +-- modules/programs/fancontrol.nix | 72 +- modules/programs/fish.nix | 1 + modules/programs/git.nix | 4 +- modules/programs/hyprland/hyprland.nix | 804 +++++++++--------- 13 files changed, 1747 insertions(+), 1678 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 8eb4e78..45b7779 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -1,174 +1,174 @@ -{ - mkDashDefault, - pkgs, - config, - lib, - hostName, - modulesPath, - ... -}: let - username = config.conf.username; -in { - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; - - wsl.enable = mkDashDefault config.conf.wsl; - - # Bootloader. - boot = lib.mkIf (!config.conf.wsl) { - consoleLogLevel = mkDashDefault 0; - - lanzaboote = lib.mkIf config.conf.secureBoot { - enable = mkDashDefault true; - pkiBundle = mkDashDefault "/var/lib/sbctl"; - settings.reboot-for-bitlocker = mkDashDefault true; - }; - - loader = { - systemd-boot = { - enable = - if config.conf.secureBoot - then lib.mkForce false - else if config.conf.useSystemdBootloader - then true - else mkDashDefault false; - configurationLimit = 5; - }; - efi.canTouchEfiVariables = mkDashDefault true; - }; - - kernelPackages = mkDashDefault pkgs.linuxPackages_latest; - initrd = { - verbose = mkDashDefault false; - availableKernelModules = [ - "nvme" - "xhci_pci" - "ahci" - "usbhid" - "usb_storage" - "sd_mod" - ]; - }; - kernelParams = - [ - ''resume="PARTLABEL=SWAP"'' - ''quiet'' - ''udev.log_level=3'' - ] - ++ config.conf.bootParams; - }; - - networking = { - useDHCP = mkDashDefault true; - networkmanager.enable = mkDashDefault true; - hostName = mkDashDefault hostName; - }; - - time = { - timeZone = mkDashDefault config.conf.timezone; - hardwareClockInLocalTime = mkDashDefault config.conf.systemLocalTime; - }; - - i18n.defaultLocale = mkDashDefault config.conf.locale; - - services = { - lorri.enable = mkDashDefault true; - xserver.enable = mkDashDefault true; - fstrim.enable = mkDashDefault true; - pulseaudio.enable = mkDashDefault false; - pipewire = { - enable = mkDashDefault true; - alsa = { - enable = mkDashDefault true; - support32Bit = mkDashDefault true; - }; - jack.enable = mkDashDefault true; - pulse.enable = mkDashDefault true; - }; - }; - - nixpkgs.hostPlatform = mkDashDefault config.conf.system; - nix = { - gc = { - automatic = mkDashDefault true; - dates = mkDashDefault "weekly"; - options = mkDashDefault "--delete-older-than 7d --delete-generations +5"; - }; - settings = { - trusted-users = [username]; - auto-optimise-store = mkDashDefault true; - - builders-use-substitutes = mkDashDefault true; - - substituters = [ - "https://hyprland.cachix.org" - "https://anyrun.cachix.org" - "https://cache.garnix.io" - "https://oxipaste.cachix.org" - "https://oxinoti.cachix.org" - "https://oxishut.cachix.org" - "https://oxidash.cachix.org" - "https://oxicalc.cachix.org" - "https://hyprdock.cachix.org" - "https://reset.cachix.org" - "https://chaotic-nyx.cachix.org/" - ]; - - trusted-public-keys = [ - "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" - "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" - "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" - "oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc=" - "oxinoti.cachix.org-1:dvSoJl2Pjo5HMaNngdBbSaixK9BSf2N8gzjP2MdGvfc=" - "oxishut.cachix.org-1:axyAGF3XMh1IyMAW4UMbQCdMNovDH0KH6hqLLRJH8jU=" - "oxidash.cachix.org-1:5K2FNHp7AS8VF7LmQkJAUG/dm6UHCz4ngshBVbjFX30=" - "oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ=" - "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" - "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" - "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" - ]; - - experimental-features = mkDashDefault "nix-command flakes pipe-operators"; - }; - }; - - hardware = { - cpu.${config.conf.cpu}.updateMicrocode = - mkDashDefault - config.hardware.enableRedistributableFirmware; - }; - - security.rtkit.enable = mkDashDefault true; - - environment.variables = { - XDG_CACHE_HOME = mkDashDefault "$HOME/.cache"; - DIRENV_LOG_FORMAT = mkDashDefault ""; - QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct"; - }; - - # allows user change later on - users = { - mutableUsers = mkDashDefault true; - users.${username} = { - isNormalUser = mkDashDefault true; - description = mkDashDefault username; - 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 = mkDashDefault "firstlogin"; - }; - }; -} +{ + mkDashDefault, + pkgs, + config, + lib, + hostName, + modulesPath, + ... +}: let + username = config.conf.username; +in { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + wsl.enable = mkDashDefault config.conf.wsl; + + # Bootloader. + boot = lib.mkIf (!config.conf.wsl) { + consoleLogLevel = mkDashDefault 0; + + lanzaboote = lib.mkIf config.conf.secureBoot { + enable = mkDashDefault true; + pkiBundle = mkDashDefault "/var/lib/sbctl"; + settings.reboot-for-bitlocker = mkDashDefault true; + }; + + loader = { + systemd-boot = { + enable = + if config.conf.secureBoot + then lib.mkForce false + else if config.conf.useSystemdBootloader + then true + else mkDashDefault false; + configurationLimit = 5; + }; + efi.canTouchEfiVariables = mkDashDefault true; + }; + + kernelPackages = mkDashDefault pkgs.linuxPackages_latest; + initrd = { + verbose = mkDashDefault false; + availableKernelModules = [ + "nvme" + "xhci_pci" + "ahci" + "usbhid" + "usb_storage" + "sd_mod" + ]; + }; + kernelParams = + [ + ''resume="PARTLABEL=SWAP"'' + ''quiet'' + ''udev.log_level=3'' + ] + ++ config.conf.bootParams; + }; + + networking = { + useDHCP = mkDashDefault true; + networkmanager.enable = mkDashDefault true; + hostName = mkDashDefault hostName; + }; + + time = { + timeZone = mkDashDefault config.conf.timezone; + hardwareClockInLocalTime = mkDashDefault config.conf.systemLocalTime; + }; + + i18n.defaultLocale = mkDashDefault config.conf.locale; + + services = { + lorri.enable = mkDashDefault true; + xserver.enable = mkDashDefault true; + fstrim.enable = mkDashDefault true; + pulseaudio.enable = mkDashDefault false; + pipewire = { + enable = mkDashDefault true; + alsa = { + enable = mkDashDefault true; + support32Bit = mkDashDefault true; + }; + jack.enable = mkDashDefault true; + pulse.enable = mkDashDefault true; + }; + }; + + nixpkgs.hostPlatform = mkDashDefault config.conf.system; + nix = { + gc = { + automatic = mkDashDefault true; + dates = mkDashDefault "weekly"; + options = mkDashDefault "--delete-older-than 7d --delete-generations +5"; + }; + settings = { + trusted-users = [username]; + auto-optimise-store = mkDashDefault true; + + builders-use-substitutes = mkDashDefault true; + + substituters = [ + "https://hyprland.cachix.org" + "https://anyrun.cachix.org" + "https://cache.garnix.io" + "https://oxipaste.cachix.org" + "https://oxinoti.cachix.org" + "https://oxishut.cachix.org" + "https://oxidash.cachix.org" + "https://oxicalc.cachix.org" + "https://hyprdock.cachix.org" + "https://reset.cachix.org" + "https://chaotic-nyx.cachix.org/" + ]; + + trusted-public-keys = [ + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" + "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + "oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc=" + "oxinoti.cachix.org-1:dvSoJl2Pjo5HMaNngdBbSaixK9BSf2N8gzjP2MdGvfc=" + "oxishut.cachix.org-1:axyAGF3XMh1IyMAW4UMbQCdMNovDH0KH6hqLLRJH8jU=" + "oxidash.cachix.org-1:5K2FNHp7AS8VF7LmQkJAUG/dm6UHCz4ngshBVbjFX30=" + "oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ=" + "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" + "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" + "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" + ]; + + experimental-features = mkDashDefault "nix-command flakes pipe-operators"; + }; + }; + + hardware = { + cpu.${config.conf.cpu}.updateMicrocode = + mkDashDefault + config.hardware.enableRedistributableFirmware; + }; + + security.rtkit.enable = mkDashDefault true; + + environment.variables = { + XDG_CACHE_HOME = mkDashDefault "$HOME/.cache"; + DIRENV_LOG_FORMAT = mkDashDefault ""; + QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct"; + }; + + # allows user change later on + users = { + mutableUsers = mkDashDefault true; + users.${username} = { + isNormalUser = mkDashDefault true; + description = mkDashDefault username; + 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 = mkDashDefault "firstlogin"; + }; + }; +} diff --git a/base/env.nix b/base/env.nix index 0eaf068..7937030 100644 --- a/base/env.nix +++ b/base/env.nix @@ -1,24 +1,24 @@ -{ - mkDashDefault, - pkgs, - config, - lib, - ... -}: { - environment = { - variables = { - GSETTINGS_SCHEMA_DIR = mkDashDefault "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; - NEOVIDE_MAXIMIZED = mkDashDefault "0"; - GPG_TTY = mkDashDefault "$(tty)"; - EDITOR = mkDashDefault "neovide --no-fork"; - SUDO_EDITOR = mkDashDefault "neovide --no-fork"; - SCRIPTS = mkDashDefault "$HOME/.config/scripts"; - }; - sessionVariables = { - NIXOS_OZONE_WL = mkDashDefault "1"; - GOPATH = mkDashDefault "$HOME/.go"; - FLAKE = mkDashDefault config.conf.nixosConfigPath; - NH_FLAKE = mkDashDefault config.conf.nixosConfigPath; - }; - }; -} +{ + mkDashDefault, + pkgs, + config, + lib, + ... +}: { + environment = { + variables = { + GSETTINGS_SCHEMA_DIR = mkDashDefault "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; + NEOVIDE_MAXIMIZED = mkDashDefault "0"; + GPG_TTY = mkDashDefault "$(tty)"; + EDITOR = mkDashDefault "neovide --no-fork"; + SUDO_EDITOR = mkDashDefault "neovide --no-fork"; + SCRIPTS = mkDashDefault "$HOME/.config/scripts"; + }; + sessionVariables = { + NIXOS_OZONE_WL = mkDashDefault "1"; + GOPATH = mkDashDefault "$HOME/.go"; + FLAKE = mkDashDefault config.conf.nixosConfigPath; + NH_FLAKE = mkDashDefault config.conf.nixosConfigPath; + }; + }; +} diff --git a/flake.nix b/flake.nix index bbddc3a..6290e63 100644 --- a/flake.nix +++ b/flake.nix @@ -1,130 +1,130 @@ -{ - description = "DashNix"; - - inputs = { - unstable.url = "github:NixOs/nixpkgs/nixos-unstable"; - stable.url = "github:NixOs/nixpkgs/nixos-24.11"; - nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; - nur.url = "github:nix-community/NUR"; - lanzaboote = { - url = "github:nix-community/lanzaboote/v0.4.2"; - inputs.nixpkgs.follows = "unstable"; - }; - - home-manager = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "unstable"; - }; - - sops-nix.url = "github:Mic92/sops-nix"; - - Hyprspace = { - url = "github:KZDKM/Hyprspace"; - inputs.hyprland.follows = "hyprland"; - }; - - hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; - - ironbar = { - url = "github:JakeStanger/ironbar"; - inputs.nixpkgs.follows = "unstable"; - }; - - zen-browser.url = "github:youwen5/zen-browser-flake"; - - # TODO move to upstream repository after merged nix flake pr - fancontrol.url = "git+https://github.com/DashieTM/fancontrol-gui?ref=nix-flake"; - - stylix.url = "github:danth/stylix"; - base16.url = "github:SenchoPens/base16.nix"; - disko.url = "github:nix-community/disko/latest"; - - anyrun.url = "github:Kirottu/anyrun"; - oxicalc.url = "github:Xetibo/OxiCalc"; - oxishut.url = "github:Xetibo/OxiShut"; - oxinoti.url = "github:Xetibo/OxiNoti"; - oxidash.url = "github:Xetibo/OxiDash"; - oxipaste.url = "github:Xetibo/OxiPaste"; - oxirun.url = "github:Xetibo/OxiRun"; - hyprdock.url = "github:Xetibo/hyprdock"; - reset.url = "github:Xetibo/ReSet"; - reset-plugins.url = "github:Xetibo/ReSet-Plugins"; - - # absolute insanity - chaoticNyx.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; - - dashvim = { - url = "github:Xetibo/DashVim"; - }; - }; - - outputs = {self, ...} @ inputs: let - currentSystem = "x86_64-linux"; - permittedPackages = [ - "olm-3.2.16" - # well done dotnet... - # this is just for omnisharp - "dotnet-core-combined" - "dotnet-wrapped-combined" - "dotnet-combined" - "dotnet-sdk-6.0.428" - "dotnet-sdk-wrapped-6.0.428" - "dotnet-sdk-6.0.136" - "dotnet-sdk-wrapped-6.0.136" - "dotnet-sdk-7.0.120" - "dotnet-sdk-wrapped-7.0.120" - "dotnet-sdk-7.0.410" - "dotnet-sdk-wrapped-7.0.410" - "jitsi-meet-1.0.8043" - "nextcloud-27.1.11" - ]; - stable = import inputs.stable { - system = currentSystem; - config = { - allowUnfree = true; - permittedInsecurePackages = permittedPackages; - }; - overlays = [ - inputs.nur.overlays.default - inputs.chaoticNyx.overlays.default - ]; - }; - unstable = import inputs.unstable { - system = currentSystem; - config = { - allowUnsupportedSystem = true; - permittedInsecurePackages = permittedPackages; - # Often happens with neovim, this should not block everything. - allowBroken = true; - allowUnfree = true; - }; - overlays = [ - inputs.nur.overlays.default - inputs.chaoticNyx.overlays.default - ]; - }; - in rec { - dashNixLib = import ./lib { - inherit - self - inputs - unstable - stable - ; - system = currentSystem; - lib = inputs.unstable.lib; - }; - docs = import ./docs { - inherit inputs; - pkgs = unstable; - system = currentSystem; - lib = inputs.unstable.lib; - build_systems = dashNixLib.build_systems; - }; - dashNixInputs = inputs; - stablePkgs = stable; - unstablePkgs = unstable; - modules = ./modules; - iso = dashNixLib.buildIso.config.system.build.isoImage; - }; -} +{ + description = "DashNix"; + + inputs = { + unstable.url = "github:NixOs/nixpkgs/nixos-unstable"; + stable.url = "github:NixOs/nixpkgs/nixos-24.11"; + nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; + nur.url = "github:nix-community/NUR"; + lanzaboote = { + url = "github:nix-community/lanzaboote/v0.4.2"; + inputs.nixpkgs.follows = "unstable"; + }; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "unstable"; + }; + + sops-nix.url = "github:Mic92/sops-nix"; + + Hyprspace = { + url = "github:KZDKM/Hyprspace"; + inputs.hyprland.follows = "hyprland"; + }; + + hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; + + ironbar = { + url = "github:JakeStanger/ironbar"; + inputs.nixpkgs.follows = "unstable"; + }; + + zen-browser.url = "github:youwen5/zen-browser-flake"; + + # TODO move to upstream repository after merged nix flake pr + fancontrol.url = "git+https://github.com/DashieTM/fancontrol-gui?ref=nix-flake"; + + stylix.url = "github:danth/stylix"; + base16.url = "github:SenchoPens/base16.nix"; + disko.url = "github:nix-community/disko/latest"; + + anyrun.url = "github:Kirottu/anyrun"; + oxicalc.url = "github:Xetibo/OxiCalc"; + oxishut.url = "github:Xetibo/OxiShut"; + oxinoti.url = "github:Xetibo/OxiNoti"; + oxidash.url = "github:Xetibo/OxiDash"; + oxipaste.url = "github:Xetibo/OxiPaste"; + oxirun.url = "github:Xetibo/OxiRun"; + hyprdock.url = "github:Xetibo/hyprdock"; + reset.url = "github:Xetibo/ReSet"; + reset-plugins.url = "github:Xetibo/ReSet-Plugins"; + + # absolute insanity + chaoticNyx.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; + + dashvim = { + url = "github:Xetibo/DashVim"; + }; + }; + + outputs = {self, ...} @ inputs: let + currentSystem = "x86_64-linux"; + permittedPackages = [ + "olm-3.2.16" + # well done dotnet... + # this is just for omnisharp + "dotnet-core-combined" + "dotnet-wrapped-combined" + "dotnet-combined" + "dotnet-sdk-6.0.428" + "dotnet-sdk-wrapped-6.0.428" + "dotnet-sdk-6.0.136" + "dotnet-sdk-wrapped-6.0.136" + "dotnet-sdk-7.0.120" + "dotnet-sdk-wrapped-7.0.120" + "dotnet-sdk-7.0.410" + "dotnet-sdk-wrapped-7.0.410" + "jitsi-meet-1.0.8043" + "nextcloud-27.1.11" + ]; + stable = import inputs.stable { + system = currentSystem; + config = { + allowUnfree = true; + permittedInsecurePackages = permittedPackages; + }; + overlays = [ + inputs.nur.overlays.default + inputs.chaoticNyx.overlays.default + ]; + }; + unstable = import inputs.unstable { + system = currentSystem; + config = { + allowUnsupportedSystem = true; + permittedInsecurePackages = permittedPackages; + # Often happens with neovim, this should not block everything. + allowBroken = true; + allowUnfree = true; + }; + overlays = [ + inputs.nur.overlays.default + inputs.chaoticNyx.overlays.default + ]; + }; + in rec { + dashNixLib = import ./lib { + inherit + self + inputs + unstable + stable + ; + system = currentSystem; + lib = inputs.unstable.lib; + }; + docs = import ./docs { + inherit inputs; + pkgs = unstable; + system = currentSystem; + lib = inputs.unstable.lib; + build_systems = dashNixLib.build_systems; + }; + dashNixInputs = inputs; + stablePkgs = stable; + unstablePkgs = unstable; + modules = ./modules; + iso = dashNixLib.buildIso.config.system.build.isoImage; + }; +} diff --git a/home/common.nix b/home/common.nix index 1a3ccf3..11be1e2 100644 --- a/home/common.nix +++ b/home/common.nix @@ -1,41 +1,41 @@ -{ - mkDashDefault, - config, - lib, - ... -}: let - username = config.conf.username; -in { - manual = { - html.enable = mkDashDefault false; - json.enable = mkDashDefault false; - manpages.enable = mkDashDefault false; - }; - - fonts.fontconfig.enable = mkDashDefault true; - - home = { - username = mkDashDefault username; - homeDirectory = mkDashDefault "/home/${username}"; - sessionPath = ["$HOME/.cargo/bin"]; - - enableNixpkgsReleaseCheck = mkDashDefault false; - sessionVariables = { - GOROOT = mkDashDefault "$HOME/.go"; - QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct"; - }; - - keyboard = mkDashDefault null; - }; - - programs.nix-index = { - enable = mkDashDefault true; - enableFishIntegration = mkDashDefault true; - }; - - nix = { - extraOptions = lib.mkIf (config ? sops.secrets && config.sops.secrets ? access.path) '' - !include ${config.sops.secrets.access.path} - ''; - }; -} +{ + mkDashDefault, + config, + lib, + ... +}: let + username = config.conf.username; +in { + manual = { + html.enable = mkDashDefault false; + json.enable = mkDashDefault false; + manpages.enable = mkDashDefault false; + }; + + fonts.fontconfig.enable = mkDashDefault true; + + home = { + username = mkDashDefault username; + homeDirectory = mkDashDefault "/home/${username}"; + sessionPath = ["$HOME/.cargo/bin"]; + + enableNixpkgsReleaseCheck = mkDashDefault false; + sessionVariables = { + GOROOT = mkDashDefault "$HOME/.go"; + QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct"; + }; + + keyboard = mkDashDefault null; + }; + + programs.nix-index = { + enable = mkDashDefault true; + enableFishIntegration = mkDashDefault true; + }; + + nix = { + extraOptions = lib.mkIf (config ? sops.secrets && config.sops.secrets ? access.path) '' + !include ${config.sops.secrets.access.path} + ''; + }; +} diff --git a/home/default.nix b/home/default.nix index c459466..af3d656 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,49 +1,49 @@ -{ - mkDashDefault, - additionalHomeConfig, - additionalHomeMods, - additionalInputs, - config, - homeMods, - inputs, - lib, - mod, - pkgs, - root, - alternativePkgs, - system, - stable, - unstable, - ... -}: { - xdg = { - portal.config.common.default = mkDashDefault "*"; - portal = { - enable = mkDashDefault true; - extraPortals = [pkgs.xdg-desktop-portal-gtk]; - }; - }; - home-manager = { - useGlobalPkgs = mkDashDefault true; - useUserPackages = mkDashDefault true; - extraSpecialArgs = { - inherit inputs root additionalInputs alternativePkgs system stable unstable; - mkDashDefault = import ../lib/override.nix {inherit lib;}; - }; - - users.${config.conf.username} = { - disabledModules = ["programs/anyrun.nix"]; - imports = - [ - ./common.nix - ./themes - ./sync.nix - ../lib/foxwrappers.nix - ] - ++ homeMods - ++ additionalHomeMods - ++ lib.optional (builtins.pathExists mod) mod - ++ lib.optional (builtins.pathExists additionalHomeConfig) additionalHomeConfig; - }; - }; -} +{ + mkDashDefault, + additionalHomeConfig, + additionalHomeMods, + additionalInputs, + config, + homeMods, + inputs, + lib, + mod, + pkgs, + root, + alternativePkgs, + system, + stable, + unstable, + ... +}: { + xdg = { + portal.config.common.default = mkDashDefault "*"; + portal = { + enable = mkDashDefault true; + extraPortals = [pkgs.xdg-desktop-portal-gtk]; + }; + }; + home-manager = { + useGlobalPkgs = mkDashDefault true; + useUserPackages = mkDashDefault true; + extraSpecialArgs = { + inherit inputs root additionalInputs alternativePkgs system stable unstable; + mkDashDefault = import ../lib/override.nix {inherit lib;}; + }; + + users.${config.conf.username} = { + disabledModules = ["programs/anyrun.nix"]; + imports = + [ + ./common.nix + ./themes + ./sync.nix + ../lib/foxwrappers.nix + ] + ++ homeMods + ++ additionalHomeMods + ++ lib.optional (builtins.pathExists mod) mod + ++ lib.optional (builtins.pathExists additionalHomeConfig) additionalHomeConfig; + }; + }; +} diff --git a/lib/default.nix b/lib/default.nix index 3ee4fc8..2cdc15a 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,144 +1,144 @@ -{ - inputs, - lib, - unstable, - self, - stable, - system, - ... -}: { - /* - * - # build_systems - - Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. - - A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. - - The second parameter is the root of your configuration, which should be ./. in most cases. - - `root` - - : the root path of your configuration - - # Example usage - :::{.example} - ```nix - nixosConfigurations = build_systems { root = ./.; }; - ``` - ::: - */ - # let - # paths = builtins.readDir ; - # names = lib.lists.remove "default" ( - # map (name: lib.strings.removeSuffix ".nix" name) (lib.attrsets.mapAttrsToList (name: _: name) paths) - # ); - - # in - build_systems = { - root, - additionalMods ? { - nixos = []; - home = []; - }, - mods ? { - nixos = [ - inputs.lanzaboote.nixosModules.lanzaboote - inputs.nixos-wsl.nixosModules.default - inputs.home-manager.nixosModules.home-manager - inputs.stylix.nixosModules.stylix - inputs.disko.nixosModules.disko - ../base - ../home - ../modules - ]; - home = [ - inputs.anyrun.homeManagerModules.default - inputs.ironbar.homeManagerModules.default - inputs.oxicalc.homeManagerModules.default - inputs.oxishut.homeManagerModules.default - inputs.oxinoti.homeManagerModules.default - inputs.oxidash.homeManagerModules.default - inputs.oxipaste.homeManagerModules.default - inputs.oxirun.homeManagerModules.default - inputs.hyprdock.homeManagerModules.default - inputs.hyprland.homeManagerModules.default - inputs.reset.homeManagerModules.default - inputs.sops-nix.homeManagerModules.sops - inputs.dashvim.homeManagerModules.dashvim - inputs.fancontrol.homeManagerModules.default - ../modules - ]; - }, - additionalInputs ? {}, - overridePkgs ? false, - ... - }: - builtins.listToAttrs ( - map - (name: { - name = name; - value = let - mod = root + /hosts/${name}/configuration.nix; - additionalNixosConfig = root + /hosts/${name}/hardware.nix; - additionalHomeConfig = root + /hosts/${name}/home.nix; - args = { - inherit - self - inputs - mod - additionalHomeConfig - system - root - stable - unstable - ; - pkgs = lib.mkForce ( - if overridePkgs - then stable - else unstable - ); - alternativePkgs = - if overridePkgs - then unstable - else stable; - hostName = name; - homeMods = mods.home; - additionalHomeMods = additionalMods.home; - additionalInputs = additionalInputs; - mkDashDefault = import ./override.nix {inherit lib;}; - }; - in - inputs.unstable.lib.nixosSystem { - modules = - [ - {_module.args = args;} - mod - ] - ++ mods.nixos - ++ additionalMods.nixos - ++ inputs.unstable.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig - ++ inputs.unstable.lib.optional (builtins.pathExists mod) mod; - }; - }) - ( - lib.lists.remove "" ( - lib.attrsets.mapAttrsToList (name: fType: - if fType == "directory" - then name - else "") ( - builtins.readDir (root + /hosts) - ) - ) - ) - ); - - buildIso = inputs.unstable.lib.nixosSystem { - specialArgs = { - inherit self inputs unstable; - }; - modules = [ - ../iso/configuration.nix - ]; - }; -} +{ + inputs, + lib, + unstable, + self, + stable, + system, + ... +}: { + /* + * + # build_systems + + Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. + + A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. + + The second parameter is the root of your configuration, which should be ./. in most cases. + + `root` + + : the root path of your configuration + + # Example usage + :::{.example} + ```nix + nixosConfigurations = build_systems { root = ./.; }; + ``` + ::: + */ + # let + # paths = builtins.readDir ; + # names = lib.lists.remove "default" ( + # map (name: lib.strings.removeSuffix ".nix" name) (lib.attrsets.mapAttrsToList (name: _: name) paths) + # ); + + # in + build_systems = { + root, + additionalMods ? { + nixos = []; + home = []; + }, + mods ? { + nixos = [ + inputs.lanzaboote.nixosModules.lanzaboote + inputs.nixos-wsl.nixosModules.default + inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + inputs.disko.nixosModules.disko + ../base + ../home + ../modules + ]; + home = [ + inputs.anyrun.homeManagerModules.default + inputs.ironbar.homeManagerModules.default + inputs.oxicalc.homeManagerModules.default + inputs.oxishut.homeManagerModules.default + inputs.oxinoti.homeManagerModules.default + inputs.oxidash.homeManagerModules.default + inputs.oxipaste.homeManagerModules.default + inputs.oxirun.homeManagerModules.default + inputs.hyprdock.homeManagerModules.default + inputs.hyprland.homeManagerModules.default + inputs.reset.homeManagerModules.default + inputs.sops-nix.homeManagerModules.sops + inputs.dashvim.homeManagerModules.dashvim + inputs.fancontrol.homeManagerModules.default + ../modules + ]; + }, + additionalInputs ? {}, + overridePkgs ? false, + ... + }: + builtins.listToAttrs ( + map + (name: { + name = name; + value = let + mod = root + /hosts/${name}/configuration.nix; + additionalNixosConfig = root + /hosts/${name}/hardware.nix; + additionalHomeConfig = root + /hosts/${name}/home.nix; + args = { + inherit + self + inputs + mod + additionalHomeConfig + system + root + stable + unstable + ; + pkgs = lib.mkForce ( + if overridePkgs + then stable + else unstable + ); + alternativePkgs = + if overridePkgs + then unstable + else stable; + hostName = name; + homeMods = mods.home; + additionalHomeMods = additionalMods.home; + additionalInputs = additionalInputs; + mkDashDefault = import ./override.nix {inherit lib;}; + }; + in + inputs.unstable.lib.nixosSystem { + modules = + [ + {_module.args = args;} + mod + ] + ++ mods.nixos + ++ additionalMods.nixos + ++ inputs.unstable.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig + ++ inputs.unstable.lib.optional (builtins.pathExists mod) mod; + }; + }) + ( + lib.lists.remove "" ( + lib.attrsets.mapAttrsToList (name: fType: + if fType == "directory" + then name + else "") ( + builtins.readDir (root + /hosts) + ) + ) + ) + ); + + buildIso = inputs.unstable.lib.nixosSystem { + specialArgs = { + inherit self inputs unstable; + }; + modules = [ + ../iso/configuration.nix + ]; + }; +} diff --git a/modules/programs/basePackages.nix b/modules/programs/basePackages.nix index 3531f77..eb21428 100644 --- a/modules/programs/basePackages.nix +++ b/modules/programs/basePackages.nix @@ -1,128 +1,128 @@ -{ - mkDashDefault, - config, - lib, - options, - pkgs, - ... -}: { - options.mods = { - basePackages = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables default system packages. - ''; - }; - additionalPackages = lib.mkOption { - default = []; - example = [pkgs.openssl]; - type = with lib.types; listOf package; - description = '' - Additional packages to install. - Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. - ''; - }; - specialPrograms = lib.mkOption { - default = {}; - example = {}; - type = with lib.types; attrsOf anything; - description = '' - special program configuration to be added which require programs.something notation. - ''; - }; - specialServices = lib.mkOption { - default = {}; - example = {}; - type = with lib.types; attrsOf anything; - description = '' - special services configuration to be added which require an services.something notation. - ''; - }; - }; - }; - - config = lib.optionalAttrs (options ? environment.systemPackages) { - environment.systemPackages = - if config.mods.basePackages.enable - then - with pkgs; - [ - adwaita-icon-theme - dbus - dconf - direnv - glib - gnome.nixos-gsettings-overrides - gsettings-desktop-schemas - gtk-layer-shell - gtk3 - gtk4 - gtk4-layer-shell - hicolor-icon-theme - icon-library - kdePackages.breeze-icons - kdePackages.breeze - libsForQt5.breeze-qt5 - kdePackages.qtstyleplugin-kvantum - libsForQt5.qtstyleplugin-kvantum - libadwaita - libxkbcommon - alejandra - openssl - seahorse - upower - xorg.xkbutils - sbctl - ] - ++ config.mods.basePackages.additionalPackages - else config.mods.basePackages.additionalPackages; - - gtk.iconCache.enable = false; - services = - if config.mods.basePackages.enable - then - { - preload.enable = mkDashDefault true; - upower.enable = mkDashDefault true; - dbus = { - enable = mkDashDefault true; - }; - avahi = { - enable = mkDashDefault true; - nssmdns4 = mkDashDefault true; - openFirewall = mkDashDefault true; - }; - } - // config.mods.basePackages.specialServices - else config.mods.basePackages.specialServices; - - programs = - if config.mods.basePackages.enable - then - { - nix-ld = { - enable = mkDashDefault true; - libraries = with pkgs; [ - jdk - zlib - ]; - }; - direnv = { - package = mkDashDefault pkgs.direnv; - silent = mkDashDefault false; - loadInNixShell = mkDashDefault true; - direnvrcExtra = mkDashDefault ""; - nix-direnv = { - enable = mkDashDefault true; - package = mkDashDefault pkgs.nix-direnv; - }; - }; - gnupg.agent.enable = mkDashDefault true; - } - // config.mods.basePackages.specialPrograms - else config.mods.basePackages.specialPrograms; - }; -} +{ + mkDashDefault, + config, + lib, + options, + pkgs, + ... +}: { + options.mods = { + basePackages = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables default system packages. + ''; + }; + additionalPackages = lib.mkOption { + default = []; + example = [pkgs.openssl]; + type = with lib.types; listOf package; + description = '' + Additional packages to install. + Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. + ''; + }; + specialPrograms = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = '' + special program configuration to be added which require programs.something notation. + ''; + }; + specialServices = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = '' + special services configuration to be added which require an services.something notation. + ''; + }; + }; + }; + + config = lib.optionalAttrs (options ? environment.systemPackages) { + environment.systemPackages = + if config.mods.basePackages.enable + then + with pkgs; + [ + adwaita-icon-theme + dbus + dconf + direnv + glib + gnome.nixos-gsettings-overrides + gsettings-desktop-schemas + gtk-layer-shell + gtk3 + gtk4 + gtk4-layer-shell + hicolor-icon-theme + icon-library + kdePackages.breeze-icons + kdePackages.breeze + libsForQt5.breeze-qt5 + kdePackages.qtstyleplugin-kvantum + libsForQt5.qtstyleplugin-kvantum + libadwaita + libxkbcommon + alejandra + openssl + seahorse + upower + xorg.xkbutils + sbctl + ] + ++ config.mods.basePackages.additionalPackages + else config.mods.basePackages.additionalPackages; + + gtk.iconCache.enable = false; + services = + if config.mods.basePackages.enable + then + { + preload.enable = mkDashDefault true; + upower.enable = mkDashDefault true; + dbus = { + enable = mkDashDefault true; + }; + avahi = { + enable = mkDashDefault true; + nssmdns4 = mkDashDefault true; + openFirewall = mkDashDefault true; + }; + } + // config.mods.basePackages.specialServices + else config.mods.basePackages.specialServices; + + programs = + if config.mods.basePackages.enable + then + { + nix-ld = { + enable = mkDashDefault true; + libraries = with pkgs; [ + jdk + zlib + ]; + }; + direnv = { + package = mkDashDefault pkgs.direnv; + silent = mkDashDefault false; + loadInNixShell = mkDashDefault true; + direnvrcExtra = mkDashDefault ""; + nix-direnv = { + enable = mkDashDefault true; + package = mkDashDefault pkgs.nix-direnv; + }; + }; + gnupg.agent.enable = mkDashDefault true; + } + // config.mods.basePackages.specialPrograms + else config.mods.basePackages.specialPrograms; + }; +} diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 46007ee..781d9dd 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -1,499 +1,567 @@ -{ - lib, - config, - pkgs, - options, - ... -}: { - options.mods = { - coding = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables coding packages. - ''; - }; - dashvim = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables dashvim package. - ''; - }; - jetbrains = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = '' - Enables jetbrains toolbox. - ''; - }; - vscodium = { - enable = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = '' - Enables vscodium. - ''; - }; - extensions = lib.mkOption { - default = []; - example = []; - type = with lib.types; listOf package; - description = "Extensions to be installed"; - }; - }; - penpot = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = "Enables penpot"; - }; - useDefaultPackages = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = "Use default base packages (only additionalPackages are installed if false)"; - }; - additionalPackages = lib.mkOption { - default = []; - example = []; - type = with lib.types; listOf package; - description = "Additional packages to be installed"; - }; - languages = { - haskell = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables haskell. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - haskellPackages.cabal-install - ghc - haskellPackages.haskell-language-server - ]; - example = []; - type = with lib.types; listOf package; - description = '' - haskell packages - ''; - }; - }; - typst = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables typst. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - typst - tinymist - ltex-ls - ]; - example = []; - type = with lib.types; listOf package; - description = '' - typst packages - ''; - }; - }; - go = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables go. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - go - gopls - ]; - example = []; - type = with lib.types; listOf package; - description = '' - Go packages - ''; - }; - }; - rust = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables rust. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [rustup]; - example = []; - type = with lib.types; listOf package; - description = '' - Rust packages - ''; - }; - }; - ts-js = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables TS/JS. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - nodejs_20 - deno - typescript - nodePackages.typescript-language-server - nodePackages.prettier - ]; - example = []; - type = with lib.types; listOf package; - description = '' - TS/JS packages - ''; - }; - }; - zig = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables zig. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - zig - zls - ]; - example = []; - type = with lib.types; listOf package; - description = '' - zig packages - ''; - }; - }; - java = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables java. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - gradle - maven - jdt-language-server - temurin-jre-bin - ]; - example = []; - type = with lib.types; listOf package; - description = '' - Java packages - ''; - }; - }; - dotnet = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables C#/F#. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - #.! - dotnet-sdk - omnisharp-roslyn - csharpier - netcoredbg - #fsharp - fsharp - fsautocomplete - ]; - example = []; - type = with lib.types; listOf package; - description = '' - C#/F# packages - ''; - }; - }; - C-CPP = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables C/C++. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - # broke - #bear - gdb - gcc - clang-tools - ]; - example = []; - type = with lib.types; listOf package; - description = '' - C/C++ packages - ''; - }; - }; - python = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables python. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - python3 - python312Packages.python-lsp-server - python312Packages.python-lsp-ruff - python312Packages.python-lsp-black - ]; - example = []; - type = with lib.types; listOf package; - description = '' - python packages - ''; - }; - }; - configFiles = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables Json/toml/yaml etc. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - #yaml - yamlfmt - yamllint - yaml-language-server - - #json - jq - ]; - example = []; - type = with lib.types; listOf package; - description = '' - packages for said filetypes - ''; - }; - }; - bash = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables bash. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - bash-language-server - shfmt - ]; - example = []; - type = with lib.types; listOf package; - description = '' - bash packages - ''; - }; - }; - html-css = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables html/css. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - tailwindcss - tailwindcss-language-server - # html-tidy - ]; - example = []; - type = with lib.types; listOf package; - description = '' - html/css packages - ''; - }; - }; - sql = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables sql. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - nodePackages.sql-formatter - sqls - ]; - example = []; - type = with lib.types; listOf package; - description = '' - sql packages - ''; - }; - }; - gleam = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables gleam. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [gleam]; - example = []; - type = with lib.types; listOf package; - description = '' - gleam packages - ''; - }; - }; - asm = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables assembly. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [asm-lsp]; - example = []; - type = with lib.types; listOf package; - description = '' - assembly packages - ''; - }; - }; - }; - }; - }; - - config = let - basePackages = with pkgs; [ - gitui - meson - ninja - tree-sitter - unzip - pkg-config - sqlite - plantuml - d-spy - tmux - tmate - ]; - font_family = "${config.mods.stylix.fonts.monospace.name}"; - in - 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; - }; - programs.vscode = lib.mkIf config.mods.coding.vscodium.enable { - enable = true; - package = pkgs.vscodium; - profiles.default.extensions = config.mods.coding.vscodium.extensions; - }; - xdg.configFile."neovide/config.toml" = lib.mkIf config.mods.coding.dashvim { - source = (pkgs.formats.toml {}).generate "neovide" { - font = { - size = 12; - normal = { - family = font_family; - style = ""; - }; - bold = { - family = font_family; - style = "ExtraBold"; - }; - italic = { - family = font_family; - style = "Italic"; - }; - bold_italic = { - family = font_family; - style = "Bold Italic"; - }; - }; - }; - }; - home.packages = with pkgs; - [ - (lib.mkIf config.mods.coding.dashvim neovide) - (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) - (lib.mkIf config.mods.coding.penpot pkgs.penpot-desktop) - ] - ++ config.mods.coding.additionalPackages - ++ (lib.lists.optionals config.mods.coding.useDefaultPackages basePackages) - ++ (lib.lists.optionals config.mods.coding.languages.haskell.enable config.mods.coding.languages.haskell.packages) - ++ (lib.lists.optionals config.mods.coding.languages.rust.enable config.mods.coding.languages.rust.packages) - ++ (lib.lists.optionals config.mods.coding.languages.go.enable config.mods.coding.languages.go.packages) - ++ (lib.lists.optionals config.mods.coding.languages.java.enable config.mods.coding.languages.java.packages) - ++ (lib.lists.optionals config.mods.coding.languages.dotnet.enable config.mods.coding.languages.dotnet.packages) - ++ (lib.lists.optionals config.mods.coding.languages.bash.enable config.mods.coding.languages.bash.packages) - ++ (lib.lists.optionals config.mods.coding.languages.C-CPP.enable config.mods.coding.languages.C-CPP.packages) - ++ (lib.lists.optionals config.mods.coding.languages.asm.enable config.mods.coding.languages.asm.packages) - ++ (lib.lists.optionals config.mods.coding.languages.sql.enable config.mods.coding.languages.sql.packages) - ++ (lib.lists.optionals config.mods.coding.languages.html-css.enable config.mods.coding.languages.html-css.packages) - ++ (lib.lists.optionals config.mods.coding.languages.configFiles.enable config.mods.coding.languages.configFiles.packages) - ++ (lib.lists.optionals config.mods.coding.languages.ts-js.enable config.mods.coding.languages.ts-js.packages) - ++ (lib.lists.optionals config.mods.coding.languages.typst.enable config.mods.coding.languages.typst.packages) - ++ (lib.lists.optionals config.mods.coding.languages.zig.enable config.mods.coding.languages.zig.packages) - ++ (lib.lists.optionals config.mods.coding.languages.gleam.enable config.mods.coding.languages.gleam.packages); - } - ); -} +{ + lib, + config, + pkgs, + options, + ... +}: let + font_family = "${config.mods.stylix.fonts.monospace.name}"; +in { + options.mods = { + coding = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables coding packages. + ''; + }; + dashvim = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables dashvim package. + ''; + }; + jetbrains = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Enables jetbrains toolbox. + ''; + }; + vscodium = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Enables vscodium. + ''; + }; + extensions = lib.mkOption { + default = []; + example = []; + type = with lib.types; listOf package; + description = "Extensions to be installed"; + }; + }; + penpot = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables penpot"; + }; + neovide = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables neovide"; + }; + config = lib.mkOption { + default = { + font = { + size = 12; + normal = { + family = font_family; + style = ""; + }; + bold = { + family = font_family; + style = "ExtraBold"; + }; + italic = { + family = font_family; + style = "Italic"; + }; + bold_italic = { + family = font_family; + style = "Bold Italic"; + }; + }; + }; + example = {}; + type = with lib.types; attrsOf anything; + description = "Config for neovide"; + }; + }; + gh = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables and configures gh"; + }; + config = lib.mkOption { + default = { + version = 1; + git_protocol = "ssh"; + editor = ""; + prompt = "enabled"; + prefer_editor_prompt = "disabled"; + pager = ""; + aliases = { + co = "pr checkout"; + }; + http_unix_socket = ""; + browser = ""; + }; + example = {}; + type = with lib.types; attrsOf anything; + description = "config for gh. Keep in mind, empty values refer to using environment variables"; + }; + hosts = lib.mkOption { + default = { + "github.com" = { + git_protocol = "ssh"; + users = { + ${config.mods.git.username} = ""; + }; + user = "${config.mods.git.username}"; + }; + }; + example = {}; + type = with lib.types; attrsOf anything; + description = "hosts for gh"; + }; + }; + useDefaultPackages = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Use default base packages (only additionalPackages are installed if false)"; + }; + additionalPackages = lib.mkOption { + default = []; + example = []; + type = with lib.types; listOf package; + description = "Additional packages to be installed"; + }; + languages = { + haskell = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables haskell. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + haskellPackages.cabal-install + ghc + haskellPackages.haskell-language-server + ]; + example = []; + type = with lib.types; listOf package; + description = '' + haskell packages + ''; + }; + }; + typst = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables typst. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + typst + tinymist + ltex-ls + ]; + example = []; + type = with lib.types; listOf package; + description = '' + typst packages + ''; + }; + }; + go = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables go. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + go + gopls + ]; + example = []; + type = with lib.types; listOf package; + description = '' + Go packages + ''; + }; + }; + rust = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables rust. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [rustup]; + example = []; + type = with lib.types; listOf package; + description = '' + Rust packages + ''; + }; + }; + ts-js = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables TS/JS. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + nodejs_20 + deno + typescript + nodePackages.typescript-language-server + nodePackages.prettier + ]; + example = []; + type = with lib.types; listOf package; + description = '' + TS/JS packages + ''; + }; + }; + zig = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables zig. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + zig + zls + ]; + example = []; + type = with lib.types; listOf package; + description = '' + zig packages + ''; + }; + }; + java = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables java. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + gradle + maven + jdt-language-server + temurin-jre-bin + ]; + example = []; + type = with lib.types; listOf package; + description = '' + Java packages + ''; + }; + }; + dotnet = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables C#/F#. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + #.! + dotnet-sdk + omnisharp-roslyn + csharpier + netcoredbg + fsharp + fsautocomplete + ]; + example = []; + type = with lib.types; listOf package; + description = '' + C#/F# packages + ''; + }; + }; + C-CPP = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables C/C++. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + bear + gdb + gcc + clang-tools + ]; + example = []; + type = with lib.types; listOf package; + description = '' + C/C++ packages + ''; + }; + }; + python = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables python. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + python3 + python312Packages.python-lsp-server + python312Packages.python-lsp-ruff + python312Packages.python-lsp-black + ]; + example = []; + type = with lib.types; listOf package; + description = '' + python packages + ''; + }; + }; + configFiles = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables Json/toml/yaml etc. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + #yaml + yamlfmt + yamllint + yaml-language-server + + #json + jq + ]; + example = []; + type = with lib.types; listOf package; + description = '' + packages for said filetypes + ''; + }; + }; + bash = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables bash. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + bash-language-server + shfmt + ]; + example = []; + type = with lib.types; listOf package; + description = '' + bash packages + ''; + }; + }; + html-css = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables html/css. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + tailwindcss + tailwindcss-language-server + # html-tidy + ]; + example = []; + type = with lib.types; listOf package; + description = '' + html/css packages + ''; + }; + }; + sql = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables sql. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + nodePackages.sql-formatter + sqls + ]; + example = []; + type = with lib.types; listOf package; + description = '' + sql packages + ''; + }; + }; + gleam = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables gleam. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [gleam]; + example = []; + type = with lib.types; listOf package; + description = '' + gleam packages + ''; + }; + }; + asm = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables assembly. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [asm-lsp]; + example = []; + type = with lib.types; listOf package; + description = '' + assembly packages + ''; + }; + }; + }; + }; + }; + + config = let + basePackages = with pkgs; [ + gitui + meson + ninja + tree-sitter + unzip + pkg-config + sqlite + plantuml + d-spy + tmux + tmate + ]; + in + 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; + }; + programs.vscode = lib.mkIf config.mods.coding.vscodium.enable { + enable = true; + package = pkgs.vscodium; + profiles.default.extensions = config.mods.coding.vscodium.extensions; + }; + xdg.configFile."neovide/config.toml" = lib.mkIf (config.mods.coding.dashvim || config.mods.coding.neovide.enable) { + source = + (pkgs.formats.toml {}).generate "neovide" + config.mods.coding.neovide.config; + }; + + xdg.configFile."gh/config.yml" = lib.mkIf config.mods.coding.gh.enable { + source = + (pkgs.formats.yaml {}).generate "config" + config.mods.coding.gh.config; + }; + xdg.configFile."gh/hosts.yml" = lib.mkIf config.mods.coding.gh.enable { + source = + (pkgs.formats.yaml {}).generate "hosts" + config.mods.coding.gh.hosts; + }; + + home.packages = with pkgs; + [ + (lib.mkIf (config.mods.coding.dashvim || config.mods.coding.neovide.enable) neovide) + (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) + (lib.mkIf config.mods.coding.penpot pkgs.penpot-desktop) + (lib.mkIf config.mods.coding.gh.enable gh) + ] + ++ config.mods.coding.additionalPackages + ++ (lib.lists.optionals config.mods.coding.useDefaultPackages basePackages) + ++ (lib.lists.optionals config.mods.coding.languages.haskell.enable config.mods.coding.languages.haskell.packages) + ++ (lib.lists.optionals config.mods.coding.languages.rust.enable config.mods.coding.languages.rust.packages) + ++ (lib.lists.optionals config.mods.coding.languages.go.enable config.mods.coding.languages.go.packages) + ++ (lib.lists.optionals config.mods.coding.languages.java.enable config.mods.coding.languages.java.packages) + ++ (lib.lists.optionals config.mods.coding.languages.dotnet.enable config.mods.coding.languages.dotnet.packages) + ++ (lib.lists.optionals config.mods.coding.languages.bash.enable config.mods.coding.languages.bash.packages) + ++ (lib.lists.optionals config.mods.coding.languages.C-CPP.enable config.mods.coding.languages.C-CPP.packages) + ++ (lib.lists.optionals config.mods.coding.languages.asm.enable config.mods.coding.languages.asm.packages) + ++ (lib.lists.optionals config.mods.coding.languages.sql.enable config.mods.coding.languages.sql.packages) + ++ (lib.lists.optionals config.mods.coding.languages.html-css.enable config.mods.coding.languages.html-css.packages) + ++ (lib.lists.optionals config.mods.coding.languages.configFiles.enable config.mods.coding.languages.configFiles.packages) + ++ (lib.lists.optionals config.mods.coding.languages.ts-js.enable config.mods.coding.languages.ts-js.packages) + ++ (lib.lists.optionals config.mods.coding.languages.typst.enable config.mods.coding.languages.typst.packages) + ++ (lib.lists.optionals config.mods.coding.languages.zig.enable config.mods.coding.languages.zig.packages) + ++ (lib.lists.optionals config.mods.coding.languages.gleam.enable config.mods.coding.languages.gleam.packages); + } + ); +} diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 17be977..b1d5103 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -1,49 +1,49 @@ -{ - imports = [ - ./acpid.nix - ./basePackages.nix - ./bluetooth.nix - ./browser - ./coding.nix - ./containers.nix - ./drives.nix - ./fancontrol.nix - ./fastfetch.nix - ./fish.nix - ./flatpak.nix - ./gaming.nix - ./gdm.nix - ./git.nix - ./gnome.nix - ./gnomeServices.nix - ./gpu.nix - ./greetd.nix - ./homePackages.nix - ./hyprland - ./kde.nix - ./kdeConnect.nix - ./keepassxc.nix - ./kitty.nix - ./media.nix - ./mime.nix - ./ncspot.nix - ./nextcloud.nix - ./oxi - ./piper.nix - ./plymouth.nix - ./printing.nix - ./scripts.nix - ./sddm.nix - ./sops.nix - ./starship.nix - ./streamcontroller.nix - ./stylix.nix - ./supersonic.nix - ./sway.nix - ./teams.nix - ./virtmanager.nix - ./xkb.nix - ./xone.nix - ./yazi - ]; -} +{ + imports = [ + ./acpid.nix + ./basePackages.nix + ./bluetooth.nix + ./browser + ./coding.nix + ./containers.nix + ./drives.nix + ./fancontrol.nix + ./fastfetch.nix + ./fish.nix + ./flatpak.nix + ./gaming.nix + ./gdm.nix + ./git.nix + ./gnome.nix + ./gnomeServices.nix + ./gpu.nix + ./greetd.nix + ./homePackages.nix + ./hyprland + ./kde.nix + ./kdeConnect.nix + ./keepassxc.nix + ./kitty.nix + ./media.nix + ./mime.nix + ./ncspot.nix + ./nextcloud.nix + ./oxi + ./piper.nix + ./plymouth.nix + ./printing.nix + ./scripts.nix + ./sddm.nix + ./sops.nix + ./starship.nix + ./streamcontroller.nix + ./stylix.nix + ./supersonic.nix + ./sway.nix + ./teams.nix + ./virtmanager.nix + ./xkb.nix + ./xone.nix + ./yazi + ]; +} diff --git a/modules/programs/fancontrol.nix b/modules/programs/fancontrol.nix index 87be9af..f7a2e3a 100644 --- a/modules/programs/fancontrol.nix +++ b/modules/programs/fancontrol.nix @@ -1,36 +1,36 @@ -{ - lib, - config, - options, - ... -}: { - options.mods.fancontrol = { - enable = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = "Enables fancontrol-gui with needed drivers"; - }; - forceId = lib.mkOption { - default = null; - example = "force_id=0x8628"; - type = with lib.types; nullOr str; - description = "Modprobe options for the it87 driver. Information at: https://wiki.archlinux.org/title/Lm_sensors#Gigabyte_B250/Z370/B450M/B560M/B660M/Z690/B550_motherboards"; - }; - }; - config = lib.mkIf config.mods.fancontrol.enable ( - lib.optionalAttrs (options ? home.packages) { - programs.fancontrol-gui.enable = true; - } - // (lib.optionalAttrs (options ? boot.kernelModules) { - boot = { - kernelParams = ["acpi_enforce_resources=lax"]; - extraModulePackages = with config.boot.kernelPackages; [liquidtux it87]; - kernelModules = ["v4l2loopback" "it87"]; - extraModprobeConfig = lib.mkIf (config.mods.fancontrol.forceId != null) '' - options it87 ${config.mods.fancontrol.forceId} - ''; - }; - }) - ); -} +{ + lib, + config, + options, + ... +}: { + options.mods.fancontrol = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables fancontrol-gui with needed drivers"; + }; + forceId = lib.mkOption { + default = null; + example = "force_id=0x8628"; + type = with lib.types; nullOr str; + description = "Modprobe options for the it87 driver. Information at: https://wiki.archlinux.org/title/Lm_sensors#Gigabyte_B250/Z370/B450M/B560M/B660M/Z690/B550_motherboards"; + }; + }; + config = lib.mkIf config.mods.fancontrol.enable ( + lib.optionalAttrs (options ? home.packages) { + programs.fancontrol-gui.enable = true; + } + // (lib.optionalAttrs (options ? boot.kernelModules) { + boot = { + kernelParams = ["acpi_enforce_resources=lax"]; + extraModulePackages = with config.boot.kernelPackages; [liquidtux it87]; + kernelModules = ["v4l2loopback" "it87"]; + extraModprobeConfig = lib.mkIf (config.mods.fancontrol.forceId != null) '' + options it87 ${config.mods.fancontrol.forceId} + ''; + }; + }) + ); +} diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index fc89e95..2f18036 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -52,6 +52,7 @@ in { alias rebuild='nh os switch -- --accept-flake-config' alias update='nix flake update --flake $FLAKE --accept-flake-config' + alias gcli='gh' abbr --add ls 'lsd' abbr --add :q 'exit' abbr --add gh 'git push origin' diff --git a/modules/programs/git.nix b/modules/programs/git.nix index dec2aa5..9189329 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -6,13 +6,13 @@ }: { options.mods.git = { username = lib.mkOption { - default = "DashieTM"; + default = ""; example = "globi"; type = lib.types.str; description = "Git user name"; }; email = lib.mkOption { - default = "fabio.lenherr@gmail.com"; + default = ""; example = "globi@globus.glob"; type = lib.types.str; description = "Git email"; diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index c6ce857..049041d 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -1,402 +1,402 @@ -{ - mkDashDefault, - config, - lib, - options, - pkgs, - inputs, - ... -}: let - browserName = - if (builtins.isString config.mods.homePackages.browser) - then config.mods.homePackages.browser - else if config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram - then config.mods.homePackages.browser.meta.mainProgram - else config.mods.homePackages.browser.pname; -in { - options.mods.hyprland = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enable Hyprland - ''; - }; - monitor = lib.mkOption { - default = [ - # main monitor - "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" - # all others - ]; - example = ["DP-1,3440x1440@180,2560x0,1,vrr,0"]; - type = with lib.types; listOf str; - description = '' - The monitor configuration for hyprland. - ''; - }; - workspace = lib.mkOption { - default = []; - example = ["2,monitor:DP-1, default:true"]; - type = with lib.types; listOf str; - description = '' - The workspace configuration for hyprland. - ''; - }; - noAtomic = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = '' - Use tearing - ''; - }; - extraAutostart = lib.mkOption { - default = []; - example = ["your application"]; - type = lib.types.listOf lib.types.str; - description = '' - Extra exec_once. - ''; - }; - useDefaultConfig = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Use preconfigured Hyprland config. - ''; - }; - customConfig = lib.mkOption { - default = {}; - example = {}; - type = with lib.types; attrsOf anything; - description = '' - Custom Hyprland configuration. - Will be merged with default configuration if enabled. - ''; - }; - plugins = lib.mkOption { - default = []; - example = []; - type = with lib.types; listOf package; - description = '' - Plugins to be added to Hyprland. - ''; - }; - pluginConfig = lib.mkOption { - default = {}; - example = {}; - type = with lib.types; attrsOf anything; - description = '' - Plugin configuration to be added to Hyprland. - ''; - }; - hyprspaceEnable = lib.mkOption { - default = false; - type = lib.types.bool; - example = true; - description = '' - Enables Hyprspace plugin for hyprland. - Please note, plugins tend to break VERY often. - ''; - }; - }; - - 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 - ]; - - wayland.windowManager.hyprland = { - enable = true; - settings = - if config.mods.hyprland.useDefaultConfig - then - lib.mkMerge - [ - { - "$mod" = "SUPER"; - - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizeactive" - ]; - - bind = [ - # screenshots - ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' - ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' - ''$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy'' - - # regular programs - "$mod SUPER,F,exec,${browserName}" - (lib.mkIf ( - browserName == "firefox" || browserName == "zen" - ) "$mod SUPERSHIFT,F,exec,${browserName} -p special") - "$mod SUPER,T,exec,kitty -1" - "$mod SUPER,E,exec,nautilus -w" - "$mod SUPER,N,exec,neovide" - (lib.mkIf (config.mods.hyprland.anyrun.enable) "$mod SUPER,R,exec,anyrun") - (lib.mkIf (config.mods.oxi.oxirun.enable) "$mod SUPER,R,exec,oxirun") - (lib.mkIf (config.mods.oxi.oxidash.enable) "$mod SUPER,M,exec,oxidash") - (lib.mkIf (config.mods.oxi.oxicalc.enable) "$mod SUPER,G,exec,oxicalc") - (lib.mkIf (config.mods.oxi.oxishut.enable) "$mod SUPER,D,exec,oxishut") - (lib.mkIf (config.mods.oxi.oxipaste.enable) "$mod SUPER,A,exec,oxipaste-iced") - (lib.mkIf (config.mods.oxi.hyprdock.enable) "$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 - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioMute,exec, audioControl mute") - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioLowerVolume,exec, audioControl sink -5%") - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioRaiseVolume,exec, audioControl sink +5%") - ",XF86AudioPlay,exec, playerctl play-pause" - ",XF86AudioNext,exec, playerctl next" - ",XF86AudioPrev,exec, playerctl previous" - (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessDown,exec, changeBrightness brightness 10%-") - (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessUp,exec, changeBrightness 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.mkOverride 51 "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; - # "col.inactive_border" = "0x66333333"; - allow_tearing = lib.mkIf config.mods.hyprland.noAtomic 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" - ]; - }; - - dwindle = { - preserve_split = true; - pseudotile = 0; - permanent_direction_override = false; - }; - - 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; - }; - }; - - misc = { - animate_manual_resizes = 1; - enable_swallow = true; - disable_splash_rendering = true; - disable_hyprland_logo = true; - swallow_regex = "^(.*)(kitty)(.*)$"; - initial_workspace_tracking = 1; - # just doesn't work - enable_anr_dialog = false; - }; - - cursor = { - enable_hyprcursor = true; - no_hardware_cursors = mkDashDefault config.mods.gpu.nvidia.enable; - # done with nix, this would break the current setup otherwise - sync_gsettings_theme = false; - }; - - gestures = { - workspace_swipe = true; - }; - - monitor = config.mods.hyprland.monitor; - workspace = config.mods.hyprland.workspace; - - env = [ - "GTK_CSD,0" - ''TERM,"kitty /bin/fish"'' - "XDG_CURRENT_DESKTOP=Hyprland" - "XDG_SESSION_TYPE=wayland" - "XDG_SESSION_DESKTOP=Hyprland" - "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" - "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" - "XCURSOR_THEME,${config.mods.stylix.cursor.name}" - "XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" - "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"'' - (lib.mkIf config.mods.hyprland.noAtomic "WLR_DRM_NO_ATOMIC,1") - "GTK_USE_PORTAL, 1" - - (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") - (lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland") - (lib.mkIf config.mods.gpu.nvidia.enable "GBM_BACKEND,nvidia-drm") - (lib.mkIf config.mods.gpu.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") - ]; - - layerrule = [ - # layer rules - # mainly to disable animations within slurp and grim - "noanim, selection" - ]; - - windowrule = [ - # window rules - "float,class:^(.*)(OxiCalc)(.*)$" - "float,class:^(.*)(winecfg.exe)(.*)$" - "float,class:^(.*)(copyq)(.*)$" - "center,class:^(.*)(swappy)(.*)$" - "float,title:^(.*)(reset)(.*)$" - "workspace 10 silent,class:^(.*)(steam)(.*)$" - "workspace 9 silent,class:^(.*)(dota)(.*)$" - "workspace 9 silent,class:^(.*)(battlebits)(.*)$" - "workspace 9 silent,class:^(.*)(aoe)(.*)$" - "suppressevent fullscreen maximize,class:^(.*)(neovide)(.*)$" - "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" - "${browserName}" - "oxipaste_daemon" - "oxinoti" - ] - ++ config.mods.hyprland.extraAutostart; - - plugin = - lib.mkMerge - [ - { - hyprspace = lib.mkIf config.mods.hyprland.hyprspaceEnable { - bind = [ - "SUPER, W, overview:toggle, toggle" - ]; - }; - } - config.mods.hyprland.pluginConfig - ]; - } - config.mods.hyprland.customConfig - ] - else lib.mkForce config.mods.hyprland.customConfig; - plugins = - [ - (lib.mkIf config.mods.hyprland.hyprspaceEnable inputs.Hyprspace.packages.${pkgs.system}.Hyprspace) - ] - ++ config.mods.hyprland.plugins; - }; - } - ); -} +{ + mkDashDefault, + config, + lib, + options, + pkgs, + inputs, + ... +}: let + browserName = + if (builtins.isString config.mods.homePackages.browser) + then config.mods.homePackages.browser + else if config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram + then config.mods.homePackages.browser.meta.mainProgram + else config.mods.homePackages.browser.pname; +in { + options.mods.hyprland = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enable Hyprland + ''; + }; + monitor = lib.mkOption { + default = [ + # main monitor + "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" + # all others + ]; + example = ["DP-1,3440x1440@180,2560x0,1,vrr,0"]; + type = with lib.types; listOf str; + description = '' + The monitor configuration for hyprland. + ''; + }; + workspace = lib.mkOption { + default = []; + example = ["2,monitor:DP-1, default:true"]; + type = with lib.types; listOf str; + description = '' + The workspace configuration for hyprland. + ''; + }; + noAtomic = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Use tearing + ''; + }; + extraAutostart = lib.mkOption { + default = []; + example = ["your application"]; + type = lib.types.listOf lib.types.str; + description = '' + Extra exec_once. + ''; + }; + useDefaultConfig = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use preconfigured Hyprland config. + ''; + }; + customConfig = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = '' + Custom Hyprland configuration. + Will be merged with default configuration if enabled. + ''; + }; + plugins = lib.mkOption { + default = []; + example = []; + type = with lib.types; listOf package; + description = '' + Plugins to be added to Hyprland. + ''; + }; + pluginConfig = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = '' + Plugin configuration to be added to Hyprland. + ''; + }; + hyprspaceEnable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables Hyprspace plugin for hyprland. + Please note, plugins tend to break VERY often. + ''; + }; + }; + + 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 + ]; + + wayland.windowManager.hyprland = { + enable = true; + settings = + if config.mods.hyprland.useDefaultConfig + then + lib.mkMerge + [ + { + "$mod" = "SUPER"; + + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizeactive" + ]; + + bind = [ + # screenshots + ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' + ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' + ''$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy'' + + # regular programs + "$mod SUPER,F,exec,${browserName}" + (lib.mkIf ( + browserName == "firefox" || browserName == "zen" + ) "$mod SUPERSHIFT,F,exec,${browserName} -p special") + "$mod SUPER,T,exec,kitty -1" + "$mod SUPER,E,exec,nautilus -w" + "$mod SUPER,N,exec,neovide" + (lib.mkIf (config.mods.hyprland.anyrun.enable) "$mod SUPER,R,exec,anyrun") + (lib.mkIf (config.mods.oxi.oxirun.enable) "$mod SUPER,R,exec,oxirun") + (lib.mkIf (config.mods.oxi.oxidash.enable) "$mod SUPER,M,exec,oxidash") + (lib.mkIf (config.mods.oxi.oxicalc.enable) "$mod SUPER,G,exec,oxicalc") + (lib.mkIf (config.mods.oxi.oxishut.enable) "$mod SUPER,D,exec,oxishut") + (lib.mkIf (config.mods.oxi.oxipaste.enable) "$mod SUPER,A,exec,oxipaste-iced") + (lib.mkIf (config.mods.oxi.hyprdock.enable) "$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 + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioMute,exec, audioControl mute") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioLowerVolume,exec, audioControl sink -5%") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioRaiseVolume,exec, audioControl sink +5%") + ",XF86AudioPlay,exec, playerctl play-pause" + ",XF86AudioNext,exec, playerctl next" + ",XF86AudioPrev,exec, playerctl previous" + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessDown,exec, changeBrightness brightness 10%-") + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessUp,exec, changeBrightness 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.mkOverride 51 "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; + # "col.inactive_border" = "0x66333333"; + allow_tearing = lib.mkIf config.mods.hyprland.noAtomic 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" + ]; + }; + + dwindle = { + preserve_split = true; + pseudotile = 0; + permanent_direction_override = false; + }; + + 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; + }; + }; + + misc = { + animate_manual_resizes = 1; + enable_swallow = true; + disable_splash_rendering = true; + disable_hyprland_logo = true; + swallow_regex = "^(.*)(kitty)(.*)$"; + initial_workspace_tracking = 1; + # just doesn't work + enable_anr_dialog = false; + }; + + cursor = { + enable_hyprcursor = true; + no_hardware_cursors = mkDashDefault config.mods.gpu.nvidia.enable; + # done with nix, this would break the current setup otherwise + sync_gsettings_theme = false; + }; + + gestures = { + workspace_swipe = true; + }; + + monitor = config.mods.hyprland.monitor; + workspace = config.mods.hyprland.workspace; + + env = [ + "GTK_CSD,0" + ''TERM,"kitty /bin/fish"'' + "XDG_CURRENT_DESKTOP=Hyprland" + "XDG_SESSION_TYPE=wayland" + "XDG_SESSION_DESKTOP=Hyprland" + "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" + "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" + "XCURSOR_THEME,${config.mods.stylix.cursor.name}" + "XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" + "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"'' + (lib.mkIf config.mods.hyprland.noAtomic "WLR_DRM_NO_ATOMIC,1") + "GTK_USE_PORTAL, 1" + + (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") + (lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland") + (lib.mkIf config.mods.gpu.nvidia.enable "GBM_BACKEND,nvidia-drm") + (lib.mkIf config.mods.gpu.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") + ]; + + layerrule = [ + # layer rules + # mainly to disable animations within slurp and grim + "noanim, selection" + ]; + + windowrule = [ + # window rules + "float,class:^(.*)(OxiCalc)(.*)$" + "float,class:^(.*)(winecfg.exe)(.*)$" + "float,class:^(.*)(copyq)(.*)$" + "center,class:^(.*)(swappy)(.*)$" + "float,title:^(.*)(reset)(.*)$" + "workspace 10 silent,class:^(.*)(steam)(.*)$" + "workspace 9 silent,class:^(.*)(dota)(.*)$" + "workspace 9 silent,class:^(.*)(battlebits)(.*)$" + "workspace 9 silent,class:^(.*)(aoe)(.*)$" + "suppressevent fullscreen maximize,class:^(.*)(neovide)(.*)$" + "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" + "${browserName}" + "oxipaste_daemon" + "oxinoti" + ] + ++ config.mods.hyprland.extraAutostart; + + plugin = + lib.mkMerge + [ + { + hyprspace = lib.mkIf config.mods.hyprland.hyprspaceEnable { + bind = [ + "SUPER, W, overview:toggle, toggle" + ]; + }; + } + config.mods.hyprland.pluginConfig + ]; + } + config.mods.hyprland.customConfig + ] + else lib.mkForce config.mods.hyprland.customConfig; + plugins = + [ + (lib.mkIf config.mods.hyprland.hyprspaceEnable inputs.Hyprspace.packages.${pkgs.system}.Hyprspace) + ] + ++ config.mods.hyprland.plugins; + }; + } + ); +} From 62ce845f7102552094ed6a9e90f3556334f3076b Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 10 May 2025 13:52:33 +0200 Subject: [PATCH 249/330] Nextcloud: remove default username --- modules/programs/nextcloud.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/programs/nextcloud.nix b/modules/programs/nextcloud.nix index 16b2d29..31216ee 100644 --- a/modules/programs/nextcloud.nix +++ b/modules/programs/nextcloud.nix @@ -8,13 +8,13 @@ description = "Enable nextcloud"; }; username = lib.mkOption { - default = "DashieTM"; + default = ""; example = "globi"; type = lib.types.str; description = "Your username"; }; url = lib.mkOption { - default = "cloud.dashie.org"; + default = ""; example = "cloud.globi.org"; type = lib.types.str; description = "Your url"; From 4e7aa1e0f004bfcf72937588d1069b54e08a7375 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 10 May 2025 13:57:09 +0200 Subject: [PATCH 250/330] conf: default username to DashNix --- modules/conf.nix | 398 +++++++++++++++++++++++------------------------ 1 file changed, 199 insertions(+), 199 deletions(-) diff --git a/modules/conf.nix b/modules/conf.nix index d7a8dc2..93ec67e 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -1,199 +1,199 @@ -{ - lib, - config, - options, - ... -}: { - options.conf = { - system = lib.mkOption { - default = "x86_64-linux"; - # no fisherprice unix support - type = with lib.types; (enum [ - "x86_64-linux" - "aarch64-linux" - "aarch64-linux-android" - ]); - example = "aarch64-linux"; - description = '' - System architecture. - ''; - }; - - systemLocalTime = lib.mkOption { - default = false; - example = true; - description = '' - System time for dualbooting - ''; - }; - - wsl = lib.mkOption { - default = false; - example = true; - description = '' - Runs Nix in wsl - ''; - }; - - secureBoot = lib.mkOption { - default = false; - example = true; - description = '' - enables secure boot. - Note: Secure boot is NOT reproducible - Here are the necessary steps: - + create your keys with sbctl -> sudo sbctl create-keys - + build with systemd once -> set this to false and build once - + build with secureBoot true - + verify that your keys are signed (note, only systemd and your generations should now be signed): sudo sbtcl verify - + enroll your keys (microsoft is necessary for windows dualboot support, leave it there): sudo sbctl enroll-keys --microsoft - + reboot with secureboot enabled - Note: Some motherboards have vendor specific keys for secure boot, this may not necessarily work with our self signed keys - You likely have to disable these vendor specific keys (example HP: sure boot) - ''; - }; - - useSystemdBootloader = lib.mkOption { - default = true; - example = false; - description = '' - use systemd bootloader. - ''; - }; - - cpu = lib.mkOption { - # TODO: how to enable arm? - default = "amd"; - type = with lib.types; (enum [ - "amd" - "intel" - ]); - example = "intel"; - description = '' - cpu microcode. - ''; - }; - - additionalBootKernalParams = lib.mkOption { - default = [ - "video=${config.conf.defaultMonitor}:${config.conf.defaultMonitorMode}" - ]; - example = []; - type = with lib.types; listOf str; - description = '' - additional kernelParams passed to bootloader - ''; - }; - - defaultMonitor = lib.mkOption { - default = ""; - example = "eDP-1"; - type = lib.types.str; - description = '' - main monitor - ''; - }; - - defaultMonitorMode = lib.mkOption { - default = ""; - example = "3440x1440@180"; - type = lib.types.str; - description = '' - main monitor mode: width x height @ refreshrate - ''; - }; - - defaultMonitorScale = lib.mkOption { - default = "1"; - example = "1.5"; - type = lib.types.str; - description = '' - main monitor scaling - ''; - }; - - bootParams = lib.mkOption { - default = []; - example = ["resume=something"]; - type = with lib.types; listOf str; - description = '' - Boot params - ''; - }; - - kernelOverride = lib.mkOption { - default = null; - type = with lib.types; nullOr package; - description = '' - kernel to be used - Has no examples as doc complains... - #example = pkgs.linuxPackages_xanmod_latest; - ''; - }; - - username = lib.mkOption { - default = "dashie"; - example = "pingpang"; - type = lib.types.str; - description = '' - The username. - ''; - }; - - timezone = lib.mkOption { - default = "Europe/Zurich"; - example = "Europe/Berlin"; - type = lib.types.str; - description = '' - The timezone. - ''; - }; - - locale = lib.mkOption { - default = "en_US.UTF-8"; - example = "de_DE.UTF-8"; - type = lib.types.str; - description = '' - The locale. - ''; - }; - - nixosConfigPath = lib.mkOption { - default = "/home/${config.conf.username}/gits/nixos/."; - example = "yourpath/."; - type = lib.types.str; - description = '' - The path for your build command, you can then simply type rebuild to switch to a new configuration. - ''; - }; - - systemStateVersion = lib.mkOption { - example = "24.11"; - default = "23.05"; - type = lib.types.str; - description = '' - System state version - ''; - }; - homeStateVersion = lib.mkOption { - default = "24.11"; - example = "23.05"; - type = lib.types.str; - description = '' - Home state version - ''; - }; - }; - - config = - (lib.optionalAttrs (options ? system.stateVersion) { - boot = { - kernelPackages = lib.mkIf (config.conf.kernelOverride != null) config.conf.kernel; - kernelParams = config.conf.additionalBootKernalParams; - }; - system.stateVersion = config.conf.systemStateVersion; - }) - // (lib.optionalAttrs (options ? home.stateVersion) { - home.stateVersion = config.conf.homeStateVersion; - }); -} +{ + lib, + config, + options, + ... +}: { + options.conf = { + system = lib.mkOption { + default = "x86_64-linux"; + # no fisherprice unix support + type = with lib.types; (enum [ + "x86_64-linux" + "aarch64-linux" + "aarch64-linux-android" + ]); + example = "aarch64-linux"; + description = '' + System architecture. + ''; + }; + + systemLocalTime = lib.mkOption { + default = false; + example = true; + description = '' + System time for dualbooting + ''; + }; + + wsl = lib.mkOption { + default = false; + example = true; + description = '' + Runs Nix in wsl + ''; + }; + + secureBoot = lib.mkOption { + default = false; + example = true; + description = '' + enables secure boot. + Note: Secure boot is NOT reproducible + Here are the necessary steps: + + create your keys with sbctl -> sudo sbctl create-keys + + build with systemd once -> set this to false and build once + + build with secureBoot true + + verify that your keys are signed (note, only systemd and your generations should now be signed): sudo sbtcl verify + + enroll your keys (microsoft is necessary for windows dualboot support, leave it there): sudo sbctl enroll-keys --microsoft + + reboot with secureboot enabled + Note: Some motherboards have vendor specific keys for secure boot, this may not necessarily work with our self signed keys + You likely have to disable these vendor specific keys (example HP: sure boot) + ''; + }; + + useSystemdBootloader = lib.mkOption { + default = true; + example = false; + description = '' + use systemd bootloader. + ''; + }; + + cpu = lib.mkOption { + # TODO: how to enable arm? + default = "amd"; + type = with lib.types; (enum [ + "amd" + "intel" + ]); + example = "intel"; + description = '' + cpu microcode. + ''; + }; + + additionalBootKernalParams = lib.mkOption { + default = [ + "video=${config.conf.defaultMonitor}:${config.conf.defaultMonitorMode}" + ]; + example = []; + type = with lib.types; listOf str; + description = '' + additional kernelParams passed to bootloader + ''; + }; + + defaultMonitor = lib.mkOption { + default = ""; + example = "eDP-1"; + type = lib.types.str; + description = '' + main monitor + ''; + }; + + defaultMonitorMode = lib.mkOption { + default = ""; + example = "3440x1440@180"; + type = lib.types.str; + description = '' + main monitor mode: width x height @ refreshrate + ''; + }; + + defaultMonitorScale = lib.mkOption { + default = "1"; + example = "1.5"; + type = lib.types.str; + description = '' + main monitor scaling + ''; + }; + + bootParams = lib.mkOption { + default = []; + example = ["resume=something"]; + type = with lib.types; listOf str; + description = '' + Boot params + ''; + }; + + kernelOverride = lib.mkOption { + default = null; + type = with lib.types; nullOr package; + description = '' + kernel to be used + Has no examples as doc complains... + #example = pkgs.linuxPackages_xanmod_latest; + ''; + }; + + username = lib.mkOption { + default = "DashNix"; + example = "pingpang"; + type = lib.types.str; + description = '' + The username. + ''; + }; + + timezone = lib.mkOption { + default = "Europe/Zurich"; + example = "Europe/Berlin"; + type = lib.types.str; + description = '' + The timezone. + ''; + }; + + locale = lib.mkOption { + default = "en_US.UTF-8"; + example = "de_DE.UTF-8"; + type = lib.types.str; + description = '' + The locale. + ''; + }; + + nixosConfigPath = lib.mkOption { + default = "/home/${config.conf.username}/gits/nixos/."; + example = "yourpath/."; + type = lib.types.str; + description = '' + The path for your build command, you can then simply type rebuild to switch to a new configuration. + ''; + }; + + systemStateVersion = lib.mkOption { + example = "24.11"; + default = "23.05"; + type = lib.types.str; + description = '' + System state version + ''; + }; + homeStateVersion = lib.mkOption { + default = "24.11"; + example = "23.05"; + type = lib.types.str; + description = '' + Home state version + ''; + }; + }; + + config = + (lib.optionalAttrs (options ? system.stateVersion) { + boot = { + kernelPackages = lib.mkIf (config.conf.kernelOverride != null) config.conf.kernel; + kernelParams = config.conf.additionalBootKernalParams; + }; + system.stateVersion = config.conf.systemStateVersion; + }) + // (lib.optionalAttrs (options ? home.stateVersion) { + home.stateVersion = config.conf.homeStateVersion; + }); +} From 11a41563c879caf8f43e4773ef9bdf2ed263b3c2 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 10 May 2025 13:59:37 +0200 Subject: [PATCH 251/330] general: Remove all default dashie references --- base/xkb_layout.nix | 46 ++++++++++++++++++++-------------------- modules/programs/git.nix | 16 ++------------ modules/programs/xkb.nix | 2 +- 3 files changed, 26 insertions(+), 38 deletions(-) diff --git a/base/xkb_layout.nix b/base/xkb_layout.nix index db4fa60..ce87b6e 100644 --- a/base/xkb_layout.nix +++ b/base/xkb_layout.nix @@ -1,23 +1,23 @@ -{ - mkDashDefault, - pkgs, - ... -}: let - layout = pkgs.writeText "dashie" '' - xkb_symbols "dashie" - { - include "us(basic)" - include "level3(ralt_switch)" - key { [ a, A, adiaeresis, Adiaeresis ] }; - key { [ o, O, odiaeresis, Odiaeresis ] }; - key { [ u, U, udiaeresis, Udiaeresis ] }; - }; - ''; -in { - environment.systemPackages = mkDashDefault [pkgs.xorg.xkbcomp]; - services.xserver.xkb.extraLayouts.dashie = { - description = "US layout with 'umlaut'"; - languages = ["eng"]; - symbolsFile = "${layout}"; - }; -} +{ + mkDashDefault, + pkgs, + ... +}: let + layout = pkgs.writeText "enIntUmlaut" '' + xkb_symbols "enIntUmlaut" + { + include "us(basic)" + include "level3(ralt_switch)" + key { [ a, A, adiaeresis, Adiaeresis ] }; + key { [ o, O, odiaeresis, Odiaeresis ] }; + key { [ u, U, udiaeresis, Udiaeresis ] }; + }; + ''; +in { + environment.systemPackages = mkDashDefault [pkgs.xorg.xkbcomp]; + services.xserver.xkb.extraLayouts.enIntUmlaut = { + description = "US layout with 'umlaut'"; + languages = ["eng"]; + symbolsFile = "${layout}"; + }; +} diff --git a/modules/programs/git.nix b/modules/programs/git.nix index 9189329..ed2719e 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -34,27 +34,15 @@ description = "Additional git config"; }; sshConfig = lib.mkOption { - default = '' + default = ""; + example = '' Host github.com ${ if (config ? sops.secrets && config.sops.secrets ? hub.path) then "IdentityFile ${config.sops.secrets.hub.path}" else "" } - Host gitlab.com - ${ - if (config ? sops.secrets && config.sops.secrets ? lab.path) - then "IdentityFile ${config.sops.secrets.lab.path}" - else "" - } - Host dashie.org - ${ - if (config ? sops.secrets && config.sops.secrets ? dashie.path) - then "IdentityFile ${config.sops.secrets.dashie.path}" - else "" - } ''; - example = ""; type = lib.types.lines; description = "ssh configuration (keys for git)"; }; diff --git a/modules/programs/xkb.nix b/modules/programs/xkb.nix index 7ae8414..f78e5e2 100644 --- a/modules/programs/xkb.nix +++ b/modules/programs/xkb.nix @@ -6,7 +6,7 @@ }: { options.mods.xkb = { layout = lib.mkOption { - default = "dashie"; + default = "enIntUmlaut"; example = "us"; type = lib.types.str; description = "Your layout"; From 7b3ad8a182242ecf4333deafcadd42a0616a9cb3 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 10 May 2025 14:02:24 +0200 Subject: [PATCH 252/330] onedrive: init --- modules/programs/default.nix | 1 + modules/programs/onedrive.nix | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 modules/programs/onedrive.nix diff --git a/modules/programs/default.nix b/modules/programs/default.nix index b1d5103..fdfb163 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -28,6 +28,7 @@ ./mime.nix ./ncspot.nix ./nextcloud.nix + ./onedrive.nix ./oxi ./piper.nix ./plymouth.nix diff --git a/modules/programs/onedrive.nix b/modules/programs/onedrive.nix new file mode 100644 index 0000000..56bd79d --- /dev/null +++ b/modules/programs/onedrive.nix @@ -0,0 +1,24 @@ +{ + config, + lib, + options, + pkgs, + ... +}: { + options.mods = { + onedrive = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enable onedrive program and service"; + }; + }; + }; + config = lib.mkIf config.mods.onedrive.enable ( + lib.optionalAttrs (options ? environment) { + services.onedrive.enable = true; + environment.systemPackages = [pkgs.onedrive]; + } + ); +} From 79a66b1f848029931428e86c979cd0913545d7b3 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 10 May 2025 22:09:54 +0200 Subject: [PATCH 253/330] cache: adjust to trusted --- base/common_hardware.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 45b7779..5f019da 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -102,9 +102,12 @@ in { builders-use-substitutes = mkDashDefault true; substituters = [ + "https://chaotic-nyx.cachix.org/" + ]; + + trusted-substituters = [ "https://hyprland.cachix.org" "https://anyrun.cachix.org" - "https://cache.garnix.io" "https://oxipaste.cachix.org" "https://oxinoti.cachix.org" "https://oxishut.cachix.org" @@ -112,13 +115,11 @@ in { "https://oxicalc.cachix.org" "https://hyprdock.cachix.org" "https://reset.cachix.org" - "https://chaotic-nyx.cachix.org/" ]; trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" - "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" "oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc=" "oxinoti.cachix.org-1:dvSoJl2Pjo5HMaNngdBbSaixK9BSf2N8gzjP2MdGvfc=" "oxishut.cachix.org-1:axyAGF3XMh1IyMAW4UMbQCdMNovDH0KH6hqLLRJH8jU=" From ea385722b05570fc7ce4c791275276b1739f1bc9 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 11 May 2025 11:33:20 +0200 Subject: [PATCH 254/330] Gaming: direct_scanout in Hyprland --- modules/programs/hyprland/hyprland.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hyprland/hyprland.nix index 049041d..5c1fe9a 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hyprland/hyprland.nix @@ -254,6 +254,10 @@ in { rounding = 4; }; + render = { + direct_scanout = mkDashDefault config.mods.gaming.enable; + }; + animations = { bezier = "penguin,0.05,0.9,0.1,1.0"; animation = [ @@ -298,7 +302,11 @@ in { cursor = { enable_hyprcursor = true; - no_hardware_cursors = mkDashDefault config.mods.gpu.nvidia.enable; + no_hardware_cursors = mkDashDefault ( + if config.mods.gpu.nvidia.enable + then 2 + else 0 + ); # done with nix, this would break the current setup otherwise sync_gsettings_theme = false; }; From 2b704cc5e7e9f8e9ecafca826b50925a7acb9024 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 11 May 2025 12:53:38 +0200 Subject: [PATCH 255/330] browser: fixup firefox forks --- modules/programs/browser/ffextensions.nix | 46 ++++ modules/programs/browser/firefox.nix | 23 +- modules/programs/browser/librewolf.nix | 24 +- modules/programs/browser/zen.nix | 312 ++++++++++------------ 4 files changed, 226 insertions(+), 179 deletions(-) create mode 100644 modules/programs/browser/ffextensions.nix diff --git a/modules/programs/browser/ffextensions.nix b/modules/programs/browser/ffextensions.nix new file mode 100644 index 0000000..27b1598 --- /dev/null +++ b/modules/programs/browser/ffextensions.nix @@ -0,0 +1,46 @@ +{ + lib, + stable, + pkgs, + name, + ... +}: let + mkExtension = id: install_url: { + ${id} = { + inherit install_url; + installation_mode = "normal_installed"; + }; + }; +in { + options.mods.browser.${name}.extensions = lib.mkOption { + default = [ + (mkExtension "uBlock0@raymondhill.net" "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi") + (mkExtension "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}" "https://addons.mozilla.org/firefox/downloads/latest/user-agent-string-switcher/latest.xpi") + (mkExtension "{d7742d87-e61d-4b78-b8a1-b469842139fa}" "https://addons.mozilla.org/firefox/downloads/latest/vimium-ff/latest.xpi") + (mkExtension "firefox@ghostery.com" "https://addons.mozilla.org/firefox/downloads/latest/ghostery/latest.xpi") + (mkExtension "CanvasBlocker@kkapsner.de" "https://addons.mozilla.org/firefox/downloads/latest/canvasblocker/latest.xpi") + (mkExtension "jid1-KKzOGWgsW3Ao4Q@jetpack" "https://addons.mozilla.org/firefox/downloads/latest/i-dont-care-about-cookies/latest.xpi") + (mkExtension "keepassxc-browser@keepassxc.org" "https://addons.mozilla.org/firefox/downloads/latest/keepassxc-browser/latest.xpi") + (mkExtension "@react-devtools" "https://addons.mozilla.org/firefox/downloads/latest/react-devtools/latest.xpi") + (mkExtension "extension@redux.devtools" "https://addons.mozilla.org/firefox/downloads/latest/reduxdevtools/latest.xpi") + (mkExtension "private-relay@firefox.com" "https://addons.mozilla.org/firefox/downloads/latest/private-relay/latest.xpi") + (mkExtension "addon@darkreader.org" "file://${pkgs.callPackage ../../../patches/darkreader.nix {inherit lib stable;}}/latest.xpi") + ]; + example = []; + type = with lib.types; listOf anything; + description = '' + List of extensions via attrsets: + ```nix + # id + # figure out the id via: + # nix run github:tupakkatapa/mozid -- 'https://addons.mozilla.org/en/firefox/addon/ublock-origin' + "uBlock0@raymondhill.net" = { + # install url + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + # method https://mozilla.github.io/policy-templates/#extensionsettings + installation_mode = "force_installed"; + }; + ``` + ''; + }; +} diff --git a/modules/programs/browser/firefox.nix b/modules/programs/browser/firefox.nix index 4db465a..f48f098 100644 --- a/modules/programs/browser/firefox.nix +++ b/modules/programs/browser/firefox.nix @@ -3,9 +3,16 @@ config, options, pkgs, + stable, ... -}: { - options.mods.browser.firefox = { +}: let + name = "firefox"; +in { + imports = [ + (import ./ffextensions.nix + {inherit lib stable pkgs name;}) + ]; + options.mods.browser.${name} = { enable = lib.mkOption { default = false; example = true; @@ -88,7 +95,17 @@ config.mods.browser.firefox.profiles; programs.firefox = { enable = true; - policies = config.mods.browser.firefox.configuration; + package = + pkgs.wrapFirefox + pkgs.firefox-unwrapped + { + pname = "firefox"; + extraPolicies = + config.mods.browser.firefox.configuration + // { + ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} config.mods.browser.firefox.extensions; + }; + }; profiles = builtins.listToAttrs config.mods.browser.firefox.profiles; }; } diff --git a/modules/programs/browser/librewolf.nix b/modules/programs/browser/librewolf.nix index 713423c..d0d77ac 100644 --- a/modules/programs/browser/librewolf.nix +++ b/modules/programs/browser/librewolf.nix @@ -3,9 +3,16 @@ config, options, pkgs, + stable, ... -}: { - options.mods.browser.librewolf = { +}: let + name = "librewolf"; +in { + imports = [ + (import ./ffextensions.nix + {inherit lib stable pkgs name;}) + ]; + options.mods.browser.${name} = { enable = lib.mkOption { default = false; example = true; @@ -82,8 +89,17 @@ lib.optionalAttrs (options ? home.packages) { programs.librewolf-dashnix = { enable = true; - package = pkgs.librewolf; - policies = config.mods.browser.librewolf.configuration; + package = + pkgs.wrapFirefox + pkgs.librewolf-unwrapped + { + pname = "librewolf"; + extraPolicies = + config.mods.browser.librewolf.configuration + // { + ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} config.mods.browser.librewolf.extensions; + }; + }; profiles = builtins.listToAttrs config.mods.browser.librewolf.profiles; }; } diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index 29a61b5..080a3cc 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -1,172 +1,140 @@ -# credits to Voronind for darkreader config https://github.com/voronind-com/nix/blob/main/home/program/firefox/default.nix -{ - lib, - config, - options, - inputs, - stable, - system, - pkgs, - ... -}: let - # at time of using this here, stylix might not be evaluated yet - # hence ensure it is by using base16 mkSchemeAttrs - base16 = pkgs.callPackage inputs.base16.lib {}; - scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; - mkExtension = id: install_url: { - ${id} = { - inherit install_url; - installation_mode = "normal_installed"; - }; - }; -in { - options.mods.browser.zen = { - enable = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = "Enables the zen browser"; - }; - extensions = lib.mkOption { - default = [ - (mkExtension "uBlock0@raymondhill.net" "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi") - (mkExtension "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}" "https://addons.mozilla.org/firefox/downloads/latest/user-agent-string-switcher/latest.xpi") - (mkExtension "{d7742d87-e61d-4b78-b8a1-b469842139fa}" "https://addons.mozilla.org/firefox/downloads/latest/vimium-ff/latest.xpi") - (mkExtension "firefox@ghostery.com" "https://addons.mozilla.org/firefox/downloads/latest/ghostery/latest.xpi") - (mkExtension "CanvasBlocker@kkapsner.de" "https://addons.mozilla.org/firefox/downloads/latest/canvasblocker/latest.xpi") - (mkExtension "jid1-KKzOGWgsW3Ao4Q@jetpack" "https://addons.mozilla.org/firefox/downloads/latest/i-dont-care-about-cookies/latest.xpi") - (mkExtension "keepassxc-browser@keepassxc.org" "https://addons.mozilla.org/firefox/downloads/latest/keepassxc-browser/latest.xpi") - (mkExtension "@react-devtools" "https://addons.mozilla.org/firefox/downloads/latest/react-devtools/latest.xpi") - (mkExtension "extension@redux.devtools" "https://addons.mozilla.org/firefox/downloads/latest/reduxdevtools/latest.xpi") - (mkExtension "private-relay@firefox.com" "https://addons.mozilla.org/firefox/downloads/latest/private-relay/latest.xpi") - (mkExtension "addon@darkreader.org" "file://${pkgs.callPackage ../../../patches/darkreader.nix {inherit lib stable;}}/latest.xpi") - ]; - example = []; - type = with lib.types; listOf anything; - description = '' - List of extensions via attrsets: - ```nix - # id - # figure out the id via: - # nix run github:tupakkatapa/mozid -- 'https://addons.mozilla.org/en/firefox/addon/ublock-origin' - "uBlock0@raymondhill.net" = { - # install url - install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; - # method https://mozilla.github.io/policy-templates/#extensionsettings - installation_mode = "force_installed"; - }; - ``` - ''; - }; - configuration = lib.mkOption { - default = { - EnableTrackingProtection = { - Value = true; - Locked = true; - Cryptomining = true; - Fingerprinting = true; - }; - DisablePocket = true; - CaptivePortal = false; - DisableFirefoxStudies = true; - DisableTelemetry = true; - NoDefaultBookmarks = true; - PasswordManagerEnabled = false; - FirefoxHome = { - Search = true; - Pocket = false; - Snippets = false; - TopSites = true; - Highlights = false; - }; - UserMessaging = { - ExtensionRecommendations = false; - SkipOnboarding = true; - }; - "3rdparty".Extensions = { - "addon@darkreader.org" = { - theme = { - darkSchemeBackgroundColor = "#${scheme.base00}"; - darkSchemeTextColor = "#${scheme.base05}"; - }; - previewNewDesign = true; - }; - }; - }; - example = {}; - type = with lib.types; attrsOf anything; - description = "Zen policy configuration. See https://mozilla.github.io/policy-templates for more information."; - }; - profiles = lib.mkOption { - default = [ - { - name = "${config.conf.username}"; - value = { - settings = { - "zen.view.compact.hide-tabbar" = false; - "zen.view.compact.hide-toolbar" = true; - "zen.view.sidebar-expanded" = false; - "zen.view.use-single-toolbar" = false; - "zen.view.welcome-screen.seen" = true; - "zen.theme.accent-color" = "#b4bbff"; - "extensions.autoDisableScopes" = 0; - "cookiebanners.service.mode" = 2; - }; - isDefault = true; - id = 0; - }; - } - { - name = "special"; - value = { - settings = { - "zen.view.compact.hide-tabbar" = false; - "zen.view.compact.hide-toolbar" = true; - "zen.view.sidebar-expanded" = false; - "zen.view.use-single-toolbar" = false; - "zen.view.welcome-screen.seen" = true; - "zen.theme.accent-color" = "#b4bbff"; - "extensions.autoDisableScopes" = 0; - }; - isDefault = false; - id = 1; - }; - } - ]; - example = [ - { - name = "custom"; - value = { - settings = { - extensions.autoDisableScopes = 0; - }; - extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader]; - isDefault = true; - id = 0; - }; - } - ]; - type = with lib.types; listOf (attrsOf anything); - description = "Zen profiles"; - }; - }; - config = lib.mkIf (config.mods.browser.zen.enable || config.mods.homePackages.browser == "zen") ( - lib.optionalAttrs (options ? home.packages) { - programs.zen-browser = { - enable = true; - package = - pkgs.wrapFirefox - inputs.zen-browser.packages.${system}.zen-browser-unwrapped - { - pname = "zen-browser"; - extraPolicies = - config.mods.browser.zen.configuration - // { - ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} config.mods.browser.zen.extensions; - }; - }; - profiles = builtins.listToAttrs config.mods.browser.zen.profiles; - }; - } - ); -} +# credits to Voronind for darkreader config https://github.com/voronind-com/nix/blob/main/home/program/firefox/default.nix +{ + lib, + config, + options, + inputs, + stable, + system, + pkgs, + ... +}: let + # at time of using this here, stylix might not be evaluated yet + # hence ensure it is by using base16 mkSchemeAttrs + base16 = pkgs.callPackage inputs.base16.lib {}; + scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; + name = "zen"; +in { + imports = [ + (import ./ffextensions.nix + {inherit lib stable pkgs name;}) + ]; + options.mods.browser.${name} = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables the zen browser"; + }; + configuration = lib.mkOption { + default = { + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + CaptivePortal = false; + DisableFirefoxStudies = true; + DisableTelemetry = true; + NoDefaultBookmarks = true; + PasswordManagerEnabled = false; + FirefoxHome = { + Search = true; + Pocket = false; + Snippets = false; + TopSites = true; + Highlights = false; + }; + UserMessaging = { + ExtensionRecommendations = false; + SkipOnboarding = true; + }; + "3rdparty".Extensions = { + "addon@darkreader.org" = { + theme = { + darkSchemeBackgroundColor = "#${scheme.base00}"; + darkSchemeTextColor = "#${scheme.base05}"; + }; + previewNewDesign = true; + }; + }; + }; + example = {}; + type = with lib.types; attrsOf anything; + description = "Zen policy configuration. See https://mozilla.github.io/policy-templates for more information."; + }; + profiles = lib.mkOption { + default = [ + { + name = "${config.conf.username}"; + value = { + settings = { + "zen.view.compact.hide-tabbar" = false; + "zen.view.compact.hide-toolbar" = true; + "zen.view.sidebar-expanded" = false; + "zen.view.use-single-toolbar" = false; + "zen.view.welcome-screen.seen" = true; + "zen.theme.accent-color" = "#b4bbff"; + "extensions.autoDisableScopes" = 0; + "cookiebanners.service.mode" = 2; + }; + isDefault = true; + id = 0; + }; + } + { + name = "special"; + value = { + settings = { + "zen.view.compact.hide-tabbar" = false; + "zen.view.compact.hide-toolbar" = true; + "zen.view.sidebar-expanded" = false; + "zen.view.use-single-toolbar" = false; + "zen.view.welcome-screen.seen" = true; + "zen.theme.accent-color" = "#b4bbff"; + "extensions.autoDisableScopes" = 0; + }; + isDefault = false; + id = 1; + }; + } + ]; + example = [ + { + name = "custom"; + value = { + settings = { + extensions.autoDisableScopes = 0; + }; + extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader]; + isDefault = true; + id = 0; + }; + } + ]; + type = with lib.types; listOf (attrsOf anything); + description = "Zen profiles"; + }; + }; + config = lib.mkIf (config.mods.browser.zen.enable || config.mods.homePackages.browser == "zen") ( + lib.optionalAttrs (options ? home.packages) { + programs.zen-browser = { + enable = true; + package = + pkgs.wrapFirefox + inputs.zen-browser.packages.${system}.zen-browser-unwrapped + { + pname = "zen-browser"; + extraPolicies = + config.mods.browser.zen.configuration + // { + ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} config.mods.browser.zen.extensions; + }; + }; + profiles = builtins.listToAttrs config.mods.browser.zen.profiles; + }; + } + ); +} From f4e47cbf97f5fbb8d0955d67a065e21d256091f3 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 11 May 2025 13:13:10 +0200 Subject: [PATCH 256/330] chore: snake_case to camelCase --- docs/default.nix | 6 +++--- docs/src/README.md | 12 ++++++------ example/flake.nix | 2 +- flake.nix | 2 +- lib/default.nix | 6 +++--- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/default.nix b/docs/default.nix index 65a0659..8b3c289 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -1,7 +1,7 @@ # with friendly help by stylix: https://github.com/danth/stylix/blob/master/docs/default.nix { pkgs, - build_systems, + buildSystems, lib, ... }: let @@ -13,7 +13,7 @@ summaryAppend = name: '' echo "- [${name}](${name}.md)" >> src/SUMMARY.md ''; - system = (build_systems {root = ../example/.;})."example".options; + system = (buildSystems {root = ../example/.;})."example".options; makeOptionsDocPrograms = names: pkgs.nixosOptionsDoc {options = lib.attrByPath (lib.splitString "." names) null system.mods;}; conf = makeOptionsDoc system.conf; basePath = ../modules/programs; @@ -39,7 +39,7 @@ filteredNames = builtins.filter (names: !(lib.strings.hasInfix "default" names)) ( map (name: lib.strings.removeSuffix ".nix" name) (lib.lists.flatten (pathToStrings basePath "")) ); - deduplicatedNames = map (name: lib.strings.splitString "." name |> lib.lists.unique |> lib.strings.concatStringsSep "." ) filteredNames; + deduplicatedNames = map (name: lib.strings.splitString "." name |> lib.lists.unique |> lib.strings.concatStringsSep ".") filteredNames; mods = map makeOptionsDocPrograms deduplicatedNames; docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists deduplicatedNames mods)); summary = lib.strings.concatStringsSep " " (map summaryAppend deduplicatedNames); diff --git a/docs/src/README.md b/docs/src/README.md index d5f1a80..fabdf0b 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -26,7 +26,7 @@ dashNix = { You can then configure your systems in your flake outputs with a provided library command: ```nix -nixosConfigurations = inputs.dashNix.dashNixLib.build_systems { root = ./.; }; +nixosConfigurations = inputs.dashNix.dashNixLib.buildSystems { root = ./.; }; ``` This command will build each system that is placed within the hosts/ directory. @@ -132,7 +132,7 @@ After logging in the first time, your password will be set to "firstlogin", plea ## Nixos and Home-manager Modules -You can add additional modules or remove all of them by overriding parameters to the build_systems command: +You can add additional modules or remove all of them by overriding parameters to the buildSystems command: ```nix nixosConfigurations = @@ -150,7 +150,7 @@ nixosConfigurations = home = []; } in - inputs.dashNix.dashNixLib.build_systems { root = ./.; inherit mods additionalMods; }; + inputs.dashNix.dashNixLib.buildSystems { root = ./.; inherit mods additionalMods; }; ``` ## Additional Inputs @@ -164,7 +164,7 @@ nixosConfigurations = something.url = "yoururl" } in - inputs.dashNix.dashNixLib.build_systems { root = ./.; inherit additionalInputs; }; + inputs.dashNix.dashNixLib.buildSystems { root = ./.; inherit additionalInputs; }; ``` ## Stable/Unstable @@ -174,12 +174,12 @@ This can be done with the overridePkgs flag for the lib function: ```nix nixosConfigurations = - inputs.dashNix.dashNixLib.build_systems { + inputs.dashNix.dashNixLib.buildSystems { root = ./stable; inherit additionalInputs; overridePkgs = true; } - // inputs.dashNix.dashNixLib.build_systems { + // inputs.dashNix.dashNixLib.buildSystems { root = ./unstable; inherit additionalInputs; }; diff --git a/example/flake.nix b/example/flake.nix index 3e7cb65..640ee54 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -14,7 +14,7 @@ }; outputs = {...} @ inputs: { - nixosConfigurations = inputs.dashNix.dashNixLib.build_systems {root = ./.;}; + nixosConfigurations = inputs.dashNix.dashNixLib.buildSystems {root = ./.;}; }; nixConfig = { diff --git a/flake.nix b/flake.nix index 6290e63..154187a 100644 --- a/flake.nix +++ b/flake.nix @@ -119,7 +119,7 @@ pkgs = unstable; system = currentSystem; lib = inputs.unstable.lib; - build_systems = dashNixLib.build_systems; + buildSystems = dashNixLib.buildSystems; }; dashNixInputs = inputs; stablePkgs = stable; diff --git a/lib/default.nix b/lib/default.nix index 2cdc15a..79bc9f4 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -9,7 +9,7 @@ }: { /* * - # build_systems + # buildSystems Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. @@ -24,7 +24,7 @@ # Example usage :::{.example} ```nix - nixosConfigurations = build_systems { root = ./.; }; + nixosConfigurations = buildSystems { root = ./.; }; ``` ::: */ @@ -35,7 +35,7 @@ # ); # in - build_systems = { + buildSystems = { root, additionalMods ? { nixos = []; From 9cc9955425a570c593fe4112e78383abed01ec22 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 11 May 2025 13:57:38 +0200 Subject: [PATCH 257/330] chore: cleanup all files --- base/common_hardware.nix | 350 ++--- base/env.nix | 48 +- base/xkb_layout.nix | 46 +- docs/src/README.md | 72 +- example/hosts/example/configuration.nix | 105 +- flake.nix | 253 ++-- home/common.nix | 82 +- home/default.nix | 108 +- home/themes/firefoxTheme.nix | 58 +- lib/default.nix | 290 ++--- .../ffextensions.nix => lib/foxextensions.nix | 13 +- lib/importPkgs.nix | 17 + modules/conf.nix | 372 +++--- modules/programs/anyrun.nix | 144 +++ modules/programs/basePackages.nix | 259 ++-- modules/programs/bluetooth.nix | 5 +- modules/programs/browser/firefox.nix | 6 +- modules/programs/browser/librewolf.nix | 6 +- modules/programs/browser/zen.nix | 280 ++-- modules/programs/coding.nix | 1135 +++++++++-------- modules/programs/containers.nix | 5 +- modules/programs/default.nix | 102 +- modules/programs/fancontrol.nix | 72 +- modules/programs/fastfetch.nix | 93 +- modules/programs/gaming.nix | 23 +- modules/programs/gpu.nix | 10 +- modules/programs/greetd.nix | 21 +- .../programs/{hyprland => hypr}/default.nix | 2 - .../programs/{hyprland => hypr}/hyprland.nix | 852 +++++++------ modules/programs/hypr/hyprlock.nix | 61 + modules/programs/hypr/hyprpaper.nix | 36 + modules/programs/hyprland/anyrun.nix | 144 --- modules/programs/hyprland/hyprlock.nix | 58 - modules/programs/hyprland/hyprpaper.nix | 38 - modules/programs/{hyprland => }/ironbar.nix | 271 ++-- modules/programs/keepassxc.nix | 71 +- modules/programs/kitty.nix | 130 +- modules/programs/mime.nix | 9 +- modules/programs/ncspot.nix | 17 +- modules/programs/starship.nix | 3 +- modules/programs/stylix.nix | 9 +- modules/programs/virtmanager.nix | 11 +- patches/darkreader.nix | 40 +- 43 files changed, 2893 insertions(+), 2834 deletions(-) rename modules/programs/browser/ffextensions.nix => lib/foxextensions.nix (85%) create mode 100644 lib/importPkgs.nix create mode 100644 modules/programs/anyrun.nix rename modules/programs/{hyprland => hypr}/default.nix (69%) rename modules/programs/{hyprland => hypr}/hyprland.nix (76%) create mode 100644 modules/programs/hypr/hyprlock.nix create mode 100644 modules/programs/hypr/hyprpaper.nix delete mode 100644 modules/programs/hyprland/anyrun.nix delete mode 100644 modules/programs/hyprland/hyprlock.nix delete mode 100644 modules/programs/hyprland/hyprpaper.nix rename modules/programs/{hyprland => }/ironbar.nix (50%) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 5f019da..5af3cba 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -1,175 +1,175 @@ -{ - mkDashDefault, - pkgs, - config, - lib, - hostName, - modulesPath, - ... -}: let - username = config.conf.username; -in { - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; - - wsl.enable = mkDashDefault config.conf.wsl; - - # Bootloader. - boot = lib.mkIf (!config.conf.wsl) { - consoleLogLevel = mkDashDefault 0; - - lanzaboote = lib.mkIf config.conf.secureBoot { - enable = mkDashDefault true; - pkiBundle = mkDashDefault "/var/lib/sbctl"; - settings.reboot-for-bitlocker = mkDashDefault true; - }; - - loader = { - systemd-boot = { - enable = - if config.conf.secureBoot - then lib.mkForce false - else if config.conf.useSystemdBootloader - then true - else mkDashDefault false; - configurationLimit = 5; - }; - efi.canTouchEfiVariables = mkDashDefault true; - }; - - kernelPackages = mkDashDefault pkgs.linuxPackages_latest; - initrd = { - verbose = mkDashDefault false; - availableKernelModules = [ - "nvme" - "xhci_pci" - "ahci" - "usbhid" - "usb_storage" - "sd_mod" - ]; - }; - kernelParams = - [ - ''resume="PARTLABEL=SWAP"'' - ''quiet'' - ''udev.log_level=3'' - ] - ++ config.conf.bootParams; - }; - - networking = { - useDHCP = mkDashDefault true; - networkmanager.enable = mkDashDefault true; - hostName = mkDashDefault hostName; - }; - - time = { - timeZone = mkDashDefault config.conf.timezone; - hardwareClockInLocalTime = mkDashDefault config.conf.systemLocalTime; - }; - - i18n.defaultLocale = mkDashDefault config.conf.locale; - - services = { - lorri.enable = mkDashDefault true; - xserver.enable = mkDashDefault true; - fstrim.enable = mkDashDefault true; - pulseaudio.enable = mkDashDefault false; - pipewire = { - enable = mkDashDefault true; - alsa = { - enable = mkDashDefault true; - support32Bit = mkDashDefault true; - }; - jack.enable = mkDashDefault true; - pulse.enable = mkDashDefault true; - }; - }; - - nixpkgs.hostPlatform = mkDashDefault config.conf.system; - nix = { - gc = { - automatic = mkDashDefault true; - dates = mkDashDefault "weekly"; - options = mkDashDefault "--delete-older-than 7d --delete-generations +5"; - }; - settings = { - trusted-users = [username]; - auto-optimise-store = mkDashDefault true; - - builders-use-substitutes = mkDashDefault true; - - substituters = [ - "https://chaotic-nyx.cachix.org/" - ]; - - trusted-substituters = [ - "https://hyprland.cachix.org" - "https://anyrun.cachix.org" - "https://oxipaste.cachix.org" - "https://oxinoti.cachix.org" - "https://oxishut.cachix.org" - "https://oxidash.cachix.org" - "https://oxicalc.cachix.org" - "https://hyprdock.cachix.org" - "https://reset.cachix.org" - ]; - - trusted-public-keys = [ - "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" - "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" - "oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc=" - "oxinoti.cachix.org-1:dvSoJl2Pjo5HMaNngdBbSaixK9BSf2N8gzjP2MdGvfc=" - "oxishut.cachix.org-1:axyAGF3XMh1IyMAW4UMbQCdMNovDH0KH6hqLLRJH8jU=" - "oxidash.cachix.org-1:5K2FNHp7AS8VF7LmQkJAUG/dm6UHCz4ngshBVbjFX30=" - "oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ=" - "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" - "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" - "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" - ]; - - experimental-features = mkDashDefault "nix-command flakes pipe-operators"; - }; - }; - - hardware = { - cpu.${config.conf.cpu}.updateMicrocode = - mkDashDefault - config.hardware.enableRedistributableFirmware; - }; - - security.rtkit.enable = mkDashDefault true; - - environment.variables = { - XDG_CACHE_HOME = mkDashDefault "$HOME/.cache"; - DIRENV_LOG_FORMAT = mkDashDefault ""; - QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct"; - }; - - # allows user change later on - users = { - mutableUsers = mkDashDefault true; - users.${username} = { - isNormalUser = mkDashDefault true; - description = mkDashDefault username; - 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 = mkDashDefault "firstlogin"; - }; - }; -} +{ + mkDashDefault, + pkgs, + config, + lib, + hostName, + modulesPath, + ... +}: let + username = config.conf.username; +in { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + wsl.enable = mkDashDefault config.conf.wsl; + + # Bootloader. + boot = lib.mkIf (!config.conf.wsl) { + consoleLogLevel = mkDashDefault 0; + + lanzaboote = lib.mkIf config.conf.secureBoot { + enable = mkDashDefault true; + pkiBundle = mkDashDefault "/var/lib/sbctl"; + settings.reboot-for-bitlocker = mkDashDefault true; + }; + + loader = { + systemd-boot = { + enable = + if config.conf.secureBoot + then lib.mkForce false + else if config.conf.useSystemdBootloader + then true + else mkDashDefault false; + configurationLimit = 5; + }; + efi.canTouchEfiVariables = mkDashDefault true; + }; + + kernelPackages = mkDashDefault pkgs.linuxPackages_latest; + initrd = { + verbose = mkDashDefault false; + availableKernelModules = [ + "nvme" + "xhci_pci" + "ahci" + "usbhid" + "usb_storage" + "sd_mod" + ]; + }; + kernelParams = + [ + ''resume="PARTLABEL=SWAP"'' + ''quiet'' + ''udev.log_level=3'' + ] + ++ config.conf.bootParams; + }; + + networking = { + useDHCP = mkDashDefault true; + networkmanager.enable = mkDashDefault true; + hostName = mkDashDefault hostName; + }; + + time = { + timeZone = mkDashDefault config.conf.timezone; + hardwareClockInLocalTime = mkDashDefault config.conf.systemLocalTime; + }; + + i18n.defaultLocale = mkDashDefault config.conf.locale; + + services = { + lorri.enable = mkDashDefault true; + xserver.enable = mkDashDefault true; + fstrim.enable = mkDashDefault true; + pulseaudio.enable = mkDashDefault false; + pipewire = { + enable = mkDashDefault true; + alsa = { + enable = mkDashDefault true; + support32Bit = mkDashDefault true; + }; + jack.enable = mkDashDefault true; + pulse.enable = mkDashDefault true; + }; + }; + + nixpkgs.hostPlatform = mkDashDefault config.conf.system; + nix = { + gc = { + automatic = mkDashDefault true; + dates = mkDashDefault "weekly"; + options = mkDashDefault "--delete-older-than 7d --delete-generations +5"; + }; + settings = { + trusted-users = [username]; + auto-optimise-store = mkDashDefault true; + + builders-use-substitutes = mkDashDefault true; + + substituters = [ + "https://chaotic-nyx.cachix.org/" + ]; + + trusted-substituters = [ + "https://hyprland.cachix.org" + "https://anyrun.cachix.org" + "https://oxipaste.cachix.org" + "https://oxinoti.cachix.org" + "https://oxishut.cachix.org" + "https://oxidash.cachix.org" + "https://oxicalc.cachix.org" + "https://hyprdock.cachix.org" + "https://reset.cachix.org" + ]; + + trusted-public-keys = [ + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" + "oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc=" + "oxinoti.cachix.org-1:dvSoJl2Pjo5HMaNngdBbSaixK9BSf2N8gzjP2MdGvfc=" + "oxishut.cachix.org-1:axyAGF3XMh1IyMAW4UMbQCdMNovDH0KH6hqLLRJH8jU=" + "oxidash.cachix.org-1:5K2FNHp7AS8VF7LmQkJAUG/dm6UHCz4ngshBVbjFX30=" + "oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ=" + "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" + "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" + "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" + ]; + + experimental-features = mkDashDefault "nix-command flakes pipe-operators"; + }; + }; + + hardware = { + cpu.${config.conf.cpu}.updateMicrocode = + mkDashDefault + config.hardware.enableRedistributableFirmware; + }; + + security.rtkit.enable = mkDashDefault true; + + environment.variables = { + XDG_CACHE_HOME = mkDashDefault "$HOME/.cache"; + DIRENV_LOG_FORMAT = mkDashDefault ""; + QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct"; + }; + + # allows user change later on + users = { + mutableUsers = mkDashDefault true; + users.${username} = { + isNormalUser = mkDashDefault true; + description = mkDashDefault username; + 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 = mkDashDefault "firstlogin"; + }; + }; +} diff --git a/base/env.nix b/base/env.nix index 7937030..0eaf068 100644 --- a/base/env.nix +++ b/base/env.nix @@ -1,24 +1,24 @@ -{ - mkDashDefault, - pkgs, - config, - lib, - ... -}: { - environment = { - variables = { - GSETTINGS_SCHEMA_DIR = mkDashDefault "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; - NEOVIDE_MAXIMIZED = mkDashDefault "0"; - GPG_TTY = mkDashDefault "$(tty)"; - EDITOR = mkDashDefault "neovide --no-fork"; - SUDO_EDITOR = mkDashDefault "neovide --no-fork"; - SCRIPTS = mkDashDefault "$HOME/.config/scripts"; - }; - sessionVariables = { - NIXOS_OZONE_WL = mkDashDefault "1"; - GOPATH = mkDashDefault "$HOME/.go"; - FLAKE = mkDashDefault config.conf.nixosConfigPath; - NH_FLAKE = mkDashDefault config.conf.nixosConfigPath; - }; - }; -} +{ + mkDashDefault, + pkgs, + config, + lib, + ... +}: { + environment = { + variables = { + GSETTINGS_SCHEMA_DIR = mkDashDefault "${pkgs.glib.getSchemaPath pkgs.gsettings-desktop-schemas}"; + NEOVIDE_MAXIMIZED = mkDashDefault "0"; + GPG_TTY = mkDashDefault "$(tty)"; + EDITOR = mkDashDefault "neovide --no-fork"; + SUDO_EDITOR = mkDashDefault "neovide --no-fork"; + SCRIPTS = mkDashDefault "$HOME/.config/scripts"; + }; + sessionVariables = { + NIXOS_OZONE_WL = mkDashDefault "1"; + GOPATH = mkDashDefault "$HOME/.go"; + FLAKE = mkDashDefault config.conf.nixosConfigPath; + NH_FLAKE = mkDashDefault config.conf.nixosConfigPath; + }; + }; +} diff --git a/base/xkb_layout.nix b/base/xkb_layout.nix index ce87b6e..b399693 100644 --- a/base/xkb_layout.nix +++ b/base/xkb_layout.nix @@ -1,23 +1,23 @@ -{ - mkDashDefault, - pkgs, - ... -}: let - layout = pkgs.writeText "enIntUmlaut" '' - xkb_symbols "enIntUmlaut" - { - include "us(basic)" - include "level3(ralt_switch)" - key { [ a, A, adiaeresis, Adiaeresis ] }; - key { [ o, O, odiaeresis, Odiaeresis ] }; - key { [ u, U, udiaeresis, Udiaeresis ] }; - }; - ''; -in { - environment.systemPackages = mkDashDefault [pkgs.xorg.xkbcomp]; - services.xserver.xkb.extraLayouts.enIntUmlaut = { - description = "US layout with 'umlaut'"; - languages = ["eng"]; - symbolsFile = "${layout}"; - }; -} +{ + mkDashDefault, + pkgs, + ... +}: let + layout = pkgs.writeText "enIntUmlaut" '' + xkb_symbols "enIntUmlaut" + { + include "us(basic)" + include "level3(ralt_switch)" + key { [ a, A, adiaeresis, Adiaeresis ] }; + key { [ o, O, odiaeresis, Odiaeresis ] }; + key { [ u, U, udiaeresis, Udiaeresis ] }; + }; + ''; +in { + environment.systemPackages = mkDashDefault [pkgs.xorg.xkbcomp]; + services.xserver.xkb.extraLayouts.enIntUmlaut = { + description = "US layout with 'umlaut'"; + languages = ["eng"]; + symbolsFile = "${layout}"; + }; +} diff --git a/docs/src/README.md b/docs/src/README.md index fabdf0b..6233312 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -1,4 +1,3 @@ -
![Logo of DashNix](logo.svg) @@ -7,7 +6,6 @@ An opinionated flake to bootstrap NixOS systems with default configurations for various programs and services from both NixOS and HomeManager which can be enabled, disabled, configured or replaced at will. - # Usage This flake is intended to be used as an input to your own NixOS configuration: @@ -57,26 +55,52 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang ```nix {config, ...}: { + # TODO denote important changes + # variables for system - # TODO important changes conf = { - # change this to your monitor and your pc name - # should be something like DP-1 - defaultMonitor = "YOURMONITOR"; - # width x height @ refreshrate - defaultMonitorMode = "1920x1080@60"; - # scale for your main monitor - defaultMonitorScale = "1"; - # your username + # TODO your username username = "YOURNAME"; # TODO only needed when you use intel -> amd is default # cpu = "intel"; + # TODO your xkb layout locale = "something.UTF-8"; + # TODO your timezone timezone = "CONTINENT/CITY"; }; + # modules mods = { # default disk config has root home boot and swap partition, overwrite if you want something different + sops.enable = false; + nextcloud.enable = false; + hypr.hyprland = { + # TODO monitor configuration for hyprland (hyprland is default) + # should be something like DP-1 + defaultMonitor = "YOURMONITOR"; + # width x height @ refreshrate + defaultMonitorMode = "1920x1080@60"; + # scale for your main monitor + defaultMonitorScale = "1"; + # additional configruation can be done as well + # customConfig = { + # monitor = [ + # # default + # "${config.mods.hypr.hyprland.defaultMonitor},${config.mods.hypr.hyprland.defaultMonitorMode},0x0,${config.mods.hypr.hyprland.defaultMonitorScale}" + # # second example monitor + # "DP-2,3440x1440@180,auto,1" + # # all others + # ",highrr,auto,1" + # ]; + # } + }; + gpu.nvidia.enable = true; + kdeConnect.enable = true; + # login manager: + # default is greetd + # greetd = { }; + # sddm = { }; + # gdm = { }; drives = { # default assumes ROOT, BOOT, HOME and SWAP labaled drives exist # for an example without HOME see below @@ -99,29 +123,9 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang # }; # } # ]; - # You can also use disko to format your disks on installation. + # You can also use disko to format your disks on installation. # Please refer to the Documentation about the drives module for an example. }; - sops.enable = false; - nextcloud.enable = false; - # default hyprland monitor config -> uncomment when necessary - # TODO: Add more monitors when needed - # hyprland.monitor = [ - # # default - # "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" - # # second example monitor - # "DP-2,3440x1440@180,auto,1" - # # all others - # ",highrr,auto,1" - # ]; - # or amd, whatever you have - gpu.nvidia.enable = true; - kdeConnect.enable = true; - # login manager: - # default is greetd - # greetd = { }; - # sddm = { }; - # gdm = { }; }; } ``` @@ -186,7 +190,7 @@ This can be done with the overridePkgs flag for the lib function: ``` You can now place your systems in the respective directories. -Keep in mind that the hosts directory will still need to exist in each variant. +Keep in mind that the hosts directory will still need to exist in each variant. E.g. stable/hosts/yourserver and unstable/hosts/yourdesktop # Installation @@ -212,7 +216,7 @@ Installation via manual configuration: ```sh sudo nixos-install --flake # --root #example -#nixos-install --flake ~/config#globi --root /mnt +#nixos-install --flake ~/config#globi --root /mnt ``` Installation via disko: diff --git a/example/hosts/example/configuration.nix b/example/hosts/example/configuration.nix index b08e1c0..3567918 100644 --- a/example/hosts/example/configuration.nix +++ b/example/hosts/example/configuration.nix @@ -1,71 +1,43 @@ {config, ...}: { + # TODO denote important changes + # variables for system - # TODO important changes conf = { - # change this to your monitor and your pc name - # should be something like DP-1 - defaultMonitor = "YOURMONITOR"; - # width x height @ refreshrate - defaultMonitorMode = "1920x1080@60"; - # scale for your main monitor - defaultMonitorScale = "1"; - # your username + # TODO your username username = "YOURNAME"; # TODO only needed when you use intel -> amd is default # cpu = "intel"; + # TODO your xkb layout locale = "something.UTF-8"; + # TODO your timezone timezone = "CONTINENT/CITY"; }; + # modules mods = { # default disk config has root home boot and swap partition, overwrite if you want something different - drives = { - # WARNING: Only do this when installing for the first time, as I am not sure if disko would format your disk - variant = "disko"; - # default assumes ROOT, BOOT, HOME and SWAP labaled drives exist - # for an example without HOME see below - #defaultDrives.enable = false; - #extraDrives = [ - # { - # name = "boot"; - # drive = { - # device = "/dev/disk/by-label/BOOT"; - # fsType = "vfat"; - # options = [ - # "rw" - # "fmask=0022" - # "dmask=0022" - # "noatime" - # ]; - # }; - # } - # { - # name = ""; - # drive = { - # device = "/dev/disk/by-label/ROOT"; - # fsType = "ext4"; - # options = [ - # "noatime" - # "nodiratime" - # "discard" - # ]; - # }; - # } - #]; - }; sops.enable = false; nextcloud.enable = false; - # default hyprland monitor config -> uncomment when necessary - # TODO: Add more monitors when needed - # hyprland.monitor = [ - # # default - # "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" - # # second example monitor - # "DP-2,3440x1440@180,auto,1" - # # all others - # ",highrr,auto,1" - # ]; - # or amd, whatever you have + hypr.hyprland = { + # TODO monitor configuration for hyprland (hyprland is default) + # should be something like DP-1 + defaultMonitor = "YOURMONITOR"; + # width x height @ refreshrate + defaultMonitorMode = "1920x1080@60"; + # scale for your main monitor + defaultMonitorScale = "1"; + # additional configruation can be done as well + # customConfig = { + # monitor = [ + # # default + # "${config.mods.hypr.hyprland.defaultMonitor},${config.mods.hypr.hyprland.defaultMonitorMode},0x0,${config.mods.hypr.hyprland.defaultMonitorScale}" + # # second example monitor + # "DP-2,3440x1440@180,auto,1" + # # all others + # ",highrr,auto,1" + # ]; + # } + }; gpu.nvidia.enable = true; kdeConnect.enable = true; # login manager: @@ -73,5 +45,30 @@ # greetd = { }; # sddm = { }; # gdm = { }; + drives = { + # default assumes ROOT, BOOT, HOME and SWAP labaled drives exist + # for an example without HOME see below + # defaultDrives.enable = false; + # extraDrives = [ + # { + # name = "boot"; + # drive = { + # device = "/dev/disk/by-label/BOOT"; + # fsType = "vfat"; + # options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; + # }; + # } + # { + # name = ""; + # drive = { + # device = "/dev/disk/by-label/ROOT"; + # fsType = "ext4"; + # options = [ "noatime" "nodiratime" "discard" ]; + # }; + # } + # ]; + # You can also use disko to format your disks on installation. + # Please refer to the Documentation about the drives module for an example. + }; }; } diff --git a/flake.nix b/flake.nix index 154187a..893527f 100644 --- a/flake.nix +++ b/flake.nix @@ -1,130 +1,123 @@ -{ - description = "DashNix"; - - inputs = { - unstable.url = "github:NixOs/nixpkgs/nixos-unstable"; - stable.url = "github:NixOs/nixpkgs/nixos-24.11"; - nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; - nur.url = "github:nix-community/NUR"; - lanzaboote = { - url = "github:nix-community/lanzaboote/v0.4.2"; - inputs.nixpkgs.follows = "unstable"; - }; - - home-manager = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "unstable"; - }; - - sops-nix.url = "github:Mic92/sops-nix"; - - Hyprspace = { - url = "github:KZDKM/Hyprspace"; - inputs.hyprland.follows = "hyprland"; - }; - - hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; - - ironbar = { - url = "github:JakeStanger/ironbar"; - inputs.nixpkgs.follows = "unstable"; - }; - - zen-browser.url = "github:youwen5/zen-browser-flake"; - - # TODO move to upstream repository after merged nix flake pr - fancontrol.url = "git+https://github.com/DashieTM/fancontrol-gui?ref=nix-flake"; - - stylix.url = "github:danth/stylix"; - base16.url = "github:SenchoPens/base16.nix"; - disko.url = "github:nix-community/disko/latest"; - - anyrun.url = "github:Kirottu/anyrun"; - oxicalc.url = "github:Xetibo/OxiCalc"; - oxishut.url = "github:Xetibo/OxiShut"; - oxinoti.url = "github:Xetibo/OxiNoti"; - oxidash.url = "github:Xetibo/OxiDash"; - oxipaste.url = "github:Xetibo/OxiPaste"; - oxirun.url = "github:Xetibo/OxiRun"; - hyprdock.url = "github:Xetibo/hyprdock"; - reset.url = "github:Xetibo/ReSet"; - reset-plugins.url = "github:Xetibo/ReSet-Plugins"; - - # absolute insanity - chaoticNyx.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; - - dashvim = { - url = "github:Xetibo/DashVim"; - }; - }; - - outputs = {self, ...} @ inputs: let - currentSystem = "x86_64-linux"; - permittedPackages = [ - "olm-3.2.16" - # well done dotnet... - # this is just for omnisharp - "dotnet-core-combined" - "dotnet-wrapped-combined" - "dotnet-combined" - "dotnet-sdk-6.0.428" - "dotnet-sdk-wrapped-6.0.428" - "dotnet-sdk-6.0.136" - "dotnet-sdk-wrapped-6.0.136" - "dotnet-sdk-7.0.120" - "dotnet-sdk-wrapped-7.0.120" - "dotnet-sdk-7.0.410" - "dotnet-sdk-wrapped-7.0.410" - "jitsi-meet-1.0.8043" - "nextcloud-27.1.11" - ]; - stable = import inputs.stable { - system = currentSystem; - config = { - allowUnfree = true; - permittedInsecurePackages = permittedPackages; - }; - overlays = [ - inputs.nur.overlays.default - inputs.chaoticNyx.overlays.default - ]; - }; - unstable = import inputs.unstable { - system = currentSystem; - config = { - allowUnsupportedSystem = true; - permittedInsecurePackages = permittedPackages; - # Often happens with neovim, this should not block everything. - allowBroken = true; - allowUnfree = true; - }; - overlays = [ - inputs.nur.overlays.default - inputs.chaoticNyx.overlays.default - ]; - }; - in rec { - dashNixLib = import ./lib { - inherit - self - inputs - unstable - stable - ; - system = currentSystem; - lib = inputs.unstable.lib; - }; - docs = import ./docs { - inherit inputs; - pkgs = unstable; - system = currentSystem; - lib = inputs.unstable.lib; - buildSystems = dashNixLib.buildSystems; - }; - dashNixInputs = inputs; - stablePkgs = stable; - unstablePkgs = unstable; - modules = ./modules; - iso = dashNixLib.buildIso.config.system.build.isoImage; - }; -} +{ + description = "DashNix"; + + inputs = { + unstable.url = "github:NixOs/nixpkgs/nixos-unstable"; + stable.url = "github:NixOs/nixpkgs/nixos-24.11"; + nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; + nur.url = "github:nix-community/NUR"; + lanzaboote = { + url = "github:nix-community/lanzaboote/v0.4.2"; + inputs.nixpkgs.follows = "unstable"; + }; + + # Darkreader requires es20, hence a stable pin + pkgsDarkreader.url = "github:NixOs/nixpkgs/nixos-24.11"; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "unstable"; + }; + + sops-nix.url = "github:Mic92/sops-nix"; + + Hyprspace = { + url = "github:KZDKM/Hyprspace"; + inputs.hyprland.follows = "hyprland"; + }; + + hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; + + ironbar = { + url = "github:JakeStanger/ironbar"; + inputs.nixpkgs.follows = "unstable"; + }; + + zen-browser.url = "github:youwen5/zen-browser-flake"; + + # TODO move to upstream repository after merged nix flake pr + fancontrol.url = "git+https://github.com/DashieTM/fancontrol-gui?ref=nix-flake"; + + stylix.url = "github:danth/stylix"; + base16.url = "github:SenchoPens/base16.nix"; + disko.url = "github:nix-community/disko/latest"; + + anyrun.url = "github:Kirottu/anyrun"; + oxicalc.url = "github:Xetibo/OxiCalc"; + oxishut.url = "github:Xetibo/OxiShut"; + oxinoti.url = "github:Xetibo/OxiNoti"; + oxidash.url = "github:Xetibo/OxiDash"; + oxipaste.url = "github:Xetibo/OxiPaste"; + oxirun.url = "github:Xetibo/OxiRun"; + hyprdock.url = "github:Xetibo/hyprdock"; + reset.url = "github:Xetibo/ReSet"; + reset-plugins.url = "github:Xetibo/ReSet-Plugins"; + + # absolute insanity + chaoticNyx.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; + + dashvim = { + url = "github:Xetibo/DashVim"; + }; + }; + + outputs = {self, ...} @ inputs: let + currentSystem = "x86_64-linux"; + permittedPackages = [ + "olm-3.2.16" + # well done dotnet... + # this is just for omnisharp + "dotnet-core-combined" + "dotnet-wrapped-combined" + "dotnet-combined" + "dotnet-sdk-6.0.428" + "dotnet-sdk-wrapped-6.0.428" + "dotnet-sdk-6.0.136" + "dotnet-sdk-wrapped-6.0.136" + "dotnet-sdk-7.0.120" + "dotnet-sdk-wrapped-7.0.120" + "dotnet-sdk-7.0.410" + "dotnet-sdk-wrapped-7.0.410" + "jitsi-meet-1.0.8043" + "nextcloud-27.1.11" + ]; + stable = import ./lib/importPkgs.nix { + inherit inputs permittedPackages currentSystem; + pkgs = inputs.stable; + }; + unstable = import ./lib/importPkgs.nix { + inherit inputs permittedPackages currentSystem; + pkgs = inputs.unstable; + }; + pkgsDarkreader = import ./lib/importPkgs.nix { + inherit inputs permittedPackages currentSystem; + pkgs = inputs.pkgsDarkreader; + }; + in rec { + dashNixLib = import ./lib { + inherit + self + inputs + unstable + stable + ; + dashNixAdditionalProps = { + inherit pkgsDarkreader; + }; + system = currentSystem; + lib = inputs.unstable.lib; + }; + docs = import ./docs { + inherit inputs; + pkgs = unstable; + system = currentSystem; + lib = inputs.unstable.lib; + buildSystems = dashNixLib.buildSystems; + }; + dashNixInputs = inputs; + stablePkgs = stable; + unstablePkgs = unstable; + modules = ./modules; + iso = dashNixLib.buildIso.config.system.build.isoImage; + }; +} diff --git a/home/common.nix b/home/common.nix index 11be1e2..1a3ccf3 100644 --- a/home/common.nix +++ b/home/common.nix @@ -1,41 +1,41 @@ -{ - mkDashDefault, - config, - lib, - ... -}: let - username = config.conf.username; -in { - manual = { - html.enable = mkDashDefault false; - json.enable = mkDashDefault false; - manpages.enable = mkDashDefault false; - }; - - fonts.fontconfig.enable = mkDashDefault true; - - home = { - username = mkDashDefault username; - homeDirectory = mkDashDefault "/home/${username}"; - sessionPath = ["$HOME/.cargo/bin"]; - - enableNixpkgsReleaseCheck = mkDashDefault false; - sessionVariables = { - GOROOT = mkDashDefault "$HOME/.go"; - QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct"; - }; - - keyboard = mkDashDefault null; - }; - - programs.nix-index = { - enable = mkDashDefault true; - enableFishIntegration = mkDashDefault true; - }; - - nix = { - extraOptions = lib.mkIf (config ? sops.secrets && config.sops.secrets ? access.path) '' - !include ${config.sops.secrets.access.path} - ''; - }; -} +{ + mkDashDefault, + config, + lib, + ... +}: let + username = config.conf.username; +in { + manual = { + html.enable = mkDashDefault false; + json.enable = mkDashDefault false; + manpages.enable = mkDashDefault false; + }; + + fonts.fontconfig.enable = mkDashDefault true; + + home = { + username = mkDashDefault username; + homeDirectory = mkDashDefault "/home/${username}"; + sessionPath = ["$HOME/.cargo/bin"]; + + enableNixpkgsReleaseCheck = mkDashDefault false; + sessionVariables = { + GOROOT = mkDashDefault "$HOME/.go"; + QT_QPA_PLATFORMTHEME = mkDashDefault "qt5ct"; + }; + + keyboard = mkDashDefault null; + }; + + programs.nix-index = { + enable = mkDashDefault true; + enableFishIntegration = mkDashDefault true; + }; + + nix = { + extraOptions = lib.mkIf (config ? sops.secrets && config.sops.secrets ? access.path) '' + !include ${config.sops.secrets.access.path} + ''; + }; +} diff --git a/home/default.nix b/home/default.nix index af3d656..8b6d079 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,49 +1,59 @@ -{ - mkDashDefault, - additionalHomeConfig, - additionalHomeMods, - additionalInputs, - config, - homeMods, - inputs, - lib, - mod, - pkgs, - root, - alternativePkgs, - system, - stable, - unstable, - ... -}: { - xdg = { - portal.config.common.default = mkDashDefault "*"; - portal = { - enable = mkDashDefault true; - extraPortals = [pkgs.xdg-desktop-portal-gtk]; - }; - }; - home-manager = { - useGlobalPkgs = mkDashDefault true; - useUserPackages = mkDashDefault true; - extraSpecialArgs = { - inherit inputs root additionalInputs alternativePkgs system stable unstable; - mkDashDefault = import ../lib/override.nix {inherit lib;}; - }; - - users.${config.conf.username} = { - disabledModules = ["programs/anyrun.nix"]; - imports = - [ - ./common.nix - ./themes - ./sync.nix - ../lib/foxwrappers.nix - ] - ++ homeMods - ++ additionalHomeMods - ++ lib.optional (builtins.pathExists mod) mod - ++ lib.optional (builtins.pathExists additionalHomeConfig) additionalHomeConfig; - }; - }; -} +{ + mkDashDefault, + additionalHomeConfig, + additionalHomeMods, + additionalInputs, + dashNixAdditionalProps, + config, + homeMods, + inputs, + lib, + mod, + pkgs, + root, + alternativePkgs, + system, + stable, + unstable, + ... +}: { + xdg = { + portal.config.common.default = mkDashDefault "*"; + portal = { + enable = mkDashDefault true; + extraPortals = [pkgs.xdg-desktop-portal-gtk]; + }; + }; + home-manager = { + useGlobalPkgs = mkDashDefault true; + useUserPackages = mkDashDefault true; + extraSpecialArgs = { + inherit + inputs + root + additionalInputs + alternativePkgs + system + stable + unstable + dashNixAdditionalProps + ; + mkDashDefault = import ../lib/override.nix {inherit lib;}; + }; + + users.${config.conf.username} = { + disabledModules = ["programs/anyrun.nix"]; + imports = + [ + ./common.nix + ./themes + ./sync.nix + ../lib/foxwrappers.nix + ] + ++ homeMods + ++ additionalHomeMods + ++ lib.optional (builtins.pathExists mod) mod + ++ lib.optional (builtins.pathExists additionalHomeConfig) additionalHomeConfig; + }; + }; +} diff --git a/home/themes/firefoxTheme.nix b/home/themes/firefoxTheme.nix index 91c5804..c73f07c 100644 --- a/home/themes/firefoxTheme.nix +++ b/home/themes/firefoxTheme.nix @@ -289,37 +289,41 @@ } ''; browsername = config.mods.homePackages.browser; - profiles = - if config.mods.homePackages.browser == "firefox" then - config.mods.browser.firefox.profiles - else if config.mods.homePackages.browser == "zen" then - config.mods.browser.zen.profiles - else if config.mods.homePackages.browser == "librewolf" then - [{name = "default"; value = {};}] - else - []; + profiles = + if config.mods.homePackages.browser == "firefox" + then config.mods.browser.firefox.profiles + else if config.mods.homePackages.browser == "zen" + then config.mods.browser.zen.profiles + else if config.mods.homePackages.browser == "librewolf" + then [ + { + name = "default"; + value = {}; + } + ] + else []; profileNamesFn = builtins.catAttrs "name"; chromesFn = builtins.map ( name: - if (builtins.isString browsername) - then { - ".${browsername}/${name}/chrome/userContent.css" = { - text = userChrome; - }; + if (builtins.isString browsername) + then { + ".${browsername}/${name}/chrome/userContent.css" = { + text = userChrome; + }; - ".${browsername}/${name}/chrome/userChrome.css" = { - text = userContent; - }; - } - else {} + ".${browsername}/${name}/chrome/userChrome.css" = { + text = userContent; + }; + } + else {} ); moduleFn = lib.lists.foldr (attr1: attr2: attr1 // attr2) {}; - mkFirefoxTheme = (profiles: - profiles - |> profileNamesFn - |> chromesFn - |> moduleFn - ); -in - {home.file = mkFirefoxTheme profiles;} + mkFirefoxTheme = ( + profiles: + profiles + |> profileNamesFn + |> chromesFn + |> moduleFn + ); +in {home.file = mkFirefoxTheme profiles;} diff --git a/lib/default.nix b/lib/default.nix index 79bc9f4..40a924a 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,144 +1,146 @@ -{ - inputs, - lib, - unstable, - self, - stable, - system, - ... -}: { - /* - * - # buildSystems - - Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. - - A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. - - The second parameter is the root of your configuration, which should be ./. in most cases. - - `root` - - : the root path of your configuration - - # Example usage - :::{.example} - ```nix - nixosConfigurations = buildSystems { root = ./.; }; - ``` - ::: - */ - # let - # paths = builtins.readDir ; - # names = lib.lists.remove "default" ( - # map (name: lib.strings.removeSuffix ".nix" name) (lib.attrsets.mapAttrsToList (name: _: name) paths) - # ); - - # in - buildSystems = { - root, - additionalMods ? { - nixos = []; - home = []; - }, - mods ? { - nixos = [ - inputs.lanzaboote.nixosModules.lanzaboote - inputs.nixos-wsl.nixosModules.default - inputs.home-manager.nixosModules.home-manager - inputs.stylix.nixosModules.stylix - inputs.disko.nixosModules.disko - ../base - ../home - ../modules - ]; - home = [ - inputs.anyrun.homeManagerModules.default - inputs.ironbar.homeManagerModules.default - inputs.oxicalc.homeManagerModules.default - inputs.oxishut.homeManagerModules.default - inputs.oxinoti.homeManagerModules.default - inputs.oxidash.homeManagerModules.default - inputs.oxipaste.homeManagerModules.default - inputs.oxirun.homeManagerModules.default - inputs.hyprdock.homeManagerModules.default - inputs.hyprland.homeManagerModules.default - inputs.reset.homeManagerModules.default - inputs.sops-nix.homeManagerModules.sops - inputs.dashvim.homeManagerModules.dashvim - inputs.fancontrol.homeManagerModules.default - ../modules - ]; - }, - additionalInputs ? {}, - overridePkgs ? false, - ... - }: - builtins.listToAttrs ( - map - (name: { - name = name; - value = let - mod = root + /hosts/${name}/configuration.nix; - additionalNixosConfig = root + /hosts/${name}/hardware.nix; - additionalHomeConfig = root + /hosts/${name}/home.nix; - args = { - inherit - self - inputs - mod - additionalHomeConfig - system - root - stable - unstable - ; - pkgs = lib.mkForce ( - if overridePkgs - then stable - else unstable - ); - alternativePkgs = - if overridePkgs - then unstable - else stable; - hostName = name; - homeMods = mods.home; - additionalHomeMods = additionalMods.home; - additionalInputs = additionalInputs; - mkDashDefault = import ./override.nix {inherit lib;}; - }; - in - inputs.unstable.lib.nixosSystem { - modules = - [ - {_module.args = args;} - mod - ] - ++ mods.nixos - ++ additionalMods.nixos - ++ inputs.unstable.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig - ++ inputs.unstable.lib.optional (builtins.pathExists mod) mod; - }; - }) - ( - lib.lists.remove "" ( - lib.attrsets.mapAttrsToList (name: fType: - if fType == "directory" - then name - else "") ( - builtins.readDir (root + /hosts) - ) - ) - ) - ); - - buildIso = inputs.unstable.lib.nixosSystem { - specialArgs = { - inherit self inputs unstable; - }; - modules = [ - ../iso/configuration.nix - ]; - }; -} +{ + inputs, + lib, + unstable, + self, + stable, + system, + dashNixAdditionalProps ? {}, + ... +}: { + /* + * + # buildSystems + + Builds system given a list of system names which are placed within your hosts/ directory. Note that each system has its own directory in hosts/ as well. + + A minimal configuration requires the file configuration.nix within each system directory, this will be the base config that is used across both NisOS and home-manager, specific optional files can also be added, hardware.nix for NisOS configuration and home.nix for home-manager configuration. + + The second parameter is the root of your configuration, which should be ./. in most cases. + + `root` + + : the root path of your configuration + + # Example usage + :::{.example} + ```nix + nixosConfigurations = buildSystems { root = ./.; }; + ``` + ::: + */ + # let + # paths = builtins.readDir ; + # names = lib.lists.remove "default" ( + # map (name: lib.strings.removeSuffix ".nix" name) (lib.attrsets.mapAttrsToList (name: _: name) paths) + # ); + + # in + buildSystems = { + root, + additionalMods ? { + nixos = []; + home = []; + }, + mods ? { + nixos = [ + inputs.lanzaboote.nixosModules.lanzaboote + inputs.nixos-wsl.nixosModules.default + inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + inputs.disko.nixosModules.disko + ../base + ../home + ../modules + ]; + home = [ + inputs.anyrun.homeManagerModules.default + inputs.ironbar.homeManagerModules.default + inputs.oxicalc.homeManagerModules.default + inputs.oxishut.homeManagerModules.default + inputs.oxinoti.homeManagerModules.default + inputs.oxidash.homeManagerModules.default + inputs.oxipaste.homeManagerModules.default + inputs.oxirun.homeManagerModules.default + inputs.hyprdock.homeManagerModules.default + inputs.hyprland.homeManagerModules.default + inputs.reset.homeManagerModules.default + inputs.sops-nix.homeManagerModules.sops + inputs.dashvim.homeManagerModules.dashvim + inputs.fancontrol.homeManagerModules.default + ../modules + ]; + }, + additionalInputs ? {}, + overridePkgs ? false, + ... + }: + builtins.listToAttrs ( + map + (name: { + name = name; + value = let + mod = root + /hosts/${name}/configuration.nix; + additionalNixosConfig = root + /hosts/${name}/hardware.nix; + additionalHomeConfig = root + /hosts/${name}/home.nix; + args = { + inherit + self + inputs + mod + additionalHomeConfig + system + root + stable + unstable + additionalInputs + dashNixAdditionalProps + ; + pkgs = lib.mkForce ( + if overridePkgs + then stable + else unstable + ); + alternativePkgs = + if overridePkgs + then unstable + else stable; + hostName = name; + homeMods = mods.home; + additionalHomeMods = additionalMods.home; + mkDashDefault = import ./override.nix {inherit lib;}; + }; + in + inputs.unstable.lib.nixosSystem { + modules = + [ + {_module.args = args;} + mod + ] + ++ mods.nixos + ++ additionalMods.nixos + ++ inputs.unstable.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig + ++ inputs.unstable.lib.optional (builtins.pathExists mod) mod; + }; + }) + ( + lib.lists.remove "" ( + lib.attrsets.mapAttrsToList (name: fType: + if fType == "directory" + then name + else "") ( + builtins.readDir (root + /hosts) + ) + ) + ) + ); + + buildIso = inputs.unstable.lib.nixosSystem { + specialArgs = { + inherit self inputs unstable; + }; + modules = [ + ../iso/configuration.nix + ]; + }; +} diff --git a/modules/programs/browser/ffextensions.nix b/lib/foxextensions.nix similarity index 85% rename from modules/programs/browser/ffextensions.nix rename to lib/foxextensions.nix index 27b1598..48603de 100644 --- a/modules/programs/browser/ffextensions.nix +++ b/lib/foxextensions.nix @@ -1,6 +1,6 @@ { lib, - stable, + dashNixAdditionalProps, pkgs, name, ... @@ -24,9 +24,16 @@ in { (mkExtension "@react-devtools" "https://addons.mozilla.org/firefox/downloads/latest/react-devtools/latest.xpi") (mkExtension "extension@redux.devtools" "https://addons.mozilla.org/firefox/downloads/latest/reduxdevtools/latest.xpi") (mkExtension "private-relay@firefox.com" "https://addons.mozilla.org/firefox/downloads/latest/private-relay/latest.xpi") - (mkExtension "addon@darkreader.org" "file://${pkgs.callPackage ../../../patches/darkreader.nix {inherit lib stable;}}/latest.xpi") + (mkExtension "addon@darkreader.org" "file://${pkgs.callPackage ../patches/darkreader.nix {inherit lib dashNixAdditionalProps;}}/latest.xpi") + ]; + example = [ + { + "78272b6fa58f4a1abaac99321d503a20@proton.me" = { + install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/proton-pass/latest.xpi"; + installation_mode = "normal_installed"; + }; + } ]; - example = []; type = with lib.types; listOf anything; description = '' List of extensions via attrsets: diff --git a/lib/importPkgs.nix b/lib/importPkgs.nix new file mode 100644 index 0000000..5ce6aad --- /dev/null +++ b/lib/importPkgs.nix @@ -0,0 +1,17 @@ +{ + inputs, + currentSystem, + permittedPackages, + pkgs, +}: +import pkgs { + system = currentSystem; + config = { + allowUnfree = true; + permittedInsecurePackages = permittedPackages; + }; + overlays = [ + inputs.nur.overlays.default + inputs.chaoticNyx.overlays.default + ]; +} diff --git a/modules/conf.nix b/modules/conf.nix index 93ec67e..472e002 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -1,199 +1,173 @@ -{ - lib, - config, - options, - ... -}: { - options.conf = { - system = lib.mkOption { - default = "x86_64-linux"; - # no fisherprice unix support - type = with lib.types; (enum [ - "x86_64-linux" - "aarch64-linux" - "aarch64-linux-android" - ]); - example = "aarch64-linux"; - description = '' - System architecture. - ''; - }; - - systemLocalTime = lib.mkOption { - default = false; - example = true; - description = '' - System time for dualbooting - ''; - }; - - wsl = lib.mkOption { - default = false; - example = true; - description = '' - Runs Nix in wsl - ''; - }; - - secureBoot = lib.mkOption { - default = false; - example = true; - description = '' - enables secure boot. - Note: Secure boot is NOT reproducible - Here are the necessary steps: - + create your keys with sbctl -> sudo sbctl create-keys - + build with systemd once -> set this to false and build once - + build with secureBoot true - + verify that your keys are signed (note, only systemd and your generations should now be signed): sudo sbtcl verify - + enroll your keys (microsoft is necessary for windows dualboot support, leave it there): sudo sbctl enroll-keys --microsoft - + reboot with secureboot enabled - Note: Some motherboards have vendor specific keys for secure boot, this may not necessarily work with our self signed keys - You likely have to disable these vendor specific keys (example HP: sure boot) - ''; - }; - - useSystemdBootloader = lib.mkOption { - default = true; - example = false; - description = '' - use systemd bootloader. - ''; - }; - - cpu = lib.mkOption { - # TODO: how to enable arm? - default = "amd"; - type = with lib.types; (enum [ - "amd" - "intel" - ]); - example = "intel"; - description = '' - cpu microcode. - ''; - }; - - additionalBootKernalParams = lib.mkOption { - default = [ - "video=${config.conf.defaultMonitor}:${config.conf.defaultMonitorMode}" - ]; - example = []; - type = with lib.types; listOf str; - description = '' - additional kernelParams passed to bootloader - ''; - }; - - defaultMonitor = lib.mkOption { - default = ""; - example = "eDP-1"; - type = lib.types.str; - description = '' - main monitor - ''; - }; - - defaultMonitorMode = lib.mkOption { - default = ""; - example = "3440x1440@180"; - type = lib.types.str; - description = '' - main monitor mode: width x height @ refreshrate - ''; - }; - - defaultMonitorScale = lib.mkOption { - default = "1"; - example = "1.5"; - type = lib.types.str; - description = '' - main monitor scaling - ''; - }; - - bootParams = lib.mkOption { - default = []; - example = ["resume=something"]; - type = with lib.types; listOf str; - description = '' - Boot params - ''; - }; - - kernelOverride = lib.mkOption { - default = null; - type = with lib.types; nullOr package; - description = '' - kernel to be used - Has no examples as doc complains... - #example = pkgs.linuxPackages_xanmod_latest; - ''; - }; - - username = lib.mkOption { - default = "DashNix"; - example = "pingpang"; - type = lib.types.str; - description = '' - The username. - ''; - }; - - timezone = lib.mkOption { - default = "Europe/Zurich"; - example = "Europe/Berlin"; - type = lib.types.str; - description = '' - The timezone. - ''; - }; - - locale = lib.mkOption { - default = "en_US.UTF-8"; - example = "de_DE.UTF-8"; - type = lib.types.str; - description = '' - The locale. - ''; - }; - - nixosConfigPath = lib.mkOption { - default = "/home/${config.conf.username}/gits/nixos/."; - example = "yourpath/."; - type = lib.types.str; - description = '' - The path for your build command, you can then simply type rebuild to switch to a new configuration. - ''; - }; - - systemStateVersion = lib.mkOption { - example = "24.11"; - default = "23.05"; - type = lib.types.str; - description = '' - System state version - ''; - }; - homeStateVersion = lib.mkOption { - default = "24.11"; - example = "23.05"; - type = lib.types.str; - description = '' - Home state version - ''; - }; - }; - - config = - (lib.optionalAttrs (options ? system.stateVersion) { - boot = { - kernelPackages = lib.mkIf (config.conf.kernelOverride != null) config.conf.kernel; - kernelParams = config.conf.additionalBootKernalParams; - }; - system.stateVersion = config.conf.systemStateVersion; - }) - // (lib.optionalAttrs (options ? home.stateVersion) { - home.stateVersion = config.conf.homeStateVersion; - }); -} +{ + lib, + config, + options, + ... +}: { + options.conf = { + system = lib.mkOption { + default = "x86_64-linux"; + # no fisherprice unix support + type = with lib.types; (enum [ + "x86_64-linux" + "aarch64-linux" + "aarch64-linux-android" + ]); + example = "aarch64-linux"; + description = '' + System architecture. + ''; + }; + + systemLocalTime = lib.mkOption { + default = false; + example = true; + description = '' + System time for dualbooting + ''; + }; + + wsl = lib.mkOption { + default = false; + example = true; + description = '' + Runs Nix in wsl + ''; + }; + + secureBoot = lib.mkOption { + default = false; + example = true; + description = '' + enables secure boot. + Note: Secure boot is NOT reproducible + Here are the necessary steps: + + create your keys with sbctl -> sudo sbctl create-keys + + build with systemd once -> set this to false and build once + + build with secureBoot true + + verify that your keys are signed (note, only systemd and your generations should now be signed): sudo sbtcl verify + + enroll your keys (microsoft is necessary for windows dualboot support, leave it there): sudo sbctl enroll-keys --microsoft + + reboot with secureboot enabled + Note: Some motherboards have vendor specific keys for secure boot, this may not necessarily work with our self signed keys + You likely have to disable these vendor specific keys (example HP: sure boot) + ''; + }; + + useSystemdBootloader = lib.mkOption { + default = true; + example = false; + description = '' + use systemd bootloader. + ''; + }; + + cpu = lib.mkOption { + # TODO: how to enable arm? + default = "amd"; + type = with lib.types; (enum [ + "amd" + "intel" + ]); + example = "intel"; + description = '' + cpu microcode. + ''; + }; + + additionalBootKernalParams = lib.mkOption { + default = [ + # TODO test if needed + #"video=${config.conf.defaultMonitor}:${config.conf.defaultMonitorMode}" + ]; + example = []; + type = with lib.types; listOf str; + description = '' + additional kernelParams passed to bootloader + ''; + }; + + bootParams = lib.mkOption { + default = []; + example = ["resume=something"]; + type = with lib.types; listOf str; + description = '' + Boot params + ''; + }; + + kernelOverride = lib.mkOption { + default = null; + type = with lib.types; nullOr package; + description = '' + kernel to be used + Has no examples as doc complains... + #example = pkgs.linuxPackages_xanmod_latest; + ''; + }; + + username = lib.mkOption { + default = "DashNix"; + example = "pingpang"; + type = lib.types.str; + description = '' + The username. + ''; + }; + + timezone = lib.mkOption { + default = "Europe/Zurich"; + example = "Europe/Berlin"; + type = lib.types.str; + description = '' + The timezone. + ''; + }; + + locale = lib.mkOption { + default = "en_US.UTF-8"; + example = "de_DE.UTF-8"; + type = lib.types.str; + description = '' + The locale. + ''; + }; + + nixosConfigPath = lib.mkOption { + default = "/home/${config.conf.username}/gits/nixos/."; + example = "yourpath/."; + type = lib.types.str; + description = '' + The path for your build command, you can then simply type rebuild to switch to a new configuration. + ''; + }; + + systemStateVersion = lib.mkOption { + example = "24.11"; + default = "23.05"; + type = lib.types.str; + description = '' + System state version + ''; + }; + homeStateVersion = lib.mkOption { + default = "24.11"; + example = "23.05"; + type = lib.types.str; + description = '' + Home state version + ''; + }; + }; + + config = + (lib.optionalAttrs (options ? system.stateVersion) { + boot = { + kernelPackages = lib.mkIf (config.conf.kernelOverride != null) config.conf.kernel; + kernelParams = config.conf.additionalBootKernalParams; + }; + system.stateVersion = config.conf.systemStateVersion; + }) + // (lib.optionalAttrs (options ? home.stateVersion) { + home.stateVersion = config.conf.homeStateVersion; + }); +} diff --git a/modules/programs/anyrun.nix b/modules/programs/anyrun.nix new file mode 100644 index 0000000..46f4d5c --- /dev/null +++ b/modules/programs/anyrun.nix @@ -0,0 +1,144 @@ +{ + mkDashDefault, + lib, + config, + pkgs, + options, + inputs, + ... +}: { + options.mods.anyrun = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables anyrun"; + }; + useDefaultConfig = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use preconfigured anyrun config. + ''; + }; + customConfig = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = '' + Custom anyrun configuration. + Will be merged with default configuration if enabled. + ''; + }; + useDefaultCss = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use preconfigured anyrun css. + ''; + }; + customCss = lib.mkOption { + default = ''''; + example = '' + #window { + border-radius: none; + } + ''; + type = lib.types.lines; + description = '' + Custom anyrun css. + Will be merged with default css if enabled. + ''; + }; + }; + + config = lib.mkIf config.mods.anyrun.enable ( + lib.optionalAttrs (options ? home.packages) { + programs.anyrun = lib.mkForce { + enable = true; + config = + if config.mods.anyrun.useDefaultConfig + then + lib.mkMerge + [ + { + plugins = [ + inputs.anyrun.packages.${pkgs.system}.applications + inputs.anyrun.packages.${pkgs.system}.rink + inputs.anyrun.packages.${pkgs.system}.translate + inputs.anyrun.packages.${pkgs.system}.websearch + ]; + hideIcons = mkDashDefault false; + width = { + fraction = mkDashDefault 0.3; + }; + y = { + fraction = mkDashDefault 0.5; + }; + layer = mkDashDefault "overlay"; + hidePluginInfo = mkDashDefault true; + closeOnClick = mkDashDefault true; + } + config.mods.anyrun.customConfig + ] + else config.mods.anyrun.customConfig; + + extraCss = + if config.mods.anyrun.useDefaultCss + then + '' + #window { + border-radius: 10px; + background-color: transparent; + } + + box#main { + border-radius: 10px; + } + + list#main { + border-radius: 10px; + margin: 0px 10px 10px 10px; + } + + list#plugin { + border-radius: 10px; + } + + list#match { + border-radius: 10px; + } + + entry#entry { + border: 0; + border-radius: 10px; + margin: 10px 10px 0px 10px; + } + + label#match-desc { + font-size: 12px; + border-radius: 10px; + } + + label#match-title { + font-size: 12px; + border-radius: 10px; + } + + label#plugin { + font-size: 16px; + border-radius: 10px; + } + + * { + border-radius: 10px; + } + '' + + config.mods.anyrun.customCss + else config.mods.anyrun.customCss; + }; + } + ); +} diff --git a/modules/programs/basePackages.nix b/modules/programs/basePackages.nix index eb21428..4a2d157 100644 --- a/modules/programs/basePackages.nix +++ b/modules/programs/basePackages.nix @@ -1,128 +1,131 @@ -{ - mkDashDefault, - config, - lib, - options, - pkgs, - ... -}: { - options.mods = { - basePackages = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables default system packages. - ''; - }; - additionalPackages = lib.mkOption { - default = []; - example = [pkgs.openssl]; - type = with lib.types; listOf package; - description = '' - Additional packages to install. - Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. - ''; - }; - specialPrograms = lib.mkOption { - default = {}; - example = {}; - type = with lib.types; attrsOf anything; - description = '' - special program configuration to be added which require programs.something notation. - ''; - }; - specialServices = lib.mkOption { - default = {}; - example = {}; - type = with lib.types; attrsOf anything; - description = '' - special services configuration to be added which require an services.something notation. - ''; - }; - }; - }; - - config = lib.optionalAttrs (options ? environment.systemPackages) { - environment.systemPackages = - if config.mods.basePackages.enable - then - with pkgs; - [ - adwaita-icon-theme - dbus - dconf - direnv - glib - gnome.nixos-gsettings-overrides - gsettings-desktop-schemas - gtk-layer-shell - gtk3 - gtk4 - gtk4-layer-shell - hicolor-icon-theme - icon-library - kdePackages.breeze-icons - kdePackages.breeze - libsForQt5.breeze-qt5 - kdePackages.qtstyleplugin-kvantum - libsForQt5.qtstyleplugin-kvantum - libadwaita - libxkbcommon - alejandra - openssl - seahorse - upower - xorg.xkbutils - sbctl - ] - ++ config.mods.basePackages.additionalPackages - else config.mods.basePackages.additionalPackages; - - gtk.iconCache.enable = false; - services = - if config.mods.basePackages.enable - then - { - preload.enable = mkDashDefault true; - upower.enable = mkDashDefault true; - dbus = { - enable = mkDashDefault true; - }; - avahi = { - enable = mkDashDefault true; - nssmdns4 = mkDashDefault true; - openFirewall = mkDashDefault true; - }; - } - // config.mods.basePackages.specialServices - else config.mods.basePackages.specialServices; - - programs = - if config.mods.basePackages.enable - then - { - nix-ld = { - enable = mkDashDefault true; - libraries = with pkgs; [ - jdk - zlib - ]; - }; - direnv = { - package = mkDashDefault pkgs.direnv; - silent = mkDashDefault false; - loadInNixShell = mkDashDefault true; - direnvrcExtra = mkDashDefault ""; - nix-direnv = { - enable = mkDashDefault true; - package = mkDashDefault pkgs.nix-direnv; - }; - }; - gnupg.agent.enable = mkDashDefault true; - } - // config.mods.basePackages.specialPrograms - else config.mods.basePackages.specialPrograms; - }; -} +{ + mkDashDefault, + config, + lib, + options, + pkgs, + ... +}: { + options.mods = { + basePackages = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables default system packages. + ''; + }; + additionalPackages = lib.mkOption { + default = []; + example = [pkgs.openssl]; + type = with lib.types; listOf package; + description = '' + Additional packages to install. + Note that these are installed even if base packages is disabled, e.g. you can also use this as the only packages to install. + ''; + }; + specialPrograms = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = '' + special program configuration to be added which require programs.something notation. + ''; + }; + specialServices = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = '' + special services configuration to be added which require an services.something notation. + ''; + }; + }; + }; + + config = lib.optionalAttrs (options ? environment.systemPackages) { + environment.systemPackages = + if config.mods.basePackages.enable + then + with pkgs; + [ + adwaita-icon-theme + dbus + dconf + direnv + glib + gnome.nixos-gsettings-overrides + gsettings-desktop-schemas + gtk-layer-shell + gtk3 + gtk4 + gtk4-layer-shell + hicolor-icon-theme + icon-library + kdePackages.breeze-icons + kdePackages.breeze + libsForQt5.breeze-qt5 + kdePackages.qtstyleplugin-kvantum + libsForQt5.qtstyleplugin-kvantum + libadwaita + libxkbcommon + alejandra + openssl + seahorse + upower + xorg.xkbutils + sbctl + ] + ++ config.mods.basePackages.additionalPackages + else config.mods.basePackages.additionalPackages; + + gtk.iconCache.enable = mkDashDefault false; + services = + if config.mods.basePackages.enable + then + { + preload.enable = mkDashDefault true; + upower.enable = mkDashDefault true; + dbus = { + enable = mkDashDefault true; + }; + avahi = { + enable = mkDashDefault true; + nssmdns4 = mkDashDefault true; + openFirewall = mkDashDefault true; + }; + } + // config.mods.basePackages.specialServices + else config.mods.basePackages.specialServices; + + programs = + if config.mods.basePackages.enable + then + lib.mkMerge + [ + { + nix-ld = { + enable = mkDashDefault true; + libraries = with pkgs; [ + jdk + zlib + ]; + }; + direnv = { + package = mkDashDefault pkgs.direnv; + silent = mkDashDefault false; + loadInNixShell = mkDashDefault true; + direnvrcExtra = mkDashDefault ""; + nix-direnv = { + enable = mkDashDefault true; + package = mkDashDefault pkgs.nix-direnv; + }; + }; + gnupg.agent.enable = mkDashDefault true; + } + config.mods.basePackages.specialPrograms + ] + else config.mods.basePackages.specialPrograms; + }; +} diff --git a/modules/programs/bluetooth.nix b/modules/programs/bluetooth.nix index e09b382..f0e2ef1 100644 --- a/modules/programs/bluetooth.nix +++ b/modules/programs/bluetooth.nix @@ -1,4 +1,5 @@ { + mkDashDefault, lib, config, options, @@ -18,8 +19,8 @@ config = lib.mkIf config.mods.bluetooth.enable ( lib.optionalAttrs (options ? hardware.bluetooth) { hardware.bluetooth = { - enable = true; - powerOnBoot = true; + enable = mkDashDefault true; + powerOnBoot = mkDashDefault true; }; } ); diff --git a/modules/programs/browser/firefox.nix b/modules/programs/browser/firefox.nix index f48f098..5a0abac 100644 --- a/modules/programs/browser/firefox.nix +++ b/modules/programs/browser/firefox.nix @@ -1,16 +1,16 @@ { lib, + dashNixAdditionalProps, config, options, pkgs, - stable, ... }: let name = "firefox"; in { imports = [ - (import ./ffextensions.nix - {inherit lib stable pkgs name;}) + (import ../../../lib/foxextensions.nix + {inherit lib dashNixAdditionalProps pkgs name;}) ]; options.mods.browser.${name} = { enable = lib.mkOption { diff --git a/modules/programs/browser/librewolf.nix b/modules/programs/browser/librewolf.nix index d0d77ac..79f67af 100644 --- a/modules/programs/browser/librewolf.nix +++ b/modules/programs/browser/librewolf.nix @@ -1,16 +1,16 @@ { lib, + dashNixAdditionalProps, config, options, pkgs, - stable, ... }: let name = "librewolf"; in { imports = [ - (import ./ffextensions.nix - {inherit lib stable pkgs name;}) + (import ../../../lib/foxextensions.nix + {inherit lib dashNixAdditionalProps pkgs name;}) ]; options.mods.browser.${name} = { enable = lib.mkOption { diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index 080a3cc..571edf3 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -1,140 +1,140 @@ -# credits to Voronind for darkreader config https://github.com/voronind-com/nix/blob/main/home/program/firefox/default.nix -{ - lib, - config, - options, - inputs, - stable, - system, - pkgs, - ... -}: let - # at time of using this here, stylix might not be evaluated yet - # hence ensure it is by using base16 mkSchemeAttrs - base16 = pkgs.callPackage inputs.base16.lib {}; - scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; - name = "zen"; -in { - imports = [ - (import ./ffextensions.nix - {inherit lib stable pkgs name;}) - ]; - options.mods.browser.${name} = { - enable = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = "Enables the zen browser"; - }; - configuration = lib.mkOption { - default = { - EnableTrackingProtection = { - Value = true; - Locked = true; - Cryptomining = true; - Fingerprinting = true; - }; - DisablePocket = true; - CaptivePortal = false; - DisableFirefoxStudies = true; - DisableTelemetry = true; - NoDefaultBookmarks = true; - PasswordManagerEnabled = false; - FirefoxHome = { - Search = true; - Pocket = false; - Snippets = false; - TopSites = true; - Highlights = false; - }; - UserMessaging = { - ExtensionRecommendations = false; - SkipOnboarding = true; - }; - "3rdparty".Extensions = { - "addon@darkreader.org" = { - theme = { - darkSchemeBackgroundColor = "#${scheme.base00}"; - darkSchemeTextColor = "#${scheme.base05}"; - }; - previewNewDesign = true; - }; - }; - }; - example = {}; - type = with lib.types; attrsOf anything; - description = "Zen policy configuration. See https://mozilla.github.io/policy-templates for more information."; - }; - profiles = lib.mkOption { - default = [ - { - name = "${config.conf.username}"; - value = { - settings = { - "zen.view.compact.hide-tabbar" = false; - "zen.view.compact.hide-toolbar" = true; - "zen.view.sidebar-expanded" = false; - "zen.view.use-single-toolbar" = false; - "zen.view.welcome-screen.seen" = true; - "zen.theme.accent-color" = "#b4bbff"; - "extensions.autoDisableScopes" = 0; - "cookiebanners.service.mode" = 2; - }; - isDefault = true; - id = 0; - }; - } - { - name = "special"; - value = { - settings = { - "zen.view.compact.hide-tabbar" = false; - "zen.view.compact.hide-toolbar" = true; - "zen.view.sidebar-expanded" = false; - "zen.view.use-single-toolbar" = false; - "zen.view.welcome-screen.seen" = true; - "zen.theme.accent-color" = "#b4bbff"; - "extensions.autoDisableScopes" = 0; - }; - isDefault = false; - id = 1; - }; - } - ]; - example = [ - { - name = "custom"; - value = { - settings = { - extensions.autoDisableScopes = 0; - }; - extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader]; - isDefault = true; - id = 0; - }; - } - ]; - type = with lib.types; listOf (attrsOf anything); - description = "Zen profiles"; - }; - }; - config = lib.mkIf (config.mods.browser.zen.enable || config.mods.homePackages.browser == "zen") ( - lib.optionalAttrs (options ? home.packages) { - programs.zen-browser = { - enable = true; - package = - pkgs.wrapFirefox - inputs.zen-browser.packages.${system}.zen-browser-unwrapped - { - pname = "zen-browser"; - extraPolicies = - config.mods.browser.zen.configuration - // { - ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} config.mods.browser.zen.extensions; - }; - }; - profiles = builtins.listToAttrs config.mods.browser.zen.profiles; - }; - } - ); -} +# credits to Voronind for darkreader config https://github.com/voronind-com/nix/blob/main/home/program/firefox/default.nix +{ + lib, + dashNixAdditionalProps, + config, + options, + inputs, + system, + pkgs, + ... +}: let + # at time of using this here, stylix might not be evaluated yet + # hence ensure it is by using base16 mkSchemeAttrs + base16 = pkgs.callPackage inputs.base16.lib {}; + scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; + name = "zen"; +in { + imports = [ + (import ../../../lib/foxextensions.nix + {inherit lib dashNixAdditionalProps pkgs name;}) + ]; + options.mods.browser.${name} = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables the zen browser"; + }; + configuration = lib.mkOption { + default = { + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + CaptivePortal = false; + DisableFirefoxStudies = true; + DisableTelemetry = true; + NoDefaultBookmarks = true; + PasswordManagerEnabled = false; + FirefoxHome = { + Search = true; + Pocket = false; + Snippets = false; + TopSites = true; + Highlights = false; + }; + UserMessaging = { + ExtensionRecommendations = false; + SkipOnboarding = true; + }; + "3rdparty".Extensions = { + "addon@darkreader.org" = { + theme = { + darkSchemeBackgroundColor = "#${scheme.base00}"; + darkSchemeTextColor = "#${scheme.base05}"; + }; + previewNewDesign = true; + }; + }; + }; + example = {}; + type = with lib.types; attrsOf anything; + description = "Zen policy configuration. See https://mozilla.github.io/policy-templates for more information."; + }; + profiles = lib.mkOption { + default = [ + { + name = "${config.conf.username}"; + value = { + settings = { + "zen.view.compact.hide-tabbar" = false; + "zen.view.compact.hide-toolbar" = true; + "zen.view.sidebar-expanded" = false; + "zen.view.use-single-toolbar" = false; + "zen.view.welcome-screen.seen" = true; + "zen.theme.accent-color" = "#b4bbff"; + "extensions.autoDisableScopes" = 0; + "cookiebanners.service.mode" = 2; + }; + isDefault = true; + id = 0; + }; + } + { + name = "special"; + value = { + settings = { + "zen.view.compact.hide-tabbar" = false; + "zen.view.compact.hide-toolbar" = true; + "zen.view.sidebar-expanded" = false; + "zen.view.use-single-toolbar" = false; + "zen.view.welcome-screen.seen" = true; + "zen.theme.accent-color" = "#b4bbff"; + "extensions.autoDisableScopes" = 0; + }; + isDefault = false; + id = 1; + }; + } + ]; + example = [ + { + name = "custom"; + value = { + settings = { + extensions.autoDisableScopes = 0; + }; + extensions.packages = [pkgs.nur.repos.rycee.firefox-addons.darkreader]; + isDefault = true; + id = 0; + }; + } + ]; + type = with lib.types; listOf (attrsOf anything); + description = "Zen profiles"; + }; + }; + config = lib.mkIf (config.mods.browser.zen.enable || config.mods.homePackages.browser == "zen") ( + lib.optionalAttrs (options ? home.packages) { + programs.zen-browser = { + enable = true; + package = + pkgs.wrapFirefox + inputs.zen-browser.packages.${system}.zen-browser-unwrapped + { + pname = "zen-browser"; + extraPolicies = + config.mods.browser.zen.configuration + // { + ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} config.mods.browser.zen.extensions; + }; + }; + profiles = builtins.listToAttrs config.mods.browser.zen.profiles; + }; + } + ); +} diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 781d9dd..f845a1d 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -1,567 +1,568 @@ -{ - lib, - config, - pkgs, - options, - ... -}: let - font_family = "${config.mods.stylix.fonts.monospace.name}"; -in { - options.mods = { - coding = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables coding packages. - ''; - }; - dashvim = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables dashvim package. - ''; - }; - jetbrains = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = '' - Enables jetbrains toolbox. - ''; - }; - vscodium = { - enable = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = '' - Enables vscodium. - ''; - }; - extensions = lib.mkOption { - default = []; - example = []; - type = with lib.types; listOf package; - description = "Extensions to be installed"; - }; - }; - penpot = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = "Enables penpot"; - }; - neovide = { - enable = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = "Enables neovide"; - }; - config = lib.mkOption { - default = { - font = { - size = 12; - normal = { - family = font_family; - style = ""; - }; - bold = { - family = font_family; - style = "ExtraBold"; - }; - italic = { - family = font_family; - style = "Italic"; - }; - bold_italic = { - family = font_family; - style = "Bold Italic"; - }; - }; - }; - example = {}; - type = with lib.types; attrsOf anything; - description = "Config for neovide"; - }; - }; - gh = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = "Enables and configures gh"; - }; - config = lib.mkOption { - default = { - version = 1; - git_protocol = "ssh"; - editor = ""; - prompt = "enabled"; - prefer_editor_prompt = "disabled"; - pager = ""; - aliases = { - co = "pr checkout"; - }; - http_unix_socket = ""; - browser = ""; - }; - example = {}; - type = with lib.types; attrsOf anything; - description = "config for gh. Keep in mind, empty values refer to using environment variables"; - }; - hosts = lib.mkOption { - default = { - "github.com" = { - git_protocol = "ssh"; - users = { - ${config.mods.git.username} = ""; - }; - user = "${config.mods.git.username}"; - }; - }; - example = {}; - type = with lib.types; attrsOf anything; - description = "hosts for gh"; - }; - }; - useDefaultPackages = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = "Use default base packages (only additionalPackages are installed if false)"; - }; - additionalPackages = lib.mkOption { - default = []; - example = []; - type = with lib.types; listOf package; - description = "Additional packages to be installed"; - }; - languages = { - haskell = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables haskell. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - haskellPackages.cabal-install - ghc - haskellPackages.haskell-language-server - ]; - example = []; - type = with lib.types; listOf package; - description = '' - haskell packages - ''; - }; - }; - typst = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables typst. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - typst - tinymist - ltex-ls - ]; - example = []; - type = with lib.types; listOf package; - description = '' - typst packages - ''; - }; - }; - go = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables go. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - go - gopls - ]; - example = []; - type = with lib.types; listOf package; - description = '' - Go packages - ''; - }; - }; - rust = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables rust. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [rustup]; - example = []; - type = with lib.types; listOf package; - description = '' - Rust packages - ''; - }; - }; - ts-js = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables TS/JS. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - nodejs_20 - deno - typescript - nodePackages.typescript-language-server - nodePackages.prettier - ]; - example = []; - type = with lib.types; listOf package; - description = '' - TS/JS packages - ''; - }; - }; - zig = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables zig. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - zig - zls - ]; - example = []; - type = with lib.types; listOf package; - description = '' - zig packages - ''; - }; - }; - java = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables java. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - gradle - maven - jdt-language-server - temurin-jre-bin - ]; - example = []; - type = with lib.types; listOf package; - description = '' - Java packages - ''; - }; - }; - dotnet = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables C#/F#. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - #.! - dotnet-sdk - omnisharp-roslyn - csharpier - netcoredbg - fsharp - fsautocomplete - ]; - example = []; - type = with lib.types; listOf package; - description = '' - C#/F# packages - ''; - }; - }; - C-CPP = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables C/C++. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - bear - gdb - gcc - clang-tools - ]; - example = []; - type = with lib.types; listOf package; - description = '' - C/C++ packages - ''; - }; - }; - python = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables python. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - python3 - python312Packages.python-lsp-server - python312Packages.python-lsp-ruff - python312Packages.python-lsp-black - ]; - example = []; - type = with lib.types; listOf package; - description = '' - python packages - ''; - }; - }; - configFiles = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables Json/toml/yaml etc. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - #yaml - yamlfmt - yamllint - yaml-language-server - - #json - jq - ]; - example = []; - type = with lib.types; listOf package; - description = '' - packages for said filetypes - ''; - }; - }; - bash = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables bash. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - bash-language-server - shfmt - ]; - example = []; - type = with lib.types; listOf package; - description = '' - bash packages - ''; - }; - }; - html-css = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables html/css. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - tailwindcss - tailwindcss-language-server - # html-tidy - ]; - example = []; - type = with lib.types; listOf package; - description = '' - html/css packages - ''; - }; - }; - sql = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables sql. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [ - nodePackages.sql-formatter - sqls - ]; - example = []; - type = with lib.types; listOf package; - description = '' - sql packages - ''; - }; - }; - gleam = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables gleam. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [gleam]; - example = []; - type = with lib.types; listOf package; - description = '' - gleam packages - ''; - }; - }; - asm = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enables assembly. - ''; - }; - packages = lib.mkOption { - default = with pkgs; [asm-lsp]; - example = []; - type = with lib.types; listOf package; - description = '' - assembly packages - ''; - }; - }; - }; - }; - }; - - config = let - basePackages = with pkgs; [ - gitui - meson - ninja - tree-sitter - unzip - pkg-config - sqlite - plantuml - d-spy - tmux - tmate - ]; - in - 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; - }; - programs.vscode = lib.mkIf config.mods.coding.vscodium.enable { - enable = true; - package = pkgs.vscodium; - profiles.default.extensions = config.mods.coding.vscodium.extensions; - }; - xdg.configFile."neovide/config.toml" = lib.mkIf (config.mods.coding.dashvim || config.mods.coding.neovide.enable) { - source = - (pkgs.formats.toml {}).generate "neovide" - config.mods.coding.neovide.config; - }; - - xdg.configFile."gh/config.yml" = lib.mkIf config.mods.coding.gh.enable { - source = - (pkgs.formats.yaml {}).generate "config" - config.mods.coding.gh.config; - }; - xdg.configFile."gh/hosts.yml" = lib.mkIf config.mods.coding.gh.enable { - source = - (pkgs.formats.yaml {}).generate "hosts" - config.mods.coding.gh.hosts; - }; - - home.packages = with pkgs; - [ - (lib.mkIf (config.mods.coding.dashvim || config.mods.coding.neovide.enable) neovide) - (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) - (lib.mkIf config.mods.coding.penpot pkgs.penpot-desktop) - (lib.mkIf config.mods.coding.gh.enable gh) - ] - ++ config.mods.coding.additionalPackages - ++ (lib.lists.optionals config.mods.coding.useDefaultPackages basePackages) - ++ (lib.lists.optionals config.mods.coding.languages.haskell.enable config.mods.coding.languages.haskell.packages) - ++ (lib.lists.optionals config.mods.coding.languages.rust.enable config.mods.coding.languages.rust.packages) - ++ (lib.lists.optionals config.mods.coding.languages.go.enable config.mods.coding.languages.go.packages) - ++ (lib.lists.optionals config.mods.coding.languages.java.enable config.mods.coding.languages.java.packages) - ++ (lib.lists.optionals config.mods.coding.languages.dotnet.enable config.mods.coding.languages.dotnet.packages) - ++ (lib.lists.optionals config.mods.coding.languages.bash.enable config.mods.coding.languages.bash.packages) - ++ (lib.lists.optionals config.mods.coding.languages.C-CPP.enable config.mods.coding.languages.C-CPP.packages) - ++ (lib.lists.optionals config.mods.coding.languages.asm.enable config.mods.coding.languages.asm.packages) - ++ (lib.lists.optionals config.mods.coding.languages.sql.enable config.mods.coding.languages.sql.packages) - ++ (lib.lists.optionals config.mods.coding.languages.html-css.enable config.mods.coding.languages.html-css.packages) - ++ (lib.lists.optionals config.mods.coding.languages.configFiles.enable config.mods.coding.languages.configFiles.packages) - ++ (lib.lists.optionals config.mods.coding.languages.ts-js.enable config.mods.coding.languages.ts-js.packages) - ++ (lib.lists.optionals config.mods.coding.languages.typst.enable config.mods.coding.languages.typst.packages) - ++ (lib.lists.optionals config.mods.coding.languages.zig.enable config.mods.coding.languages.zig.packages) - ++ (lib.lists.optionals config.mods.coding.languages.gleam.enable config.mods.coding.languages.gleam.packages); - } - ); -} +{ + mkDashDefault, + lib, + config, + pkgs, + options, + ... +}: let + font_family = "${config.mods.stylix.fonts.monospace.name}"; +in { + options.mods = { + coding = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables coding packages. + ''; + }; + dashvim = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables dashvim package. + ''; + }; + jetbrains = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Enables jetbrains toolbox. + ''; + }; + vscodium = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Enables vscodium. + ''; + }; + extensions = lib.mkOption { + default = []; + example = []; + type = with lib.types; listOf package; + description = "Extensions to be installed"; + }; + }; + penpot = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables penpot"; + }; + neovide = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables neovide"; + }; + config = lib.mkOption { + default = { + font = { + size = 12; + normal = { + family = font_family; + style = ""; + }; + bold = { + family = font_family; + style = "ExtraBold"; + }; + italic = { + family = font_family; + style = "Italic"; + }; + bold_italic = { + family = font_family; + style = "Bold Italic"; + }; + }; + }; + example = {}; + type = with lib.types; attrsOf anything; + description = "Config for neovide"; + }; + }; + gh = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables and configures gh"; + }; + config = lib.mkOption { + default = { + version = 1; + git_protocol = "ssh"; + editor = ""; + prompt = "enabled"; + prefer_editor_prompt = "disabled"; + pager = ""; + aliases = { + co = "pr checkout"; + }; + http_unix_socket = ""; + browser = ""; + }; + example = {}; + type = with lib.types; attrsOf anything; + description = "config for gh. Keep in mind, empty values refer to using environment variables"; + }; + hosts = lib.mkOption { + default = { + "github.com" = { + git_protocol = "ssh"; + users = { + ${config.mods.git.username} = ""; + }; + user = "${config.mods.git.username}"; + }; + }; + example = {}; + type = with lib.types; attrsOf anything; + description = "hosts for gh"; + }; + }; + useDefaultPackages = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Use default base packages (only additionalPackages are installed if false)"; + }; + additionalPackages = lib.mkOption { + default = []; + example = []; + type = with lib.types; listOf package; + description = "Additional packages to be installed"; + }; + languages = { + haskell = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables haskell. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + haskellPackages.cabal-install + ghc + haskellPackages.haskell-language-server + ]; + example = []; + type = with lib.types; listOf package; + description = '' + haskell packages + ''; + }; + }; + typst = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables typst. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + typst + tinymist + ltex-ls + ]; + example = []; + type = with lib.types; listOf package; + description = '' + typst packages + ''; + }; + }; + go = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables go. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + go + gopls + ]; + example = []; + type = with lib.types; listOf package; + description = '' + Go packages + ''; + }; + }; + rust = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables rust. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [rustup]; + example = []; + type = with lib.types; listOf package; + description = '' + Rust packages + ''; + }; + }; + ts-js = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables TS/JS. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + nodejs_20 + deno + typescript + nodePackages.typescript-language-server + nodePackages.prettier + ]; + example = []; + type = with lib.types; listOf package; + description = '' + TS/JS packages + ''; + }; + }; + zig = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables zig. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + zig + zls + ]; + example = []; + type = with lib.types; listOf package; + description = '' + zig packages + ''; + }; + }; + java = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables java. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + gradle + maven + jdt-language-server + temurin-jre-bin + ]; + example = []; + type = with lib.types; listOf package; + description = '' + Java packages + ''; + }; + }; + dotnet = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables C#/F#. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + #.! + dotnet-sdk + omnisharp-roslyn + csharpier + netcoredbg + fsharp + fsautocomplete + ]; + example = []; + type = with lib.types; listOf package; + description = '' + C#/F# packages + ''; + }; + }; + C-CPP = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables C/C++. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + bear + gdb + gcc + clang-tools + ]; + example = []; + type = with lib.types; listOf package; + description = '' + C/C++ packages + ''; + }; + }; + python = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables python. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + python3 + python312Packages.python-lsp-server + python312Packages.python-lsp-ruff + python312Packages.python-lsp-black + ]; + example = []; + type = with lib.types; listOf package; + description = '' + python packages + ''; + }; + }; + configFiles = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables Json/toml/yaml etc. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + #yaml + yamlfmt + yamllint + yaml-language-server + + #json + jq + ]; + example = []; + type = with lib.types; listOf package; + description = '' + packages for said filetypes + ''; + }; + }; + bash = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables bash. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + bash-language-server + shfmt + ]; + example = []; + type = with lib.types; listOf package; + description = '' + bash packages + ''; + }; + }; + html-css = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables html/css. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + tailwindcss + tailwindcss-language-server + # html-tidy + ]; + example = []; + type = with lib.types; listOf package; + description = '' + html/css packages + ''; + }; + }; + sql = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables sql. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [ + nodePackages.sql-formatter + sqls + ]; + example = []; + type = with lib.types; listOf package; + description = '' + sql packages + ''; + }; + }; + gleam = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables gleam. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [gleam]; + example = []; + type = with lib.types; listOf package; + description = '' + gleam packages + ''; + }; + }; + asm = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enables assembly. + ''; + }; + packages = lib.mkOption { + default = with pkgs; [asm-lsp]; + example = []; + type = with lib.types; listOf package; + description = '' + assembly packages + ''; + }; + }; + }; + }; + }; + + config = let + basePackages = with pkgs; [ + gitui + meson + ninja + tree-sitter + unzip + pkg-config + sqlite + plantuml + d-spy + tmux + tmate + ]; + in + 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; + }; + programs.vscode = lib.mkIf config.mods.coding.vscodium.enable { + enable = true; + package = mkDashDefault pkgs.vscodium; + profiles.default.extensions = config.mods.coding.vscodium.extensions; + }; + xdg.configFile."neovide/config.toml" = lib.mkIf (config.mods.coding.dashvim || config.mods.coding.neovide.enable) { + source = + (pkgs.formats.toml {}).generate "neovide" + config.mods.coding.neovide.config; + }; + + xdg.configFile."gh/config.yml" = lib.mkIf config.mods.coding.gh.enable { + source = + (pkgs.formats.yaml {}).generate "config" + config.mods.coding.gh.config; + }; + xdg.configFile."gh/hosts.yml" = lib.mkIf config.mods.coding.gh.enable { + source = + (pkgs.formats.yaml {}).generate "hosts" + config.mods.coding.gh.hosts; + }; + + home.packages = with pkgs; + [ + (lib.mkIf (config.mods.coding.dashvim || config.mods.coding.neovide.enable) neovide) + (lib.mkIf config.mods.coding.jetbrains jetbrains-toolbox) + (lib.mkIf config.mods.coding.penpot pkgs.penpot-desktop) + (lib.mkIf config.mods.coding.gh.enable gh) + ] + ++ config.mods.coding.additionalPackages + ++ (lib.lists.optionals config.mods.coding.useDefaultPackages basePackages) + ++ (lib.lists.optionals config.mods.coding.languages.haskell.enable config.mods.coding.languages.haskell.packages) + ++ (lib.lists.optionals config.mods.coding.languages.rust.enable config.mods.coding.languages.rust.packages) + ++ (lib.lists.optionals config.mods.coding.languages.go.enable config.mods.coding.languages.go.packages) + ++ (lib.lists.optionals config.mods.coding.languages.java.enable config.mods.coding.languages.java.packages) + ++ (lib.lists.optionals config.mods.coding.languages.dotnet.enable config.mods.coding.languages.dotnet.packages) + ++ (lib.lists.optionals config.mods.coding.languages.bash.enable config.mods.coding.languages.bash.packages) + ++ (lib.lists.optionals config.mods.coding.languages.C-CPP.enable config.mods.coding.languages.C-CPP.packages) + ++ (lib.lists.optionals config.mods.coding.languages.asm.enable config.mods.coding.languages.asm.packages) + ++ (lib.lists.optionals config.mods.coding.languages.sql.enable config.mods.coding.languages.sql.packages) + ++ (lib.lists.optionals config.mods.coding.languages.html-css.enable config.mods.coding.languages.html-css.packages) + ++ (lib.lists.optionals config.mods.coding.languages.configFiles.enable config.mods.coding.languages.configFiles.packages) + ++ (lib.lists.optionals config.mods.coding.languages.ts-js.enable config.mods.coding.languages.ts-js.packages) + ++ (lib.lists.optionals config.mods.coding.languages.typst.enable config.mods.coding.languages.typst.packages) + ++ (lib.lists.optionals config.mods.coding.languages.zig.enable config.mods.coding.languages.zig.packages) + ++ (lib.lists.optionals config.mods.coding.languages.gleam.enable config.mods.coding.languages.gleam.packages); + } + ); +} diff --git a/modules/programs/containers.nix b/modules/programs/containers.nix index aacf6f4..e65eb06 100644 --- a/modules/programs/containers.nix +++ b/modules/programs/containers.nix @@ -1,4 +1,5 @@ { + mkDashDefault, lib, config, options, @@ -63,8 +64,8 @@ containers.enable = true; podman = { enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; + dockerCompat = mkDashDefault true; + defaultNetwork.settings.dns_enabled = mkDashDefault true; }; } else if (config.mods.containers.variant == "docker") diff --git a/modules/programs/default.nix b/modules/programs/default.nix index fdfb163..5ad3e09 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -1,50 +1,52 @@ -{ - imports = [ - ./acpid.nix - ./basePackages.nix - ./bluetooth.nix - ./browser - ./coding.nix - ./containers.nix - ./drives.nix - ./fancontrol.nix - ./fastfetch.nix - ./fish.nix - ./flatpak.nix - ./gaming.nix - ./gdm.nix - ./git.nix - ./gnome.nix - ./gnomeServices.nix - ./gpu.nix - ./greetd.nix - ./homePackages.nix - ./hyprland - ./kde.nix - ./kdeConnect.nix - ./keepassxc.nix - ./kitty.nix - ./media.nix - ./mime.nix - ./ncspot.nix - ./nextcloud.nix - ./onedrive.nix - ./oxi - ./piper.nix - ./plymouth.nix - ./printing.nix - ./scripts.nix - ./sddm.nix - ./sops.nix - ./starship.nix - ./streamcontroller.nix - ./stylix.nix - ./supersonic.nix - ./sway.nix - ./teams.nix - ./virtmanager.nix - ./xkb.nix - ./xone.nix - ./yazi - ]; -} +{ + imports = [ + ./acpid.nix + ./anyrun.nix + ./basePackages.nix + ./bluetooth.nix + ./browser + ./coding.nix + ./containers.nix + ./drives.nix + ./fancontrol.nix + ./fastfetch.nix + ./fish.nix + ./flatpak.nix + ./gaming.nix + ./gdm.nix + ./git.nix + ./gnome.nix + ./gnomeServices.nix + ./gpu.nix + ./greetd.nix + ./homePackages.nix + ./hypr + ./ironbar.nix + ./kde.nix + ./kdeConnect.nix + ./keepassxc.nix + ./kitty.nix + ./media.nix + ./mime.nix + ./ncspot.nix + ./nextcloud.nix + ./onedrive.nix + ./oxi + ./piper.nix + ./plymouth.nix + ./printing.nix + ./scripts.nix + ./sddm.nix + ./sops.nix + ./starship.nix + ./streamcontroller.nix + ./stylix.nix + ./supersonic.nix + ./sway.nix + ./teams.nix + ./virtmanager.nix + ./xkb.nix + ./xone.nix + ./yazi + ]; +} diff --git a/modules/programs/fancontrol.nix b/modules/programs/fancontrol.nix index f7a2e3a..87be9af 100644 --- a/modules/programs/fancontrol.nix +++ b/modules/programs/fancontrol.nix @@ -1,36 +1,36 @@ -{ - lib, - config, - options, - ... -}: { - options.mods.fancontrol = { - enable = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = "Enables fancontrol-gui with needed drivers"; - }; - forceId = lib.mkOption { - default = null; - example = "force_id=0x8628"; - type = with lib.types; nullOr str; - description = "Modprobe options for the it87 driver. Information at: https://wiki.archlinux.org/title/Lm_sensors#Gigabyte_B250/Z370/B450M/B560M/B660M/Z690/B550_motherboards"; - }; - }; - config = lib.mkIf config.mods.fancontrol.enable ( - lib.optionalAttrs (options ? home.packages) { - programs.fancontrol-gui.enable = true; - } - // (lib.optionalAttrs (options ? boot.kernelModules) { - boot = { - kernelParams = ["acpi_enforce_resources=lax"]; - extraModulePackages = with config.boot.kernelPackages; [liquidtux it87]; - kernelModules = ["v4l2loopback" "it87"]; - extraModprobeConfig = lib.mkIf (config.mods.fancontrol.forceId != null) '' - options it87 ${config.mods.fancontrol.forceId} - ''; - }; - }) - ); -} +{ + lib, + config, + options, + ... +}: { + options.mods.fancontrol = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables fancontrol-gui with needed drivers"; + }; + forceId = lib.mkOption { + default = null; + example = "force_id=0x8628"; + type = with lib.types; nullOr str; + description = "Modprobe options for the it87 driver. Information at: https://wiki.archlinux.org/title/Lm_sensors#Gigabyte_B250/Z370/B450M/B560M/B660M/Z690/B550_motherboards"; + }; + }; + config = lib.mkIf config.mods.fancontrol.enable ( + lib.optionalAttrs (options ? home.packages) { + programs.fancontrol-gui.enable = true; + } + // (lib.optionalAttrs (options ? boot.kernelModules) { + boot = { + kernelParams = ["acpi_enforce_resources=lax"]; + extraModulePackages = with config.boot.kernelPackages; [liquidtux it87]; + kernelModules = ["v4l2loopback" "it87"]; + extraModprobeConfig = lib.mkIf (config.mods.fancontrol.forceId != null) '' + options it87 ${config.mods.fancontrol.forceId} + ''; + }; + }) + ); +} diff --git a/modules/programs/fastfetch.nix b/modules/programs/fastfetch.nix index 9652bf3..71b6218 100644 --- a/modules/programs/fastfetch.nix +++ b/modules/programs/fastfetch.nix @@ -1,66 +1,73 @@ { + mkDashDefault, pkgs, lib, options, config, ... }: { - options.mods = { - dashfetch = lib.mkOption { + options.mods.dashfetch = { + enable = lib.mkOption { default = true; example = false; type = lib.types.bool; description = "A custom configuration for fastfetch"; }; + modules = lib.mkOption { + default = [ + "title" + "separator" + { + type = "os"; + key = "OS"; + format = "DashNix ({name} {version})"; + } + "host" + "kernel" + "uptime" + "packages" + "shell" + "display" + "de" + "wm" + "wmtheme" + "theme" + "icons" + "font" + "cursor" + "terminal" + "terminalfont" + "cpu" + "gpu" + "memory" + "swap" + "disk" + "localip" + "battery" + "poweradapter" + "locale" + "break" + "colors" + ]; + example = []; + type = with lib.types; listOf anything; + description = "modules for fastfetch"; + }; }; config = lib.optionalAttrs (options ? home.packages) { - xdg.configFile."fastfetch/config.jsonc" = lib.mkIf (config.mods.dashfetch) { + xdg.configFile."fastfetch/config.jsonc" = lib.mkIf (config.mods.dashfetch.enable) { source = (pkgs.formats.json {}).generate "config.jsonc" { "$schema" = "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json"; logo = { - type = "kitty"; - source = ../../assets/logo2.png; - width = 35; - padding = { - top = 1; + type = mkDashDefault "kitty"; + source = mkDashDefault ../../assets/logo2.png; + width = mkDashDefault 35; + padding = mkDashDefault { + top = mkDashDefault 1; }; }; - modules = [ - "title" - "separator" - { - type = "os"; - key = "OS"; - format = "DashNix ({name} {version})"; - } - "host" - "kernel" - "uptime" - "packages" - "shell" - "display" - "de" - "wm" - "wmtheme" - "theme" - "icons" - "font" - "cursor" - "terminal" - "terminalfont" - "cpu" - "gpu" - "memory" - "swap" - "disk" - "localip" - "battery" - "poweradapter" - "locale" - "break" - "colors" - ]; + modules = config.mods.dashfetch.modules; }; }; }; diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 2e235bc..17157ae 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -1,4 +1,5 @@ { + mkDashDefault, lib, config, options, @@ -76,27 +77,27 @@ boot.kernelPackages = lib.mkForce pkgs.linuxPackages_cachyos; programs = { - steam.enable = config.mods.gaming.steam; + steam.enable = mkDashDefault config.mods.gaming.steam; gamemode.enable = true; gamemode = { - enableRenice = true; + enableRenice = mkDashDefault true; settings = { general = { - desiredgov = "performance"; + desiredgov = mkDashDefault "performance"; }; cpu = { - pin_cores = config.mods.gaming.pinCores; - park_cores = config.mods.gaming.parkCores; + pin_cores = mkDashDefault config.mods.gaming.pinCores; + park_cores = mkDashDefault config.mods.gaming.parkCores; }; gpu = lib.mkIf config.mods.gaming.gpuOptimization { - apply_gpu_optimisations = "accept-responsibility"; - gpu_device = config.mods.gaming.gpuDevice; - amd_performance_level = "high"; - nv_powermizer_mode = 1; + apply_gpu_optimisations = mkDashDefault "accept-responsibility"; + gpu_device = mkDashDefault config.mods.gaming.gpuDevice; + amd_performance_level = mkDashDefault "high"; + nv_powermizer_mode = mkDashDefault 1; }; custom = { - start = "notify-send -a 'Gamemode' 'Optimizations activated'"; - end = "notify-send -a 'Gamemode' 'Optimizations deactivated'"; + start = mkDashDefault "notify-send -a 'Gamemode' 'Optimizations activated'"; + end = mkDashDefault "notify-send -a 'Gamemode' 'Optimizations deactivated'"; }; }; }; diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index 9bc2a4a..5cd26bf 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -67,16 +67,16 @@ environment.variables = if (config.mods.gpu.amdgpu.enable && config.mods.gpu.vapi.rocm.enable) then { - RUSTICL_ENABLE = "radeonsi"; + RUSTICL_ENABLE = mkDashDefault "radeonsi"; } else {}; hardware = { nvidia = lib.mkIf config.mods.gpu.nvidia.enable { - modesetting.enable = true; - open = true; - nvidiaSettings = true; - package = config.boot.kernelPackages.nvidiaPackages.beta; + modesetting.enable = mkDashDefault true; + open = mkDashDefault true; + nvidiaSettings = mkDashDefault true; + package = mkDashDefault config.boot.kernelPackages.nvidiaPackages.beta; }; graphics = let amdPackages = [ diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 01c13a3..064f61b 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -1,4 +1,5 @@ { + mkDashDefault, config, lib, inputs, @@ -17,7 +18,7 @@ ''; }; monitor = lib.mkOption { - default = "${config.conf.defaultMonitor}"; + default = "${config.mods.hypr.hyprland.defaultMonitor}"; example = "eDP-1"; type = lib.types.str; description = '' @@ -26,7 +27,7 @@ ''; }; scale = lib.mkOption { - default = "${config.conf.defaultMonitorScale}"; + default = "${config.mods.hypr.hyprland.defaultMonitorScale}"; example = "1.5"; type = lib.types.str; description = '' @@ -45,7 +46,7 @@ description = "The compositor/greeter command to run"; }; resolution = lib.mkOption { - default = "${config.conf.defaultMonitorMode}"; + default = "${config.mods.hypr.hyprland.defaultMonitorMode}"; example = "3440x1440@180"; type = lib.types.str; description = '' @@ -86,16 +87,16 @@ lib.mkIf config.mods.greetd.enable ( lib.optionalAttrs (options ? environment) { # greetd display manager - programs.hyprland.enable = true; + programs.hyprland.enable = mkDashDefault true; services = { displayManager.sessionPackages = config.mods.greetd.environments; greetd = { enable = true; settings = { - terminal.vt = 1; + terminal.vt = mkDashDefault 1; default_session = { - command = config.mods.greetd.greeterCommand; - user = username; + command = mkDashDefault config.mods.greetd.greeterCommand; + user = mkDashDefault username; }; }; }; @@ -129,9 +130,9 @@ ''; # unlock GPG keyring on login - security.pam.services.greetd.enableGnomeKeyring = true; - security.pam.services.greetd.sshAgentAuth = true; - security.pam.sshAgentAuth.enable = true; + security.pam.services.greetd.enableGnomeKeyring = mkDashDefault true; + security.pam.services.greetd.sshAgentAuth = mkDashDefault true; + security.pam.sshAgentAuth.enable = mkDashDefault true; } // lib.optionalAttrs (options ? home) { xdg.configFile."regreet/regreet.toml".source = diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hypr/default.nix similarity index 69% rename from modules/programs/hyprland/default.nix rename to modules/programs/hypr/default.nix index a181f64..68b88ea 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hypr/default.nix @@ -1,8 +1,6 @@ { imports = [ ./hyprland.nix - ./anyrun.nix - ./ironbar.nix ./hyprlock.nix ./hyprpaper.nix ]; diff --git a/modules/programs/hyprland/hyprland.nix b/modules/programs/hypr/hyprland.nix similarity index 76% rename from modules/programs/hyprland/hyprland.nix rename to modules/programs/hypr/hyprland.nix index 5c1fe9a..676b567 100644 --- a/modules/programs/hyprland/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -1,410 +1,442 @@ -{ - mkDashDefault, - config, - lib, - options, - pkgs, - inputs, - ... -}: let - browserName = - if (builtins.isString config.mods.homePackages.browser) - then config.mods.homePackages.browser - else if config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram - then config.mods.homePackages.browser.meta.mainProgram - else config.mods.homePackages.browser.pname; -in { - options.mods.hyprland = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Enable Hyprland - ''; - }; - monitor = lib.mkOption { - default = [ - # main monitor - "${config.conf.defaultMonitor},${config.conf.defaultMonitorMode},0x0,${config.conf.defaultMonitorScale}" - # all others - ]; - example = ["DP-1,3440x1440@180,2560x0,1,vrr,0"]; - type = with lib.types; listOf str; - description = '' - The monitor configuration for hyprland. - ''; - }; - workspace = lib.mkOption { - default = []; - example = ["2,monitor:DP-1, default:true"]; - type = with lib.types; listOf str; - description = '' - The workspace configuration for hyprland. - ''; - }; - noAtomic = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = '' - Use tearing - ''; - }; - extraAutostart = lib.mkOption { - default = []; - example = ["your application"]; - type = lib.types.listOf lib.types.str; - description = '' - Extra exec_once. - ''; - }; - useDefaultConfig = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Use preconfigured Hyprland config. - ''; - }; - customConfig = lib.mkOption { - default = {}; - example = {}; - type = with lib.types; attrsOf anything; - description = '' - Custom Hyprland configuration. - Will be merged with default configuration if enabled. - ''; - }; - plugins = lib.mkOption { - default = []; - example = []; - type = with lib.types; listOf package; - description = '' - Plugins to be added to Hyprland. - ''; - }; - pluginConfig = lib.mkOption { - default = {}; - example = {}; - type = with lib.types; attrsOf anything; - description = '' - Plugin configuration to be added to Hyprland. - ''; - }; - hyprspaceEnable = lib.mkOption { - default = false; - type = lib.types.bool; - example = true; - description = '' - Enables Hyprspace plugin for hyprland. - Please note, plugins tend to break VERY often. - ''; - }; - }; - - 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 - ]; - - wayland.windowManager.hyprland = { - enable = true; - settings = - if config.mods.hyprland.useDefaultConfig - then - lib.mkMerge - [ - { - "$mod" = "SUPER"; - - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizeactive" - ]; - - bind = [ - # screenshots - ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' - ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' - ''$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy'' - - # regular programs - "$mod SUPER,F,exec,${browserName}" - (lib.mkIf ( - browserName == "firefox" || browserName == "zen" - ) "$mod SUPERSHIFT,F,exec,${browserName} -p special") - "$mod SUPER,T,exec,kitty -1" - "$mod SUPER,E,exec,nautilus -w" - "$mod SUPER,N,exec,neovide" - (lib.mkIf (config.mods.hyprland.anyrun.enable) "$mod SUPER,R,exec,anyrun") - (lib.mkIf (config.mods.oxi.oxirun.enable) "$mod SUPER,R,exec,oxirun") - (lib.mkIf (config.mods.oxi.oxidash.enable) "$mod SUPER,M,exec,oxidash") - (lib.mkIf (config.mods.oxi.oxicalc.enable) "$mod SUPER,G,exec,oxicalc") - (lib.mkIf (config.mods.oxi.oxishut.enable) "$mod SUPER,D,exec,oxishut") - (lib.mkIf (config.mods.oxi.oxipaste.enable) "$mod SUPER,A,exec,oxipaste-iced") - (lib.mkIf (config.mods.oxi.hyprdock.enable) "$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 - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioMute,exec, audioControl mute") - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioLowerVolume,exec, audioControl sink -5%") - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioRaiseVolume,exec, audioControl sink +5%") - ",XF86AudioPlay,exec, playerctl play-pause" - ",XF86AudioNext,exec, playerctl next" - ",XF86AudioPrev,exec, playerctl previous" - (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessDown,exec, changeBrightness brightness 10%-") - (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessUp,exec, changeBrightness 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.mkOverride 51 "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; - # "col.inactive_border" = "0x66333333"; - allow_tearing = lib.mkIf config.mods.hyprland.noAtomic true; - }; - - decoration = { - rounding = 4; - }; - - render = { - direct_scanout = mkDashDefault config.mods.gaming.enable; - }; - - 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" - ]; - }; - - dwindle = { - preserve_split = true; - pseudotile = 0; - permanent_direction_override = false; - }; - - 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; - }; - }; - - misc = { - animate_manual_resizes = 1; - enable_swallow = true; - disable_splash_rendering = true; - disable_hyprland_logo = true; - swallow_regex = "^(.*)(kitty)(.*)$"; - initial_workspace_tracking = 1; - # just doesn't work - enable_anr_dialog = false; - }; - - cursor = { - enable_hyprcursor = true; - no_hardware_cursors = mkDashDefault ( - if config.mods.gpu.nvidia.enable - then 2 - else 0 - ); - # done with nix, this would break the current setup otherwise - sync_gsettings_theme = false; - }; - - gestures = { - workspace_swipe = true; - }; - - monitor = config.mods.hyprland.monitor; - workspace = config.mods.hyprland.workspace; - - env = [ - "GTK_CSD,0" - ''TERM,"kitty /bin/fish"'' - "XDG_CURRENT_DESKTOP=Hyprland" - "XDG_SESSION_TYPE=wayland" - "XDG_SESSION_DESKTOP=Hyprland" - "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" - "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" - "XCURSOR_THEME,${config.mods.stylix.cursor.name}" - "XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" - "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"'' - (lib.mkIf config.mods.hyprland.noAtomic "WLR_DRM_NO_ATOMIC,1") - "GTK_USE_PORTAL, 1" - - (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") - (lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland") - (lib.mkIf config.mods.gpu.nvidia.enable "GBM_BACKEND,nvidia-drm") - (lib.mkIf config.mods.gpu.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") - ]; - - layerrule = [ - # layer rules - # mainly to disable animations within slurp and grim - "noanim, selection" - ]; - - windowrule = [ - # window rules - "float,class:^(.*)(OxiCalc)(.*)$" - "float,class:^(.*)(winecfg.exe)(.*)$" - "float,class:^(.*)(copyq)(.*)$" - "center,class:^(.*)(swappy)(.*)$" - "float,title:^(.*)(reset)(.*)$" - "workspace 10 silent,class:^(.*)(steam)(.*)$" - "workspace 9 silent,class:^(.*)(dota)(.*)$" - "workspace 9 silent,class:^(.*)(battlebits)(.*)$" - "workspace 9 silent,class:^(.*)(aoe)(.*)$" - "suppressevent fullscreen maximize,class:^(.*)(neovide)(.*)$" - "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" - "${browserName}" - "oxipaste_daemon" - "oxinoti" - ] - ++ config.mods.hyprland.extraAutostart; - - plugin = - lib.mkMerge - [ - { - hyprspace = lib.mkIf config.mods.hyprland.hyprspaceEnable { - bind = [ - "SUPER, W, overview:toggle, toggle" - ]; - }; - } - config.mods.hyprland.pluginConfig - ]; - } - config.mods.hyprland.customConfig - ] - else lib.mkForce config.mods.hyprland.customConfig; - plugins = - [ - (lib.mkIf config.mods.hyprland.hyprspaceEnable inputs.Hyprspace.packages.${pkgs.system}.Hyprspace) - ] - ++ config.mods.hyprland.plugins; - }; - } - ); -} +{ + mkDashDefault, + config, + lib, + options, + pkgs, + inputs, + ... +}: let + browserName = + if (builtins.isString config.mods.homePackages.browser) + then config.mods.homePackages.browser + else if config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram + then config.mods.homePackages.browser.meta.mainProgram + else config.mods.homePackages.browser.pname; +in { + options.mods.hypr.hyprland = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enable Hyprland + ''; + }; + defaultMonitor = lib.mkOption { + default = ""; + example = "eDP-1"; + type = lib.types.str; + description = '' + main monitor + ''; + }; + defaultMonitorMode = lib.mkOption { + default = ""; + example = "3440x1440@180"; + type = lib.types.str; + description = '' + main monitor mode: width x height @ refreshrate + ''; + }; + defaultMonitorScale = lib.mkOption { + default = "1"; + example = "1.5"; + type = lib.types.str; + description = '' + main monitor scaling + ''; + }; + monitor = lib.mkOption { + default = [ + # main monitor + "${config.mods.hypr.hyprland.defaultMonitor},${config.mods.hypr.hyprland.defaultMonitorMode},0x0,${config.mods.hypr.hyprland.defaultMonitorScale}" + # all others + ]; + example = ["DP-1,3440x1440@180,2560x0,1,vrr,0"]; + type = with lib.types; listOf str; + description = '' + The monitor configuration for hyprland. + ''; + }; + workspace = lib.mkOption { + default = []; + example = ["2,monitor:DP-1, default:true"]; + type = with lib.types; listOf str; + description = '' + The workspace configuration for hyprland. + ''; + }; + noAtomic = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = '' + Use tearing + ''; + }; + extraAutostart = lib.mkOption { + default = []; + example = ["your application"]; + type = lib.types.listOf lib.types.str; + description = '' + Extra exec_once. + ''; + }; + useIronbar = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Whether to use ironbar in hyprland. + ''; + }; + useDefaultConfig = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use preconfigured Hyprland config. + ''; + }; + customConfig = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = '' + Custom Hyprland configuration. + Will be merged with default configuration if enabled. + ''; + }; + plugins = lib.mkOption { + default = []; + example = []; + type = with lib.types; listOf package; + description = '' + Plugins to be added to Hyprland. + ''; + }; + pluginConfig = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = '' + Plugin configuration to be added to Hyprland. + ''; + }; + hyprspaceEnable = lib.mkOption { + default = false; + type = lib.types.bool; + example = true; + description = '' + Enables Hyprspace plugin for hyprland. + Please note, plugins tend to break VERY often. + ''; + }; + }; + + config = lib.mkIf config.mods.hypr.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 + ]; + + wayland.windowManager.hyprland = { + enable = true; + settings = + if config.mods.hypr.hyprland.useDefaultConfig + then + lib.mkMerge + [ + { + "$mod" = mkDashDefault "SUPER"; + + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizeactive" + ]; + + bind = [ + # screenshots + ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' + ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' + ''$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy'' + + # regular programs + "$mod SUPER,F,exec,${browserName}" + (lib.mkIf ( + browserName == "firefox" || browserName == "zen" + ) "$mod SUPERSHIFT,F,exec,${browserName} -p special") + "$mod SUPER,T,exec,kitty -1" + "$mod SUPER,E,exec,nautilus -w" + "$mod SUPER,N,exec,neovide" + (lib.mkIf (config.mods.anyrun.enable) "$mod SUPER,R,exec,anyrun") + (lib.mkIf (config.mods.oxi.oxirun.enable) "$mod SUPER,R,exec,oxirun") + (lib.mkIf (config.mods.oxi.oxidash.enable) "$mod SUPER,M,exec,oxidash") + (lib.mkIf (config.mods.oxi.oxicalc.enable) "$mod SUPER,G,exec,oxicalc") + (lib.mkIf (config.mods.oxi.oxishut.enable) "$mod SUPER,D,exec,oxishut") + (lib.mkIf (config.mods.oxi.oxipaste.enable) "$mod SUPER,A,exec,oxipaste-iced") + (lib.mkIf (config.mods.oxi.hyprdock.enable) "$mod SUPERSHIFT,P,exec,hyprdock --gui") + (lib.mkIf (config.mods.hypr.hyprlock.enable) "$mod SUPERSHIFT,L,exec, playerctl -a pause & hyprlock & systemctl suspend") + (lib.mkIf (config.mods.hypr.hyprlock.enable) "$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate") + + # media keys + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioMute,exec, audioControl mute") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioLowerVolume,exec, audioControl sink -5%") + (lib.mkIf config.mods.scripts.audioControl ",XF86AudioRaiseVolume,exec, audioControl sink +5%") + ",XF86AudioPlay,exec, playerctl play-pause" + ",XF86AudioNext,exec, playerctl next" + ",XF86AudioPrev,exec, playerctl previous" + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessDown,exec, changeBrightness brightness 10%-") + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessUp,exec, changeBrightness 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 = mkDashDefault "3,5,5,5"; + border_size = mkDashDefault 3; + "col.active_border" = lib.mkOverride 51 "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; + # "col.inactive_border" = "0x66333333"; + allow_tearing = lib.mkIf config.mods.hypr.hyprland.noAtomic true; + }; + + decoration = { + rounding = mkDashDefault 4; + }; + + render = { + direct_scanout = mkDashDefault config.mods.gaming.enable; + }; + + animations = { + bezier = mkDashDefault "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" + ]; + }; + + dwindle = { + preserve_split = mkDashDefault true; + pseudotile = mkDashDefault 0; + permanent_direction_override = mkDashDefault false; + }; + + input = { + kb_layout = mkDashDefault "${config.mods.xkb.layout}"; + kb_variant = mkDashDefault "${config.mods.xkb.variant}"; + repeat_delay = mkDashDefault 200; + force_no_accel = mkDashDefault true; + touchpad = { + natural_scroll = mkDashDefault true; + tap-to-click = mkDashDefault true; + tap-and-drag = mkDashDefault true; + }; + }; + + misc = { + animate_manual_resizes = mkDashDefault 1; + enable_swallow = mkDashDefault true; + disable_splash_rendering = mkDashDefault true; + disable_hyprland_logo = mkDashDefault true; + swallow_regex = mkDashDefault "^(.*)(kitty)(.*)$"; + initial_workspace_tracking = mkDashDefault 1; + # just doesn't work + enable_anr_dialog = false; + }; + + cursor = { + enable_hyprcursor = mkDashDefault true; + no_hardware_cursors = mkDashDefault ( + if config.mods.gpu.nvidia.enable + then 2 + else 0 + ); + # done with nix, this would break the current setup otherwise + sync_gsettings_theme = mkDashDefault false; + }; + + gestures = { + workspace_swipe = mkDashDefault true; + }; + + monitor = mkDashDefault config.mods.hypr.hyprland.monitor; + workspace = mkDashDefault config.mods.hypr.hyprland.workspace; + + env = [ + "GTK_CSD,0" + ''TERM,"kitty /bin/fish"'' + "XDG_CURRENT_DESKTOP=Hyprland" + "XDG_SESSION_TYPE=wayland" + "XDG_SESSION_DESKTOP=Hyprland" + "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" + "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" + "XCURSOR_THEME,${config.mods.stylix.cursor.name}" + "XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" + "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"'' + (lib.mkIf config.mods.hypr.hyprland.noAtomic "WLR_DRM_NO_ATOMIC,1") + "GTK_USE_PORTAL, 1" + + (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") + (lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland") + (lib.mkIf config.mods.gpu.nvidia.enable "GBM_BACKEND,nvidia-drm") + (lib.mkIf config.mods.gpu.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") + ]; + + layerrule = [ + # layer rules + # mainly to disable animations within slurp and grim + "noanim, selection" + ]; + + windowrule = [ + # window rules + "float,class:^(.*)(OxiCalc)(.*)$" + "float,class:^(.*)(winecfg.exe)(.*)$" + "float,class:^(.*)(copyq)(.*)$" + "center,class:^(.*)(swappy)(.*)$" + "float,title:^(.*)(reset)(.*)$" + "workspace 10 silent,class:^(.*)(steam)(.*)$" + "workspace 9 silent,class:^(.*)(dota)(.*)$" + "workspace 9 silent,class:^(.*)(battlebits)(.*)$" + "workspace 9 silent,class:^(.*)(aoe)(.*)$" + "suppressevent fullscreen maximize,class:^(.*)(neovide)(.*)$" + "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 + "${browserName}" + (lib.mkIf config.mods.hypr.hyprpaper.enable "hyprpaper") + (lib.mkIf config.mods.hypr.hyprland.useIronbar "ironbar") + (lib.mkIf config.mods.oxi.oxipaste.enable "oxipaste_daemon") + (lib.mkIf config.mods.oxi.oxinoti.enable "oxinoti") + ] + ++ config.mods.hypr.hyprland.extraAutostart; + + plugin = + lib.mkMerge + [ + { + hyprspace = lib.mkIf config.mods.hypr.hyprland.hyprspaceEnable { + bind = [ + "SUPER, W, overview:toggle, toggle" + ]; + }; + } + config.mods.hypr.hyprland.pluginConfig + ]; + } + config.mods.hypr.hyprland.customConfig + ] + else lib.mkForce config.mods.hypr.hyprland.customConfig; + plugins = + [ + (lib.mkIf config.mods.hypr.hyprland.hyprspaceEnable inputs.Hyprspace.packages.${pkgs.system}.Hyprspace) + ] + ++ config.mods.hypr.hyprland.plugins; + }; + } + ); +} diff --git a/modules/programs/hypr/hyprlock.nix b/modules/programs/hypr/hyprlock.nix new file mode 100644 index 0000000..30ea707 --- /dev/null +++ b/modules/programs/hypr/hyprlock.nix @@ -0,0 +1,61 @@ +{ + config, + lib, + options, + pkgs, + ... +}: { + options.mods.hypr.hyprlock = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables Hyprlock"; + }; + config = lib.mkOption { + default = { + background = [ + { + monitor = ""; + path = ""; + color = "rgba(26, 27, 38, 1.0)"; + } + ]; + + input-field = [ + { + monitor = "${config.mods.hypr.hyprland.defaultMonitor}"; + placeholder_text = "password or something"; + } + ]; + + label = [ + { + monitor = "${config.mods.hypr.hyprland.defaultMonitor}"; + text = "$TIME"; + font_size = 50; + position = "0, 200"; + valign = "center"; + halign = "center"; + } + ]; + }; + example = {}; + type = with lib.types; attrsOf anything; + description = "config"; + }; + }; + + config = lib.mkIf config.mods.hypr.hyprlock.enable ( + lib.optionalAttrs (options ? xdg.configFile) { + stylix.targets.hyprlock = { + enable = false; + }; + home.packages = with pkgs; [hyprlock]; + programs.hyprlock = lib.mkIf config.mods.hypr.hyprlock.enable { + enable = true; + settings = config.mods.hypr.hyprlock.config; + }; + } + ); +} diff --git a/modules/programs/hypr/hyprpaper.nix b/modules/programs/hypr/hyprpaper.nix new file mode 100644 index 0000000..b392b54 --- /dev/null +++ b/modules/programs/hypr/hyprpaper.nix @@ -0,0 +1,36 @@ +{ + config, + lib, + options, + pkgs, + ... +}: { + options.mods.hypr.hyprpaper = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables Hyprpaper"; + }; + config = lib.mkOption { + default = ""; + example = '' + preload = path/to/wallpaper + wallpaper = YOURMONITOR,path/to/wallpaper + ''; + type = lib.types.lines; + description = '' + Hyprpaper config + ''; + }; + }; + + config = lib.mkIf config.mods.hypr.hyprpaper.enable ( + lib.optionalAttrs (options ? xdg.configFile) { + home.packages = with pkgs; [hyprpaper]; + xdg.configFile."hypr/hyprpaper.conf" = lib.mkIf config.mods.hypr.hyprpaper.enable { + text = config.mods.hypr.hyprpaper.config; + }; + } + ); +} diff --git a/modules/programs/hyprland/anyrun.nix b/modules/programs/hyprland/anyrun.nix deleted file mode 100644 index 6a3a24e..0000000 --- a/modules/programs/hyprland/anyrun.nix +++ /dev/null @@ -1,144 +0,0 @@ -{ - lib, - config, - pkgs, - options, - inputs, - ... -}: { - options.mods = { - hyprland = { - anyrun = { - enable = lib.mkOption { - default = false; - example = true; - type = lib.types.bool; - description = "Enables anyrun"; - }; - useDefaultConfig = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Use preconfigured anyrun config. - ''; - }; - customConfig = lib.mkOption { - default = {}; - example = {}; - type = with lib.types; attrsOf anything; - description = '' - Custom anyrun configuration. - Will be merged with default configuration if enabled. - ''; - }; - useDefaultCss = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Use preconfigured anyrun css. - ''; - }; - customCss = lib.mkOption { - default = ''''; - example = '' - #window { - border-radius: none; - } - ''; - type = lib.types.lines; - description = '' - Custom anyrun css. - Will be merged with default css if enabled. - ''; - }; - }; - }; - }; - - config = lib.mkIf config.mods.hyprland.anyrun.enable ( - lib.optionalAttrs (options ? home.packages) { - programs.anyrun = lib.mkForce { - enable = true; - config = - if config.mods.hyprland.anyrun.useDefaultConfig - then - { - plugins = [ - inputs.anyrun.packages.${pkgs.system}.applications - inputs.anyrun.packages.${pkgs.system}.rink - inputs.anyrun.packages.${pkgs.system}.translate - inputs.anyrun.packages.${pkgs.system}.websearch - ]; - hideIcons = false; - width = { - fraction = 0.3; - }; - y = { - fraction = 0.5; - }; - layer = "overlay"; - hidePluginInfo = true; - closeOnClick = true; - } - // config.mods.hyprland.anyrun.customConfig - else config.mods.hyprland.anyrun.customConfig; - - extraCss = - if config.mods.hyprland.anyrun.useDefaultCss - then - '' - #window { - border-radius: 10px; - background-color: transparent; - } - - box#main { - border-radius: 10px; - } - - list#main { - border-radius: 10px; - margin: 0px 10px 10px 10px; - } - - list#plugin { - border-radius: 10px; - } - - list#match { - border-radius: 10px; - } - - entry#entry { - border: 0; - border-radius: 10px; - margin: 10px 10px 0px 10px; - } - - label#match-desc { - font-size: 12px; - border-radius: 10px; - } - - label#match-title { - font-size: 12px; - border-radius: 10px; - } - - label#plugin { - font-size: 16px; - border-radius: 10px; - } - - * { - border-radius: 10px; - } - '' - + config.mods.hyprland.anyrun.customCss - else config.mods.hyprland.anyrun.customCss; - }; - } - ); -} diff --git a/modules/programs/hyprland/hyprlock.nix b/modules/programs/hyprland/hyprlock.nix deleted file mode 100644 index 0a807ea..0000000 --- a/modules/programs/hyprland/hyprlock.nix +++ /dev/null @@ -1,58 +0,0 @@ -{ - config, - lib, - options, - pkgs, - ... -}: { - options.mods = { - hyprland.hyprlock = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = "Enables Hyprlock"; - }; - }; - }; - - config = lib.mkIf config.mods.hyprland.hyprlock.enable ( - lib.optionalAttrs (options ? xdg.configFile) { - stylix.targets.hyprlock = { - enable = false; - }; - 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)"; - } - ]; - - input-field = [ - { - monitor = "${config.conf.defaultMonitor}"; - - placeholder_text = "password or something"; - } - ]; - - label = [ - { - monitor = "${config.conf.defaultMonitor}"; - 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 deleted file mode 100644 index 31c4d05..0000000 --- a/modules/programs/hyprland/hyprpaper.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ - config, - lib, - options, - pkgs, - ... -}: { - options.mods = { - hyprland.hyprpaper = { - enable = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = "Enables Hyprpaper"; - }; - config = lib.mkOption { - default = ""; - example = '' - preload = path/to/wallpaper - wallpaper = YOURMONITOR,path/to/wallpaper - ''; - type = lib.types.lines; - description = '' - Hyprpaper config - ''; - }; - }; - }; - - 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 { - text = config.mods.hyprland.hyprpaper.config; - }; - } - ); -} diff --git a/modules/programs/hyprland/ironbar.nix b/modules/programs/ironbar.nix similarity index 50% rename from modules/programs/hyprland/ironbar.nix rename to modules/programs/ironbar.nix index 8e60c8b..ca8255b 100644 --- a/modules/programs/hyprland/ironbar.nix +++ b/modules/programs/ironbar.nix @@ -9,12 +9,127 @@ username = config.conf.username; base16 = pkgs.callPackage inputs.base16.lib {}; scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; + ironbarDefaultConfig = { + end = [ + { + 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 = [ + { + type = "box"; + orientation = "vertical"; + class = "audio-box"; + widgets = [ + { + type = "box"; + orientation = "horizontal"; + widgets = [ + { + type = "button"; + class = "audio-button"; + label = ""; + on_click = lib.mkIf config.mods.scripts.audioControl "!audioControl bluetooth"; + } + { + type = "button"; + class = "audio-button"; + label = "󰋋"; + on_click = lib.mkIf config.mods.scripts.audioControl "!audioControl internal"; + } + ]; + class = "audio-button-box"; + } + { + type = "label"; + label = "Output"; + } + { + type = "slider"; + class = "audio-slider"; + step = 1.0; + length = 200; + value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; + on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; + } + { + type = "label"; + label = "Input"; + } + { + type = "slider"; + 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%"; + } + ]; + } + ]; + } + { + 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 = [ + { + type = "focused"; + show_icon = true; + show_title = true; + icon_size = 20; + truncate = "end"; + } + ]; + }; + monitorConfig = + if config.mods.hypr.hyprland.enable + then {monitors.${config.mods.hypr.hyprland.defaultMonitor} = ironbarDefaultConfig;} + else ironbarDefaultConfig; in { options.mods = { - hyprland.ironbar = { + ironbar = { enable = lib.mkOption { - default = true; - example = false; + default = false; + example = true; type = lib.types.bool; description = "Enables ironbar"; }; @@ -26,19 +141,6 @@ in { Use preconfigured ironbar config. ''; }; - modules = lib.mkOption { - default = []; - example = [ - { - type = "upower"; - class = "memory-usage"; - } - ]; - type = with lib.types; listOf attrs; - description = '' - Adds modules to ironbar. See https://github.com/JakeStanger/ironbar/wiki/ for more information. - ''; - }; customConfig = lib.mkOption { default = {}; example = {}; @@ -71,12 +173,12 @@ in { }; }; }; - config = lib.mkIf config.mods.hyprland.ironbar.enable ( + config = lib.mkIf (config.mods.ironbar.enable || config.mods.hypr.hyprland.useIronbar) ( lib.optionalAttrs (options ? programs.ironbar) { programs.ironbar = { enable = true; style = - if config.mods.hyprland.ironbar.useDefaultCss + if config.mods.ironbar.useDefaultCss then /* css @@ -212,131 +314,20 @@ in { background-color: #${scheme.base02}; } '' - + config.mods.hyprland.ironbar.customCss - else config.mods.hyprland.ironbar.customCss; + + config.mods.ironbar.customCss + else config.mods.ironbar.customCss; features = [ #"another_feature" ]; - config = { - monitors."${config.conf.defaultMonitor}" = - if config.mods.hyprland.ironbar.useDefaultConfig - then - { - end = - config.mods.hyprland.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 = [ - { - type = "box"; - orientation = "vertical"; - class = "audio-box"; - widgets = [ - { - type = "box"; - orientation = "horizontal"; - widgets = [ - { - type = "button"; - class = "audio-button"; - label = ""; - on_click = lib.mkIf config.mods.scripts.audioControl "!audioControl bluetooth"; - } - { - type = "button"; - class = "audio-button"; - label = "󰋋"; - on_click = lib.mkIf config.mods.scripts.audioControl "!audioControl internal"; - } - ]; - class = "audio-button-box"; - } - { - type = "label"; - label = "Output"; - } - { - type = "slider"; - class = "audio-slider"; - step = 1.0; - length = 200; - value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; - on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; - } - { - type = "label"; - label = "Input"; - } - { - type = "slider"; - 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%"; - } - ]; - } - ]; - } - { - 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 = [ - { - type = "focused"; - show_icon = true; - show_title = true; - icon_size = 20; - truncate = "end"; - } - ]; - } - // config.mods.hyprland.ironbar.customConfig - else config.mods.hyprland.ironbar.customConfig; - }; + config = + if config.mods.ironbar.useDefaultConfig + then + lib.mkMerge + [ + monitorConfig + config.mods.ironbar.customConfig + ] + else config.mods.ironbar.customConfig; }; } ); diff --git a/modules/programs/keepassxc.nix b/modules/programs/keepassxc.nix index 93c9142..d8c0c6a 100644 --- a/modules/programs/keepassxc.nix +++ b/modules/programs/keepassxc.nix @@ -12,54 +12,63 @@ type = lib.types.bool; description = "Enables the piper program and its daemon"; }; - use_cache_config = lib.mkOption { + useConfig = lib.mkOption { 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 config of keepassxc. Note, this means that changes can't be applied via the program anymore!"; }; - cache_config = lib.mkOption { + config = lib.mkOption { default = '' [General] - LastDatabases=/home/${config.conf.username}/pws/Passwords.kdbx - LastActiveDatabase=/home/${config.conf.username}/pws/Passwords.kdbx - LastOpenedDatabases=/home/${config.conf.username}/pws/Passwords.kdbx - LastKeyFiles=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0>\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0p\0w\0s\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>\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0p\0w\0s\0/\0l\0o\0g\0i\0n\0_\0k\0\x65\0y\0.\0k\0\x65\0y\0x) + ConfigVersion=2 + + [Browser] + Enabled=true + + [GUI] + ApplicationTheme=classic + HidePasswords=true + MinimizeOnClose=true + MinimizeToTray=true + ShowTrayIcon=true + TrayIconAppearance=monochrome-light + + [PasswordGenerator] + Length=30 + + [Security] + EnableCopyOnDoubleClick=true ''; example = ""; type = lib.types.lines; description = "Cache config to be used."; }; + useCacheConfig = lib.mkOption { + default = false; + example = true; + 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!"; + }; + cacheConfig = lib.mkOption { + default = ''''; + example = '' + [General] + LastDatabases=/path/to/database + ''; + type = lib.types.lines; + description = "Cache config to be used."; + }; }; config = lib.mkIf config.mods.keepassxc.enable ( lib.optionalAttrs (options ? home.file) { home.packages = [pkgs.keepassxc]; - xdg.configFile."keepassxc/keepassxc.ini" = { - text = '' - [General] - ConfigVersion=2 - - [Browser] - Enabled=true - - [GUI] - ApplicationTheme=classic - HidePasswords=true - MinimizeOnClose=true - MinimizeToTray=true - ShowTrayIcon=true - TrayIconAppearance=monochrome-light - - [PasswordGenerator] - Length=30 - - [Security] - EnableCopyOnDoubleClick=true - ''; + xdg.configFile."keepassxc/keepassxc.ini" = lib.mkIf config.mods.keepassxc.useConfig { + text = config.mods.keepassxc.config; }; - 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.useCacheConfig { + text = config.mods.keepassxc.cacheConfig; }; } ); diff --git a/modules/programs/kitty.nix b/modules/programs/kitty.nix index eb41e44..ab2ae5a 100644 --- a/modules/programs/kitty.nix +++ b/modules/programs/kitty.nix @@ -41,6 +41,12 @@ in { type = lib.types.bool; description = "Enables kitty"; }; + useDefaultConfig = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enable default config for kitty"; + }; additionalConfig = lib.mkOption { default = {}; example = { @@ -48,7 +54,7 @@ in { enable_audio_bell = "yes"; }; type = with lib.types; attrsOf anything; - description = "Additional kitty configuration"; + description = "Additional kitty configuration. Will be the only configuration if useDefaultConfig is disabled."; }; }; config = lib.mkIf config.mods.kitty.enable ( @@ -59,80 +65,64 @@ in { programs.kitty = { enable = true; settings = - { - enable_audio_bell = "no"; - window_alert_on_bell = "no"; - cursor_blink_interval = "0"; - window_padding_width = "1"; - shell_integration = "yes"; - sync_with_monitor = "no"; - background_opacity = "0.8"; + if config.mods.kitty.useDefaultConfig + then + { + enable_audio_bell = "no"; + window_alert_on_bell = "no"; + cursor_blink_interval = "0"; + window_padding_width = "1"; + shell_integration = "yes"; + sync_with_monitor = "no"; + background_opacity = "0.8"; - font_family = "${config.mods.stylix.fonts.monospace.name}"; - bold_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold"; - italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Italic"; - bold_italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold Italic"; + font_family = "${config.mods.stylix.fonts.monospace.name}"; + bold_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold"; + italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Italic"; + bold_italic_font = "${config.mods.stylix.fonts.monospace.name} Extra Bold Italic"; - background = base; - foreground = "#" + scheme.base05; - selection_foreground = "#" + scheme.base05; - selection_background = base; - url_color = "#" + scheme.base04; - cursor = "#" + scheme.base05; - active_border_color = "#" + scheme.base03; - inactive_border_color = "#" + scheme.base01; - active_tab_background = base; - active_tab_foreground = "#" + scheme.base05; - inactive_tab_background = "#" + scheme.base01; - inactive_tab_foreground = "#" + scheme.base04; - tab_bar_background = "#" + scheme.base01; + background = base; + foreground = "#" + scheme.base05; + selection_foreground = "#" + scheme.base05; + selection_background = base; + url_color = "#" + scheme.base04; + cursor = "#" + scheme.base05; + active_border_color = "#" + scheme.base03; + inactive_border_color = "#" + scheme.base01; + active_tab_background = base; + active_tab_foreground = "#" + scheme.base05; + inactive_tab_background = "#" + scheme.base01; + inactive_tab_foreground = "#" + scheme.base04; + tab_bar_background = "#" + scheme.base01; - mark1_foreground = "#" + scheme.base00; - mark1_background = "#" + scheme.base07; - mark2_foreground = "#" + scheme.base00; - mark2_background = "#" + scheme.base0E; - mark3_foreground = "#" + scheme.base00; - mark3_background = "#" + scheme.base08; + mark1_foreground = "#" + scheme.base00; + mark1_background = "#" + scheme.base07; + mark2_foreground = "#" + scheme.base00; + mark2_background = "#" + scheme.base0E; + mark3_foreground = "#" + scheme.base00; + mark3_background = "#" + scheme.base08; - color0 = "#" + scheme.base03; - color1 = "#" + scheme.base08; - color2 = "#" + scheme.base0B; - color3 = "#" + scheme.base0A; - color4 = "#" + scheme.base0D; - color5 = "#" + scheme.base06; - color6 = "#" + scheme.base0C; - color7 = "#" + scheme.base07; + color0 = "#" + scheme.base03; + color1 = "#" + scheme.base08; + color2 = "#" + scheme.base0B; + color3 = "#" + scheme.base0A; + color4 = "#" + scheme.base0D; + color5 = "#" + scheme.base06; + color6 = "#" + scheme.base0C; + color7 = "#" + scheme.base07; - color8 = "#" + scheme.base04; - color9 = "#" + scheme.base08; - color10 = "#" + scheme.base0B; - color11 = "#" + scheme.base0A; - color12 = "#" + scheme.base0D; - color13 = "#" + scheme.base06; - color14 = "#" + scheme.base0C; - color15 = "#" + scheme.base0B; - - # color0 = base; - # color1 = "#" + scheme.base08; - # color2 = "#" + scheme.base0B; - # color3 = "#" + scheme.base0A; - # color4 = "#" + scheme.base0D; - # color5 = "#" + scheme.base0E; - # color6 = "#" + scheme.base0C; - # color7 = "#" + scheme.base05; - # - # color8 = "#" + scheme.base03; - # color9 = "#" + scheme.base08; - # color10 = "#" + scheme.base0B; - # color11 = "#" + scheme.base0A; - # color12 = "#" + scheme.base0D; - # color13 = "#" + scheme.base0E; - # color14 = "#" + scheme.base0C; - # color15 = "#" + scheme.base07; - - shell = lib.mkIf config.mods.fish.enable "fish"; - } - // config.mods.kitty.additionalConfig; + color8 = "#" + scheme.base04; + color9 = "#" + scheme.base08; + color10 = "#" + scheme.base0B; + color11 = "#" + scheme.base0A; + color12 = "#" + scheme.base0D; + color13 = "#" + scheme.base06; + color14 = "#" + scheme.base0C; + color15 = "#" + scheme.base0B; + shell = lib.mkIf config.mods.fish.enable "fish"; + } + // config.mods.kitty.additionalConfig + else config.mods.kitty.additionalConfig; }; } ); diff --git a/modules/programs/mime.nix b/modules/programs/mime.nix index 1f193d2..03d04d8 100644 --- a/modules/programs/mime.nix +++ b/modules/programs/mime.nix @@ -1,6 +1,7 @@ # Copyright (c) 2020-2021 Mihai Fufezan # credits to fufexan https://github.com/fufexan/dotfiles/blob/main/home/terminal/programs/xdg.nix { + mkDashDefault, config, lib, options, @@ -148,11 +149,11 @@ in { }; userDirs = { - enable = true; - createDirectories = true; + enable = mkDashDefault true; + createDirectories = mkDashDefault true; extraConfig = { - XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; - pws = "${config.home.homeDirectory}/pws"; + XDG_SCREENSHOTS_DIR = mkDashDefault "${config.xdg.userDirs.pictures}/Screenshots"; + pws = mkDashDefault "${config.home.homeDirectory}/pws"; }; }; }; diff --git a/modules/programs/ncspot.nix b/modules/programs/ncspot.nix index 8e9064d..b998942 100644 --- a/modules/programs/ncspot.nix +++ b/modules/programs/ncspot.nix @@ -12,11 +12,8 @@ type = lib.types.bool; description = "Enables ncspot with a config"; }; - }; - config = lib.mkIf config.mods.ncspot.enable ( - lib.optionalAttrs (options ? home.packages) { - home.packages = with pkgs; [ncspot]; - xdg.configFile."ncspot/config.toml".source = (pkgs.formats.toml {}).generate "ncspot" { + config = lib.mkOption { + default = { notify = true; shuffle = true; cover_max_scale = 2; @@ -52,6 +49,16 @@ body = "%title"; }; }; + example = {}; + type = with lib.types; attrsOf anything; + description = "config"; + }; + }; + config = lib.mkIf config.mods.ncspot.enable ( + lib.optionalAttrs (options ? home.packages) { + home.packages = with pkgs; [ncspot]; + xdg.configFile."ncspot/config.toml".source = + lib.mkIf config.mods.ncspot.useConfig (pkgs.formats.toml {}).generate "ncspot" config.mods.ncspot.config; } ); } diff --git a/modules/programs/starship.nix b/modules/programs/starship.nix index 25fc53b..de86504 100644 --- a/modules/programs/starship.nix +++ b/modules/programs/starship.nix @@ -1,4 +1,5 @@ { + mkDashDefault, lib, config, options, @@ -45,7 +46,7 @@ code_format = "[](bg:prev_bg fg:#5256c3)[ $symbol ($version)](bg:#5256c3)"; in { enable = true; - interactiveOnly = true; + interactiveOnly = mkDashDefault true; presets = lib.mkIf config.mods.starship.useDefaultPrompt ["pastel-powerline"]; settings = lib.mkIf config.mods.starship.useDefaultPrompt { diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index 515f45c..657f078 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -1,4 +1,5 @@ { + mkDashDefault, lib, config, options, @@ -88,11 +89,11 @@ (lib.optionalAttrs (options ? stylix) { stylix = { enable = true; - image = ../../base/black.jpg; - polarity = "dark"; + image = mkDashDefault ../../base/black.jpg; + polarity = mkDashDefault "dark"; targets = { - nixvim.enable = false; - fish.enable = false; + nixvim.enable = mkDashDefault false; + fish.enable = mkDashDefault false; }; fonts = config.mods.stylix.fonts; cursor = config.mods.stylix.cursor; diff --git a/modules/programs/virtmanager.nix b/modules/programs/virtmanager.nix index 84c7c0a..bf81b93 100644 --- a/modules/programs/virtmanager.nix +++ b/modules/programs/virtmanager.nix @@ -1,4 +1,5 @@ { + mkDashDefault, lib, config, options, @@ -41,15 +42,15 @@ in { libvirtd = { enable = true; qemu = { - package = pkgs.qemu_kvm; - swtpm.enable = true; - ovmf.enable = true; + package = mkDashDefault pkgs.qemu_kvm; + swtpm.enable = mkDashDefault true; + ovmf.enable = mkDashDefault true; ovmf.packages = [pkgs.OVMFFull.fd]; }; }; - spiceUSBRedirection.enable = true; + spiceUSBRedirection.enable = mkDashDefault true; }; - services.spice-vdagentd.enable = true; + services.spice-vdagentd.enable = mkDashDefault true; users.users.${config.conf.username}.extraGroups = [ "libvirtd" diff --git a/patches/darkreader.nix b/patches/darkreader.nix index a1c462a..ef2c19f 100644 --- a/patches/darkreader.nix +++ b/patches/darkreader.nix @@ -1,23 +1,25 @@ # credits to Voronind for darkreader config https://github.com/voronind-com/nix/blob/main/home/program/firefox/default.nix { lib, - stable, + dashNixAdditionalProps, ... -}: -stable.buildNpmPackage rec { - version = "4.9.99"; - pname = "dark-reader"; - npmDepsHash = "sha256-m41HkwgbeRRmxJALQFJl/grYjjIqFOc47ltaesob1FA="; - env.ESBUILD_BINARY_PATH = lib.getExe stable.esbuild; - patches = [./darkeader.patch]; - src = stable.fetchFromGitHub { - hash = "sha256-K375/4qOyE1Tp/T5V5uCGcNd1IVVbT1Pjdnq/8oRHj0="; - owner = "darkreader"; - repo = "darkreader"; - rev = "v${version}"; - }; - installPhase = '' - mkdir -p $out - cp build/release/darkreader-firefox.xpi $out/latest.xpi - ''; -} +}: let + stable = dashNixAdditionalProps.pkgsDarkreader; +in + stable.buildNpmPackage rec { + version = "4.9.99"; + pname = "dark-reader"; + npmDepsHash = "sha256-m41HkwgbeRRmxJALQFJl/grYjjIqFOc47ltaesob1FA="; + env.ESBUILD_BINARY_PATH = lib.getExe stable.esbuild; + patches = [./darkeader.patch]; + src = stable.fetchFromGitHub { + hash = "sha256-K375/4qOyE1Tp/T5V5uCGcNd1IVVbT1Pjdnq/8oRHj0="; + owner = "darkreader"; + repo = "darkreader"; + rev = "v${version}"; + }; + installPhase = '' + mkdir -p $out + cp build/release/darkreader-firefox.xpi $out/latest.xpi + ''; + } From 1ab37deac7203f3ddbcb269bafbb8e68fbac521e Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 11 May 2025 21:45:12 +0200 Subject: [PATCH 258/330] hyprland: remove old wlr atomic env --- modules/programs/hypr/hyprland.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index 676b567..161e1cf 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -367,7 +367,6 @@ in { "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" "QT_SCALE_FACTOR,1" ''EDITOR,"neovide --novsync --nofork"'' - (lib.mkIf config.mods.hypr.hyprland.noAtomic "WLR_DRM_NO_ATOMIC,1") "GTK_USE_PORTAL, 1" (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") From 518b78bf96febca847b6a16759706b678e8f9d11 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 11 May 2025 21:56:23 +0200 Subject: [PATCH 259/330] gamescope: init --- modules/programs/gaming.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 17157ae..46706eb 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -15,6 +15,7 @@ }; tools = lib.mkOption { default = with pkgs; [ + gamescope gamemode steam lutris From b79ba87fcb8af18bc0b6375bee1986c2d7c4bafa Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 13 May 2025 19:30:36 +0200 Subject: [PATCH 260/330] Ironbar fix --- modules/programs/hypr/hyprland.nix | 8 ++++++++ modules/programs/ironbar.nix | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index 161e1cf..5ddc1a5 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -91,6 +91,14 @@ in { Whether to use ironbar in hyprland. ''; }; + ironbarSingleMonitor = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Whether to use ironbar on a single monitor. + ''; + }; useDefaultConfig = lib.mkOption { default = true; example = false; diff --git a/modules/programs/ironbar.nix b/modules/programs/ironbar.nix index ca8255b..ba15edd 100644 --- a/modules/programs/ironbar.nix +++ b/modules/programs/ironbar.nix @@ -121,7 +121,7 @@ ]; }; monitorConfig = - if config.mods.hypr.hyprland.enable + if config.mods.hypr.hyprland.ironbarSingleMonitor then {monitors.${config.mods.hypr.hyprland.defaultMonitor} = ironbarDefaultConfig;} else ironbarDefaultConfig; in { From 1650deb7f218f4437d3707cde7c99170ad8d2185 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 14 May 2025 22:27:57 +0200 Subject: [PATCH 261/330] ltex: remove --- modules/programs/coding.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index f845a1d..b6a71ae 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -178,7 +178,6 @@ in { default = with pkgs; [ typst tinymist - ltex-ls ]; example = []; type = with lib.types; listOf package; From 5f81642dc114b715280a5dbf681b0e43f5683c55 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 16 May 2025 19:28:42 +0200 Subject: [PATCH 262/330] hyprland: Fix gamemode service --- modules/programs/hypr/hyprland.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index 5ddc1a5..334a9ad 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -412,6 +412,8 @@ in { "systemctl --user import-environment" "dbus-update-activation-environment --systemd --all" "hyprctl setcursor Bibata-Modern-Classic 24" + # ensures the systemd service knows what "hyprctl" is :) + (lib.mkIf config.mods.gaming.gamemode "systemctl try-restart gamemoded.service --user") # other programs "${browserName}" From 1cbe5d7e2ac2760372e457e0822c1cc0aab701bb Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 16 May 2025 21:31:30 +0200 Subject: [PATCH 263/330] Use unstable for teams --- modules/programs/teams.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/programs/teams.nix b/modules/programs/teams.nix index 28e45f6..a909ee5 100644 --- a/modules/programs/teams.nix +++ b/modules/programs/teams.nix @@ -3,7 +3,6 @@ config, options, pkgs, - alternativePkgs, ... }: let callPackage = lib.callPackageWith pkgs; @@ -24,7 +23,7 @@ in { }; config = lib.mkIf config.mods.teams.enable ( lib.optionalAttrs (options ? home.packages) { - home.packages = [(callPackage ../../override/teams.nix {chromium = alternativePkgs.chromium;})]; + home.packages = [(callPackage ../../override/teams.nix {chromium = pkgs.chromium;})]; } // (lib.optionalAttrs (options ? boot.kernelModules) { boot = { From 78afacde791d9f29f826d93a2ce05c09db04c9e3 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 16 May 2025 21:52:32 +0200 Subject: [PATCH 264/330] superfreq: init --- flake.nix | 5 ++++- lib/default.nix | 1 + modules/programs/default.nix | 1 + modules/programs/hypr/hyprland.nix | 1 + modules/programs/oxi/default.nix | 14 +++++++++++++- modules/programs/superfreq.nix | 28 ++++++++++++++++++++++++++++ 6 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 modules/programs/superfreq.nix diff --git a/flake.nix b/flake.nix index 893527f..6f639c7 100644 --- a/flake.nix +++ b/flake.nix @@ -49,10 +49,13 @@ oxidash.url = "github:Xetibo/OxiDash"; oxipaste.url = "github:Xetibo/OxiPaste"; oxirun.url = "github:Xetibo/OxiRun"; - hyprdock.url = "github:Xetibo/hyprdock"; + # For now until merged into Xetibo + hyprdock.url = "github:DashieTM/hyprdock"; reset.url = "github:Xetibo/ReSet"; reset-plugins.url = "github:Xetibo/ReSet-Plugins"; + superfreq.url = "github:NotAShelf/superfreq"; + # absolute insanity chaoticNyx.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; diff --git a/lib/default.nix b/lib/default.nix index 40a924a..1f7d151 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -49,6 +49,7 @@ inputs.home-manager.nixosModules.home-manager inputs.stylix.nixosModules.stylix inputs.disko.nixosModules.disko + inputs.superfreq.nixosModules.default ../base ../home ../modules diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 5ad3e09..ebc1ff4 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -41,6 +41,7 @@ ./starship.nix ./streamcontroller.nix ./stylix.nix + ./superfreq.nix ./supersonic.nix ./sway.nix ./teams.nix diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index 334a9ad..1e1725d 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -417,6 +417,7 @@ in { # other programs "${browserName}" + (lib.mkIf config.mods.oxi.hyprdock.enable "hyprdock --server") (lib.mkIf config.mods.hypr.hyprpaper.enable "hyprpaper") (lib.mkIf config.mods.hypr.hyprland.useIronbar "ironbar") (lib.mkIf config.mods.oxi.oxipaste.enable "oxipaste_daemon") diff --git a/modules/programs/oxi/default.nix b/modules/programs/oxi/default.nix index 9c3ac57..99de567 100644 --- a/modules/programs/oxi/default.nix +++ b/modules/programs/oxi/default.nix @@ -34,6 +34,12 @@ type = lib.types.bool; description = "Enables hyprdock"; }; + settings = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = "settings for hyprdock"; + }; }; oxicalc = { enable = lib.mkOption { @@ -47,7 +53,10 @@ config = lib.mkIf config.mods.oxi.enable ( lib.optionalAttrs (options ? home.packages) { programs = { - hyprdock.enable = lib.mkIf config.mods.oxi.hyprdock.enable true; + hyprdock = { + enable = config.mods.oxi.hyprdock.enable; + settings = config.mods.oxi.hyprdock.settings; + }; oxicalc.enable = lib.mkIf config.mods.oxi.oxicalc.enable true; ReSet = lib.mkIf config.mods.oxi.ReSet.enable { enable = true; @@ -65,5 +74,8 @@ }; }; } + // lib.optionalAttrs (options ? services.logind) { + services.logind.lidSwitchExternalPower = "ignore"; + } ); } diff --git a/modules/programs/superfreq.nix b/modules/programs/superfreq.nix new file mode 100644 index 0000000..f031e2f --- /dev/null +++ b/modules/programs/superfreq.nix @@ -0,0 +1,28 @@ +{ + lib, + options, + config, + ... +}: { + options.mods.superfreq = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = ''Enables superfreq''; + }; + settings = lib.mkOption { + default = {}; + example = {}; + type = with lib.types; attrsOf anything; + description = ''Superfreq config''; + }; + }; + + config = lib.optionalAttrs (options ? services.superfreq) { + services.superfreq = { + enable = config.mods.superfreq.enable; + settings = config.mods.superfreq.settings; + }; + }; +} From c2127e00474d9e934b67fcc3316f804e7a6eae32 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 19 May 2025 20:41:37 +0200 Subject: [PATCH 265/330] fastfetch: fix config --- modules/programs/fastfetch.nix | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/modules/programs/fastfetch.nix b/modules/programs/fastfetch.nix index 71b6218..52366e7 100644 --- a/modules/programs/fastfetch.nix +++ b/modules/programs/fastfetch.nix @@ -57,18 +57,20 @@ config = lib.optionalAttrs (options ? home.packages) { xdg.configFile."fastfetch/config.jsonc" = lib.mkIf (config.mods.dashfetch.enable) { - source = (pkgs.formats.json {}).generate "config.jsonc" { - "$schema" = "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json"; - logo = { - type = mkDashDefault "kitty"; - source = mkDashDefault ../../assets/logo2.png; - width = mkDashDefault 35; - padding = mkDashDefault { - top = mkDashDefault 1; + source = + (pkgs.formats.json {}).generate "config.jsonc" + { + "$schema" = "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json"; + logo = { + type = "kitty"; + source = ../../assets/logo2.png; + width = 35; + padding = { + top = 1; + }; }; + modules = config.mods.dashfetch.modules; }; - modules = config.mods.dashfetch.modules; - }; }; }; } From 37a5bfee0f254efdd49f14ee094c4f14733bf8fc Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 19 May 2025 20:47:46 +0200 Subject: [PATCH 266/330] inputs: prefer nixpkgs packages --- modules/programs/anyrun.nix | 1 + modules/programs/greetd.nix | 2 +- modules/programs/hypr/hyprland.nix | 1 + modules/programs/ironbar.nix | 2 ++ 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/programs/anyrun.nix b/modules/programs/anyrun.nix index 46f4d5c..b1b7922 100644 --- a/modules/programs/anyrun.nix +++ b/modules/programs/anyrun.nix @@ -57,6 +57,7 @@ config = lib.mkIf config.mods.anyrun.enable ( lib.optionalAttrs (options ? home.packages) { programs.anyrun = lib.mkForce { + package = pkgs.anyrun; enable = true; config = if config.mods.anyrun.useDefaultConfig diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 064f61b..2d1727c 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -37,7 +37,7 @@ }; greeterCommand = lib.mkOption { default = "${ - lib.getExe inputs.hyprland.packages.${config.conf.system}.hyprland + lib.getExe pkgs.hyprland } --config /etc/greetd/hyprgreet.conf"; example = "${ lib.getExe pkgs.cage diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index 1e1725d..5a9e0e5 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -160,6 +160,7 @@ in { ]; wayland.windowManager.hyprland = { + package = mkDashDefault pkgs.hyprland; enable = true; settings = if config.mods.hypr.hyprland.useDefaultConfig diff --git a/modules/programs/ironbar.nix b/modules/programs/ironbar.nix index ba15edd..300e1a2 100644 --- a/modules/programs/ironbar.nix +++ b/modules/programs/ironbar.nix @@ -1,4 +1,5 @@ { + mkDashDefault, lib, config, pkgs, @@ -176,6 +177,7 @@ in { config = lib.mkIf (config.mods.ironbar.enable || config.mods.hypr.hyprland.useIronbar) ( lib.optionalAttrs (options ? programs.ironbar) { programs.ironbar = { + package = mkDashDefault pkgs.ironbar; enable = true; style = if config.mods.ironbar.useDefaultCss From b5fe0e39fccf2aef1ad22ee3c7366f89a1971f3d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 21 May 2025 20:53:45 +0200 Subject: [PATCH 267/330] chore: Uncomment fixed packages --- modules/conf.nix | 5 +---- modules/programs/gaming.nix | 3 +-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/modules/conf.nix b/modules/conf.nix index 472e002..0e3a166 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -75,10 +75,7 @@ }; additionalBootKernalParams = lib.mkOption { - default = [ - # TODO test if needed - #"video=${config.conf.defaultMonitor}:${config.conf.defaultMonitorMode}" - ]; + default = []; example = []; type = with lib.types; listOf str; description = '' diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 46706eb..1bb8d96 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -21,8 +21,7 @@ lutris wineWowPackages.stable adwsteamgtk - # TODO broken - #heroic + heroic mangohud ]; example = []; From f7ee4c0d5c5457b431b802973ee1ab0cea299a2c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 24 May 2025 15:42:14 +0200 Subject: [PATCH 268/330] darkreader: split into own option --- lib/foxextensions.nix | 81 ++++++++++++++------------ modules/programs/browser/firefox.nix | 14 ++++- modules/programs/browser/librewolf.nix | 14 ++++- modules/programs/browser/zen.nix | 14 ++++- 4 files changed, 82 insertions(+), 41 deletions(-) diff --git a/lib/foxextensions.nix b/lib/foxextensions.nix index 48603de..24669f5 100644 --- a/lib/foxextensions.nix +++ b/lib/foxextensions.nix @@ -1,7 +1,5 @@ { lib, - dashNixAdditionalProps, - pkgs, name, ... }: let @@ -12,42 +10,49 @@ }; }; in { - options.mods.browser.${name}.extensions = lib.mkOption { - default = [ - (mkExtension "uBlock0@raymondhill.net" "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi") - (mkExtension "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}" "https://addons.mozilla.org/firefox/downloads/latest/user-agent-string-switcher/latest.xpi") - (mkExtension "{d7742d87-e61d-4b78-b8a1-b469842139fa}" "https://addons.mozilla.org/firefox/downloads/latest/vimium-ff/latest.xpi") - (mkExtension "firefox@ghostery.com" "https://addons.mozilla.org/firefox/downloads/latest/ghostery/latest.xpi") - (mkExtension "CanvasBlocker@kkapsner.de" "https://addons.mozilla.org/firefox/downloads/latest/canvasblocker/latest.xpi") - (mkExtension "jid1-KKzOGWgsW3Ao4Q@jetpack" "https://addons.mozilla.org/firefox/downloads/latest/i-dont-care-about-cookies/latest.xpi") - (mkExtension "keepassxc-browser@keepassxc.org" "https://addons.mozilla.org/firefox/downloads/latest/keepassxc-browser/latest.xpi") - (mkExtension "@react-devtools" "https://addons.mozilla.org/firefox/downloads/latest/react-devtools/latest.xpi") - (mkExtension "extension@redux.devtools" "https://addons.mozilla.org/firefox/downloads/latest/reduxdevtools/latest.xpi") - (mkExtension "private-relay@firefox.com" "https://addons.mozilla.org/firefox/downloads/latest/private-relay/latest.xpi") - (mkExtension "addon@darkreader.org" "file://${pkgs.callPackage ../patches/darkreader.nix {inherit lib dashNixAdditionalProps;}}/latest.xpi") - ]; - example = [ - { - "78272b6fa58f4a1abaac99321d503a20@proton.me" = { - install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/proton-pass/latest.xpi"; - installation_mode = "normal_installed"; + options.mods.browser.${name} = { + darkreader = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Whether to enable darkreader"; + }; + extensions = lib.mkOption { + default = [ + (mkExtension "uBlock0@raymondhill.net" "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi") + (mkExtension "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}" "https://addons.mozilla.org/firefox/downloads/latest/user-agent-string-switcher/latest.xpi") + (mkExtension "{d7742d87-e61d-4b78-b8a1-b469842139fa}" "https://addons.mozilla.org/firefox/downloads/latest/vimium-ff/latest.xpi") + (mkExtension "firefox@ghostery.com" "https://addons.mozilla.org/firefox/downloads/latest/ghostery/latest.xpi") + (mkExtension "CanvasBlocker@kkapsner.de" "https://addons.mozilla.org/firefox/downloads/latest/canvasblocker/latest.xpi") + (mkExtension "jid1-KKzOGWgsW3Ao4Q@jetpack" "https://addons.mozilla.org/firefox/downloads/latest/i-dont-care-about-cookies/latest.xpi") + (mkExtension "keepassxc-browser@keepassxc.org" "https://addons.mozilla.org/firefox/downloads/latest/keepassxc-browser/latest.xpi") + (mkExtension "@react-devtools" "https://addons.mozilla.org/firefox/downloads/latest/react-devtools/latest.xpi") + (mkExtension "extension@redux.devtools" "https://addons.mozilla.org/firefox/downloads/latest/reduxdevtools/latest.xpi") + (mkExtension "private-relay@firefox.com" "https://addons.mozilla.org/firefox/downloads/latest/private-relay/latest.xpi") + ]; + example = [ + { + "78272b6fa58f4a1abaac99321d503a20@proton.me" = { + install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/proton-pass/latest.xpi"; + installation_mode = "normal_installed"; + }; + } + ]; + type = with lib.types; listOf anything; + description = '' + List of extensions via attrsets: + ```nix + # id + # figure out the id via: + # nix run github:tupakkatapa/mozid -- 'https://addons.mozilla.org/en/firefox/addon/ublock-origin' + "uBlock0@raymondhill.net" = { + # install url + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + # method https://mozilla.github.io/policy-templates/#extensionsettings + installation_mode = "force_installed"; }; - } - ]; - type = with lib.types; listOf anything; - description = '' - List of extensions via attrsets: - ```nix - # id - # figure out the id via: - # nix run github:tupakkatapa/mozid -- 'https://addons.mozilla.org/en/firefox/addon/ublock-origin' - "uBlock0@raymondhill.net" = { - # install url - install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; - # method https://mozilla.github.io/policy-templates/#extensionsettings - installation_mode = "force_installed"; - }; - ``` - ''; + ``` + ''; + }; }; } diff --git a/modules/programs/browser/firefox.nix b/modules/programs/browser/firefox.nix index 5a0abac..6493b79 100644 --- a/modules/programs/browser/firefox.nix +++ b/modules/programs/browser/firefox.nix @@ -103,7 +103,19 @@ in { extraPolicies = config.mods.browser.firefox.configuration // { - ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} config.mods.browser.firefox.extensions; + ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} (config.mods.browser.firefox.extensions + ++ ( + if (config.mods.browser.firefox.darkreader) + then [ + { + "addon@darkreader.org" = { + install_url = "file://${pkgs.callPackage ../../../patches/darkreader.nix {inherit lib dashNixAdditionalProps;}}/latest.xpi"; + installation_mode = "normal_installed"; + }; + } + ] + else [] + )); }; }; profiles = builtins.listToAttrs config.mods.browser.firefox.profiles; diff --git a/modules/programs/browser/librewolf.nix b/modules/programs/browser/librewolf.nix index 79f67af..a290fe2 100644 --- a/modules/programs/browser/librewolf.nix +++ b/modules/programs/browser/librewolf.nix @@ -97,7 +97,19 @@ in { extraPolicies = config.mods.browser.librewolf.configuration // { - ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} config.mods.browser.librewolf.extensions; + ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} (config.mods.browser.librewolf.extensions + ++ ( + if (config.mods.browser.firefox.darkreader) + then [ + { + "addon@darkreader.org" = { + install_url = "file://${pkgs.callPackage ../../../patches/darkreader.nix {inherit lib dashNixAdditionalProps;}}/latest.xpi"; + installation_mode = "normal_installed"; + }; + } + ] + else [] + )); }; }; profiles = builtins.listToAttrs config.mods.browser.librewolf.profiles; diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index 571edf3..5049079 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -130,7 +130,19 @@ in { extraPolicies = config.mods.browser.zen.configuration // { - ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} config.mods.browser.zen.extensions; + ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} (config.mods.browser.zen.extensions + ++ ( + if (config.mods.browser.firefox.darkreader) + then [ + { + "addon@darkreader.org" = { + install_url = "file://${pkgs.callPackage ../../../patches/darkreader.nix {inherit lib dashNixAdditionalProps;}}/latest.xpi"; + installation_mode = "normal_installed"; + }; + } + ] + else [] + )); }; }; profiles = builtins.listToAttrs config.mods.browser.zen.profiles; From 88c305d4f21aecc8ec439c3c88c05ddcfe59cc47 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 26 May 2025 10:06:03 +0200 Subject: [PATCH 269/330] Add pnpm --- modules/programs/coding.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index b6a71ae..7bcf931 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -241,6 +241,7 @@ in { typescript nodePackages.typescript-language-server nodePackages.prettier + pnpm ]; example = []; type = with lib.types; listOf package; From c62cc3a2bd80ebeb9e55cb6198f9a4283687f12a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 29 May 2025 19:48:10 +0200 Subject: [PATCH 270/330] oxipaste: update command --- modules/programs/hypr/hyprland.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index 5a9e0e5..bf5b1f9 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -194,7 +194,7 @@ in { (lib.mkIf (config.mods.oxi.oxidash.enable) "$mod SUPER,M,exec,oxidash") (lib.mkIf (config.mods.oxi.oxicalc.enable) "$mod SUPER,G,exec,oxicalc") (lib.mkIf (config.mods.oxi.oxishut.enable) "$mod SUPER,D,exec,oxishut") - (lib.mkIf (config.mods.oxi.oxipaste.enable) "$mod SUPER,A,exec,oxipaste-iced") + (lib.mkIf (config.mods.oxi.oxipaste.enable) "$mod SUPER,A,exec,oxipaste") (lib.mkIf (config.mods.oxi.hyprdock.enable) "$mod SUPERSHIFT,P,exec,hyprdock --gui") (lib.mkIf (config.mods.hypr.hyprlock.enable) "$mod SUPERSHIFT,L,exec, playerctl -a pause & hyprlock & systemctl suspend") (lib.mkIf (config.mods.hypr.hyprlock.enable) "$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate") From 92d5e800a2825f334917e76556e906605b2c1d4c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 29 May 2025 21:04:23 +0200 Subject: [PATCH 271/330] chaoticNyx: move to module --- lib/default.nix | 3 +++ lib/importPkgs.nix | 2 +- modules/programs/gaming.nix | 1 + modules/programs/xone.nix | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/default.nix b/lib/default.nix index 1f7d151..2f3a471 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -50,9 +50,11 @@ inputs.stylix.nixosModules.stylix inputs.disko.nixosModules.disko inputs.superfreq.nixosModules.default + inputs.sops-nix.nixosModules.sops ../base ../home ../modules + inputs.chaoticNyx.nixosModules.default ]; home = [ inputs.anyrun.homeManagerModules.default @@ -69,6 +71,7 @@ inputs.sops-nix.homeManagerModules.sops inputs.dashvim.homeManagerModules.dashvim inputs.fancontrol.homeManagerModules.default + inputs.chaoticNyx.homeManagerModules.default ../modules ]; }, diff --git a/lib/importPkgs.nix b/lib/importPkgs.nix index 5ce6aad..77e1299 100644 --- a/lib/importPkgs.nix +++ b/lib/importPkgs.nix @@ -12,6 +12,6 @@ import pkgs { }; overlays = [ inputs.nur.overlays.default - inputs.chaoticNyx.overlays.default + inputs.chaoticNyx.overlays.cache-friendly ]; } diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 1bb8d96..bf99b16 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -75,6 +75,7 @@ lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = config.mods.gaming.tools; boot.kernelPackages = lib.mkForce pkgs.linuxPackages_cachyos; + services.scx.enable = true; programs = { steam.enable = mkDashDefault config.mods.gaming.steam; diff --git a/modules/programs/xone.nix b/modules/programs/xone.nix index 36d92f0..84ecd48 100644 --- a/modules/programs/xone.nix +++ b/modules/programs/xone.nix @@ -15,5 +15,5 @@ }; }; - config = lib.optionalAttrs (options ? hardware) {hardware.xone.enable = true;}; + config = lib.optionalAttrs (options ? hardware) {hardware.xone.enable = config.mods.xone.enable;}; } From c31afcac981abe9200f09cac1e07fd91355397fd Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 9 Jun 2025 13:29:45 +0200 Subject: [PATCH 272/330] configure xdg-desktop-portal --- flake.nix | 5 --- modules/programs/hypr/hyprland.nix | 49 ++++++++++++++++++------------ 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/flake.nix b/flake.nix index 6f639c7..f074440 100644 --- a/flake.nix +++ b/flake.nix @@ -21,11 +21,6 @@ sops-nix.url = "github:Mic92/sops-nix"; - Hyprspace = { - url = "github:KZDKM/Hyprspace"; - inputs.hyprland.follows = "hyprland"; - }; - hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; ironbar = { diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index bf5b1f9..986ef8a 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -4,7 +4,6 @@ lib, options, pkgs, - inputs, ... }: let browserName = @@ -141,6 +140,15 @@ in { Please note, plugins tend to break VERY often. ''; }; + filePickerPortal = lib.mkOption { + default = "gnome"; + example = "kde"; + type = with lib.types; (enum ["gnome" "kde" "gtk" "disable"]); + description = '' + The file picker portal to use with Hyprland. + Disable removes the config, allowing you to set it yourself. + ''; + }; }; config = lib.mkIf config.mods.hypr.hyprland.enable ( @@ -152,16 +160,30 @@ in { slurp satty xdg-desktop-portal-gtk - # xdg-desktop-portal-hyprland copyq wl-clipboard hyprcursor hyprpicker + (lib.mkIf (config.mods.hypr.hyprland.filePickerPortal == "kde") xdg-desktop-portal-kde) + (lib.mkIf (config.mods.hypr.hyprland.filePickerPortal == "gnome") xdg-desktop-portal-gnome) ]; + xdg.configFile."xdg-desktop-portal/portals.conf" = lib.mkIf (config.mods.hypr.hyprland.filePickerPortal != "none") { + text = '' + [preferred] + default = hyprland;gtk + org.freedesktop.impl.portal.FileChooser = ${config.mods.hypr.hyprland.filePickerPortal} + ''; + }; + wayland.windowManager.hyprland = { - package = mkDashDefault pkgs.hyprland; enable = true; + package = mkDashDefault pkgs.hyprland; + plugins = + [ + (lib.mkIf config.mods.hypr.hyprland.hyprspaceEnable pkgs.hyprlandPlugins.hyprspace) + ] + ++ config.mods.hypr.hyprland.plugins; settings = if config.mods.hypr.hyprland.useDefaultConfig then @@ -281,6 +303,9 @@ in { "$mod SUPER,P,resizeactive,20 0" "$mod SUPER,O,resizeactive,0 -20" "$mod SUPER,I,resizeactive,0 20" + + (lib.mkIf config.mods.hypr.hyprland.hyprspaceEnable + "SUPER, W, overview:toggle") ]; general = { @@ -426,27 +451,11 @@ in { ] ++ config.mods.hypr.hyprland.extraAutostart; - plugin = - lib.mkMerge - [ - { - hyprspace = lib.mkIf config.mods.hypr.hyprland.hyprspaceEnable { - bind = [ - "SUPER, W, overview:toggle, toggle" - ]; - }; - } - config.mods.hypr.hyprland.pluginConfig - ]; + plugin = config.mods.hypr.hyprland.pluginConfig; } config.mods.hypr.hyprland.customConfig ] else lib.mkForce config.mods.hypr.hyprland.customConfig; - plugins = - [ - (lib.mkIf config.mods.hypr.hyprland.hyprspaceEnable inputs.Hyprspace.packages.${pkgs.system}.Hyprspace) - ] - ++ config.mods.hypr.hyprland.plugins; }; } ); From 01ed785bf0669ef0442f1ec2a22be87f2366b66c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 9 Jun 2025 20:20:02 +0200 Subject: [PATCH 273/330] Remove direct installations of pnpm and yarn --- modules/programs/coding.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 7bcf931..b6a71ae 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -241,7 +241,6 @@ in { typescript nodePackages.typescript-language-server nodePackages.prettier - pnpm ]; example = []; type = with lib.types; listOf package; From 755638fe48177f067fb4edc682f4da2b418e014e Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 16 Jun 2025 23:27:50 +0200 Subject: [PATCH 274/330] feat(wallpaper): Use themed nix wallpaper by default --- assets/rainbow.svg | 141 ++++++++++++++++++++++++++++++++++++ modules/programs/stylix.nix | 36 +++++++-- 2 files changed, 169 insertions(+), 8 deletions(-) create mode 100644 assets/rainbow.svg diff --git a/assets/rainbow.svg b/assets/rainbow.svg new file mode 100644 index 0000000..9f59c7c --- /dev/null +++ b/assets/rainbow.svg @@ -0,0 +1,141 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index 657f078..a95b488 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -4,9 +4,28 @@ config, options, unstable, + inputs, pkgs, ... -}: { +}: let + svg = ../../assets/rainbow.svg; + sd = lib.getExe pkgs.sd; + base16 = pkgs.callPackage inputs.base16.lib {}; + mkWallpaper = schemeStr: let + scheme = base16.mkSchemeAttrs schemeStr; + in + pkgs.runCommand "rainbow.png" {} '' + cat ${svg} \ + | ${sd} '#f9e2af' '#${scheme.base0A}' \ + | ${sd} '#fab387' '#${scheme.base09}' \ + | ${sd} '#f38ba8' '#${scheme.base08}' \ + | ${sd} '#89b4fa' '#${scheme.base0D}' \ + | ${sd} '#cba6f7' '#${scheme.base0E}' \ + | ${sd} '#a6e3a1' '#${scheme.base0B}' \ + | ${sd} '#1e1e2e' '#${scheme.base00}' \ + | ${lib.getExe pkgs.imagemagick} svg:- png:$out + ''; +in { options.mods.stylix = { colorscheme = lib.mkOption { default = "catppuccin-mocha"; @@ -85,11 +104,16 @@ description = "font config"; }; }; - config = + config = let + scheme = + if builtins.isAttrs config.mods.stylix.colorscheme + then config.mods.stylix.colorscheme + else "${pkgs.base16-schemes}/share/themes/${config.mods.stylix.colorscheme}.yaml"; + in (lib.optionalAttrs (options ? stylix) { stylix = { enable = true; - image = mkDashDefault ../../base/black.jpg; + image = mkDashDefault (mkWallpaper scheme); polarity = mkDashDefault "dark"; targets = { nixvim.enable = mkDashDefault false; @@ -97,11 +121,7 @@ }; fonts = config.mods.stylix.fonts; cursor = config.mods.stylix.cursor; - 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 = scheme; }; }) // lib.optionalAttrs (options ? environment.systemPackages) { From 2316836b55e503a1cc7ea2b3cb011ce6da056600 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 16 Jun 2025 23:35:34 +0200 Subject: [PATCH 275/330] chore(gaming): Disable custom scheduler due to freezes --- modules/programs/gaming.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index bf99b16..2c6617a 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -75,7 +75,8 @@ lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = config.mods.gaming.tools; boot.kernelPackages = lib.mkForce pkgs.linuxPackages_cachyos; - services.scx.enable = true; + # TODO Re-enable when fixed + #services.scx.enable = true; programs = { steam.enable = mkDashDefault config.mods.gaming.steam; From 5c34749874ebaefe804e5af11be1115259b4a617 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 16 Jun 2025 23:47:32 +0200 Subject: [PATCH 276/330] chore(hyprland): Remove remaining userspecific defaults --- modules/programs/hypr/hyprland.nix | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index 986ef8a..c6f3c8d 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -201,7 +201,6 @@ in { # screenshots ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' - ''$mod SUPERSHIFTALT,S,exec,grim -c -g "2560,0 3440x1440" - | wl-copy'' # regular programs "$mod SUPER,F,exec,${browserName}" @@ -312,7 +311,6 @@ in { gaps_out = mkDashDefault "3,5,5,5"; border_size = mkDashDefault 3; "col.active_border" = lib.mkOverride 51 "0xFFFF0000 0xFF00FF00 0xFF0000FF 45deg"; - # "col.inactive_border" = "0x66333333"; allow_tearing = lib.mkIf config.mods.hypr.hyprland.noAtomic true; }; @@ -401,7 +399,6 @@ in { "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" "QT_SCALE_FACTOR,1" ''EDITOR,"neovide --novsync --nofork"'' - "GTK_USE_PORTAL, 1" (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") (lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland") @@ -421,15 +418,10 @@ in { "float,class:^(.*)(winecfg.exe)(.*)$" "float,class:^(.*)(copyq)(.*)$" "center,class:^(.*)(swappy)(.*)$" - "float,title:^(.*)(reset)(.*)$" "workspace 10 silent,class:^(.*)(steam)(.*)$" - "workspace 9 silent,class:^(.*)(dota)(.*)$" - "workspace 9 silent,class:^(.*)(battlebits)(.*)$" - "workspace 9 silent,class:^(.*)(aoe)(.*)$" + + # Otherwise neovide will ignore tiling "suppressevent fullscreen maximize,class:^(.*)(neovide)(.*)$" - "immediate,class:^(.*)(Pal)$" - "immediate,class:^(.*)(dota2)$" - "immediate,class:^(.*)(needforspeedheat.exe)$" ]; exec-once = @@ -437,7 +429,7 @@ in { # environment "systemctl --user import-environment" "dbus-update-activation-environment --systemd --all" - "hyprctl setcursor Bibata-Modern-Classic 24" + "hyprctl setcursor ${config.mods.stylix.cursor.name} ${toString config.mods.stylix.cursor.size}" # ensures the systemd service knows what "hyprctl" is :) (lib.mkIf config.mods.gaming.gamemode "systemctl try-restart gamemoded.service --user") From 114ad5b56931d5d200f263b516b6758745d83fcc Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 17 Jun 2025 23:50:59 +0200 Subject: [PATCH 277/330] bugfix(hyprdock): Use Xetibo version --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index f074440..38a651e 100644 --- a/flake.nix +++ b/flake.nix @@ -45,7 +45,7 @@ oxipaste.url = "github:Xetibo/OxiPaste"; oxirun.url = "github:Xetibo/OxiRun"; # For now until merged into Xetibo - hyprdock.url = "github:DashieTM/hyprdock"; + hyprdock.url = "github:Xetibo/hyprdock"; reset.url = "github:Xetibo/ReSet"; reset-plugins.url = "github:Xetibo/ReSet-Plugins"; From d3787c546e049ac7261192cab4771575ad623ff0 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 20 Jun 2025 03:31:06 +0200 Subject: [PATCH 278/330] feat(ironbar): Update config --- modules/programs/ironbar.nix | 431 +++++++++++++++++++++++------------ 1 file changed, 289 insertions(+), 142 deletions(-) diff --git a/modules/programs/ironbar.nix b/modules/programs/ironbar.nix index 300e1a2..98942a9 100644 --- a/modules/programs/ironbar.nix +++ b/modules/programs/ironbar.nix @@ -13,94 +13,150 @@ ironbarDefaultConfig = { end = [ { - type = "sys_info"; - format = [" {memory_percent}"]; - interval.memory = 30; - class = "memory-usage"; + class = "music"; + type = "music"; + format = ""; + truncate = { + mode = "end"; + max_length = 0; + }; + icons = { + play = ""; + pause = ""; + }; + truncate_popup_title = { + mode = "end"; + max_length = 15; + }; + truncate_popup_album = { + mode = "end"; + max_length = 15; + }; + truncate_popup_artist = { + mode = "end"; + max_length = 15; + }; } { - type = "custom"; bar = [ { - type = "button"; class = "popup-button"; label = ""; on_click = "popup:toggle"; + type = "button"; } ]; class = "popup-button-box"; popup = [ { - type = "box"; - orientation = "vertical"; class = "audio-box"; + orientation = "vertical"; + type = "box"; widgets = [ { - type = "box"; + class = "audio-button-box"; orientation = "horizontal"; + type = "box"; widgets = [ { - type = "button"; class = "audio-button"; label = ""; - on_click = lib.mkIf config.mods.scripts.audioControl "!audioControl bluetooth"; + on_click = "!audioControl bluetooth"; + type = "button"; } { - type = "button"; class = "audio-button"; label = "󰋋"; - on_click = lib.mkIf config.mods.scripts.audioControl "!audioControl internal"; + on_click = "!audioControl internal"; + type = "button"; } ]; - class = "audio-button-box"; } { - type = "label"; + class = "audio-label"; label = "Output"; - } - { - type = "slider"; - class = "audio-slider"; - step = 1.0; - length = 200; - value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; - on_change = "!pactl set-sink-volume @DEFAULT_SINK@ $0%"; - } - { type = "label"; - label = "Input"; } { - type = "slider"; 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-sink-volume @DEFAULT_SINK@ $0%"; + step = 1.0; + type = "slider"; + value = "pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; + label = "{{pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }'}}"; + } + { + class = "audio-label"; + label = "Input"; + type = "label"; + } + { + class = "audio-slider"; + length = 200; on_change = "!pactl set-source-volume @DEFAULT_SOURCE@ $0%"; + step = 1.0; + type = "slider"; + value = "pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %'"; + } + ]; + } + ]; + type = "custom"; + } + { + bar = [ + { + class = "popup-button"; + label = ""; + on_click = "!oxidash --css /home/dashie/gits/oxidash/style.css"; + type = "button"; + } + ]; + class = "popup-button-box"; + type = "custom"; + } + { + bar = [ + { + class = "popup-button"; + label = ""; + on_click = "popup:toggle"; + type = "button"; + } + ]; + type = "custom"; + class = "popup-button-box"; + popup = [ + { + class = "system-box"; + type = "box"; + widgets = [ + { + class = "memory-usage"; + format = [ + " {cpu_percent}%" + " {memory_used} / {memory_total} GB ({memory_percent}%)" + " {swap_used} / {swap_total} GB ({swap_free} | {swap_percent}%)" + "󰥔 {uptime}" + ]; + direction = "vertical"; + interval = { + memory = 30; + cpu = 5; + temps = 5; + disks = 5; + network = 5; + }; + type = "sys_info"; } ]; } ]; } { - type = "custom"; - bar = [ - { - type = "button"; - class = "popup-button"; - label = ""; - on_click = "!oxidash --css /home/${username}/gits/oxidash/style.css"; - } - ]; - class = "popup-button-box"; + type = "tray"; } - { - type = "clock"; - format = "%I:%M"; - format_popup = "%I:%M:%S"; - locale = "en_US"; - } - {type = "tray";} ]; position = "top"; height = 10; @@ -113,11 +169,10 @@ ]; center = [ { - type = "focused"; - show_icon = true; - show_title = true; - icon_size = 20; - truncate = "end"; + format = "%I:%M"; + format_popup = "%a %d:%m/%I:%M %p"; + locale = "en_US"; + type = "clock"; } ]; }; @@ -188,132 +243,224 @@ in { '' @import url("/home/${username}/.config/gtk-3.0/gtk.css"); + @define-color primary #${scheme.base0D}; + @define-color muted-text #${scheme.base05}; + @define-color background #${scheme.base00}; + @define-color secondary-background #${scheme.base02}; + + * slider { + background-color: @muted-text; + } + * { - color: #${scheme.base0D}; - padding: 0px; - margin: 0px; + transition: + background-color 0.15s ease-in-out, + color 0.15s ease-in-out, + border-color 0.15s ease-in-out; } .background { background-color: rgba(0, 0, 0, 0); - } - - .workspaces { - margin: 2px 0px 0px 5px; - border-radius: 10px; - background-color: #${scheme.base00}; - 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: #${scheme.base02}; - } - - .workspaces .item.focused { - background-color: #${scheme.base02}; - } - - .audio-box { - padding: 2em; - background-color: #${scheme.base00}; - 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; + padding: 0px; + margin: 0px; } .focused { - padding: 0px 5px 0px 5px; - background-color: #${scheme.base00}; + padding: 0px 5px; + background-color: @background; font-size: 17px; border-radius: 10px; } #bar #end { - margin: 0px 5px 0px 0px; - padding: 0px 5px 0px 5px; - background-color: #${scheme.base00}; + margin: 0px 5px; + padding: 0px 5px; + background-color: @background; border-radius: 10px; } .popup-button { - padding: 0px 5px 0px 3px; - margin: 0em 3px; + padding: 0px 5px 0px 2px; border-radius: 100%; font-size: 13px; - background-color: #${scheme.base00}; + background-color: @background; } .popup-button-box { - padding: 2px 0px 2px 0px; - } - - .clock { - padding: 0px 5px 0px 5px; - font-size: 17px; - background-color: #${scheme.base00}; - } - - .clock:hover { - background-color: #${scheme.base02}; + padding: 2px 0px; + margin-right: 4px; } .custom button { - background-color: #${scheme.base00}; + background-color: @background; + color: @primary; } .custom button:hover { - background-color: #${scheme.base02}; + background-color: @secondary-background; + } + + /* audio */ + .audio-box * { + color: @primary; + } + + .audio-box { + padding: 2em; + background-color: @background; + border-radius: 5px; + border: 1px solid @primary; + } + + .audio-slider { + padding: 5px; + margin: 5px 5px 15px; + } + + .audio-label { + font-size: 19px; + } + + .audio-button { + padding: 10px 10px 10px 8px; + min-height: 35px; + min-width: 35px; + margin: 0px 1em; + border-radius: 50%; + font-size: 25px; + } + + .audio-button-box { + padding: 0px 2.5em 0px 2.5em; + margin: 0em 0em 1.5em; + } + + /* clock */ + .clock { + padding: 0px 5px; + font-size: 20px; + border-radius: 5px; + background-color: @background; + color: @primary; + } + + .clock:hover { + background-color: @secondary-background; + } + + .popup-clock { + font-size: 2.5em; + background-color: @background; + border: 1px solid @primary; + padding: 0.5em; + border-radius: 8px; + color: @primary; + } + + .popup-clock .calendar-clock { + margin: 0.25em 0em 0.75em; + color: @primary; + } + + .popup-clock .calendar { + font-size: 24px; + color: @primary; + } + + .popup-clock .calendar:selected { + background-color: @secondary-background; + } + + /* workspaces */ + .workspaces { + margin: 0px 0px 0px 5px; + border-radius: 10px; + background-color: @background; + padding: 2px 5px; + } + + .workspaces .item { + margin: 0px 3px; + font-size: 13px; + border-radius: 100%; + padding: 0px 3px 0px 3px; + background-color: rgba(0, 0, 0, 0); + color: @primary; + } + + .workspaces .item:hover { + background-color: @secondary-background; + color: @primary; + } + + .workspaces .item.focused { + background-color: @primary; + color: @background; + } + + /* music */ + .music { + font-size: 13px; + padding: 0px 4px 0px 3px; + margin: 2px 0px 2px 0px; + background-color: @background; + color: @primary; + } + + .music:hover { + background-color: @secondary-background; + border-radius: 100%; + } + + .music .contents .icon { + margin: 0px 0px 0px 5px; + } + + .popup-music { + background-color: @background; + color: @primary; + border-radius: 8px; + border: 1px solid @primary; + padding: 16px; + font-size: 20px; + } + + .popup-music .controls .btn-prev { + color: @primary; + margin-right: 16px; + } + + .popup-music .controls .btn-next { + color: @primary; + margin-right: 16px; + } + + .popup-music .controls .btn-play { + color: @primary; + margin-right: 16px; + } + + .popup-music .controls .btn-pause { + color: @primary; + margin-right: 16px; + } + + /* system */ + .system-box { + padding: 16px; + color: @primary; + border: 1px solid @primary; + background-color: @background; + border-radius: 8px; } .memory-usage { font-size: 15px; - margin: 0px 5px 0px 0px; + color: @primary; } .memory-usage:hover { - background-color: #${scheme.base02}; - } - - .popup-clock { - background-color: #${scheme.base00}; - 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: #${scheme.base02}; + background-color: @secondary-background; } '' + config.mods.ironbar.customCss From faa8379e250350969ba28f3bfd14c61c738f7e4e Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 20 Jun 2025 23:59:16 +0200 Subject: [PATCH 279/330] feat(oxiced): New stylix to oxiced adapter --- home/themes/oxiced.nix | 53 +++++++++++++++++++++++++++++++++++++ modules/programs/stylix.nix | 12 ++++----- 2 files changed, 59 insertions(+), 6 deletions(-) diff --git a/home/themes/oxiced.nix b/home/themes/oxiced.nix index 562ddd8..5ab624f 100644 --- a/home/themes/oxiced.nix +++ b/home/themes/oxiced.nix @@ -8,9 +8,62 @@ # hence ensure it is by using base16 mkSchemeAttrs base16 = pkgs.callPackage inputs.base16.lib {}; scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; + valueOrDefault = value: fallback: + if (scheme ? oxiced && scheme.oxiced ? ${value}) + then scheme.oxiced.value + else fallback; in { xdg.configFile."oxiced/theme.toml" = { source = (pkgs.formats.toml {}).generate "oxiced" { + base = valueOrDefault "base" scheme.base00; + mantle = valueOrDefault "mantle" scheme.base01; + primary_bg = valueOrDefault "primary_bg" scheme.base02; + secondary_bg = valueOrDefault "secondary_bg" scheme.base03; + tertiary_bg = valueOrDefault "tertiary_bg" scheme.base04; + text = valueOrDefault "text" scheme.base05; + + primary = valueOrDefault "primary" scheme.base0D; + primary_contrast = valueOrDefault "primary_contrast" "FFFFFF"; + secondary = valueOrDefault "primary" scheme.base07; + secondary_contrast = valueOrDefault "secondary_contrast" "FFFFFF"; + + good = valueOrDefault "good" scheme.base0B; + good_contrast = valueOrDefault "good_contrast" "000000"; + bad = valueOrDefault "bad" scheme.base08; + bad_contrast = valueOrDefault "bad_contrast" "FFFFFF"; + warning = valueOrDefault "warning" scheme.base0A; + warning_contrast = valueOrDefault "warning_contrast" "000000"; + info = valueOrDefault "info" scheme.base0C; + info_contrast = valueOrDefault "info_contrast" "FFFFFF"; + + rose = valueOrDefault "rose" scheme.base06; + lavender = valueOrDefault "lavender" scheme.base07; + blue = valueOrDefault "blue" scheme.base0D; + mauve = valueOrDefault "mauve" scheme.base0E; + flamingo = valueOrDefault "flamingo" scheme.base0F; + + border_color_weak = valueOrDefault "border_color_weak" scheme.base05; + border_color_strong = valueOrDefault "border_color_strong" scheme.base0D; + + tint_amount = valueOrDefault "tint_amound" 0.10; + shade_amount = valueOrDefault "shade_amount" 0.05; + + border_radius = valueOrDefault "border_radius" 10; + + padding_xs = valueOrDefault "padding_xs" 4.0; + padding_sm = valueOrDefault "padding_sm" 8.0; + padding_md = valueOrDefault "padding_md" 12.0; + padding_lg = valueOrDefault "padding_lg" 16.0; + padding_xl = valueOrDefault "padding_xl" 24.0; + padding_xxl = valueOrDefault "padding_xxl" 32.0; + + font_sm = valueOrDefault "font_sm" 10.0; + font_md = valueOrDefault "font_md" 14.0; + font_lg = valueOrDefault "font_lg" 18.0; + font_xl = valueOrDefault "font_xl" 24.0; + font_xxl = valueOrDefault "font_xxl" 32.0; + + # legacy compatibility name = scheme.scheme; base00 = scheme.base00; base01 = scheme.base01; diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index a95b488..6dc71af 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -32,8 +32,6 @@ in { example = { # custom tokyo night base00 = "1A1B26"; - # base01 = "16161E"; - # base01 = "15161e"; base01 = "191a25"; base02 = "2F3549"; base03 = "444B6A"; @@ -46,10 +44,6 @@ in { base0A = "0DB9D7"; base0B = "9ECE6A"; base0C = "B4F9F8"; - # base0D = "2AC3DE"; - # base0D = "A9B1D6"; - # base0D = "62A0EA"; - # base0D = "779EF1"; base0D = "366fea"; base0E = "BB9AF7"; base0F = "F7768E"; @@ -65,6 +59,12 @@ in { Can be an attribute set with base00 to base0F, a string that leads to a yaml file in base16-schemes path, or a path to a custom yaml file. + + Also supports the oxiced theme in an oxiced attrset. + oxiced = { + # and more + primary = "#yourcolor"; + }; ''; }; cursor = lib.mkOption { From 5447e31d11ea57e4b0040e82b69591611557a084 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 21 Jun 2025 01:37:19 +0200 Subject: [PATCH 280/330] chore(rocm): disable icd due to broken package --- modules/programs/gpu.nix | 3 ++- modules/programs/stylix.nix | 4 ---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index 5cd26bf..8fd8959 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -91,7 +91,8 @@ (lib.mkIf (config.mods.gpu.intelgpu.enable || config.mods.gpu.amdgpu.enable) pkgs.mesa) ]; rocmPackages = [ - pkgs.rocmPackages.clr.icd + # TODO broken + #pkgs.rocmPackages.clr.icd pkgs.mesa pkgs.mesa.opencl pkgs.vulkan-loader diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index 6dc71af..124cc64 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -61,10 +61,6 @@ in { or a path to a custom yaml file. Also supports the oxiced theme in an oxiced attrset. - oxiced = { - # and more - primary = "#yourcolor"; - }; ''; }; cursor = lib.mkOption { From db7e1c050bc50ad72a6af84bb74a52215fb2a5d0 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 21 Jun 2025 13:29:51 +0200 Subject: [PATCH 281/330] feat(hyprland): Use better animations --- modules/programs/hypr/hyprland.nix | 10 +++++----- modules/programs/ironbar.nix | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index c6f3c8d..2a7d35e 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -323,15 +323,15 @@ in { }; animations = { - bezier = mkDashDefault "penguin,0.05,0.9,0.1,1.0"; + bezier = mkDashDefault "overshot, 0.05, 0.9, 0.1, 1.2"; animation = [ "windowsMove,1,4,default" - "windows,1,7,default,popin 70%" + "windows,1,3,overshot,slide bottom" "windowsOut,1,7,default,popin 70%" - "border,1,10,default" + "border,1,4,default" "fade,1,7,default" - "workspaces,1,6,default" - "layers,1,3,default,popin" + "workspaces,1,4,default" + "layers,1,2,default,slide" ]; }; diff --git a/modules/programs/ironbar.nix b/modules/programs/ironbar.nix index 98942a9..30427f6 100644 --- a/modules/programs/ironbar.nix +++ b/modules/programs/ironbar.nix @@ -109,7 +109,7 @@ { class = "popup-button"; label = ""; - on_click = "!oxidash --css /home/dashie/gits/oxidash/style.css"; + on_click = "!oxidash"; type = "button"; } ]; From d286a7eac9fa02c72d2b4084188523c8c7fc62f7 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 22 Jun 2025 16:10:49 +0200 Subject: [PATCH 282/330] feat(ironbar): Add optional battery module --- flake.nix | 2 +- modules/programs/hypr/hyprland.nix | 2 +- modules/programs/ironbar.nix | 54 +++++++++++++++++++++++++++--- 3 files changed, 51 insertions(+), 7 deletions(-) diff --git a/flake.nix b/flake.nix index 38a651e..b709627 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,7 @@ inputs = { unstable.url = "github:NixOs/nixpkgs/nixos-unstable"; - stable.url = "github:NixOs/nixpkgs/nixos-24.11"; + stable.url = "github:NixOs/nixpkgs/nixos-25.05"; nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; nur.url = "github:nix-community/NUR"; lanzaboote = { diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index 2a7d35e..65beb78 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -141,7 +141,7 @@ in { ''; }; filePickerPortal = lib.mkOption { - default = "gnome"; + default = "gtk"; example = "kde"; type = with lib.types; (enum ["gnome" "kde" "gtk" "disable"]); description = '' diff --git a/modules/programs/ironbar.nix b/modules/programs/ironbar.nix index 30427f6..ed3fa08 100644 --- a/modules/programs/ironbar.nix +++ b/modules/programs/ironbar.nix @@ -10,8 +10,14 @@ username = config.conf.username; base16 = pkgs.callPackage inputs.base16.lib {}; scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; - ironbarDefaultConfig = { + ironbarDefaultConfig = useBatteryModule: { end = [ + (lib.mkIf useBatteryModule + { + type = "upower"; + class = "battery"; + icon_size = 0; + }) { class = "music"; type = "music"; @@ -176,10 +182,10 @@ } ]; }; - monitorConfig = + monitorConfig = useBatteryModule: if config.mods.hypr.hyprland.ironbarSingleMonitor - then {monitors.${config.mods.hypr.hyprland.defaultMonitor} = ironbarDefaultConfig;} - else ironbarDefaultConfig; + then {monitors.${config.mods.hypr.hyprland.defaultMonitor} = ironbarDefaultConfig useBatteryModule;} + else ironbarDefaultConfig useBatteryModule; in { options.mods = { ironbar = { @@ -197,6 +203,12 @@ in { Use preconfigured ironbar config. ''; }; + useBatteryModule = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Whether to use the preconfigured battery module."; + }; customConfig = lib.mkOption { default = {}; example = {}; @@ -398,6 +410,38 @@ in { color: @background; } + /* upower */ + .upower { + font-size: 13px; + padding: 0px 4px 0px 0px; + margin: 2px 0px 2px 0px; + background-color: @background; + color: @primary; + } + + .upower .icon { + opacity: 0.0; + } + + .upower .label { + margin: 2px 0px 0px -8px; + color: @primary; + } + + .upower:hover { + background-color: @secondary-background; + border-radius: 5px; + } + + .popup-upower { + background-color: @background; + color: @primary; + border-radius: 8px; + border: 1px solid @primary; + padding: 16px; + font-size: 20px; + } + /* music */ .music { font-size: 13px; @@ -473,7 +517,7 @@ in { then lib.mkMerge [ - monitorConfig + (monitorConfig config.mods.ironbar.useBatteryModule) config.mods.ironbar.customConfig ] else config.mods.ironbar.customConfig; From 383d454a12aa58f9b3949d39ee758e4382abdba0 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 22 Jun 2025 23:25:16 +0200 Subject: [PATCH 283/330] feat(oxinoti/oxidash): Adopt styling to theme --- modules/programs/oxi/oxidash.nix | 41 +++++++++++++++++++------------- modules/programs/oxi/oxinoti.nix | 40 ++++++++++++++++++++++--------- 2 files changed, 54 insertions(+), 27 deletions(-) diff --git a/modules/programs/oxi/oxidash.nix b/modules/programs/oxi/oxidash.nix index 476eb60..9ea519e 100644 --- a/modules/programs/oxi/oxidash.nix +++ b/modules/programs/oxi/oxidash.nix @@ -2,8 +2,15 @@ lib, config, options, + pkgs, + inputs, ... -}: { +}: let + # at time of using this here, stylix might not be evaluated yet + # hence ensure it is by using base16 mkSchemeAttrs + base16 = pkgs.callPackage inputs.base16.lib {}; + scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; +in { options.mods.oxi.oxidash = { enable = lib.mkOption { default = true; @@ -17,52 +24,54 @@ programs.oxidash.enable = true; xdg.configFile."oxidash/style.css" = { text = '' + @define-color bg #${scheme.base00}; + @define-color primary #${scheme.base0D}; + #MainWindow { border-radius: 10px; + background-color: transparent; } #MainBox { border-radius: 10px; + border: 1px solid @primary; + background-color: @bg; } #MainButtonBox { padding: 10px; margin: 5px 0px 5px 0px; border-radius: 5px; - border: solid 2px #327cd5; + border: solid 1px @primary; } - #DoNotDisturbButton { - } + #DoNotDisturbButton {} - #ExitButton { - } + #ExitButton {} - #ClearNotificationsButton { - } + #ClearNotificationsButton {} - #NotificationsWindow { - } + #NotificationsWindow {} .debugimage { - border: solid 3px blue; + border: solid 3px @primary; } .Notification { padding: 10px; margin: 5px 0px 5px 0px; - border: solid 2px #327cd5; + border: solid 1px @primary; border-radius: 5px; } .CloseNotificationButton { margin: 0px 5px 0px 10px; } - .PictureButtonBox { + + .PictureButtonBox {} + + .BaseBox {} } - .BaseBox { - } - } ''; }; } diff --git a/modules/programs/oxi/oxinoti.nix b/modules/programs/oxi/oxinoti.nix index b3ecafc..d265af3 100644 --- a/modules/programs/oxi/oxinoti.nix +++ b/modules/programs/oxi/oxinoti.nix @@ -2,8 +2,15 @@ lib, config, options, + pkgs, + inputs, ... -}: { +}: let + # at time of using this here, stylix might not be evaluated yet + # hence ensure it is by using base16 mkSchemeAttrs + base16 = pkgs.callPackage inputs.base16.lib {}; + scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; +in { options.mods.oxi.oxinoti = { enable = lib.mkOption { default = true; @@ -19,7 +26,13 @@ text = # css '' - @import url("/home/${config.conf.username}/.config/gtk-3.0/gtk.css"); + @import url("/home/dashie/.config/gtk-3.0/gtk.css"); + + @define-color bg #${scheme.base00}; + @define-color bghover #${scheme.base02}; + @define-color primary #${scheme.base0D}; + @define-color red #${scheme.base08}; + @define-color green #${scheme.base0B}; #MainWindow { background-color: transparent; @@ -34,31 +47,37 @@ } .NotificationBox { - background-color: #353747; + background-color: @bg; border-radius: 5px; border: solid 1px; margin: 0px; - padding: 5px; + } + + .NotificationBox button { + background-color: @bg; + } + + .NotificationBox button:hover { + background-color: @bghover; } .NotificationLow { - border-color: green; + border-color: @green; } .NotificationNormal { - border-color: purple; + border-color: @primary; } .NotificationUrgent { - border-color: red; + border-color: @red; } .miscbox { margin: 0px 10px 0px 0px; } - .bodybox { - } + .bodybox {} .imagebox { margin: 0px 0px 0px 10px; @@ -84,8 +103,7 @@ font-size: 2rem; } - .image { - } + .image {} .bold { font-weight: bold; From 68b8251e006302faa004859affb601692bb5bec2 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 19 Jul 2025 23:42:16 +0200 Subject: [PATCH 284/330] packages(gaming): Add protonplus --- modules/programs/gaming.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 2c6617a..12451d9 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -15,6 +15,7 @@ }; tools = lib.mkOption { default = with pkgs; [ + protonplus gamescope gamemode steam From e73a2f0946fe7b2f6fe287e7227a1445b5434cd1 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 26 Jul 2025 14:13:29 +0200 Subject: [PATCH 285/330] chore(packages): Add nexusmods app --- modules/programs/gaming.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 12451d9..8f3adc0 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -24,6 +24,7 @@ adwsteamgtk heroic mangohud + nexusmods-app ]; example = []; type = with lib.types; listOf package; From 63aff9e90bee766884e3f4fd2b482c82307c238a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 26 Jul 2025 14:32:17 +0200 Subject: [PATCH 286/330] chore(packages): Add steamtinkerlaunch --- modules/programs/gaming.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 8f3adc0..135f859 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -25,6 +25,7 @@ heroic mangohud nexusmods-app + steamtinkerlaunch ]; example = []; type = with lib.types; listOf package; From cc3fbdc57c2f7710d4e06b826c29a48e8c8e20be Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 26 Jul 2025 14:54:24 +0200 Subject: [PATCH 287/330] chore(packages): Add winetricks --- modules/programs/gaming.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 135f859..0b2e228 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -26,6 +26,7 @@ mangohud nexusmods-app steamtinkerlaunch + winetricks ]; example = []; type = with lib.types; listOf package; From ba2eab4c1716bed38a269b749f75b8b3a3dbcab2 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 22 Aug 2025 18:58:31 +0200 Subject: [PATCH 288/330] chore(packages): Update deprecations --- modules/programs/browser/zen.nix | 1 + modules/programs/homePackages.nix | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index 5049079..e26c9a9 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -147,6 +147,7 @@ in { }; profiles = builtins.listToAttrs config.mods.browser.zen.profiles; }; + stylix.targets.zen-browser.profileNames = lib.map (profile: profile.name) config.mods.browser.zen.profiles; } ); } diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index b1303b2..eabd176 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -119,7 +119,7 @@ flake-checker gnome-keyring gnutar - greetd.regreet + regreet killall kitty libnotify From 29b5237c28a4fbfcb649f3a6519e266ac085cbec Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 22 Aug 2025 19:06:27 +0200 Subject: [PATCH 289/330] chore(packages): Remove omnisharp --- modules/programs/coding.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index b6a71ae..88ad5ba 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -306,7 +306,6 @@ in { default = with pkgs; [ #.! dotnet-sdk - omnisharp-roslyn csharpier netcoredbg fsharp From fb2507afe7d6884a6c0dd44edb26f83dca44bd21 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 23 Aug 2025 16:42:12 +0200 Subject: [PATCH 290/330] feature(xdg): Include file picker configuration --- home/default.nix | 15 ++++++++++-- modules/programs/gnomeServices.nix | 1 + modules/programs/hypr/hyprland.nix | 22 +++-------------- modules/programs/media.nix | 38 ++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 21 deletions(-) diff --git a/home/default.nix b/home/default.nix index 8b6d079..ee4f804 100644 --- a/home/default.nix +++ b/home/default.nix @@ -18,10 +18,21 @@ ... }: { xdg = { - portal.config.common.default = mkDashDefault "*"; + portal.config.common = { + default = mkDashDefault "hyprland;gtk"; + "org.freedesktop.impl.portal.FileChooser" = lib.mkIf (config.mods.media.filePickerPortal != "Default") "shana"; + }; portal = { enable = mkDashDefault true; - extraPortals = [pkgs.xdg-desktop-portal-gtk]; + extraPortals = with pkgs; [ + xdg-desktop-portal-gtk # prob needed either way + (lib.mkIf (config.mods.media.filePickerPortal != "Default") xdg-desktop-portal-shana) + (lib.mkIf (config.mods.media.filePickerPortal == "Kde") kdePackages.xdg-desktop-portal-kde) + # Gnome uses their file manager, kinda cool tbh + (lib.mkIf (config.mods.media.filePickerPortal == "Gnome" && !config.mods.nautilus.enable) nautilus) + (lib.mkIf (config.mods.media.filePickerPortal == "Lxqt") xdg-desktop-portal-lxqt) + (lib.mkIf (config.mods.media.filePickerPortal == "Term") xdg-desktop-portal-termfilechooser) + ]; }; }; home-manager = { diff --git a/modules/programs/gnomeServices.nix b/modules/programs/gnomeServices.nix index 01ab872..29bdea8 100644 --- a/modules/programs/gnomeServices.nix +++ b/modules/programs/gnomeServices.nix @@ -71,6 +71,7 @@ nautilus sushi nautilus-python + nautilus-open-any-terminal ]; in lib.mkIf config.mods.nautilus.enable packages; diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index 65beb78..d46f83e 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -140,15 +140,6 @@ in { Please note, plugins tend to break VERY often. ''; }; - filePickerPortal = lib.mkOption { - default = "gtk"; - example = "kde"; - type = with lib.types; (enum ["gnome" "kde" "gtk" "disable"]); - description = '' - The file picker portal to use with Hyprland. - Disable removes the config, allowing you to set it yourself. - ''; - }; }; config = lib.mkIf config.mods.hypr.hyprland.enable ( @@ -160,22 +151,15 @@ in { slurp satty xdg-desktop-portal-gtk + xdg-desktop-portal-gnome + kdePackages.xdg-desktop-portal-kde + xdg-desktop-portal-shana copyq wl-clipboard hyprcursor hyprpicker - (lib.mkIf (config.mods.hypr.hyprland.filePickerPortal == "kde") xdg-desktop-portal-kde) - (lib.mkIf (config.mods.hypr.hyprland.filePickerPortal == "gnome") xdg-desktop-portal-gnome) ]; - xdg.configFile."xdg-desktop-portal/portals.conf" = lib.mkIf (config.mods.hypr.hyprland.filePickerPortal != "none") { - text = '' - [preferred] - default = hyprland;gtk - org.freedesktop.impl.portal.FileChooser = ${config.mods.hypr.hyprland.filePickerPortal} - ''; - }; - wayland.windowManager.hyprland = { enable = true; package = mkDashDefault pkgs.hyprland; diff --git a/modules/programs/media.nix b/modules/programs/media.nix index 207fa9c..f05500d 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -36,8 +36,46 @@ special services configuration to be added which require an services.something notation. ''; }; + filePickerPortal = lib.mkOption { + default = "Term"; + example = "Gnome"; + type = with lib.types; oneOf [(enum ["Gnome" "Kde" "Lxqt" "Gtk" "Term" "Default"]) string]; + description = '' + The file picker portal to use (set with shana). + Default removes the config, allowing you to set it yourself. + ''; + }; + termFileChooserConfig = lib.mkOption { + default = { + cmd = "${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh"; + default_dir = "$HOME"; + }; + example = {}; + type = with lib.types; attrsOf anything; + description = '' + Termfilechooser config + ''; + }; }; config = lib.optionalAttrs (options ? home.packages) { + xdg.configFile."xdg-desktop-portal-termfilechooser/config" = lib.mkIf (config.mods.media.filePickerPortal != "Term") { + source = (pkgs.formats.ini {}).generate "termchooser" { + filechooser = config.mods.media.termFileChooserConfig; + }; + }; + xdg.configFile."xdg-desktop-portal-shana/config.toml" = lib.mkIf (config.mods.media.filePickerPortal != "Default") { + source = let + name = + if (config.mods.media.filePickerPortal == "Term") + then "org.freedesktop.impl.portal.desktop.termfilechooser" + else config.mods.media.filePickerPortal; + in + (pkgs.formats.toml {}).generate "shana" { + open_file = name; + save_file = name; + save_files = name; + }; + }; home.packages = if config.mods.media.useBasePackages then From 28d08a5c8ab2bbbe5574e85b46db97703cb20708 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 23 Aug 2025 17:15:10 +0200 Subject: [PATCH 291/330] feature(yazi): Add yazi plugins --- modules/programs/browser/zen.nix | 2 ++ modules/programs/hypr/hyprland.nix | 19 ++++++++++--------- modules/programs/yazi/default.nix | 11 +++++++++++ modules/programs/yazi/yazi.nix | 18 +++++++++++------- 4 files changed, 34 insertions(+), 16 deletions(-) diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index e26c9a9..0e2b48a 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -79,6 +79,7 @@ in { "zen.theme.accent-color" = "#b4bbff"; "extensions.autoDisableScopes" = 0; "cookiebanners.service.mode" = 2; + "widget.use-xdg-desktop-portal.file-picker" = 1; }; isDefault = true; id = 0; @@ -95,6 +96,7 @@ in { "zen.view.welcome-screen.seen" = true; "zen.theme.accent-color" = "#b4bbff"; "extensions.autoDisableScopes" = 0; + "widget.use-xdg-desktop-portal.file-picker" = 1; }; isDefault = false; id = 1; diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index d46f83e..d7e5b4f 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -193,16 +193,17 @@ in { ) "$mod SUPERSHIFT,F,exec,${browserName} -p special") "$mod SUPER,T,exec,kitty -1" "$mod SUPER,E,exec,nautilus -w" + (lib.mkIf config.mods.yazi.enable "$mod SUPER,Y,exec, EDITOR='neovide --no-fork' kitty yazi") "$mod SUPER,N,exec,neovide" - (lib.mkIf (config.mods.anyrun.enable) "$mod SUPER,R,exec,anyrun") - (lib.mkIf (config.mods.oxi.oxirun.enable) "$mod SUPER,R,exec,oxirun") - (lib.mkIf (config.mods.oxi.oxidash.enable) "$mod SUPER,M,exec,oxidash") - (lib.mkIf (config.mods.oxi.oxicalc.enable) "$mod SUPER,G,exec,oxicalc") - (lib.mkIf (config.mods.oxi.oxishut.enable) "$mod SUPER,D,exec,oxishut") - (lib.mkIf (config.mods.oxi.oxipaste.enable) "$mod SUPER,A,exec,oxipaste") - (lib.mkIf (config.mods.oxi.hyprdock.enable) "$mod SUPERSHIFT,P,exec,hyprdock --gui") - (lib.mkIf (config.mods.hypr.hyprlock.enable) "$mod SUPERSHIFT,L,exec, playerctl -a pause & hyprlock & systemctl suspend") - (lib.mkIf (config.mods.hypr.hyprlock.enable) "$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate") + (lib.mkIf config.mods.anyrun.enable "$mod SUPER,R,exec,anyrun") + (lib.mkIf config.mods.oxi.oxirun.enable "$mod SUPER,R,exec,oxirun") + (lib.mkIf config.mods.oxi.oxidash.enable "$mod SUPER,M,exec,oxidash") + (lib.mkIf config.mods.oxi.oxicalc.enable "$mod SUPER,G,exec,oxicalc") + (lib.mkIf config.mods.oxi.oxishut.enable "$mod SUPER,D,exec,oxishut") + (lib.mkIf config.mods.oxi.oxipaste.enable "$mod SUPER,A,exec,oxipaste") + (lib.mkIf config.mods.oxi.hyprdock.enable "$mod SUPERSHIFT,P,exec,hyprdock --gui") + (lib.mkIf config.mods.hypr.hyprlock.enable "$mod SUPERSHIFT,L,exec, playerctl -a pause & hyprlock & systemctl suspend") + (lib.mkIf config.mods.hypr.hyprlock.enable "$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate") # media keys (lib.mkIf config.mods.scripts.audioControl ",XF86AudioMute,exec, audioControl mute") diff --git a/modules/programs/yazi/default.nix b/modules/programs/yazi/default.nix index 4e7fb59..9caed87 100644 --- a/modules/programs/yazi/default.nix +++ b/modules/programs/yazi/default.nix @@ -1,4 +1,5 @@ { + pkgs, lib, config, options, @@ -35,16 +36,26 @@ type = with lib.types; attrsOf anything; description = "Additional keymap for yazi"; }; + plugins = lib.mkOption { + default = { + inherit (pkgs.yaziPlugins) piper diff gitui; + }; + example = {}; + type = with lib.types; attrsOf anything; + description = "Additional keymap for yazi"; + }; }; config = let conf = import ./yazi.nix; in lib.optionalAttrs (options ? home.packages) ( lib.mkIf config.mods.yazi.enable { + home.packages = [pkgs.glow]; programs.yazi = { enable = conf.enable; settings = conf.settings // config.mods.yazi.additionalKeymap; keymap = conf.keymap // config.mods.yazi.additionalConfig; + plugins = config.mods.yazi.plugins; }; } ); diff --git a/modules/programs/yazi/yazi.nix b/modules/programs/yazi/yazi.nix index 233ab22..bed1c03 100644 --- a/modules/programs/yazi/yazi.nix +++ b/modules/programs/yazi/yazi.nix @@ -85,19 +85,23 @@ }; plugin = { prepend_previewers = [ + { + name = "*.tar"; + run = ''piper --format=url -- tar tf "$1"''; + } { name = "*.md"; - run = "glow"; + run = ''piper -- CLICOLOR_FORCE=1 glow -w=$w -s=dark "$1"''; } { mime = "text/csv"; - run = "miller"; + run = ''piper -- bat -p --color=always "$1"''; } ]; }; }; keymap = { - manager.keymap = [ + mgr.keymap = [ { on = [""]; run = "escape"; @@ -368,13 +372,13 @@ desc = "Cancel the ongoing search"; } { - on = ["z"]; - run = "jump zoxide"; + on = ["Z"]; + run = "plugin zoxide"; desc = "Jump to a directory using zoxide"; } { - on = ["Z"]; - run = "jump fzf"; + on = ["z"]; + run = "plugin fzf"; desc = "Jump to a directory or reveal a file using fzf"; } From a047d5c9e1944235dd939e5b52f0620291cc25a7 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 23 Aug 2025 19:43:15 +0200 Subject: [PATCH 292/330] feature(firefox-addons): Add angular devtools --- lib/foxextensions.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/foxextensions.nix b/lib/foxextensions.nix index 24669f5..d2360ad 100644 --- a/lib/foxextensions.nix +++ b/lib/foxextensions.nix @@ -28,6 +28,7 @@ in { (mkExtension "keepassxc-browser@keepassxc.org" "https://addons.mozilla.org/firefox/downloads/latest/keepassxc-browser/latest.xpi") (mkExtension "@react-devtools" "https://addons.mozilla.org/firefox/downloads/latest/react-devtools/latest.xpi") (mkExtension "extension@redux.devtools" "https://addons.mozilla.org/firefox/downloads/latest/reduxdevtools/latest.xpi") + (mkExtension "{20a9bb38-ed7c-4faf-9aaf-7c5d241fd747}" "https://addons.mozilla.org/firefox/downloads/file/4524699/angular_devtools-1.0.37.xpi") (mkExtension "private-relay@firefox.com" "https://addons.mozilla.org/firefox/downloads/latest/private-relay/latest.xpi") ]; example = [ From aabc48511cc5a17ea23d0c5ccd9c14320597adea Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 30 Aug 2025 12:52:18 +0200 Subject: [PATCH 293/330] chore(coding): Configure dotnet --- home/themes/qt.nix | 2 +- modules/programs/basePackages.nix | 1 - modules/programs/coding.nix | 6 +++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/home/themes/qt.nix b/home/themes/qt.nix index 042c0f6..5a13186 100644 --- a/home/themes/qt.nix +++ b/home/themes/qt.nix @@ -45,7 +45,7 @@ in { }; qt = { enable = true; - style.package = pkgs.libsForQt5.breeze-qt5; + style.package = pkgs.kdePackages.breeze; style.name = lib.mkForce "breeze-dark"; }; diff --git a/modules/programs/basePackages.nix b/modules/programs/basePackages.nix index 4a2d157..8e3f166 100644 --- a/modules/programs/basePackages.nix +++ b/modules/programs/basePackages.nix @@ -65,7 +65,6 @@ icon-library kdePackages.breeze-icons kdePackages.breeze - libsForQt5.breeze-qt5 kdePackages.qtstyleplugin-kvantum libsForQt5.qtstyleplugin-kvantum libadwaita diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 88ad5ba..3e0dcb8 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -305,7 +305,11 @@ in { packages = lib.mkOption { default = with pkgs; [ #.! - dotnet-sdk + (with dotnetCorePackages; + combinePackages [ + sdk_8_0 + sdk_9_0 + ]) csharpier netcoredbg fsharp From aefd89f89d9f163707cc1b8f675560121b8b14e5 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 5 Sep 2025 09:10:16 +0200 Subject: [PATCH 294/330] fix(changeBrigthness): Remove superfluous param --- modules/programs/hypr/hyprland.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index d7e5b4f..cc79adf 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -212,8 +212,8 @@ in { ",XF86AudioPlay,exec, playerctl play-pause" ",XF86AudioNext,exec, playerctl next" ",XF86AudioPrev,exec, playerctl previous" - (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessDown,exec, changeBrightness brightness 10%-") - (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessUp,exec, changeBrightness brightness +10%") + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessDown,exec, changeBrightness 10%-") + (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessUp,exec, changeBrightness +10%") # hyprland keybinds # misc From 68d16b82122d19e027151a5bb1fec484a830e826 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 6 Sep 2025 16:18:00 +0200 Subject: [PATCH 295/330] chore(linter/formatter): Apply linter and formatter --- .github/workflows/pr.yaml | 33 +++ docs/default.nix | 4 +- example/flake.nix | 2 +- flake.nix | 14 +- home/sync.nix | 68 +++--- home/themes/firefoxTheme.nix | 12 +- home/themes/oxiced.nix | 20 +- home/themes/qt.nix | 140 +++++++------ iso/configuration.nix | 2 +- lib/default.nix | 3 +- modules/programs/browser/firefox.nix | 2 +- modules/programs/browser/librewolf.nix | 2 +- modules/programs/browser/zen.nix | 2 +- modules/programs/coding.nix | 32 +-- modules/programs/containers.nix | 68 +++--- modules/programs/drives.nix | 278 ++++++++++++------------- modules/programs/fancontrol.nix | 3 +- modules/programs/fastfetch.nix | 2 +- modules/programs/git.nix | 20 +- modules/programs/greetd.nix | 10 +- modules/programs/scripts.nix | 180 ++++++++-------- modules/programs/teams.nix | 2 +- modules/programs/xkb.nix | 16 +- modules/programs/yazi/default.nix | 2 +- 24 files changed, 469 insertions(+), 448 deletions(-) create mode 100644 .github/workflows/pr.yaml diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml new file mode 100644 index 0000000..7037e7f --- /dev/null +++ b/.github/workflows/pr.yaml @@ -0,0 +1,33 @@ +# inspired by https://github.com/danth/stylix/blob/master/.github/workflows/docs.yml +name: Rust-build +on: + push: + branches: ["main"] + pull_request: + branches: ["main"] +jobs: + build: + name: Build + permissions: + contents: read + runs-on: ubuntu-latest + steps: + - name: Install Nix + uses: DeterminateSystems/nix-installer-action@main + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + extra-conf: | + extra-experimental-features = nix-command flakes + - name: Set up cache + uses: DeterminateSystems/magic-nix-cache-action@main + - name: action + uses: cachix/install-nix-action@v25 + with: + nix_path: nixpkgs=channel:nixos-unstable + - name: cache + uses: cachix/cachix-action@v16 + with: + name: dashnix + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' + - name: Linter check + run: nix -L build github:${{ github.repository }}/${{ github.sha }} --no-write-lock-file diff --git a/docs/default.nix b/docs/default.nix index 8b3c289..1fd8a1e 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -20,8 +20,8 @@ pathToAttrs = path: lib.attrsets.mapAttrsToList ( name: meta: { - name = name; - meta = meta; + inherit name; + inherit meta; } ) (builtins.readDir path); diff --git a/example/flake.nix b/example/flake.nix index 640ee54..0d1e083 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -13,7 +13,7 @@ }; }; - outputs = {...} @ inputs: { + outputs = inputs: { nixosConfigurations = inputs.dashNix.dashNixLib.buildSystems {root = ./.;}; }; diff --git a/flake.nix b/flake.nix index b709627..e423801 100644 --- a/flake.nix +++ b/flake.nix @@ -30,9 +30,6 @@ zen-browser.url = "github:youwen5/zen-browser-flake"; - # TODO move to upstream repository after merged nix flake pr - fancontrol.url = "git+https://github.com/DashieTM/fancontrol-gui?ref=nix-flake"; - stylix.url = "github:danth/stylix"; base16.url = "github:SenchoPens/base16.nix"; disko.url = "github:nix-community/disko/latest"; @@ -44,6 +41,7 @@ oxidash.url = "github:Xetibo/OxiDash"; oxipaste.url = "github:Xetibo/OxiPaste"; oxirun.url = "github:Xetibo/OxiRun"; + dashvim.url = "github:Xetibo/DashVim"; # For now until merged into Xetibo hyprdock.url = "github:Xetibo/hyprdock"; reset.url = "github:Xetibo/ReSet"; @@ -53,10 +51,6 @@ # absolute insanity chaoticNyx.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; - - dashvim = { - url = "github:Xetibo/DashVim"; - }; }; outputs = {self, ...} @ inputs: let @@ -109,9 +103,11 @@ inherit inputs; pkgs = unstable; system = currentSystem; - lib = inputs.unstable.lib; - buildSystems = dashNixLib.buildSystems; + inherit (inputs.unstable) lib; + inherit (dashNixLib) buildSystems; }; + lint = unstable.statix; + format = unstable.alejandra; dashNixInputs = inputs; stablePkgs = stable; unstablePkgs = unstable; diff --git a/home/sync.nix b/home/sync.nix index 06b6a02..38dceea 100644 --- a/home/sync.nix +++ b/home/sync.nix @@ -15,44 +15,40 @@ 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"]; + services = builtins.listToAttrs ( + map (opts: { + name = "${opts.name}"; + value = { + Unit = { + Description = "Auto sync Nextcloud"; + After = "network-online.target"; }; - }) - synclist - ) + 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 - ) + 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/home/themes/firefoxTheme.nix b/home/themes/firefoxTheme.nix index c73f07c..0de46f6 100644 --- a/home/themes/firefoxTheme.nix +++ b/home/themes/firefoxTheme.nix @@ -319,11 +319,9 @@ else {} ); moduleFn = lib.lists.foldr (attr1: attr2: attr1 // attr2) {}; - mkFirefoxTheme = ( - profiles: - profiles - |> profileNamesFn - |> chromesFn - |> moduleFn - ); + mkFirefoxTheme = profiles: + profiles + |> profileNamesFn + |> chromesFn + |> moduleFn; in {home.file = mkFirefoxTheme profiles;} diff --git a/home/themes/oxiced.nix b/home/themes/oxiced.nix index 5ab624f..8a9e7dc 100644 --- a/home/themes/oxiced.nix +++ b/home/themes/oxiced.nix @@ -65,16 +65,16 @@ in { # legacy compatibility name = scheme.scheme; - base00 = scheme.base00; - base01 = scheme.base01; - base02 = scheme.base02; - base03 = scheme.base03; - base04 = scheme.base04; - base05 = scheme.base05; - base06 = scheme.base06; - base07 = scheme.base07; - base08 = scheme.base08; - base09 = scheme.base09; + inherit (scheme) base00; + inherit (scheme) base01; + inherit (scheme) base02; + inherit (scheme) base03; + inherit (scheme) base04; + inherit (scheme) base05; + inherit (scheme) base06; + inherit (scheme) base07; + inherit (scheme) base08; + inherit (scheme) base09; base0a = scheme.base0A; base0b = scheme.base0B; base0c = scheme.base0C; diff --git a/home/themes/qt.nix b/home/themes/qt.nix index 5a13186..21dc324 100644 --- a/home/themes/qt.nix +++ b/home/themes/qt.nix @@ -31,15 +31,6 @@ } ''; 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}"; - }; stylix.targets.qt = { enable = false; }; @@ -49,74 +40,85 @@ in { style.name = lib.mkForce "breeze-dark"; }; - xdg.configFile."qt5ct/qt5ct.conf" = { - text = '' + xdg.configFile = { + "qt5ct/colors/tokyonight.conf" = { + text = "${color}"; + }; + "qt6ct/colors/tokyonight.conf" = { + text = "${color}"; + }; + "qt5ct/qss/tab.qss" = { + text = "${qss}"; + }; + "qt5ct/qt5ct.conf" = { + text = '' - [Appearance] - color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf - custom_palette=true - icon_theme=MoreWaita - standard_dialogs=xdgdesktopportal - style=Breeze + [Appearance] + color_scheme_path=/home/${username}/.config/qt5ct/colors/tokyonight.conf + custom_palette=true + icon_theme=MoreWaita + standard_dialogs=xdgdesktopportal + 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() - ''; - }; - xdg.configFile."qt6ct/qt6ct.conf" = { - text = '' + [Troubleshooting] + force_raster_widgets=1 + ignored_applications=@Invalid() + ''; + }; + "qt6ct/qt6ct.conf" = { + text = '' - [Appearance] - color_scheme_path=/home/${username}/.config/qt6ct/colors/tokyonight.conf - custom_palette=true - standard_dialogs=xdgdesktopportal - style=Breeze + [Appearance] + color_scheme_path=/home/${username}/.config/qt6ct/colors/tokyonight.conf + custom_palette=true + standard_dialogs=xdgdesktopportal + style=Breeze - [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 - [Troubleshooting] - force_raster_widgets=1 - ignored_applications=@Invalid() - ''; + [Troubleshooting] + force_raster_widgets=1 + ignored_applications=@Invalid() + ''; + }; }; } diff --git a/iso/configuration.nix b/iso/configuration.nix index 5745fe7..8bfcc1e 100644 --- a/iso/configuration.nix +++ b/iso/configuration.nix @@ -10,7 +10,7 @@ in { imports = ["${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"]; nixpkgs.hostPlatform = { - system = system; + inherit system; }; environment.systemPackages = with pkgs; [ diff --git a/lib/default.nix b/lib/default.nix index 2f3a471..30d34ec 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -70,7 +70,6 @@ inputs.reset.homeManagerModules.default inputs.sops-nix.homeManagerModules.sops inputs.dashvim.homeManagerModules.dashvim - inputs.fancontrol.homeManagerModules.default inputs.chaoticNyx.homeManagerModules.default ../modules ]; @@ -82,7 +81,7 @@ builtins.listToAttrs ( map (name: { - name = name; + inherit name; value = let mod = root + /hosts/${name}/configuration.nix; additionalNixosConfig = root + /hosts/${name}/hardware.nix; diff --git a/modules/programs/browser/firefox.nix b/modules/programs/browser/firefox.nix index 6493b79..d93ac58 100644 --- a/modules/programs/browser/firefox.nix +++ b/modules/programs/browser/firefox.nix @@ -105,7 +105,7 @@ in { // { ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} (config.mods.browser.firefox.extensions ++ ( - if (config.mods.browser.firefox.darkreader) + if config.mods.browser.firefox.darkreader then [ { "addon@darkreader.org" = { diff --git a/modules/programs/browser/librewolf.nix b/modules/programs/browser/librewolf.nix index a290fe2..fc74bf3 100644 --- a/modules/programs/browser/librewolf.nix +++ b/modules/programs/browser/librewolf.nix @@ -99,7 +99,7 @@ in { // { ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} (config.mods.browser.librewolf.extensions ++ ( - if (config.mods.browser.firefox.darkreader) + if config.mods.browser.firefox.darkreader then [ { "addon@darkreader.org" = { diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index 0e2b48a..d3a9b0a 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -134,7 +134,7 @@ in { // { ExtensionSettings = builtins.foldl' (acc: ext: acc // ext) {} (config.mods.browser.zen.extensions ++ ( - if (config.mods.browser.firefox.darkreader) + if config.mods.browser.firefox.darkreader then [ { "addon@darkreader.org" = { diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 3e0dcb8..7c79fa9 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -517,28 +517,30 @@ in { lib.optionalAttrs (options ? home.packages) { programs.dashvim = lib.mkIf config.mods.coding.dashvim { enable = true; - colorscheme = config.mods.stylix.colorscheme; + inherit (config.mods.stylix) colorscheme; }; programs.vscode = lib.mkIf config.mods.coding.vscodium.enable { enable = true; package = mkDashDefault pkgs.vscodium; profiles.default.extensions = config.mods.coding.vscodium.extensions; }; - xdg.configFile."neovide/config.toml" = lib.mkIf (config.mods.coding.dashvim || config.mods.coding.neovide.enable) { - source = - (pkgs.formats.toml {}).generate "neovide" - config.mods.coding.neovide.config; - }; + xdg.configFile = { + "neovide/config.toml" = lib.mkIf (config.mods.coding.dashvim || config.mods.coding.neovide.enable) { + source = + (pkgs.formats.toml {}).generate "neovide" + config.mods.coding.neovide.config; + }; - xdg.configFile."gh/config.yml" = lib.mkIf config.mods.coding.gh.enable { - source = - (pkgs.formats.yaml {}).generate "config" - config.mods.coding.gh.config; - }; - xdg.configFile."gh/hosts.yml" = lib.mkIf config.mods.coding.gh.enable { - source = - (pkgs.formats.yaml {}).generate "hosts" - config.mods.coding.gh.hosts; + "gh/config.yml" = lib.mkIf config.mods.coding.gh.enable { + source = + (pkgs.formats.yaml {}).generate "config" + config.mods.coding.gh.config; + }; + "gh/hosts.yml" = lib.mkIf config.mods.coding.gh.enable { + source = + (pkgs.formats.yaml {}).generate "hosts" + config.mods.coding.gh.hosts; + }; }; home.packages = with pkgs; diff --git a/modules/programs/containers.nix b/modules/programs/containers.nix index e65eb06..b62ee25 100644 --- a/modules/programs/containers.nix +++ b/modules/programs/containers.nix @@ -43,39 +43,37 @@ description = "Container packages"; }; }; - config = ( - lib.optionalAttrs (options ? environment.systemPackages) { - environment.systemPackages = - (lib.lists.optionals ( - config.mods.containers.variant == "podman" - ) - config.mods.containers.podmanPackages) - ++ (lib.lists.optionals ( - config.mods.containers.variant == "docker" - ) - config.mods.containers.dockerPackages) - ++ (lib.lists.optionals ( - config.mods.containers.variant == "podman" || config.mods.containers.variant == "docker" - ) - config.mods.containers.combinedPackages); - virtualisation = - if (config.mods.containers.variant == "podman") - then { - containers.enable = true; - podman = { - enable = true; - dockerCompat = mkDashDefault true; - defaultNetwork.settings.dns_enabled = mkDashDefault true; - }; - } - else if (config.mods.containers.variant == "docker") - then { - containers.enable = true; - docker = { - enable = true; - }; - } - else {}; - } - ); + config = lib.optionalAttrs (options ? environment.systemPackages) { + environment.systemPackages = + (lib.lists.optionals ( + config.mods.containers.variant == "podman" + ) + config.mods.containers.podmanPackages) + ++ (lib.lists.optionals ( + config.mods.containers.variant == "docker" + ) + config.mods.containers.dockerPackages) + ++ (lib.lists.optionals ( + config.mods.containers.variant == "podman" || config.mods.containers.variant == "docker" + ) + config.mods.containers.combinedPackages); + virtualisation = + if (config.mods.containers.variant == "podman") + then { + containers.enable = true; + podman = { + enable = true; + dockerCompat = mkDashDefault true; + defaultNetwork.settings.dns_enabled = mkDashDefault true; + }; + } + else if (config.mods.containers.variant == "docker") + then { + containers.enable = true; + docker = { + enable = true; + }; + } + else {}; + }; } diff --git a/modules/programs/drives.nix b/modules/programs/drives.nix index c085144..a631802 100644 --- a/modules/programs/drives.nix +++ b/modules/programs/drives.nix @@ -159,25 +159,143 @@ }; }; - config = ( - lib.optionalAttrs (options ? fileSystems) { - boot.initrd.luks.devices = lib.mkIf (config.mods.drives.variant == "manual" && config.mods.drives.useEncryption) ( - builtins.listToAttrs ( - map ( - { - name, - drive, - }: { - cryptstorage.device = lib.mkIf (name != "root") drive?device; - cryptoroot.device = lib.mkIf (name == "root") drive?device; - } - ) - config.mods.drives.extraDrives + config = lib.optionalAttrs (options ? fileSystems) { + boot.initrd.luks.devices = lib.mkIf (config.mods.drives.variant == "manual" && config.mods.drives.useEncryption) ( + builtins.listToAttrs ( + map ( + { + name, + drive, + }: { + cryptstorage.device = lib.mkIf (name != "root") drive?device; + cryptoroot.device = lib.mkIf (name == "root") drive?device; + } ) - ); + config.mods.drives.extraDrives + ) + ); - fileSystems = lib.mkIf (config.mods.drives.variant == "manual" && !config.conf.wsl) ( - builtins.listToAttrs ( + fileSystems = lib.mkIf (config.mods.drives.variant == "manual" && !config.conf.wsl) ( + builtins.listToAttrs ( + map ( + { + name, + drive, + }: { + name = "/" + name; + value = drive; + } + ) + config.mods.drives.extraDrives + ) + // (lib.optionalAttrs config.mods.drives.defaultDrives.enable) { + "/" = { + device = "/dev/disk/by-label/ROOT"; + fsType = config.mods.drives.homeAndRootFsTypes; + options = [ + "noatime" + "nodiratime" + "discard" + ]; + }; + + "/boot" = { + device = "/dev/disk/by-label/BOOT"; + fsType = "vfat"; + options = [ + "rw" + "fmask=0022" + "dmask=0022" + "noatime" + ]; + }; + + "/home" = { + device = "/dev/disk/by-label/HOME"; + fsType = config.mods.drives.homeAndRootFsTypes; + options = [ + "noatime" + "nodiratime" + "discard" + ]; + }; + } + ); + + swapDevices = lib.mkIf (config.mods.drives.useSwap && config.mods.drives.variant == "manual" && !config.conf.wsl) [ + {device = "/dev/disk/by-label/SWAP";} + ]; + + disko.devices = lib.mkIf (config.mods.drives.variant == "disko") { + disk = + { + main = (lib.optionalAttrs config.mods.drives.defaultDrives.enable) { + device = "${config.mods.drives.disko.defaultDiskId}"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + root = { + start = "${ + if config.mods.drives.useSwap + then builtins.toString config.mods.drives.disko.swapAmount + else builtins.toString 1 + }G"; + end = "${builtins.toString config.mods.drives.disko.rootAmount}%"; + content = { + type = "filesystem"; + format = config.mods.drives.homeAndRootFsTypes; + mountpoint = "/"; + mountOptions = [ + "noatime" + "nodiratime" + "discard" + ]; + }; + }; + plainSwap = { + start = "1G"; + end = "33G"; + content = { + type = "swap"; + discardPolicy = "both"; + resumeDevice = true; + }; + }; + boot = { + start = "0G"; + end = "1G"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ + "rw" + "fmask=0022" + "dmask=0022" + "noatime" + ]; + }; + }; + home = { + start = "${builtins.toString config.mods.drives.disko.rootAmount}%"; + end = "100%"; + content = { + type = "filesystem"; + format = config.mods.drives.homeAndRootFsTypes; + mountpoint = "/home"; + mountOptions = [ + "noatime" + "nodiratime" + "discard" + ]; + }; + }; + }; + }; + }; + } + // builtins.listToAttrs ( map ( { name, @@ -188,127 +306,7 @@ } ) config.mods.drives.extraDrives - ) - // (lib.optionalAttrs config.mods.drives.defaultDrives.enable) { - "/" = { - device = "/dev/disk/by-label/ROOT"; - fsType = config.mods.drives.homeAndRootFsTypes; - options = [ - "noatime" - "nodiratime" - "discard" - ]; - }; - - "/boot" = { - device = "/dev/disk/by-label/BOOT"; - fsType = "vfat"; - options = [ - "rw" - "fmask=0022" - "dmask=0022" - "noatime" - ]; - }; - - "/home" = { - device = "/dev/disk/by-label/HOME"; - fsType = config.mods.drives.homeAndRootFsTypes; - options = [ - "noatime" - "nodiratime" - "discard" - ]; - }; - } - ); - - swapDevices = lib.mkIf (config.mods.drives.useSwap && config.mods.drives.variant == "manual" && !config.conf.wsl) [ - {device = "/dev/disk/by-label/SWAP";} - ]; - - disko.devices = lib.mkIf (config.mods.drives.variant == "disko") { - disk = - { - main = (lib.optionalAttrs config.mods.drives.defaultDrives.enable) { - device = "${config.mods.drives.disko.defaultDiskId}"; - type = "disk"; - content = { - type = "gpt"; - partitions = { - root = { - start = "${ - if config.mods.drives.useSwap - then builtins.toString config.mods.drives.disko.swapAmount - else builtins.toString 1 - }G"; - end = "${builtins.toString config.mods.drives.disko.rootAmount}%"; - content = { - type = "filesystem"; - format = config.mods.drives.homeAndRootFsTypes; - mountpoint = "/"; - mountOptions = [ - "noatime" - "nodiratime" - "discard" - ]; - }; - }; - plainSwap = { - start = "1G"; - end = "33G"; - content = { - type = "swap"; - discardPolicy = "both"; - resumeDevice = true; - }; - }; - boot = { - start = "0G"; - end = "1G"; - content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot"; - mountOptions = [ - "rw" - "fmask=0022" - "dmask=0022" - "noatime" - ]; - }; - }; - home = { - start = "${builtins.toString config.mods.drives.disko.rootAmount}%"; - end = "100%"; - content = { - type = "filesystem"; - format = config.mods.drives.homeAndRootFsTypes; - mountpoint = "/home"; - mountOptions = [ - "noatime" - "nodiratime" - "discard" - ]; - }; - }; - }; - }; - }; - } - // builtins.listToAttrs ( - map ( - { - name, - drive, - }: { - name = "/" + name; - value = drive; - } - ) - config.mods.drives.extraDrives - ); - }; - } - ); + ); + }; + }; } diff --git a/modules/programs/fancontrol.nix b/modules/programs/fancontrol.nix index 87be9af..8abf24d 100644 --- a/modules/programs/fancontrol.nix +++ b/modules/programs/fancontrol.nix @@ -1,5 +1,6 @@ { lib, + pkgs, config, options, ... @@ -20,7 +21,7 @@ }; config = lib.mkIf config.mods.fancontrol.enable ( lib.optionalAttrs (options ? home.packages) { - programs.fancontrol-gui.enable = true; + home.packages = [pkgs.fancontrol-gui]; } // (lib.optionalAttrs (options ? boot.kernelModules) { boot = { diff --git a/modules/programs/fastfetch.nix b/modules/programs/fastfetch.nix index 52366e7..f73b2cd 100644 --- a/modules/programs/fastfetch.nix +++ b/modules/programs/fastfetch.nix @@ -56,7 +56,7 @@ }; config = lib.optionalAttrs (options ? home.packages) { - xdg.configFile."fastfetch/config.jsonc" = lib.mkIf (config.mods.dashfetch.enable) { + xdg.configFile."fastfetch/config.jsonc" = lib.mkIf config.mods.dashfetch.enable { source = (pkgs.formats.json {}).generate "config.jsonc" { diff --git a/modules/programs/git.nix b/modules/programs/git.nix index ed2719e..bfcb334 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -47,15 +47,13 @@ description = "ssh configuration (keys for git)"; }; }; - config = ( - lib.optionalAttrs (options ? programs.git && options ? home.file) { - programs.git = { - enable = true; - userName = config.mods.git.username; - userEmail = config.mods.git.email; - extraConfig = config.mods.git.additionalConfig; - }; - home.file.".ssh/config".text = config.mods.git.sshConfig; - } - ); + config = lib.optionalAttrs (options ? programs.git && options ? home.file) { + programs.git = { + enable = true; + userName = config.mods.git.username; + userEmail = config.mods.git.email; + extraConfig = config.mods.git.additionalConfig; + }; + home.file.".ssh/config".text = config.mods.git.sshConfig; + }; } diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 2d1727c..d632b6f 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -130,9 +130,13 @@ ''; # unlock GPG keyring on login - security.pam.services.greetd.enableGnomeKeyring = mkDashDefault true; - security.pam.services.greetd.sshAgentAuth = mkDashDefault true; - security.pam.sshAgentAuth.enable = mkDashDefault true; + security.pam = { + services.greetd = { + enableGnomeKeyring = mkDashDefault true; + sshAgentAuth = mkDashDefault true; + }; + sshAgentAuth.enable = mkDashDefault true; + }; } // lib.optionalAttrs (options ? home) { xdg.configFile."regreet/regreet.toml".source = diff --git a/modules/programs/scripts.nix b/modules/programs/scripts.nix index ce0f4f0..98eb26b 100644 --- a/modules/programs/scripts.nix +++ b/modules/programs/scripts.nix @@ -24,102 +24,100 @@ description = "More scripts to be passed. (check existing ones for types and examples)"; }; }; - config = ( - lib.optionalAttrs (options ? home.packages) { - home.packages = - [ - (lib.mkIf config.mods.scripts.changeBrightness ( - pkgs.writeShellScriptBin "changeBrightness" '' - brightnessctl set "$1" - CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') - notify-send -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%" - '' - )) - (lib.mkIf config.mods.scripts.audioControl ( - pkgs.writeShellScriptBin "audioControl" '' - ncspot() { - NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n') - CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') - pactl set-sink-input-volume "$CHANGE" "$1" - VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') - notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: ''${VOLUME}%" - } + config = lib.optionalAttrs (options ? home.packages) { + home.packages = + [ + (lib.mkIf config.mods.scripts.changeBrightness ( + pkgs.writeShellScriptBin "changeBrightness" '' + brightnessctl set "$1" + CURRENT=$(brightnessctl -m -d intel_backlight | awk -F, '{print substr($4, 0, length($4)-1)}') + notify-send -a "changeBrightness" -r 3 -u low -i brightness-high -h int:value:"$CURRENT" "Brightness: ''${CURRENT}%" + '' + )) + (lib.mkIf config.mods.scripts.audioControl ( + pkgs.writeShellScriptBin "audioControl" '' + ncspot() { + NUM=$(pactl list clients short | rg "ncspot" | awk -F 'PipeWire' ' { print $1 } ' | tr -d ' \t\n') + CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') + pactl set-sink-input-volume "$CHANGE" "$1" + VOLUME=$(pactl list sink-inputs | rg "$NUM" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') + notify-send -a "ncspot" -r 990 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Spotify Volume: ''${VOLUME}%" + } - firefox() { - STRING=$(pactl list clients short | rg "firefox" | awk -F 'PipeWire' ' { print $1 "," } ' | tr -d ' \t\n') - # NUMS=',' read -r -a array <<< "$STRING" - readarray -td, NUMS <<<"$STRING" - declare -p NUMS - for index in "''${!NUMS[@]}"; do #"''${!array[@]}" - NUM=$(echo "''${NUMS[index]}" | tr -d ' \t\n') - CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') - pactl set-sink-input-volume "$CHANGE" "$1" - done - VOLUME=$(pactl list sink-inputs | rg "''${NUMS[0]}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') - notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: ''${VOLUME}%" - } + firefox() { + STRING=$(pactl list clients short | rg "firefox" | awk -F 'PipeWire' ' { print $1 "," } ' | tr -d ' \t\n') + # NUMS=',' read -r -a array <<< "$STRING" + readarray -td, NUMS <<<"$STRING" + declare -p NUMS + for index in "''${!NUMS[@]}"; do #"''${!array[@]}" + NUM=$(echo "''${NUMS[index]}" | tr -d ' \t\n') + CHANGE=$(pactl list sink-inputs short | rg "$NUM" | awk -F ' ' ' { print $1 }' | tr -d ' \t\n') + pactl set-sink-input-volume "$CHANGE" "$1" + done + VOLUME=$(pactl list sink-inputs | rg "''${NUMS[0]}" -A7 | rg "Volume:" | awk -F ' ' ' { print $5 }' | tr -d '%') + notify-send -a "Firefox" -r 991 -u low -i audio-volume-high -h int:progress:"$VOLUME" "Firefox Volume: ''${VOLUME}%" + } - internal() { - SPEAKER=$(pactl list sinks | grep "Name" | grep "alsa" | awk -F ': ' '{ print $2 }') - if [ "$SPEAKER" != "" ]; then - pactl set-default-sink "$SPEAKER" - pactl set-sink-mute "$SPEAKER" false - DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') - notify-send "changed audio to "$DEVICE" " - else - notify-send "failed, not available!" - fi - } + internal() { + SPEAKER=$(pactl list sinks | grep "Name" | grep "alsa" | awk -F ': ' '{ print $2 }') + if [ "$SPEAKER" != "" ]; then + pactl set-default-sink "$SPEAKER" + pactl set-sink-mute "$SPEAKER" false + DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') + notify-send "changed audio to "$DEVICE" " + else + notify-send "failed, not available!" + fi + } - set_volume_sink() { - pactl set-sink-volume @DEFAULT_SINK@ "$1" - CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %') - notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: ''${CURRENT}%" - } + set_volume_sink() { + pactl set-sink-volume @DEFAULT_SINK@ "$1" + CURRENT=$(pactl get-sink-volume @DEFAULT_SINK@ | awk -F'/' '{ print $2 }' | tr -d ' %') + notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Output Volume: ''${CURRENT}%" + } - set_volume_source() { - pactl set-source-volume @DEFAULT_SOURCE@ "$1" - CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %') - notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: ''${CURRENT}%" - } + set_volume_source() { + pactl set-source-volume @DEFAULT_SOURCE@ "$1" + CURRENT=$(pactl get-source-volume @DEFAULT_SOURCE@ | awk -F'/' '{ print $2 }' | tr -d ' %') + notify-send -a "System Volume" -r 1001 -u low -i audio-volume-high -h int:progress:"$CURRENT" "Input Volume: ''${CURRENT}%" + } - bluetooth() { - SPEAKER=$(pactl list sinks | grep "Name" | grep "blue" | awk -F ': ' '{ print $2 }') - if [ "$SPEAKER" != "" ]; then - pactl set-default-sink "$SPEAKER" - pactl set-sink-mute "$SPEAKER" false - DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') - notify-send "changed audio to "$DEVICE" " - else - notify-send "failed, not available!" - fi - } + bluetooth() { + SPEAKER=$(pactl list sinks | grep "Name" | grep "blue" | awk -F ': ' '{ print $2 }') + if [ "$SPEAKER" != "" ]; then + pactl set-default-sink "$SPEAKER" + pactl set-sink-mute "$SPEAKER" false + DEVICE=$(echo "$SPEAKER" | awk -F '.' ' { print $4 } ') + notify-send "changed audio to "$DEVICE" " + else + notify-send "failed, not available!" + fi + } - mute() { - pactl set-sink-mute @DEFAULT_SINK@ toggle - MUTE=$(pactl get-sink-mute @DEFAULT_SINK@) - notify-send -a "Audio" -r 994 -u low -i audio-volume-high "Audio: $MUTE" - } + mute() { + pactl set-sink-mute @DEFAULT_SINK@ toggle + MUTE=$(pactl get-sink-mute @DEFAULT_SINK@) + notify-send -a "Audio" -r 994 -u low -i audio-volume-high "Audio: $MUTE" + } - if [ "$1" == "internal" ]; then - internal - elif [ "$1" == "bluetooth" ]; then - bluetooth - elif [ "$1" == "firefox" ]; then - firefox "$2" - elif [ "$1" == "ncspot" ]; then - ncspot "$2" - elif [ "$1" == "mute" ]; then - mute - elif [ "$1" == "sink" ]; then - set_volume_sink "$2" - elif [ "$1" == "source" ]; then - set_volume_source "$2" - fi - '' - )) - ] - ++ config.mods.scripts.scripts; - } - ); + if [ "$1" == "internal" ]; then + internal + elif [ "$1" == "bluetooth" ]; then + bluetooth + elif [ "$1" == "firefox" ]; then + firefox "$2" + elif [ "$1" == "ncspot" ]; then + ncspot "$2" + elif [ "$1" == "mute" ]; then + mute + elif [ "$1" == "sink" ]; then + set_volume_sink "$2" + elif [ "$1" == "source" ]; then + set_volume_source "$2" + fi + '' + )) + ] + ++ config.mods.scripts.scripts; + }; } diff --git a/modules/programs/teams.nix b/modules/programs/teams.nix index a909ee5..e9d843a 100644 --- a/modules/programs/teams.nix +++ b/modules/programs/teams.nix @@ -23,7 +23,7 @@ in { }; config = lib.mkIf config.mods.teams.enable ( lib.optionalAttrs (options ? home.packages) { - home.packages = [(callPackage ../../override/teams.nix {chromium = pkgs.chromium;})]; + home.packages = [(callPackage ../../override/teams.nix {inherit (pkgs) chromium;})]; } // (lib.optionalAttrs (options ? boot.kernelModules) { boot = { diff --git a/modules/programs/xkb.nix b/modules/programs/xkb.nix index f78e5e2..ebb1bda 100644 --- a/modules/programs/xkb.nix +++ b/modules/programs/xkb.nix @@ -18,13 +18,11 @@ description = "Your variant"; }; }; - config = ( - lib.optionalAttrs (options ? services.xserver) { - # Configure keymap in X11 - services.xserver = { - xkb.layout = "${config.mods.xkb.layout}"; - xkb.variant = "${config.mods.xkb.variant}"; - }; - } - ); + config = lib.optionalAttrs (options ? services.xserver) { + # Configure keymap in X11 + services.xserver = { + xkb.layout = "${config.mods.xkb.layout}"; + xkb.variant = "${config.mods.xkb.variant}"; + }; + }; } diff --git a/modules/programs/yazi/default.nix b/modules/programs/yazi/default.nix index 9caed87..c9bd08b 100644 --- a/modules/programs/yazi/default.nix +++ b/modules/programs/yazi/default.nix @@ -52,7 +52,7 @@ lib.mkIf config.mods.yazi.enable { home.packages = [pkgs.glow]; programs.yazi = { - enable = conf.enable; + inherit (conf) enable; settings = conf.settings // config.mods.yazi.additionalKeymap; keymap = conf.keymap // config.mods.yazi.additionalConfig; plugins = config.mods.yazi.plugins; From 3eef78654a64027ee72c22cc74ee168dc0bc6d31 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 6 Sep 2025 17:43:11 +0200 Subject: [PATCH 296/330] chore(linter/formatter): Add statix --- flake.nix | 4 ++-- modules/programs/basePackages.nix | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index e423801..8536734 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,7 @@ url = "github:nix-community/lanzaboote/v0.4.2"; inputs.nixpkgs.follows = "unstable"; }; - + statix.url = "github:oppiliappan/statix"; # Darkreader requires es20, hence a stable pin pkgsDarkreader.url = "github:NixOs/nixpkgs/nixos-24.11"; @@ -97,7 +97,7 @@ inherit pkgsDarkreader; }; system = currentSystem; - lib = inputs.unstable.lib; + inherit (inputs.unstable) lib; }; docs = import ./docs { inherit inputs; diff --git a/modules/programs/basePackages.nix b/modules/programs/basePackages.nix index 8e3f166..fa10da8 100644 --- a/modules/programs/basePackages.nix +++ b/modules/programs/basePackages.nix @@ -4,6 +4,8 @@ lib, options, pkgs, + inputs, + system, ... }: { options.mods = { @@ -50,6 +52,7 @@ then with pkgs; [ + inputs.statix.packages.${system}.default adwaita-icon-theme dbus dconf From 0fa45657f0562d0592cbbd65ab58e82f43c8b060 Mon Sep 17 00:00:00 2001 From: Dashie Date: Sun, 7 Sep 2025 14:51:52 +0200 Subject: [PATCH 297/330] chore(CI): Run lint and format on PR (#19) --- .github/workflows/pr.yaml | 14 +++++----- flake.nix | 4 +-- iso/configuration.nix | 51 ++++++++++++++++++++++++++----------- modules/programs/greetd.nix | 2 +- 4 files changed, 47 insertions(+), 24 deletions(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 7037e7f..e92ddfd 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -1,13 +1,11 @@ # inspired by https://github.com/danth/stylix/blob/master/.github/workflows/docs.yml -name: Rust-build +name: PR check on: - push: - branches: ["main"] pull_request: branches: ["main"] jobs: build: - name: Build + name: check permissions: contents: read runs-on: ubuntu-latest @@ -17,7 +15,7 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} extra-conf: | - extra-experimental-features = nix-command flakes + extra-experimental-features = nix-command flakes pipe-operators - name: Set up cache uses: DeterminateSystems/magic-nix-cache-action@main - name: action @@ -30,4 +28,8 @@ jobs: name: dashnix authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - name: Linter check - run: nix -L build github:${{ github.repository }}/${{ github.sha }} --no-write-lock-file + run: nix run --no-write-lock-file github:${{ github.repository }}/${{ github.sha }}#lint -- check + - name: Format check + run: nix run --no-write-lock-file github:${{ github.repository }}/${{ github.sha }}#format -- --check . + - name: Build docs + run: nix -L build github:${{ github.repository }}/${{ github.sha }}#docs --no-write-lock-file diff --git a/flake.nix b/flake.nix index 8536734..523c82b 100644 --- a/flake.nix +++ b/flake.nix @@ -42,7 +42,7 @@ oxipaste.url = "github:Xetibo/OxiPaste"; oxirun.url = "github:Xetibo/OxiRun"; dashvim.url = "github:Xetibo/DashVim"; - # For now until merged into Xetibo + hyprdock.url = "github:Xetibo/hyprdock"; reset.url = "github:Xetibo/ReSet"; reset-plugins.url = "github:Xetibo/ReSet-Plugins"; @@ -106,7 +106,7 @@ inherit (inputs.unstable) lib; inherit (dashNixLib) buildSystems; }; - lint = unstable.statix; + lint = inputs.statix.packages.${currentSystem}.default; format = unstable.alejandra; dashNixInputs = inputs; stablePkgs = stable; diff --git a/iso/configuration.nix b/iso/configuration.nix index 8bfcc1e..703e6d3 100644 --- a/iso/configuration.nix +++ b/iso/configuration.nix @@ -1,58 +1,77 @@ { pkgs, - lib, modulesPath, + lib, self, inputs, ... }: let system = "x86_64-linux"; in { - imports = ["${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"]; + imports = ["${modulesPath}/installer/cd-dvd/iso-image.nix"]; nixpkgs.hostPlatform = { inherit system; }; environment.systemPackages = with pkgs; [ - neovim + inputs.dashvim.packages.${system}.minimal disko git - vesktop - vscodium firefox kitty gnome-disk-utility inputs.disko.packages.${system}.disko-install ]; + networking = { wireless.enable = false; networkmanager.enable = true; }; + nix.settings.experimental-features = [ "nix-command" "flakes" "pipe-operators" ]; - # gnome is a good default that works with every gpu and doesn't require knowledge about custom keybinds. - services = { - xserver = { + users.users.nixos = { + isNormalUser = true; + password = "nixos"; + extraGroups = ["wheel"]; + }; + + image.baseName = lib.mkForce "Dashnix"; + + programs = { + hyprland = { enable = true; - displayManager = { - gdm.enable = true; - }; - desktopManager = { - gnome.enable = true; - }; + withUWSM = true; + xwayland.enable = false; }; + uwsm.enable = true; + }; + + fonts.packages = [pkgs.adwaita-fonts]; + i18n.defaultLocale = "en_US.UTF-8"; + + services = { displayManager.autoLogin = { enable = true; user = "nixos"; }; + greetd = { + enable = true; + settings = { + terminal.vt = 1; + default_session = { + command = "${lib.getExe pkgs.hyprland}"; + user = "nixos"; + }; + }; + }; }; isoImage = { - isoName = lib.mkForce "DashNix.iso"; makeEfiBootable = true; makeUsbBootable = true; contents = [ @@ -62,4 +81,6 @@ in { } ]; }; + + system.stateVersion = "25.11"; } diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index d632b6f..22954a1 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -60,7 +60,7 @@ # no idea if these are written correctly example = [ pkgs.niri - pkgs.river + pkgs.river-classic pkgs.swayfx ]; type = with lib.types; listOf package; From 0bc2c97d692f27d26f8fdc4854776167aff5f1ca Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 7 Sep 2025 16:38:50 +0200 Subject: [PATCH 298/330] chore(CI): Only publish iso --- .github/workflows/release.yaml | 60 ++++++++++++++++++---------------- iso/configuration.nix | 2 +- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 84bda95..f6675f7 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,29 +1,31 @@ -# by https://github.com/danth/stylix/blob/master/.github/workflows/docs.yml -name: Release -on: - release: - types: [created] -jobs: - build: - name: Release - permissions: - contents: read - runs-on: ubuntu-latest - steps: - - name: Install Nix - uses: DeterminateSystems/nix-installer-action@main - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - extra-conf: | - extra-experimental-features = nix-command flakes pipe-operators - - name: Set up cache - uses: DeterminateSystems/magic-nix-cache-action@main - - name: Build ISO - run: nix build github:${{ github.repository }}/${{ github.sha }}#iso --no-write-lock-file - - name: Prepare ISO for upload - run: | - cp -r --dereference --no-preserve=mode,ownership result/ public/ - - name: upload ISO - uses: softprops/action-gh-release@v1 - with: - path: path/ +# by https://github.com/danth/stylix/blob/master/.github/workflows/docs.yml +name: Release +on: + release: + types: [created] +jobs: + build: + name: Release + permissions: + actions: read + contents: read + runs-on: ubuntu-latest + steps: + - name: Install Nix + uses: DeterminateSystems/nix-installer-action@main + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + extra-conf: | + extra-experimental-features = nix-command flakes pipe-operators + - name: Set up cache + uses: DeterminateSystems/magic-nix-cache-action@main + - name: Build ISO + run: nix build github:${{ github.repository }}/${{ github.sha }}#iso --no-write-lock-file + - name: Prepare ISO for upload + run: | + cp -r --dereference --no-preserve=mode,ownership result/iso/DashNix.iso DashNix.iso + - name: upload ISO + uses: softprops/action-gh-release@v1 + with: + files: | + DashNix.iso diff --git a/iso/configuration.nix b/iso/configuration.nix index 703e6d3..9272a65 100644 --- a/iso/configuration.nix +++ b/iso/configuration.nix @@ -40,7 +40,7 @@ in { extraGroups = ["wheel"]; }; - image.baseName = lib.mkForce "Dashnix"; + image.baseName = lib.mkForce "DashNix"; programs = { hyprland = { From 387eb01570f8da0fe36056912cc0e811fee411e1 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 7 Sep 2025 16:59:18 +0200 Subject: [PATCH 299/330] fix(CI): Add write permission --- .github/workflows/release.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f6675f7..1984fb1 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -6,9 +6,7 @@ on: jobs: build: name: Release - permissions: - actions: read - contents: read + permissions: write-all runs-on: ubuntu-latest steps: - name: Install Nix From a2adc26e589b7214366cf0674c8660aeac1d937c Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 7 Sep 2025 18:26:18 +0200 Subject: [PATCH 300/330] chore(cache): Add DashVim --- base/common_hardware.nix | 2 ++ example/flake.nix | 2 ++ 2 files changed, 4 insertions(+) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 5af3cba..56a6dc6 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -115,6 +115,7 @@ in { "https://oxicalc.cachix.org" "https://hyprdock.cachix.org" "https://reset.cachix.org" + "https://dashvim.cachix.org" ]; trusted-public-keys = [ @@ -128,6 +129,7 @@ in { "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" + "dashvim.cachix.org-1:uLRdxp1WOWHnsZZtu3SwUWZRsvC7SXo0Gyk3tIefuL0=" ]; experimental-features = mkDashDefault "nix-command flakes pipe-operators"; diff --git a/example/flake.nix b/example/flake.nix index 0d1e083..129fc20 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -32,6 +32,7 @@ "https://hyprdock.cachix.org" "https://reset.cachix.org" "https://chaotic-nyx.cachix.org/" + "https://dashvim.cachix.org" ]; extra-trusted-public-keys = [ @@ -46,6 +47,7 @@ "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" + "dashvim.cachix.org-1:uLRdxp1WOWHnsZZtu3SwUWZRsvC7SXo0Gyk3tIefuL0=" ]; }; } From 55b55f71338a3b5aabb4911b813d0e4bf4b36698 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 7 Sep 2025 21:34:28 +0200 Subject: [PATCH 301/330] chore(tools): Add nixos-compose and expose default config --- .gitignore | 1 + example/hosts/example/configuration.nix | 6 +++--- flake.nix | 3 +++ modules/programs/coding.nix | 3 +++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index a931378..f610716 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ result/* result +flake.lock diff --git a/example/hosts/example/configuration.nix b/example/hosts/example/configuration.nix index 3567918..5d9e612 100644 --- a/example/hosts/example/configuration.nix +++ b/example/hosts/example/configuration.nix @@ -4,13 +4,13 @@ # variables for system conf = { # TODO your username - username = "YOURNAME"; + username = "exampleName"; # TODO only needed when you use intel -> amd is default # cpu = "intel"; # TODO your xkb layout - locale = "something.UTF-8"; + locale = "en_US.UTF-8"; # TODO your timezone - timezone = "CONTINENT/CITY"; + timezone = "Europe/Zurich"; }; # modules diff --git a/flake.nix b/flake.nix index 523c82b..4058fb8 100644 --- a/flake.nix +++ b/flake.nix @@ -51,6 +51,8 @@ # absolute insanity chaoticNyx.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; + + compose.url = "github:garnix-io/nixos-compose"; }; outputs = {self, ...} @ inputs: let @@ -113,5 +115,6 @@ unstablePkgs = unstable; modules = ./modules; iso = dashNixLib.buildIso.config.system.build.isoImage; + nixosConfigurations = dashNixLib.buildSystems {root = ./example/.;}; }; } diff --git a/modules/programs/coding.nix b/modules/programs/coding.nix index 7c79fa9..5a22205 100644 --- a/modules/programs/coding.nix +++ b/modules/programs/coding.nix @@ -4,6 +4,8 @@ config, pkgs, options, + inputs, + system, ... }: let font_family = "${config.mods.stylix.fonts.monospace.name}"; @@ -511,6 +513,7 @@ in { d-spy tmux tmate + inputs.compose.packages.${system}.default ]; in lib.mkIf config.mods.coding.enable ( From e6d19b909483744a7b6557cad7cf9132348259a9 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 22 Sep 2025 23:14:19 +0200 Subject: [PATCH 302/330] chore(hyprland): Update gestures --- modules/programs/hypr/hyprland.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index cc79adf..111e10b 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -360,9 +360,9 @@ in { sync_gsettings_theme = mkDashDefault false; }; - gestures = { - workspace_swipe = mkDashDefault true; - }; + gesture = [ + "3, horizontal, workspace" + ]; monitor = mkDashDefault config.mods.hypr.hyprland.monitor; workspace = mkDashDefault config.mods.hypr.hyprland.workspace; From 8b12e7965062c538249308e99017c3605977c6ed Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 23 Sep 2025 23:46:41 +0200 Subject: [PATCH 303/330] chore(yazi): add wl-clipboard --- modules/programs/yazi/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/programs/yazi/default.nix b/modules/programs/yazi/default.nix index c9bd08b..d890a81 100644 --- a/modules/programs/yazi/default.nix +++ b/modules/programs/yazi/default.nix @@ -38,7 +38,7 @@ }; plugins = lib.mkOption { default = { - inherit (pkgs.yaziPlugins) piper diff gitui; + inherit (pkgs.yaziPlugins) piper diff gitui wl-clipboard; }; example = {}; type = with lib.types; attrsOf anything; @@ -55,7 +55,7 @@ inherit (conf) enable; settings = conf.settings // config.mods.yazi.additionalKeymap; keymap = conf.keymap // config.mods.yazi.additionalConfig; - plugins = config.mods.yazi.plugins; + inherit (config.mods.yazi) plugins; }; } ); From 9be8a82a29781aa999789019559ffb242638d54a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 28 Sep 2025 11:03:57 +0200 Subject: [PATCH 304/330] chore(gaming): Add scx scheduler by default --- modules/programs/gaming.nix | 3 +-- modules/programs/ironbar.nix | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 0b2e228..3483171 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -79,8 +79,7 @@ lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = config.mods.gaming.tools; boot.kernelPackages = lib.mkForce pkgs.linuxPackages_cachyos; - # TODO Re-enable when fixed - #services.scx.enable = true; + services.scx.enable = true; programs = { steam.enable = mkDashDefault config.mods.gaming.steam; diff --git a/modules/programs/ironbar.nix b/modules/programs/ironbar.nix index ed3fa08..9a4bac4 100644 --- a/modules/programs/ironbar.nix +++ b/modules/programs/ironbar.nix @@ -244,7 +244,8 @@ in { config = lib.mkIf (config.mods.ironbar.enable || config.mods.hypr.hyprland.useIronbar) ( lib.optionalAttrs (options ? programs.ironbar) { programs.ironbar = { - package = mkDashDefault pkgs.ironbar; + # TODO broken + # package = mkDashDefault pkgs.ironbar; enable = true; style = if config.mods.ironbar.useDefaultCss From 1857504bacbe6ce972f33e5e3a318475b210cb05 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 5 Oct 2025 13:24:30 +0200 Subject: [PATCH 305/330] feature(niri): Init module --- flake.nix | 2 +- home/common.nix | 1 + lib/wm.nix | 449 +++++++++++++++++++++++++++++ modules/programs/default.nix | 2 + modules/programs/fastfetch.nix | 1 - modules/programs/fish.nix | 1 + modules/programs/greetd.nix | 24 +- modules/programs/hypr/hyprland.nix | 393 ++++++++++--------------- modules/programs/hypr/hyprlock.nix | 12 +- modules/programs/ironbar.nix | 27 +- modules/programs/niri.nix | 379 ++++++++++++++++++++++++ modules/programs/oxi/default.nix | 6 +- modules/programs/wm.nix | 403 ++++++++++++++++++++++++++ 13 files changed, 1446 insertions(+), 254 deletions(-) create mode 100644 lib/wm.nix create mode 100644 modules/programs/niri.nix create mode 100644 modules/programs/wm.nix diff --git a/flake.nix b/flake.nix index 4058fb8..665829b 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,7 @@ url = "github:nix-community/lanzaboote/v0.4.2"; inputs.nixpkgs.follows = "unstable"; }; - statix.url = "github:oppiliappan/statix"; + statix.url = "github:oppiliappan/statix?ref=master"; # Darkreader requires es20, hence a stable pin pkgsDarkreader.url = "github:NixOs/nixpkgs/nixos-24.11"; diff --git a/home/common.nix b/home/common.nix index 1a3ccf3..fe2fa53 100644 --- a/home/common.nix +++ b/home/common.nix @@ -2,6 +2,7 @@ mkDashDefault, config, lib, + pkgs, ... }: let username = config.conf.username; diff --git a/lib/wm.nix b/lib/wm.nix new file mode 100644 index 0000000..1352623 --- /dev/null +++ b/lib/wm.nix @@ -0,0 +1,449 @@ +{lib, ...}: let + browserName = config: + if (builtins.isString config.mods.homePackages.browser) + then config.mods.homePackages.browser + else if config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram + then config.mods.homePackages.browser.meta.mainProgram + else config.mods.homePackages.browser.pname; + mkSimpleBind = modKeys: key: command: args: { + inherit modKeys key command args; + }; + mkRepeatSimpleBind = modKeys: key: command: args: { + inherit modKeys key command args; + meta.hyprland.repeat = true; + }; + mkSimpleCustomBind = modKeys: key: niri: hyprland: args: { + inherit modKeys key args; + command = { + inherit niri hyprland; + }; + }; + mkRepeatCustomBind = modKeys: key: niri: hyprland: args: { + inherit modKeys key args; + command = { + inherit niri hyprland; + }; + meta.hyprland.repeat = true; + }; + mkBindWithDesc = modKeys: key: command: args: desc: + { + meta.niri.desc = desc; + } + // mkSimpleBind modKeys key command args; +in { + defaultWindowRules = { + niri = [ + '' + match app-id=r#"^org\.keepassxc\.KeePassXC$"# + match app-id=r#"^org\.gnome\.World\.Secrets$"# + + block-out-from "screen-capture" + '' + '' + match app-id=r#"^steam$"# + open-on-workspace "0" + '' + '' + geometry-corner-radius 12 + clip-to-geometry true + '' + ]; + hyprland = [ + # window rules + "float,class:^(.*)(OxiCalc)(.*)$" + "float,class:^(.*)(winecfg.exe)(.*)$" + "float,class:^(.*)(copyq)(.*)$" + "center,class:^(.*)(swappy)(.*)$" + "workspace 10 silent,class:^(.*)(steam)(.*)$" + + # Otherwise neovide will ignore tiling + "suppressevent fullscreen maximize,class:^(.*)(neovide)(.*)$" + ]; + }; + + defaultStartup = config: { + all = [ + "systemctl --user import-environment" + "dbus-update-activation-environment --systemd --all" + "hyprctl setcursor ${config.mods.stylix.cursor.name} ${toString config.mods.stylix.cursor.size}" + # ensures the systemd service knows what "hyprctl" is :) + ( + if config.mods.gaming.gamemode + then "systemctl try-restart gamemoded.service --user" + else "" + ) + + # other programs + "${browserName config}" + ( + if config.mods.oxi.hyprdock.enable + then "hyprdock --server" + else "" + ) + ( + if config.mods.hypr.hyprpaper.enable + then "hyprpaper" + else "" + ) + ( + if config.mods.hypr.hyprland.useIronbar + then "ironbar" + else "" + ) + ( + if config.mods.oxi.oxipaste.enable + then "oxipaste_daemon" + else "" + ) + ( + if config.mods.oxi.oxinoti.enable + then "oxinoti" + else "" + ) + ]; + niri = [ + "XDG_CURRENT_DESKTOP=Niri" + "XDG_SESSION_DESKTOP=Niri" + "XDG_SESSION_TYPE=wayland" + ]; + hyprland = [ + "XDG_CURRENT_DESKTOP=Hyprland" + "XDG_SESSION_DESKTOP=Hyprland" + "XDG_SESSION_TYPE=wayland" + ]; + }; + + defaultEnv = config: { + all = { + GTK_CSD = "0"; + TERM = "kitty /bin/fish"; + HYPRCURSOR_THEME = config.mods.stylix.cursor.name; + HYPRCURSOR_SIZE = toString config.mods.stylix.cursor.size; + XCURSOR_THEME = config.mods.stylix.cursor.name; + XCURSOR_SIZE = toString config.mods.stylix.cursor.size; + 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"; + + LIBVA_DRIVER_NAME = + if config.mods.gpu.nvidia.enable + then "nvidia" + else ""; + GBM_BACKEND = + if config.mods.gpu.nvidia.enable + then "nvidia-drm" + else ""; + __GLX_VENDOR_LIBRARY_NAME = + if config.mods.gpu.nvidia.enable + then "nvidia" + else ""; + }; + niri = {}; + hyprland = {}; + }; + + defaultBinds = config: [ + (mkSimpleBind ["Mod"] "1" "focusWorkspace" ["1"]) + (mkSimpleBind ["Mod"] "2" "focusWorkspace" ["2"]) + (mkSimpleBind ["Mod"] "3" "focusWorkspace" ["3"]) + (mkSimpleBind ["Mod"] "4" "focusWorkspace" ["4"]) + (mkSimpleBind ["Mod"] "5" "focusWorkspace" ["5"]) + (mkSimpleBind ["Mod"] "6" "focusWorkspace" ["6"]) + (mkSimpleBind ["Mod"] "7" "focusWorkspace" ["7"]) + (mkSimpleBind ["Mod"] "8" "focusWorkspace" ["8"]) + (mkSimpleBind ["Mod"] "9" "focusWorkspace" ["9"]) + (mkSimpleBind ["Mod"] "0" "focusWorkspace" ["0"]) + (mkSimpleBind ["Mod" "Shift"] "1" "moveToWorkspace" ["1"]) + (mkSimpleBind ["Mod" "Shift"] "2" "moveToWorkspace" ["2"]) + (mkSimpleBind ["Mod" "Shift"] "3" "moveToWorkspace" ["3"]) + (mkSimpleBind ["Mod" "Shift"] "4" "moveToWorkspace" ["4"]) + (mkSimpleBind ["Mod" "Shift"] "5" "moveToWorkspace" ["5"]) + (mkSimpleBind ["Mod" "Shift"] "6" "moveToWorkspace" ["6"]) + (mkSimpleBind ["Mod" "Shift"] "7" "moveToWorkspace" ["7"]) + (mkSimpleBind ["Mod" "Shift"] "8" "moveToWorkspace" ["8"]) + (mkSimpleBind ["Mod" "Shift"] "9" "moveToWorkspace" ["9"]) + (mkSimpleBind ["Mod" "Shift"] "0" "moveToWorkspace" ["0"]) + (mkSimpleBind ["Mod"] "B" "toggleFullscreen" []) + (mkSimpleBind ["Mod"] "V" "toggleFloating" []) + (mkSimpleBind ["Mod" "Shift"] "M" "quit" []) + (mkSimpleBind ["Mod"] "Left" "moveWindowLeft" []) + (mkSimpleBind ["Mod"] "Down" "moveWindowDown" []) + (mkSimpleBind ["Mod"] "Up" "moveWindowUp" []) + (mkSimpleBind ["Mod"] "Right" "moveWindowRight" []) + + (mkRepeatSimpleBind ["Mod"] "J" "moveFocusLeft" []) + (mkRepeatSimpleBind ["Mod"] "K" "moveFocusDown" []) + (mkRepeatSimpleBind ["Mod"] "L" "moveFocusUp" []) + (mkRepeatSimpleBind ["Mod"] "semicolon" "moveFocusRight" []) + + (mkBindWithDesc ["Mod"] "Q" "killActive" [] "Kill active window") + + (mkBindWithDesc ["Mod"] "N" "spawn" ["neovide"] "Open Neovide") + (mkBindWithDesc ["Mod"] "T" "spawn-sh" ["kitty" "-1"] "Open Kitty") + (mkBindWithDesc ["Mod" "Shift"] "L" "spawn" ["hyprlock"] "Lock screen") + + ( + if config.mods.yazi.enable + then mkBindWithDesc ["Mod"] "E" "spawn-sh" ["EDITOR='neovide --no-fork' kitty yazi"] "Open Yazi" + else {} + ) + ( + if config.mods.anyrun.enable + then mkBindWithDesc ["Mod"] "R" "spawn" ["anyrun"] "Open Anyrun" + else {} + ) + ( + if config.mods.oxi.oxirun.enable + then mkBindWithDesc ["Mod"] "R" "spawn" ["oxirun"] "Open OxiRun" + else {} + ) + ( + if config.mods.oxi.oxidash.enable + then mkBindWithDesc ["Mod"] "M" "spawn" ["oxidash"] "Open OxiDash" + else {} + ) + ( + if config.mods.oxi.oxicalc.enable + then mkBindWithDesc ["Mod"] "G" "spawn" ["oxicalc"] "Open Oxicalc" + else {} + ) + ( + if config.mods.oxi.oxishut.enable + then mkBindWithDesc ["Mod"] "D" "spawn" ["oxishut"] "Open OxiShut" + else {} + ) + ( + if config.mods.oxi.oxipaste.enable + then mkBindWithDesc ["Mod"] "A" "spawn" ["oxipaste"] "Open Oxipaste" + else {} + ) + ( + if config.mods.oxi.hyprdock.enable + then mkBindWithDesc ["Mod" "Shift"] "P" "spawn" ["hyprdock --gui"] "Open Hyprdock" + else {} + ) + ( + if config.mods.hypr.hyprlock.enable + then mkBindWithDesc ["Mod" "Shift" "Alt"] "L" "spawn-sh" ["playerctl -a pause & hyprlock & systemctl suspend"] "Lock and suspend" + else {} + ) + ( + if config.mods.hypr.hyprlock.enable + then mkBindWithDesc ["Mod" "Shift" "Alt"] "K" "spawn-sh" ["playerctl -a pause & hyprlock & systemctl hibernate"] "Lock and hibernate" + else {} + ) + + (mkBindWithDesc ["Mod"] "F" "spawn" ["${browserName config}"] "Open Browser") + ( + if + ( + browserName config == "firefox" || browserName config == "zen" + ) + then mkBindWithDesc ["Mod" "Shift"] "F" "spawn" ["${browserName config} -p special"] "Open Browser Special Profile" + else {} + ) + + (mkBindWithDesc ["Mod"] "S" "spawn-sh" [''grim -g \"$(slurp)\" - | wl-copy''] "Take Screenshot") + (mkBindWithDesc ["Mod" "Shift"] "S" "spawn-sh" [''grim -g \"$(slurp)\" - | satty -f -''] "Take Screenshot and edit") + + ( + if config.mods.scripts.audioControl + then { + key = "XF86AudioMute"; + command = "spawn-sh"; + args = ["audioControl mute"]; + meta.niri = { + allowWhileLocked = true; + desc = "Mute Audio"; + }; + } + else {} + ) + ( + if config.mods.scripts.audioControl + then { + key = "XF86AudioRaiseVolume"; + command = "spawn-sh"; + args = ["audioControl +5%"]; + meta.niri = { + allowWhileLocked = true; + desc = "Raise Audio Volume"; + }; + } + else {} + ) + ( + if config.mods.scripts.audioControl + then { + key = "XF86AudioLowerVolume"; + command = "spawn-sh"; + args = ["audioControl -5%"]; + meta.niri = { + allowWhileLocked = true; + desc = "Lower Audio Volume"; + }; + } + else {} + ) + { + key = "XF86AudioPlay"; + command = "spawn-sh"; + args = ["playerctl play-pause"]; + meta.niri = { + allowWhileLocked = true; + desc = "Play/Pause"; + }; + } + { + key = "XF86AudioNext"; + command = "spawn-sh"; + args = ["playerctl next"]; + meta.niri = { + allowWhileLocked = true; + desc = "Next Song"; + }; + } + { + key = "XF86AudioPrev"; + command = "spawn-sh"; + args = ["playerctl previous"]; + meta.niri = { + allowWhileLocked = true; + desc = "Previous Song"; + }; + } + ( + if config.mods.scripts.changeBrightness + then { + key = "XF86MonBrightnessDown"; + command = "spawn-sh"; + args = ["changeBrightness -10%"]; + meta.niri = { + allowWhileLocked = true; + desc = "Lower Brigthness"; + }; + } + else {} + ) + ( + if config.mods.scripts.changeBrightness + then { + key = "XF86MonBrightnessUp"; + command = "spawn-sh"; + args = ["changeBrightness +10%"]; + meta.niri = { + allowWhileLocked = true; + desc = "Raise Brigthness"; + }; + } + else {} + ) + + # Niri only keybinds + (mkSimpleCustomBind ["Mod"] "BracketLeft" "consume-or-expel-window-left" null []) + (mkSimpleCustomBind ["Mod"] "BracketRight" "consume-or-expel-window-right" null []) + (mkSimpleCustomBind ["Mod"] "Comma" "consume-window-into-column" null []) + (mkSimpleCustomBind ["Mod"] "Period" "expel-window-from-column" null []) + (mkSimpleCustomBind ["Mod"] "Y" "switch-preset-column-width" null []) + (mkSimpleCustomBind ["Mod"] "Tab" "focus-workspace-previous" null []) + (mkSimpleCustomBind ["Mod" "Shift"] "V" "switch-focus-between-floating-and-tiling" null []) + (mkSimpleCustomBind ["Mod" "Shift"] "B" "expand-column-to-available-width" null []) + (mkSimpleCustomBind ["Mod"] "U" "set-column-width" null ["-10%"]) + (mkSimpleCustomBind ["Mod"] "P" "set-column-width" null ["+10%"]) + (mkSimpleCustomBind ["Mod"] "O" "set-column-width" null ["50%"]) + (mkSimpleCustomBind ["Mod" "Shift"] "Minus" "set-window-height" null ["-10%"]) + (mkSimpleCustomBind ["Mod" "Shift"] "Equal" "set-window-height" null ["+10%"]) + (mkSimpleCustomBind ["Mod" "Ctrl"] "1" "move-column-to-workspace" null ["1"]) + (mkSimpleCustomBind ["Mod" "Ctrl"] "2" "move-column-to-workspace" null ["2"]) + (mkSimpleCustomBind ["Mod" "Ctrl"] "3" "move-column-to-workspace" null ["3"]) + (mkSimpleCustomBind ["Mod" "Ctrl"] "4" "move-column-to-workspace" null ["4"]) + (mkSimpleCustomBind ["Mod" "Ctrl"] "5" "move-column-to-workspace" null ["5"]) + (mkSimpleCustomBind ["Mod" "Ctrl"] "6" "move-column-to-workspace" null ["6"]) + (mkSimpleCustomBind ["Mod" "Ctrl"] "7" "move-column-to-workspace" null ["7"]) + (mkSimpleCustomBind ["Mod" "Ctrl"] "8" "move-column-to-workspace" null ["8"]) + (mkSimpleCustomBind ["Mod" "Ctrl"] "9" "move-column-to-workspace" null ["9"]) + (mkSimpleCustomBind ["Mod" "Ctrl"] "0" "move-column-to-workspace" null ["0"]) + (mkSimpleCustomBind ["Mod" "Shift"] "J" "focus-monitor-left" null []) + (mkSimpleCustomBind ["Mod" "Shift"] "semicolon" "focus-monitor-right" null []) + (mkSimpleCustomBind ["Mod" "Ctrl"] "J" "move-column-to-monitor-left" null []) + (mkSimpleCustomBind ["Mod" "Ctrl"] "semicolon" "move-column-to-monitor-right" null []) + (mkSimpleCustomBind ["Mod" "Shift"] "Slash" "show-hotkey-overlay" null []) + { + modKeys = ["Mod"]; + key = "W"; + command.niri = "toggle-overview"; + meta.niri = { + desc = "Overview"; + repeat = false; + }; + } + { + modKeys = ["Mod"]; + key = "Escape"; + command.niri = "toggle-keyboard-shortcuts-inhibit"; + meta.niri = { + allowInhibit = false; + }; + } + { + modKeys = ["Mod"]; + key = "WheelScrollUp"; + command.niri = "focus-workspace-up"; + meta.niri.cooldown = 150; + } + { + modKeys = ["Mod"]; + key = "WheelScrollDown"; + command.niri = "focus-workspace-down"; + meta.niri.cooldown = 150; + } + { + modKeys = ["Mod"]; + key = "WheelScrollRight"; + command.niri = "focus-column-right"; + meta.niri.cooldown = 150; + } + { + modKeys = ["Mod"]; + key = "WheelScrollLeft"; + command.niri = "focus-column-left"; + meta.niri.cooldown = 150; + } + + # Hyprland only keybinds + (mkSimpleCustomBind ["Mod"] "C" null "togglesplit" []) + (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "1" null "movetoworkspacesilent" ["1"]) + (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "2" null "movetoworkspacesilent" ["2"]) + (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "3" null "movetoworkspacesilent" ["3"]) + (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "4" null "movetoworkspacesilent" ["4"]) + (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "5" null "movetoworkspacesilent" ["5"]) + (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "6" null "movetoworkspacesilent" ["6"]) + (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "7" null "movetoworkspacesilent" ["7"]) + (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "8" null "movetoworkspacesilent" ["8"]) + (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "9" null "movetoworkspacesilent" ["9"]) + (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "0" null "movetoworkspacesilent" ["0"]) + (mkRepeatCustomBind ["Mod"] "U" null "resizeactive" ["-20" "0"]) + (mkRepeatCustomBind ["Mod"] "P" null "resizeactive" ["20" "0"]) + (mkRepeatCustomBind ["Mod"] "O" null "resizeactive" ["0" "-20"]) + (mkRepeatCustomBind ["Mod"] "I" null "resizeactive" ["0" "20"]) + (mkSimpleCustomBind ["Mod" "ALT"] "J" null "layoutmsg" ["preselect" "l"]) + (mkSimpleCustomBind ["Mod" "ALT"] "K" null "layoutmsg" ["preselect" "d"]) + (mkSimpleCustomBind ["Mod" "ALT"] "L" null "layoutmsg" ["preselect" "u"]) + (mkSimpleCustomBind ["Mod" "ALT"] "semicolon" null "layoutmsg" ["preselect" "r"]) + (mkSimpleCustomBind ["Mod" "ALT"] "H" null "layoutmsg" ["preselect" "n"]) + ( + if config.mods.hypr.hyprland.hyprspaceEnable + then { + modKeys = ["Mod"]; + key = "W"; + command.hyprland = "overview:toggle"; + args = []; + } + else {} + ) + ]; +} diff --git a/modules/programs/default.nix b/modules/programs/default.nix index ebc1ff4..1c0baa5 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -1,5 +1,6 @@ { imports = [ + ./niri.nix ./acpid.nix ./anyrun.nix ./basePackages.nix @@ -48,6 +49,7 @@ ./virtmanager.nix ./xkb.nix ./xone.nix + ./wm.nix ./yazi ]; } diff --git a/modules/programs/fastfetch.nix b/modules/programs/fastfetch.nix index f73b2cd..9953d84 100644 --- a/modules/programs/fastfetch.nix +++ b/modules/programs/fastfetch.nix @@ -1,5 +1,4 @@ { - mkDashDefault, pkgs, lib, options, diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 2f18036..f063f35 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -56,6 +56,7 @@ in { abbr --add ls 'lsd' abbr --add :q 'exit' abbr --add gh 'git push origin' + abbr --add gu 'git push upstream' abbr --add gl 'git pull origin' abbr --add gm 'git commit -m' abbr --add ga "git add -A" diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 22954a1..2c5f87f 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -18,7 +18,10 @@ ''; }; monitor = lib.mkOption { - default = "${config.mods.hypr.hyprland.defaultMonitor}"; + default = + if config.mods.wm.monitors != [] + then (builtins.elemAt config.mods.wm.monitors 0).name + else ""; example = "eDP-1"; type = lib.types.str; description = '' @@ -27,7 +30,10 @@ ''; }; scale = lib.mkOption { - default = "${config.mods.hypr.hyprland.defaultMonitorScale}"; + default = + if config.mods.wm.monitors != [] + then builtins.toString (builtins.elemAt config.mods.wm.monitors 0).scale + else ""; example = "1.5"; type = lib.types.str; description = '' @@ -46,7 +52,14 @@ description = "The compositor/greeter command to run"; }; resolution = lib.mkOption { - default = "${config.mods.hypr.hyprland.defaultMonitorMode}"; + default = + if config.mods.wm.monitors != [] + then let + resX = builtins.toString (builtins.elemAt config.mods.wm.monitors 0).resolutionX; + resY = builtins.toString (builtins.elemAt config.mods.wm.monitors 0).resolutionY; + refresh = builtins.toString (builtins.elemAt config.mods.wm.monitors 0).refreshrate; + in "${resX}x${resY}@${refresh}" + else ""; example = "3440x1440@180"; type = lib.types.str; description = '' @@ -55,7 +68,8 @@ }; environments = lib.mkOption { default = [ - inputs.hyprland.packages.${config.conf.system}.hyprland + (lib.mkIf config.mods.hypr.hyprland.enable inputs.hyprland.packages.${config.conf.system}.hyprland) + (lib.mkIf config.mods.niri.enable pkgs.niri) ]; # no idea if these are written correctly example = [ @@ -82,7 +96,7 @@ }; config = let - username = config.conf.username; + inherit (config.conf) username; in lib.mkIf config.mods.greetd.enable ( lib.optionalAttrs (options ? environment) { diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index 111e10b..f6ee377 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -6,12 +6,7 @@ pkgs, ... }: let - browserName = - if (builtins.isString config.mods.homePackages.browser) - then config.mods.homePackages.browser - else if config.mods.homePackages.browser ? meta && config.mods.homePackages.browser.meta ? mainProgram - then config.mods.homePackages.browser.meta.mainProgram - else config.mods.homePackages.browser.pname; + defaultWmConf = import ../../../lib/wm.nix {inherit lib;}; in { options.mods.hypr.hyprland = { enable = lib.mkOption { @@ -22,64 +17,12 @@ in { Enable Hyprland ''; }; - defaultMonitor = lib.mkOption { - default = ""; - example = "eDP-1"; - type = lib.types.str; - description = '' - main monitor - ''; - }; - defaultMonitorMode = lib.mkOption { - default = ""; - example = "3440x1440@180"; - type = lib.types.str; - description = '' - main monitor mode: width x height @ refreshrate - ''; - }; - defaultMonitorScale = lib.mkOption { - default = "1"; - example = "1.5"; - type = lib.types.str; - description = '' - main monitor scaling - ''; - }; - monitor = lib.mkOption { - default = [ - # main monitor - "${config.mods.hypr.hyprland.defaultMonitor},${config.mods.hypr.hyprland.defaultMonitorMode},0x0,${config.mods.hypr.hyprland.defaultMonitorScale}" - # all others - ]; - example = ["DP-1,3440x1440@180,2560x0,1,vrr,0"]; - type = with lib.types; listOf str; - description = '' - The monitor configuration for hyprland. - ''; - }; - workspace = lib.mkOption { - default = []; - example = ["2,monitor:DP-1, default:true"]; - type = with lib.types; listOf str; - description = '' - The workspace configuration for hyprland. - ''; - }; noAtomic = lib.mkOption { default = false; example = true; type = lib.types.bool; description = '' - Use tearing - ''; - }; - extraAutostart = lib.mkOption { - default = []; - example = ["your application"]; - type = lib.types.listOf lib.types.str; - description = '' - Extra exec_once. + Use tearing (Warning, can be buggy) ''; }; useIronbar = lib.mkOption { @@ -90,14 +33,6 @@ in { Whether to use ironbar in hyprland. ''; }; - ironbarSingleMonitor = lib.mkOption { - default = true; - example = false; - type = lib.types.bool; - description = '' - Whether to use ironbar on a single monitor. - ''; - }; useDefaultConfig = lib.mkOption { default = true; example = false; @@ -160,7 +95,151 @@ in { hyprpicker ]; - wayland.windowManager.hyprland = { + wayland.windowManager.hyprland = let + mkWorkspace = workspaces: + builtins.map (workspace: let + default = + if workspace.default + then ",default:true" + else ""; + in "${workspace.name},monitor:${workspace.monitor}${default}") + workspaces; + mkTransform = transform: + if transform == "0" + then 0 + else if transform == "90" + then 1 + else if transform == "180" + then 2 + else if transform == "270" + then 3 + else 4; + mkVrr = vrr: + if vrr + then "1" + else "0"; + mkMonitors = monitors: + builtins.map ( + monitor: "${monitor.name},${builtins.toString monitor.resolutionX}x${builtins.toString monitor.resolutionY}@${builtins.toString monitor.refreshrate},${builtins.toString monitor.positionX}x${builtins.toString monitor.positionY},${builtins.toString monitor.scale}, transform,${builtins.toString (mkTransform monitor.transform)}, vrr,${mkVrr monitor.vrr}" + ) + monitors; + + mkMods = bind: let + mods = bind.modKeys or []; + in + builtins.map (mod: + if mod == "Mod" + then (lib.strings.toUpper config.mods.wm.modKey) + " " + else lib.strings.toUpper mod) + mods + |> lib.strings.concatStringsSep ""; + mkArgs = args: + if args != [] + then (lib.strings.concatStringsSep " " args) + else ""; + shouldRepeat = bind: bind ? meta && bind.meta ? hyprland && bind.meta.hyprland ? repeat && bind.meta.hyprland.repeat; + + defaultBinds = cfg: + if cfg.mods.wm.useDefaultBinds + then defaultWmConf.defaultBinds cfg + else []; + + mkEBinds = cfg: let + binds = cfg.mods.wm.binds ++ defaultBinds cfg; + in + binds + |> builtins.filter (bind: bind ? command && shouldRepeat bind && !hasInvalidCustomCommand bind) + |> builtins.map ( + bind: "${mkMods bind},${bind.key},${mkCommand bind}" + ); + mkBinds = cfg: let + binds = cfg.mods.wm.binds ++ defaultBinds cfg; + in + binds + |> builtins.filter (bind: bind ? command && !(shouldRepeat bind) && !hasInvalidCustomCommand bind) + |> builtins.map ( + bind: "${mkMods bind},${bind.key},${mkCommand bind}" + ); + mkCommand = bind: let + args = bind.args or []; + in + if bind.command == "quit" + then "exit" + else if bind.command == "killActive" + then "killactive" + else if bind.command == "moveWindowRight" + then "movewindow,r" + else if bind.command == "moveWindowDown" + then "movewindow,d" + else if bind.command == "moveWindowLeft" + then "movewindow,l" + else if bind.command == "moveWindowUp" + then "movewindow,u" + else if bind.command == "moveFocusUp" + then "movefocus,u" + else if bind.command == "moveFocusRight" + then "movefocus,r" + else if bind.command == "moveFocusDown" + then "movefocus,d" + else if bind.command == "moveFocusLeft" + then "movefocus,l" + else if bind.command == "toggleFloating" + then "togglefloating" + else if bind.command == "toggleFullscreen" + then "fullscreen" + else if bind.command == "focusWorkspace" + then "workspace" + "," + mkArgs args + else if bind.command == "moveToWorkspace" + then "movetoworkspace" + "," + mkArgs args + else if bind.command == "spawn" + then "exec" + "," + mkArgs args + else if bind.command == "spawn-sh" + then "exec" + "," + mkArgs args + else bind.command.hyprland + "," + mkArgs args; + hasInvalidCustomCommand = bind: !(builtins.isString bind.command) && bind.command.hyprland or null == null; + + mkEnv = config: let + defaultEnv = + if config.mods.wm.useDefaultEnv + then defaultWmConf.defaultEnv config + else { + all = {}; + hyprland = {}; + }; + userEnv = + if config.mods.wm.env ? all + then config.mods.wm.env.all // config.mods.wm.env.hyprland + else config.mods.wm.env; + env = userEnv // defaultEnv.all // defaultEnv.hyprland; + in + lib.attrsets.mapAttrsToList ( + name: value: "${name},${value}" + ) + env; + mkAutoStart = config: let + defaultStartup = + if config.mods.wm.useDefaultStartup + then defaultWmConf.defaultStartup config + else { + all = []; + hyprland = []; + }; + userStartup = + if config.mods.wm.startup ? all + then config.mods.wm.startup.all ++ config.mods.wm.startup.hyprland + else config.mods.wm.startup; + autoStart = userStartup ++ defaultStartup.all ++ defaultStartup.hyprland; + in + autoStart; + mkWindowRule = config: let + defaultWindowRules = + if config.mods.wm.useDefaultWindowRules + then defaultWmConf.defaultWindowRules.hyprland + else []; + in + # defaultWindowRules ++ config.mods.wm.windowRules.hyprland; + defaultWindowRules; + in { enable = true; package = mkDashDefault pkgs.hyprland; plugins = @@ -174,124 +253,13 @@ in { lib.mkMerge [ { - "$mod" = mkDashDefault "SUPER"; + "$mod" = mkDashDefault config.mods.wm.modKey; bindm = [ "$mod, mouse:272, movewindow" "$mod, mouse:273, resizeactive" ]; - bind = [ - # screenshots - ''$mod SUPER,S,exec,grim -g "$(slurp)" - | wl-copy'' - ''$mod SUPERSHIFT,S,exec,grim -g "$(slurp)" - | satty -f -'' - - # regular programs - "$mod SUPER,F,exec,${browserName}" - (lib.mkIf ( - browserName == "firefox" || browserName == "zen" - ) "$mod SUPERSHIFT,F,exec,${browserName} -p special") - "$mod SUPER,T,exec,kitty -1" - "$mod SUPER,E,exec,nautilus -w" - (lib.mkIf config.mods.yazi.enable "$mod SUPER,Y,exec, EDITOR='neovide --no-fork' kitty yazi") - "$mod SUPER,N,exec,neovide" - (lib.mkIf config.mods.anyrun.enable "$mod SUPER,R,exec,anyrun") - (lib.mkIf config.mods.oxi.oxirun.enable "$mod SUPER,R,exec,oxirun") - (lib.mkIf config.mods.oxi.oxidash.enable "$mod SUPER,M,exec,oxidash") - (lib.mkIf config.mods.oxi.oxicalc.enable "$mod SUPER,G,exec,oxicalc") - (lib.mkIf config.mods.oxi.oxishut.enable "$mod SUPER,D,exec,oxishut") - (lib.mkIf config.mods.oxi.oxipaste.enable "$mod SUPER,A,exec,oxipaste") - (lib.mkIf config.mods.oxi.hyprdock.enable "$mod SUPERSHIFT,P,exec,hyprdock --gui") - (lib.mkIf config.mods.hypr.hyprlock.enable "$mod SUPERSHIFT,L,exec, playerctl -a pause & hyprlock & systemctl suspend") - (lib.mkIf config.mods.hypr.hyprlock.enable "$mod SUPERSHIFT,K,exec, playerctl -a pause & hyprlock & systemctl hibernate") - - # media keys - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioMute,exec, audioControl mute") - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioLowerVolume,exec, audioControl sink -5%") - (lib.mkIf config.mods.scripts.audioControl ",XF86AudioRaiseVolume,exec, audioControl sink +5%") - ",XF86AudioPlay,exec, playerctl play-pause" - ",XF86AudioNext,exec, playerctl next" - ",XF86AudioPrev,exec, playerctl previous" - (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessDown,exec, changeBrightness 10%-") - (lib.mkIf config.mods.scripts.changeBrightness ",XF86MonBrightnessUp,exec, changeBrightness +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" - - (lib.mkIf config.mods.hypr.hyprland.hyprspaceEnable - "SUPER, W, overview:toggle") - ]; - general = { gaps_out = mkDashDefault "3,5,5,5"; border_size = mkDashDefault 3; @@ -364,70 +332,19 @@ in { "3, horizontal, workspace" ]; - monitor = mkDashDefault config.mods.hypr.hyprland.monitor; - workspace = mkDashDefault config.mods.hypr.hyprland.workspace; - - env = [ - "GTK_CSD,0" - ''TERM,"kitty /bin/fish"'' - "XDG_CURRENT_DESKTOP=Hyprland" - "XDG_SESSION_TYPE=wayland" - "XDG_SESSION_DESKTOP=Hyprland" - "HYPRCURSOR_THEME,${config.mods.stylix.cursor.name}" - "HYPRCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" - "XCURSOR_THEME,${config.mods.stylix.cursor.name}" - "XCURSOR_SIZE,${toString config.mods.stylix.cursor.size}" - "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"'' - - (lib.mkIf config.mods.gpu.nvidia.enable "LIBVA_DRIVER_NAME,nvidia") - (lib.mkIf config.mods.gpu.nvidia.enable "XDG_SESSION_TYPE,wayland") - (lib.mkIf config.mods.gpu.nvidia.enable "GBM_BACKEND,nvidia-drm") - (lib.mkIf config.mods.gpu.nvidia.enable "__GLX_VENDOR_LIBRARY_NAME,nvidia") - ]; - layerrule = [ # layer rules # mainly to disable animations within slurp and grim "noanim, selection" ]; - windowrule = [ - # window rules - "float,class:^(.*)(OxiCalc)(.*)$" - "float,class:^(.*)(winecfg.exe)(.*)$" - "float,class:^(.*)(copyq)(.*)$" - "center,class:^(.*)(swappy)(.*)$" - "workspace 10 silent,class:^(.*)(steam)(.*)$" - - # Otherwise neovide will ignore tiling - "suppressevent fullscreen maximize,class:^(.*)(neovide)(.*)$" - ]; - - exec-once = - [ - # environment - "systemctl --user import-environment" - "dbus-update-activation-environment --systemd --all" - "hyprctl setcursor ${config.mods.stylix.cursor.name} ${toString config.mods.stylix.cursor.size}" - # ensures the systemd service knows what "hyprctl" is :) - (lib.mkIf config.mods.gaming.gamemode "systemctl try-restart gamemoded.service --user") - - # other programs - "${browserName}" - (lib.mkIf config.mods.oxi.hyprdock.enable "hyprdock --server") - (lib.mkIf config.mods.hypr.hyprpaper.enable "hyprpaper") - (lib.mkIf config.mods.hypr.hyprland.useIronbar "ironbar") - (lib.mkIf config.mods.oxi.oxipaste.enable "oxipaste_daemon") - (lib.mkIf config.mods.oxi.oxinoti.enable "oxinoti") - ] - ++ config.mods.hypr.hyprland.extraAutostart; - + workspace = mkDashDefault (mkWorkspace config.mods.wm.workspaces); + monitor = mkDashDefault (mkMonitors config.mods.wm.monitors); + env = mkDashDefault (mkEnv config); + bind = mkDashDefault (mkBinds config); + binde = mkDashDefault (mkEBinds config); + windowrule = mkDashDefault (mkWindowRule config); + exec-once = mkDashDefault (mkAutoStart config); plugin = config.mods.hypr.hyprland.pluginConfig; } config.mods.hypr.hyprland.customConfig diff --git a/modules/programs/hypr/hyprlock.nix b/modules/programs/hypr/hyprlock.nix index 30ea707..c152b22 100644 --- a/modules/programs/hypr/hyprlock.nix +++ b/modules/programs/hypr/hyprlock.nix @@ -24,14 +24,22 @@ input-field = [ { - monitor = "${config.mods.hypr.hyprland.defaultMonitor}"; + monitor = "${ + if config.mods.wm.monitors != [] + then (builtins.elemAt config.mods.wm.monitors 0).name + else "" + }"; placeholder_text = "password or something"; } ]; label = [ { - monitor = "${config.mods.hypr.hyprland.defaultMonitor}"; + monitor = "${ + if config.mods.wm.monitors != [] + then (builtins.elemAt config.mods.wm.monitors 0).name + else "" + }"; text = "$TIME"; font_size = 50; position = "0, 200"; diff --git a/modules/programs/ironbar.nix b/modules/programs/ironbar.nix index 9a4bac4..5757347 100644 --- a/modules/programs/ironbar.nix +++ b/modules/programs/ironbar.nix @@ -1,5 +1,4 @@ { - mkDashDefault, lib, config, pkgs, @@ -7,7 +6,7 @@ options, ... }: let - username = config.conf.username; + inherit (config.conf) username; base16 = pkgs.callPackage inputs.base16.lib {}; scheme = base16.mkSchemeAttrs config.stylix.base16Scheme; ironbarDefaultConfig = useBatteryModule: { @@ -183,8 +182,15 @@ ]; }; monitorConfig = useBatteryModule: - if config.mods.hypr.hyprland.ironbarSingleMonitor - then {monitors.${config.mods.hypr.hyprland.defaultMonitor} = ironbarDefaultConfig useBatteryModule;} + if config.mods.ironbar.ironbarSingleMonitor + then { + monitors.${ + if config.mods.wm.monitors != [] + then (builtins.elemAt config.mods.wm.monitors 0).name + else "" + } = + ironbarDefaultConfig useBatteryModule; + } else ironbarDefaultConfig useBatteryModule; in { options.mods = { @@ -195,6 +201,14 @@ in { type = lib.types.bool; description = "Enables ironbar"; }; + ironbarSingleMonitor = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Whether to use ironbar on a single monitor. + ''; + }; useDefaultConfig = lib.mkOption { default = true; example = false; @@ -257,6 +271,7 @@ in { @import url("/home/${username}/.config/gtk-3.0/gtk.css"); @define-color primary #${scheme.base0D}; + @define-color warning #${scheme.base0F}; @define-color muted-text #${scheme.base05}; @define-color background #${scheme.base00}; @define-color secondary-background #${scheme.base02}; @@ -406,6 +421,10 @@ in { color: @primary; } + .workspaces .item:not(.visible) { + color: @warning; + } + .workspaces .item.focused { background-color: @primary; color: @background; diff --git a/modules/programs/niri.nix b/modules/programs/niri.nix new file mode 100644 index 0000000..cf39776 --- /dev/null +++ b/modules/programs/niri.nix @@ -0,0 +1,379 @@ +{ + mkDashDefault, + config, + lib, + options, + pkgs, + ... +}: let + defaultWmConf = import ../../lib/wm.nix {inherit lib;}; +in { + options.mods.niri = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Enable Niri + ''; + }; + useDefaultConfig = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = '' + Use preconfigured Niri config. + ''; + }; + customConfig = lib.mkOption { + default = ''''; + example = ''''; + type = lib.types.lines; + description = '' + Custom Niri configuration. + Will be merged with default configuration if enabled. + ''; + }; + }; + + config = lib.mkIf config.mods.niri.enable ( + lib.optionalAttrs (options ? wayland.windowManager.hyprland) { + # TODO deduplicate and abstract away base window management config + # install Niri related packages + home.packages = with pkgs; [ + xorg.xprop + grim + slurp + satty + xdg-desktop-portal-gtk + xdg-desktop-portal-gnome + kdePackages.xdg-desktop-portal-kde + xdg-desktop-portal-shana + copyq + wl-clipboard + + niri + xwayland-satellite + ]; + + xdg.configFile."niri/config.kdl" = let + mkNiriMod = mods: + builtins.map (mod: + if mod == "Mod" + then config.mods.wm.modKey + "+" + else "${mod}" + "+") + mods + |> lib.strings.concatStringsSep ""; + mkNiriArg = args: + if args != [] + then "\"${(lib.strings.concatStringsSep " " args)}\"" + else ""; + mkNiriCommand = bind: let + args = bind.args or []; + in + if bind.command == "quit" + then "quit;" + else if bind.command == "killActive" + then "close-window;" + else if bind.command == "moveFocusTop" + then "focus-window-up;" + else if bind.command == "focusWorkspace" + then "focus-workspace" + " " + mkNiriArg args + ";" + else if bind.command == "moveWindowRight" + then "move-column-right-or-to-monitor-right;" + else if bind.command == "moveWindowDown" + then "move-window-down;" + else if bind.command == "moveWindowLeft" + then "move-column-left-or-to-monitor-left;" + else if bind.command == "moveWindowUp" + then "move-window-up;" + else if bind.command == "moveFocusUp" + then "focus-window-up;" + else if bind.command == "moveFocusRight" + then "focus-column-or-monitor-right;" + else if bind.command == "moveFocusDown" + then "focus-window-down;" + else if bind.command == "moveFocusLeft" + then "focus-column-or-monitor-left;" + else if bind.command == "toggleFloating" + then "toggle-window-floating;" + else if bind.command == "toggleFullscreen" + then "fullscreen-window;" + else if bind.command == "moveToWorkspace" + then "move-window-to-workspace" + " " + mkNiriArg args + ";" + else if bind.command == "spawn" + then "spawn" + " " + mkNiriArg args + ";" + else if bind.command == "spawn-sh" + then "spawn-sh" + " " + mkNiriArg args + ";" + else if bind.command.niri != null + then bind.command.niri + " " + mkNiriArg args + ";" + else ""; + + mkNiriBinds = cfg: + '' binds { + '' + + ( + ( + builtins.map ( + bind: + /* + kdl + */ + if bind ? key && bind ? command + then '' + ${mkNiriMod (bind.modKeys or [])}${bind.key} ${ + if + bind ? meta + && bind.meta ? niri + then + ( + if + bind.meta.niri ? desc + && bind.meta.niri.desc != "" + then "hotkey-overlay-title=\"" + bind.meta.niri.desc + "\"" + else "" + ) + + " " + + ( + if + bind.meta.niri ? repeat + && bind.meta.niri.repeat + then "repeat=true" + else "repeat=false" + ) + + " " + + ( + if + bind.meta.niri ? allowWhileLocked + && bind.meta.niri.allowWhileLocked + then "allow-when-locked=true" + else "" + ) + + " " + + ( + if + bind.meta.niri ? allowInhibit + && bind.meta.niri.allowInhibit + then "allow-inhibiting=true" + else "allow-inhibiting=false" + ) + else "" + } { ${ + mkNiriCommand bind + } } + '' + else '''' + ) + (( + cfg.mods.wm.binds + ++ ( + if cfg.mods.wm.useDefaultBinds + then defaultWmConf.defaultBinds cfg + else [] + ) + ) + |> builtins.filter (bind: !(hasInvalidCustomCommand bind))) + ) + |> lib.strings.concatLines + ) + + '' + } + ''; + mkVrr = vrr: + if vrr + then "true" + else "false"; + mkNiriMonitors = cfg: + (builtins.map ( + monitor: + # TODO vrr + /* + kdl + */ + '' + output "${monitor.name}" { + variable-refresh-rate on-demand=${mkVrr monitor.vrr} + mode "${builtins.toString monitor.resolutionX}x${builtins.toString monitor.resolutionY}@${builtins.toString monitor.refreshrate}" + scale ${builtins.toString monitor.scale} + transform "${ + if (monitor.transform == "0") + then "normal" + else monitor.transform + }" + position x=${builtins.toString monitor.positionX} y=${builtins.toString monitor.positionY} + } + '' + ) + cfg.mods.wm.monitors) + |> lib.strings.concatLines; + mkNiriWorkspaces = cfg: + (builtins.map ( + workspace: + /* + kdl + */ + '' + workspace "${workspace.name}" { + open-on-output "${workspace.monitor}" + } + '' + ) + cfg.mods.wm.workspaces) + |> lib.strings.concatLines; + mkNiriWindowRules = cfg: ( + ( + builtins.map ( + rule: + /* + kdl + */ + '' + window-rule { + ${rule} + } + '' + ) + ( + cfg.mods.wm.windowRules.niri + ++ ( + if cfg.mods.wm.useDefaultWindowRules + then defaultWmConf.defaultWindowRules.niri + else [] + ) + ) + ) + |> lib.strings.concatLines + ); + hasInvalidCustomCommand = bind: !(bind ? command) || (!(builtins.isString bind.command) && bind.command.niri or null == null); + mkNiriEnv = config: let + defaultEnv = + if config.mods.wm.useDefaultEnv + then defaultWmConf.defaultEnv config + else { + all = {}; + niri = {}; + }; + userEnv = + if config.mods.wm.env ? all + then config.mods.wm.env.all // config.mods.wm.env.niri + else config.mods.wm.env; + env = + userEnv + // defaultEnv.all + // defaultEnv.niri; + in + '' + environment { + '' + + ( + lib.attrsets.mapAttrsToList ( + name: value: "${name} \"${value}\"" + ) + env + |> lib.strings.concatLines + ) + + '' + } + ''; + mkNiriAutoStart = config: let + defaultStartup = + if config.mods.wm.useDefaultStartup + then defaultWmConf.defaultStartup config + else { + all = {}; + niri = {}; + }; + userStartup = + if config.mods.wm.startup ? all + then config.mods.wm.startup.all ++ config.mods.wm.startup.niri + else config.mods.wm.startup; + autoStart = userStartup ++ defaultStartup.all ++ defaultStartup.niri; + in + (builtins.map (value: "spawn-at-startup \"${value}\"") + autoStart) + |> lib.strings.concatLines; + defaultConfig = + /* + kdl + */ + '' + input { + keyboard { + xkb { + layout "enIntUmlaut" + } + repeat-delay 200 + repeat-rate 25 + numlock + } + + touchpad { + tap + natural-scroll + } + + mouse { + accel-speed 0.2 + accel-profile "flat" + } + + focus-follows-mouse max-scroll-amount="25%" + } + + layout { + // Set gaps around windows in logical pixels. + gaps 10 + center-focused-column "never" + always-center-single-column + + preset-column-widths { + proportion 0.33333 + proportion 0.5 + proportion 1.0 + } + + default-column-width { proportion 0.5; } + focus-ring { + width 3 + inactive-color "#505050" + active-gradient from="#ff0000" to="#00ff00" angle=45 + } + + border { + off + } + + // You can enable drop shadows for windows. + shadow { + on + softness 30 + spread 5 + offset x=0 y=5 + color "#0007" + } + } + + // Autostart + + hotkey-overlay { + skip-at-startup + } + + prefer-no-csd + '' + + mkNiriMonitors config + + mkNiriBinds config + + mkNiriWorkspaces config + + mkNiriWindowRules config + + mkNiriEnv config + + mkNiriAutoStart config; + in + mkDashDefault { + text = + if config.mods.niri.useDefaultConfig + then defaultConfig + config.mods.niri.customConfig + else config.mods.niri.customConfig; + }; + } + ); +} diff --git a/modules/programs/oxi/default.nix b/modules/programs/oxi/default.nix index 99de567..942d0d1 100644 --- a/modules/programs/oxi/default.nix +++ b/modules/programs/oxi/default.nix @@ -54,8 +54,8 @@ lib.optionalAttrs (options ? home.packages) { programs = { hyprdock = { - enable = config.mods.oxi.hyprdock.enable; - settings = config.mods.oxi.hyprdock.settings; + inherit (config.mods.oxi.hyprdock) enable; + inherit (config.mods.oxi.hyprdock) settings; }; oxicalc.enable = lib.mkIf config.mods.oxi.oxicalc.enable true; ReSet = lib.mkIf config.mods.oxi.ReSet.enable { @@ -75,7 +75,7 @@ }; } // lib.optionalAttrs (options ? services.logind) { - services.logind.lidSwitchExternalPower = "ignore"; + services.logind.settings.Login.HandleLidSwitchExternalPower = "ignore"; } ); } diff --git a/modules/programs/wm.nix b/modules/programs/wm.nix new file mode 100644 index 0000000..2dd6bba --- /dev/null +++ b/modules/programs/wm.nix @@ -0,0 +1,403 @@ +{lib, ...}: let + wmWorkspace = with lib.types; { + options = { + name = lib.mkOption { + default = ""; + example = "1"; + type = str; + description = "Name of the workspace"; + }; + default = lib.mkOption { + default = false; + example = true; + type = bool; + description = "Whether the workspace is the default workspace. (Currently doesn't do anything on niri)"; + }; + monitor = lib.mkOption { + default = ""; + example = "DP-1"; + type = str; + description = "Name of the monitor to bind the workspace to"; + }; + }; + }; + + wmOptions = with lib.types; { + options = { + name = lib.mkOption { + default = "DP-1"; + example = "DP-1"; + type = str; + description = "Name of the monitor"; + }; + resolutionX = lib.mkOption { + default = 1920; + example = 2560; + type = number; + description = "ResolutionX of the monitor"; + }; + resolutionY = lib.mkOption { + default = 1080; + example = 1440; + type = number; + description = "ResolutionY of the monitor"; + }; + refreshrate = lib.mkOption { + default = 60; + example = 144; + type = number; + description = "Refreshrate of the monitor"; + }; + positionX = lib.mkOption { + default = 0; + example = 1920; + type = number; + description = "PositionX of the monitor"; + }; + positionY = lib.mkOption { + default = 0; + example = 1080; + type = number; + description = "PositionY of the monitor"; + }; + scale = lib.mkOption { + default = 1; + example = 2; + type = number; + description = "Scale of the monitor"; + }; + transform = lib.mkOption { + default = "0"; + example = "90"; + type = enum ["0" "90" "180" "270" "360"]; + description = "Transform of the monitor"; + }; + vrr = lib.mkOption { + default = false; + example = true; + type = bool; + description = "VRR status of the monitor"; + }; + }; + }; + + modKeys = lib.types.enum ["Mod" "Super" "Alt" "Shift" "Ctrl"]; + + customCommand = with lib.types; { + options = { + niri = lib.mkOption { + default = null; + example = "kitty"; + type = either null str; + description = "Command to use in niri"; + }; + hyprland = lib.mkOption { + default = null; + example = "kitty"; + type = either null str; + description = "Command to use in hyprland"; + }; + }; + }; + + envOptions = with lib.types; { + options = { + all = lib.mkOption { + default = {}; + example = {}; + type = attrsOf str; + description = "General Env"; + }; + niri = lib.mkOption { + default = {}; + example = {}; + type = attrsOf str; + description = "Niri Env"; + }; + hyprland = lib.mkOption { + default = {}; + example = {}; + type = attrsOf str; + description = "Hyprland Env"; + }; + }; + }; + + startupOptions = with lib.types; { + options = { + all = lib.mkOption { + default = []; + example = []; + type = listOf str; + description = "General Startup commands"; + }; + niri = lib.mkOption { + default = []; + example = []; + type = listOf str; + description = "Niri Startup commands"; + }; + hyprland = lib.mkOption { + default = []; + example = []; + type = listOf str; + description = "Hyprland Startup commands"; + }; + }; + }; + + windowRuleOptions = with lib.types; { + options = { + niri = lib.mkOption { + default = []; + example = []; + type = listOf lines; + description = "Niri window rules"; + }; + hyprland = lib.mkOption { + default = []; + example = []; + type = listOf str; + description = "Hyprland window rules"; + }; + }; + }; + + bindOptions = with lib.types; { + options = { + modKeys = lib.mkOption { + default = []; + example = ["Mod"]; + type = listOf modKeys; + description = "List of modifier keys"; + }; + key = lib.mkOption { + default = ""; + example = "Q"; + type = str; + description = "Key to bind"; + }; + command = lib.mkOption { + default = ""; + example = "killActive"; + type = either (submodule customCommand) (enum [ + "spawn" + "spawn-sh" + "quit" + "killActive" + "moveFocusUp" + "moveFocusRight" + "moveFocusDown" + "moveFocusLeft" + "moveWindowUp" + "moveWindowRight" + "moveWindowDown" + "moveWindowLeft" + "focusWorkspace" + "moveToWorkspace" + "toggleFloating" + "toggleFullscreen" + ]); + description = "Command to execute"; + }; + args = lib.mkOption { + default = []; + example = []; + type = listOf str; + description = "Additional arguments for the command"; + }; + meta = lib.mkOption { + default = {}; + example = {}; + type = submodule { + options = { + niri = lib.mkOption { + default = {}; + type = submodule { + options = { + desc = lib.mkOption { + default = ""; + type = str; + description = "Description for Hotkey overview"; + }; + repeat = lib.mkOption { + type = bool; + default = true; + description = "Whether to repeat the keybind on hold"; + }; + allowInhibit = lib.mkOption { + type = bool; + default = true; + description = "Whether to allow inhibiting"; + }; + allowWhileLocked = lib.mkOption { + type = bool; + default = false; + description = "Whether to allow while locked"; + }; + cooldown = lib.mkOption { + type = number; + default = 0; + description = "Cooldown on bind"; + }; + }; + }; + description = "Niri meta for keybinds"; + }; + hyprland = lib.mkOption { + default = {}; + type = submodule { + options = { + repeat = lib.mkOption { + type = bool; + default = true; + description = "Whether to repeat the keybind on hold"; + }; + }; + }; + description = "Niri meta for keybinds"; + }; + }; + }; + description = "Custom metadata per bind. Note, only supported environments are taken into account."; + }; + }; + }; +in { + options.mods.wm = { + modKey = lib.mkOption { + default = "Super"; + example = "Alt"; + type = modKeys; + description = "Mod key"; + }; + + env = lib.mkOption { + default = {}; + example = { + all = { + EDITOR = "Neovim"; + }; + niri = { + EDITOR = "Emacs"; + }; + }; + type = with lib.types; either (submodule envOptions) (attrsOf str); + description = "Environment configuration"; + }; + + useDefaultEnv = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Whether to use default env variables"; + }; + + startup = lib.mkOption { + default = []; + example = { + all = ["oxinoti"]; + niri = ["someniricommand"]; + hyprland = ["somehyprlandcommand"]; + }; + type = with lib.types; either (submodule startupOptions) (listOf str); + description = "Start commands"; + }; + + useDefaultStartup = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Whether to use default autostart commands"; + }; + + useDefaultWindowRules = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Whether to use default window rules"; + }; + + windowRules = lib.mkOption { + default = []; + example = { + niri = [ + '' + match app-id=r#"^org\.keepassxc\.KeePassXC$"# + match app-id=r#"^org\.gnome\.World\.Secrets$"# + + block-out-from "screen-capture" + '' + '' + match app-id=r#"^steam$"# + open-on-workspace "0" + '' + ]; + }; + type = lib.types.submodule windowRuleOptions; + description = "Window rules"; + }; + + workspaces = lib.mkOption { + default = []; + example = [ + { + name = "chat"; + monitor = "DP-1"; + } + ]; + type = + lib.types.listOf (lib.types.submodule wmWorkspace); + description = "Workspace configuration"; + }; + + monitors = lib.mkOption { + default = []; + example = [ + { + name = "DP-1"; + resolutionX = 1920; + resolutionY = 1080; + refreshrate = 144; + positionX = 0; + positionY = 0; + scale = 1; + transform = "0"; + vrr = false; + } + ]; + type = + lib.types.listOf (lib.types.submodule wmOptions); + description = "Monitor configuration"; + }; + + useDefaultBinds = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Whether to use default keybinds"; + }; + + binds = lib.mkOption { + default = []; + example = [ + { + modKeys = ["Mod"]; + key = "Q"; + command = "killActive"; + args = []; + meta = { + niri = { + desc = "Kill the active window"; + repeat = false; + }; + hyprland = {}; + }; + } + ]; + type = + lib.types.listOf (lib.types.submodule bindOptions); + description = "Bind configuration"; + }; + }; +} From 1f367f80fa54c656636a22e863a53d596163e10d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 5 Oct 2025 13:37:51 +0200 Subject: [PATCH 306/330] chore(documentation): Add niri --- docs/src/README.md | 35 +++++++++++-------------- example/hosts/example/configuration.nix | 32 +++++++++------------- 2 files changed, 28 insertions(+), 39 deletions(-) diff --git a/docs/src/README.md b/docs/src/README.md index 6233312..cae9646 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -74,26 +74,20 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang # default disk config has root home boot and swap partition, overwrite if you want something different sops.enable = false; nextcloud.enable = false; - hypr.hyprland = { - # TODO monitor configuration for hyprland (hyprland is default) - # should be something like DP-1 - defaultMonitor = "YOURMONITOR"; - # width x height @ refreshrate - defaultMonitorMode = "1920x1080@60"; - # scale for your main monitor - defaultMonitorScale = "1"; - # additional configruation can be done as well - # customConfig = { - # monitor = [ - # # default - # "${config.mods.hypr.hyprland.defaultMonitor},${config.mods.hypr.hyprland.defaultMonitorMode},0x0,${config.mods.hypr.hyprland.defaultMonitorScale}" - # # second example monitor - # "DP-2,3440x1440@180,auto,1" - # # all others - # ",highrr,auto,1" - # ]; - # } - }; + wm.monitors = [ + # Example + # { + # name = "DP-1"; + # resolutionX = 3440; + # resolutionY = 1440; + # refreshrate = 180; + # positionX = 2560; + # positionY = 0; + # scale = 1; + # transform = "0"; + # vrr = false; + # } + ]; gpu.nvidia.enable = true; kdeConnect.enable = true; # login manager: @@ -234,6 +228,7 @@ These modules attempt to combine the home-manager and nixos packages/options to For package lists, please check the individual modules, as the lists can be long. - Hyprland: Installs and configures Hyprland with various additional packages +- Niri: Installs and configures Niri with various additional packages - acpid : Enables the acpid daemon - base packages : A list of system packages to be installed by default - bluetooth : Configures/enables bluetooth and installs tools for bluetooth diff --git a/example/hosts/example/configuration.nix b/example/hosts/example/configuration.nix index 5d9e612..dbe8cd0 100644 --- a/example/hosts/example/configuration.nix +++ b/example/hosts/example/configuration.nix @@ -18,26 +18,20 @@ # default disk config has root home boot and swap partition, overwrite if you want something different sops.enable = false; nextcloud.enable = false; - hypr.hyprland = { - # TODO monitor configuration for hyprland (hyprland is default) - # should be something like DP-1 - defaultMonitor = "YOURMONITOR"; - # width x height @ refreshrate - defaultMonitorMode = "1920x1080@60"; - # scale for your main monitor - defaultMonitorScale = "1"; - # additional configruation can be done as well - # customConfig = { - # monitor = [ - # # default - # "${config.mods.hypr.hyprland.defaultMonitor},${config.mods.hypr.hyprland.defaultMonitorMode},0x0,${config.mods.hypr.hyprland.defaultMonitorScale}" - # # second example monitor - # "DP-2,3440x1440@180,auto,1" - # # all others - # ",highrr,auto,1" - # ]; + wm.monitors = [ + # Example + # { + # name = "DP-1"; + # resolutionX = 3440; + # resolutionY = 1440; + # refreshrate = 180; + # positionX = 2560; + # positionY = 0; + # scale = 1; + # transform = "0"; + # vrr = false; # } - }; + ]; gpu.nvidia.enable = true; kdeConnect.enable = true; # login manager: From 6f90f67384d437f7271c8ecde4b4c73b4f91e314 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 5 Oct 2025 13:39:04 +0200 Subject: [PATCH 307/330] chore(statix): Apply fixes --- modules/programs/hypr/hyprland.nix | 2 +- modules/programs/niri.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index f6ee377..906476d 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -161,7 +161,7 @@ in { bind: "${mkMods bind},${bind.key},${mkCommand bind}" ); mkCommand = bind: let - args = bind.args or []; + inherit (bind) args; in if bind.command == "quit" then "exit" diff --git a/modules/programs/niri.nix b/modules/programs/niri.nix index cf39776..a45d419 100644 --- a/modules/programs/niri.nix +++ b/modules/programs/niri.nix @@ -69,7 +69,7 @@ in { then "\"${(lib.strings.concatStringsSep " " args)}\"" else ""; mkNiriCommand = bind: let - args = bind.args or []; + inherit (bind) args; in if bind.command == "quit" then "quit;" From 65e21a7d0006959f8a4dfe5f6446f54dd96020fc Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 7 Oct 2025 12:34:48 +0200 Subject: [PATCH 308/330] chore(wm): Conditionally check for args --- modules/programs/hypr/hyprland.nix | 2 +- modules/programs/niri.nix | 2 +- modules/programs/wm.nix | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index 906476d..f6ee377 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -161,7 +161,7 @@ in { bind: "${mkMods bind},${bind.key},${mkCommand bind}" ); mkCommand = bind: let - inherit (bind) args; + args = bind.args or []; in if bind.command == "quit" then "exit" diff --git a/modules/programs/niri.nix b/modules/programs/niri.nix index a45d419..cf39776 100644 --- a/modules/programs/niri.nix +++ b/modules/programs/niri.nix @@ -69,7 +69,7 @@ in { then "\"${(lib.strings.concatStringsSep " " args)}\"" else ""; mkNiriCommand = bind: let - inherit (bind) args; + args = bind.args or []; in if bind.command == "quit" then "quit;" diff --git a/modules/programs/wm.nix b/modules/programs/wm.nix index 2dd6bba..0f794d3 100644 --- a/modules/programs/wm.nix +++ b/modules/programs/wm.nix @@ -319,7 +319,7 @@ in { }; windowRules = lib.mkOption { - default = []; + default = {}; example = { niri = [ '' From a49055c1cc1e3183665f69fbeb746c62dddca665 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 7 Oct 2025 12:49:57 +0200 Subject: [PATCH 309/330] chore(ironbar): Update upower module --- modules/programs/ironbar.nix | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/modules/programs/ironbar.nix b/modules/programs/ironbar.nix index 5757347..b34b32a 100644 --- a/modules/programs/ironbar.nix +++ b/modules/programs/ironbar.nix @@ -13,9 +13,14 @@ end = [ (lib.mkIf useBatteryModule { - type = "upower"; + type = "battery"; class = "battery"; icon_size = 0; + format = "{percentage}%"; + thresholds = { + warning = 20; + critical = 5; + }; }) { class = "music"; @@ -430,8 +435,8 @@ in { color: @background; } - /* upower */ - .upower { + /* battery */ + .battery { font-size: 13px; padding: 0px 4px 0px 0px; margin: 2px 0px 2px 0px; @@ -439,21 +444,21 @@ in { color: @primary; } - .upower .icon { + .battery .icon { opacity: 0.0; } - .upower .label { + .battery .label { margin: 2px 0px 0px -8px; color: @primary; } - .upower:hover { + .battery:hover { background-color: @secondary-background; border-radius: 5px; } - .popup-upower { + .popup-battery { background-color: @background; color: @primary; border-radius: 8px; From db861d807a472ec1b8d575ee622d38e8d0919e3b Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 7 Oct 2025 15:41:50 +0200 Subject: [PATCH 310/330] chore(niri): Add anti flicker for nvidia --- modules/programs/niri.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/programs/niri.nix b/modules/programs/niri.nix index cf39776..a973774 100644 --- a/modules/programs/niri.nix +++ b/modules/programs/niri.nix @@ -353,6 +353,16 @@ in { } } + ${ + if config.mods.gpu.nvidia.enable + then '' + debug { + wait-for-frame-completion-before-queueing + } + '' + else '''' + } + // Autostart hotkey-overlay { From 2c218306b9773244ada6193796cb95fbe6d135fd Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 10 Oct 2025 19:29:14 +0200 Subject: [PATCH 311/330] chore(wm): Fix hyprland keybinds --- base/common_hardware.nix | 2 ++ lib/wm.nix | 6 +++--- modules/programs/hypr/hyprland.nix | 22 +++++++++++----------- modules/programs/niri.nix | 7 +++++-- modules/programs/printing.nix | 4 ++++ modules/programs/virtmanager.nix | 2 -- 6 files changed, 25 insertions(+), 18 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 56a6dc6..8df238a 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -164,6 +164,8 @@ in { "vboxusers" "video" "audio" + "scanner" + "lp" ]; packages = with pkgs; [ home-manager diff --git a/lib/wm.nix b/lib/wm.nix index 1352623..3b5819d 100644 --- a/lib/wm.nix +++ b/lib/wm.nix @@ -1,4 +1,4 @@ -{lib, ...}: let +let browserName = config: if (builtins.isString config.mods.homePackages.browser) then config.mods.homePackages.browser @@ -247,8 +247,8 @@ in { else {} ) - (mkBindWithDesc ["Mod"] "S" "spawn-sh" [''grim -g \"$(slurp)\" - | wl-copy''] "Take Screenshot") - (mkBindWithDesc ["Mod" "Shift"] "S" "spawn-sh" [''grim -g \"$(slurp)\" - | satty -f -''] "Take Screenshot and edit") + (mkBindWithDesc ["Mod"] "S" "spawn-sh" [''grim -g "$(slurp)" - | wl-copy''] "Take Screenshot") + (mkBindWithDesc ["Mod" "Shift"] "S" "spawn-sh" [''grim -g "$(slurp)" - | satty -f -''] "Take Screenshot and edit") ( if config.mods.scripts.audioControl diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index f6ee377..f32bc74 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -6,7 +6,7 @@ pkgs, ... }: let - defaultWmConf = import ../../../lib/wm.nix {inherit lib;}; + defaultWmConf = import ../../../lib/wm.nix; in { options.mods.hypr.hyprland = { enable = lib.mkOption { @@ -137,7 +137,7 @@ in { if args != [] then (lib.strings.concatStringsSep " " args) else ""; - shouldRepeat = bind: bind ? meta && bind.meta ? hyprland && bind.meta.hyprland ? repeat && bind.meta.hyprland.repeat; + shouldRepeat = bind: bind ? meta && bind.meta ? hyprland && bind.meta.hyprland ? repeat && bind.meta.hyprland.repeat == true; defaultBinds = cfg: if cfg.mods.wm.useDefaultBinds @@ -148,7 +148,7 @@ in { binds = cfg.mods.wm.binds ++ defaultBinds cfg; in binds - |> builtins.filter (bind: bind ? command && shouldRepeat bind && !hasInvalidCustomCommand bind) + |> builtins.filter (bind: bind ? command && shouldRepeat bind && !(hasInvalidCustomCommand bind)) |> builtins.map ( bind: "${mkMods bind},${bind.key},${mkCommand bind}" ); @@ -156,7 +156,7 @@ in { binds = cfg.mods.wm.binds ++ defaultBinds cfg; in binds - |> builtins.filter (bind: bind ? command && !(shouldRepeat bind) && !hasInvalidCustomCommand bind) + |> builtins.filter (bind: bind ? command && !(shouldRepeat bind) && !(hasInvalidCustomCommand bind)) |> builtins.map ( bind: "${mkMods bind},${bind.key},${mkCommand bind}" ); @@ -338,13 +338,13 @@ in { "noanim, selection" ]; - workspace = mkDashDefault (mkWorkspace config.mods.wm.workspaces); - monitor = mkDashDefault (mkMonitors config.mods.wm.monitors); - env = mkDashDefault (mkEnv config); - bind = mkDashDefault (mkBinds config); - binde = mkDashDefault (mkEBinds config); - windowrule = mkDashDefault (mkWindowRule config); - exec-once = mkDashDefault (mkAutoStart config); + workspace = mkWorkspace config.mods.wm.workspaces; + monitor = mkMonitors config.mods.wm.monitors; + env = mkEnv config; + bind = mkBinds config; + binde = mkEBinds config; + windowrule = mkWindowRule config; + exec-once = mkAutoStart config; plugin = config.mods.hypr.hyprland.pluginConfig; } config.mods.hypr.hyprland.customConfig diff --git a/modules/programs/niri.nix b/modules/programs/niri.nix index a973774..0531829 100644 --- a/modules/programs/niri.nix +++ b/modules/programs/niri.nix @@ -6,7 +6,7 @@ pkgs, ... }: let - defaultWmConf = import ../../lib/wm.nix {inherit lib;}; + defaultWmConf = import ../../lib/wm.nix; in { options.mods.niri = { enable = lib.mkOption { @@ -66,7 +66,10 @@ in { |> lib.strings.concatStringsSep ""; mkNiriArg = args: if args != [] - then "\"${(lib.strings.concatStringsSep " " args)}\"" + then let + concatCommand = lib.strings.concatStringsSep " " args; + validCommand = builtins.replaceStrings [''"''] [''\"''] concatCommand; + in "\"${validCommand}\"" else ""; mkNiriCommand = bind: let args = bind.args or []; diff --git a/modules/programs/printing.nix b/modules/programs/printing.nix index 848ffef..98bbe4f 100644 --- a/modules/programs/printing.nix +++ b/modules/programs/printing.nix @@ -16,6 +16,10 @@ config = lib.mkIf config.mods.printing.enable ( lib.optionalAttrs (options ? services.printing) { # Enable CUPS to print documents. + environment.systemPackages = with pkgs; [ + simple-scan + ]; + hardware.sane.enable = true; services = { printing = { enable = true; diff --git a/modules/programs/virtmanager.nix b/modules/programs/virtmanager.nix index bf81b93..de38848 100644 --- a/modules/programs/virtmanager.nix +++ b/modules/programs/virtmanager.nix @@ -44,8 +44,6 @@ in { qemu = { package = mkDashDefault pkgs.qemu_kvm; swtpm.enable = mkDashDefault true; - ovmf.enable = mkDashDefault true; - ovmf.packages = [pkgs.OVMFFull.fd]; }; }; spiceUSBRedirection.enable = mkDashDefault true; From af31c8f5f043886e112686f688c38bc4a25eaf85 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 10 Oct 2025 21:08:59 +0200 Subject: [PATCH 312/330] chore(yazi): Add backspace --- lib/wm.nix | 8 ++++---- modules/programs/yazi/yazi.nix | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/wm.nix b/lib/wm.nix index 3b5819d..a4bfd31 100644 --- a/lib/wm.nix +++ b/lib/wm.nix @@ -156,7 +156,7 @@ in { (mkSimpleBind ["Mod"] "7" "focusWorkspace" ["7"]) (mkSimpleBind ["Mod"] "8" "focusWorkspace" ["8"]) (mkSimpleBind ["Mod"] "9" "focusWorkspace" ["9"]) - (mkSimpleBind ["Mod"] "0" "focusWorkspace" ["0"]) + (mkSimpleBind ["Mod"] "0" "focusWorkspace" ["10"]) (mkSimpleBind ["Mod" "Shift"] "1" "moveToWorkspace" ["1"]) (mkSimpleBind ["Mod" "Shift"] "2" "moveToWorkspace" ["2"]) (mkSimpleBind ["Mod" "Shift"] "3" "moveToWorkspace" ["3"]) @@ -166,7 +166,7 @@ in { (mkSimpleBind ["Mod" "Shift"] "7" "moveToWorkspace" ["7"]) (mkSimpleBind ["Mod" "Shift"] "8" "moveToWorkspace" ["8"]) (mkSimpleBind ["Mod" "Shift"] "9" "moveToWorkspace" ["9"]) - (mkSimpleBind ["Mod" "Shift"] "0" "moveToWorkspace" ["0"]) + (mkSimpleBind ["Mod" "Shift"] "0" "moveToWorkspace" ["10"]) (mkSimpleBind ["Mod"] "B" "toggleFullscreen" []) (mkSimpleBind ["Mod"] "V" "toggleFloating" []) (mkSimpleBind ["Mod" "Shift"] "M" "quit" []) @@ -366,7 +366,7 @@ in { (mkSimpleCustomBind ["Mod" "Ctrl"] "7" "move-column-to-workspace" null ["7"]) (mkSimpleCustomBind ["Mod" "Ctrl"] "8" "move-column-to-workspace" null ["8"]) (mkSimpleCustomBind ["Mod" "Ctrl"] "9" "move-column-to-workspace" null ["9"]) - (mkSimpleCustomBind ["Mod" "Ctrl"] "0" "move-column-to-workspace" null ["0"]) + (mkSimpleCustomBind ["Mod" "Ctrl"] "0" "move-column-to-workspace" null ["10"]) (mkSimpleCustomBind ["Mod" "Shift"] "J" "focus-monitor-left" null []) (mkSimpleCustomBind ["Mod" "Shift"] "semicolon" "focus-monitor-right" null []) (mkSimpleCustomBind ["Mod" "Ctrl"] "J" "move-column-to-monitor-left" null []) @@ -425,7 +425,7 @@ in { (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "7" null "movetoworkspacesilent" ["7"]) (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "8" null "movetoworkspacesilent" ["8"]) (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "9" null "movetoworkspacesilent" ["9"]) - (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "0" null "movetoworkspacesilent" ["0"]) + (mkSimpleCustomBind ["Mod" "SHIFT" "ALT"] "0" null "movetoworkspacesilent" ["10"]) (mkRepeatCustomBind ["Mod"] "U" null "resizeactive" ["-20" "0"]) (mkRepeatCustomBind ["Mod"] "P" null "resizeactive" ["20" "0"]) (mkRepeatCustomBind ["Mod"] "O" null "resizeactive" ["0" "-20"]) diff --git a/modules/programs/yazi/yazi.nix b/modules/programs/yazi/yazi.nix index bed1c03..e76ac11 100644 --- a/modules/programs/yazi/yazi.nix +++ b/modules/programs/yazi/yazi.nix @@ -102,6 +102,11 @@ }; keymap = { mgr.keymap = [ + { + on = ""; + run = "backspace"; + desc = "Delete the character before the cursor"; + } { on = [""]; run = "escape"; From ec3d1a83399d92a260bbd8f6a42ea238ea7dbbe9 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 10 Oct 2025 21:08:59 +0200 Subject: [PATCH 313/330] chore(yazi): Add backspace --- modules/programs/yazi/yazi.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/programs/yazi/yazi.nix b/modules/programs/yazi/yazi.nix index e76ac11..0a6aec6 100644 --- a/modules/programs/yazi/yazi.nix +++ b/modules/programs/yazi/yazi.nix @@ -768,6 +768,11 @@ ]; input.keymap = [ + { + on = ""; + run = "backspace"; + desc = "Delete the character before the cursor"; + } { on = [""]; run = "close"; From 96cf0a24c1578fd32cb0f9c84bc3c34b569d209d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 11 Oct 2025 09:24:32 +0200 Subject: [PATCH 314/330] chore(scx): Allow setting the scheduler --- modules/programs/gaming.nix | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 3483171..6189cce 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -74,18 +74,50 @@ type = lib.types.int; description = "Your gpu device.(Physical id of lshw)"; }; + scheduler = lib.mkOption { + default = "scx_rustland"; + example = "scx_rusty"; + type = with lib.types; + nullOr (enum [ + "scx_bpfland" + "scx_chaos" + "scx_cosmos" + "scx_central" + "scx_flash" + "scx_flatcg" + "scx_lavd" + "scx_layered" + "scx_mitosis" + "scx_nest" + "scx_p2dq" + "scx_pair" + "scx_prev" + "scx_qmap" + "scx_rlfifo" + "scx_rustland" + "scx_rusty" + "scx_sdt" + "scx_simple" + "scx_tickless" + "scx_userland" + "scx_wd40" + ]); + description = "Scheduler to use, null disables this"; + }; }; config = lib.mkIf config.mods.gaming.enable ( lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = config.mods.gaming.tools; boot.kernelPackages = lib.mkForce pkgs.linuxPackages_cachyos; - services.scx.enable = true; + services.scx = lib.mkIf (config.mods.gaming.scheduler != null) { + enable = true; + inherit (config.mods.gaming) scheduler; + }; programs = { steam.enable = mkDashDefault config.mods.gaming.steam; gamemode.enable = true; gamemode = { - enableRenice = mkDashDefault true; settings = { general = { desiredgov = mkDashDefault "performance"; From b39db82a29e1d69ed12a8f9417f0b7c2ea5fdfd2 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 1 Nov 2025 23:19:25 +0100 Subject: [PATCH 315/330] feature(config): Allow pkgs config --- docs/src/README.md | 31 ++++++++++++++ flake.nix | 38 +++++------------- lib/default.nix | 67 +++++++++++++++++++++++++------ modules/programs/gpu.nix | 2 +- modules/programs/homePackages.nix | 10 ++--- modules/programs/ironbar.nix | 4 +- modules/programs/media.nix | 2 +- modules/programs/stylix.nix | 2 +- 8 files changed, 104 insertions(+), 52 deletions(-) diff --git a/docs/src/README.md b/docs/src/README.md index cae9646..6ac856e 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -165,6 +165,37 @@ nixosConfigurations = inputs.dashNix.dashNixLib.buildSystems { root = ./.; inherit additionalInputs; }; ``` +## Configuring pkgs + +While DashNix offers a default pkgs config, you may want to permit an unsecure packages or add an overlay to them. +You can configure both stable and unstable pkgs the following way: + +```nix +currentSystem = "x86_64-linux"; +permittedPackages = [ + "some package" +]; +config = { + system = currentSystem; + config = { + allowUnfree = true; + permittedInsecurePackages = permittedPackages; + }; +}; +unstableBundle = { + pkgs = inputs.unstable; + inherit config; +}; +inputs.dashNix.dashNixLib.buildSystems { + root = ./.; + inherit unstableBundle; +} +``` + +With this you could also change your input to something different should you wish to do so. +Note that overriding inputs via the flake still works, +this way however ensures you can also configure the inputs. + ## Stable/Unstable Sometimes you want to differentiate between systems that are stable and unstable, e.g. for servers and desktops/laptops. diff --git a/flake.nix b/flake.nix index 665829b..8033b24 100644 --- a/flake.nix +++ b/flake.nix @@ -59,47 +59,27 @@ currentSystem = "x86_64-linux"; permittedPackages = [ "olm-3.2.16" - # well done dotnet... - # this is just for omnisharp - "dotnet-core-combined" - "dotnet-wrapped-combined" - "dotnet-combined" - "dotnet-sdk-6.0.428" - "dotnet-sdk-wrapped-6.0.428" - "dotnet-sdk-6.0.136" - "dotnet-sdk-wrapped-6.0.136" - "dotnet-sdk-7.0.120" - "dotnet-sdk-wrapped-7.0.120" - "dotnet-sdk-7.0.410" - "dotnet-sdk-wrapped-7.0.410" - "jitsi-meet-1.0.8043" - "nextcloud-27.1.11" ]; - stable = import ./lib/importPkgs.nix { - inherit inputs permittedPackages currentSystem; - pkgs = inputs.stable; - }; - unstable = import ./lib/importPkgs.nix { - inherit inputs permittedPackages currentSystem; - pkgs = inputs.unstable; - }; - pkgsDarkreader = import ./lib/importPkgs.nix { - inherit inputs permittedPackages currentSystem; - pkgs = inputs.pkgsDarkreader; - }; + importPkgsFn = import ./lib/importPkgs.nix; + defaultConfigureFn = pkgs: + importPkgsFn { + inherit inputs currentSystem permittedPackages pkgs; + }; + stable = defaultConfigureFn inputs.stable; + unstable = defaultConfigureFn inputs.unstable; + pkgsDarkreader = defaultConfigureFn inputs.pkgsDarkreader; in rec { dashNixLib = import ./lib { inherit self inputs unstable - stable + permittedPackages ; dashNixAdditionalProps = { inherit pkgsDarkreader; }; system = currentSystem; - inherit (inputs.unstable) lib; }; docs = import ./docs { inherit inputs; diff --git a/lib/default.nix b/lib/default.nix index 30d34ec..0254ba2 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,13 +1,35 @@ { inputs, - lib, unstable, self, - stable, system, + permittedPackages, dashNixAdditionalProps ? {}, ... -}: { +}: let + defaultConfig = { + config = { + allowUnfree = true; + permittedInsecurePackages = permittedPackages; + }; + overlays = [ + inputs.nur.overlays.default + inputs.chaoticNyx.overlays.cache-friendly + ]; + inherit system; + }; + mkPkgs = { + pkgs, + config, + }: let + overlays = + if (config ? overlays) + then config.overlays + else []; + comnbinedConfig = config // {overlays = overlays ++ defaultConfig.overlays;}; + in + import pkgs comnbinedConfig; +in { /* * # buildSystems @@ -75,9 +97,27 @@ ]; }, additionalInputs ? {}, + unstableBundle ? {}, + stableBundle ? {}, overridePkgs ? false, ... - }: + }: let + unstableInput = unstableBundle.pkgs or inputs.unstable; + stableInput = stableBundle.pkgs or inputs.stable; + unstableConfig = unstableBundle.config or defaultConfig; + stableConfig = stableBundle.config or defaultConfig; + + unstablePkgs = mkPkgs { + pkgs = unstableInput; + config = unstableConfig; + }; + stablePkgs = mkPkgs { + pkgs = stableInput; + config = stableConfig; + }; + inputlib = unstableInput.lib; + inherit (unstablePkgs) lib; + in builtins.listToAttrs ( map (name: { @@ -94,27 +134,28 @@ additionalHomeConfig system root - stable - unstable additionalInputs dashNixAdditionalProps + lib ; + stable = stablePkgs; + unstable = unstablePkgs; pkgs = lib.mkForce ( if overridePkgs - then stable - else unstable + then stablePkgs + else unstablePkgs ); alternativePkgs = if overridePkgs - then unstable - else stable; + then unstablePkgs + else stablePkgs; hostName = name; homeMods = mods.home; additionalHomeMods = additionalMods.home; mkDashDefault = import ./override.nix {inherit lib;}; }; in - inputs.unstable.lib.nixosSystem { + inputlib.nixosSystem { modules = [ {_module.args = args;} @@ -122,8 +163,8 @@ ] ++ mods.nixos ++ additionalMods.nixos - ++ inputs.unstable.lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig - ++ inputs.unstable.lib.optional (builtins.pathExists mod) mod; + ++ lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig + ++ lib.optional (builtins.pathExists mod) mod; }; }) ( diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index 8fd8959..87305f0 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -87,7 +87,7 @@ pkgs.intel-media-driver) (lib.mkIf config.mods.gpu.vapi.enable pkgs.libvdpau-va-gl) (lib.mkIf config.mods.gpu.vapi.enable pkgs.libva) - (lib.mkIf config.mods.gpu.vapi.enable pkgs.vaapiVdpau) + (lib.mkIf config.mods.gpu.vapi.enable pkgs.libva-vdpau-driver) (lib.mkIf (config.mods.gpu.intelgpu.enable || config.mods.gpu.amdgpu.enable) pkgs.mesa) ]; rocmPackages = [ diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index eabd176..c987c94 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -102,11 +102,11 @@ (lib.mkIf config.mods.homePackages.orcaSlicer orca-slicer) (lib.mkIf config.mods.homePackages.vesktop vesktop) (lib.mkIf config.mods.homePackages.nextcloudClient nextcloud-client) - (lib.mkIf (!isNull config.mods.homePackages.matrixClient) config.mods.homePackages.matrixClient) - (lib.mkIf (!isNull config.mods.homePackages.mailClient) config.mods.homePackages.mailClient) + (lib.mkIf (config.mods.homePackages.matrixClient != null) config.mods.homePackages.matrixClient) + (lib.mkIf (config.mods.homePackages.mailClient != null) config.mods.homePackages.mailClient) (lib.mkIf ( # NOTE: This should be package, but nix doesn't have that.... - builtins.isAttrs config.mods.homePackages.browser && !isNull config.mods.homePackages.browser + builtins.isAttrs config.mods.homePackages.browser && config.mods.homePackages.browser != null ) config.mods.homePackages.browser) adw-gtk3 @@ -128,10 +128,10 @@ nh nix-index playerctl - poppler_utils + poppler-utils pulseaudio libsForQt5.qt5ct - qt6ct + qt6Packages.qt6ct fcp ripgrep rm-improved diff --git a/modules/programs/ironbar.nix b/modules/programs/ironbar.nix index b34b32a..b955d51 100644 --- a/modules/programs/ironbar.nix +++ b/modules/programs/ironbar.nix @@ -4,6 +4,7 @@ pkgs, inputs, options, + mkDashDefault, ... }: let inherit (config.conf) username; @@ -263,8 +264,7 @@ in { config = lib.mkIf (config.mods.ironbar.enable || config.mods.hypr.hyprland.useIronbar) ( lib.optionalAttrs (options ? programs.ironbar) { programs.ironbar = { - # TODO broken - # package = mkDashDefault pkgs.ironbar; + package = mkDashDefault pkgs.ironbar; enable = true; style = if config.mods.ironbar.useDefaultCss diff --git a/modules/programs/media.nix b/modules/programs/media.nix index f05500d..6afa15e 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -94,7 +94,7 @@ zathura evince libreoffice-fresh - onlyoffice-bin + onlyoffice-desktopeditors pdftk pdfpc polylux2pdfpc diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index 124cc64..dd11e8c 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -91,7 +91,7 @@ in { }; emoji = { - package = pkgs.noto-fonts-emoji; + package = pkgs.noto-fonts-color-emoji; name = "Noto Color Emoji"; }; }; From bafff7242749556df20c67c3c24953cf11696d34 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 1 Nov 2025 23:34:33 +0100 Subject: [PATCH 316/330] chore(docs): Update ISO instructions --- docs/src/README.md | 2 +- modules/programs/greetd.nix | 2 +- modules/programs/media.nix | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/src/README.md b/docs/src/README.md index 6ac856e..064cdd4 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -220,7 +220,7 @@ E.g. stable/hosts/yourserver and unstable/hosts/yourdesktop # Installation -You can find a custom ISO on my NextCloud server: [Link](https://cloud.dashie.org/s/z7G3zS9SXeEt2ERD). +You can find a custom ISO in the releases: [Link](https://github.com/Xetibo/DashNix/releases). With this, you will receive the example config in /iso/example alongside the gnome desktop environment, as well as a few tools like gnome-disks, Neovim, Vscodium, a browser etc. diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 2c5f87f..5c68d7b 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -47,7 +47,7 @@ } --config /etc/greetd/hyprgreet.conf"; example = "${ lib.getExe pkgs.cage - } -s -- ${lib.getExe pkgs.greetd.regreet}"; + } -s -- ${lib.getExe pkgs.regreet}"; type = lib.types.str; description = "The compositor/greeter command to run"; }; diff --git a/modules/programs/media.nix b/modules/programs/media.nix index 6afa15e..e701fb1 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -39,7 +39,7 @@ filePickerPortal = lib.mkOption { default = "Term"; example = "Gnome"; - type = with lib.types; oneOf [(enum ["Gnome" "Kde" "Lxqt" "Gtk" "Term" "Default"]) string]; + type = with lib.types; oneOf [(enum ["Gnome" "Kde" "Lxqt" "Gtk" "Term" "Default"]) str]; description = '' The file picker portal to use (set with shana). Default removes the config, allowing you to set it yourself. From fe090a95bce087fa832207b0cdb927ab758431c6 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sun, 2 Nov 2025 21:51:56 +0100 Subject: [PATCH 317/330] chore(docs): Add instructions for experimental features on install --- docs/src/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/src/README.md b/docs/src/README.md index 064cdd4..6128784 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -239,17 +239,17 @@ Then configure as you please and choose a command below depending on your disk i Installation via manual configuration: ```sh -sudo nixos-install --flake # --root +sudo nixos-install --flake # --root --option experimental-features "nix-command flakes pipe-operators" #example -#nixos-install --flake ~/config#globi --root /mnt +#nixos-install --flake ~/config#globi --root /mnt --option experimental-features "nix-command flakes pipe-operators" ``` Installation via disko: ```sh -sudo disko-install --flake # --disk +sudo disko-install --flake # --disk --option experimental-features "nix-command flakes pipe-operators" #example -#disko-install -- --flake ~/config#globi --disk main /dev/nvme0n1 +#disko-install -- --flake ~/config#globi --disk main /dev/nvme0n1 --option experimental-features "nix-command flakes pipe-operators" ``` # Modules From 78a3247fb1b773a4cd542d6737ddfe5ad51f48cd Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 7 Nov 2025 17:19:29 +0100 Subject: [PATCH 318/330] chore(git): Update config --- modules/programs/git.nix | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/programs/git.nix b/modules/programs/git.nix index bfcb334..57c1623 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -50,9 +50,14 @@ config = lib.optionalAttrs (options ? programs.git && options ? home.file) { programs.git = { enable = true; - userName = config.mods.git.username; - userEmail = config.mods.git.email; - extraConfig = config.mods.git.additionalConfig; + settings = + { + user = { + name = config.mods.git.username; + inherit (config.mods.git) email; + }; + } + // config.mods.git.additionalConfig; }; home.file.".ssh/config".text = config.mods.git.sshConfig; }; From 1aeb5de333bbccd6b9476d4732fc3831b1ca7afc Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 7 Nov 2025 17:53:21 +0100 Subject: [PATCH 319/330] chore(lutris): broken --- modules/programs/gaming.nix | 3 ++- modules/programs/gpu.nix | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 6189cce..93c9414 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -19,7 +19,8 @@ gamescope gamemode steam - lutris + # TODO broken + # lutris wineWowPackages.stable adwsteamgtk heroic diff --git a/modules/programs/gpu.nix b/modules/programs/gpu.nix index 87305f0..023b462 100644 --- a/modules/programs/gpu.nix +++ b/modules/programs/gpu.nix @@ -91,8 +91,7 @@ (lib.mkIf (config.mods.gpu.intelgpu.enable || config.mods.gpu.amdgpu.enable) pkgs.mesa) ]; rocmPackages = [ - # TODO broken - #pkgs.rocmPackages.clr.icd + pkgs.rocmPackages.clr.icd pkgs.mesa pkgs.mesa.opencl pkgs.vulkan-loader From 0314b75a023d2cc41ec109fe33158e2fa6ac1d9a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 10 Nov 2025 10:21:27 +0100 Subject: [PATCH 320/330] bugfix(logind): Ensure stable compatibility --- modules/programs/oxi/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/oxi/default.nix b/modules/programs/oxi/default.nix index 942d0d1..83c4f23 100644 --- a/modules/programs/oxi/default.nix +++ b/modules/programs/oxi/default.nix @@ -74,7 +74,7 @@ }; }; } - // lib.optionalAttrs (options ? services.logind) { + // lib.optionalAttrs (options ? services.logind && options ? services.logind.settings) { services.logind.settings.Login.HandleLidSwitchExternalPower = "ignore"; } ); From ac77341f62c3dbc6bd4ee61c7d09ef6e16184c7e Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 10 Nov 2025 11:27:23 +0100 Subject: [PATCH 321/330] bugfix(stylix): Ensure stable compatibility --- modules/programs/browser/zen.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/programs/browser/zen.nix b/modules/programs/browser/zen.nix index d3a9b0a..db32900 100644 --- a/modules/programs/browser/zen.nix +++ b/modules/programs/browser/zen.nix @@ -121,7 +121,7 @@ in { }; }; config = lib.mkIf (config.mods.browser.zen.enable || config.mods.homePackages.browser == "zen") ( - lib.optionalAttrs (options ? home.packages) { + (lib.optionalAttrs (options ? home.packages) { programs.zen-browser = { enable = true; package = @@ -149,7 +149,9 @@ in { }; profiles = builtins.listToAttrs config.mods.browser.zen.profiles; }; + }) + // (lib.optionalAttrs (options ? stylix.targets.zen-browser) { stylix.targets.zen-browser.profileNames = lib.map (profile: profile.name) config.mods.browser.zen.profiles; - } + }) ); } From 3731bd6366dde867812d31ff519ae4d98f18627a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Mon, 10 Nov 2025 11:36:12 +0100 Subject: [PATCH 322/330] bugfix(regreet): Ensure stable compatibility --- modules/programs/homePackages.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index c987c94..ce57135 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -119,7 +119,11 @@ flake-checker gnome-keyring gnutar - regreet + ( + if (options ? regreet) + then regreet + else greetd.regreet + ) killall kitty libnotify From 39e4d182cec1a0c1133e278cb3594481e893434a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Tue, 11 Nov 2025 15:33:10 +0100 Subject: [PATCH 323/330] bugfix(hyprland): Use proper flake url --- flake.nix | 2 +- modules/programs/greetd.nix | 3 ++- modules/programs/hypr/hyprland.nix | 1 - 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index 8033b24..be501b2 100644 --- a/flake.nix +++ b/flake.nix @@ -21,7 +21,7 @@ sops-nix.url = "github:Mic92/sops-nix"; - hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; + hyprland.url = "github:hyprwm/Hyprland"; ironbar = { url = "github:JakeStanger/ironbar"; diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index 5c68d7b..fb30782 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -5,6 +5,7 @@ inputs, pkgs, options, + system, ... }: { options.mods = { @@ -43,7 +44,7 @@ }; greeterCommand = lib.mkOption { default = "${ - lib.getExe pkgs.hyprland + lib.getExe inputs.hyprland.packages.${system}.hyprland } --config /etc/greetd/hyprgreet.conf"; example = "${ lib.getExe pkgs.cage diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index f32bc74..bd93fa1 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -241,7 +241,6 @@ in { defaultWindowRules; in { enable = true; - package = mkDashDefault pkgs.hyprland; plugins = [ (lib.mkIf config.mods.hypr.hyprland.hyprspaceEnable pkgs.hyprlandPlugins.hyprspace) From 2a245f9851f278b2acda018e9bb6936e3a793a4a Mon Sep 17 00:00:00 2001 From: DashieTM Date: Wed, 3 Dec 2025 21:34:39 +0100 Subject: [PATCH 324/330] chore(basePackages): Remove preload --- modules/programs/basePackages.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/programs/basePackages.nix b/modules/programs/basePackages.nix index fa10da8..1d1b2b9 100644 --- a/modules/programs/basePackages.nix +++ b/modules/programs/basePackages.nix @@ -87,7 +87,6 @@ if config.mods.basePackages.enable then { - preload.enable = mkDashDefault true; upower.enable = mkDashDefault true; dbus = { enable = mkDashDefault true; From f360e5459002956c243a070155dbd4e02c09b6cd Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 18 Dec 2025 14:23:18 +0100 Subject: [PATCH 325/330] chore(fcp): Replace with fuc --- modules/programs/fish.nix | 2 +- modules/programs/homePackages.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index f063f35..1d8c8c8 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -70,7 +70,7 @@ in { abbr --add cat 'bat' abbr --add find 'fd' abbr --add rm 'rip' - abbr --add cp 'fcp' + abbr --add cp 'cpz' abbr --add cd 'z' abbr --add y 'yazi' diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index ce57135..a8cbb11 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -136,7 +136,7 @@ pulseaudio libsForQt5.qt5ct qt6Packages.qt6ct - fcp + fuc ripgrep rm-improved system-config-printer From decd0f5110e5490735b68357ef1e01dce3ef6786 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 18 Dec 2025 14:34:58 +0100 Subject: [PATCH 326/330] chore(cachy): Use external flake and drop chaotic-nyx --- base/common_hardware.nix | 5 ----- example/flake.nix | 2 -- flake.nix | 4 +--- lib/default.nix | 4 +--- lib/importPkgs.nix | 2 +- lib/wm.nix | 13 +++++-------- modules/programs/gaming.nix | 8 ++++---- modules/programs/greetd.nix | 1 + modules/programs/homePackages.nix | 6 +----- modules/programs/hypr/hyprland.nix | 3 ++- 10 files changed, 16 insertions(+), 32 deletions(-) diff --git a/base/common_hardware.nix b/base/common_hardware.nix index 8df238a..9f7ccf1 100644 --- a/base/common_hardware.nix +++ b/base/common_hardware.nix @@ -101,10 +101,6 @@ in { builders-use-substitutes = mkDashDefault true; - substituters = [ - "https://chaotic-nyx.cachix.org/" - ]; - trusted-substituters = [ "https://hyprland.cachix.org" "https://anyrun.cachix.org" @@ -128,7 +124,6 @@ in { "oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ=" "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" - "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" "dashvim.cachix.org-1:uLRdxp1WOWHnsZZtu3SwUWZRsvC7SXo0Gyk3tIefuL0=" ]; diff --git a/example/flake.nix b/example/flake.nix index 129fc20..01ec944 100644 --- a/example/flake.nix +++ b/example/flake.nix @@ -31,7 +31,6 @@ "https://oxicalc.cachix.org" "https://hyprdock.cachix.org" "https://reset.cachix.org" - "https://chaotic-nyx.cachix.org/" "https://dashvim.cachix.org" ]; @@ -46,7 +45,6 @@ "oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ=" "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" - "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" "dashvim.cachix.org-1:uLRdxp1WOWHnsZZtu3SwUWZRsvC7SXo0Gyk3tIefuL0=" ]; }; diff --git a/flake.nix b/flake.nix index be501b2..fbac7c1 100644 --- a/flake.nix +++ b/flake.nix @@ -18,6 +18,7 @@ url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "unstable"; }; + cachy.url = "github:xddxdd/nix-cachyos-kernel?rev=bb7b8aa687464f24dcd452354d9621331d6b0737"; sops-nix.url = "github:Mic92/sops-nix"; @@ -49,9 +50,6 @@ superfreq.url = "github:NotAShelf/superfreq"; - # absolute insanity - chaoticNyx.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; - compose.url = "github:garnix-io/nixos-compose"; }; diff --git a/lib/default.nix b/lib/default.nix index 0254ba2..265e43f 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -13,8 +13,8 @@ permittedInsecurePackages = permittedPackages; }; overlays = [ + inputs.cachy.overlays.default inputs.nur.overlays.default - inputs.chaoticNyx.overlays.cache-friendly ]; inherit system; }; @@ -76,7 +76,6 @@ in { ../base ../home ../modules - inputs.chaoticNyx.nixosModules.default ]; home = [ inputs.anyrun.homeManagerModules.default @@ -92,7 +91,6 @@ in { inputs.reset.homeManagerModules.default inputs.sops-nix.homeManagerModules.sops inputs.dashvim.homeManagerModules.dashvim - inputs.chaoticNyx.homeManagerModules.default ../modules ]; }, diff --git a/lib/importPkgs.nix b/lib/importPkgs.nix index 77e1299..cfcd413 100644 --- a/lib/importPkgs.nix +++ b/lib/importPkgs.nix @@ -12,6 +12,6 @@ import pkgs { }; overlays = [ inputs.nur.overlays.default - inputs.chaoticNyx.overlays.cache-friendly + inputs.cachy.overlays.default ]; } diff --git a/lib/wm.nix b/lib/wm.nix index a4bfd31..416956a 100644 --- a/lib/wm.nix +++ b/lib/wm.nix @@ -50,14 +50,11 @@ in { ]; hyprland = [ # window rules - "float,class:^(.*)(OxiCalc)(.*)$" - "float,class:^(.*)(winecfg.exe)(.*)$" - "float,class:^(.*)(copyq)(.*)$" - "center,class:^(.*)(swappy)(.*)$" - "workspace 10 silent,class:^(.*)(steam)(.*)$" - - # Otherwise neovide will ignore tiling - "suppressevent fullscreen maximize,class:^(.*)(neovide)(.*)$" + "match:class OxiCalc, float on" + "match:class winecfg.exe, float on" + "match:class copyq, float on" + "match:class swappy, center on" + "match:class steam, workspace 10 silent" ]; }; diff --git a/modules/programs/gaming.nix b/modules/programs/gaming.nix index 93c9414..a96d58c 100644 --- a/modules/programs/gaming.nix +++ b/modules/programs/gaming.nix @@ -34,10 +34,10 @@ description = "Install gaming related packages"; }; kernel = lib.mkOption { - default = true; - example = false; + default = false; + example = true; type = lib.types.bool; - description = "Whether to use the CachyOS kernel"; + description = "Whether to use the CachyOS kernel. WARNING: This is a manual compiled kernel!"; }; steam = lib.mkOption { default = true; @@ -109,7 +109,7 @@ config = lib.mkIf config.mods.gaming.enable ( lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = config.mods.gaming.tools; - boot.kernelPackages = lib.mkForce pkgs.linuxPackages_cachyos; + boot.kernelPackages = lib.mkForce pkgs.cachyosKernels.linuxPackages-cachyos-latest; services.scx = lib.mkIf (config.mods.gaming.scheduler != null) { enable = true; inherit (config.mods.gaming) scheduler; diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index fb30782..e717380 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -131,6 +131,7 @@ misc { disable_splash_rendering = false disable_hyprland_logo = true + disable_xdg_env_checks = true } env=STATE_DIR,var/cache/regreet diff --git a/modules/programs/homePackages.nix b/modules/programs/homePackages.nix index a8cbb11..6a995f0 100644 --- a/modules/programs/homePackages.nix +++ b/modules/programs/homePackages.nix @@ -119,11 +119,7 @@ flake-checker gnome-keyring gnutar - ( - if (options ? regreet) - then regreet - else greetd.regreet - ) + regreet killall kitty libnotify diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index bd93fa1..c8ac9ce 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -310,6 +310,7 @@ in { enable_swallow = mkDashDefault true; disable_splash_rendering = mkDashDefault true; disable_hyprland_logo = mkDashDefault true; + disable_xdg_env_checks = mkDashDefault true; swallow_regex = mkDashDefault "^(.*)(kitty)(.*)$"; initial_workspace_tracking = mkDashDefault 1; # just doesn't work @@ -334,7 +335,7 @@ in { layerrule = [ # layer rules # mainly to disable animations within slurp and grim - "noanim, selection" + "match:namespace selection, no_anim on" ]; workspace = mkWorkspace config.mods.wm.workspaces; From 512d6d2dd4832d835c4feb33e4dc36417acde6de Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 19 Dec 2025 12:58:17 +0100 Subject: [PATCH 327/330] chore(inputs): Modularize modules, inputs and update instructions --- docs/src/README.md | 171 +++++++++++++++++++++--------------- flake.nix | 15 ++++ home/default.nix | 8 +- lib/default.nix | 89 ++++++++++--------- modules/programs/gaming.nix | 6 +- 5 files changed, 168 insertions(+), 121 deletions(-) diff --git a/docs/src/README.md b/docs/src/README.md index 6128784..3658e00 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -23,6 +23,40 @@ dashNix = { You can then configure your systems in your flake outputs with a provided library command: +Please note that overriding inputs will invalidate the cache configuration, this means you will have to add this manually: + +```nix + builders-use-substitutes = true; + + extra-substituters = [ + "https://hyprland.cachix.org" + "https://anyrun.cachix.org" + "https://cache.garnix.io" + "https://oxipaste.cachix.org" + "https://oxinoti.cachix.org" + "https://oxishut.cachix.org" + "https://oxidash.cachix.org" + "https://oxicalc.cachix.org" + "https://hyprdock.cachix.org" + "https://reset.cachix.org" + "https://dashvim.cachix.org" + ]; + + extra-trusted-public-keys = [ + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" + "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + "oxipaste.cachix.org-1:n/oA3N3Z+LJP7eIWOwuoLd9QnPyZXqFjLgkahjsdDGc=" + "oxinoti.cachix.org-1:dvSoJl2Pjo5HMaNngdBbSaixK9BSf2N8gzjP2MdGvfc=" + "oxishut.cachix.org-1:axyAGF3XMh1IyMAW4UMbQCdMNovDH0KH6hqLLRJH8jU=" + "oxidash.cachix.org-1:5K2FNHp7AS8VF7LmQkJAUG/dm6UHCz4ngshBVbjFX30=" + "oxicalc.cachix.org-1:qF3krFc20tgSmtR/kt6Ku/T5QiG824z79qU5eRCSBTQ=" + "hyprdock.cachix.org-1:HaROK3fBvFWIMHZau3Vq1TLwUoJE8yRbGLk0lEGzv3Y=" + "reset.cachix.org-1:LfpnUUdG7QM/eOkN7NtA+3+4Ar/UBeYB+3WH+GjP9Xo=" + "dashvim.cachix.org-1:uLRdxp1WOWHnsZZtu3SwUWZRsvC7SXo0Gyk3tIefuL0=" + ]; +``` + ```nix nixosConfigurations = inputs.dashNix.dashNixLib.buildSystems { root = ./.; }; ``` @@ -96,29 +130,29 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang # sddm = { }; # gdm = { }; drives = { - # default assumes ROOT, BOOT, HOME and SWAP labaled drives exist - # for an example without HOME see below - # defaultDrives.enable = false; - # extraDrives = [ - # { - # name = "boot"; - # drive = { - # device = "/dev/disk/by-label/BOOT"; - # fsType = "vfat"; - # options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; - # }; - # } - # { - # name = ""; - # drive = { - # device = "/dev/disk/by-label/ROOT"; - # fsType = "ext4"; - # options = [ "noatime" "nodiratime" "discard" ]; - # }; - # } - # ]; - # You can also use disko to format your disks on installation. - # Please refer to the Documentation about the drives module for an example. + # default assumes ROOT, BOOT, HOME and SWAP labaled drives exist + # for an example without HOME see below + # defaultDrives.enable = false; + # extraDrives = [ + # { + # name = "boot"; + # drive = { + # device = "/dev/disk/by-label/BOOT"; + # fsType = "vfat"; + # options = [ "rw" "fmask=0022" "dmask=0022" "noatime" ]; + # }; + # } + # { + # name = ""; + # drive = { + # device = "/dev/disk/by-label/ROOT"; + # fsType = "ext4"; + # options = [ "noatime" "nodiratime" "discard" ]; + # }; + # } + # ]; + # You can also use disko to format your disks on installation. + # Please refer to the Documentation about the drives module for an example. }; }; } @@ -128,48 +162,14 @@ Here is a minimal required configuration.nix (the TODOs mention a required chang After logging in the first time, your password will be set to "firstlogin", please change this to whatever you like. -## Nixos and Home-manager Modules - -You can add additional modules or remove all of them by overriding parameters to the buildSystems command: - -```nix -nixosConfigurations = - let - additionalMods = { - nixos = [ - # your modules - ]; home = [ - # your modules - ]; - } - # passing this parameter will override the existing modules - mods = { - nixos = []; - home = []; - } - in - inputs.dashNix.dashNixLib.buildSystems { root = ./.; inherit mods additionalMods; }; -``` - -## Additional Inputs - -Just like modules, you can add additional inputs to your configuration. - -```nix -nixosConfigurations = - let - additionalInputs = { - something.url = "yoururl" - } - in - inputs.dashNix.dashNixLib.buildSystems { root = ./.; inherit additionalInputs; }; -``` - ## Configuring pkgs -While DashNix offers a default pkgs config, you may want to permit an unsecure packages or add an overlay to them. +While DashNix offers a default pkgs config, you may want to permit an unsecure packages, +add additional modules/inputs, or add an overlay to them. You can configure both stable and unstable pkgs the following way: +Please note that modules and inputs are merged together to ensure functionality. + ```nix currentSystem = "x86_64-linux"; permittedPackages = [ @@ -181,10 +181,21 @@ config = { allowUnfree = true; permittedInsecurePackages = permittedPackages; }; + inputs = { + # Some inputs + } + mods = { + home = [ + # Some home manager module + ]; + nixos = [ + # Some nixos module + ]; +} }; unstableBundle = { pkgs = inputs.unstable; - inherit config; + inherit config mods; }; inputs.dashNix.dashNixLib.buildSystems { root = ./.; @@ -201,24 +212,26 @@ this way however ensures you can also configure the inputs. Sometimes you want to differentiate between systems that are stable and unstable, e.g. for servers and desktops/laptops. This can be done with the overridePkgs flag for the lib function: +(overridePkgs simply inverts the default bundle that is used for the nix standard library as well as NixOS itself) + ```nix - nixosConfigurations = - inputs.dashNix.dashNixLib.buildSystems { - root = ./stable; - inherit additionalInputs; - overridePkgs = true; - } - // inputs.dashNix.dashNixLib.buildSystems { - root = ./unstable; - inherit additionalInputs; - }; +nixosConfigurations = + inputs.dashNix.dashNixLib.buildSystems { + root = ./stable; + inherit stableBundle; + overridePkgs = true; + } + // inputs.dashNix.dashNixLib.buildSystems { + inherit unstableBundle; + root = ./unstable; + }; ``` You can now place your systems in the respective directories. Keep in mind that the hosts directory will still need to exist in each variant. E.g. stable/hosts/yourserver and unstable/hosts/yourdesktop -# Installation +# Installation via ISO You can find a custom ISO in the releases: [Link](https://github.com/Xetibo/DashNix/releases). With this, you will receive the example config in /iso/example alongside the gnome desktop environment, @@ -252,6 +265,17 @@ sudo disko-install --flake # --disk Date: Fri, 19 Dec 2025 14:12:55 +0100 Subject: [PATCH 328/330] chore(lib): Add experimental standalone home-manager option --- lib/default.nix | 229 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 162 insertions(+), 67 deletions(-) diff --git a/lib/default.nix b/lib/default.nix index 7d2c8f2..d8a7402 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -29,7 +29,160 @@ comnbinedConfig = config // {overlays = overlays ++ defaultConfig.overlays;}; in import pkgs comnbinedConfig; -in { +in rec { + mkNixos = { + root, + inputLib, + lib, + stablePkgs, + unstablePkgs, + stableMods, + unstableMods, + overridePkgs, + ... + }: + builtins.listToAttrs ( + map + (name: { + inherit name; + value = let + mod = root + /hosts/${name}/configuration.nix; + additionalNixosConfig = root + /hosts/${name}/hardware.nix; + additionalHomeConfig = root + /hosts/${name}/home.nix; + args = { + inherit + self + inputs + mod + additionalHomeConfig + system + root + dashNixAdditionalProps + lib + ; + stable = stablePkgs; + unstable = unstablePkgs; + pkgs = lib.mkForce ( + if overridePkgs + then stablePkgs + else unstablePkgs + ); + alternativePkgs = + if overridePkgs + then unstablePkgs + else stablePkgs; + hostName = name; + homeMods = + if overridePkgs + then unstableMods.home + else stableMods.home; + mkDashDefault = import ./override.nix {inherit lib;}; + }; + nixosMods = + if overridePkgs + then unstableMods.nixos + else stableMods.nixos; + in + inputLib.nixosSystem { + modules = + [ + {_module.args = args;} + mod + ] + ++ nixosMods + ++ lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig + ++ lib.optional (builtins.pathExists mod) mod; + }; + }) + ( + lib.lists.remove "" ( + lib.attrsets.mapAttrsToList (name: fType: + if fType == "directory" + then name + else "") ( + builtins.readDir (root + /hosts) + ) + ) + ) + ); + + mkHome = { + root, + lib, + stablePkgs, + unstablePkgs, + stableMods, + unstableMods, + overridePkgs, + ... + }: + builtins.listToAttrs ( + map + (name: { + inherit name; + value = let + mod = root + /homes/${name}/configuration.nix; + additionalHomeConfig = root + /homes/${name}/home.nix; + args = { + inherit + self + inputs + mod + additionalHomeConfig + system + root + dashNixAdditionalProps + lib + ; + stable = stablePkgs; + unstable = unstablePkgs; + pkgs = lib.mkForce ( + if overridePkgs + then stablePkgs + else unstablePkgs + ); + alternativePkgs = + if overridePkgs + then unstablePkgs + else stablePkgs; + userName = name; + mkDashDefault = import ./override.nix {inherit lib;}; + }; + homeMods = + if overridePkgs + then unstableMods.home + else stableMods.home; + in + inputs.home-manager.lib.homeManagerConfiguration + { + inherit (args) pkgs; + modules = + [ + {_module.args = args;} + mod + ] + ++ homeMods + ++ [ + ../home/common.nix + ../home/themes + ../home/sync.nix + ./foxwrappers.nix + ] + ++ lib.optional (builtins.pathExists mod) mod; + }; + }) + ( + lib.lists.remove "" ( + lib.attrsets.mapAttrsToList (name: fType: + if fType == "directory" + then name + else "") ( + builtins.readDir (root + /homes) + ) + ) + ) + ); + /* * # buildSystems @@ -58,7 +211,7 @@ in { # ); # in - buildSystems = { + buildFunc = func: { root, unstableBundle ? {}, stableBundle ? {}, @@ -118,73 +271,15 @@ in { pkgs = stableInput; config = stableConfig; }; - inputlib = unstableInput.lib; + inputLib = unstableInput.lib; inherit (unstablePkgs) lib; in - builtins.listToAttrs ( - map - (name: { - inherit name; - value = let - mod = root + /hosts/${name}/configuration.nix; - additionalNixosConfig = root + /hosts/${name}/hardware.nix; - additionalHomeConfig = root + /hosts/${name}/home.nix; - args = { - inherit - self - inputs - mod - additionalHomeConfig - system - root - dashNixAdditionalProps - lib - ; - stable = stablePkgs; - unstable = unstablePkgs; - pkgs = lib.mkForce ( - if overridePkgs - then stablePkgs - else unstablePkgs - ); - alternativePkgs = - if overridePkgs - then unstablePkgs - else stablePkgs; - hostName = name; - homeMods = - if overridePkgs - then unstableMods.home - else stableMods.home; - mkDashDefault = import ./override.nix {inherit lib;}; - }; - nixosMods = - if overridePkgs - then unstableMods.nixos - else stableMods.nixos; - in - inputlib.nixosSystem { - modules = - [ - {_module.args = args;} - mod - ] - ++ nixosMods - ++ lib.optional (builtins.pathExists additionalNixosConfig) additionalNixosConfig - ++ lib.optional (builtins.pathExists mod) mod; - }; - }) - ( - lib.lists.remove "" ( - lib.attrsets.mapAttrsToList (name: fType: - if fType == "directory" - then name - else "") ( - builtins.readDir (root + /hosts) - ) - ) - ) - ); + func { + inherit lib inputLib stablePkgs unstablePkgs stableMods unstableMods stableInputs unstableInputs root overridePkgs; + }; + + buildSystems = buildFunc mkNixos; + buildHome = buildFunc mkHome; buildIso = inputs.unstable.lib.nixosSystem { specialArgs = { From afaba29554356ed26a1efb361b8e97b447ed093d Mon Sep 17 00:00:00 2001 From: DashieTM Date: Fri, 19 Dec 2025 15:48:17 +0100 Subject: [PATCH 329/330] feature(clam): init --- home/default.nix | 2 + modules/programs/clam.nix | 60 ++++++++++++++++++++++++++++++ modules/programs/default.nix | 5 ++- modules/programs/greetd.nix | 1 + modules/programs/hypr/hyprland.nix | 1 + 5 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 modules/programs/clam.nix diff --git a/home/default.nix b/home/default.nix index 4fd4d99..afc0ab3 100644 --- a/home/default.nix +++ b/home/default.nix @@ -5,6 +5,7 @@ homeMods, inputs, lib, + additionalHomeConfig, mod, pkgs, root, @@ -58,6 +59,7 @@ ../lib/foxwrappers.nix ] ++ homeMods + ++ lib.optional (builtins.pathExists additionalHomeConfig) additionalHomeConfig ++ lib.optional (builtins.pathExists mod) mod; }; }; diff --git a/modules/programs/clam.nix b/modules/programs/clam.nix new file mode 100644 index 0000000..e212529 --- /dev/null +++ b/modules/programs/clam.nix @@ -0,0 +1,60 @@ +{ + lib, + config, + options, + pkgs, + ... +}: { + options.mods.clam = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables the clamav program and its daemon"; + }; + scanner = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables the clamav scanner"; + }; + interval = lib.mkOption { + type = lib.types.str; + default = "*-*-* 04:00:00"; + description = '' + How often clamdscan is invoked. + By default this runs using 10 cores at most, be sure to run it at a time of low traffic. + ''; + }; + scanDirectories = lib.mkOption { + type = with lib.types; listOf str; + default = [ + "/home" + "/var/lib" + "/tmp" + "/etc" + "/var/tmp" + ]; + description = ''List of directories to scan''; + }; + }; + }; + config = lib.mkIf config.mods.clam.enable ( + lib.optionalAttrs (options ? services.clamav) { + services.clamav = { + daemon.enable = true; + updater.enable = true; + scanner = { + inherit (config.mods.clam.scanner) enable; + inherit (config.mods.clam.scanner) interval; + inherit (config.mods.clam.scanner) scanDirectories; + }; + }; + environment.systemPackages = [ + pkgs.clamav + ]; + } + // lib.optionalAttrs (options ? home.packages) {home.packages = with pkgs; [clamtk];} + ); +} diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 1c0baa5..08a4a2d 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -1,11 +1,11 @@ { imports = [ - ./niri.nix ./acpid.nix ./anyrun.nix ./basePackages.nix ./bluetooth.nix ./browser + ./clam.nix ./coding.nix ./containers.nix ./drives.nix @@ -31,6 +31,7 @@ ./mime.nix ./ncspot.nix ./nextcloud.nix + ./niri.nix ./onedrive.nix ./oxi ./piper.nix @@ -47,9 +48,9 @@ ./sway.nix ./teams.nix ./virtmanager.nix + ./wm.nix ./xkb.nix ./xone.nix - ./wm.nix ./yazi ]; } diff --git a/modules/programs/greetd.nix b/modules/programs/greetd.nix index e717380..fe3e455 100644 --- a/modules/programs/greetd.nix +++ b/modules/programs/greetd.nix @@ -132,6 +132,7 @@ disable_splash_rendering = false disable_hyprland_logo = true disable_xdg_env_checks = true + disable_scale_notification = true } env=STATE_DIR,var/cache/regreet diff --git a/modules/programs/hypr/hyprland.nix b/modules/programs/hypr/hyprland.nix index c8ac9ce..442b964 100644 --- a/modules/programs/hypr/hyprland.nix +++ b/modules/programs/hypr/hyprland.nix @@ -311,6 +311,7 @@ in { disable_splash_rendering = mkDashDefault true; disable_hyprland_logo = mkDashDefault true; disable_xdg_env_checks = mkDashDefault true; + disable_scale_notification = mkDashDefault true; swallow_regex = mkDashDefault "^(.*)(kitty)(.*)$"; initial_workspace_tracking = mkDashDefault 1; # just doesn't work From 15b48490baa2dfa0b222751c442208a7a984a9c3 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Sat, 20 Dec 2025 14:41:57 +0100 Subject: [PATCH 330/330] chore(images): Swap to eog --- .github/workflows/docs.yaml | 60 ++++++++++------------------------ modules/programs/media.nix | 2 +- modules/programs/mime.nix | 2 +- modules/programs/yazi/yazi.nix | 2 +- 4 files changed, 21 insertions(+), 45 deletions(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 62524cb..06dc541 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -1,58 +1,34 @@ # by https://github.com/danth/stylix/blob/master/.github/workflows/docs.yml name: Docs - on: push: branches: - main - jobs: build: name: Build - permissions: contents: read - - runs-on: ubuntu-latest - + runs-on: nixos-latest steps: - - name: Install Nix - uses: DeterminateSystems/nix-installer-action@main - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - extra-conf: | - extra-experimental-features = nix-command flakes pipe-operators - - - name: Set up cache - uses: DeterminateSystems/magic-nix-cache-action@main - + - name: Nix Config + run: | + mkdir -p $HOME/.config + mkdir -p $HOME/.config/nix + echo experimental-features = nix-command flakes pipe-operators >> $HOME/.config/nix/nix.conf + echo access-tokens = github.com=${{ secrets.GITHUBTOKEN }} >> $HOME/.config/nix/nix.conf + nix profile install nixpkgs#nodejs - name: Build docs - run: nix -L build github:${{ github.repository }}/${{ github.sha }}#docs --no-write-lock-file - + run: nix -L build git+https://git.dashie.org/${{ forgejo.repository }}.git?rev=${{ forgejo.sha }}#docs --no-write-lock-file - name: Prepare docs for upload run: cp -r --dereference --no-preserve=mode,ownership result/ public/ - - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + # - name: Upload artifact + # uses: https://data.forgejo.org/forgejo/upload-artifact@v4 + # with: + # path: public/ + - name: Publish Page + uses: https://data.forgejo.org/actions/git-pages@v2 with: - path: public/ - - deploy: - name: Deploy - - needs: build - - permissions: - pages: write - id-token: write - - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - - runs-on: ubuntu-latest - - steps: - - name: Deploy docs to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 + site: https://username.pages.dashie.org/reponame/ + token: ${{ forge.token }} + source: public/ diff --git a/modules/programs/media.nix b/modules/programs/media.nix index e701fb1..c37d62b 100644 --- a/modules/programs/media.nix +++ b/modules/programs/media.nix @@ -87,7 +87,7 @@ # audio control playerctl # images - imv + eog # videos mpv # pdf diff --git a/modules/programs/mime.nix b/modules/programs/mime.nix index 03d04d8..4da7aff 100644 --- a/modules/programs/mime.nix +++ b/modules/programs/mime.nix @@ -85,7 +85,7 @@ in { description = "Applications used for handling browser mime types"; }; imageApplications = lib.mkOption { - default = ["imv"]; + default = ["eog"]; example = []; type = with lib.types; listOf str; description = "Applications used for handling image mime types"; diff --git a/modules/programs/yazi/yazi.nix b/modules/programs/yazi/yazi.nix index 0a6aec6..22e3169 100644 --- a/modules/programs/yazi/yazi.nix +++ b/modules/programs/yazi/yazi.nix @@ -31,7 +31,7 @@ ]; image = [ { - run = ''imv "$@"''; + run = ''eog "$@"''; orphan = true; display_name = "Open"; }