diff --git a/.sops.yaml b/.sops.yaml index 0f00d93..5694f7e 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -2,6 +2,8 @@ keys: - &users: - &nx2 22FB2CC03DC5292AB81CF67D0AF27B383170E634 - &nx2_key_13 age1x2lpsennl74n0f5jl60uv2ffjcuqymzf9ap3frlz2quyv0x3hq3scnewwq + - &xps-home age1pn4utvwpqdrswn0xurfdexn5nks9cd06jxzwg3m3m6za25ap4vxqxd0p3k + - &ace-home age1ur5zpr325cv7w0yn49azz9f48xsxd73w2sytt22yrnw5qs9r34nsv3vl05 - &hosts: - &north age1vkqn2nars5qmpr35tac0x9vshphrq6nnzjfyxwusgn27kt3zualssv0u8e - &xps age1jvf2lyrt2dw9jfnwgvnhmj9fmvyq8vvtepqjpkyycc5dqkkd4edqhxsgv6 @@ -14,5 +16,7 @@ creation_rules: - *xps - *ace - *nx2_key_13 + - *xps-home + - *ace-home pgp: - *nx2 diff --git a/configuration.nix b/configuration.nix index 45330d1..0bcd6f0 100644 --- a/configuration.nix +++ b/configuration.nix @@ -66,6 +66,8 @@ system.stateVersion = hyper.pkgs-version; nix.settings.experimental-features = [ "nix-command" "flakes" ]; programs.bash.shellInit = '' - source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh + if [[ "$USER" == "${hyper.user}" ]]; then + source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh + fi ''; } diff --git a/flake-modules/rice.nix b/flake-modules/rice.nix index 12cfc31..717aa19 100644 --- a/flake-modules/rice.nix +++ b/flake-modules/rice.nix @@ -7,10 +7,24 @@ pkgs: rec { gap-size = 5; border-width = 2; color = let - dark = (-0.5); - bright = (0.5); - alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; }; - alter = let f = lib.alter-luminace-hex; in color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; }; + dark = (-0.4); + darker = (-0.6); + bright = 0.4; + brighter = 0.7; + alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: { + base = color-value; + dark = f color-value dark; + darker = f color-value darker; + bright = f color-value bright; + brighter = f color-value brighter; + }; + alter = let f = lib.alter-luminace-hex; in color-value: { + base = color-value; + dark = f color-value dark; + darker = f color-value darker; + bright = f color-value bright; + brighter = f color-value brighter; + }; # ccolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)); ccolor = builtins.mapAttrs alter-set { black = "#040404"; # "#111111" "#001100"; @@ -33,6 +47,7 @@ pkgs: rec { # tertiary = magenta; # special = yellow; # weird = green; + subtle = { darker = "#111111"; dark = "#444444"; base = "#777777"; bright = "#999999"; brighter = "#cccccc"; }; positive = alter "#00dd00"; negative = alter "#dd0000"; border = accent.base; diff --git a/flake.lock b/flake.lock index d02a02c..77ca2a3 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1755946532, - "narHash": "sha256-POePremlUY5GyA1zfbtic6XLxDaQcqHN6l+bIxdT5gc=", + "lastModified": 1759499898, + "narHash": "sha256-UNzYHLWfkSzLHDep5Ckb5tXc0fdxwPIrT+MY4kpQttM=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "81584dae2df6ac79f6b6dae0ecb7705e95129ada", + "rev": "655e067f96fd44b3f5685e17f566b0e4d535d798", "type": "github" }, "original": { @@ -39,11 +39,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1756320983, - "narHash": "sha256-huaJ1CvBsylibf55pjiFEpiKxYU235iAzwMhJ+iDSjw=", + "lastModified": 1759705705, + "narHash": "sha256-ckBnfbxbT7VU7ay0c5jkstAZHrC4xDpEHgnQo99OdEw=", "owner": "9001", "repo": "copyparty", - "rev": "f4f702c39dd2365f6ca43ed6b72a84c708fded8d", + "rev": "20ac117c3272da50ce125795d831ac55f29e766d", "type": "github" }, "original": { @@ -220,11 +220,11 @@ ] }, "locked": { - "lastModified": 1756245065, - "narHash": "sha256-aAZNbGcWrVRZgWgkQbkabSGcDVRDMgON4BipMy69gvI=", + "lastModified": 1758463745, + "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=", "owner": "nix-community", "repo": "home-manager", - "rev": "54b2879ce622d44415e727905925e21b8f833a98", + "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3", "type": "github" }, "original": { @@ -321,11 +321,11 @@ ] }, "locked": { - "lastModified": 1755678602, - "narHash": "sha256-uEC5O/NIUNs1zmc1aH1+G3GRACbODjk2iS0ET5hXtuk=", + "lastModified": 1759490292, + "narHash": "sha256-T6iWzDOXp8Wv0KQOCTHpBcmAOdHJ6zc/l9xaztW6Ivc=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "157cc52065a104fc3b8fa542ae648b992421d1c7", + "rev": "9431db625cd9bb66ac55525479dce694101d6d7a", "type": "github" }, "original": { @@ -350,11 +350,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1756325904, - "narHash": "sha256-PRz3GE4ZBScWrHTVegpM4B2YLZplp1iPwmZ9AeYBbsg=", + "lastModified": 1759837778, + "narHash": "sha256-K/F/ndJszKrbhhCcQEpLU3jrDSapQCprgNYJscHZYf0=", "ref": "refs/heads/main", - "rev": "378e130f1426648d8d734049800128f9882805bf", - "revCount": 6395, + "rev": "5ba2d2217b649c4ca2db7e3f383b3f6af6e70d65", + "revCount": 6484, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -382,11 +382,11 @@ ] }, "locked": { - "lastModified": 1756325158, - "narHash": "sha256-aJ9jAYtZ64MWBpWPfH1q+t6U9b6kJWc2yK9Vrlj6fZY=", + "lastModified": 1759748449, + "narHash": "sha256-9I7KVSR7PsSaahM6CbxUyjXSRAY/4+29rFblZDqHPFE=", "owner": "hyprwm", "repo": "hyprland-plugins", - "rev": "bf843fc6adf90d43a5dd7742e9df61d395ba780d", + "rev": "7be897d6ae765fab756c0b7e6b91e8c5b39a419e", "type": "github" }, "original": { @@ -475,11 +475,11 @@ ] }, "locked": { - "lastModified": 1753819801, - "narHash": "sha256-tHe6XeNeVeKapkNM3tcjW4RuD+tB2iwwoogWJOtsqTI=", + "lastModified": 1759080228, + "narHash": "sha256-RgDoAja0T1hnF0pTc56xPfLfFOO8Utol2iITwYbUhTk=", "owner": "hyprwm", "repo": "hyprland-qtutils", - "rev": "b308a818b9dcaa7ab8ccab891c1b84ebde2152bc", + "rev": "629b15c19fa4082e4ce6be09fdb89e8c3312aed7", "type": "github" }, "original": { @@ -504,11 +504,11 @@ ] }, "locked": { - "lastModified": 1753622892, - "narHash": "sha256-0K+A+gmOI8IklSg5It1nyRNv0kCNL51duwnhUO/B8JA=", + "lastModified": 1758927902, + "narHash": "sha256-LZgMds7M94+vuMql2bERQ6LiFFdhgsEFezE4Vn+Ys3A=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "23f0debd2003f17bd65f851cd3f930cff8a8c809", + "rev": "4dafa28d4f79877d67a7d1a654cddccf8ebf15da", "type": "github" }, "original": { @@ -525,11 +525,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1754887838, - "narHash": "sha256-npC+H+Wl60EdrV75sjqm+bbbLbKgCCGn4ALSM0B2OWA=", + "lastModified": 1759033501, + "narHash": "sha256-QhcOFLJYC9CiSVPkci62ghMEAJChzl+L98To1pKvnRQ=", "owner": "KZDKM", "repo": "Hyprspace", - "rev": "2b61fd2115262243b03aa9afe8dfd8a78e71636c", + "rev": "e54884da1d6a1af76af9d053887bf3750dd554fd", "type": "github" }, "original": { @@ -550,11 +550,11 @@ ] }, "locked": { - "lastModified": 1756117388, - "narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=", + "lastModified": 1759490926, + "narHash": "sha256-7IbZGJ5qAAfZsGhBHIsP8MBsfuFYS0hsxYHVkkeDG5Q=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0", + "rev": "94cce794344538c4d865e38682684ec2bbdb2ef3", "type": "github" }, "original": { @@ -667,11 +667,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1755261305, - "narHash": "sha256-EOqCupB5X5WoGVHVcfOZcqy0SbKWNuY3kq+lj1wHdu8=", + "lastModified": 1759833546, + "narHash": "sha256-rOfkgIiiZNPUbf61OqEym60wXEODeDG8XH+gV/SUoUc=", "owner": "nix-community", "repo": "NixOS-WSL", - "rev": "203a7b463f307c60026136dd1191d9001c43457f", + "rev": "7c0c0f4c3a51761434f18209fa9499b8579ff730", "type": "github" }, "original": { @@ -730,11 +730,11 @@ }, "nixpkgs-latest": { "locked": { - "lastModified": 1756326156, - "narHash": "sha256-EvRCnKAE5oL9wOIT/LrA5+pJVpTvhH71OReJDTOZDyk=", + "lastModified": 1759851983, + "narHash": "sha256-5tYg4TRly5I8LOagO5X0dArUOht023mevqr3qlVghb0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "636dea4f2cd65b8c558149a957423da47c1cbc95", + "rev": "7eb8a3cd795b18e7ac26c9cba411e1f588257a62", "type": "github" }, "original": { @@ -762,11 +762,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1756266583, - "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", + "lastModified": 1759733170, + "narHash": "sha256-TXnlsVb5Z8HXZ6mZoeOAIwxmvGHp1g4Dw89eLvIwKVI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", + "rev": "8913c168d1c56dc49a7718685968f38752171c3b", "type": "github" }, "original": { @@ -793,11 +793,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1756266583, - "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", + "lastModified": 1759381078, + "narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", + "rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee", "type": "github" }, "original": { @@ -825,11 +825,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1754725699, - "narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=", + "lastModified": 1759733170, + "narHash": "sha256-TXnlsVb5Z8HXZ6mZoeOAIwxmvGHp1g4Dw89eLvIwKVI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054", + "rev": "8913c168d1c56dc49a7718685968f38752171c3b", "type": "github" }, "original": { @@ -841,11 +841,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1756217674, - "narHash": "sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo=", + "lastModified": 1759735786, + "narHash": "sha256-a0+h02lyP2KwSNrZz4wLJTu9ikujNsTWIC874Bv7IJ0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4e7667a90c167f7a81d906e5a75cba4ad8bee620", + "rev": "20c4598c84a671783f741e02bf05cbfaf4907cff", "type": "github" }, "original": { @@ -856,11 +856,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1752596105, - "narHash": "sha256-lFNVsu/mHLq3q11MuGkMhUUoSXEdQjCHvpReaGP1S2k=", + "lastModified": 1756288264, + "narHash": "sha256-Om8adB1lfkU7D33VpR+/haZ2gI5r3Q+ZbIPzE5sYnwE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dab3a6e781554f965bde3def0aa2fda4eb8f1708", + "rev": "ddd1826f294a0ee5fdc198ab72c8306a0ea73aa9", "type": "github" }, "original": { @@ -934,11 +934,11 @@ ] }, "locked": { - "lastModified": 1755960406, - "narHash": "sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs=", + "lastModified": 1758108966, + "narHash": "sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "e891a93b193fcaf2fc8012d890dc7f0befe86ec2", + "rev": "54df955a695a84cd47d4a43e08e1feaf90b1fd9b", "type": "github" }, "original": { @@ -1022,11 +1022,11 @@ ] }, "locked": { - "lastModified": 1752633862, - "narHash": "sha256-Bj7ozT1+5P7NmvDcuAXJvj56txcXuAhk3Vd9FdWFQzk=", + "lastModified": 1756348497, + "narHash": "sha256-xJp3VnoYh4kpsaKFO/7SsGbwOz7pI1ZmjbqpXEuR2cw=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "8668ca94858206ac3db0860a9dec471de0d995f8", + "rev": "0adf92c70d23fb4f703aea5d3ebb51ac65994f7f", "type": "github" }, "original": { @@ -1058,11 +1058,11 @@ ] }, "locked": { - "lastModified": 1754988908, - "narHash": "sha256-t+voe2961vCgrzPFtZxha0/kmFSHFobzF00sT8p9h0U=", + "lastModified": 1759635238, + "narHash": "sha256-UvzKi02LMFP74csFfwLPAZ0mrE7k6EiYaKecplyX9Qk=", "owner": "Mic92", "repo": "sops-nix", - "rev": "3223c7a92724b5d804e9988c6b447a0d09017d48", + "rev": "6e5a38e08a2c31ae687504196a230ae00ea95133", "type": "github" }, "original": { @@ -1164,11 +1164,11 @@ "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1756309929, - "narHash": "sha256-udly1zNvxR6UKFZSkbutSEZ9EihUd+pPCDBaseppB5s=", + "lastModified": 1759765472, + "narHash": "sha256-YYfXBsw57fH6s/hXR24rv8/nr35oQl1CBH7p4WcK8RA=", "owner": "sxyazi", "repo": "yazi", - "rev": "dd7afaa64aa54fac5bd30404eb44ccd9d68f31c5", + "rev": "554cb52cc581df9a41e0778ebd448925cd3aca55", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index e7cb16a..dd1b337 100644 --- a/flake.nix +++ b/flake.nix @@ -74,7 +74,7 @@ NxXPS = make-nixos-system "NxXPS" { enable = true; prime = true; }; NxNORTH = make-nixos-system "NxNORTH" { enable = true; prime = false; }; NxACE = make-nixos-system "NxACE" { enable = false; }; - NxWSL = make-nixos-wsl-system "NxWSL"; + NxDCS = make-nixos-wsl-system "NxDCS"; }; nixOnDroidConfigurations = let @@ -116,7 +116,7 @@ "${hyper-base.user}@NxNORTH" = make-home-configuration "NxNORTH" hyper-base.user { enable = true; prime = false; }; "${hyper-base.user}@NxACE" = make-home-configuration "NxACE" hyper-base.user { enable = false; }; - "${hyper-base.user}@NxWSL" = make-shell-configuration { user = hyper.user; host = "NxWSL"; inherit pkgs; }; + "${hyper-base.user}@NxDCS" = make-shell-configuration "NxDCS" hyper-base.user; }; }; } diff --git a/git-crypt/secrets.nix b/git-crypt/secrets.nix index ef17bb3..63bb135 100644 Binary files a/git-crypt/secrets.nix and b/git-crypt/secrets.nix differ diff --git a/home-modules/bar/hyprpanel.nix b/home-modules/bar/hyprpanel.nix index 128719d..ab9267b 100644 --- a/home-modules/bar/hyprpanel.nix +++ b/home-modules/bar/hyprpanel.nix @@ -27,7 +27,7 @@ "custom/caldav_event" = { execute = "caldav_event"; label = "󰃰 {}"; - interval = 1000; + interval = 60000; hideOnEmpty = false; actions = {}; }; @@ -51,12 +51,12 @@ # "bluetooth" "network" "windowtitle" + "media" ]; "middle" = [ "workspaces" ]; "right" = [ "submap" "custom/caldav_event" - "media" "custom/cclock" "notifications" "systray" diff --git a/home-modules/calendar.nix b/home-modules/calendar.nix index 0ae3cd7..7808e18 100644 --- a/home-modules/calendar.nix +++ b/home-modules/calendar.nix @@ -47,6 +47,13 @@ read-only = true; type = "ics"; } + { + name = "Worlds"; + url = "https://zlypher.github.io/lol-events/cal/league-of-legends-world-championship.ical"; + color = "#7b99a6"; + read-only = true; + type = "ics"; + } { name = "Feiertage Hessen"; url = "https://ics.tools/Feiertage/hessen.ics"; @@ -54,13 +61,6 @@ read-only = true; type = "ics"; } - # { - # name = "Handball Männer"; - # url = "http://i.cal.to/ical/108/dhb/handball-nationalmannschaft/c687e97f.bc7c3eb6-11a0e356.ics"; - # color = "#880023"; - # read-only = true; - # type = "ics"; - # } ]; default_set = { # name = diff --git a/home-modules/chatterino.nix b/home-modules/chatterino.nix index 2faa000..c2370e4 100644 --- a/home-modules/chatterino.nix +++ b/home-modules/chatterino.nix @@ -6,7 +6,7 @@ let # "asmongold" # "Caedrel" # "EintrachtSpandau" - "GamesDoneQuick" + # "GamesDoneQuick" "Odoamne" "iwdominate" "imls" @@ -20,13 +20,13 @@ let "lol_nemesis" # "NASA" "NoWay4u_Sir" - "OfficialMikeShinoda" + # "OfficialMikeShinoda" "Rekkles" "riotgames" "thebausffs" "ThePrimeagen" "Tolkin" - # "TSM_ImperialHal" + "imperialhal__" "velja_lol" # "Xisuma" "zackrawrr" @@ -46,7 +46,7 @@ let }; }; in { - sops.secrets."streamlink/twitch-oauth" = { path = "%r/secrets/streamlink/twich-oauth"; }; + # sops.secrets."streamlink/twitch-oauth" = { path = "%r/secrets/streamlink/twich-oauth"; }; home = { packages = with pkgs; [ @@ -207,7 +207,7 @@ in { "external": { "streamlink": { "quality": "", - "options": "--config ${hyper.home}.config/streamlink/config" + "options": "--config ${hyper.home}/.config/streamlink/config" } } } diff --git a/home-modules/color-pallete.nix b/home-modules/color-pallete.nix index ea4696c..30616cc 100644 --- a/home-modules/color-pallete.nix +++ b/home-modules/color-pallete.nix @@ -3,20 +3,30 @@ home.file.".config/color-pallete.html".text = with rice.color; let cb = color-set: color-name: size: /* html */ ''
+
+

