Compare commits

...

9 Commits

14 changed files with 375 additions and 333 deletions

120
flake.lock generated
View File

@ -3,11 +3,11 @@
"alacritty-theme": {
"flake": false,
"locked": {
"lastModified": 1725333321,
"narHash": "sha256-cZ+ziE+VbQFpJ+iDS7X9Q2YC1Ziu+JITzDmX79BCcRY=",
"lastModified": 1727478331,
"narHash": "sha256-Uav3hn2HxwtpOWdGt8WDCqTR0erxXWF6Wxkcltru1Yw=",
"owner": "alacritty",
"repo": "alacritty-theme",
"rev": "e759dafb8e2e00abb428592979ce006da7fba4a7",
"rev": "90a8406beb095fdb1617135a98c38df1ef08859c",
"type": "github"
},
"original": {
@ -36,11 +36,11 @@
]
},
"locked": {
"lastModified": 1726665257,
"narHash": "sha256-rEzEZtd3iyVo5RJ1OGujOlnywNf3gsrOnjAn1NLciD4=",
"lastModified": 1727261104,
"narHash": "sha256-rxDI7WrxIRV9it9mDCHcLa7xQykf1JloXnoXr5xQ8zI=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "752d0fbd141fabb5a1e7f865199b80e6e76f8d8e",
"rev": "b82fdaff917582a9d568969e15e61b398c71e990",
"type": "github"
},
"original": {
@ -341,11 +341,11 @@
]
},
"locked": {
"lastModified": 1722623071,
"narHash": "sha256-sLADpVgebpCBFXkA1FlCXtvEPu1tdEsTfqK1hfeHySE=",
"lastModified": 1727532803,
"narHash": "sha256-ZaZ7h7PY8mQc4vtGmVqWLAq9CAO02gHMyNR5yY8zDmM=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "912d56025f03d41b1ad29510c423757b4379eb1c",
"rev": "b98726e431d4d3ed58bd58bee1047cdb81cec69f",
"type": "github"
},
"original": {
@ -358,6 +358,7 @@
"inputs": {
"aquamarine": "aquamarine",
"hyprcursor": "hyprcursor",
"hyprland-protocols": "hyprland-protocols",
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner",
@ -366,11 +367,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1727305730,
"narHash": "sha256-EWtisVQG1O058U09R3GTmzWWujuHYmyiKbpb9qE3Z9Q=",
"lastModified": 1728086481,
"narHash": "sha256-+gip/MU9xo/0HzYotsJ28LvCBTsoWlr3h4+vZR3Uycw=",
"ref": "refs/heads/main",
"rev": "b1ad2d806634edff656cb5ddc9850ae2c73324e8",
"revCount": 5260,
"rev": "595eb89f6e16df0e19916e3c02bf5ceac5a61c57",
"revCount": 5293,
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
@ -398,11 +399,11 @@
]
},
"locked": {
"lastModified": 1727258890,
"narHash": "sha256-/55TVManE/J19LSzXtUNhHUpeouRqZxM08ZdWvJrNoA=",
"lastModified": 1727705521,
"narHash": "sha256-tR4bc6zONkxore1F7CRrwHs9NITht8NY0JTidPSmMXY=",
"owner": "hyprwm",
"repo": "hyprland-plugins",
"rev": "4fcb465c9d771f4ae1f451e8d953250d16eead70",
"rev": "9215288eb2ded9d0c08d468ea90ba68f43162c67",
"type": "github"
},
"original": {
@ -412,6 +413,31 @@
}
},
"hyprland-protocols": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1727451107,
"narHash": "sha256-qV9savtHwmZUa0eJE294WYJjKPGB2+bJhwByFShsVyo=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "6b3261ee13a6d2b99de79a31d352f6996e35bde3",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-protocols",
"type": "github"
}
},
"hyprland-protocols_2": {
"inputs": {
"nixpkgs": [
"hyprland",
@ -479,11 +505,11 @@
]
},
"locked": {
"lastModified": 1727219120,
"narHash": "sha256-wmT+JpnDk6EjgASU2VGfS0nnu6oKA4Cw25o5fzpDD/Q=",
"lastModified": 1727300645,
"narHash": "sha256-OvAtVLaSRPnbXzOwlR1fVqCXR7i+ICRX3aPMCdIiv+c=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "db956287d3aa194dda91d05c8eb286de2a569edf",
"rev": "3f5293432b6dc6a99f26aca2eba3876d2660665c",
"type": "github"
},
"original": {
@ -504,11 +530,11 @@
]
},
"locked": {
"lastModified": 1726840673,
"narHash": "sha256-HIPEXyRRVZoqD6U+lFS1B0tsIU7p83FaB9m7KT/x6mQ=",
"lastModified": 1726874836,
"narHash": "sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "b68dab23fc922eae99306988133ee80a40b39ca5",
"rev": "500c81a9e1a76760371049a8d99e008ea77aa59e",
"type": "github"
},
"original": {
@ -543,11 +569,11 @@
]
},
"locked": {
"lastModified": 1726227680,
"narHash": "sha256-pcqHXle7uHQTUESc40Yu0k05cFMRVpm3D8ZHPH6scOY=",
"lastModified": 1728031945,
"narHash": "sha256-NRkLjdMtVfC6dD1gEbYZWFEtbmC2xfD6ft1IP7l76Vw=",
"owner": "Mic92",
"repo": "nix-ld",
"rev": "5ee22be69d8bd66da100157fab54d8dde37c775b",
"rev": "4524c512e8729ccb5a1b9239d01e1474cbf074a2",
"type": "github"
},
"original": {
@ -564,11 +590,11 @@
]
},
"locked": {
"lastModified": 1727276500,
"narHash": "sha256-k2RdpNq6fQ/lI90s8DOXkpqnl2w9NM/KXqjcR4pZ27c=",
"lastModified": 1728054098,
"narHash": "sha256-pvVBC+IHWLZqwD+rLTqtXbNgFng8qZZXm+KTyoS5lR8=",
"owner": "doronbehar",
"repo": "nix-matlab",
"rev": "7c7564e543e74c021dd6c402df6192d74ff6ee8f",
"rev": "145957fbf1490548bac2ee5a58daddf04fcfa5dd",
"type": "gitlab"
},
"original": {
@ -602,11 +628,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1726755586,
"narHash": "sha256-PmUr/2GQGvFTIJ6/Tvsins7Q43KTMvMFhvG6oaYK+Wk=",
"lastModified": 1727348695,
"narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c04d5652cfa9742b1d519688f65d1bbccea9eb7e",
"rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784",
"type": "github"
},
"original": {
@ -665,11 +691,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1727122398,
"narHash": "sha256-o8VBeCWHBxGd4kVMceIayf5GApqTavJbTa44Xcg5Rrk=",
"lastModified": 1728018373,
"narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "30439d93eb8b19861ccbe3e581abf97bdc91b093",
"rev": "bc947f541ae55e999ffdb4013441347d83b00feb",
"type": "github"
},
"original": {
@ -681,11 +707,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1727129439,
"narHash": "sha256-nPyrcFm6FSk7CxzVW4x2hu62aLDghNcv9dX6DF3dXw8=",
"lastModified": 1728067476,
"narHash": "sha256-/uJcVXuBt+VFCPQIX+4YnYrHaubJSx4HoNsJVNRgANM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "babc25a577c3310cce57c72d5bed70f4c3c3843a",
"rev": "6e6b3dd395c3b1eb9be9f2d096383a8d05add030",
"type": "github"
},
"original": {
@ -830,11 +856,11 @@
"nixpkgs-stable": "nixpkgs-stable_2"
},
"locked": {
"lastModified": 1726524647,
"narHash": "sha256-qis6BtOOBBEAfUl7FMHqqTwRLB61OL5OFzIsOmRz2J4=",
"lastModified": 1727734513,
"narHash": "sha256-i47LQwoGCVQq4upV2YHV0OudkauHNuFsv306ualB/Sw=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "e2d404a7ea599a013189aa42947f66cede0645c8",
"rev": "3198a242e547939c5e659353551b0668ec150268",
"type": "github"
},
"original": {
@ -920,7 +946,7 @@
},
"xdph": {
"inputs": {
"hyprland-protocols": "hyprland-protocols",
"hyprland-protocols": "hyprland-protocols_2",
"hyprlang": [
"hyprland",
"hyprlang"
@ -943,11 +969,11 @@
]
},
"locked": {
"lastModified": 1727109343,
"narHash": "sha256-1PFckA8Im7wMSl26okwOKqBZeCFLD3LvZZFaxswDhbY=",
"lastModified": 1727524473,
"narHash": "sha256-1DGktDtSWIJpnDbVoj/qpvJSH5zg6JbOfuh6xqZMap0=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "4adb6c4c41ee5014bfe608123bfeddb26e5f5cea",
"rev": "7e500e679ede40e79cf2d89b5f5fa3e34923bd26",
"type": "github"
},
"original": {
@ -959,11 +985,11 @@
"yazi-flavors": {
"flake": false,
"locked": {
"lastModified": 1725036354,
"narHash": "sha256-W56r4LMepQj0vW1tayx0qA43ZhZEQ09ukZ8IlQMFMe0=",
"lastModified": 1728056820,
"narHash": "sha256-VSlays/D5FtiI8vsj2Eu19lxY8Mkgu0+7K6OAhzc+30=",
"owner": "yazi-rs",
"repo": "flavors",
"rev": "d479f67a5bde91ccd3cddc927144b442c6e885e5",
"rev": "b081fa9768ebd24a71375f85748c26e6a6c7ef44",
"type": "github"
},
"original": {

View File

@ -37,9 +37,9 @@
yazi.enable = true;
emacs.enable = true;
i3.enable = true;
# i3.enable = true;
# hyprland.enable = true;
hyprland.enable = true;
nix-helper.enable = true;
desktop.enable = true;
@ -92,9 +92,11 @@
tor-browser
## My scripts
pkgs.frajul.deploy-to-pianopi
pkgs.frajul.edit-config
# pkgs.frajul.open-messaging
frajul.deploy-to-pianopi
frajul.open-messaging
frajul.edit-config
frajul.xwacomcalibrate
frajul.lntocp
]
++ lib.lists.concatMap (packages-list-file: import packages-list-file { inherit pkgs; }) [
./fonts.nix

View File

@ -153,11 +153,8 @@ with pkgs;
unstable.path-of-building
## My scripts
frajul.edit-config
frajul.xwacomcalibrate
conda
watchexec # Run command when any file in current dir changes
pkg-config # Often needed to build something
]

View File

@ -86,7 +86,7 @@ in
wayland.windowManager.hyprland = {
# Whether to enable Hyprland wayland compositor
enable = true;
package = inputs.hyprland.packages."${pkgs.system}".hyprland;
# package = inputs.hyprland.packages."${pkgs.system}".hyprland; # does only work with nixos-unstable
# The hyprland package to use (simplifies use of plugins)
# package = inputs.hyprland.packages.${pkgs.system}.hyprland;
@ -99,7 +99,10 @@ in
# Make PATH available to systemd services
systemd.variables = [ "--all" ];
plugins = [ inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars ];
plugins = with pkgs; [
# inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars # does only work with nixos-unstable
hyprlandPlugins.hyprbars
];
settings = {
"$mod" = "SUPER";
@ -136,7 +139,7 @@ in
# Master layout
master = {
new_is_master = false;
new_status = "slave";
no_gaps_when_only = 2; # with border
mfact = 0.5; # Do not make master bigger
};
@ -201,8 +204,8 @@ in
# opening applications
"$mod, D, exec, wofi --show drun,run"
"$mod, E, exec, thunar"
"$mod, Return, exec, alacritty"
"$mod, E, exec, pcmanfm"
"$mod, Return, exec, wezterm"
"$mod, B, exec, firefox"
"$mod, C, exec, qalculate-gtk"

View File

@ -25,7 +25,7 @@ in
services.mako = {
enable = true;
defaultTimeout = 5; # seconds, can be overwritten by notification sender
defaultTimeout = 5000; # milliseconds, can be overwritten by notification sender
backgroundColor = "#${palette.base00}";
textColor = "#${palette.base05}";
borderColor = "#${palette.base0D}";

View File

@ -4,7 +4,7 @@
"mode": "dock",
"exclusive": true,
"passtrough": true,
"height": 20,
"height": 16,
"modules-left": [
"hyprland/workspaces"
@ -14,8 +14,24 @@
"modules-right": ["idle_inhibitor", "disk", "cpu", "memory", "pulseaudio", "battery", "clock", "tray"],
"hyprland/window": {
"format": "{}"
"hyprland/workspaces": {
"on-scroll-up": "hyprctl dispatch workspace m+1",
"on-scroll-down": "hyprctl dispatch workspace m-1",
"all-outputs": false,
"on-click": "activate",
"format": "{icon}",
"format-icons": {
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"10": "10"
}
},
"idle_inhibitor": {
@ -25,6 +41,7 @@
"deactivated": ""
}
},
"disk": {
"interval": 30,
"format": "Free: {percentage_free}% ({free})",
@ -32,44 +49,14 @@
"unit": "GB"
},
"hyprland/workspaces": {
"on-scroll-up": "hyprctl dispatch workspace m+1",
"on-scroll-down": "hyprctl dispatch workspace m-1",
"all-outputs": false,
"on-click": "activate",
"format": "{icon}",
"format-icons": {
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"10": "10"
}
},
"cpu": {
"format": " {usage}%"
},
"memory": {
"format": " {}%"
},
"tray": {
"icon-size": 20,
"tooltip": false,
"spacing": 10
},
"clock": {
"tooltip-format": "{calendar}",
"format": "{:%a %d.%m %H:%M:%S}",
"interval": 1
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": "<big>󰝟</big>",
@ -77,7 +64,7 @@
"headphone": "",
"default": ["", "", ""]
},
"scroll-step": 5.0,
"scroll-step": 5.0,
"max-volume": 200,
"on-click": "pulseaudio-popup",
"on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
@ -93,5 +80,17 @@
"format-plugged": " {capacity}% ({time})",
"format-full": "{icon} ",
"format-icons": ["", "", "", "", ""]
},
"clock": {
"tooltip-format": "{calendar}",
"format": "{:%a %d.%m %H:%M:%S}",
"interval": 1
},
"tray": {
"icon-size": 20,
"tooltip": false,
"spacing": 10
}
}

View File

@ -24,200 +24,26 @@ in
enable = true;
systemd.enable = true;
settings.mainBar = builtins.fromJSON (builtins.readFile ./config.json);
style = ''
* {
/* `otf-font-awesome` is required to be installed for icons */
font-family: JetBrainsMono Nerd Font;
font-size: 16px;
}
#clock,
#custom-notification,
#custom-launcher,
#custom-power-menu,
/*#custom-colorpicker,*/
#custom-window,
#memory,
#disk,
#network,
#battery,
#custom-spotify,
#pulseaudio,
#window,
#idle_inhibitor,
#cpu,
#tray {
padding: 0 15px;
border-radius: 12px;
background: #${palette.base00};
color: #${palette.base07};
margin-top: 0px;
margin-bottom: 0px;
margin-right: 2px;
margin-left: 2px;
transition: all 0.3s ease;
}
#window {
background-color: transparent;
box-shadow: none;
}
window#waybar {
background-color: rgba(0, 0, 0, 0.096);
border-radius: 17px;
}
window * {
background-color: transparent;
border-radius: 0px;
}
#workspaces button label {
color: #${palette.base07};
}
#workspaces button.active label {
color: #${palette.base00};
font-weight: bolder;
}
#workspaces button:hover {
box-shadow: #${palette.base07} 0 0 0 1.5px;
background-color: #${palette.base00};
min-width: 50px;
}
#workspaces {
background-color: transparent;
border-radius: 17px;
padding: 0 0px;
margin-top: 2px;
margin-bottom: 2px;
}
#workspaces button {
background-color: #${palette.base00};
border-radius: 12px;
margin-left: 4px;
transition: all 0.3s ease;
}
#workspaces button.active {
min-width: 50px;
box-shadow: rgba(0, 0, 0, 0.288) 2 2 5 2px;
background-color: #${palette.base0F};
background-size: 400% 400%;
transition: all 0.3s ease;
background: linear-gradient(
58deg,
#${palette.base0E},
#${palette.base0E},
#${palette.base0E},
#${palette.base0D},
#${palette.base0D},
#${palette.base0E},
#${palette.base08}
);
background-size: 300% 300%;
animation: colored-gradient 20s ease infinite;
}
@keyframes colored-gradient {
0% {
background-position: 71% 0%;
}
50% {
background-position: 30% 100%;
}
100% {
background-position: 71% 0%;
}
}
#custom-power-menu {
margin-right: 10px;
padding-left: 12px;
padding-right: 15px;
padding-top: 3px;
}
#custom-spotify {
margin-left: 5px;
padding-left: 15px;
padding-right: 15px;
padding-top: 3px;
color: #${palette.base07};
background-color: #${palette.base00};
transition: all 0.3s ease;
}
#custom-spotify.playing {
color: rgb(180, 190, 254);
background: rgba(30, 30, 46, 0.6);
background: linear-gradient(
90deg,
#${palette.base02},
#${palette.base00},
#${palette.base00},
#${palette.base00},
#${palette.base00},
#${palette.base02}
);
background-size: 400% 100%;
animation: grey-gradient 3s linear infinite;
transition: all 0.3s ease;
}
@keyframes grey-gradient {
0% {
background-position: 100% 50%;
}
100% {
background-position: -33% 50%;
}
}
#tray menu {
color: #${palette.base07};
background-color: #${palette.base00};
opacity: 1.0;
}
#battery.warning {
color: #${palette.base08};
}
#pulseaudio.muted {
color: #${palette.base08};
padding-right: 16px;
}
#custom-notification.collapsed,
#custom-notification.waiting_done {
min-width: 12px;
padding-right: 17px;
}
#custom-notification.waiting_start,
#custom-notification.expanded {
background-color: transparent;
background: linear-gradient(
90deg,
#${palette.base02},
#${palette.base00},
#${palette.base00},
#${palette.base00},
#${palette.base00},
#${palette.base02}
);
background-size: 400% 100%;
animation: grey-gradient 3s linear infinite;
min-width: 500px;
border-radius: 17px;
}
'';
};
xdg.configFile."waybar/style.css".source = ./style.css;
xdg.configFile."waybar/theme.css".text = ''
/*
bg - background
fg - foreground
*/
/* Main Colors */
@define-color background #${palette.base00};
@define-color foreground #${palette.base05};
/* Workspace Button Colors */
@define-color hover-bg #${palette.base01};
@define-color hover-fg #${palette.base05};
@define-color active-bg #${palette.base02};
@define-color active-fg #${palette.base08};
@define-color urgent-bg #${palette.base08};
@define-color urgent-fg #${palette.base00};
'';
};
}

