diff --git a/flake.lock b/flake.lock index 54d4919..60f3602 100644 --- a/flake.lock +++ b/flake.lock @@ -204,11 +204,11 @@ ] }, "locked": { - "lastModified": 1760103600, - "narHash": "sha256-R4cltQFceN3POiPhBu7aTKsrwqTiwo6zjzmitrHD80E=", + "lastModified": 1759853171, + "narHash": "sha256-uqbhyXtqMbYIiMqVqUhNdSuh9AEEkiasoK3mIPIVRhk=", "owner": "nix-community", "repo": "home-manager", - "rev": "bcccb01d0a353c028cc8cb3254cac7ebae32929e", + "rev": "1a09eb84fa9e33748432a5253102d01251f72d6d", "type": "github" }, "original": { @@ -295,11 +295,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1760106635, - "narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=", + "lastModified": 1759582739, + "narHash": "sha256-spZegilADH0q5OngM86u6NmXxduCNv5eX9vCiUPhOYc=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903", + "rev": "3441b5242af7577230a78ffb03542add264179ab", "type": "github" }, "original": { @@ -311,11 +311,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1760038930, - "narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=", + "lastModified": 1759733170, + "narHash": "sha256-TXnlsVb5Z8HXZ6mZoeOAIwxmvGHp1g4Dw89eLvIwKVI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3", + "rev": "8913c168d1c56dc49a7718685968f38752171c3b", "type": "github" }, "original": { @@ -462,11 +462,11 @@ ] }, "locked": { - "lastModified": 1760120816, - "narHash": "sha256-gq9rdocpmRZCwLS5vsHozwB6b5nrOBDNc2kkEaTXHfg=", + "lastModified": 1758728421, + "narHash": "sha256-ySNJ008muQAds2JemiyrWYbwbG+V7S5wg3ZVKGHSFu8=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "761ae7aff00907b607125b2f57338b74177697ed", + "rev": "5eda4ee8121f97b218f7cc73f5172098d458f1d1", "type": "github" }, "original": { diff --git a/home/dconf.nix b/home/dconf.nix new file mode 100644 index 0000000..5238c97 --- /dev/null +++ b/home/dconf.nix @@ -0,0 +1,209 @@ +{ lib, pkgs, ... }: +with lib.hm.gvariant; +{ + home.packages = [ + pkgs.adwaita-icon-theme + pkgs.adwaita-qt + ]; + + dconf.settings = with lib.hm.gvariant; { + "org/gnome/shell" = { + favorite-apps = [ + "alacritty.desktop" + "element.desktop" + "evolution.desktop" + "firefox.desktop" + "spotify.desktop" + ]; + }; + + "org/gnome/shell" = { + disable-user-extensions = false; + enabled-extensions = [ + "system-monitor@gnome-shell-extensions.gcampax.github.com" + "switcher@landau.fi" + ]; + }; + + "org/gnome/desktop/calendar" = { + show-weekdate = true; + }; + + "org/gnome/desktop/input-sources" = { + current = mkUint32 0; + per-window = false; + show-all-sources = true; + sources = [ + (mkTuple [ + "xkb" + "eu" + ]) + (mkTuple [ + "xkb" + "de" + ]) + ]; + xkb-options = [ + "lv3:ralt_switch" + "caps:escape" + ]; + }; + + "org/gnome/desktop/interface" = { + clock-show-date = true; + clock-show-seconds = false; + clock-show-weekday = true; + cursor-theme = "Adwaita"; + enable-animations = true; + enable-hot-corners = false; + font-antialiasing = "grayscale"; + font-hinting = "slight"; + font-name = "Cantarell 10"; + gtk-enable-primary-paste = false; + gtk-key-theme = "Emacs"; + gtk-theme = "Adwaita"; + color-scheme = "prefer-light"; + icon-theme = "Adwaita"; + locate-pointer = false; + monospace-font-name = "JetBrains Mono 10"; + show-battery-percentage = false; + #text-scaling-factor = 1.0; + toolkit-accessibility = false; + }; + + "org/gnome/desktop/peripherals/keyboard" = { + numlock-state = false; + }; + + "org/gnome/desktop/peripherals/mouse" = { + accel-profile = "default"; + natural-scroll = true; + }; + + "org/gnome/desktop/peripherals/touchpad" = { + send-events = "enabled"; + tap-to-click = true; + two-finger-scrolling-enabled = true; + }; + + "org/gnome/desktop/privacy" = { + disable-microphone = false; + old-files-age = mkUint32 30; + recent-files-max-age = -1; + report-technical-problems = false; + }; + + "org/gnome/desktop/screensaver" = { + color-shading-type = "solid"; + lock-delay = mkUint32 30; + lock-enabled = true; + }; + + "org/gnome/desktop/session" = { + idle-delay = mkUint32 0; + }; + + "org/gnome/desktop/sound" = { + event-sounds = false; + theme-name = "__custom"; + }; + + "org/gnome/evince/default" = { + continuous = true; + dual-page = false; + dual-page-odd-left = false; + enable-spellchecking = true; + fullscreen = false; + inverted-colors = false; + show-sidebar = false; + sidebar-page = "links"; + sidebar-size = 132; + sizing-mode = "free"; + }; + + "org/gnome/evolution/calendar" = { + editor-show-timezone = true; + use-24hour-format = true; + week-start-day-name = "monday"; + work-day-friday = true; + work-day-monday = true; + work-day-saturday = false; + work-day-sunday = false; + work-day-thursday = true; + work-day-tuesday = true; + work-day-wednesday = true; + }; + + "org/gnome/evolution/mail" = { + browser-close-on-reply-policy = "always"; + composer-attribution-language = "de_DE"; + composer-reply-start-bottom = false; + composer-signature-in-new-only = true; + composer-spell-languages = [ + "de" + "en_US" + ]; + composer-top-signature = false; + composer-unicode-smileys = false; + composer-visually-wrap-long-lines = true; + composer-wrap-quoted-text-in-replies = false; + forward-style = 0; + forward-style-name = "attached"; + headers-collapsed = false; + image-loading-policy = "never"; + junk-check-custom-header = true; + junk-check-incoming = true; + junk-empty-on-exit-days = 0; + junk-lookup-addressbook = false; + notify-remote-content = true; + prompt-check-if-default-mailer = false; + prompt-on-composer-mode-switch = true; + prompt-on-empty-subject = true; + prompt-on-expunge = true; + prompt-on-mark-all-read = false; + prompt-on-mark-as-junk = true; + prompt-on-reply-close-browser = "always"; + prompt-on-unwanted-html = true; + reply-style = 0; + reply-style-name = "quoted"; + search-gravatar-for-photo = false; + }; + + "org/gnome/evolution/plugin/prefer-plain" = { + mode = "only_plain"; + show-suppressed = true; + }; + + "org/gnome/gnome-screenshot" = { + border-effect = "none"; + delay = 0; + include-border = true; + include-pointer = false; + last-save-directory = "file:///home/dadada/lib/pictures/Screenshots"; + }; + + "org/gnome/mutter" = { + attach-modal-dialogs = true; + center-new-windows = true; + dynamic-workspaces = true; + edge-tiling = true; + experimental-features = [ ]; + focus-change-on-pointer-rest = true; + overlay-key = "Super_L"; + workspaces-only-on-primary = true; + }; + + "org/gnome/settings-daemon/plugins/power" = { + idle-dim = true; + power-button-action = "interactive"; + power-saver-profile-on-low-battery = true; + sleep-inactive-ac-type = "blank"; + sleep-inactive-battery-timeout = 600; + sleep-inactive-battery-type = "suspend"; + }; + + "org/gnome/system/location" = { + enabled = false; + }; + }; +} diff --git a/home/default.nix b/home/default.nix index b70d7e2..242a5fe 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,8 +1,22 @@ { pkgs, + lib, ... }: let + useFeatures = [ + "alacritty" + #"emacs" + "direnv" + "git" + "gpg" + #"gtk" + #"keyring" + "tmux" + "xdg" + "zsh" + "helix" + ]; colors = { background = "fdf6e3"; foreground = "657b83"; @@ -26,39 +40,29 @@ let in { imports = [ - ./git.nix - ./helix - ./tmux.nix - ./xdg.nix - ./zsh.nix + ./dconf.nix ]; home.stateVersion = "20.09"; - home.sessionVariables = { - EDITOR = "hx"; - PAGER = "less"; - }; + programs.gpg.settings.default-key = "99658A3EB5CD7C13"; - programs.gpg = { - enable = true; - settings = { - default-key = "99658A3EB5CD7C13"; - fixed-list-mode = true; - keyid-format = "0xlong"; - verify-options = "show-uid-validity"; - list-options = "show-uid-validity"; - cert-digest-algo = "SHA256"; - use-agent = true; - keyserver = "hkps://keys.openpgp.org"; + dadada.home = + lib.attrsets.genAttrs useFeatures (useFeatures: { + enable = true; + }) + // { + session = { + enable = true; + sessionVars = { + EDITOR = "hx"; + PAGER = "less"; + MAILDIR = "\$HOME/.var/mail"; + MBLAZE = "\$HOME/.config/mblaze"; + NOTMUCH_CONFIG = "\$HOME/.config/notmuch/config"; + }; + }; }; - }; - - services.gpg-agent = { - enable = true; - defaultCacheTtl = 1800; - enableSshSupport = false; - }; # Languagetool server for web extension systemd.user.services."languagetool-http-server" = { @@ -79,6 +83,43 @@ in }; }; + programs.offlineimap.enable = false; + xdg.configFile."offlineimap/config".text = '' + [general] + accounts = tu-bs,mailbox + + [Account tu-bs] + localrepository = tu-bs-local + remoterepository = tu-bs-remote + + [Repository tu-bs-local] + type = Maildir + localfolders = ~/lib/backup/y0067212@tu-bs.de + + [Repository tu-bs-remote] + type = IMAP + remotehost = mail.tu-braunschweig.de + remoteuser = y0067212 + sslcacertfile = /etc/ssl/certs/ca-certificates.crt + + [Account mailbox] + localrepository = mailbox-local + remoterepository = mailbox-remote + + [Repository mailbox-local] + type = Maildir + localfolders = ~/lib/backup/mailbox.org + + [Repository mailbox-remote] + type = IMAP + remotehost = imap.mailbox.org + remoteuser = dadada@dadada.li + sslcacertfile = /etc/ssl/certs/ca-certificates.crt + ''; + + home.file.".jjconfig.toml".source = ./jjconfig.toml; + #home.file.".config/halloy/config.toml".source = ./halloy.toml; + systemd.user.timers."backup-keepassxc" = { Unit.Description = "Backup password DB"; Timer = { @@ -131,13 +172,267 @@ in }; }; - services.syncthing.enable = true; + home.file.".config/sway/config".text = with colors; '' + # Read `man 5 sway` for a complete reference. - programs.direnv = { - enable = true; - enableZshIntegration = true; - nix-direnv.enable = true; - }; + ### Variables + # + # Logo key. Use Mod1 for Alt. + set $mod Mod4 + # Home row direction keys, like vim + set $left h + set $down j + set $up k + set $right l + # Your preferred terminal emulator + set $term foot + # Your preferred application launcher + # Note: pass the final command to swaymsg so that the resulting window can be opened + # on the original workspace that the command was run on. + set $menu fuzzel + set $wallpaper "~/lib/pictures/wallpaper.jpg" + + ### Idle configuration + # + # Example configuration: + # + exec swayidle -w \ + timeout 300 'swaylock -f -i $wallpaper -s fill' \ + timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \ + before-sleep 'swaylock -f -i $wallpaper -s fill' + # + # This will lock your screen after 300 seconds of inactivity, then turn off + # your displays after another 300 seconds, and turn your screens back on when + # resumed. It will also lock your screen before your computer goes to sleep. + + input * { + xkb_layout eu + xkb_model pc105+inet + xkb_options caps:escape + drag_lock enabled + drag enabled + dwt enabled + tap enabled + tap_button_map lrm + natural_scroll enabled + } + + ### Key bindings + # + # Basics: + # + # Start a terminal + bindsym $mod+Return exec $term + + # Kill focused window + bindsym $mod+Shift+q kill + + # Start your launcher + bindsym $mod+d exec $menu + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # Lock the screen + bindsym XF86Sleep exec 'swaylock -f -c ${background}' + bindsym $mod+End exec 'swaylock -f -c ${background}' + + # Reload the configuration file + bindsym $mod+Shift+c reload + + # Exit sway (logs you out of your Wayland session) + bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' + + # Brightness + bindsym --locked XF86MonBrightnessDown exec light -U 10 + bindsym --locked XF86MonBrightnessUp exec light -A 10 + + # Volume + bindsym --locked XF86AudioRaiseVolume exec 'pactl set-sink-volume @DEFAULT_SINK@ +1%' + bindsym --locked XF86AudioLowerVolume exec 'pactl set-sink-volume @DEFAULT_SINK@ -1%' + bindsym --locked XF86AudioMute exec 'pactl set-sink-mute @DEFAULT_SINK@ toggle' + + # + # Moving around: + # + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # Or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # Move the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # Ditto, with arrow keys + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right + + # + # Workspaces: + # + # Switch to workspace + bindsym $mod+1 workspace number 1 + bindsym $mod+2 workspace number 2 + bindsym $mod+3 workspace number 3 + bindsym $mod+4 workspace number 4 + bindsym $mod+5 workspace number 5 + bindsym $mod+6 workspace number 6 + bindsym $mod+7 workspace number 7 + bindsym $mod+8 workspace number 8 + bindsym $mod+9 workspace number 9 + bindsym $mod+0 workspace number 10 + # Move focused container to workspace + bindsym $mod+Shift+1 move container to workspace number 1 + bindsym $mod+Shift+2 move container to workspace number 2 + bindsym $mod+Shift+3 move container to workspace number 3 + bindsym $mod+Shift+4 move container to workspace number 4 + bindsym $mod+Shift+5 move container to workspace number 5 + bindsym $mod+Shift+6 move container to workspace number 6 + bindsym $mod+Shift+7 move container to workspace number 7 + bindsym $mod+Shift+8 move container to workspace number 8 + bindsym $mod+Shift+9 move container to workspace number 9 + bindsym $mod+Shift+0 move container to workspace number 10 + # Note: workspaces can have any name you want, not just numbers. + # We just use 1-10 as the default. + + # + # Layout stuff: + # + # You can "split" the current object of your focus with + # $mod+b or $mod+v, for horizontal and vertical splits + # respectively. + bindsym $mod+b splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # Move focus to the parent container + bindsym $mod+a focus parent + + # + # Font + # + font "pango:Jetbrains Mono 8" + + # + # Scratchpad: + # + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show + + # + # Resizing containers: + # + mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" + } + bindsym $mod+r mode "resize" + + # + # Status Bar: + # + # Read `man 5 sway-bar` for more information about this section. + bar { + position bottom + + # When the status_command prints a new line to stdout, swaybar updates. + # The default just shows the current date and time. + status_command ~/.config/sway/status + + colors { + statusline ${foreground} + background ${background} + inactive_workspace ${background}ee ${background}ee ${foreground}ee + } + } + + # Gaps between multiple tiling windows + gaps inner 10 + smart_gaps on + + bindsym $mod+grave exec busctl --user call org.keepassxc.KeePassXC.MainWindow /keepassxc org.keepassxc.KeePassXC.MainWindow lockAllDatabases && swaylock -c #fdf6e3 + + # class border backgr. text indicator child_border + client.focused #${bright6} #${foreground} #${background} #${bright5} #${regular4} + client.focused_inactive #${regular0} #${regular0} #${foreground} #${bright5} #${regular0} + client.unfocused #${regular0} #${background} #${bright2} #${bright5} #${regular0} + client.urgent #${bright1} #${bright0} #${regular4} #${background} #${bright0} + client.placeholder #${background} #${bright2} #${foreground} #${background} #${bright2} + + client.background #${foreground} + + include /etc/sway/config.d/* + + exec sleep 5; systemctl --user restart kanshi.service + exec sleep 5; swaymsg output '*' bg $wallpaper fill + ''; + home.file.".config/sway/status".source = ./status; + home.file.".config/kanshi/config".text = '' + profile Laptop { + output eDP-1 enable + } + + profile Docked { + output eDP-1 disable + output "LG Electronics LG HDR 4K 0x000354D1" { + enable + scale 1.4 + position 0,0 + } + } + ''; + + services.syncthing.enable = true; # Let Home Manager install and manage itself. programs.home-manager.enable = true; diff --git a/home/git.nix b/home/git.nix deleted file mode 100644 index c7006b6..0000000 --- a/home/git.nix +++ /dev/null @@ -1,99 +0,0 @@ -{ - lib, - pkgs, - ... -}: -with lib; -let - allowedSigners = pkgs.writeTextFile { - name = "allowed-signers"; - text = '' - dadada@dadada.li sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIKu+pA5Vy0QPHJMjn2S5DCsqKg2UvDhOsBwvvJLf4HbyAAAABHNzaDo= dadada - dadada@dadada.li ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFKRuecjbtDh4jyDZH3ccU9t0QFcAgZDBFO8ZWZBA9iT dadada@gorgon - ''; - }; -in -{ - programs.git = { - enable = true; - extraConfig = { - commit = { - gpgSign = true; - verbose = true; - }; - gpg = { - format = "ssh"; - ssh.allowedSignersFile = "${allowedSigners}"; - ssh.program = "ssh-keygen"; - }; - tag.gpgSign = true; - user = { - email = "dadada@dadada.li"; - name = "Tim Schubert"; - signingKey = "key::ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFKRuecjbtDh4jyDZH3ccU9t0QFcAgZDBFO8ZWZBA9iT dadada@gorgon"; - }; - core = { - whitespace = { - tab-in-indent = true; - tabwidth = 4; - }; - alias = { }; - pager = "delta"; - }; - column.ui = "never"; - checkout.defaultRemote = "origin"; - delta = { - navigate = true; # use n and N to move between diff sections - side-by-side = false; - line-numbers = true; - light = true; - }; - diff = { - renames = "copies"; - algorithm = "histogram"; - colorMoved = "default"; - }; - interactive.diffFilter = "delta --color-only"; - merge = { - conflictstyle = "zdiff3"; - keepbackup = false; - tool = "meld"; - }; - status = { - short = true; - branch = true; - showUntrackedFiled = "all"; - }; - log.date = "iso8601-local"; - fetch.prune = true; - pull = { - prune = true; - ff = "only"; - rebase = "interactive"; - }; - push = { - default = "current"; - autoSetupRemote = true; - }; - rebase = { - abbreviateCommands = true; - # Automatically force-update any branches that point to commits that are being rebased. - updateRefs = true; - }; - rerere.enabled = true; - transfer.fsckobjects = true; - fetch.fsckobjects = true; - receive.fsckObjects = true; - branch.sort = "-committerdate"; - }; - }; - - home.packages = with pkgs; [ - delta - git-lfs - gitAndTools.hub - gitAndTools.lab - gitAndTools.git-absorb - meld - ]; -} diff --git a/home/jjconfig.toml b/home/jjconfig.toml new file mode 100644 index 0000000..43fbcbd --- /dev/null +++ b/home/jjconfig.toml @@ -0,0 +1,8 @@ +[user] +name = "Tim Schubert" +email = "dadada@dadada.li" + +[ui] +diff-editor = ["scm-diff-editor", "--dir-diff", "$left", "$right"] +diff-instructions = false +merge-editor = ["meld"] diff --git a/home/modules.nix b/home/modules.nix new file mode 100644 index 0000000..0a6c961 --- /dev/null +++ b/home/modules.nix @@ -0,0 +1,13 @@ +{ lib, ... }: +with lib; +let + modules' = + dir: + filterAttrs (name: type: (hasSuffix ".nix" name) || (type == "directory")) (builtins.readDir dir); + modules = + dir: + mapAttrs' (name: _: nameValuePair (removeSuffix ".nix" name) (import (dir + "/${name}"))) ( + modules' dir + ); +in +(modules ./modules) diff --git a/home/modules/alacritty/colors.toml b/home/modules/alacritty/colors.toml new file mode 100644 index 0000000..3f7eb25 --- /dev/null +++ b/home/modules/alacritty/colors.toml @@ -0,0 +1,28 @@ +# Colors (Solarized Light) + +# Default colors +[colors.primary] +background = '#fdf6e3' +foreground = '#586e75' + +# Normal colors +[colors.normal] +black = '#073642' +red = '#dc322f' +green = '#859900' +yellow = '#b58900' +blue = '#268bd2' +magenta = '#d33682' +cyan = '#2aa198' +white = '#eee8d5' + +# Bright colors +[colors.bright] +black = '#002b36' +red = '#cb4b16' +green = '#586e75' +yellow = '#657b83' +blue = '#839496' +magenta = '#6c71c4' +cyan = '#93a1a1' +white = '#fdf6e3' diff --git a/home/modules/alacritty/default.nix b/home/modules/alacritty/default.nix new file mode 100644 index 0000000..da9f503 --- /dev/null +++ b/home/modules/alacritty/default.nix @@ -0,0 +1,49 @@ +{ + pkgs, + lib, + config, + ... +}: +with lib; +let + cfg = config.dadada.home.alacritty; +in +{ + options.dadada.home.alacritty = { + enable = mkEnableOption "Enable alacritty config"; + }; + config = mkIf cfg.enable { + home.packages = [ + pkgs.jetbrains-mono + ]; + programs.alacritty = { + enable = true; + settings = { + env.TERM = "xterm-256color"; + scrolling.history = 0; + font = { + size = 9; + normal = { + family = "Jetbrains Mono"; + style = "Regular"; + }; + bold = { + family = "Jetbrains Mono"; + style = "Bold"; + }; + italic = { + family = "Jetbrains Mono"; + style = "Italic"; + }; + bold_italic = { + family = "Jetbrains Mono"; + style = "Bold Italic"; + }; + }; + shell.program = "tmux"; + window.decorations = "none"; + colors = (lib.trivial.importTOML ./colors.toml).colors; + }; + }; + }; +} diff --git a/home/modules/colors.nix b/home/modules/colors.nix new file mode 100644 index 0000000..a4dc5c7 --- /dev/null +++ b/home/modules/colors.nix @@ -0,0 +1,44 @@ +{ + config, + lib, + ... +}: +with lib; +{ + options.dadada.home.colors = mkOption { + type = types.attrs; + description = "Color scheme"; + }; + + config = { + dadada.home.colors = { + foreground = "#a3a3a3"; + foregroundBold = "#e8e8e8"; + cursor = "#e8e8e8"; + cursorForeground = "#1f2022"; + background = "#292b2e"; + color0 = "#1f2022"; + color8 = "#585858"; + color7 = "#a3a3a3"; + color15 = "#f8f8f8"; + color1 = "#f2241f"; + color9 = "#f2241f"; + color2 = "#67b11d"; + color10 = "#67b11d"; + color3 = "#b1951d"; + color11 = "#b1951d"; + color4 = "#4f97d7"; + color12 = "#4f97d7"; + color5 = "#a31db1"; + color13 = "#a31db1"; + color6 = "#2d9574"; + color14 = "#2d9574"; + color16 = "#ffa500"; + color17 = "#b03060"; + color18 = "#282828"; + color19 = "#444155"; + color20 = "#b8b8b8"; + color21 = "#e8e8e8"; + }; + }; +} diff --git a/home/modules/direnv.nix b/home/modules/direnv.nix new file mode 100644 index 0000000..27a0907 --- /dev/null +++ b/home/modules/direnv.nix @@ -0,0 +1,22 @@ +{ + config, + pkgs, + lib, + ... +}: +with lib; +let + cfg = config.dadada.home.direnv; +in +{ + options.dadada.home.direnv = { + enable = mkEnableOption "Enable direnv config"; + }; + config = mkIf cfg.enable { + programs.direnv = { + enable = true; + enableZshIntegration = true; + nix-direnv.enable = true; + }; + }; +} diff --git a/home/modules/git.nix b/home/modules/git.nix new file mode 100644 index 0000000..53fcb6e --- /dev/null +++ b/home/modules/git.nix @@ -0,0 +1,106 @@ +{ + config, + lib, + pkgs, + ... +}: +with lib; +let + cfg = config.dadada.home.git; + allowedSigners = pkgs.writeTextFile { + name = "allowed-signers"; + text = '' + dadada@dadada.li sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIKu+pA5Vy0QPHJMjn2S5DCsqKg2UvDhOsBwvvJLf4HbyAAAABHNzaDo= dadada + dadada@dadada.li ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFKRuecjbtDh4jyDZH3ccU9t0QFcAgZDBFO8ZWZBA9iT dadada@gorgon + ''; + }; +in +{ + options.dadada.home.git = { + enable = mkEnableOption "Enable git config"; + }; + config = mkIf cfg.enable { + programs.git = { + enable = true; + extraConfig = { + commit = { + gpgSign = true; + verbose = true; + }; + gpg = { + format = "ssh"; + ssh.allowedSignersFile = "${allowedSigners}"; + ssh.program = "ssh-keygen"; + }; + tag.gpgSign = true; + user = { + email = "dadada@dadada.li"; + name = "Tim Schubert"; + signingKey = "key::ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFKRuecjbtDh4jyDZH3ccU9t0QFcAgZDBFO8ZWZBA9iT dadada@gorgon"; + }; + core = { + whitespace = { + tab-in-indent = true; + tabwidth = 4; + }; + alias = { }; + pager = "delta"; + }; + column.ui = "never"; + checkout.defaultRemote = "origin"; + delta = { + navigate = true; # use n and N to move between diff sections + side-by-side = false; + line-numbers = true; + light = true; + }; + diff = { + renames = "copies"; + algorithm = "histogram"; + colorMoved = "default"; + }; + interactive.diffFilter = "delta --color-only"; + merge = { + conflictstyle = "zdiff3"; + keepbackup = false; + tool = "meld"; + }; + status = { + short = true; + branch = true; + showUntrackedFiled = "all"; + }; + log.date = "iso8601-local"; + fetch.prune = true; + pull = { + prune = true; + ff = "only"; + rebase = "interactive"; + }; + push = { + default = "current"; + autoSetupRemote = true; + }; + rebase = { + abbreviateCommands = true; + # Automatically force-update any branches that point to commits that are being rebased. + updateRefs = true; + }; + rerere.enabled = true; + transfer.fsckobjects = true; + fetch.fsckobjects = true; + receive.fsckObjects = true; + branch.sort = "-committerdate"; + }; + }; + + home.packages = with pkgs; [ + delta + git-lfs + gitAndTools.hub + gitAndTools.lab + gitAndTools.git-absorb + meld + ]; + }; +} diff --git a/home/modules/gpg.nix b/home/modules/gpg.nix new file mode 100644 index 0000000..baa17dd --- /dev/null +++ b/home/modules/gpg.nix @@ -0,0 +1,34 @@ +{ + config, + lib, + ... +}: +with lib; +let + cfg = config.dadada.home.gpg; +in +{ + options.dadada.home.gpg = { + enable = mkEnableOption "Enable GnuPG config"; + }; + config = mkIf cfg.enable { + programs.gpg = { + enable = true; + settings = { + fixed-list-mode = true; + keyid-format = "0xlong"; + verify-options = "show-uid-validity"; + list-options = "show-uid-validity"; + cert-digest-algo = "SHA256"; + use-agent = true; + keyserver = "hkps://keys.openpgp.org"; + }; + }; + + services.gpg-agent = { + enable = true; + defaultCacheTtl = 1800; + enableSshSupport = false; + }; + }; +} diff --git a/home/modules/gtk.nix b/home/modules/gtk.nix new file mode 100644 index 0000000..5dcd2e6 --- /dev/null +++ b/home/modules/gtk.nix @@ -0,0 +1,20 @@ +{ + config, + lib, + pkgs, + ... +}: +with lib; +let + cfg = config.dadada.home.gtk; +in +{ + options.dadada.home.gtk = { + enable = mkEnableOption "Enable GTK config"; + }; + config = mkIf cfg.enable { + gtk = { + enable = true; + }; + }; +} diff --git a/home/helix/config/config.toml b/home/modules/helix/config/config.toml similarity index 100% rename from home/helix/config/config.toml rename to home/modules/helix/config/config.toml diff --git a/home/helix/config/languages.toml b/home/modules/helix/config/languages.toml similarity index 100% rename from home/helix/config/languages.toml rename to home/modules/helix/config/languages.toml diff --git a/home/helix/default.nix b/home/modules/helix/default.nix similarity index 81% rename from home/helix/default.nix rename to home/modules/helix/default.nix index 7061527..7717423 100644 --- a/home/helix/default.nix +++ b/home/modules/helix/default.nix @@ -9,6 +9,7 @@ let in { options.dadada.home.helix = { + enable = lib.mkEnableOption "Enable helix editor"; package = lib.mkOption { type = lib.types.package; description = "Helix editor package to use"; @@ -16,7 +17,7 @@ in }; }; - config = { + config = lib.mkIf cfg.enable { home.file.".config/helix".source = ./config; home.packages = [ cfg.package diff --git a/home/modules/keyring.nix b/home/modules/keyring.nix new file mode 100644 index 0000000..48b8b54 --- /dev/null +++ b/home/modules/keyring.nix @@ -0,0 +1,20 @@ +{ + config, + lib, + ... +}: +with lib; +let + cfg = config.dadada.home.keyring; +in +{ + options.dadada.home.keyring = { + enable = mkEnableOption "Enable keyring config"; + }; + config = mkIf cfg.enable { + services.gnome-keyring = { + enable = false; + components = [ "secrets" ]; + }; + }; +} diff --git a/home/modules/session.nix b/home/modules/session.nix new file mode 100644 index 0000000..ba5c941 --- /dev/null +++ b/home/modules/session.nix @@ -0,0 +1,27 @@ +{ + config, + lib, + ... +}: +with lib; +let + cfg = config.dadada.home.session; +in +{ + options.dadada.home.session = { + enable = mkEnableOption "Enable session variable management"; + sessionVars = mkOption { + description = "Session variables"; + type = types.attrs; + default = { }; + example = '' + EDITOR = "hx"; + PAGER = "less"; + ''; + }; + }; + config = mkIf cfg.enable { + home.sessionVariables = cfg.sessionVars; + systemd.user.sessionVariables = cfg.sessionVars; + }; +} diff --git a/home/modules/ssh.nix b/home/modules/ssh.nix new file mode 100644 index 0000000..b8aab54 --- /dev/null +++ b/home/modules/ssh.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + ... +}: +with lib; +let + cfg = config.dadada.home.ssh; +in +{ + options.dadada.home.ssh = { + enable = mkEnableOption "Enable SSH config"; + }; + config = mkIf cfg.enable { + programs.ssh = { + enable = true; + }; + }; +} diff --git a/home/modules/tmux.nix b/home/modules/tmux.nix new file mode 100644 index 0000000..063b8f2 --- /dev/null +++ b/home/modules/tmux.nix @@ -0,0 +1,34 @@ +{ + config, + lib, + ... +}: +with lib; +let + cfg = config.dadada.home.tmux; +in +{ + options.dadada.home.tmux = { + enable = mkEnableOption "Enable tmux config"; + }; + config = mkIf cfg.enable { + programs.tmux = { + enable = true; + terminal = "tmux-256color"; + extraConfig = '' + setw -g mode-keys vi + set -g mouse on + set -g set-clipboard external + set -g set-titles on + set -g status on + set -ga terminal-overrides ',*256col*:Tc' + set-option -g status-interval 5 + set-option -g automatic-rename on + set-option -g automatic-rename-format '#{b:pane_current_path}' + bind '"' split-window -c "#{pane_current_path}" + bind % split-window -h -c "#{pane_current_path}" + bind c new-window -c "#{pane_current_path}" + ''; + }; + }; +} diff --git a/home/modules/xdg.nix b/home/modules/xdg.nix new file mode 100644 index 0000000..02cadaf --- /dev/null +++ b/home/modules/xdg.nix @@ -0,0 +1,55 @@ +{ + config, + pkgs, + lib, + ... +}: +with lib; +let + apps = { + "x-scheme-handler/mailto" = "evolution.desktop"; + "message/rfc822" = "evolution.desktop"; + "x-scheme-handler/http" = "firefox.desktop"; + "x-scheme-handler/https" = "firefox.desktop"; + "x-scheme-handler/ftp" = "firefox.desktop"; + "x-scheme-handler/chrome" = "firefox.desktop"; + "text/html" = "firefox.desktop"; + "application/x-extension-htm" = "firefox.desktop"; + "application/x-extension-html" = "firefox.desktop"; + "application/x-extension-shtml" = "firefox.desktop"; + "application/xhtml+xml" = "firefox.desktop"; + "application/x-extension-xhtml" = "firefox.desktop"; + "application/x-extension-xht" = "firefox.desktop"; + "application/pdf" = "evince.desktop"; + }; + cfg = config.dadada.home.xdg; +in +{ + options.dadada.home.xdg = { + enable = mkEnableOption "Enable XDG config"; + }; + config = mkIf cfg.enable { + xdg = { + enable = true; + configHome = "${config.home.homeDirectory}/.config"; + mimeApps = { + enable = false; + associations.added = apps; + defaultApplications = apps; + }; + userDirs = { + desktop = "\$HOME/.desktop"; + download = "\$HOME/tmp"; + music = "\$HOME/lib/music"; + videos = "\$HOME/lib/videos"; + pictures = "\$HOME/lib/pictures"; + documents = "\$HOME/lib"; + }; + }; + home.packages = with pkgs; [ + evince + firefox + xdg-utils + ]; + }; +} diff --git a/home/modules/zsh.nix b/home/modules/zsh.nix new file mode 100644 index 0000000..734d560 --- /dev/null +++ b/home/modules/zsh.nix @@ -0,0 +1,80 @@ +{ + config, + pkgs, + lib, + ... +}: +with lib; +let + cfg = config.dadada.home.zsh; +in +{ + options.dadada.home.zsh = { + enable = mkEnableOption "Enable ZSH config"; + }; + config = mkIf cfg.enable { + programs.fzf.enableZshIntegration = true; + programs.zsh = { + enable = true; + enableCompletion = true; + enableVteIntegration = true; + autosuggestion.enable = true; + autocd = true; + sessionVariables = { + EDITOR = "hx"; + }; + history = { + extended = true; + ignoreDups = true; + ignoreSpace = true; + save = 100000; + # FIXME https://github.com/junegunn/fzf/issues/4061 + #share = true; + share = false; + }; + plugins = [ + ]; + initContent = '' + source ${pkgs.fzf}/share/fzf/key-bindings.zsh + source ${pkgs.fzf}/share/fzf/completion.zsh + eval "$(repo setup --root ~/src)" + + bindkey -e '^n' autosuggest-accept + + preexec() { echo -n -e "\033]0;$1\007" } + + PROMPT="%F{red}%?%f %F{green}%m%f:%F{blue}%~%f"$'\n'"╰─> " + ''; + profileExtra = ''''; + shellAliases = { + ga = "git add"; + gc = "git commit"; + gd = "git diff"; + gdw = "git diff --color-words"; + gf = "git fetch"; + gl = "git log"; + gpu = "git push"; + gpul = "git pull"; + grb = "git rebase"; + gre = "git reflog"; + gs = "git status"; + gsh = "git show"; + gst = "git status"; + gsta = "git stash"; + gstap = "git stash apply"; + exa = "eza"; + ls = "exa"; + la = "exa -a"; + ll = "exa -la --no-filesize --changed --time-style=long-iso --git --octal-permissions --no-permissions --no-user --ignore-glob=\".git\""; + mv = "mv -i"; + cp = "cp -i"; + }; + }; + + home.packages = with pkgs; [ + fzf + eza + tmux + ]; + }; +} diff --git a/home/pkgs.nix b/home/pkgs.nix index 71c9472..5e67ea0 100644 --- a/home/pkgs.nix +++ b/home/pkgs.nix @@ -1,84 +1,152 @@ { pkgs }: with pkgs; [ + # anki + aqbanking + aria2 + aspell + aspellDicts.de + aspellDicts.en + aspellDicts.en-computers + aspellDicts.en-science bash bat # cat with syntax highlighting and git integration binutils bluez-tools + btop # htop + choose # alternative to cut and awk with more readable syntax chromium + colordiff + darcs delta # feature-rich diff viewer dig direnv + duf # disk usage + dune3d + dyff # diff tool for YAML element-desktop + evince + evolution ffmpeg file + fuzzel + fx # themable json viewer + fzf fzf gdb gh + ghidra-bin gimp + glow glow # render markdown gnumake gnupg + gping # ping with graphs + graphviz + grim + gron # make json grepable halloy hexyl # hex viewer + htop httpie + hub hyperfine # A command-line benchmarking tool. + icdiff + imagemagick inkscape inotify-tools ioping # ping but for block devices iproute2 iputils # tracepath irssi + jameica + jc # convert output to json + josm jq + kanshi keepassxc + kubetail krita ldns - libreoffice + liboping # oping, ping multiple hosts at once + # FIXME: broken in nixpkgs + #libreoffice libvirt lsof + lynis man-pages + mblaze + mkpasswd mpv mtr mumble nix-output-monitor + ncurses + newsflash nixd nixfmt-rfc-style nfs-utils + niv + nix-index nmap + nmon + nodePackages.prettier map-cmd obs-studio obsidian + offlineimap openscad openssl + p7zip pandoc # document converter and templater pass pavucontrol picocom + playerctl + procs # ps in rust prusa-slicer pv + pwgen (python3.withPackages (pkgs: [ pkgs.pandas pkgs.requests ])) ranger + reptyr + ripgrep ripgrep saleae-logic-2 + sd # search and displace like sed but with better syntax sieveshell signal-desktop + silver-searcher + skim # fzf in Rust + slurp socat + # FIXME: broken in nixpkgs + #solvespace + spotify sqlite + sshfs-fuse taplo tcpdump + tdesktop thunderbird tmux + ttyd unzip usbutils + vegur virt-manager + viu # view images from the terminal + vscodium whois wireshark xdg-utils xmlstarlet unixtools.xxd + xxh # portable shells yt-dlp + zk zsh ] diff --git a/home/status b/home/status new file mode 100755 index 0000000..e24816b --- /dev/null +++ b/home/status @@ -0,0 +1,138 @@ +#!/usr/bin/env python3 + +import json +import sys +import time +import requests +import logging +import subprocess + +from datetime import datetime + +logger = logging.getLogger(__name__) + + +class Status: + def status(self): + return None + + +class Cat(Status): + index = 0 + + def status(self): + cat_width = 200 + index = self.index + catwalk = "🐈🏳️‍🌈" + " " * index + self.index = (index + 1) % cat_width + + return {"full_text": catwalk} + + +class Space(Status): + backoff = 0 + c_status = None + + def status(self): + backoff = self.backoff + if self.backoff == 0: + self.update() + + return {"full_text": self.c_status} + + def update(self): + spacestatus_url = "https://status.stratum0.org/status.json" + resp = requests.get(url=spacestatus_url) + self.backoff = (self.backoff + 1) % 120 + data = resp.json() + if data["isOpen"]: + since = datetime.strptime(data["since"], "%Y-%m-%dT%H:%M:%S.%f").strftime("%A at %H:%M") + spacestatus = f"Space is open since {since}" + else: + spacestatus = "Space is closed" + self.c_status = spacestatus + + +class Battery(Status): + capacity_file = open('/sys/class/power_supply/BAT0/capacity', 'r') + status_file = open('/sys/class/power_supply/BAT0/status', 'r') + + def status(self): + self.status_file.seek(0) + status = self.status_file.read().rstrip() + + self.capacity_file.seek(0) + capacity = self.capacity_file.read().rstrip() + + battery = f"{status} {capacity}%" + + return {"full_text": battery} + + +class Time(Status): + def status(self): + now = datetime.now() + match now.isocalendar().week % 10: + case 1: + th = "st" + case 2: + th = "nd" + case 3: + th = "rd" + case _: + th = "th" + return {"full_text": now.strftime(f"%V{th} %A %H:%M") } + + +class FailedUnits(Status): + def status(self): + proc = subprocess.run(["systemctl", "list-units", "--failed"], capture_output = True) + stdout = proc.stdout.decode('utf-8') + failed = 0 + for line in stdout: + if 'failed' in line: + failed += 1 + if failed == 0: + return {"full_text": f"No failed units"} + else: + return {"full_text": f"There are {failed} failed units", "color": "#ff0000"} + + +def print_header(): + header = { + "version": 1, + "click_events": False, + } + print(json.dumps(header)) + print("[") + + +def run(interval, widgets): + print_header() + + while True: + body = [] + + for widget in widgets: + try: + status = widget.status() + except Exception as e: + logger.error(e) + if status: + body += status, + + print(json.dumps(body), ",", flush=True) + + ts = interval - (time.time() % interval) + time.sleep(ts) + + +if __name__ == "__main__": + logging.basicConfig(level=logging.INFO) + + # Interval in seconds + interval = 1.0 + + widgets = [Cat(), FailedUnits(), Space(), Battery(), Time()] + + run(interval, widgets) diff --git a/home/tmux.nix b/home/tmux.nix deleted file mode 100644 index ca8e38c..0000000 --- a/home/tmux.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - ... -}: -{ - programs.tmux = { - enable = true; - terminal = "tmux-256color"; - extraConfig = '' - setw -g mode-keys vi - set -g mouse on - set -g set-clipboard external - set -g set-titles on - set -g status on - set -ga terminal-overrides ',*256col*:Tc' - set-option -g status-interval 5 - set-option -g automatic-rename on - set-option -g automatic-rename-format '#{b:pane_current_path}' - bind '"' split-window -c "#{pane_current_path}" - bind % split-window -h -c "#{pane_current_path}" - bind c new-window -c "#{pane_current_path}" - ''; - }; -} diff --git a/home/xdg.nix b/home/xdg.nix deleted file mode 100644 index 67b2b40..0000000 --- a/home/xdg.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ - config, - pkgs, - ... -}: -let - apps = { - "x-scheme-handler/mailto" = "thunderbird.desktop"; - "message/rfc822" = "thunderbird.desktop"; - "x-scheme-handler/http" = "firefox.desktop"; - "x-scheme-handler/https" = "firefox.desktop"; - "x-scheme-handler/ftp" = "firefox.desktop"; - "x-scheme-handler/chrome" = "firefox.desktop"; - "text/html" = "firefox.desktop"; - "application/x-extension-htm" = "firefox.desktop"; - "application/x-extension-html" = "firefox.desktop"; - "application/x-extension-shtml" = "firefox.desktop"; - "application/xhtml+xml" = "firefox.desktop"; - "application/x-extension-xhtml" = "firefox.desktop"; - "application/x-extension-xht" = "firefox.desktop"; - "application/pdf" = "okular.desktop"; - }; -in -{ - xdg = { - enable = true; - configHome = "${config.home.homeDirectory}/.config"; - mimeApps = { - enable = false; - associations.added = apps; - defaultApplications = apps; - }; - userDirs = { - desktop = "\$HOME/.desktop"; - download = "\$HOME/tmp"; - music = "\$HOME/lib/music"; - videos = "\$HOME/lib/videos"; - pictures = "\$HOME/lib/pictures"; - documents = "\$HOME/lib"; - }; - }; - home.packages = with pkgs; [ - evince - firefox - xdg-utils - ]; -} diff --git a/home/zsh.nix b/home/zsh.nix deleted file mode 100644 index daa65c7..0000000 --- a/home/zsh.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - pkgs, - ... -}: -{ - programs.fzf.enableZshIntegration = true; - programs.zsh = { - enable = true; - enableCompletion = true; - enableVteIntegration = true; - autosuggestion.enable = true; - autocd = true; - sessionVariables = { - EDITOR = "hx"; - }; - history = { - extended = true; - ignoreDups = true; - ignoreSpace = true; - save = 100000; - # FIXME https://github.com/junegunn/fzf/issues/4061 - #share = true; - share = false; - }; - plugins = [ - ]; - initContent = '' - source ${pkgs.fzf}/share/fzf/key-bindings.zsh - source ${pkgs.fzf}/share/fzf/completion.zsh - eval "$(repo setup --root ~/src)" - - bindkey -e '^n' autosuggest-accept - - preexec() { echo -n -e "\033]0;$1\007" } - - PROMPT="%F{red}%?%f %F{green}%m%f:%F{blue}%~%f"$'\n'"╰─> " - ''; - profileExtra = ''''; - shellAliases = { - ga = "git add"; - gc = "git commit"; - gd = "git diff"; - gdw = "git diff --color-words"; - gf = "git fetch"; - gl = "git log"; - gpu = "git push"; - gpul = "git pull"; - grb = "git rebase"; - gre = "git reflog"; - gs = "git status"; - gsh = "git show"; - gst = "git status"; - gsta = "git stash"; - gstap = "git stash apply"; - exa = "eza"; - ls = "exa"; - la = "exa -a"; - ll = "exa -la --no-filesize --changed --time-style=long-iso --git --octal-permissions --no-permissions --no-user --ignore-glob=\".git\""; - mv = "mv -i"; - cp = "cp -i"; - }; - }; - - home.packages = with pkgs; [ - fzf - eza - tmux - ]; -} diff --git a/nixos/modules/profiles/home.nix b/nixos/modules/profiles/home.nix index 2276025..97911df 100644 --- a/nixos/modules/profiles/home.nix +++ b/nixos/modules/profiles/home.nix @@ -1,5 +1,6 @@ { pkgs, inputs, ... }: { home-manager.useGlobalPkgs = true; + home-manager.sharedModules = pkgs.lib.attrValues inputs.self.hmModules; home-manager.users.dadada = inputs.self.hmConfigurations.dadada; } diff --git a/nixos/stolas/default.nix b/nixos/stolas/default.nix index 5ff063a..d86a8ff 100644 --- a/nixos/stolas/default.nix +++ b/nixos/stolas/default.nix @@ -49,7 +49,8 @@ # For debugging and troubleshooting Secure Boot. pkgs.sbctl # Framework embedded controller interface - pkgs.fw-ectool + # FIXME: build broken in nixpkgs + #pkgs.fw-ectool ]; hardware = { @@ -62,7 +63,8 @@ enable = true; extraPackages = with pkgs; [ vaapiVdpau - libvdpau-va-gl + # FIXME: broken in nixpkgs + # libvdpau-va-gl ]; }; }; diff --git a/outputs.nix b/outputs.nix index 7b5b029..45773d9 100644 --- a/outputs.nix +++ b/outputs.nix @@ -39,6 +39,7 @@ } )) // { + hmModules = import ./home/modules.nix { lib = nixpkgs.lib; }; hmConfigurations = { dadada = import ./home; };