diff --git a/configs/default.nix b/configs/default.nix index a88c162..d72328e 100644 --- a/configs/default.nix +++ b/configs/default.nix @@ -1,13 +1,10 @@ -{ pkgs, lib, config, ... }: +{ pkgs, lib, config, options, ... }: let inherit (lib.strings) makeBinPath; in { imports = [ - { - services.dbus.packages = [ pkgs.gnome3.dconf ]; - } # ./mopidy.nix ./alacritty.nix @@ -75,67 +72,78 @@ in }; } { - nix.nixPath = [ "/var/src" ]; + nix.nixPath = options.nix.nixPath.default ++ [ + "/var/src" + "nixpkgs-overlays=${toString ../overlays}" + ]; } { - nixpkgs.config = { - allowUnfree = true; - packageOverrides = pkgs: { - python3Packages = pkgs.python3Packages.override { - overrides = new: old: { - spotify-cli-linux = new.callPackage {}; - instaloader = new.callPackage {}; - sncli = new.callPackage {}; - }; - }; - haskellPackages = pkgs.haskellPackages.override { - overrides = new: old: { - blessings = new.callPackage {}; - scanner = new.callPackage {}; - }; - }; - - git-quick-stats = pkgs.callPackage {}; - writeDash = pkgs.writers.writeDash; - writeDashBin = pkgs.writers.writeDashBin; - iolanguage = pkgs.callPackage {}; - nix-git = pkgs.callPackage {}; - gfs-fonts = pkgs.callPackage {}; - - kmein = { - autorenkalender = pkgs.callPackage {}; - bvg = pkgs.callPackage {}; - daybook = pkgs.callPackage {}; - genius = pkgs.callPackage {}; - instaget = pkgs.callPackage {}; - literature-quote = pkgs.callPackage {}; - n = pkgs.callPackage {}; - depp = pkgs.callPackage {}; - odyssey = pkgs.callPackage {}; - wttr = pkgs.callPackage {}; - nav = pkgs.callPackage {}; - dirmir = pkgs.callPackage {}; - favicon = pkgs.callPackage {}; - tolino-screensaver = pkgs.callPackage {}; - # fzf-wrappers = pkgs.callPackage {}; (broken) - slide = - let slide-package = pkgs.fetchFromGitHub { - owner = "kmein"; - repo = "slide"; - rev = "0470583d22212745eab4f46076267addf4d2346c"; - sha256 = "0skcp3va9v4hmxy5ramghpz53gnyxv10wsacgmc2jr0v1wrqlzbh"; + services.dbus.packages = [ pkgs.gnome3.dconf ]; + } + { + nixpkgs = { + config.allowUnfree = true; + overlays = [ + # (import ) + (import ) + (self: super: { + python3Packages = super.python3Packages.override { + overrides = new: old: { + spotify-cli-linux = new.callPackage {}; + instaloader = new.callPackage {}; + sncli = new.callPackage {}; }; - in pkgs.callPackage slide-package {}; - haskellPackages.mnemosyne = - let mnemosyne-package = pkgs.fetchFromGitHub { - repo = "mnemosyne"; - owner = "kmein"; - rev = "6bfa13c88db176af80be90840ff03573d67d679f"; - sha256 = "1rimv5c5q9602y501hbkgkfbimqnmdkcr5hp1434q06gcazhjhca"; + }; + haskellPackages = super.haskellPackages.override { + overrides = new: old: { + blessings = new.callPackage {}; + scanner = new.callPackage {}; }; - in pkgs.haskellPackages.callPackage mnemosyne-package {}; - }; - }; + }; + + writeDashBin = super.writers.writeDashBin; + writeDash = super.writers.writeDash; + + git-quick-stats = super.callPackage {}; + iolanguage = super.callPackage {}; + nix-git = super.callPackage {}; + gfs-fonts = super.callPackage {}; + + kmein = { + autorenkalender = super.callPackage {}; + bvg = super.callPackage {}; + daybook = super.callPackage {}; + genius = super.callPackage {}; + instaget = super.callPackage {}; + literature-quote = super.callPackage {}; + n = super.callPackage {}; + depp = super.callPackage {}; + odyssey = super.callPackage {}; + wttr = super.callPackage {}; + nav = super.callPackage {}; + dirmir = super.callPackage {}; + favicon = super.callPackage {}; + tolino-screensaver = super.callPackage {}; + # fzf-wrappers = pkgs.callPackage {}; (broken) + slide = + let slide-package = super.fetchFromGitHub { + owner = "kmein"; + repo = "slide"; + rev = "0470583d22212745eab4f46076267addf4d2346c"; + sha256 = "0skcp3va9v4hmxy5ramghpz53gnyxv10wsacgmc2jr0v1wrqlzbh"; + }; + in super.callPackage slide-package {}; + haskellPackages.mnemosyne = + let mnemosyne-package = super.fetchFromGitHub { + repo = "mnemosyne"; + owner = "kmein"; + rev = "6bfa13c88db176af80be90840ff03573d67d679f"; + sha256 = "1rimv5c5q9602y501hbkgkfbimqnmdkcr5hp1434q06gcazhjhca"; + }; + in super.haskellPackages.callPackage mnemosyne-package {}; + }; + }) + ]; }; } { @@ -226,7 +234,7 @@ in ll = "${pkgs.exa}/bin/exa -s type -l"; ls = "${pkgs.exa}/bin/exa -s type"; mv = "mv -i"; - nixi = "nix repl ''"; + nixi = "nix repl ''"; ns = "nix-shell --run zsh"; o = "${pkgs.xdg_utils}/bin/xdg-open"; rm = "rm -i"; @@ -313,12 +321,6 @@ in { programs.command-not-found.enable = true; } - { - programs.java = { - enable = true; - package = pkgs.openjdk; - }; - } { systemd.services.restart-vpn = { description = "Restart VPNs after suspend"; diff --git a/configs/i3.nix b/configs/i3.nix index b981c5d..024c27c 100644 --- a/configs/i3.nix +++ b/configs/i3.nix @@ -61,13 +61,13 @@ in with config.niveum; { text = colours.foreground; }; }; - statusCommand = "${pkgs.unstable.i3status-rust}/bin/i3status-rs ${pkgs.writeText "i3status-rust.toml" ( - import { + statusCommand = "${pkgs.unstable.i3status-rust}/bin/i3status-rs ${ + pkgs.writeTOML (import { wifi-interface = networkInterfaces.wireless; batteryBlock = batteryBlocks.default; inherit (config.niveum) colours; - } - )}"; + }) + }"; }]; keybindings = { "${modifier}+Down" = "focus down"; diff --git a/dot/i3status-rust.nix b/dot/i3status-rust.nix index 0dcec74..1841731 100644 --- a/dot/i3status-rust.nix +++ b/dot/i3status-rust.nix @@ -1,81 +1,85 @@ -{ wifi-interface, colours, batteryBlock }: '' - [theme] - name = "plain" - [theme.overrides] - separator = " " - critical_fg = "${colours.red.bright}" - good_fg = "${colours.green.bright}" - idle_fg = "${colours.foreground}" - info_fg = "${colours.foreground}" - separator_fg = "auto" - warning_fg = "${colours.yellow.bright}" - alternating_tint_bg = "${colours.background}" - alternating_tint_fg = "${colours.background}" - critical_bg = "${colours.background}" - good_bg = "${colours.background}" - idle_bg = "${colours.background}" - info_bg = "${colours.background}" - separator_bg = "auto" - warning_bg = "${colours.background}" - - [icons] - name = "none" - [icons.overrides] - music = "♫ " - music_play = "►" - music_next = "→" - music_prev = "←" - volume_full = "♪ " - volume_half = "♪ " - volume_empty = "♪ " - bat = "⚡ " - bat_full = "⚡ " - bat_charging = "↑ " - bat_discharging = "↓ " - memory_mem = "" - separator = "" - net_wireless = "" - cogs = "" - time = "" - - [[block]] - block = "music" - player = "spotify" - buttons = ["prev", "play", "next"] - marquee = false - max_width = 35 - # on_collapsed_click = "spotify" - - [[block]] - block = "net" - device = "${wifi-interface}" - ssid = true - interval = 1 - speed_up = false - speed_down = false - - [[block]] - block = "battery" - device = "${batteryBlock}" - show = "both" - - [[block]] - block = "sound" - # show_volume_when_muted = true - - [[block]] - block = "memory" - display_type = "memory" - format_mem = "{MUg}G" - clickable = false - - [[block]] - block = "load" - interval = 1 - format = "{1m}" - - [[block]] - block = "time" - interval = 5 - format = "%Y-%m-%d %H:%M" -'' +{ wifi-interface, colours, batteryBlock }: +{ + theme = { + name = "plain"; + overrides = { + separator = " "; + critical_fg = colours.red.bright; + good_fg = colours.green.bright; + idle_fg = colours.foreground; + info_fg = colours.foreground; + separator_fg = "auto"; + warning_fg = colours.yellow.bright; + alternating_tint_bg = colours.background; + alternating_tint_fg = colours.background; + critical_bg = colours.background; + good_bg = colours.background; + idle_bg = colours.background; + info_bg = colours.background; + separator_bg = "auto"; + warning_bg = colours.background; + }; + }; + icons = { + name = "none"; + overrides = { + music = "♫ "; + music_play = "►"; + music_next = "→"; + music_prev = "←"; + volume_full = "♪ "; + volume_half = "♪ "; + volume_empty = "♪ "; + bat = "⚡ "; + bat_full = "⚡ "; + bat_charging = "↑ "; + bat_discharging = "↓ "; + memory_mem = ""; + separator = ""; + net_wireless = ""; + cogs = ""; + time = ""; + }; + }; + block = [ + { + block = "music"; + player = "spotify"; + buttons = ["prev" "play" "next"]; + marquee = false; + max_width = 35; + } + { + block = "net"; + device = wifi-interface; + ssid = true; + interval = 1; + speed_up = false; + speed_down = false; + } + { + block = "battery"; + device = batteryBlock; + show = "both"; + } + { + block = "sound"; + } + { + block = "memory"; + display_type = "memory"; + format_mem = "{MUg}G"; + clickable = false; + } + { + block = "load"; + interval = 1; + format = "{1m}"; + } + { + block = "time"; + interval = 5; + format = "%Y-%m-%d %H:%M"; + } + ]; +} diff --git a/overlays/overlays.nix b/overlays/overlays.nix new file mode 100644 index 0000000..ac6acf2 --- /dev/null +++ b/overlays/overlays.nix @@ -0,0 +1,6 @@ +self: super: +with super.lib; +let + eval = import ; + paths = (eval {modules = [(import )];}).config.nixpkgs.overlays; +in foldl' (flip extends) (_: super) paths self diff --git a/overlays/toml.nix b/overlays/toml.nix new file mode 100644 index 0000000..75f20f6 --- /dev/null +++ b/overlays/toml.nix @@ -0,0 +1,6 @@ +(self: super: { + writeTOML = object: super.runCommand "writeTOML" {} '' + echo '${builtins.toJSON object}' | ${super.remarshal}/bin/json2toml > $out + ''; + toTOML = object: builtins.readFile (self.writeTOML object); +})