diff --git a/flake.lock b/flake.lock index 91f8b76..6edd3ac 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1652712410, - "narHash": "sha256-hMJ2TqLt0DleEnQFGUHK9sV2aAzJPU8pZeiZoqRozbE=", + "lastModified": 1664140963, + "narHash": "sha256-pFxDtOLduRFlol0Y4ShE+soRQX4kbhaCNBtDOvx7ykw=", "owner": "ryantm", "repo": "agenix", - "rev": "7e5e58b98c3dcbf497543ff6f22591552ebfe65b", + "rev": "6acb1fe5f8597d5ce63fc82bc7fcac7774b1cdf0", "type": "github" }, "original": { @@ -23,11 +23,11 @@ "arkenfox-userjs": { "flake": false, "locked": { - "lastModified": 1659264624, - "narHash": "sha256-iONF1YbWlW99k71lIUA/hw5+Rv1kf5M3mCItW6JmjbI=", + "lastModified": 1662893183, + "narHash": "sha256-NyP/kJlV1Ai7os3gMqukKMdRSQ78GAjPCJkZDZtDdeo=", "owner": "arkenfox", "repo": "user.js", - "rev": "6e53e841f78c512f4d1eedb6a2409df746eea979", + "rev": "3f09afdee07c5aea33f6dc4194e1425d6400a0d7", "type": "github" }, "original": { @@ -83,11 +83,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1656989878, - "narHash": "sha256-SvK+H9M62lhPvVRWfl7HGG0oRO90r1E8ju3PPp6A6N8=", + "lastModified": 1663284638, + "narHash": "sha256-rXAX14yB8v9BOG4ZsdGEedpZAnNqhQ4DtjQwzFX/TLY=", "owner": "nix-community", "repo": "comma", - "rev": "f5732a6e8871348bafa3139a2f0d9bb7bc34c076", + "rev": "c83ff3839983b3cb8deb407ff618ca12179de588", "type": "github" }, "original": { @@ -120,11 +120,11 @@ ] }, "locked": { - "lastModified": 1660732240, - "narHash": "sha256-u3/pq8k7t9FHFEtArNinHs8ovY4hkFFuwB+zFX7FfIQ=", + "lastModified": 1664251341, + "narHash": "sha256-1f0KvK1VA8tGK7RVYZv17vSJ6URyt8fs81kRGfzPK3Q=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "8a8ab5655af3e7a741b8230a2c36453622ea330d", + "rev": "550ce5667fee8f74aa20ad6456720ed84ebdd241", "type": "github" }, "original": { @@ -166,11 +166,11 @@ }, "flake-utils_2": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -194,14 +194,29 @@ "type": "github" } }, + "flake-utils_4": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "forgit-git": { "flake": false, "locked": { - "lastModified": 1660668993, - "narHash": "sha256-TSF4Vr5uf/+MVU4yCdIHNnwB7kkp4mF+hkhKtLqQvmk=", + "lastModified": 1663431390, + "narHash": "sha256-dz7HNm9+dgb2ibomdrYdtSUC+ksrYdRR5RjBxSmc9eI=", "owner": "wfxr", "repo": "forgit", - "rev": "3f50933f047510020428114551da0ee5cdfb32a3", + "rev": "49579b2d1f620db6a71d070b40416c1af8a32168", "type": "github" }, "original": { @@ -218,11 +233,11 @@ "utils": "utils_2" }, "locked": { - "lastModified": 1660574517, - "narHash": "sha256-Lp5D2pAPrM3iAc1eeR0iGwz5rM+SYOWzVxI3p17nlrU=", + "lastModified": 1664273942, + "narHash": "sha256-PFQR1UJQs7a7eaH5YoCZky5dmxR5cjaKRK+MpPbR7YE=", "owner": "nix-community", "repo": "home-manager", - "rev": "688e5c85b7537f308b82167c8eb4ecfb70a49861", + "rev": "1f5ef2bb419a327fae28a83b50fab50959132c24", "type": "github" }, "original": { @@ -231,13 +246,34 @@ "type": "github" } }, + "howdy": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": "pre-commit-hooks", + "utils": "utils_3" + }, + "locked": { + "lastModified": 1665340940, + "narHash": "sha256-6IIBGkD4spWRvMTEXRxWa31IerfVc1SSTruggY/lNR4=", + "ref": "refs/heads/main", + "rev": "17159cf269ce194703bc04671bb6d2378d124959", + "revCount": 3, + "type": "git", + "url": "https://git.sr.ht/~moritzboehme/howdy" + }, + "original": { + "type": "git", + "url": "https://git.sr.ht/~moritzboehme/howdy" + } + }, "master": { "locked": { - "lastModified": 1660737173, - "narHash": "sha256-GIoZbN7ZWzQZu0NnnNgawIivtZlA8gER2gOrniZXyic=", + "lastModified": 1664278750, + "narHash": "sha256-frpTZQ+QMS7Xwi3fQSYdUTKd5e4YnrrDcS4WT+fdpfI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c085fe3e5ae411bcce050e61a84b418e38c8235b", + "rev": "ff346a442d1e5ec81b24c312c06fd134bcc9c088", "type": "github" }, "original": { @@ -254,11 +290,11 @@ ] }, "locked": { - "lastModified": 1653413650, - "narHash": "sha256-wojDHjb+eU80MPH+3HQaK0liUy8EgR95rvmCl24i58Y=", + "lastModified": 1662220400, + "narHash": "sha256-9o2OGQqu4xyLZP9K6kNe1pTHnyPz0Wr3raGYnr9AIgY=", "owner": "nix-community", "repo": "naersk", - "rev": "69daaceebe12c070cd5ae69ba38f277bbf033695", + "rev": "6944160c19cb591eb85bbf9b2f2768a935623ed3", "type": "github" }, "original": { @@ -270,11 +306,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1660639432, - "narHash": "sha256-2WDiboOCfB0LhvnDVMXOAr8ZLDfm3WdO54CkoDPwN1A=", + "lastModified": 1665266435, + "narHash": "sha256-vLhkXxNzAIvJNLyjm6fGe9Rwy/lsE9dc5MgV7w1EtCs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6c6409e965a6c883677be7b9d87a95fab6c3472e", + "rev": "8e8b0bd1fd99ac2bdca112f9e2431d7c80b1d655", "type": "github" }, "original": { @@ -285,6 +321,22 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1664235386, + "narHash": "sha256-hlkYFCJ9VKZPRW50vtpHHq4h1PJrptD5BbdLOEp4Lyc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ea4a87537cfdc83eebcd1804a5ec51057018784f", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1645655918, "narHash": "sha256-ZfbEFRW7o237+A1P7eTKhXje435FCAoe0blj2n20Was=", @@ -300,15 +352,40 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_2" + "flake-utils": [ + "howdy", + "flake-utils" + ], + "nixpkgs": [ + "howdy", + "nixpkgs" + ] }, "locked": { - "lastModified": 1659629599, - "narHash": "sha256-c9rvaqaH3HZo/C70E7rB18YSywa4ryTtN7CZ3cuCmoA=", + "lastModified": 1664708386, + "narHash": "sha256-aCD8UUGNYb5nYzRmtsq/0yP9gFOQQHr/Lsb5vW+mucw=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "6a9402e8f233de16536349d1dd3f4595c23386a4", + "rev": "2e4a708918e14fdbd534cc94aaa9470cd19b2464", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks_2": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1663082609, + "narHash": "sha256-lmCCIu4dj59qbzkGKHQtolhpIEQMeAd2XUbXVPqgPYo=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "60cad1a326df17a8c6cf2bb23436609fdd83024e", "type": "github" }, "original": { @@ -328,20 +405,21 @@ "emacs-overlay": "emacs-overlay", "forgit-git": "forgit-git", "home-manager": "home-manager", + "howdy": "howdy", "master": "master", - "nixpkgs": "nixpkgs", - "pre-commit-hooks": "pre-commit-hooks", + "nixpkgs": "nixpkgs_2", + "pre-commit-hooks": "pre-commit-hooks_2", "stable": "stable", - "utils": "utils_3" + "utils": "utils_4" } }, "stable": { "locked": { - "lastModified": 1660581366, - "narHash": "sha256-et+bi9/jlSF/pHx5AYB9ZP2XDdZEQ0vnF7xlvs4503Y=", + "lastModified": 1664178928, + "narHash": "sha256-+WVCZH/3Ifef4Da9N1tkGnmfX0QwtkJQz013QuImu10=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3d47bbaa26e7a771059d828eecf3bd8bf28a8b0f", + "rev": "b542cc75fa03a3a29350d4c3b69739e946268a93", "type": "github" }, "original": { @@ -353,11 +431,11 @@ }, "utils": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -368,11 +446,11 @@ }, "utils_2": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -383,7 +461,28 @@ }, "utils_3": { "inputs": { - "flake-utils": "flake-utils_3" + "flake-utils": [ + "howdy", + "flake-utils" + ] + }, + "locked": { + "lastModified": 1657226504, + "narHash": "sha256-GIYNjuq4mJlFgqKsZ+YrgzWm0IpA4axA3MCrdKYj7gs=", + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "rev": "2bf0f91643c2e5ae38c1b26893ac2927ac9bd82a", + "type": "github" + }, + "original": { + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "type": "github" + } + }, + "utils_4": { + "inputs": { + "flake-utils": "flake-utils_4" }, "locked": { "lastModified": 1657226504, diff --git a/flake.nix b/flake.nix index e2f1fad..90700e1 100644 --- a/flake.nix +++ b/flake.nix @@ -12,10 +12,7 @@ pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; - utils = { - url = "github:gytis-ivaskevicius/flake-utils-plus"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + utils.url = "github:gytis-ivaskevicius/flake-utils-plus"; agenix = { url = "github:ryantm/agenix"; @@ -65,14 +62,12 @@ url = "github:SenchoPens/base16.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; + + howdy.url = "git+https://git.sr.ht/~moritzboehme/howdy"; }; outputs = - inputs @ { self - , nixpkgs - , utils - , ... - }: + inputs@{ self, nixpkgs, utils, ... }: utils.lib.mkFlake { inherit self inputs; @@ -87,6 +82,7 @@ self.overlays.default inputs.utils.overlay inputs.emacs-overlay.overlay + inputs.howdy.overlays.default ]; ############### @@ -99,6 +95,7 @@ ./modules/profiles/desktop.nix ./modules/profiles/work.nix ]; + hostDefaults.modules = [ ./modules/default.nix self.nixosModules.base @@ -112,12 +109,14 @@ } inputs.agenix.nixosModules.age inputs.base16.nixosModule + inputs.howdy.nixosModules.default ]; hosts.nixos-laptop.modules = [ ./hosts/nixos-laptop self.nixosModules.desktop ]; + hosts.nixos-desktop.modules = [ ./hosts/nixos-desktop self.nixosModules.desktop @@ -145,6 +144,7 @@ cachix ]; }; + checks.pre-commit-check = inputs.pre-commit-hooks.lib."${system}".run { src = ./.; hooks = { diff --git a/hosts/nixos-desktop/default.nix b/hosts/nixos-desktop/default.nix index 9a1fa86..a3c800a 100644 --- a/hosts/nixos-desktop/default.nix +++ b/hosts/nixos-desktop/default.nix @@ -14,12 +14,6 @@ # KERNEL boot.kernelPackages = pkgs.linuxPackages_latest; - # MY MODULES - my.email = { - enable = true; - passwordFile = ../../secrets/email-desktop.age; - }; - # BOOT boot = { supportedFilesystems = [ "btrfs" "ntfs" ]; diff --git a/hosts/nixos-desktop/hardware-configuration.nix b/hosts/nixos-desktop/hardware-configuration.nix index dc6bd93..fab68a6 100644 --- a/hosts/nixos-desktop/hardware-configuration.nix +++ b/hosts/nixos-desktop/hardware-configuration.nix @@ -17,7 +17,7 @@ fileSystems."/" = { device = "/dev/disk/by-uuid/668a49b3-d169-461f-861d-0c3e6a1642d1"; fsType = "btrfs"; - options = [ "subvol=root" ]; + options = [ "subvol=root" "compress=zstd" ]; }; boot.initrd.luks.devices."enc".device = "/dev/disk/by-uuid/30025a9f-44cf-4074-8ae2-d4925efd67dd"; @@ -25,25 +25,19 @@ fileSystems."/home" = { device = "/dev/disk/by-uuid/668a49b3-d169-461f-861d-0c3e6a1642d1"; fsType = "btrfs"; - options = [ "subvol=home" ]; + options = [ "subvol=home" "compress=zstd" ]; }; fileSystems."/nix" = { device = "/dev/disk/by-uuid/668a49b3-d169-461f-861d-0c3e6a1642d1"; fsType = "btrfs"; - options = [ "subvol=nix" ]; - }; - - fileSystems."/persist" = { - device = "/dev/disk/by-uuid/668a49b3-d169-461f-861d-0c3e6a1642d1"; - fsType = "btrfs"; - options = [ "subvol=persist" ]; + options = [ "subvol=nix" "compress=zstd" ]; }; fileSystems."/var/log" = { device = "/dev/disk/by-uuid/668a49b3-d169-461f-861d-0c3e6a1642d1"; fsType = "btrfs"; - options = [ "subvol=log" ]; + options = [ "subvol=log" "compress=zstd" ]; neededForBoot = true; }; diff --git a/hosts/nixos-laptop/default.nix b/hosts/nixos-laptop/default.nix index f6012e9..8bb6c1d 100644 --- a/hosts/nixos-laptop/default.nix +++ b/hosts/nixos-laptop/default.nix @@ -11,10 +11,9 @@ ./hardware-configuration.nix ]; - # MY MODULES - my.email = { + services.howdy = { enable = true; - passwordFile = ../../secrets/email-desktop.age; + certainty = 3.0; }; # BOOT diff --git a/hosts/nixos-laptop/hardware-configuration.nix b/hosts/nixos-laptop/hardware-configuration.nix index b0c8aa8..0a7d47b 100644 --- a/hosts/nixos-laptop/hardware-configuration.nix +++ b/hosts/nixos-laptop/hardware-configuration.nix @@ -17,7 +17,7 @@ fileSystems."/" = { device = "/dev/disk/by-uuid/4a91d3eb-1633-42d9-8304-c10e49a61154"; fsType = "btrfs"; - options = [ "subvol=root" ]; + options = [ "subvol=root" "compress=zstd" ]; }; boot.initrd.luks.devices."enc".device = "/dev/disk/by-uuid/078b81ba-238e-471d-9951-b743588532b8"; @@ -25,14 +25,14 @@ fileSystems."/log" = { device = "/dev/disk/by-uuid/4a91d3eb-1633-42d9-8304-c10e49a61154"; fsType = "btrfs"; - options = [ "subvol=log" ]; + options = [ "subvol=log" "compress=zstd" ]; neededForBoot = true; }; fileSystems."/nix" = { device = "/dev/disk/by-uuid/4a91d3eb-1633-42d9-8304-c10e49a61154"; fsType = "btrfs"; - options = [ "subvol=nix" ]; + options = [ "subvol=nix" "compress=zstd" ]; }; fileSystems."/boot" = { @@ -43,13 +43,13 @@ fileSystems."/persist" = { device = "/dev/disk/by-uuid/4a91d3eb-1633-42d9-8304-c10e49a61154"; fsType = "btrfs"; - options = [ "subvol=persist" ]; + options = [ "subvol=persist" "compress=zstd" ]; }; fileSystems."/home" = { device = "/dev/disk/by-uuid/4a91d3eb-1633-42d9-8304-c10e49a61154"; fsType = "btrfs"; - options = [ "subvol=home" ]; + options = [ "subvol=home" "compress=zstd" ]; }; swapDevices = [{ device = "/dev/disk/by-uuid/29ebf65f-e6ca-4625-9f72-a9321152be1b"; }]; diff --git a/modules/config/bin/default.nix b/modules/config/bin/default.nix index f001be9..7f4520e 100644 --- a/modules/config/bin/default.nix +++ b/modules/config/bin/default.nix @@ -14,13 +14,7 @@ let sxhkdHelp = import ./sxhkdHelp.nix { inherit pkgs; }; in { - options.my.bin = { - enable = mkOption { - default = true; - type = types.bool; - example = false; - }; - }; + options.my.bin.enable = mkEnableOption "bin"; config = mkIf cfg.enable { environment.systemPackages = with pkgs; [ diff --git a/modules/config/default.nix b/modules/config/default.nix index 2e34077..7312bcb 100644 --- a/modules/config/default.nix +++ b/modules/config/default.nix @@ -7,7 +7,6 @@ { imports = [ ./bin - ./email.nix ./nix.nix ./shell.nix ./theming diff --git a/modules/config/email.nix b/modules/config/email.nix deleted file mode 100644 index 0801a75..0000000 --- a/modules/config/email.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ config -, lib -, pkgs -, ... -}: - -with lib; -let - cfg = config.my.email; - name = "Moritz Böhme"; - email = "mail@moritzboeh.me"; - mailDirectory = "/home/moritz/.mail"; -in -{ - options.my.email = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - passwordFile = mkOption { - default = null; - type = types.path; - description = "File containing the email password."; - }; - }; - - config = mkIf cfg.enable { - # Protonbridge Setup - environment.systemPackages = with pkgs; [ protonmail-bridge ]; - systemd.user.services.protonmail-bridge = { - description = "Protonmail Bridge"; - enable = true; - script = "${pkgs.protonmail-bridge}/bin/protonmail-bridge --log-level debug"; - path = [ - pkgs.gnome3.gnome-keyring - ]; # HACK: https://github.com/ProtonMail/proton-bridge/issues/176 - wantedBy = [ "graphical-session.target" ]; - partOf = [ "graphical-session.target" ]; - }; - age.secrets.email = { - file = cfg.passwordFile; - owner = "1000"; - }; - - # Email Applications - home-manager.users.moritz.home.packages = with pkgs; [ thunderbird ]; - networking.firewall.allowedTCPPorts = [ 33728 1025 1143 ]; - }; -} diff --git a/modules/config/nix.nix b/modules/config/nix.nix index 3d1aa60..0dbd9ff 100644 --- a/modules/config/nix.nix +++ b/modules/config/nix.nix @@ -1,6 +1,7 @@ { config , lib , pkgs +, inputs , ... }: @@ -10,22 +11,21 @@ let in { options.my.nix = { - gc.enable = mkOption { - default = true; - type = types.bool; - example = false; - }; - optimise.enable = mkOption { - default = true; - type = types.bool; - example = false; + gc = { + enable = mkEnableOption "nix-gc"; + minimumFreedGB = mkOption { + default = 32; + type = types.int; + apply = number: toString (number * 1024 * 1024 * 1024); + }; }; + optimise.enable = mkEnableOption "nix-optimise"; }; config.nix = { gc = { automatic = cfg.gc.enable; - options = "--max-freed $((32 * 1024**3)) --delete-older-than 14d"; + options = "--max-freed ${cfg.gc.minimumFreedGB} --delete-older-than 14d"; dates = "weekly"; }; @@ -34,6 +34,17 @@ in dates = [ "weekly" ]; }; + registry = { + master-upstream.to = { + type = "github"; + owner = "nixos"; + repo = "nixpkgs"; + }; + master.flake = inputs.master; + nixpkgs.flake = inputs.nixpkgs; + stable.flake = inputs.stable; + }; + settings = { substituters = [ "https://cache.nixos.org/" diff --git a/modules/config/theming/catppuccin-frappe.nix b/modules/config/theming/catppuccin-frappe.nix new file mode 100644 index 0000000..b7d8169 --- /dev/null +++ b/modules/config/theming/catppuccin-frappe.nix @@ -0,0 +1,39 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.my.theming; +in +{ + config = mkIf (cfg.scheme == "catppuccin-frappe") + (import ./catppuccin.nix + { + inherit config lib pkgs; + rosewater = "f2d5cf"; + flamingo = "eebebe"; + pink = "f4b8e4"; + mauve = "ca9ee6"; + red = "e78284"; + maroon = "ea999c"; + peach = "ef9f76"; + yellow = "e5c890"; + green = "a6d189"; + teal = "81c8be"; + sky = "99d1db"; + sapphire = "85c1dc"; + blue = "8caaee"; + lavender = "babbf1"; + text = "c6d0f5"; + subtext1 = "b5bfe2"; + subtext0 = "a5adce"; + overlay2 = "949cbb"; + overlay1 = "838ba7"; + overlay0 = "737994"; + surface2 = "626880"; + surface1 = "51576d"; + surface0 = "414559"; + base = "303446"; + mantle = "292c3c"; + crust = "232634"; + }); +} diff --git a/modules/config/theming/catppuccin-latte.nix b/modules/config/theming/catppuccin-latte.nix new file mode 100644 index 0000000..6743ed9 --- /dev/null +++ b/modules/config/theming/catppuccin-latte.nix @@ -0,0 +1,39 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.my.theming; +in +{ + config = mkIf (cfg.scheme == "catppuccin-latte") + (import ./catppuccin.nix + { + inherit config lib pkgs; + rosewater = "dc8a78"; + flamingo = "dd7878"; + pink = "ea76cb"; + mauve = "8839ef"; + red = "d20f39"; + maroon = "e64553"; + peach = "fe640b"; + yellow = "df8e1d"; + green = "40a02b"; + teal = "179299"; + sky = "04a5e5"; + sapphire = "209fb5"; + blue = "1e66f5"; + lavender = "7287fd"; + text = "4c4f69"; + subtext1 = "5c5f77"; + subtext0 = "6c6f85"; + overlay2 = "7c7f93"; + overlay1 = "8c8fa1"; + overlay0 = "9ca0b0"; + surface2 = "acb0be"; + surface1 = "bcc0cc"; + surface0 = "ccd0da"; + base = "eff1f5"; + mantle = "e6e9ef"; + crust = "dce0e8"; + }); +} diff --git a/modules/config/theming/catppuccin-macchiato.nix b/modules/config/theming/catppuccin-macchiato.nix new file mode 100644 index 0000000..70b4dd8 --- /dev/null +++ b/modules/config/theming/catppuccin-macchiato.nix @@ -0,0 +1,39 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.my.theming; +in +{ + config = mkIf (cfg.scheme == "catppuccin-macchiato") + (import ./catppuccin.nix + { + inherit config lib pkgs; + rosewater = "f4dbd6"; + flamingo = "f0c6c6"; + pink = "f5bde6"; + mauve = "c6a0f6"; + red = "ed8796"; + maroon = "ee99a0"; + peach = "f5a97f"; + yellow = "eed49f"; + green = "a6da95"; + teal = "8bd5ca"; + sky = "91d7e3"; + sapphire = "7dc4e4"; + blue = "8aadf4"; + lavender = "b7bdf8"; + text = "cad3f5"; + subtext1 = "b8c0e0"; + subtext0 = "a5adcb"; + overlay2 = "939ab7"; + overlay1 = "8087a2"; + overlay0 = "6e738d"; + surface2 = "5b6078"; + surface1 = "494d64"; + surface0 = "363a4f"; + base = "24273a"; + mantle = "1e2030"; + crust = "181926"; + }); +} diff --git a/modules/config/theming/catppuccin-mocha.nix b/modules/config/theming/catppuccin-mocha.nix new file mode 100644 index 0000000..ab35068 --- /dev/null +++ b/modules/config/theming/catppuccin-mocha.nix @@ -0,0 +1,39 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.my.theming; +in +{ + config = mkIf (cfg.scheme == "catppuccin-mocha") + (import ./catppuccin.nix + { + inherit config lib pkgs; + rosewater = "f5e0dc"; + flamingo = "f2cdcd"; + pink = "f5c2e7"; + mauve = "cba6f7"; + red = "f38ba8"; + maroon = "eba0ac"; + peach = "fab387"; + yellow = "f9e2af"; + green = "a6e3a1"; + teal = "94e2d5"; + sky = "89dceb"; + sapphire = "74c7ec"; + blue = "89b4fa"; + lavender = "b4befe"; + text = "cdd6f4"; + subtext1 = "bac2de"; + subtext0 = "a6adc8"; + overlay2 = "9399b2"; + overlay1 = "7f849c"; + overlay0 = "6c7086"; + surface2 = "585b70"; + surface1 = "45475a"; + surface0 = "494d64"; + base = "1e1e2e"; + mantle = "181825"; + crust = "11111b"; + }); +} diff --git a/modules/config/theming/catppuccin.nix b/modules/config/theming/catppuccin.nix index 0f77639..99ecea9 100644 --- a/modules/config/theming/catppuccin.nix +++ b/modules/config/theming/catppuccin.nix @@ -1,272 +1,326 @@ -{ config, lib, pkgs, ... }: +{ config +, lib +, pkgs +, rosewater +, flamingo +, pink +, mauve +, red +, maroon +, peach +, yellow +, green +, teal +, sky +, sapphire +, blue +, lavender +, text +, subtext1 +, subtext0 +, overlay2 +, overlay1 +, overlay0 +, surface2 +, surface1 +, surface0 +, base +, mantle +, crust +}: with lib; let cfg = config.my.theming; - - rosewater = "#f2d5cf"; - flamingo = "#eebebe"; - pink = "#f4b8e4"; - mauve = "#ca9ee6"; - red = "#e78284"; - maroon = "#ea999c"; - peach = "#ef9f76"; - yellow = "#e5c890"; - green = "#a6d189"; - teal = "#81c8be"; - sky = "#99d1db"; - sapphire = "#85c1dc"; - blue = "#8caaee"; - lavender = "#babbf1"; - text = "#c6d0f5"; - subtext1 = "#b5bfe2"; - subtext0 = "#a5adce"; - overlay2 = "#949cbb"; - overlay1 = "#838ba7"; - overlay0 = "#737994"; - surface2 = "#626880"; - surface1 = "#51576d"; - surface0 = "#414559"; - base = "#303446"; - mantle = "#292c3c"; - crust = "#232634"; in { - config = mkIf (cfg.scheme == "catppuccin") { - home-manager.users.moritz = { - programs = { - kitty.extraConfig = - '' - # vim:ft=kitty + home-manager.users.moritz = { + programs = { + kitty.extraConfig = '' + # vim:ft=kitty - ## name: Catppuccin-Frappe - ## author: Pocco81 (https://github.com/Pocco81) - ## license: MIT - ## upstream: https://github.com/catppuccin/kitty/blob/main/frappe.conf - ## blurb: Soothing pastel theme for the high-spirited! + ## name: Catppuccin-Frappe + ## author: Pocco81 (https://github.com/Pocco81) + ## license: MIT + ## upstream: https://github.com/catppuccin/kitty/blob/main/frappe.conf + ## blurb: Soothing pastel theme for the high-spirited! - # The basic colors - foreground #C6D0F5 - background #303446 - selection_foreground #303446 - selection_background ${rosewater} + # The basic colors + foreground #${text} + background #${base} + selection_foreground #${base} + selection_background #${rosewater} - # Cursor colors - cursor ${rosewater} - cursor_text_color #303446 + # Cursor colors + cursor #${rosewater} + cursor_text_color #${base} - # URL underline color when hovering with mouse - url_color ${rosewater} + # URL underline color when hovering with mouse + url_color #${rosewater} - # Kitty window border colors - active_border_color #BABBF1 - inactive_border_color #737994 - bell_border_color #E5C890 + # Kitty window border colors + active_border_color #${lavender} + inactive_border_color #${overlay0} + bell_border_color #${yellow} - # OS Window titlebar colors - wayland_titlebar_color system - macos_titlebar_color system + # OS Window titlebar colors + wayland_titlebar_color system + macos_titlebar_color system - # Tab bar colors - active_tab_foreground #232634 - active_tab_background ${mauve} - inactive_tab_foreground #C6D0F5 - inactive_tab_background #292C3C - tab_bar_background #232634 + # Tab bar colors + active_tab_foreground #${crust} + active_tab_background #${mauve} + inactive_tab_foreground #${text} + inactive_tab_background #${mantle} + tab_bar_background #${crust} - # Colors for marks (marked text in the terminal) - mark1_foreground #303446 - mark1_background #BABBF1 - mark2_foreground #303446 - mark2_background ${mauve} - mark3_foreground #303446 - mark3_background #85C1DC + # Colors for marks (marked text in the terminal) + mark1_foreground #${base} + mark1_background #${lavender} + mark2_foreground #${base} + mark2_background #${mauve} + mark3_foreground #${base} + mark3_background #${sapphire} - # The 16 terminal colors + # The 16 terminal colors - # black - color0 #51576D - color8 #626880 + # black + color0 #${surface1} + color8 #${surface2} - # red - color1 ${red} - color9 ${red} + # red + color1 #${red} + color9 #${red} - # green - color2 #A6D189 - color10 #A6D189 + # green + color2 #${green} + color10 #${green} - # yellow - color3 #E5C890 - color11 #E5C890 + # yellow + color3 #${yellow} + color11 #${yellow} - # blue - color4 #8CAAEE - color12 #8CAAEE + # blue + color4 #${blue} + color12 #${blue} - # magenta - color5 ${pink} - color13 ${pink} + # magenta + color5 #${pink} + color13 #${pink} - # cyan - color6 #81C8BE - color14 #81C8BE + # cyan + color6 #${teal} + color14 #${teal} - # white - color7 #B5BFE2 - color15 #A5ADCE - ''; - zathura.extraConfig = '' - set window-title-basename "true" - set selection-clipboard "clipboard" + # white + color7 #${subtext1} + color15 #${subtext0} + ''; + zathura.extraConfig = '' + set window-title-basename "true" + set selection-clipboard "clipboard" - set default-fg "#C6D0F5" - set default-bg "#303446" + set default-fg "#${text}" + set default-bg "#${base}" - set completion-bg "#414559" - set completion-fg "#C6D0F5" - set completion-highlight-bg "#575268" - set completion-highlight-fg "#C6D0F5" - set completion-group-bg "#414559" - set completion-group-fg "#8CAAEE" + set completion-bg "#${surface0}" + set completion-fg "#${text}" + set completion-highlight-bg "#575268" + set completion-highlight-fg "#${text}" + set completion-group-bg "#${surface0}" + set completion-group-fg "#${blue}" - set statusbar-fg "#C6D0F5" - set statusbar-bg "#414559" + set statusbar-fg "#${text}" + set statusbar-bg "#${surface0}" - set notification-bg "#414559" - set notification-fg "#C6D0F5" - set notification-error-bg "#414559" - set notification-error-fg "${red}" - set notification-warning-bg "#414559" - set notification-warning-fg "#FAE3B0" + set notification-bg "#${surface0}" + set notification-fg "#${text}" + set notification-error-bg "#${surface0}" + set notification-error-fg "#${red}" + set notification-warning-bg "#${surface0}" + set notification-warning-fg "#FAE3B0" - set inputbar-fg "#C6D0F5" - set inputbar-bg "#414559" + set inputbar-fg "#${text}" + set inputbar-bg "#${surface0}" - set recolor-lightcolor "#303446" - set recolor-darkcolor "#C6D0F5" + set recolor-lightcolor "#${base}" + set recolor-darkcolor "#${text}" - set index-fg "#C6D0F5" - set index-bg "#303446" - set index-active-fg "#C6D0F5" - set index-active-bg "#414559" + set index-fg "#${text}" + set index-bg "#${base}" + set index-active-fg "#${text}" + set index-active-bg "#${surface0}" - set render-loading-bg "#303446" - set render-loading-fg "#C6D0F5" + set render-loading-bg "#${base}" + set render-loading-fg "#${text}" - set highlight-color "#575268" - set highlight-fg "${pink}" - set highlight-active-color "${pink}" - ''; - rofi = { - theme = "custom"; - extraConfig = { - show-icons = true; - terminal = "alacritty"; - drun-display-format = "{icon} {name}"; - location = 0; - disable-history = false; - hide-scrollbar = true; - display-drun = "  Apps "; - display-run = "  Run "; - display-window = " 﩯 Window"; - display-Network = " 󰤨 Network"; - sidebar-mode = true; + set highlight-color "#575268" + set highlight-fg "#${pink}" + set highlight-active-color "#${pink}" + ''; + rofi = { + theme = "custom"; + extraConfig = { + show-icons = true; + terminal = "alacritty"; + drun-display-format = "{icon} {name}"; + location = 0; + disable-history = false; + hide-scrollbar = true; + display-drun = "  Apps "; + display-run = "  Run "; + display-window = " 﩯 Window"; + display-Network = " 󰤨 Network"; + sidebar-mode = true; + }; + }; + }; + xsession.windowManager.bspwm.settings = { + focused_border_color = "#${mauve}"; + normal_border_color = "#${base}"; + active_border_color = "#${base}"; + }; + services = { + dunst.settings = { + global = { + # Defines color of the frame around the notification window. + frame_color = "#${blue}"; + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = "frame"; + }; + + urgency_low = { + background = "#${base}"; + foreground = "#${text}"; + }; + urgency_normal = { + background = "#${base}"; + foreground = "#${text}"; + }; + urgency_critical = { + background = "#${base}"; + foreground = "#${text}"; + frame_color = "#${peach}"; + }; + }; + polybar = { + config = { + "bar/bottom" = { + background = base; + foreground = text; + border-color = base; + }; + "module/bspwm" = { + label-focused-foreground = pink; + label-occupied-foreground = overlay1; + label-urgent-foreground = maroon; + label-empty-foreground = overlay1; + label-separator-foreground = base; + }; + "module/cpu" = { + format-foreground = base; + format-background = green; + }; + "module/time" = { + format-foreground = base; + format-background = blue; + }; + "module/date" = { + format-foreground = base; + format-background = peach; + }; + "module/memory" = { + format-foreground = base; + format-background = blue; + }; + "module/pulseaudio" = { + format-volume-foreground = base; + format-volume-background = mauve; + label-muted = "婢 muted"; + format-muted-foreground = base; + format-muted-background = red; + }; + "module/network" = { + format-connected-foreground = base; + format-connected-background = mauve; + }; + "module/battery" = { + format-charging-foreground = base; + format-charging-background = green; + format-full-foreground = base; + format-full-background = green; + format-discharging-foreground = base; + format-discharging-background = red; }; }; }; - xsession.windowManager.bspwm = { - settings = { - focused_border_color = mauve; - normal_border_color = base; - active_border_color = base; - }; - }; - services = { - dunst.settings = { - global = { - # Defines color of the frame around the notification window. - frame_color = blue; + }; + xdg.configFile = { + "fish/conf.d/theme.fish".text = '' + # Catppuccin color palette - # Define a color for the separator. - # possible values are: - # * auto: dunst tries to find a color fitting to the background; - # * foreground: use the same color as the foreground; - # * frame: use the same color as the frame; - # * anything else will be interpreted as a X color. - separator_color = "frame"; - }; + # --> special + set -l foreground ${text} + set -l selection ${surface0} - urgency_low = { - background = base; - foreground = text; - }; - urgency_normal = { - background = base; - foreground = text; - }; - urgency_critical = { - background = base; - foreground = text; - frame_color = peach; - }; - }; - polybar = { - config = { - "bar/bottom" = { - background = base; - foreground = text; - border-color = base; - }; - "module/bspwm" = { - label-focused-foreground = pink; - label-occupied-foreground = overlay1; - label-urgent-foreground = maroon; - label-empty-foreground = overlay1; - label-separator-foreground = base; - }; - "module/cpu" = { - format-foreground = base; - format-background = green; - }; - "module/time" = { - format-foreground = base; - format-background = blue; - }; - "module/date" = { - format-foreground = base; - format-background = peach; - }; - "module/memory" = { - format-foreground = base; - format-background = blue; - }; - "module/pulseaudio" = { - format-volume-foreground = base; - format-volume-background = mauve; - label-muted = "%{F${red}}婢 %{F${base}}muted"; - format-muted-foreground = base; - format-muted-background = red; - }; - "module/network" = { - format-connected-foreground = base; - format-connected-background = mauve; - }; - }; - }; - }; - xdg.configFile."rofi/custom.rasi".text = '' + # --> palette + set -l teal ${teal} + set -l flamingo ${flamingo} + set -l mauve ${mauve} + set -l pink ${pink} + set -l red ${red} + set -l peach ${peach} + set -l green ${green} + set -l yellow ${yellow} + set -l blue ${blue} + set -l gray ${overlay0} + + # Syntax Highlighting + set -g fish_color_normal $foreground + set -g fish_color_command $blue + set -g fish_color_param $flamingo + set -g fish_color_keyword $red + set -g fish_color_quote $green + set -g fish_color_redirection $pink + set -g fish_color_end $peach + set -g fish_color_error $red + set -g fish_color_gray $gray + set -g fish_color_selection --background=$selection + set -g fish_color_search_match --background=$selection + set -g fish_color_operator $pink + set -g fish_color_escape $flamingo + set -g fish_color_autosuggestion $gray + set -g fish_color_cancel $red + + # Prompt + set -g fish_color_cwd $yellow + set -g fish_color_user $teal + set -g fish_color_host $blue + + # Completion Pager + set -g fish_pager_color_progress $gray + set -g fish_pager_color_prefix $pink + set -g fish_pager_color_completion $foreground + set -g fish_pager_color_description $gray + ''; + "rofi/custom.rasi".text = '' * { - bg-col: #303446; - bg-col-light: #303446; - border-col: #303446; - selected-col: #303446; - blue: #8caaee; - fg-col: #c6d0f5; - fg-col2: ${red}; - grey: #737994; + bg-col: #${base}; + bg-col-light: #${base}; + border-col: #${base}; + selected-col: #${base}; + blue: #${blue}; + fg-col: #${text}; + fg-col2: #${red}; + grey: #${overlay0}; width: 900; font: "JetBrainsMono Nerd Font 14"; diff --git a/modules/config/theming/default.nix b/modules/config/theming/default.nix index 61165df..eb9180f 100644 --- a/modules/config/theming/default.nix +++ b/modules/config/theming/default.nix @@ -10,17 +10,25 @@ let cfg = config.my.theming; in { - imports = [ ./dracula.nix ./catppuccin.nix ]; + imports = [ + ./dracula.nix + ./catppuccin-frappe.nix + ./catppuccin-latte.nix + ./catppuccin-macchiato.nix + ./catppuccin-mocha.nix + ]; options.my.theming = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; + enable = mkEnableOption "theming"; scheme = mkOption { - default = "catppuccin"; - type = types.enum [ "dracula" "catppuccin" ]; + default = "catppuccin-macchiato"; + type = types.enum [ + "dracula" + "catppuccin-latte" + "catppuccin-frappe" + "catppuccin-macchiato" + "catppuccin-mocha" + ]; }; }; @@ -62,8 +70,11 @@ in time-format = "%H:%M"; format-charging = " "; + format-charging-padding = 1; format-discharging = " "; + format-discharging-padding = 1; format-full = " "; + format-full-padding = 1; label-charging = "%percentage%% %time% remaining"; label-discharging = "%percentage%% %time% remaining"; diff --git a/modules/config/theming/dracula.nix b/modules/config/theming/dracula.nix index 7e5cbb1..235e0c3 100644 --- a/modules/config/theming/dracula.nix +++ b/modules/config/theming/dracula.nix @@ -149,16 +149,18 @@ in }; services = { dunst.settings = { - # Defines color of the frame around the notification window. - frame_color = "#282a36"; + global = { + # Defines color of the frame around the notification window. + frame_color = "#282a36"; - # Define a color for the separator. - # possible values are: - # * auto: dunst tries to find a color fitting to the background; - # * foreground: use the same color as the foreground; - # * frame: use the same color as the frame; - # * anything else will be interpreted as a X color. - separator_color = "frame"; + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = "frame"; + }; urgency_low = { background = "#282a36"; @@ -219,148 +221,202 @@ in }; }; }; - xdg.configFile."rofi/dracula.rasi".text = '' - * { - /* Dracula theme colour palette */ - drac-bgd: #282a36; - drac-cur: #44475a; - drac-fgd: #f8f8f2; - drac-cmt: #6272a4; - drac-cya: #8be9fd; - drac-grn: #50fa7b; - drac-ora: #ffb86c; - drac-pnk: #ff79c6; - drac-pur: #bd93f9; - drac-red: #ff5555; - drac-yel: #f1fa8c; + xdg.configFile = { + "fish/conf.d/theme.fish".text = '' + # Dracula Color Palette + set -l foreground f8f8f2 + set -l selection 44475a + set -l comment 6272a4 + set -l red ff5555 + set -l orange ffb86c + set -l yellow f1fa8c + set -l green 50fa7b + set -l purple bd93f9 + set -l cyan 8be9fd + set -l pink ff79c6 - font: "FiraCode Nerd Font Mono 13"; + # Syntax Highlighting Colors + set -gx fish_color_normal $foreground + set -gx fish_color_command $cyan + set -gx fish_color_keyword $pink + set -gx fish_color_quote $yellow + set -gx fish_color_redirection $foreground + set -gx fish_color_end $orange + set -gx fish_color_error $red + set -gx fish_color_param $purple + set -gx fish_color_comment $comment + set -gx fish_color_selection --background=$selection + set -gx fish_color_search_match --background=$selection + set -gx fish_color_operator $green + set -gx fish_color_escape $pink + set -gx fish_color_autosuggestion $comment + set -gx fish_color_cancel $red --reverse + set -gx fish_color_option $orange - foreground: @drac-fgd; - background-color: @drac-bgd; - active-background: @drac-pnk; - urgent-foreground: @foreground; - urgent-background: @drac-red; + # Default Prompt Colors + set -gx fish_color_cwd $green + set -gx fish_color_host $purple + set -gx fish_color_host_remote $purple + set -gx fish_color_user $cyan - selected-background: @active-background; - selected-urgent-background: @urgent-background; - selected-active-background: @active-background; - separatorcolor: @active-background; - bordercolor: #6272a4; - } + # Completion Pager Colors + set -gx fish_pager_color_progress $comment + set -gx fish_pager_color_background + set -gx fish_pager_color_prefix $cyan + set -gx fish_pager_color_completion $foreground + set -gx fish_pager_color_description $comment + set -gx fish_pager_color_selected_background --background=$selection + set -gx fish_pager_color_selected_prefix $cyan + set -gx fish_pager_color_selected_completion $foreground + set -gx fish_pager_color_selected_description $comment + set -gx fish_pager_color_secondary_background + set -gx fish_pager_color_secondary_prefix $cyan + set -gx fish_pager_color_secondary_completion $foreground + set -gx fish_pager_color_secondary_description $comment + ''; + "rofi/dracula.rasi".text = '' + * { + /* Dracula theme colour palette */ + drac-bgd: #282a36; + drac-cur: #44475a; + drac-fgd: #f8f8f2; + drac-cmt: #6272a4; + drac-cya: #8be9fd; + drac-grn: #50fa7b; + drac-ora: #ffb86c; + drac-pnk: #ff79c6; + drac-pur: #bd93f9; + drac-red: #ff5555; + drac-yel: #f1fa8c; - #window { - background-color: @background-color; - border: 3; - border-radius: 6; - border-color: @bordercolor; - padding: 5; - } - #mainbox { - border: 0; - padding: 5; - } - #message { - border: 1px dash 0px 0px ; - border-color: @separatorcolor; - padding: 1px ; - } - #textbox { - text-color: @foreground; - } - #listview { - fixed-height: 0; - border: 2px dash 0px 0px ; - border-color: @bordercolor; - spacing: 2px ; - scrollbar: false; - padding: 2px 0px 0px ; - } - #element { - border: 0; - padding: 1px ; - } - #element.normal.normal { - background-color: @background-color; - text-color: @foreground; - } - #element.normal.urgent { - background-color: @urgent-background; - text-color: @urgent-foreground; - } - #element.normal.active { - background-color: @active-background; - text-color: @background-color; - } - #element.selected.normal { - background-color: @selected-background; - text-color: @foreground; - } - #element.selected.urgent { - background-color: @selected-urgent-background; - text-color: @foreground; - } - #element.selected.active { - background-color: @selected-active-background; - text-color: @background-color; - } - #element.alternate.normal { - background-color: @background-color; - text-color: @foreground; - } - #element.alternate.urgent { - background-color: @urgent-background; - text-color: @foreground; - } - #element.alternate.active { - background-color: @active-background; - text-color: @foreground; - } - #scrollbar { - width: 2px ; - border: 0; - handle-width: 8px ; - padding: 0; - } - #sidebar { - border: 2px dash 0px 0px ; - border-color: @separatorcolor; - } - #button.selected { - background-color: @selected-background; - text-color: @foreground; - } - #inputbar { - spacing: 0; - text-color: @foreground; - padding: 1px ; - } - #case-indicator { - spacing: 0; - text-color: @foreground; - } - #entry { - spacing: 0; - text-color: @drac-cya; - } - #prompt { - spacing: 0; - text-color: @drac-grn; - } - #inputbar { - children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; - } - #textbox-prompt-colon { - expand: false; - str: ":"; - margin: 0px 0.3em 0em 0em ; - text-color: @drac-grn; - } - element-text, element-icon { - background-color: inherit; - text-color: inherit; - } - ''; + font: "FiraCode Nerd Font Mono 13"; + + foreground: @drac-fgd; + background-color: @drac-bgd; + active-background: @drac-pnk; + urgent-foreground: @foreground; + urgent-background: @drac-red; + + selected-background: @active-background; + selected-urgent-background: @urgent-background; + selected-active-background: @active-background; + separatorcolor: @active-background; + bordercolor: #6272a4; + } + + #window { + background-color: @background-color; + border: 3; + border-radius: 6; + border-color: @bordercolor; + padding: 5; + } + #mainbox { + border: 0; + padding: 5; + } + #message { + border: 1px dash 0px 0px ; + border-color: @separatorcolor; + padding: 1px ; + } + #textbox { + text-color: @foreground; + } + #listview { + fixed-height: 0; + border: 2px dash 0px 0px ; + border-color: @bordercolor; + spacing: 2px ; + scrollbar: false; + padding: 2px 0px 0px ; + } + #element { + border: 0; + padding: 1px ; + } + #element.normal.normal { + background-color: @background-color; + text-color: @foreground; + } + #element.normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; + } + #element.normal.active { + background-color: @active-background; + text-color: @background-color; + } + #element.selected.normal { + background-color: @selected-background; + text-color: @foreground; + } + #element.selected.urgent { + background-color: @selected-urgent-background; + text-color: @foreground; + } + #element.selected.active { + background-color: @selected-active-background; + text-color: @background-color; + } + #element.alternate.normal { + background-color: @background-color; + text-color: @foreground; + } + #element.alternate.urgent { + background-color: @urgent-background; + text-color: @foreground; + } + #element.alternate.active { + background-color: @active-background; + text-color: @foreground; + } + #scrollbar { + width: 2px ; + border: 0; + handle-width: 8px ; + padding: 0; + } + #sidebar { + border: 2px dash 0px 0px ; + border-color: @separatorcolor; + } + #button.selected { + background-color: @selected-background; + text-color: @foreground; + } + #inputbar { + spacing: 0; + text-color: @foreground; + padding: 1px ; + } + #case-indicator { + spacing: 0; + text-color: @foreground; + } + #entry { + spacing: 0; + text-color: @drac-cya; + } + #prompt { + spacing: 0; + text-color: @drac-grn; + } + #inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; + } + #textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @drac-grn; + } + element-text, element-icon { + background-color: inherit; + text-color: inherit; + } + ''; + }; }; }; } diff --git a/modules/config/wallpapers.nix b/modules/config/wallpapers.nix index 0ea8f62..526a017 100644 --- a/modules/config/wallpapers.nix +++ b/modules/config/wallpapers.nix @@ -9,13 +9,7 @@ let cfg = config.my.wallpapers; in { - options.my.wallpapers = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.wallpapers.enable = mkEnableOption "wallpapers"; config = mkIf cfg.enable { home-manager.users.moritz.xdg = { diff --git a/modules/config/yubikey.nix b/modules/config/yubikey.nix index 889c7a5..4695434 100644 --- a/modules/config/yubikey.nix +++ b/modules/config/yubikey.nix @@ -9,13 +9,7 @@ let cfg = config.my.yubikey; in { - options.my.yubikey = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.yubikey = mkEnableOption "yubikey"; config = { services.udev.packages = [ pkgs.yubikey-personalization ]; diff --git a/modules/profiles/base.nix b/modules/profiles/base.nix index 921cb2c..d00a341 100644 --- a/modules/profiles/base.nix +++ b/modules/profiles/base.nix @@ -9,7 +9,7 @@ with lib; users.users.moritz = { isNormalUser = true; home = "/home/moritz"; - extraGroups = [ "wheel" ]; # "networkmanager" "video" "dialout" + extraGroups = [ "wheel" "networkmanager" "video" ]; initialPassword = "password"; # CHANGE ME PLEASE openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGoAqa2m7hIzZ2LS96Z+RCIlRvhBM/j7h27tMBCwMT+a" # Moritz @@ -22,10 +22,15 @@ with lib; time.timeZone = "Europe/Berlin"; my = { + nix = { + gc.enable = true; + optimise.enable = true; + }; + bin.enable = true; shell = { abbreviations = { us = "systemctl --user"; - rs = "doas systemctl"; + rs = "sudo systemctl"; }; aliases = { ls = "exa -lh --icons --git"; @@ -34,8 +39,8 @@ with lib; rm = "rm -i"; mv = "mv -i"; - nix-switch = "doas nixos-rebuild switch --flake ~/.dotfiles"; - nix-boot = "doas nixos-rebuild boot --flake ~/.dotfiles"; + nix-switch = "sudo nixos-rebuild switch --flake ~/.dotfiles"; + nix-boot = "sudo nixos-rebuild boot --flake ~/.dotfiles"; nix-lock = "pushd ~/.dotfiles && nix flake update && popd"; latexwatch = ''find -type f -name "*.tex" | entr -c latexmk -pdf -silent''; @@ -43,9 +48,13 @@ with lib; variables = { EDITOR = "vim"; }; }; programs = { - vim.enable = true; + direnv.enable = true; + fish.enable = true; + git.enable = true; + gpg.enable = true; helix.enable = true; kakoune.enable = true; + vim.enable = true; }; }; @@ -81,14 +90,14 @@ with lib; entr exa gparted - hub + hut + lazygit neofetch tmux ttyper up viu wget - hut ]; fonts.fonts = with pkgs; [ @@ -110,6 +119,12 @@ with lib; (builtins.attrValues config.fileSystems)); }; + i18n.extraLocaleSettings = { + LC_NUMERIC = "de_DE.UTF-8"; + LC_PAPER = "de_DE.UTF-8"; + LC_TIME = "de_DE.UTF-8"; + }; + home-manager.users.moritz = { programs = { # Let Home Manager install and manage itself. @@ -120,12 +135,6 @@ with lib; home = { username = "moritz"; homeDirectory = "/home/moritz"; - language = { - base = "en_US.UTF-8"; - time = "de_DE.UTF-8"; - numeric = "de_DE.UTF-8"; - paper = "de_DE.UTF-8"; - }; stateVersion = "21.05"; }; xdg.userDirs.enable = true; diff --git a/modules/profiles/desktop.nix b/modules/profiles/desktop.nix index 0588d7e..d8b8e12 100644 --- a/modules/profiles/desktop.nix +++ b/modules/profiles/desktop.nix @@ -78,16 +78,17 @@ with lib; { hub.enable = true; kitty.enable = true; ledger.enable = true; + logseq.enable = true; python.enable = true; rofi.enable = true; spotify.enable = true; thunar.enable = true; zathura.enable = true; }; - services = { dunst.enable = true; kdeconnect.enable = true; + mullvad.enable = true; openconnect.enable = true; openvpn.enable = true; picom.enable = true; @@ -96,6 +97,8 @@ with lib; { }; }; + programs.xss-lock.enable = true; + environment.systemPackages = with pkgs; [ # nix nixpkgs-review @@ -111,11 +114,11 @@ with lib; { jellyfin-media-player keepassxc libreoffice - logseq pavucontrol signal-desktop tlaplusToolbox vlc + thunderbird ]; home-manager.users.moritz = { diff --git a/modules/programs/adb.nix b/modules/programs/adb.nix index e52d43d..c839ce6 100644 --- a/modules/programs/adb.nix +++ b/modules/programs/adb.nix @@ -9,13 +9,7 @@ let cfg = config.my.programs.adb; in { - options.my.programs.adb = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.adb.enable = mkEnableOption "adb"; config = mkIf cfg.enable { programs.adb.enable = true; diff --git a/modules/programs/bspwm/default.nix b/modules/programs/bspwm/default.nix index 7c0d4a4..ffb5448 100644 --- a/modules/programs/bspwm/default.nix +++ b/modules/programs/bspwm/default.nix @@ -9,13 +9,7 @@ let cfg = config.my.programs.bspwm; in { - options.my.programs.bspwm = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.bspwm.enable = mkEnableOption "true"; config = lib.mkIf cfg.enable { services = { @@ -51,7 +45,6 @@ in focus_follows_pointer = true; }; startupPrograms = [ - "${pkgs.systemd}/bin/systemctl --user start polybar.service" "randomWallpaper" "${pkgs.synology-drive-client}/bin/synology-drive" ]; @@ -72,16 +65,24 @@ in ''; }; }; - - home.packages = with pkgs; [ - bc # HACK to get bsp-layout to work - brightnessctl - bsp-layout - feh - pamixer - playerctl - synology-drive-client - ]; + systemd.user.targets.tray = { + Unit = { + Description = "Bspwm Tray Target"; + After = [ "graphical-session.target" ]; + }; + Install = { + WantedBy = [ "graphical-session.target" ]; + }; + }; }; + environment.systemPackages = with pkgs; [ + bc # HACK to get bsp-layout to work + brightnessctl + bsp-layout + feh + pamixer + playerctl + synology-drive-client + ]; }; } diff --git a/modules/programs/code.nix b/modules/programs/code.nix index 0f58530..93cda16 100644 --- a/modules/programs/code.nix +++ b/modules/programs/code.nix @@ -9,13 +9,8 @@ let cfg = config.my.programs.code; in { - options.my.programs.code = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.code.enable = mkEnableOption "code"; + config = mkIf cfg.enable { home-manager.users.moritz = { programs.vscode = { diff --git a/modules/programs/default.nix b/modules/programs/default.nix index bdc63b1..02ef7d9 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -21,6 +21,7 @@ ./kakoune.nix ./kitty.nix ./ledger + ./logseq.nix ./python.nix ./rofi ./spotify.nix diff --git a/modules/programs/direnv.nix b/modules/programs/direnv.nix index 83489cc..1235326 100644 --- a/modules/programs/direnv.nix +++ b/modules/programs/direnv.nix @@ -9,13 +9,7 @@ let cfg = config.my.programs.direnv; in { - options.my.programs.direnv = { - enable = mkOption { - default = true; - type = types.bool; - example = false; - }; - }; + options.my.programs.direnv.enable = mkEnableOption "direnv"; config = mkIf cfg.enable { home-manager.users.moritz.programs.direnv = { diff --git a/modules/programs/emacs.nix b/modules/programs/emacs.nix index 1a2a7d1..d9e884c 100644 --- a/modules/programs/emacs.nix +++ b/modules/programs/emacs.nix @@ -8,94 +8,87 @@ with lib; let cfg = config.my.programs.emacs; - myEmacs = with pkgs; ((emacsPackagesFor emacsUnstable).emacsWithPackages + myEmacs = with pkgs; ((emacsPackagesFor emacs).emacsWithPackages (epkgs: [ epkgs.vterm ])); in { - options.my.programs.emacs = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.emacs.enable = mkEnableOption "emacs"; + config = mkIf cfg.enable { my.shell.aliases = { emacs = "emacsclient -t -a 'emacs -t'"; }; fonts.fonts = [ pkgs.emacs-all-the-icons-fonts ]; + environment.systemPackages = with pkgs; [ + ### Emacs itself + binutils # native-comp needs 'as', provided by this + myEmacs + ### Doom dependencies + git + (ripgrep.override { withPCRE2 = true; }) + gnutls # for TLS connectivity + + ### Optional dependencies + fd # faster projectile indexing + imagemagick # for image-dired + zstd # for undo-fu-session/undo-tree compression + + ### Module dependencies + ## :checkers + # spell + (hunspellWithDicts [ + hunspellDicts.en_GB-ize + hunspellDicts.en_US + hunspellDicts.de_DE + ]) + + # grammar + languagetool + + ## : tools + # lookup & org +roam + sqlite + gcc # HACK to get emacsqlite binary + wordnet + graphviz + + ## :lang + # latex & org (latex previews) + stable.texlive.combined.scheme-full # HACK to fix broken perl package + texlab + + # nix + nixfmt # for formating nix + rnix-lsp + + # markdown & org +pandoc + pandoc + + # python + nodePackages.pyright + + # sh + nodePackages.bash-language-server + + ## :email + # mu4e + mu + isync + + ## :app + # everywhere + xdotool + xorg.xwininfo + xclip + xorg.xprop + ]; home-manager.users.moritz = { home.sessionPath = [ "/home/moritz/.config/emacs/bin/" ]; services.emacs = { enable = true; package = myEmacs; }; - - home.packages = with pkgs; [ - ### Emacs itself - binutils # native-comp needs 'as', provided by this - myEmacs - - ### Doom dependencies - git - (ripgrep.override { withPCRE2 = true; }) - gnutls # for TLS connectivity - - ### Optional dependencies - fd # faster projectile indexing - imagemagick # for image-dired - zstd # for undo-fu-session/undo-tree compression - - ### Module dependencies - ## :checkers - # spell - (hunspellWithDicts [ - hunspellDicts.en_GB-ize - hunspellDicts.en_US - hunspellDicts.de_DE - ]) - - # grammar - languagetool - - ## : tools - # lookup & org +roam - sqlite - gcc # HACK to get emacsqlite binary - wordnet - graphviz - - ## :lang - # latex & org (latex previews) - stable.texlive.combined.scheme-full # HACK to fix broken perl package - texlab - - # nix - nixfmt # for formating nix - rnix-lsp - - # markdown & org +pandoc - pandoc - - # python - nodePackages.pyright - - # sh - nodePackages.bash-language-server - - ## :email - # mu4e - mu - isync - - ## :app - # everywhere - xdotool - xorg.xwininfo - xclip - xorg.xprop - ]; }; }; } diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix index ee4cab0..d0f8e4d 100644 --- a/modules/programs/firefox.nix +++ b/modules/programs/firefox.nix @@ -12,11 +12,7 @@ let in { options.my.programs.firefox = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; + enable = mkEnableOption "firefox"; arkenfox = { enable = mkEnableOption "arkenfox"; overrides = mkOption { diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index d38f6d5..a2d64c8 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -14,17 +14,12 @@ let exportedVariables = lib.concatStringsSep "\n" exportVariables; in { - options.my.programs.fish = { - enable = mkOption { - default = true; - type = types.bool; - example = false; - }; - }; + options.my.programs.fish.enable = mkEnableOption "fish"; config = lib.mkIf cfg.enable { # set as default shell users.users.moritz.shell = pkgs.fish; + environment.systemPackages = with pkgs.fishPlugins; [ fzf-fish pisces ]; # needed for nix completions programs.fish.enable = true; @@ -88,7 +83,6 @@ in fzf.enableFishIntegration = true; starship.enableFishIntegration = true; }; - home.packages = with pkgs.fishPlugins; [ fzf-fish pisces ]; }; }; } diff --git a/modules/programs/git.nix b/modules/programs/git.nix index 46c2885..42497af 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -10,11 +10,7 @@ let in { options.my.programs.git = { - enable = mkOption { - default = true; - type = types.bool; - example = false; - }; + enable = mkEnableOption "git"; signing = mkOption { default = false; type = types.bool; diff --git a/modules/programs/gnome.nix b/modules/programs/gnome.nix index 8e7c2ee..f60df75 100644 --- a/modules/programs/gnome.nix +++ b/modules/programs/gnome.nix @@ -9,13 +9,7 @@ let cfg = config.my.programs.gnome; in { - options.my.programs.gnome = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.gnome.enable = mkEnableOption "gnome"; config = lib.mkIf cfg.enable { hardware = { diff --git a/modules/programs/gpg.nix b/modules/programs/gpg.nix index eb2c845..5371d62 100644 --- a/modules/programs/gpg.nix +++ b/modules/programs/gpg.nix @@ -9,13 +9,8 @@ let cfg = config.my.programs.gpg; in { - options.my.programs.gpg = { - enable = mkOption { - default = true; - type = types.bool; - example = true; - }; - }; + options.my.programs.gpg.enable = mkEnableOption "gpg"; + config = mkIf cfg.enable { home-manager.users.moritz.programs.gpg.enable = true; environment.shellInit = '' diff --git a/modules/programs/helix.nix b/modules/programs/helix.nix index 93bb5ab..821a09c 100644 --- a/modules/programs/helix.nix +++ b/modules/programs/helix.nix @@ -9,13 +9,7 @@ let cfg = config.my.programs.helix; in { - options.my.programs.helix = { - enable = mkOption { - default = true; - type = types.bool; - example = false; - }; - }; + options.my.programs.helix.enable = mkEnableOption "helix"; config = mkIf cfg.enable { home-manager.users.moritz.programs.helix = { diff --git a/modules/programs/hub.nix b/modules/programs/hub.nix index 8759d23..14b9c60 100644 --- a/modules/programs/hub.nix +++ b/modules/programs/hub.nix @@ -9,13 +9,8 @@ let cfg = config.my.programs.hub; in { - options.my.programs.hub = { - enable = mkOption { - default = true; - type = types.bool; - example = false; - }; - }; + options.my.programs.hub.enable = mkEnableOption "hub"; + config = mkIf cfg.enable { age.secrets = { github = { diff --git a/modules/programs/kakoune.nix b/modules/programs/kakoune.nix index a4efa50..874ef2d 100644 --- a/modules/programs/kakoune.nix +++ b/modules/programs/kakoune.nix @@ -9,13 +9,7 @@ let cfg = config.my.programs.kakoune; in { - options.my.programs.kakoune = { - enable = mkOption { - default = true; - type = types.bool; - example = false; - }; - }; + options.my.programs.kakoune.enable = mkEnableOption "kakoune"; config = mkIf cfg.enable { home-manager.users.moritz = { diff --git a/modules/programs/kitty.nix b/modules/programs/kitty.nix index f55f40f..8ab1958 100644 --- a/modules/programs/kitty.nix +++ b/modules/programs/kitty.nix @@ -9,13 +9,7 @@ let cfg = config.my.programs.kitty; in { - options.my.programs.kitty = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.kitty.enable = mkEnableOption "kitty"; config = mkIf cfg.enable { my.shell.aliases.ssh = "kitty +kitten ssh"; diff --git a/modules/programs/ledger/default.nix b/modules/programs/ledger/default.nix index 3efcfab..348e0e1 100644 --- a/modules/programs/ledger/default.nix +++ b/modules/programs/ledger/default.nix @@ -9,48 +9,45 @@ let cfg = config.my.programs.ledger; in { - options.my.programs.ledger = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.ledger.enable = mkEnableOption "ledger"; config = mkIf cfg.enable { - my.shell.aliases = { - bal = "ledger bal"; - balcash = "ledger bal -R -X € --current --flat ^assets:bank ^liabilities"; - balnet = "ledger bal -R -X € --current --depth 2 ^assets ^liabilities"; - bud = ''ledger --budget --unbudgeted bal ^expenses -p "this month"''; - budr = ''ledger --budget reg -p "this month" ^expenses''; - reg = "ledger reg -R -V --tail 15"; - }; - home-manager.users.moritz = { - home.packages = with pkgs; let - reg-copy = writeShellApplication { - name = "reg-copy"; - - runtimeInputs = [ ledger xclip ]; - - text = '' - table="$(printf '%-10s %-30s %8s %8s\n' Datum Beschreibung Einzeln Gesamt && ledger reg -V --format '%10D %.30P %8t %8T\n' "$@")" - echo "$table" - echo "$table" | xclip -selection clipboard - ''; + my.shell = { + variables = { + LEDGER_FILE = "/home/moritz/Nextcloud/Notes/ledger/main.ledger"; + }; + aliases = + let + applyCommon = name: command: "${command} --payee note --strict --explicit"; + in + mapAttrs applyCommon { + bal = "ledger bal"; + balcash = "ledger bal -R -X € --current --flat ^assets:bank ^liabilities"; + balnet = "ledger bal -R -X € --current --depth 2 ^assets ^liabilities"; + bud = ''ledger bal --budget --unbudgeted -p "this month"''; + budr = ''ledger reg --budget --unbudgeted -p "this month"''; + reg = "ledger reg -R -V --tail 15"; }; - in - [ ledger reg-copy ]; + }; + environment.systemPackages = with pkgs; let + reg-copy = writeShellApplication { + name = "reg-copy"; + + runtimeInputs = [ ledger xclip ]; + + text = '' + table="$(printf '%-10s %-30s %8s %8s\n' Datum Beschreibung Einzeln Gesamt && ledger reg -V --format '%10D %.30P %8t %8T\n' "$@")" + echo "$table" + echo "$table" | xclip -selection clipboard + ''; + }; + in + [ ledger reg-copy hledger hledger-ui hledger-web ]; + home-manager.users.moritz = { xdg.configFile = { "fish/completions/ledger.fish" = { text = builtins.readFile ./ledger.fish; }; - "ledger/ledgerrc".text = '' - --strict - --explicit - --payee note - --file ~/Notes/ledger/main.ledger - ''; }; }; }; diff --git a/modules/programs/logseq.nix b/modules/programs/logseq.nix new file mode 100644 index 0000000..948e39c --- /dev/null +++ b/modules/programs/logseq.nix @@ -0,0 +1,20 @@ +{ config +, lib +, pkgs +, ... +}: + +with lib; +let + cfg = config.my.programs.logseq; +in +{ + options.my.programs.logseq.enable = mkEnableOption "logseq"; + + config = mkIf cfg.enable { + users.users.moritz.packages = with pkgs; [ + logseq + ]; + xdg.mime.defaultApplications."x-scheme-handler/logseq" = "logseq.desktop"; + }; +} diff --git a/modules/programs/python.nix b/modules/programs/python.nix index 7480cb5..f0dadfb 100644 --- a/modules/programs/python.nix +++ b/modules/programs/python.nix @@ -30,7 +30,14 @@ in example = [ "python39" ]; }; packages = mkOption { - default = [ "isort" "pytest" "flake8" "python-lsp-server" ]; + default = [ + "flake8" + "isort" + "mypy" + "poetry" + "pytest" + "python-lsp-server" + ]; type = with types; listOf (enum commonPackages); }; }; diff --git a/modules/programs/rofi/default.nix b/modules/programs/rofi/default.nix index 28e7363..56fa79a 100644 --- a/modules/programs/rofi/default.nix +++ b/modules/programs/rofi/default.nix @@ -7,51 +7,16 @@ with lib; let cfg = config.my.programs.rofi; - - rofi-bluetooth = with pkgs; stdenv.mkDerivation rec { - pname = "rofi-bluetooth"; - version = "unstable-2021-03-05"; - - src = fetchFromGitHub { - repo = pname; - owner = "nickclyde"; - # https://github.com/nickclyde/rofi-bluetooth/issues/19 - rev = "893db1f2b549e7bc0e9c62e7670314349a29cdf2"; - sha256 = "sha256-3oROJKEQCuSnLfbJ+JSSc9hcmJTPrLHRQJsrUcaOMss="; - }; - - nativeBuildInputs = [ makeWrapper ]; - - installPhase = '' - runHook preInstall - - install -D --target-directory=$out/bin/ ./rofi-bluetooth - - wrapProgram $out/bin/rofi-bluetooth \ - --prefix PATH ":" ${lib.makeBinPath [ rofi-unwrapped bluez ] } - - runHook postInstall - ''; - - meta = with lib; { - description = "Rofi-based interface to connect to bluetooth devices and display status info"; - homepage = "https://github.com/nickclyde/rofi-bluetooth"; - license = licenses.gpl3Only; - maintainers = with maintainers; [ MoritzBoehme ]; - platforms = platforms.linux; - }; - }; in { - options.my.programs.rofi = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.rofi.enable = mkEnableOption "rofi"; config = mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + (lib.mkIf config.networking.networkmanager.enable networkmanager_dmenu) + (lib.mkIf config.hardware.bluetooth.enable rofi-bluetooth) + rofi-power-menu + ]; home-manager.users.moritz = { programs.rofi = { enable = true; @@ -59,11 +24,6 @@ in pkgs.rofi.override { plugins = with pkgs; [ rofi-calc rofi-emoji ]; }; extraConfig = { combi-modi = "drun,window,emoji"; }; }; - home.packages = with pkgs; [ - (lib.mkIf config.networking.networkmanager.enable networkmanager_dmenu) - (lib.mkIf config.hardware.bluetooth.enable rofi-bluetooth) - rofi-power-menu - ]; xdg = { enable = true; configFile."networkmanager-dmenu/config.ini".text = '' diff --git a/modules/programs/spotify.nix b/modules/programs/spotify.nix index 283f9be..f6d39bd 100644 --- a/modules/programs/spotify.nix +++ b/modules/programs/spotify.nix @@ -9,21 +9,15 @@ let cfg = config.my.programs.spotify; in { - options.my.programs.spotify = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.spotify.enable = mkEnableOption "spotify"; config = mkIf cfg.enable { age.secrets.spotifyd = { file = ../../secrets/spotifyd.age; owner = "1000"; }; + environment.systemPackages = with pkgs; [ spotify-tui sptlrx ]; home-manager.users.moritz = { - home.packages = with pkgs; [ spotify-tui sptlrx ]; services.spotifyd = { enable = true; package = pkgs.spotifyd.override { withMpris = true; }; diff --git a/modules/programs/sway.nix b/modules/programs/sway.nix index a3b6716..f7ae605 100644 --- a/modules/programs/sway.nix +++ b/modules/programs/sway.nix @@ -9,13 +9,7 @@ let cfg = config.my.programs.sway; in { - options.my.programs.sway = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.sway.enable = mkEnableOption "sway"; config = lib.mkIf cfg.enable { hardware.opengl = { diff --git a/modules/programs/thunar.nix b/modules/programs/thunar.nix index 20a3be7..3a6a6c7 100644 --- a/modules/programs/thunar.nix +++ b/modules/programs/thunar.nix @@ -9,13 +9,7 @@ let cfg = config.my.programs.thunar; in { - options.my.programs.thunar = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.thunar.enable = mkEnableOption "thunar"; config = mkIf cfg.enable { environment.systemPackages = with pkgs; [ @@ -26,7 +20,7 @@ in ]; services.gvfs = { enable = true; - package = lib.mkForce pkgs.gnome3.gvfs; + package = lib.mkForce pkgs.gnome.gvfs; }; }; } diff --git a/modules/programs/xmonad/default.nix b/modules/programs/xmonad/default.nix index dcaab68..80ceb83 100644 --- a/modules/programs/xmonad/default.nix +++ b/modules/programs/xmonad/default.nix @@ -9,13 +9,7 @@ let cfg = config.my.programs.xmonad; in { - options.my.programs.xmonad = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.xmonad.enable = mkEnableOption "xmonad"; config = lib.mkIf cfg.enable { services = { diff --git a/modules/programs/zathura.nix b/modules/programs/zathura.nix index 0389b1e..4eb23e3 100644 --- a/modules/programs/zathura.nix +++ b/modules/programs/zathura.nix @@ -9,13 +9,7 @@ let cfg = config.my.programs.zathura; in { - options.my.programs.zathura = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.zathura.enable = mkEnableOption "zathura"; config = mkIf cfg.enable { home-manager.users.moritz.programs.zathura = { diff --git a/modules/programs/zsh.nix b/modules/programs/zsh.nix index d5e775b..8088627 100644 --- a/modules/programs/zsh.nix +++ b/modules/programs/zsh.nix @@ -11,13 +11,7 @@ let shellConfig = config.my.shell; in { - options.my.programs.zsh = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.programs.zsh.enable = mkEnableOption "zsh"; config = lib.mkIf cfg.enable { environment.pathsToLink = [ "/share/zsh" ]; diff --git a/modules/security/default.nix b/modules/security/default.nix index c877f90..3506583 100644 --- a/modules/security/default.nix +++ b/modules/security/default.nix @@ -68,19 +68,6 @@ # So we don't have to do this later... security.acme.acceptTerms = true; - # Enable doas as an alternative to sudo - security.doas = { - enable = lib.mkDefault true; - extraRules = [ - # Do not ask for a password again for some time after the user successfully authenticates. - { - groups = [ "wheel" "doas" ]; - persist = true; - } - ]; - }; - security.sudo.enable = !config.security.doas.enable; - # SSH services.openssh = { # Disable ssh password login diff --git a/modules/services/default.nix b/modules/services/default.nix index 0dc2d3d..4d2b238 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -6,6 +6,7 @@ imports = [ ./dunst.nix ./kdeconnect.nix + ./mullvad.nix ./openconnect.nix ./openvpn.nix ./picom.nix diff --git a/modules/services/dunst.nix b/modules/services/dunst.nix index 80b330c..898faaa 100644 --- a/modules/services/dunst.nix +++ b/modules/services/dunst.nix @@ -9,13 +9,7 @@ let cfg = config.my.services.dunst; in { - options.my.services.dunst = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.services.dunst.enable = mkEnableOption "dunst"; config = lib.mkIf cfg.enable { home-manager.users.moritz = { diff --git a/modules/services/kdeconnect.nix b/modules/services/kdeconnect.nix index 6d66419..3ce2e31 100644 --- a/modules/services/kdeconnect.nix +++ b/modules/services/kdeconnect.nix @@ -13,13 +13,7 @@ let cfg = config.my.services.kdeconnect; in { - options.my.services.kdeconnect = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.services.kdeconnect.enable = mkEnableOption "kdeconnect"; config = mkIf cfg.enable { home-manager.users.moritz.services.kdeconnect.enable = mkIf (!config.my.programs.gnome.enable) true; diff --git a/modules/services/mullvad.nix b/modules/services/mullvad.nix new file mode 100644 index 0000000..3840016 --- /dev/null +++ b/modules/services/mullvad.nix @@ -0,0 +1,20 @@ +{ config +, lib +, pkgs +, ... +}: + +with lib; +let + cfg = config.my.services.mullvad; +in +{ + options.my.services.mullvad.enable = mkEnableOption "mullvad"; + + config = lib.mkIf cfg.enable { + services.mullvad-vpn.enable = true; + users.users.moritz.packages = with pkgs; [ + mullvad-vpn + ]; + }; +} diff --git a/modules/services/openconnect.nix b/modules/services/openconnect.nix index 8203acb..ad38514 100644 --- a/modules/services/openconnect.nix +++ b/modules/services/openconnect.nix @@ -9,13 +9,7 @@ let cfg = config.my.services.openconnect; in { - options.my.services.openconnect = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.services.openconnect.enable = mkEnableOption "openconnect"; config = lib.mkIf cfg.enable { networking.openconnect.interfaces = { diff --git a/modules/services/openvpn.nix b/modules/services/openvpn.nix index 900721f..b0b49bc 100644 --- a/modules/services/openvpn.nix +++ b/modules/services/openvpn.nix @@ -9,13 +9,7 @@ let cfg = config.my.services.openvpn; in { - options.my.services.openvpn = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.services.openvpn.enable = mkEnableOption "openvpn"; config = lib.mkIf cfg.enable { age.secrets = { diff --git a/modules/services/picom.nix b/modules/services/picom.nix index 4c41830..13b0024 100644 --- a/modules/services/picom.nix +++ b/modules/services/picom.nix @@ -9,13 +9,7 @@ let cfg = config.my.services.picom; in { - options.my.services.picom = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.services.picom.enable = mkEnableOption "picom"; config = lib.mkIf cfg.enable { home-manager.users.moritz = { @@ -30,6 +24,9 @@ in glx-no-rebind-pixmap = true; glx-no-stencil = true; + # against flicker + unredir-if-possible = false; + # fastest swap method glx-swap-method = 1; @@ -45,7 +42,6 @@ in # needed for nvidia with glx backend xrender-sync-fence = true; }; - experimentalBackends = true; inactiveOpacity = 0.97; opacityRules = [ "100:fullscreen" "100:class_g = 'Polybar'" ]; vSync = true; diff --git a/modules/services/printing.nix b/modules/services/printing.nix index fd5e44c..ab7edd9 100644 --- a/modules/services/printing.nix +++ b/modules/services/printing.nix @@ -5,13 +5,7 @@ let cfg = config.my.services.printing; in { - options.my.services.printing = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.services.printing.enable = mkEnableOption "printing"; config = lib.mkIf cfg.enable { services = { diff --git a/modules/services/redshift.nix b/modules/services/redshift.nix index d4878ae..6e75b5e 100644 --- a/modules/services/redshift.nix +++ b/modules/services/redshift.nix @@ -5,13 +5,7 @@ let cfg = config.my.services.redshift; in { - options.my.services.redshift = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.services.redshift.enable = mkEnableOption "redshift"; config = lib.mkIf cfg.enable { services.redshift.enable = true; diff --git a/modules/virtualisation/podman.nix b/modules/virtualisation/podman.nix index 15c8547..f3fdf35 100644 --- a/modules/virtualisation/podman.nix +++ b/modules/virtualisation/podman.nix @@ -9,13 +9,7 @@ let cfg = config.my.virtualisation.podman; in { - options.my.virtualisation.podman = { - enable = mkOption { - default = false; - type = types.bool; - example = false; - }; - }; + options.my.virtualisation.podman.enable = mkEnableOption "podman"; config = mkIf cfg.enable { virtualisation.podman = { diff --git a/modules/virtualisation/virtualisation.nix b/modules/virtualisation/virtualisation.nix index 3326a40..f51862f 100644 --- a/modules/virtualisation/virtualisation.nix +++ b/modules/virtualisation/virtualisation.nix @@ -9,20 +9,17 @@ let cfg = config.my.virtualisation.libvirtd; in { - options.my.virtualisation.libvirtd = { - enable = mkOption { - default = false; - type = types.bool; - example = true; - }; - }; + options.my.virtualisation.libvirtd.enable = mkEnableOption "libvirtd"; config = mkIf cfg.enable { virtualisation.libvirtd = { enable = true; package = pkgs.libvirt; }; - home-manager.users.moritz.home.packages = with pkgs; [ virt-manager ]; - users.users.moritz.extraGroups = [ "libvirtd" ]; + + users.users.moritz = { + extraGroups = [ "libvirtd" ]; + packages = with pkgs; [ virt-manager ]; + }; }; } diff --git a/overlays/default.nix b/overlays/default.nix index 5f8d1a9..dc2ac76 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,6 +1,7 @@ { inputs }: final: prev: { inherit (inputs.comma.packages."${prev.system}") comma; nixpkgs-review-checks = inputs.nixpkgs-review-checks.defaultPackage."${prev.system}"; + kdeconnect = prev.plasma5Packages.kdeconnect-kde; agenix = inputs.agenix.defaultPackage."${prev.system}"; master = import inputs.master { inherit (prev) system; diff --git a/secrets/email-desktop.age b/secrets/email-desktop.age deleted file mode 100644 index 3d5245b..0000000 Binary files a/secrets/email-desktop.age and /dev/null differ diff --git a/secrets/email-laptop.age b/secrets/email-laptop.age deleted file mode 100644 index 134853d..0000000 --- a/secrets/email-laptop.age +++ /dev/null @@ -1,15 +0,0 @@ -age-encryption.org/v1 --> ssh-ed25519 CjuqfA 42ZhJgcVV9rxkVmvEj4aCeeVx4Tldtx2L54hS1mZCxE -dqSOKoGxChgMHmiY4SgoJqxH9nSGlLVnmbke2+xZHYA --> ssh-ed25519 QRYDmg yHGmTle30O7BQ7SFG7m5gaZctmwT26LNfJPbocs1WTM -lQZa4yp8R8UZpG+/JGuZ4z4gxlGXColGCs8qlKFyCP4 --> ssh-ed25519 wG6LYg wokwDVXoQaZlpX4qM/2OmSo9lbDFIqqg/dKesIETJBI -0MBgUClVsQksxRCa4WhSvQlzZRl673CZeeP7PVfHtCI --> ssh-ed25519 ZYd7Zg cGYmLN+nSv5NGR+HMbofhtzbmZ/LjftCpcUIbZ5Z+hY -3u9UgW7TDWX+dfuJuIwRxSkwTOLrUw1znEkU9ao5Ltw --> ssh-ed25519 as9VYQ dK/VaOUKsr58sTfiF3qjUPHi3mxfioW5IXkyMmx+xCY -mTF8kUni1pxBrcE+j4mHZx/Zs8D8SgqWjfRkDH66m5k --> Pzw,"-grease R`h7fZ+ 'U[<2@ `Ay6[ -3a6T ---- I5udQOeevThPQ3VGfarWDe+n1y1DnC1vNqd+hU53ENw - ǻ@C wWLous fzb+4 \ No newline at end of file diff --git a/secrets/secrets.nix b/secrets/secrets.nix index 375fd0e..90e1b43 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -13,8 +13,6 @@ in { "nordvpn.age".publicKeys = all; "spotifyd.age".publicKeys = all; - "email-desktop.age".publicKeys = all; - "email-laptop.age".publicKeys = all; "home-vpn.age".publicKeys = all; "home-vpn-password.age".publicKeys = all; "github.age".publicKeys = all;