diff --git a/flake.nix b/flake.nix index 0818b6a..05332a4 100644 --- a/flake.nix +++ b/flake.nix @@ -150,6 +150,7 @@ modules = [ ./hosts/monolith ./system/monolith-gitlab-runner.nix + ./system/monolith-bitbucket-runner.nix ./system/monolith-forgejo-runner.nix ./system/nix-serve.nix ] ++ common_modules; diff --git a/hosts/phantom/email.nix b/hosts/phantom/email.nix index 105113b..1951629 100644 --- a/hosts/phantom/email.nix +++ b/hosts/phantom/email.nix @@ -36,8 +36,6 @@ hashedPassword = "$2b$05$DcA9xMdvHqqQMZw2.zybI.vfKsQAJtaQ/JB.t9AHu6psstWq97m2C"; }; }; - - enableManageSieve = true; }; # Prefer ipv4 and use main ipv6 to avoid reverse DNS issues @@ -54,7 +52,7 @@ $config['smtp_host'] = "tls://${config.mailserver.fqdn}:587"; $config['smtp_user'] = "%u"; $config['smtp_pass'] = "%p"; - $config['plugins'] = [ "carddav", "archive", "managesieve" ]; + $config['plugins'] = [ "carddav", "archive" ]; ''; }; } diff --git a/pkgs/caffeinated/default.nix b/pkgs/caffeinated/default.nix new file mode 100644 index 0000000..480858b --- /dev/null +++ b/pkgs/caffeinated/default.nix @@ -0,0 +1,42 @@ +{ + stdenv, + fetchFromGitHub, + + pkgconf, + pkg-config, + wayland-scanner, + + systemd, + libbsd, + wayland, + wayland-protocols, +}: + +stdenv.mkDerivation { + pname = "caffeinated"; + version = "2022-12-08"; + + src = fetchFromGitHub { + owner = "electrickite"; + repo = "caffeinated"; + rev = "5a8eff054bdce225a19cf3ab785dc1bbc9bd3265"; + hash = "sha256-X1w/YWljcwb5ZH8Nt92CDhPU/yqBLH3lBS7yVJUeyzY="; + }; + + nativeBuildInputs = [ + pkgconf + pkg-config + wayland-scanner + ]; + + buildInputs = [ + systemd + libbsd + wayland + wayland-protocols + ]; + + makeFlags = [ "WAYLAND=1" ]; + + installFlags = [ "PREFIX=$(out)" ]; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index b702886..abb2bb5 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -3,6 +3,7 @@ { pkgs, inputs }: rec { + caffeinated = pkgs.callPackage ./caffeinated { }; cargo-checkmate = pkgs.callPackage ./cargo-checkmate.nix { }; lipsum = pkgs.callPackage ./lipsum.nix { }; emmet-cli = pkgs.callPackage ./emmet-cli.nix { }; diff --git a/scripts/default.nix b/scripts/default.nix index 9b0b728..d9824b5 100644 --- a/scripts/default.nix +++ b/scripts/default.nix @@ -74,7 +74,6 @@ ]; wpass = [ wdmenu - ripgrep fd myPass sd diff --git a/scripts/wpass b/scripts/wpass index 52bcdff..97e4671 100755 --- a/scripts/wpass +++ b/scripts/wpass @@ -29,7 +29,7 @@ main() { test -n "$entry" || exit 0 - username=`pass show "$entry" 2>/dev/null | rg -m1 '(login|user|email): (.*)' -r '$2'` + username=`pass show "$entry" 2>/dev/null | perl -ne 'print $2 if /^(login|user|email): (.*)/'` password=`pass show "$entry" 2>/dev/null | head -n 1` otp=`pass otp "$entry" 2>/dev/null` || true diff --git a/secrets/monolith/default.yaml b/secrets/monolith/default.yaml index 0dbc4ae..5ca1383 100644 --- a/secrets/monolith/default.yaml +++ b/secrets/monolith/default.yaml @@ -5,6 +5,11 @@ gitlab-runners: thoreb-itinerario-nix: ENC[AES256_GCM,data:UdAAD0V895sFoEYR56sCG2LlpZugJ0K/nwkTygzWOnbTSmBRAcIQ8qVFPZGw+K+XMSLiCyio6Jp7k8AYP0K1VYm+6aEP3OkqR9FCLQTJgXo=,iv:UGUby50BYkn13OzItk6zZmxc5+SnbZZa4bebQHIow2A=,tag:LjDg3deWwdH2T71EtPo6jA==,type:str] docker-images-token: ENC[AES256_GCM,data:GGB/KSkjdAyhFKEspAh91ItbqEDf7K/LZSGSn+Jp7SxRfXpDzHIiMD8XJ9PTkGLeQGN4ug1i2nTYPS7d/P5OALWDU+1NPiV9nPdG0w7GERfu4g==,iv:6roabdOKX9xFMf0hWlECd73+943R+hFLos0e2dOpzns=,tag:LrASFc4DtN7aQ+3oOW/p/w==,type:str] wopus-gitlab-nix: ENC[AES256_GCM,data:asE7J0d58x9VfQFWc07f5T4s5NZ+/VqMQo66EX93J0LbJ4iI5YjvrrIE4pSI1e4Nz/SRQhltaJ0DfSH0+qgjD4wnAONPRi3UlFbSdGWS2bwwRtWe+Nci2krrUFxV2i/ZVE3CwCkNe4mqtII=,iv:gKrD/LhzI+jnDnX6CdxoHfjpiRdrsuRYJF9rTc8SffM=,tag:TczDGSU3gdKmERjBJ7tP/A==,type:str] +bitbucket-runners: + wopus-runner-1: ENC[AES256_GCM,data:gtH0T5n8qMYpvSv5ciN8+ScGlFDf9xE0FTxNP97vT/qsOCcaItTE+5P+DFcWw46onLED+1c+u0sArFbEsT3f8lyco9b+0l99uOQAxLZQzAXYH8zGye1UnwUtytkci2PHu5c8kTpIWHXyZ1IOYNGWkermeab57ANzOkM1LbkHyAjS6VTh0I60LfAOdHOw5FDFL8d1d9oWxLloOe9USLPqHjC023EpCUT2YuyHoPCTpBu8Kb/2HfV0wkAKaB3dvVrKwXCj+bfP6+bjQ3uMzVO/7jxPmnSGBfvyZ+Hlg5goJ6bSAqQWmnPPnQ96FgQfe8su5ML9qNIp9/7eNiL6Rv6Vhxe0hHbE5wsZ/58grcg/LrugeWJvUJ9THhwcTwO8Pkvwlq0XM9seUY2NV+LCK3bLQ4IWDjWkU1IHg6+nihTcvl1iD6UIGMgqGoB/v05WVzHb+GcE2fFuSuhVHfa5RMyboELOJoFrqZiXGhY=,iv:ZakLafxYQCDd1Zw8T83Xfj+YwAQKna9LC6ognJqtifA=,tag:bwBObfdMIvJfRrOG04NtxA==,type:str] + wopus-runner-2: ENC[AES256_GCM,data:gg8merZMFbf396hdJY7zmKQndT3GzB7NeGZAs3C0au8Zd7OFAg9vcQcFcxNA3kZGJZqmFTR/ycWJwhYr9fhlfFuPhDynVvgJAqoYtvC2MUDiOMD/d3DlfwFjQ6cOGTrvFuY1kkgSFb4OFdrVC1eiTDrGygFmYnYcqTKn/t5Ttqi+cHZNzFzVzdVLvaLCYxltM5g45zn+fXYxYwCfqyb32/M1XTnnwIGiataGxEX5oWhVV4zqeLO4ZIYPSby5AVvIMJ/zqvqaeVVY52GLDcTKrj3thbZxMQLWN3/lOA0uYhi3L/WM8Gx+JMEIbSICcuT7QXu4w4PA+opcx9GnsMCK2/egzS+cNPJ4vGZCdVD/jh6A9zVEJAgXdsHXNXFHmMPt7DcgrCQiub62og4kBY4G/Rcg4UN7sb3v3qyBpGbCGHGRjCFc+wdHpom0yDOG2cwcqfN49pC2R7Ag2BisFQ/5A+DPmKnvGG3kt9s=,iv:5g5XiDecYqi4JNRkZubgPJECBQdZ6rBeojgFe6Etebk=,tag:HRy5bFSbfxKTb5e13lGtgg==,type:str] + wopus-runner-3: ENC[AES256_GCM,data:f9pLYR8t51HtPpLyXysIVaDAhxDrmktJH93E7rb7imtKwK7hRhR8usnvHTcknLfD7BMvStAIYefdGt19u7PrQu6vqc19bEcNbnK5OH4KBP6+X47oMgBYtbIGXH+t3dSDt22fSIoppTwdX7/Kf4vqesfN8K7EunETvFR86oyyKdy15mvXr0XUO4us4HZjnIOBEnOm1P/V8hk5JcCpRuo+8ZYmBe5gzq5pTnqnYlPE1EovM7eDMg72J7ev07h50qvySrAqmNiqDcXfTPQ2TzuHx3XxAYqFybf1L6P9OnLB6RDAlpoFJ0h8dSg2tzC2+amYsBP0UIBK/ZhWvvAjpX+MZrTASjenh/tefDcNdbsXDOr7A4i/261z4rC0r+97INglCN1N/SZg51iBHiRAVV1zibDLfioR5+eBIykWAtjILMoYU+zOcr0E8K0I9jQGMtpnYmvHJqV0DVcdfZpJptrPUUy+lQ/iZVcPpLs=,iv:grzvVsfpUzywjNE4jvTxXKG3TYajrvSsQgfOgtafvIo=,tag:K1B6crN0ckLk0EYBtGHDkw==,type:str] + wopus-runner-4: ENC[AES256_GCM,data:D1Zq0BtPuACnutAbUcj3gYSMLuIZcMuqc/1mEFmitEG0tBFMWhkabS+8lXcp8sb1DM0LTDMEwgMB9FVyFb670MKQNEncqQtaNJtY1BxS3SolovDAM/I+i6YGvd4X8jX99d+7ZNR6xGBWJ/dW8rz4QnIM8Eh3FDOqaFa/ltfyPKP9IZ2uZi67C/n8Q/OSdgMQkt+QxhgJfSghE1iruPwxyGlqv+E4SZNI/fQQMjX0Lh7z02ms58yyMtjO71YbukV/JXFRsdJrqY2wfH/6NlZbsKideoSxluBRVqmbW6KQd7dUT819KbOSu9CFdgThtVCU8qiv3jbAbn8D5xRy4AAOEfSqRLXJoj7otCqr47R/8+0BdS3aztFBjL3lDmprMWZ4+LD55fvczfpxUF9ox1mhcjIvCvZJJL06XsST1XRXa7i2fr4/a/XhCmQgIzar5IYxSC9OjuHp6jLsTaY3ZUgid5W1L1n8uWSmA98=,iv:O9caRG//brERiIhuMrsFdTz6TnPY0rdQnvHEu0P42yM=,tag:hrmwLX/CRhZfammJ2nfTPw==,type:str] sops: age: - recipient: age1zrgu7w8059xydagm60phnffghvfe9h2ca58cx8qwagqpyfuvs9fqw79c8h @@ -25,8 +30,8 @@ sops: aFVxcDFhaGdYekRWRVFIWnRsZndtZFkKgsvxOFHOcO306Z9FkucA1fDOpZA8N1/h jYmIgcKTFgWoSCvux67lK30jFsYp7sm5z6WxxDYsGcoQ/+pxoUX2jQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-06-24T11:51:22Z" - mac: ENC[AES256_GCM,data:onyjWlFsH/9YGSi2nGsPmZjhE4nFVQ5Jiwfi4s9KC7NetKD7Reyz2JY6i3YuZspBn3Jvbq8nOKVPGzttMAG+IrqQEv6+MxrCOEnJZXZcqocDNg7dACOXmJB5iwpFVdKscesTH2SScf7Pl/q6l9KOFjFuaZeBB7dlxHVA5zzCVOU=,iv:lEbxg2HfxU6ikgWSpUNAGIfgaz7DnZjXnLWcmsvt0A4=,tag:/Ag37QuJj9Xy/u20Nhy05Q==,type:str] + lastmodified: "2025-06-16T13:05:35Z" + mac: ENC[AES256_GCM,data:i8HOA7JSVSkxpoXJpFYrENodySyEEupYLNjuezRpd+PQWmxE7igonFyweUblmkSyBgy1FpmN+llwoP0Cokka5QyJse9jq9hR6dFATpZC9qPzSlAb+RpdSzp4QXjryOzP/23RJ7WhhBOC2DRw8OkDBPDJINBnCtu1ticpiuXKoHs=,iv:WEEdZDbrrkhip0ZkpqQfg6fwV+OzP/bBBrExyvOhqng=,tag:6iLMsJtenKdU/lJU/+HnCg==,type:str] pgp: - created_at: "2025-03-07T22:49:16Z" enc: |- diff --git a/system/monolith-bitbucket-runner.nix b/system/monolith-bitbucket-runner.nix new file mode 100644 index 0000000..17d462b --- /dev/null +++ b/system/monolith-bitbucket-runner.nix @@ -0,0 +1,50 @@ +{ + config, + pkgs, + ... +}: + +let + mkRunner = secret: { + image = "docker-public.packages.atlassian.com/sox/atlassian/bitbucket-pipelines-runner:latest"; + volumes = [ + "/tmp:/tmp" + "/var/run/docker.sock:/var/run/docker.sock" + "/var/lib/docker/containers:/var/lib/docker/containers:ro" + ]; + environmentFiles = [ secret ]; + }; + + secretConf = { + sopsFile = ../secrets/monolith/default.yaml; + }; +in +{ + virtualisation.docker = { + enable = true; + daemon.settings = { + # needed by bitbucket runner ??? + log-driver = "json-file"; + log-opts = { + max-size = "10m"; + max-file = "3"; + }; + }; + }; + + virtualisation.oci-containers.backend = "docker"; + + virtualisation.oci-containers.containers = { + bitbucket-runner-1 = mkRunner config.sops.secrets."bitbucket-runners/wopus-runner-1".path; + bitbucket-runner-2 = mkRunner config.sops.secrets."bitbucket-runners/wopus-runner-2".path; + bitbucket-runner-3 = mkRunner config.sops.secrets."bitbucket-runners/wopus-runner-3".path; + bitbucket-runner-4 = mkRunner config.sops.secrets."bitbucket-runners/wopus-runner-4".path; + }; + + sops.secrets = { + "bitbucket-runners/wopus-runner-1" = secretConf; + "bitbucket-runners/wopus-runner-2" = secretConf; + "bitbucket-runners/wopus-runner-3" = secretConf; + "bitbucket-runners/wopus-runner-4" = secretConf; + }; +} diff --git a/system/sound.nix b/system/sound.nix index 40dd701..f04e513 100644 --- a/system/sound.nix +++ b/system/sound.nix @@ -1,6 +1,6 @@ { pkgs, ... }: { - services.pulseaudio.enable = false; + hardware.pulseaudio.enable = false; services.pipewire = { enable = true; wireplumber.enable = true; diff --git a/user/gnome.nix b/user/gnome.nix index 9a3562b..776f095 100644 --- a/user/gnome.nix +++ b/user/gnome.nix @@ -43,7 +43,7 @@ lib.mkIf (config.my.desktop == "gnome") { qt6Packages.qtstyleplugin-kvantum ]; - services.gpg-agent.pinentry.package = pkgs.pinentry-gnome; + services.gpg-agent.pinentryPackage = pkgs.pinentry-gnome; xdg.defaultApplications = { enable = lib.mkForce false; diff --git a/user/home.nix b/user/home.nix index 1778052..334e260 100644 --- a/user/home.nix +++ b/user/home.nix @@ -36,7 +36,6 @@ ./pass.nix ./pqiv.nix ./zathura.nix - ./satty ./man.nix ./mpd.nix ./sway diff --git a/user/kakoune/kak-lsp.toml b/user/kakoune/kak-lsp.toml index 9c195bd..818c737 100644 --- a/user/kakoune/kak-lsp.toml +++ b/user/kakoune/kak-lsp.toml @@ -135,6 +135,7 @@ args = [ [language_server.rust-analyzer.settings.rust-analyzer] # See https://rust-analyzer.github.io/manual.html#configuration # cargo.features = [] +cargo.buildScripts.useRustcWrapper = false checkOnSave.command = "clippy" hoverActions.enable = false # kak-lsp doesn't support this at the moment diff --git a/user/satty/config.toml b/user/satty/config.toml deleted file mode 100644 index 84075cb..0000000 --- a/user/satty/config.toml +++ /dev/null @@ -1,63 +0,0 @@ -[general] -# Start Satty in fullscreen mode -fullscreen = true -# Exit directly after copy/save action -early-exit = true -# Draw corners of rectangles round if the value is greater than 0 (0 disables rounded corners) -corner-roundness = 12 -# Select the tool on startup [possible values: pointer, crop, line, arrow, rectangle, text, marker, blur, brush] -initial-tool = "brush" -# Configure the command to be called on copy, for example `wl-copy` -copy-command = "wl-copy" -# Increase or decrease the size of the annotations -# annotation-size-factor = 2 -# Filename to use for saving action. Omit to disable saving to file. Might contain format specifiers: https://docs.rs/chrono/latest/chrono/format/strftime/index.html -# output-filename = "/tmp/test-%Y-%m-%d_%H:%M:%S.png" -# After copying the screenshot, save it to a file as well -# save-after-copy = false -# Hide toolbars by default -# default-hide-toolbars = false -# Experimental: whether window focus shows/hides toolbars. This does not affect initial state of toolbars, see default-hide-toolbars. -# focus-toggles-toolbars = false -# The primary highlighter to use, the other is accessible by holding CTRL at the start of a highlight [possible values: block, freehand] -primary-highlighter = "block" -# Disable notifications -disable-notifications = true -# Actions to trigger on right click (order is important) -# [possible values: save-to-clipboard, save-to-file, exit] -# actions-on-right-click = [] -# Actions to trigger on Enter key (order is important) -# [possible values: save-to-clipboard, save-to-file, exit] -# actions-on-enter = ["save-to-clipboard"] -# Actions to trigger on Escape key (order is important) -# [possible values: save-to-clipboard, save-to-file, exit] -# actions-on-escape = ["exit"] -# Action to perform when the Enter key is pressed [possible values: save-to-clipboard, save-to-file] -# Deprecated: use actions-on-enter instead -action-on-enter = "save-to-clipboard" -# Right click to copy -# Deprecated: use actions-on-right-click instead -# right-click-copy = false -# request no window decoration. Please note that the compositor has the final say in this. At this point. requires xdg-decoration-unstable-v1. -# no-window-decoration = true -# experimental feature: adjust history size for brush input smooting (0: disabled, default: 0, try e.g. 5 or 10) -# brush-smooth-history-size = 10 - -# Font to use for text annotations -[font] -family = "Roboto" -style = "Bold" - -# Custom colours for the colour palette -[color-palette] -# These will be shown in the toolbar for quick selection -palette = [ - "#ff0000", - "#00ffff", - "#a52a2a", - "#dc143c", - "#ff1493", - "#ffd700", - "#008000", -] - diff --git a/user/satty/default.nix b/user/satty/default.nix deleted file mode 100644 index 5709b77..0000000 --- a/user/satty/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.satty; -in -{ - options.my.satty.enable = lib.mkEnableOption { }; - - config = lib.mkIf cfg.enable { - xdg.configFile."satty/config.toml" = { - source = ./config.toml; - }; - - home.packages = with pkgs; [ - satty - ]; - }; -} diff --git a/user/sway/default.nix b/user/sway/default.nix index 5fbd379..596fdde 100644 --- a/user/sway/default.nix +++ b/user/sway/default.nix @@ -32,7 +32,6 @@ in my.swaylock.enable = true; my.mpd.enable = true; my.zathura.enable = true; - my.satty.enable = true; my.waybar.enable = true; my.gammastep.enable = true; @@ -124,7 +123,7 @@ in indicator = true; }; - services.gpg-agent.pinentry.package = pkgs.pinentry-all; + services.gpg-agent.pinentryPackage = pkgs.pinentry-all; xdg.configFile."OpenTabletDriver/settings.json" = { force = true; diff --git a/user/sway/mako.nix b/user/sway/mako.nix index 6c78c9f..28b5eb4 100644 --- a/user/sway/mako.nix +++ b/user/sway/mako.nix @@ -20,22 +20,21 @@ in config = lib.mkIf cfg.enable { services.mako = { enable = true; + borderSize = 2; + padding = "5"; + margin = "15"; + layer = "overlay"; + + font = "${font.interface} ${toString font.size.small}"; + textColor = color.txt; + + backgroundColor = color.bg; + borderColor = accent.color; + progressColor = "over ${accent.color}88"; + + defaultTimeout = 10000; settings = { - border-size = 2; - padding = "5"; - margin = "15"; - layer = "overlay"; - - font = "${font.interface} ${toString font.size.small}"; - text-color = color.txt; - - background-color = color.bg; - border-color = accent.color; - progress-color = "over ${accent.color}88"; - - default-timeout = 10000; - "app-name=volumesh" = { "default-timeout" = "5000"; "group-by" = "app-name"; diff --git a/user/sway/sway-binds.nix b/user/sway/sway-binds.nix index ae71cf4..fd05236 100644 --- a/user/sway/sway-binds.nix +++ b/user/sway/sway-binds.nix @@ -172,7 +172,7 @@ let "${mod}+Return" = "exec ${terminal}"; "${mod}+Ctrl+Return" = "exec thunar"; "${mod}+Shift+s" = '' - exec grim - | satty --filename - --output-filename "$(xdg-user-dir PICTURES)"/Screenshots/satty-$(date '+%Y%m%d-%H:%M:%S').png + exec grim - | satty --filename - --fullscreen --output-filename "$(xdg-user-dir PICTURES)"/Screenshots/satty-$(date '+%Y%m%d-%H:%M:%S').png ''; "${mod}+Ctrl+v" = "exec wl-paste | tesseract -l por - - | wl-copy"; "${mod}+k" = "exec showkeys"; diff --git a/user/vscode/default.nix b/user/vscode/default.nix index e9a97cb..b8afdfd 100644 --- a/user/vscode/default.nix +++ b/user/vscode/default.nix @@ -4,7 +4,7 @@ programs.vscode = { enable = true; package = pkgs.vscodium; - profiles.default.extensions = with pkgs.vscode-extensions; [ + extensions = with pkgs.vscode-extensions; [ jnoortheen.nix-ide github.github-vscode-theme rust-lang.rust-analyzer diff --git a/user/waybar/default.nix b/user/waybar/default.nix index 5af72bc..fc95ff1 100644 --- a/user/waybar/default.nix +++ b/user/waybar/default.nix @@ -234,19 +234,23 @@ in }; } ]; - style = pkgs.replaceVars ./style.css { - accent_color = accent.color; + style = builtins.readFile ( + pkgs.substituteAll { + src = ./style.css; - color_bg = color.bg; - color_bg_dark = color.bg_dark; - color_bg_light = color.bg_light; - color_txt = color.txt; + accent_color = accent.color; - font_interface = font.interface; + color_bg = color.bg; + color_bg_dark = color.bg_dark; + color_bg_light = color.bg_light; + color_txt = color.txt; - font_size_big = "${toString font.size.big}px"; - font_size_medium = "${toString font.size.medium}px"; - }; + font_interface = font.interface; + + font_size_big = "${toString font.size.big}px"; + font_size_medium = "${toString font.size.medium}px"; + } + ); }; home.packages = with pkgs; [ waybar ]; };