${color-name}.darker

+

${color-set.darker}

+
-

${color-name}.dark

-

${color-set.dark}

+

${color-name}.dark

+

${color-set.dark}

${color-name}.base

${color-set.base}

-

${color-name}.bright

-

${color-set.bright}

+

${color-name}.bright

+

${color-set.bright}

+
+
+

${color-name}.brighter

+

${color-set.brighter}

''; + rgb = rice.lib.hex-to-rgb-comma-string; + s = builtins.toString; in /* html */ '' @@ -30,27 +40,26 @@ padding: 0px; } html { - background: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}); - padding: auto; + background: transparent; } body { font-family: ${rice.font.base.name}; color: ${foreground}; width: fit-content; margin: 10px auto 10px auto; - background: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}); - border: ${builtins.toString rice.border-width}px solid ${border}; - border-radius: ${builtins.toString rice.rounding}px; - padding: ${builtins.toString rice.gap-size}px; + background: rgba(${rgb background},${s rice.transparency}); + border: ${s rice.border-width}px solid ${border}; + border-radius: ${s rice.rounding}px; + padding: ${s rice.gap-size}px; } h1 { - margin: ${builtins.toString rice.gap-size}px; + margin: ${s rice.gap-size}px; } .color-container { font-family: ${rice.font.code.name}; display: flex; - gap: ${builtins.toString rice.gap-size}px; - margin: ${builtins.toString rice.gap-size}px; + gap: ${s rice.gap-size}px; + margin: ${s rice.gap-size}px; } .color-box { width: 200px; @@ -58,7 +67,7 @@ flex-direction: column; justify-content: center; align-items: center; - border-radius: ${builtins.toString rice.rounding}px; + border-radius: ${s rice.rounding}px; } @@ -67,8 +76,9 @@ ${cb accent "accent" 100} ${cb secondary "secondary" 100} ${cb tertiary "tertiary" 100} - ${cb weird "weird" 100} - ${cb special "special" 100} + ${cb weird "weird" 80} + ${cb special "special" 80} + ${cb subtle "subtle" 80}
${cb positive "positive" 70} ${cb negative "negative" 70} diff --git a/home-modules/firefox.nix b/home-modules/firefox.nix index 363e78a..6c4362f 100644 --- a/home-modules/firefox.nix +++ b/home-modules/firefox.nix @@ -1,7 +1,4 @@ -{ pkgs, ... }@all: with all; -# browser.tabs.allow_transparent_browser -# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/ -{ +{ pkgs, ... }@all: with all; { programs.firefox.profiles."{hyper.user}".settings = { "widget.use-xdg-desktop-portal.file-picker" = 1; }; @@ -9,272 +6,11 @@ packages = with pkgs; [ firefox ]; - file = with rice.color; let - blur = builtins.toString 20; - in { - ".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = /* css */ '' - :root{ - /* Popup panels */ - --arrowpanel-background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; - --arrowpanel-border-color : ${border} !important; - --arrowpanel-color : ${secondary.base} !important; - --arrowpanel-dimmed : rgba(${rice.lib.hex-to-rgb-comma-string background},0.4) !important; - --arrowpanel-dimmed-further : rgba(${rice.lib.hex-to-rgb-comma-string background},0.6) !important; - --arrowpanel-dimmed-even-further : rgba(${rice.lib.hex-to-rgb-comma-string background},0.8) !important; - - /* Autocomplete */ - --autocomplete-popup-background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; - --autocomplete-popup-color : ${foreground} !important; - --autocomplete-popup-highlight-background: ${accent.base} !important; - --autocomplete-popup-highlight-color : ${foreground} !important; - - /* Toolbar background */ - --toolbar-bgcolor : rgba(${rice.lib.hex-to-rgb-comma-string background},0.4) !important; - --toolbar-non-lwt-bgcolor : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; - --toolbar-non-lwt-bgimage : none !important; - --toolbar-color : ${foreground} !important; - - /* Tabs */ - --tab-selected-bgcolor : ${accent.base} !important; - --tabs-border-color : ${border} !important; - --tab-line-color : ${accent.base} !important; - --tab-loader-size : 16px !important; - - /* Sidebar */ - --lwt-sidebar-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; - --lwt-sidebar-text-color : ${foreground} !important; - --sidebar-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; - --sidebar-text-color : ${foreground} !important; - --sidebar-border-color : ${border} !important; - - /* URL bar */ - --urlbar-popup-url-color : ${foreground} !important; - --urlbar-popup-action-color : ${secondary.base} !important; - --toolbar-field-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; - --toolbar-field-focus-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; - --toolbar-field-color : ${accent.base} !important; - --toolbar-field-focus-color : ${foreground} !important; - --toolbar-field-focus-border-color : ${accent.base} !important; - - /* Buttons */ - --toolbarbutton-icon-fill : ${foreground} !important; - --toolbarbutton-hover-background : rgba(${rice.lib.hex-to-rgb-comma-string accent.base}, 0.2) !important; - --toolbarbutton-active-background : rgba(${rice.lib.hex-to-rgb-comma-string accent.base}, 0.4) !important; - - /* Notification and panel */ - --panel-disabled-color : rgba(${rice.lib.hex-to-rgb-comma-string foreground},0.3) !important; - --panel-separator-color : ${border} !important; - - /* New tab page */ - --newtab-background-color : ${background} !important; - --newtab-background-color-secondary : ${secondary.dark} !important; - --newtab-text-primary-color : ${foreground} !important; - --newtab-text-secondary-color : ${secondary.base} !important; - --newtab-search-icon-color : ${accent.base} !important; - - --tabpanel-background-color : transparent !important; - background : linear-gradient(180deg,rgba(${rice.lib.hex-to-rgb-comma-string secondary.dark}, ${builtins.toString rice.transparency}) 0%, rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) 100%) !important; - } - .tabbrowser-tab[selected="true"] { - color: ${background} !important; - } - - #appcontent { - background: transparent !important; - } - #navigator-toolbox { - --tabs-border-color: transparent !important; - } - #toolbar-menubar, #TabsToolbar, #PersonalToolbar, #navigator-toolbox, #sidebar-box { - background-color: transparent !important; - -moz-appearance: none !important; - background-image: none !important; - } - - window, #nav-bar{ - background-color: transparent !important; - -moz-appearance: none !important; - background-image: none !important; - } - ''; - - ".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = /* css */ '' - /* Removes the white loading page */ - /* url(about:newtab), url(about:home) */ - @-moz-document url(about:blank) { - html:not(#ublock0-epicker), html:not(#ublock0-epicker) body, #newtab-customize-overlay { - background: ${background} !important; - } - } - - /* Sets up minimal incognito scrollbar */ - @-moz-document url(about:privatebrowsing) { - :root{ - scrollbar-width: thin !important; - scrollbar-color: rgb(161, 161, 161) transparent !important; - } - } - - /* new-tab */ - @-moz-document url-prefix(about:home), url-prefix(about:newtab) { - :root{ - --newtab-background-color-secondary: ${background} !important; - } - body, html { - background: transparent !important; - } - .tile, .search-handoff-button { - border: ${builtins.toString rice.border-width}px solid ${border} !important; - } - } - - @-moz-document domain(reddit.com) { - header { - background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important; - backdrop-filter: blur(${blur}px); - } - body, html, .bg-neutral-background, .threadline, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar, comment-body-header, shreddit-comment-tree{ - background-color: transparent !important; - } - } - - @-moz-document domain(reddit.com) { - header { - background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important; - } - body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{ - background-color: transparent !important; - } - } - - @-moz-document domain(google.com) { - .sfbg { - background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important; - backdrop-filter: blur(${blur}px); - } - body, html, div#search > * { - background-color: transparent !important; - border: ${builtins.toString rice.border-width} solid ${border}; - } - .g, .appbar { - background-color: transparent !important; - border: ${builtins.toString rice.border-width} solid ${border}; - } - div#rso { - * { - background-color: transparent !important; - border: ${builtins.toString rice.border-width} solid ${border}; - } - } - div#cnt > div { - - } - } - - @media (prefers-color-scheme: dark) { - :root .theme-system { - --color-bg: transtparent !important; - --color-text: ${rice.color.foreground} - } - } - - @-moz-document domain(developer.mozilla.org) { - html, body { - background-color: transparent !important; - } - .top-navigation, .article-actions-container { - background-color: rgba(0,0,0,1) !important; - backdrop-filter: blur(100px); - border-radius: ${builtins.toString rice.rounding}px; - } - } - - @-moz-document domain(github.com) { - body, html, header, #repository-container-header, .bgColor-muted, section { - background-color: transparent !important; - } - } - @-moz-document domain(youtube.com) { - body, html, div#content, ytd-app, #frosted-glass.with-chipbar.ytd-app, ytd-shorts[is-dark] #cinematic-shorts-scrim.ytd-shorts { - background-color: transparent !important; - } - #background.ytd-masthead, div#background { - background-color: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; - backdrop-filter: blur(100px); - } - * { - --yt-spec-base-background: transparent; - --yt-spec-raised-background: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; - --yt-spec-menu-background: rgba(${rice.lib.hex-to-rgb-comma-string accent.dark}, ${builtins.toString rice.transparency}) !important; - --yt-spec-inverted-background: rgba(${rice.lib.hex-to-rgb-comma-string secondary.dark}, ${builtins.toString rice.transparency}) !important; - } - } - - @-moz-document domain(mynixos.com) { - body, html { - background-color: transparent !important; - } - header, footer { - background-color: rgba(0,0,0,1) !important; - backdrop-filter: blur(100px); - border-radius: ${builtins.toString rice.rounding}px; - } - } - - @-moz-document domain(moodle.informatik.tu-darmstadt.de) { - body, html , .main-inner, .main-inner * { - background-color: transparent !important; - } - .bg-primary { - background-color: rgba(${rice.lib.hex-to-rgb-comma-string accent.base},0.5) !important; - } - } - - @-moz-document url-prefix("https://nx2.site/") { - html { - background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important; - background-repeat: repeat !important; - background-size: 2vmin 2vmin !important; - } - } - - @-moz-document url-prefix("pw.nx2.site") { - html { - background: black; - } - } - - @-moz-document url-prefix("pw.nx2.site") { - html { - background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important; - background-repeat: repeat !important; - background-size: 2vmin 2vmin !important; - } - body, .tw-bg-background-alt3, main, .card-header, .card-body, .modal-body { - background-color: transparent !important; - } - .modal-open, .modal-header, form.modal-content, .modal-footer { - background-color: rgba(0,0,0,0.8) !important; - backdrop-filter: blur(5px); - } - .cdk-virtual-scroll-content-wrapper, .card, .tw-bg-background, .modal-content { - background-color: rgba(0,0,0,0.8) !important; - border-radius: 10px !important; - border: ${toString rice.border-width}px solid ${border} !important; - } - } - - ''; - # @-moz-document domain(chatgpt.com) { - # body, html , .bg-token-sidebar-surface-primary { - # background-color: transparent !important; - # } - # .bg-token-main-surface-primary { - # background-color: rgba(0,0,0,1) !important; - # backdrop-filter: blur(100px) !important; - # border-radius: ${builtins.toString rice.rounding}px !important; - # } - # } + file = { + ".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = import ./userChrome.nix rice; + ".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = import ./userContent.nix rice; }; }; } +# browser.tabs.allow_transparent_browser +# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/ diff --git a/home-modules/firefox/firefox.nix b/home-modules/firefox/firefox.nix new file mode 100644 index 0000000..211cce0 --- /dev/null +++ b/home-modules/firefox/firefox.nix @@ -0,0 +1,19 @@ +{ pkgs, ... }@all: with all; +# browser.tabs.allow_transparent_browser +# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/ +{ + programs.firefox.profiles."{hyper.user}".settings = { + "widget.use-xdg-desktop-portal.file-picker" = 1; + }; + home = { + packages = with pkgs; [ + firefox + ]; + file = with rice.color; let + blur = builtins.toString 20; + f = rice.lib.hex-to-rgb-comma-string; + in { + ".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = import ./userChrome.nix rice; + ".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = import ./userContent.nix rice; }; + }; +} diff --git a/home-modules/firefox/userChrome.nix b/home-modules/firefox/userChrome.nix new file mode 100644 index 0000000..27b2309 --- /dev/null +++ b/home-modules/firefox/userChrome.nix @@ -0,0 +1,92 @@ +rice: with rice.color; let + f = rice.lib.hex-to-rgb-comma-string; + # blur = builtins.toString 20; +in /* css */ '' + :root{ + /* Popup panels */ + --arrowpanel-background : rgba(${f background}, ${builtins.toString rice.transparency}) !important; + --arrowpanel-border-color : ${border} !important; + --arrowpanel-color : ${secondary.base} !important; + --arrowpanel-dimmed : rgba(${f background},0.4) !important; + --arrowpanel-dimmed-further : rgba(${f background},0.6) !important; + --arrowpanel-dimmed-even-further : rgba(${f background},0.8) !important; + + /* Autocomplete */ + --autocomplete-popup-background : rgba(${f background}, ${builtins.toString rice.transparency}) !important; + --autocomplete-popup-color : ${foreground} !important; + --autocomplete-popup-highlight-background: ${accent.base} !important; + --autocomplete-popup-highlight-color : ${foreground} !important; + + /* Toolbar background */ + --toolbar-bgcolor : transparent !important; + --toolbar-non-lwt-bgcolor : rgba(${f background}, ${builtins.toString rice.transparency}) !important; + --toolbar-non-lwt-bgimage : none !important; + --toolbar-color : ${foreground} !important; + + /* Tabs */ + --tab-selected-bgcolor : ${accent.base} !important; + --tabs-border-color : ${border} !important; + --tab-line-color : ${accent.base} !important; + --tab-loader-size : 16px !important; + + /* Sidebar */ + --lwt-sidebar-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important; + --lwt-sidebar-text-color : ${foreground} !important; + --sidebar-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important; + --sidebar-text-color : ${foreground} !important; + --sidebar-border-color : ${border} !important; + + /* URL bar */ + --urlbar-popup-url-color : ${foreground} !important; + --urlbar-popup-action-color : ${secondary.base} !important; + --toolbar-field-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important; + --toolbar-field-focus-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important; + --toolbar-field-color : ${accent.base} !important; + --toolbar-field-focus-color : ${foreground} !important; + --toolbar-field-focus-border-color : ${accent.base} !important; + + /* Buttons */ + --toolbarbutton-icon-fill : ${foreground} !important; + --toolbarbutton-hover-background : rgba(${f accent.base}, 0.2) !important; + --toolbarbutton-active-background : rgba(${f accent.base}, 0.4) !important; + + /* Notification and panel */ + --panel-disabled-color : rgba(${f foreground},0.3) !important; + --panel-separator-color : ${border} !important; + + /* New tab page */ + --newtab-background-color : transparent !important; + --newtab-background-color-secondary : ${secondary.dark} !important; + --newtab-text-primary-color : ${foreground} !important; + --newtab-text-secondary-color : ${secondary.base} !important; + --newtab-search-icon-color : ${accent.base} !important; + --newtab-background-card : ${accent.dark} !important; + --tabpanel-background-color : transparent !important; + + background : linear-gradient(180deg,rgba(${f secondary.dark}, ${builtins.toString rice.transparency}) 0%, rgba(${f accent.dark}, ${builtins.toString rice.transparency}) 100%) !important; + } + .tabbrowser-tab[selected="true"] { + color: ${background} !important; + } + hbox#browser { + backround-color: transparent: !important; + } + + #appcontent { + background: transparent !important; + } + #navigator-toolbox { + --tabs-border-color: transparent !important; + } + #toolbar-menubar, #TabsToolbar, #PersonalToolbar, #navigator-toolbox, #sidebar-box { + background-color: transparent !important; + -moz-appearance: none !important; + background-image: none !important; + } + + window, #nav-bar{ + background-color: transparent !important; + -moz-appearance: none !important; + background-image: none !important; + } +'' diff --git a/home-modules/firefox/userContent.nix b/home-modules/firefox/userContent.nix new file mode 100644 index 0000000..4fa10d9 --- /dev/null +++ b/home-modules/firefox/userContent.nix @@ -0,0 +1,226 @@ +rice: with rice.color; let + f = rice.lib.hex-to-rgb-comma-string; + blur = builtins.toString 20; +in /* css */ '' + /* Removes the white loading page */ + /* url(about:newtab), url(about:home) */ + @-moz-document url(about:blank) { + html:not(#ublock0-epicker), html:not(#ublock0-epicker) body, #newtab-customize-overlay { + background: transparent !important; + } + } + + /* Sets up minimal incognito scrollbar */ + @-moz-document url(about:privatebrowsing) { + :root{ + scrollbar-width: thin !important; + scrollbar-color: rgb(161, 161, 161) transparent !important; + } + } + + /* new-tab */ + @-moz-document url-prefix(about:home), url-prefix(about:newtab) { + :root{ + --newtab-background-color-secondary: rgba(${f background},0.5) !important; + } + body, html { + background: transparent !important; + } + .tile, .search-handoff-button { + border: ${builtins.toString rice.border-width}px solid ${border} !important; + } + } + + @-moz-document domain(reddit.com) { + header { + background-color: rgba(${f background},${builtins.toString rice.transparency}) !important; + backdrop-filter: blur(${blur}px); + } + body, html, .bg-neutral-background, .threadline, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar, comment-body-header, shreddit-comment-tree, #flex-left-nav-container { + background-color: transparent !important; + } + #main-content { + background-color: rgba(${f background},0.5)!important; + } + + } + + @-moz-document domain(reddit.com) { + header { + background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important; + } + body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{ + background-color: transparent !important; + } + } + + @-moz-document domain(google.com) { + .sfbg { + background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important; + backdrop-filter: blur(${blur}px); + } + body, html, div#search > * { + background-color: transparent !important; + border: ${builtins.toString rice.border-width} solid ${border}; + } + .g, .appbar { + background-color: transparent !important; + border: ${builtins.toString rice.border-width} solid ${border}; + } + div#rso { + * { + background-color: transparent !important; + border: ${builtins.toString rice.border-width} solid ${border}; + } + } + div#cnt > div { + + } + } + + @media (prefers-color-scheme: dark) { + :root .theme-system { + --color-bg: transtparent !important; + --color-text: ${rice.color.foreground} + } + } + + @-moz-document domain(developer.mozilla.org) { + html, body { + background-color: transparent !important; + } + .top-navigation, .article-actions-container { + background-color: rgba(0,0,0,1) !important; + backdrop-filter: blur(100px); + border-radius: ${builtins.toString rice.rounding}px; + } + } + + @-moz-document domain(github.com) { + body, html, header, #repository-container-header, .bgColor-muted, section { + background-color: transparent !important; + } + } + @-moz-document domain(youtube.com) { + body, html, div#content, ytd-app, #frosted-glass.with-chipbar.ytd-app, ytd-shorts[is-dark] #cinematic-shorts-scrim.ytd-shorts { + background-color: transparent !important; + } + #background.ytd-masthead, div#background { + background-color: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; + backdrop-filter: blur(100px); + } + * { + --yt-spec-base-background: transparent; + --yt-spec-raised-background: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; + --yt-spec-menu-background: rgba(${rice.lib.hex-to-rgb-comma-string accent.dark}, ${builtins.toString rice.transparency}) !important; + --yt-spec-inverted-background: rgba(${rice.lib.hex-to-rgb-comma-string secondary.dark}, ${builtins.toString rice.transparency}) !important; + } + } + + @-moz-document domain(mynixos.com) { + body, html { + background-color: transparent !important; + } + header, footer { + background-color: rgba(0,0,0,1) !important; + backdrop-filter: blur(100px); + border-radius: ${builtins.toString rice.rounding}px; + } + } + + @-moz-document domain(moodle.informatik.tu-darmstadt.de) { + body, html , .main-inner, .main-inner * { + background-color: transparent !important; + } + .bg-primary { + background-color: rgba(${rice.lib.hex-to-rgb-comma-string accent.base},0.5) !important; + } + } + @-moz-document domain(wikipedia.org) { + body, html, div.mw-page-container, .vector-header, .mw-header { + background-color: transparent !important; + } + :root { + --color-base: ${foreground} !important; + --color-base--hover: ${accent.bright} !important; + --color-emphasized: ${accent.base} !important; + --color-progressive: ${accent.base} !important; + --color-progressive--hover: ${accent.brighter} !important; + --color-progressive--active: ${secondary.bright} !important; + --color-destructive: ${negative.base} !important; + --color-destructive--hover: ${negative.brighter} !important; + --color-destructive--active: ${negative.bright} !important; + --color-visited: ${secondary.base} !important; + --color-visited--hover: ${secondary.brighter} !important; + --color-visited--active: ${secondary.bright} !important; + --color-error: ${negative.base} !important; + --color-error--hover: ${negative.bright} !important; + --color-error--active: ${negative.bright} !important; + --color-warning: ${weird.base} !important; + --color-success: ${positive.base} !important; + --color-notice: ${special.base} !important; + --color-content-added: ${positive.base} !important; + --color-content-removed: ${negative.base} !important; + --color-base--subtle: ${accent.dark} !important; + --box-shadow-color-base: ${black.base} !important; + --background-color-base: transparent !important; + --background-color-neutral: transparent !important; + --background-color-neutral-subtle: transparent !important; + --background-color-interactive: ${accent.darker} !important; + --background-color-interactive--hover: ${accent.dark} !important; + --background-color-interactive--active: ${secondary.dark} !important; + --background-color-interactive-subtle: ${subtle.darker} !important; + --background-color-interactive-subtle--hover: ${subtle.dark} !important; + --background-color-interactive-subtle--active: ${subtle.base} !important; + --border-color-base: ${border} !important; + --border-color-emphasized: ${border2} !important; + --border-color-subtle: ${subtle.base} !important; + --border-color-muted: ${subtle.dark} !important; + } + } + + + @-moz-document url-prefix("https://nx2.site/") { + html { + background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important; + background-repeat: repeat !important; + background-size: 2vmin 2vmin !important; + } + } + + @-moz-document url-prefix("pw.nx2.site") { + html { + background: black; + } + } + + @-moz-document url-prefix("pw.nx2.site") { + html { + background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important; + background-repeat: repeat !important; + background-size: 2vmin 2vmin !important; + } + body, .tw-bg-background-alt3, main, .card-header, .card-body, .modal-body { + background-color: transparent !important; + } + .modal-open, .modal-header, form.modal-content, .modal-footer { + background-color: rgba(0,0,0,0.8) !important; + backdrop-filter: blur(5px); + } + .cdk-virtual-scroll-content-wrapper, .card, .tw-bg-background, .modal-content { + background-color: rgba(0,0,0,0.8) !important; + border-radius: 10px !important; + border: ${toString rice.border-width}px solid ${border} !important; + } + } +'' + # @-moz-document domain(chatgpt.com) { + # body, html , .bg-token-sidebar-surface-primary { + # background-color: transparent !important; + # } + # .bg-token-main-surface-primary { + # background-color: rgba(0,0,0,1) !important; + # backdrop-filter: blur(100px) !important; + # border-radius: ${builtins.toString rice.rounding}px !important; + # } + # } diff --git a/home-modules/fish.nix b/home-modules/fish.nix index 6e0b154..1fe1333 100644 --- a/home-modules/fish.nix +++ b/home-modules/fish.nix @@ -3,33 +3,35 @@ home.packages = with pkgs; [ any-nix-shell - (writeShellScriptBin "nxfetch" '' + (writeShellScriptBin "nxfetch" /* bash */ '' logo=$(echo -e " - ⠀⠀⠀⠀⠰⣿⣧⠀⠀⠹⣿⣧⠀⣴⣿⠆⠀⠀⠀⠀ OS - ⠀⠀⠀⣀⣀⣹⣿⣧⣀⣀⠘⣿⣿⣿⠏⠀⠀⠀⠀⠀ DE/WM - ⠀⠀⠼⠿⠿⠿⠿⠿⠿⠿⠦⠘⣿⣿⡀⠀⣼⣧⠀⠀ TERM - ⠀⠀⠀⠀⢠⣶⡶⠀⠀⠀⠀⠀⠈⠿⢁⣼⣿⠋⠀⠀ SHELL - ⢾⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⡷ ISHELL - ⠀⠀⣠⣿⡟⢁⣶⡀⠀⠀⠀⠀⠀⠾⠿⠃⠀⠀⠀⠀ KERNEL - ⠀⠀⢻⡟⠀⠈⢿⣿⡄⠲⣶⣶⣶⣶⣶⣶⣶⡖⠀⠀ EDITOR - ⠀⠀⠀⠀⠀⣰⣿⣿⣿⡄⠉⠉⢻⣿⣏⠉⠉⠀⠀⠀ TFM - ⠀⠀⠀⠀⠰⣿⠟⠀⢻⣿⣆⠀⠀⠻⣿⠆⠀⠀⠀⠀ PROMPT + ⠀⠀⠀⠀⠰⣿⣧⠀⠀⠹⣿⣧⠀⣴⣿⠆⠀⠀⠀⠀ OS + ⠀⠀⠀⣀⣀⣹⣿⣧⣀⣀⠘⣿⣿⣿⠏⠀⠀⠀⠀⠀ DE/WM + ⠀⠀⠼⠿⠿⠿⠿⠿⠿⠿⠦⠘⣿⣿⡀⠀⣼⣧⠀⠀ TERM + ⠀⠀⠀⠀⢠⣶⡶⠀⠀⠀⠀⠀⠈⠿⢁⣼⣿⠋⠀⠀ SHELL + ⢾⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⡷ ISHELL + ⠀⠀⣠⣿⡟⢁⣶⡀⠀⠀⠀⠀⠀⠾⠿⠃⠀⠀⠀⠀ KERNEL + ⠀⠀⢻⡟⠀⠈⢿⣿⡄⠲⣶⣶⣶⣶⣶⣶⣶⡖⠀⠀ EDITOR + ⠀⠀⠀⠀⠀⣰⣿⣿⣿⡄⠉⠉⢻⣿⣏⠉⠉⠀⠀⠀ TFM + ⠀⠀⠀⠀⠰⣿⠟⠀⢻⣿⣆⠀⠀⠻⣿⠆⠀⠀⠀⠀ PROMPT - " | lolcat --force 2> /dev/null) + " | lolcat --force 2> /dev/null) - msg=" - $(echo -e "$logo" | sed -n 3p): $(cat /etc/*-release | grep PRETTY_NAME | cut -c 14- | rev | cut -c 2- | rev) - $(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^} - $(echo -e "$logo" | sed -n 5p): ''${TERM^} - $(echo -e "$logo" | sed -n 6p): $(bash --version | head --lines 1 | cut -f -4 -d' ' | sed -E 's-(.*?), version (.*?)\(.*-\1 \2-g') - $(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\U&/') - $(echo -e "$logo" | sed -n 8p): ''$(uname -r) - $(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | sed 's/./\U&/') - $(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g') - $(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1 | sed 's/./\U&/') - " - echo -e "$msg" + release_line=$(cat /etc/*-release 2> /dev/null || echo 'PRETTY_NAME="[No Release]"') + + msg=" + $(echo -e "$logo" | sed -n 3p): $(echo "$release_line" | grep PRETTY_NAME | cut -c 14- | rev | cut -c 2- | rev) + $(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^} + $(echo -e "$logo" | sed -n 5p): ''${TERM^} + $(echo -e "$logo" | sed -n 6p): $(bash --version | head --lines 1 | cut -f -4 -d' ' | sed -E 's-(.*?), version (.*?)\(.*-\1 \2-g') + $(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\U&/') + $(echo -e "$logo" | sed -n 8p): ''$(uname -r | sed -E 's=(.+-.+-.+-.+)-.+=\1=g') + $(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | sed 's/./\U&/') + $(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g') + $(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1 | sed 's/./\U&/') + " + echo -e "$msg" '') ]; diff --git a/home-modules/git.nix b/home-modules/git.nix index eda9977..1e9d2d5 100644 --- a/home-modules/git.nix +++ b/home-modules/git.nix @@ -21,16 +21,17 @@ }; extraConfig = { credential = { - "https://git.da.dicos.de".username = lib.mkIf (hyper.host =="NxWSL") "lkurzweg"; - "https://git.da.dicos.de".password = lib.mkIf (hyper.host =="NxWSL") "Test"; + "https://git.da.dicos.de".username = lib.mkIf (hyper.host =="NxDCS") "lkurzweg"; + "https://git.da.dicos.de".password = lib.mkIf (hyper.host =="NxDCS") "Test"; }; - url."ssh://git@git.da.dicos.de/".insteadOf = lib.mkIf (hyper.host =="NxWSL") "https://git.da.dicos.de/"; + url."ssh://git@git.da.dicos.de/".insteadOf = lib.mkIf (hyper.host =="NxDCS") "https://git.da.dicos.de/"; url."ssh://git@github.com/".insteadOf = "https://github.com/"; pull.rebase = false; # true }; }; programs.lazygit = { enable = true; + package = pkgs.lazygit; settings = { windowSize = "normal"; gui.theme = with rice.color; { diff --git a/home-modules/gpg.nix b/home-modules/gpg.nix index ddd18b0..4980f1b 100644 --- a/home-modules/gpg.nix +++ b/home-modules/gpg.nix @@ -1,16 +1,36 @@ -{ pkgs, ... }@all: with all; -{ - # there also is a system module - home.packages = with pkgs; [ - gnupg - gpg-tui - pinentry-all - ]; - - services.gpg-agent = let - min2sec = min: (min * 60); - in { +{ pkgs, ... }@all: with all; { + home.packages = with pkgs; [ pinentry-all ]; + programs.gpg = { enable = true; + package = pkgs.gnupg; + homedir = "${hyper.home}/vault/gnupg"; + settings = { + armor = true; + cert-digest-algo = "SHA512"; + charset = "utf-8"; + default-preference-list = "SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed"; + keyid-format = "0xlong"; + list-options = "show-uid-validity"; + no-comments = true; + no-emit-version = true; + no-greeting = true; + no-symkey-cache = true; + personal-cipher-preferences = "AES256 AES192 AES"; + personal-compress-preferences = "ZLIB BZIP2 ZIP Uncompressed"; + personal-digest-preferences = "SHA512 SHA384 SHA256"; + pinentry-mode = "loopback"; + require-cross-certification = true; + s2k-cipher-algo = "AES256"; + s2k-digest-algo = "SHA512"; + use-agent = true; + verify-options = "show-uid-validity"; + with-fingerprint = true; + }; + }; + services.gpg-agent = let + min2sec = min: (min * 60); + in { + enable = false; verbose = true; sshKeys = [ "97081264F7FD72D890D496E839AA9A4C7892A7D8" # Keygrip (not Fingerprint!) of [A] Subkey @@ -22,33 +42,5 @@ extraConfig = '' allow-loopback-pinentry ''; - } // (if (pkgs.version != "24.05") then { - pinentry = { - package = pkgs.pinentry; - program = "pinentry"; - }; - } else {}); - - home.file.".gnupg/gpg.conf".text = '' - personal-cipher-preferences AES256 AES192 AES - personal-digest-preferences SHA512 SHA384 SHA256 - personal-compress-preferences ZLIB BZIP2 ZIP Uncompressed - default-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed - cert-digest-algo SHA512 - s2k-digest-algo SHA512 - s2k-cipher-algo AES256 - charset utf-8 - no-comments - no-emit-version - no-greeting - keyid-format 0xlong - list-options show-uid-validity - verify-options show-uid-validity - with-fingerprint - require-cross-certification - no-symkey-cache - armor - use-agent - pinentry-mode loopback - ''; + }; } diff --git a/home-modules/helix.nix b/home-modules/helix.nix index a7fbd30..6b96360 100644 --- a/home-modules/helix.nix +++ b/home-modules/helix.nix @@ -436,8 +436,8 @@ fg = black.bright; }; "ui.virtual.inlay-hint" = { - fg = background; - bg = tertiary.dark; + fg = subtle.base; + bg = subtle.dark; }; "ui.virtual.ruler" = { bg = background; diff --git a/home-modules/hyprland.nix b/home-modules/hyprland.nix index 0e5cdfb..5cb951d 100644 --- a/home-modules/hyprland.nix +++ b/home-modules/hyprland.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }@all: with all; -let +{ pkgs, ... }@all: with all; let animation-speed = "5"; transparency = builtins.toString rice.transparency; terminal = "ghostty"; @@ -7,7 +6,7 @@ let monitors = { xps = { main = { name = "eDP-1"; resolution = "1920x1200"; position = "1920x1080"; scale = "1.0"; }; - second = { name = "DP-5"; resolution = "1920x1080"; position = "1920x0"; scale = "1.0"; }; + second = { name = "desc:Sony SONY TV 0x01010101"; resolution = "1920x1080"; position = "1920x0"; scale = "1.0"; }; third = { name = "DP-6"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; }; }; north = { @@ -15,12 +14,11 @@ let left = { name = "desc:Philips Consumer Electronics Company 273PLPH AU11423002132"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; }; # right = { name = "HDMI-A-2"; resolution = "1920x1080"; position = "4480x360"; scale = "1.0"; }; }; - ace = { - main = { name = "HDMI-A-1"; resolution = "3840x2160"; position = "0x0"; scale = "2.0"; }; - }; + ace.main = { name = "HDMI-A-1"; resolution = "3840x2160"; position = "0x0"; scale = "2.0"; }; }; in { home.packages = with pkgs; [ + xdg-desktop-portal-hyprland hyprland-protocols hyprlock hypridle @@ -258,16 +256,16 @@ in { "opacity ${transparency}, class:^(Code)$" "opacity ${transparency}, class:^(code-oss)$" "opacity ${transparency}, class:^(discord)$" - "opacity ${transparency}, class:^(vesktop)$" + # "opacity ${transparency}, class:^(vesktop)$" # "opacity ${transparency}, class:^(Element)$" "opacity ${transparency}, class:^(lutris)$" "opacity ${transparency}, class:^(neovide)$" # "opacity ${transparency}, class:^(obsidian)$" - "opacity ${transparency}, class:^(vesktop)$" "opacity ${transparency}, class:^(VSCodium)$" "opacity ${transparency}, title:^(wlogout)$" "opaque, title:^(GNU Image Manipulation Program)$" + "opaque, fullscreen:1" "pin, title:^(Picture-in-Picture)$" @@ -363,7 +361,7 @@ in { "SUPER, Q, killactive" "SUPER, W, exec, submap_indicator set '󰈹 '" "SUPER, W, submap, browserSM " - "SUPER, E, exec, element-desktop" + # "SUPER, E, exec, element-desktop" "SUPER, R, exec, rofi -show drun" # "SUPER, T, exec, alacritty" # "SUPER SHIFT, T, exec, alacritty -e sh -c "ssh nxace"" diff --git a/home-modules/nx-gcal-event.nix b/home-modules/nx-gcal-event.nix index 5c14580..f172ed5 100644 --- a/home-modules/nx-gcal-event.nix +++ b/home-modules/nx-gcal-event.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }@all: with all; +{ pkgs, ... }@all: with all; let sep = " "; in { home = { diff --git a/home-modules/opencode.nix b/home-modules/opencode.nix index 7865a61..4030b94 100644 --- a/home-modules/opencode.nix +++ b/home-modules/opencode.nix @@ -1,7 +1,7 @@ { pkgs, ... }@all: with all; { home = { packages = with pkgs; [ - latest.opencode + opencode ]; file.".config/opencode/opencode.json".text = let model = "qwen2.5-coder:7b"; diff --git a/home-modules/pkgs-list/desktop.nix b/home-modules/pkgs-list/desktop.nix index d718c52..ea526de 100644 --- a/home-modules/pkgs-list/desktop.nix +++ b/home-modules/pkgs-list/desktop.nix @@ -1,5 +1,6 @@ { pkgs, ... }@all: with all; { home.packages = with pkgs; [ + xdg-desktop-portal brightnessctl blueman fontpreview @@ -7,7 +8,7 @@ gsettings-desktop-schemas imv pavucontrol - # playerctl + playerctl swww wev wl-clipboard diff --git a/home-modules/pkgs-list/programs.nix b/home-modules/pkgs-list/programs.nix index c936a71..91f65d6 100644 --- a/home-modules/pkgs-list/programs.nix +++ b/home-modules/pkgs-list/programs.nix @@ -1,9 +1,12 @@ { pkgs, hyper, ... }: { home.packages = with pkgs; [ chromium + gnome-clocks + gnome-calculator + gnome-characters + gnome-2048 element-desktop qbittorrent - unstable.spotify wl-clipboard xfce.thunar ] ++ (if (hyper.host != "NxACE") then [ diff --git a/home-modules/programming.nix b/home-modules/programming.nix new file mode 100644 index 0000000..886de76 --- /dev/null +++ b/home-modules/programming.nix @@ -0,0 +1,12 @@ +{ ... }: { + imports = [ + ./programming/c.nix + ./programming/gleam.nix + ./programming/glsl.nix + ./programming/go.nix + ./programming/java.nix + ./programming/js.nix + ./programming/python.nix + ./programming/rust.nix + ]; +} diff --git a/home-modules/programming/rust.nix b/home-modules/programming/rust.nix new file mode 100644 index 0000000..d00e5dd --- /dev/null +++ b/home-modules/programming/rust.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }@all: with all; { + home = { + packages = with pkgs; [ + cargo + clippy + rustc + rustfmt + rust-analyzer + ]; + }; +} diff --git a/home-modules/rclone.nix b/home-modules/rclone.nix index fee8dfc..1ee415d 100644 --- a/home-modules/rclone.nix +++ b/home-modules/rclone.nix @@ -23,9 +23,7 @@ }; }; }; - secrets = { - pass = "/run/user/1000/secrets/copyparty/user-password/${hyper.user}"; - }; + secrets.pass = "/run/user/1000/secrets/copyparty/user-password/${hyper.user}"; }; }; }; diff --git a/home-modules/sops.nix b/home-modules/sops.nix index 1def120..bc34252 100644 --- a/home-modules/sops.nix +++ b/home-modules/sops.nix @@ -1,23 +1,7 @@ -{ pkgs, ... }@all: with all; -{ - imports = [ - inputs.sops-nix.homeManagerModules.sops - ]; - +{ pkgs, ... }@all: with all; { + imports = [ inputs.sops-nix.homeManagerModules.sops ]; sops = { - age.keyFile = lib.mkIf (hyper.host == "NxACE") "${hyper.home}/.age_nx2_key_13.txt"; - gnupg.home = lib.mkIf (hyper.host != "NxACE") "${hyper.home}/.gnupg"; + age.keyFile = "${hyper.home}/vault/age/sopsnix-${hyper.host}-home.key"; defaultSopsFile = ../sops-secrets.yaml; - - # %r is $XDG_RUNTIME_DIR - secrets = { - "example" = { - path = "%r/secrets/example"; - }; - # "sops-age-private-key" = { # Bootstrapping doens't work - # mode = "0400"; - # path = "/home/${user}/.config/sops/age/keys.txt"; - # }; - }; }; } diff --git a/home-modules/spotify.nix b/home-modules/spotify.nix new file mode 100644 index 0000000..1ef4a6d --- /dev/null +++ b/home-modules/spotify.nix @@ -0,0 +1,56 @@ +{ pkgs, ... }@all: with all; +{ + home.packages = with pkgs; [ + unstable.spotify + ]; + services.librespot = { + enable = true; + package = pkgs.unstable.librespot; + }; + sops.secrets."spotify/spotiy-player-clinet-id" = { path = "%r/secrets/spotify/spotiy-player-clinet-id"; }; + programs.spotify-player = { + enable = true; + package = pkgs.unstable.spotify-player; + settings = { + border_type = "Rounded"; + client_id_command = "cat $XDG_RUNTIME_DIR/secrets/spotify/spotiy-player-clinet-id"; + copy_command.command = "wl-copy"; + cover_img_length = 20; + cover_img_scale = 1; # if this is not 1 it doesnt fit in the box (for me) + cover_img_width = 9; # this ratio depends on your terminal font + device.normalization = true; + genre_num = 32; # all of them + liked_icon = ""; + name = "spotify-player-${hyper.host}"; + pause_icon = ""; + playback_window_position = "Bottom"; + play_icon = ""; + progress_bar_position = "Right"; # "Bottom" + progress_bar_type = "Rectangle"; # "Line" + theme = "${hyper.user}"; + }; + themes = [{ + name = "${hyper.user}"; + component_style = with rice.color; { + block_title = { fg = accent.bright; }; + border = { fg = border; }; + current_playing = { fg = special.base; bg = special.darker; modifiers = ["Italic"]; }; + like = { fg = positive.base; }; + lyrics_played = { fg = subtle.base; }; + lyrics_playing = { fg = special.base; }; + page_desc = { fg = secondary.base; }; + playback_album = { fg = secondary.base; }; + playback_artists = { fg = secondary.base; }; + playback_genres = { fg = subtle.base; }; + playback_metadata = { fg = accent.base; bg = background; }; + playback_progress_bar = { fg = accent.brighter; bg = accent.dark; modifiers = ["Bold"]; }; + playback_status = { fg = accent.bright; }; + playback_track = { fg = accent.bright; modifiers = ["Bold"]; }; + secondary_row = { fg = secondary.base; }; + selection = { bg = accent.dark; }; + table_header = { fg = tertiary.bright; }; + # playback_progress_bar_unfilled (Specific to progress_bar_type as Line) = ""; + }; + }]; + }; +} diff --git a/home-modules/ssh.nix b/home-modules/ssh.nix index cc9bb78..5a67b59 100644 --- a/home-modules/ssh.nix +++ b/home-modules/ssh.nix @@ -1,27 +1,38 @@ -{ pkgs, ... }@all: with all; -{ - home = { - packages = with pkgs; [ openssh sshfs ]; - file.".ssh/config".text = '' - HOST nxace - HostName ssh.${hyper.domain} - User nx2 - Port 50022 - - HOST nxacel - HostName 10.0.1.1 - User nx2 - Port 50022 - - HOST nxrpil - HostName 10.0.1.31 - User nx2 - Port 22 - - HOST nxgit - HostName ssh.${hyper.domain} - User git - Port 50022 - ''; +{ pkgs, ... }@all: with all; { + home.packages = with pkgs; [ sshfs ]; + programs.ssh = { + enable = true; + package = pkgs.openssh; + addKeysToAgent = "yes"; + matchBlocks = let + nxace = name: { + host = name; + hostname = "ssh.${hyper.domain}"; + user = hyper.user; + port = 50022; + identityFile = "${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}"; + }; + in { + "*" = { + identityFile = [ + "${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}" + "${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}" + "${hyper.home}/vault/ssh/tg-dm-informatik-tuda" + ]; + }; + "nxace" = nxace "nxace"; + "nxacel" = (nxace "nxacel") // { hostname = "10.0.1.1"; }; + "nxrpli" = (nxace "nxrpil") // { hostname = "10.0.1.31"; port = 22; }; + "nxgit" = (nxace "nxgit") // { + user = "git"; + identityFile = "${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}"; + # addKeysToAgent = "1h"; + }; + }; + }; + services.ssh-agent = { + enable = true; + # socket = "ssh-agent"; # suffix to $XDG_RUNTIME_DIR + # package = pkgs.openssh; }; } diff --git a/home-modules/xdg.nix b/home-modules/xdg.nix index 7286973..64ba151 100644 --- a/home-modules/xdg.nix +++ b/home-modules/xdg.nix @@ -8,25 +8,25 @@ mimeApps = { enable = true; defaultApplications = let - browser = "firefox.desktop"; - image = "imv.desktop"; - in { - "default-web-browser" = [ browser ]; - "text/html" = [ browser ]; - "text/htm" = [ browser ]; - "x-scheme-handler/http" = [ browser ]; - "x-scheme-handler/https" = [ browser ]; - "x-scheme-handler/about" = [ browser ]; - "x-scheme-handler/unknown" = [ browser ]; - "x-scheme-handler/mailto" = "thunderbird.desktop"; - "image/png" = image; - "image/jpg" = image; - "image/jpeg" = image; - "image/webp" = image; - "image/gif" = image; - "application/pdf" = "zathura.desktop"; - "inode/directory" = "thunar.desktop"; - }; + browser = "firefox.desktop"; + image = "imv.desktop"; + in { + "default-web-browser" = [ browser ]; + "text/html" = [ browser ]; + "text/htm" = [ browser ]; + "x-scheme-handler/http" = [ browser ]; + "x-scheme-handler/https" = [ browser ]; + "x-scheme-handler/about" = [ browser ]; + "x-scheme-handler/unknown" = [ browser ]; + "x-scheme-handler/mailto" = "thunderbird.desktop"; + "image/png" = image; + "image/jpg" = image; + "image/jpeg" = image; + "image/webp" = image; + "image/gif" = image; + "application/pdf" = "zathura.desktop"; + "inode/directory" = "thunar.desktop"; + }; }; }; } diff --git a/home-modules/yazi.nix b/home-modules/yazi.nix index 4618df6..4f6ce0e 100644 --- a/home-modules/yazi.nix +++ b/home-modules/yazi.nix @@ -1,12 +1,11 @@ { pkgs, ... }@all: with all; let - tfc = pkgs.latest.xdg-desktop-portal-termfilechooser; - x = (pkgs.version != "24.05"); + nox-var = (pkgs.version != "24.05"); + tfc = pkgs.xdg-desktop-portal-termfilechooser; in { home.packages = [ pkgs.unar tfc ]; - programs.yazi = { enable = true; # package = pkgs.yazi; @@ -310,7 +309,7 @@ in { border_style = { fg = border; }; }; tabs = { - active = { fg = accent.dark; bg = accent.base; }; + active = { fg = secondary.dark; bg = secondary.base; }; inactive = { fg = secondary.base; bg = secondary.dark; }; # sep_inner = # sep_outer = @@ -382,7 +381,7 @@ in { ]; }; }; - } // (if x then { + } // (if nox-var then { shellWrapperName = "ya"; initLua = /* lua */ '' require("zoxide"):setup { @@ -423,7 +422,14 @@ in { enable = true; xdgOpenUsePortal = true; config.common."org.freedesktop.impl.portal.FileChooser" = "termfilechooser"; - extraPortals = [ tfc ]; + extraPortals = [ tfc ] ++ (with pkgs; [ + xdg-desktop-portal-hyprland + xdg-desktop-portal + xdg-desktop-portal-gnome + xdg-desktop-portal-gtk + xdg-desktop-portal-hyprland + xdg-desktop-portal-wlr + ]); }; }; home.sessionVariables."GTK_USE_PORTAL" = "1"; diff --git a/home.nix b/home.nix index 194c3dc..a35891f 100644 --- a/home.nix +++ b/home.nix @@ -12,7 +12,7 @@ ./home-modules/discord.nix ./home-modules/email.nix ./home-modules/figlet.nix - ./home-modules/firefox.nix + ./home-modules/firefox/firefox.nix ./home-modules/fish.nix ./home-modules/games.nix ./home-modules/gestures.nix @@ -42,19 +42,14 @@ ./home-modules/pkgs-list/programs.nix ./home-modules/pkgs-list/shell.nix ./home-modules/pnx.nix - ./home-modules/programming/c.nix - ./home-modules/programming/gleam.nix - ./home-modules/programming/glsl.nix - ./home-modules/programming/go.nix - ./home-modules/programming/java.nix - ./home-modules/programming/js.nix - ./home-modules/programming/python.nix + ./home-modules/programming.nix ./home-modules/qt.nix ./home-modules/rclone.nix ./home-modules/rofi.nix ./home-modules/scanning.nix ./home-modules/sent.nix ./home-modules/sops.nix + ./home-modules/spotify.nix ./home-modules/ssh.nix ./home-modules/starship.nix ./home-modules/tts.nix @@ -74,8 +69,8 @@ ./home-modules/calendar-campuszeit-fix.nix ] else []); home.username = hyper.user; - # home.homeDirectory = hyper.home; # for some reason you cant use hyper.home here - home.homeDirectory = "/home/${hyper.user}"; + home.homeDirectory = hyper.home; + # home.homeDirectory = "/home/${hyper.user}"; home.stateVersion = hyper.pkgs-version; programs.home-manager.enable = true; } diff --git a/nixos-wsl.nix b/nixos-wsl.nix index dc484cd..c6a4ab6 100644 --- a/nixos-wsl.nix +++ b/nixos-wsl.nix @@ -1,19 +1,15 @@ -{ pkgs, ... }@all: with all; -{ +{ pkgs, ... }@all: with all; { imports = [ inputs.nixos-wsl.nixosModules.default - ./system-modules/users.nix - ./system-modules/gc.nix + ./system-modules/base-packages.nix ./system-modules/docker.nix + ./system-modules/gc.nix ./system-modules/gpg.nix ./system-modules/networking.nix ./system-modules/nixd.nix - # ./system-modules/sops.nix - # ./system-modules/sshd.nix - # ./system-modules/syncthing.nix + ./system-modules/users.nix ]; system.stateVersion = pkgs.version; - # system.stateVersion = "24.11"; wsl = { defaultUser = hyper.user; enable = true; @@ -30,6 +26,5 @@ ]; }; }; - nixpkgs.hostPlatform = hyper.system; } diff --git a/shell-only.nix b/shell-only.nix index 0d085c9..478735c 100644 --- a/shell-only.nix +++ b/shell-only.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }@all: with all; -{ +{ ... }@all: with all; { imports = [ ./home-modules/bash.nix ./home-modules/color-pallete.nix @@ -28,10 +27,11 @@ ./home-modules/pkgs-list/shell.nix ]; - home.username = hyper.user; - home.homeDirectory = hyper.home; - # home.homeDirectory = "/home/${hyper.user}"; - home.stateVersion = pkgs.version; + home = { + username = hyper.user; + homeDirectory = hyper.home; + stateVersion = hyper.pkgs-version; + }; xdg = { enable = true; configHome = "${hyper.home}/.config"; diff --git a/sops-secrets.yaml b/sops-secrets.yaml index da36693..ea8f94e 100644 --- a/sops-secrets.yaml +++ b/sops-secrets.yaml @@ -21,6 +21,8 @@ weechat: passphrase: ENC[AES256_GCM,data:3NVhMouf3wwMJTZCvIjbi5fjHJHxe25Q+wRo,iv:W8cShdM3iUyEiRCPNupMin3gfF+cqGxslD18CAvUW4c=,tag:DXBATGEhHjhXqy+J9BNVwg==,type:str] streamlink: twitch-oauth: ENC[AES256_GCM,data:SvV0CBVL6MO0zqiRg2Ns00KNHLDfzgNObse5F69n,iv:h0DFbwIVKfJSoVowgO3voAOdHXIsw1D3O/aweFRVKcI=,tag:PW0gc+gzlfdOUvIoYIkywg==,type:str] +spotify: + spotiy-player-clinet-id: ENC[AES256_GCM,data:hJpLMgWKzPpqTffr80Jh65Zl3MzKGXiMb8x2F1CxuSQ=,iv:Q8TdEZiAtcdkndsKmvCAlnuu+i60xXUBX6I6VSxwQow=,tag:CIeaJbkMeqRoWnuOgERHYw==,type:str] nx2site: cloudflare: api-token-dns-edit: ENC[AES256_GCM,data:fR4fH6NqwtHI8aebEwjUn5JMoy3q3GXgu/dREe8JK7yRBIOhJ8BKuw==,iv:fQqLRYCN/7zhpHzYxMcn8q1aA7x4qd3qWGgrFWn2E/U=,tag:GJ1muJG755ch/84Sgcf2Vw==,type:str] @@ -56,51 +58,69 @@ sops: - recipient: age1vkqn2nars5qmpr35tac0x9vshphrq6nnzjfyxwusgn27kt3zualssv0u8e enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwZWl0RCszNGZqNDhzY25a - K2dPTGMvMzBSZytRMWR5d1pkTVpETmNZUTFzCmUrU25XdklVc3NicUV2OVh5bktR - YmZIeGZzYkVJMXRwSkt6bXlaRGpiaEkKLS0tIEZOMDUxaEo1aXRsV050a3I0eFNR - UlIxODJVK3lEaC9lWG9wNmhaUWhuZEEKnQT50Svfxgnbo6+gTSGyLW8vt+hzehu5 - djy0wdML7XGORKURUJcAnGCdgsugu7exTBPMeKldlPXySPGUf6vPRA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxODZibjJwSGRJYVpyRXFh + UmFmRVIwOGhFaHhpb05iRGtTSnV0UUlkOUd3CnFiOTJ4cTN0OHYvQTlScy9NYXAr + a1A1YzFkdkttenhRa1NIUnhuVEZiLzgKLS0tIFVkTDRZNWhHeHN3MWNTSHJRbSs0 + Nk5FcnBaSkhWcXZaeCtQMDJaVEc1aEEK71jQkA/mOqNIdcNYHDnb43MEVKyNIOpT + 8J/CV6U5M+YGNvkHXafNFccHKY8dFPVDzcJl0lthECjcGrplzNEWNw== -----END AGE ENCRYPTED FILE----- - recipient: age1jvf2lyrt2dw9jfnwgvnhmj9fmvyq8vvtepqjpkyycc5dqkkd4edqhxsgv6 enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBISzJjS2t4OFNtd2s3RjE3 - V2hOUnByNVp3bjE4a0tPSkdCbXcwU093NGtFCmR2RXdzbTk1RXhQbmdVM0pkdGhE - T2VGN1VnYlRqWXRmWEJucTd5eU5HYWsKLS0tIFJRODNibTZNRjZtZjlpN0IzbVZQ - aHQwY0l3OTRVYlNSZnBQMGM4ekp0NGMKL0scPlNFywKmdPI3I8sgvmaVXOp6qm2m - O0N8BuQPEhiZXzNhPBPJnt6e/X+eW35lXdvbQ6AKv791WjZ4OlSZow== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBK0dKQWQyOW8xQ0RMOXlv + SStnV0R1QWNlZlVrUGdqSTVUSUJHL09RQW5BCk1OL2NLVFk1R1kzTjc1OUR5TmVC + MXI0ZnoxcVRoNHFOa2FJT0RvOUtTakUKLS0tIC82QzlJT0RjVHo0aXZOckNNNElO + WjZEL0NzL0NzOUdMK3FaOE5Ub2x5OXcKOAahFXWAQNagHz2G+O1TPiKB7UqUl8p2 + K89cGfal6M2ui403lb2ygEi+v6K908Kh9MzGaDtR0r2k7kGQS4aFmg== -----END AGE ENCRYPTED FILE----- - recipient: age1jj7kfjw3e7rf9kwg5f87zf4ns6yr5465wcasanr9gcgwrq7c6dmq6gprgk enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwT2laNmNOYnhON2FEcGxl - OVFHa2owL1RCWWNWdDhzZWRlSkhPZmJpQjFvCjNPSGc4L1V5cENBMzY2VU56RnNW - QmNiNGMyZXY0WmN3R0c5YURQN1RGbDQKLS0tIE5lZXZiR2FZVms4YllUd1BsOURD - YTMxdkhkLzNGOWVYQkZJQnVCeW4zcXcKLaGzWYXBaR9mpLE47pWAkYUv/L5JuCR9 - ZH2oaOLio6BHY+pf9WbbazbjIKXMZ8KozpLTzbn7ayKYYgGxEiwdIA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaNGhjNHlubGp3QzRkRy9i + UmM0ZlE5UUxhM0tCeHkwOUt2VEt1YldnNnhrCnZHWlpWZ3BpZ1BlYTlVVmFZQ2Q4 + RlF5UldLdDNOZTB6UDlBcldqRmhyTDQKLS0tIG5OZjZkdnNnbTZ2K3kzNGdqdGFE + RUdad1FHMTVFVU8xRmpCdHRnK0Z5ZkkKb+25mUdPRozNnyPXGCJOe+xtsOZVe4oy + SDpdoSASzq2uljMxVPyINJcbEThJriZAzC30Qt2aroc2zo3dnsnVMg== -----END AGE ENCRYPTED FILE----- - recipient: age1x2lpsennl74n0f5jl60uv2ffjcuqymzf9ap3frlz2quyv0x3hq3scnewwq enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSByUmxCQ3ZOVGlWUWFkcGk1 - ZzNaR0R0UG43dkh5Wjd5MmQ5SlkwU0g3c0ZJCnVYZExQdi94ME56eUVwUG5XbjJi - OC9OSmZYeHo4anJLb0NQSEs3cmMrS1UKLS0tIFJWU1VYL09SbDlHZlJtRlhmSjFJ - YkJWUEMySU50ZHVxUzVudjNnYURXak0KkMn/8sFrrviqb3s8DtS/BAbrdCwJ+jv/ - A8rXQkKMjvTqG1f0fq5IlSmRAQy7XFBzkfbKdIUoefhey190WPEHaw== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArV094ZWwvTzJuYlE1Um14 + K09wUlcxdFc1eFB3bXgrSXlRK3ZRSnB1QXhBClhNZVFIRHBVUGkwOVk3ejc5b0FN + cEtkSTFHZ1FWUDQzZUJBbHRsMnhWMUkKLS0tIDhQWGpvV01TRHY0VnJCclRsVHl6 + YkZJWm5xWlh2NmtibnVPYSs2QjF0TW8KRj+d44ttYXoElSzxv6n4u9NL/aeXJQpc + Fc0797glPXgInJZkQSzCmjKs6LzY82I5D34evwuFzuwD/TMAGyo0/g== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-08-06T22:09:56Z" - mac: ENC[AES256_GCM,data:s3lBIa/Y0fjtFFTDggC+Oxd9T5A1al9ULh4VM78vS+A6nmCZWdezLkY1CwXPrCcrwYQtnKrj5N4Y1jQQmEkF1UIcgkvH7ZQsT7MOJyvWhZUx2/wIg1DwcdlHYJAiwFkIkZ1fEvE4m/uDCWA8xO4qWU4NJaxPzTyapPKKF4VwkNs=,iv:tqDVOQlwS+CMzX8MxrBRPjBVj1Svx91eQx2xamAsSiE=,tag:VJf1at+026fQJ5ML2D/PEg==,type:str] + - recipient: age1pn4utvwpqdrswn0xurfdexn5nks9cd06jxzwg3m3m6za25ap4vxqxd0p3k + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAreTRVWkxiNnZKeFFiNVA2 + ZldmbXpUN2lyYjh0M0ZNSHpHRGk0aHpkUUZzCmhrZnBTWTlTYU13K2YwNFVCT1px + ZUhWODQrZHlIR2RQOFhmUXY2NXI3QUkKLS0tIHlDcnI0dGt3a2h6a3l1YkRMNkVr + QVRCdkMza3JDb01mdW5mbTZtbFVVR3MK3dww+AlRaTwe2oveZzcRaKgLE++U0jxJ + kaC8DmqQh/XbiqlJ9sIIg6PfmyME7ACe31TkZVc1MhSvVePmxRRLYQ== + -----END AGE ENCRYPTED FILE----- + - recipient: age1ur5zpr325cv7w0yn49azz9f48xsxd73w2sytt22yrnw5qs9r34nsv3vl05 + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoR1g0Wk1idkFVbUlNaEls + dlRMWHNFMW5HSmtyUlF5YnBMZkFGUzFEZ0ZRCmZoZDZDRlFIbk5mQU1Kbk9hU0p6 + WldxaHpuZVlqVkJyK0hEZkFaV2FKZG8KLS0tIGxMdFJBc1pDMmpKVm5mbTFRUU9m + SUwwSStwcmw0VDFLdTlqZDViV0k3YTgKukCR3ZJaJpEHNCxoisES9/uIULz1E7XW + w4VVHk+0fuTUCcCWz/Lpw58OgNdNz7mAx8Ji2Uyid3qTkd6NjdCVaA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-09-07T21:03:20Z" + mac: ENC[AES256_GCM,data:x8eIqQQGxtB5ukScesN1Lf4cFicTOi3VSOr/hFxKzccgwW7HLLEqwjai6e67KUFC2otaN9TR7ft0tUsTVwWRVRCHnpEoQ5KshLHy2zsk+CmPIpWTLCZJBpe154z3rRLlc10DCM7yhqArzepw0HgE4j1knADqLVwC7e0k+o/OmE8=,iv:uXeIv19J3LmYg7gtA2SGUSoMe9uccrvvztlDFSSs1V8=,tag:YTJpZdw1K+7//EARR+MviA==,type:str] pgp: - - created_at: "2025-06-08T12:35:30Z" + - created_at: "2025-10-04T23:33:42Z" enc: |- -----BEGIN PGP MESSAGE----- - hF4DCvJ7ODFw5jQSAQdAw5PIhSmghpU+R4d8A9FY1z9NwN2C1CQvnP0u/D6k9nEw - 4jYo133RBpSmZUEOPsrAIGDwcx5rAjIwXtYEUeH3ZR1/0imfyOh0iF0NhEqF5awG - 0l4BWb/AQFnokqiIuRGQPMqpO6X3m00C2kB79nodaxorhc/WBs4JX3qz89zozsLq - ao8WHHadtQJwBveKurCNHLcr2+vLatPZ93Oo3s/ky+5eB+HrottOC818TIP51tXx - =8dKb + hF4DCvJ7ODFw5jQSAQdAwFhdvVSDAhK6TQhL1Jd+Bw9KNHD5BhzMxM04+tsOmVMw + DDFAuBEfqGGzsJfrWPfdJJOPGYHK3vz/O6zitpCy1cF7EuSkak11nLDAG6Itozuv + 0l4BS8mBaxvNcJUePYCq0SY7qVmu+OGnchKJ2e3suJllxZ+Uxc9WDSBxRVGMcwXo + N2d/0dtdU8HAP70/L2SeTDMgK+lX++71DGAO45+c040GbMnB1SGJfWDa71b0BHVS + =5jtR -----END PGP MESSAGE----- fp: 22FB2CC03DC5292AB81CF67D0AF27B383170E634 unencrypted_suffix: _unencrypted diff --git a/system-modules/gpg.nix b/system-modules/gpg.nix index 8075bd3..e5cf5b5 100644 --- a/system-modules/gpg.nix +++ b/system-modules/gpg.nix @@ -1,14 +1,8 @@ -{ pkgs, ... }@all: with all; -{ - environment.systemPackages = with pkgs; [ - gnupg - gpg-tui - ]; - +{ pkgs, ... }@all: with all; { programs.gnupg = { dirmngr.enable = true; agent = { - enable = true; + enable = false; enableSSHSupport = true; enableExtraSocket = true; enableBrowserSocket = true; diff --git a/system-modules/hardware-configuration.nix b/system-modules/hardware-configuration.nix index 3772a32..0107e3d 100644 --- a/system-modules/hardware-configuration.nix +++ b/system-modules/hardware-configuration.nix @@ -1,54 +1,50 @@ -{ pkgs, ... }@all: with all; -{ - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; - - environment.systemPackages = with pkgs; [ - ntfs3g - ]; - - boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; - # boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; - - fileSystems = if hyper.host != "NxACE" then { - "/" = { device = "/dev/disk/by-label/nixos"; fsType = "ext4"; }; - "/boot" = { device = "/dev/disk/by-label/EFI"; fsType = "vfat"; }; - "/home/${hyper.user}/shared" = { device = "/dev/disk/by-label/shared"; fsType = "ntfs"; options = [ "uid=1000" "gid=100" ]; }; - } else { - "/" = { device = "/dev/disk/by-label/nixos"; fsType = "ext4"; }; - "/boot" = { device = "/dev/disk/by-label/EFI"; fsType = "vfat"; }; - "/vault" = { device = "/dev/disk/by-label/vault"; fsType = "ext4"; }; - -}; - - - swapDevices = [ - { device = "/dev/disk/by-label/swap"; } - ]; - +{ pkgs, ... }@all: with all; { + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + environment = { + systemPackages = with pkgs; [ ntfs3g cryptsetup ]; + variables = pkgs.lib.mkIf (hyper.host == "NxXPS") { + VDPAU_DRIVER = lib.mkIf config.hardware.graphics.enable (lib.mkDefault "va_gl"); + }; + }; + boot = { + initrd = { + availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + luks.devices = pkgs.lib.mkIf (hyper.host == "NxXPS") { + "vault".device = "/dev/nvme0n1p7"; + }; + kernelModules = pkgs.lib.mkIf (hyper.host == "NxXPS") [ "i915" "cryptd" ]; + }; + kernelModules = [ "kvm-intel" ]; + extraModulePackages = [ ]; + extraModprobeConfig = pkgs.lib.mkIf (hyper.host == "NxXPS") '' + options iwlwifi 11n_disable=8 + ''; + }; + fileSystems = let + ntfs = { fsType = "ntfs"; options = [ "uid=1000" "gid=100" ]; }; + in { + "/" = { device = "/dev/disk/by-label/nixos"; fsType = "ext4"; }; + "/boot" = { device = "/dev/disk/by-label/EFI"; fsType = "vfat"; }; + } // (if hyper.host == "NxXPS" then { + "${hyper.home}/shared" = { device = "/dev/disk/by-label/shared"; } // ntfs; + "${hyper.home}/vault" = { device = "/dev/disk/by-label/vault"; fsType = "ext4"; }; + } else if hyper.host == "NxNORTH" then { + "${hyper.home}/shared" = { device = "/dev/disk/by-label/shared"; } // ntfs; + } else if hyper.host == "NxACE" then { + "/vault" = { device = "/dev/disk/by-label/vault"; fsType = "ext4"; }; + } else {}); + hardware = { + cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + graphics.extraPackages = with pkgs.lib; mkIf (hyper.host == "NxXPS") [ + (if (versionOlder (versions.majorMinor version) "25.05") then pkgs.vaapiIntel else pkgs.intel-vaapi-driver) + pkgs.libvdpau-va-gl + pkgs.intel-media-driver + ]; + }; + swapDevices = [ { device = "/dev/disk/by-label/swap"; } ]; networking.useDHCP = lib.mkDefault true; - - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - - # from nixos-hardware - services.thermald.enable = lib.mkDefault true; - boot.extraModprobeConfig = if hyper.host == "NxXPS" then '' - options iwlwifi 11n_disable=8 - '' else ""; - boot.initrd.kernelModules = if hyper.host == "NxXPS" then [ "i915" ] else []; - - environment.variables = if hyper.host == "NxXPS" then { - VDPAU_DRIVER = lib.mkIf config.hardware.graphics.enable (lib.mkDefault "va_gl"); - } else {}; - - hardware.graphics.extraPackages = if hyper.host == "NxXPS" then with pkgs; [ - (if (lib.versionOlder (lib.versions.majorMinor lib.version) "25.05") then vaapiIntel else intel-vaapi-driver) - libvdpau-va-gl - intel-media-driver - ] else []; - - services.upower.enable = true; + services = { + thermald.enable = lib.mkDefault true; + upower.enable = true; + }; } diff --git a/system-modules/networking.nix b/system-modules/networking.nix index 246a0f5..c8afe68 100644 --- a/system-modules/networking.nix +++ b/system-modules/networking.nix @@ -1,11 +1,6 @@ -{ config, pkgs, ... }@all: with all; -{ - # sops.secrets = { - # "wireless-networking.env" = {}; - # }; - +{ config, pkgs, ... }@all: with all; { networking = { - nameservers = [ + nameservers = pkgs.lib.mkIf (hyper.host != "NxDCS") [ # wsl manages resolv.conf "1.1.1.1" "8.8.8.8" ]; diff --git a/system-modules/nvidia.nix b/system-modules/nvidia.nix index c899f9c..b2d49af 100644 --- a/system-modules/nvidia.nix +++ b/system-modules/nvidia.nix @@ -1,6 +1,4 @@ -{ pkgs, ... }@all: with all; -lib.mkIf hyper.nvidia.enable -{ +{ pkgs, ... }@all: with all; lib.mkIf hyper.nvidia.enable { environment.systemPackages = with pkgs; [ lshw glxinfo diff --git a/system-modules/users.nix b/system-modules/users.nix index 22a9ab3..b6c11c5 100644 --- a/system-modules/users.nix +++ b/system-modules/users.nix @@ -1,36 +1,39 @@ -{ pkgs, ... }@all: with all; -{ - users.defaultUserShell = pkgs.bash; # if interactive, itll switch to fish - - users.users."${hyper.user}" = { - isNormalUser = true; - extraGroups = [ - # TODO: actually put the groups into the relevant files - "networkmanager" - "wheel" - "audio" - "video" - "lp" - "scanner" - "docker" - "libvirtd" - "uinput" - "input" - "ydotool" - "acme" - "nginx" - "adbusers" - "postgres" - "radicale" - "audiobookshelf" - "nextcloud" - ]; - useDefaultShell = true; - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID1RPCcS8DtIf75a2FEW4d8X6WTVeLlmretoLqppvZlJ" # From [A] GPG Sub Key - ]; +{ pkgs, ... }@all: with all; { + users = { + defaultUserShell = pkgs.bash; # if interactive, itll switch to fish + users."${hyper.user}" = { + isNormalUser = true; + extraGroups = [ + # TODO: actually put the groups into the relevant files + "acme" + "adbusers" + "audio" + "audiobookshelf" + "copyparty" + "docker" + "input" + "libvirtd" + "lp" + "networkmanager" + "nextcloud" + "nginx" + "postgres" + "radicale" + "scanner" + "uinput" + "video" + "wheel" + "ydotool" + ]; + useDefaultShell = true; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID1RPCcS8DtIf75a2FEW4d8X6WTVeLlmretoLqppvZlJ" # From [A] GPG Sub Key + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE5sYVtPLHXatTjrpol46xr9R4TidcB4t8axO6/ReNNR nxxps-nx2@nxace" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC/zcoYuYbamTPMOZPfsP1yQJ5Y6sDlPfBwui8MQjKWn nxnorth-nx2@nxace" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMnbJx7nVeVi5jK1Eybm+jQoopiCTslewuHFLv2yCt4f nxdcs-nx2@nxace" + ]; + }; }; - programs = { bash = { interactiveShellInit = ''