View File

@ -0,0 +1,94 @@
* {
/* `otf-font-awesome` is required to be installed for icons */
font-family: JetBrainsMono Nerd Font;
font-size: 16px;
}
/* This imports the base16 colors */
@import "theme.css";
/* Main Background */
window#waybar { background: @background; }
/* Tooltip Styling */
tooltip {
color: @foreground;
background: @background;
border: solid;
border-width: 1.5px;
border-radius: 7px;
border-color: white;
}
/* Workspace Button */
#workspaces button {
color: @foreground;
border-radius: 5px;
box-shadow: none;
margin-top: 2px;
margin-bottom: 2px;
margin-left: 0px;
margin-right: 0px;
padding: 0px;
padding-right: 2px;
padding-left: 2px;
}
/* Opened workspaces (also on other screen) */
#workspaces button.visible{
color: @active-fg;
background: @hover-bg;
box-shadow: none;
}
/* Active Workspace Button */
#workspaces button.active {
color: @active-fg;
background: @active-bg;
box-shadow: 0px 0px 2px 1px rgba(0, 0, 0, 1);
margin-right: 2px;
margin-left: 2px;
padding-right: 6px;
padding-left: 6px;
transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
}
/* Hover Effect for Workspace Buttons */
#workspaces button.inactive:hover {
color: @hover-fg;
background: @hover-bg;
box-shadow: none;
}
/* Urgent Workspace Buttons */
#workspaces button.urgent {
color: @urgent-fg;
background: @urgent-bg;
box-shadow: none;
}
/* General Module Styling */
#idle_inhibitor,
#disk,
#cpu,
#memory,
#pulseaudio,
#battery,
#clock,
#tray {
color: @foreground;
padding: 0 10px;
margin-top: 0px;
margin-bottom: 0px;
margin-right: 2px;
margin-left: 2px;
}
/* #battery.warning { */
/* color: #${palette.base08}; */
/* } */
/* #pulseaudio.muted { */
/* color: #${palette.base08}; */
/* padding-right: 16px; */
/* } */

