1{
2 config,
3 pkgs,
4 lib,
5 ...
6}:
7let
8 rofi-nm = pkgs.fetchurl {
9 url = "https://raw.githubusercontent.com/P3rf/rofi-network-manager/1daa69406c9b6539a4744eafb0d5bb8afdc80e9b/rofi-network-manager.sh";
10 hash = "sha256:1nlnjmk5b743j5826z2nzfvjwk0fmbf7gk38darby93kdr3nv5zx";
11 };
12 package = pkgs.writeShellScriptBin "rofi-nm" ''
13 ${config.home.homeDirectory}/.config/rofi-nm/rofi-nm.sh
14 '';
15in
16{
17 options = {
18 programs.rofi-nm.package = lib.mkOption {
19 type = lib.types.package;
20 };
21 };
22 config = {
23 programs.rofi-nm.package = package;
24
25 home.packages = [ package ];
26
27 xdg.configFile = {
28 "rofi-nm/rofi-nm.sh" = {
29 source = pkgs.runCommandLocal "rofi-nm" { } ''
30 cp --no-preserve=mode,ownership ${rofi-nm} rofi-nm.sh
31 substituteInPlace rofi-nm.sh \
32 --replace "#!/bin/bash" "#!${pkgs.stdenv.shell}" \
33 --replace "grep" "${pkgs.gnugrep}/bin/grep"
34 mv rofi-nm.sh $out
35 '';
36 executable = true;
37 };
38 "rofi-nm/rofi-network-manager.conf".text = ''
39 LOCATION=3
40 WIDTH_FIX_MAIN=10
41 WIDTH_FIX_STATUS=10
42 '';
43 "rofi-nm/rofi-network-manager.rasi".text = ''
44 configuration {
45 show-icons: false;
46 sidebar-mode: false;
47 hover-select: true;
48 me-select-entry: "";
49 me-accept-entry: [MousePrimary];
50 }
51
52 * {
53 font: "${config.settings.font.regular.fullName}";
54 }
55
56 @theme "catppuccin"
57
58 element-text, element-icon , mode-switcher {
59 background-color: inherit;
60 text-color: inherit;
61 }
62
63 window {
64 height: 40%;
65 width: 40%;
66 border: 3px;
67 border-color: @border-col;
68 background-color: @bg-col;
69 }
70
71 mainbox {
72 background-color: @bg-col;
73 }
74
75 inputbar {
76 children: [prompt,entry];
77 background-color: @bg-col;
78 border-radius: 5px;
79 padding: 2px;
80 }
81
82 prompt {
83 background-color: @blue;
84 padding: 6px;
85 text-color: @bg-col;
86 border-radius: 3px;
87 margin: 20px 0px 0px 20px;
88 }
89
90 textbox-prompt-colon {
91 expand: false;
92 str: ":";
93 }
94
95 entry {
96 placeholder: "";
97 padding: 6px;
98 margin: 20px 0px 0px 10px;
99 text-color: @fg-col;
100 background-color: @bg-col;
101 }
102
103 listview {
104 border: 0px 0px 0px;
105 padding: 6px 0px 0px;
106 margin: 10px 0px 0px 20px;
107 columns: 1;
108 background-color: @bg-col;
109 }
110
111 element {
112 padding: 5px;
113 background-color: @bg-col;
114 text-color: @fg-col ;
115 }
116
117 element-icon {
118 size: 25px;
119 }
120
121 element selected {
122 background-color: @selected-col ;
123 text-color: @fg-col2 ;
124 }
125
126 mode-switcher {
127 spacing: 0;
128 }
129
130 button {
131 padding: 10px;
132 background-color: @bg-col-light;
133 text-color: @grey;
134 vertical-align: 0.5;
135 horizontal-align: 0.5;
136 }
137
138 button selected {
139 background-color: @bg-col;
140 text-color: @blue;
141 }
142 '';
143 };
144 };
145}