View File

@ -39,6 +39,7 @@ in
-- config.font_size = 12.0
config.hide_tab_bar_if_only_one_tab = true
config.audible_bell = 'Disabled'
config.enable_wayland = false -- Somehow only works for wayland if this is set to false
config.window_close_confirmation = 'NeverPrompt'

View File

@ -16,7 +16,7 @@ in
config = mkIf cfg.enable {
boot.loader.systemd-boot.enable = true;
boot.loader.systemd-boot.configurationLimit = 5;
boot.loader.systemd-boot.configurationLimit = 10;
boot.loader.efi.canTouchEfiVariables = true;
# https://github.com/NixOS/nixpkgs/blob/c32c39d6f3b1fe6514598fa40ad2cf9ce22c3fb7/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix#L66

View File

@ -30,7 +30,7 @@ in
config = lib.mkIf cfg.enable {
programs.hyprland.enable = true;
programs.hyprland.package = inputs.hyprland.packages.${pkgs.system}.hyprland;
# programs.hyprland.package = inputs.hyprland.packages.${pkgs.system}.hyprland; # does only work with nixos-unstable
programs.hyprland.xwayland.enable = true;
security.pam.services.hyprlock = { };
};

View File

@ -0,0 +1,41 @@
{
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
# as well as the libraries available from your flake's inputs.
lib,
# An instance of `pkgs` with your overlays and packages applied is also available.
pkgs,
# You also have access to your flake's inputs.
inputs,
# Additional metadata is provided by Snowfall Lib.
namespace, # The namespace used for your flake, defaulting to "internal" if not set.
system, # The system architecture for this host (eg. `x86_64-linux`).
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
format, # A normalized name for the system target (eg. `iso`).
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
systems, # An attribute map of your defined hosts.
# All other arguments come from the module system.
config,
...
}:
let
cfg = config.modules.i3;
in
{
options.modules.i3 = {
enable = lib.mkOption { default = false; };
};
config = lib.mkIf cfg.enable {
services.xserver.windowManager.i3.enable = true;
services.xserver.windowManager.i3.package = pkgs.i3-gaps;
programs.xss-lock = {
# responds to "loginctl lock-session" via dbus
enable = true;
lockerCommand = "${pkgs.i3lock}/bin/i3lock --ignore-empty-password --color=000000";
};
};
}

View File

@ -0,0 +1,71 @@
{
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
# as well as the libraries available from your flake's inputs.
lib,
# You also have access to your flake's inputs.
inputs,
# All other arguments come from NixPkgs. You can use `pkgs` to pull packages or helpers
# programmatically or you may add the named attributes as arguments here.
pkgs,
stdenv,
...
}:
pkgs.writeShellApplication {
name = "lntocp";
runtimeInputs = with pkgs; [ ];
text = ''
#!/bin/bash
# This script accepts any number of files or directories as input.
# If the input is a symbolic link, it deletes the symlink and copies
# the original file or folder (where the symlink points to) to the location
# where the symlink was. Non-symlink files or directories are ignored.
# Function to copy original file/folder in place of the symlink
process_symlink() {
symlink="$1"
# Resolve the target (the file or directory the symlink points to)
target=$(readlink "$symlink")
# Check if the target is absolute or relative
if [[ ! "$target" =~ ^/ ]]; then
# If the target is relative, compute the full path
target="$(dirname "$symlink")/$target"
fi
# Check if the target exists
if [ -e "$target" ]; then
echo "Processing symlink: $symlink -> $target"
# Remove the symlink
rm "$symlink"
# Copy the original target to the symlink location
if [ -d "$target" ]; then
# If it's a directory, use 'cp -r'
cp -r "$target" "$symlink"
else
# Otherwise, it's a file, use 'cp'
cp "$target" "$symlink"
fi
echo "Copied $target to $symlink"
else
echo "Target $target does not exist!"
fi
}
# Loop through all arguments (files and directories passed to the script)
for item in "$@"; do
if [ -L "$item" ]; then
# If the item is a symlink, process it
process_symlink "$item"
else
echo "$item is not a symlink. Skipping."
fi
done
'';
}

View File

@ -73,8 +73,9 @@
locales.enable = true;
# thunar.enable = true;
pcmanfm.enable = true;
# wayland.enable = true;
# hyprland.enable = true;
wayland.enable = true;
hyprland.enable = true;
# i3.enable = true;
};
nix.settings.auto-optimise-store = true;
@ -96,51 +97,13 @@
];
};
# Enable the X11 windowing system.
hardware.opengl.enable = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
# Enable the XFCE Desktop Environment.
security.pam.services.gdm.enableGnomeKeyring = true;
# services.displayManager.sddm.wayland.enable = true;
# services.xserver.desktopManager = {
# xterm.enable = false;
# xfce = {
# enable = true;
# noDesktop = true;
# enableXfwm = false;
# };
# };
# services.xserver.displayManager.gdm.enable = true;
services.xserver.windowManager.i3.enable = true;
services.xserver.windowManager.i3.package = pkgs.i3-gaps;
services.xserver.wacom.enable = true;
services.blueman.enable = true;
services.upower.enable = true;
# TODO: move into i3 module
programs.xss-lock = {
# responds to "loginctl lock-session" via dbus
enable = true;
lockerCommand = "${pkgs.i3lock}/bin/i3lock --ignore-empty-password --color=000000";
};
# services.xserver.xautolock = { # TODO: does not work
# enable = true;
# time = 1;
# };
programs.dconf.enable = true;
services.logind.lidSwitch = "lock";
services.logind.lidSwitchDocked = "lock";
programs.kdeconnect.enable = true;
# Configure keymap in X11
services.xserver = {
@ -150,6 +113,25 @@
xkb.variant = "";
};
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
security.pam.services.gdm.enableGnomeKeyring = true;
services.blueman.enable = true;
services.upower.enable = true;
programs.steam.enable = true;
programs.dconf.enable = true;
services.logind.lidSwitch = "lock";
services.logind.lidSwitchDocked = "lock";
programs.kdeconnect.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
services.libinput.enable = true;