Compare commits

...

5 commits

Author SHA1 Message Date
e596041ecb
feat: always display tab bars 2025-02-23 18:37:05 +08:00
0cf39b8542
feat: install some packages 2025-02-23 18:36:41 +08:00
4cbe62a051
chore: bump inputs 2025-02-23 18:36:13 +08:00
fe95e44a07
feat: add support for flatpak in NixOS configuration
Added the necessary configurations and dependencies to enable Flatpak in the Fuchsia module.
This includes enabling the xdg portal for default settings and adding the flatpak service.
2025-02-23 18:26:58 +08:00
55dcdcf616
chore: migrate xmonad + xmobar to there own flake 2025-02-23 18:24:25 +08:00
19 changed files with 145 additions and 278 deletions

132
flake.lock generated
View file

@ -238,6 +238,27 @@
"type": "github"
}
},
"flake-parts_4": {
"inputs": {
"nixpkgs-lib": [
"xmonad-config",
"nixpkgs"
]
},
"locked": {
"lastModified": 1738453229,
"narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
@ -309,6 +330,21 @@
"type": "github"
}
},
"fourmolu-nix": {
"locked": {
"lastModified": 1707266073,
"narHash": "sha256-tCFzZQJicDdYjnuJiNK4hiiRAH7c2wQzMhOCdUMbVKE=",
"owner": "jedimahdi",
"repo": "fourmolu-nix",
"rev": "717f5a91b0d7b97b1be7ecc3a0fd42d37ffe1c9b",
"type": "github"
},
"original": {
"owner": "jedimahdi",
"repo": "fourmolu-nix",
"type": "github"
}
},
"freetype2": {
"flake": false,
"locked": {
@ -359,6 +395,22 @@
"type": "github"
}
},
"git-hooks_2": {
"flake": false,
"locked": {
"lastModified": 1737465171,
"narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
@ -421,6 +473,21 @@
"type": "github"
}
},
"haskell-flake": {
"locked": {
"lastModified": 1739713768,
"narHash": "sha256-P8I3uARBkSra86d5lgTo7cK+ET27zVee1BxWrym+9z8=",
"owner": "srid",
"repo": "haskell-flake",
"rev": "b40fcefa008ffa7205058f542a577cc218bec9a4",
"type": "github"
},
"original": {
"owner": "srid",
"repo": "haskell-flake",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -589,6 +656,21 @@
"type": "github"
}
},
"nixos-unified": {
"locked": {
"lastModified": 1739631166,
"narHash": "sha256-BvGPP1MwuRZMK+4RLvMOQYUs15n5JA7BDH6TsXlsAU0=",
"owner": "srid",
"repo": "nixos-unified",
"rev": "f9598ba02ad38df238a5987ad78ffac4845b7f3a",
"type": "github"
},
"original": {
"owner": "srid",
"repo": "nixos-unified",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1703013332,
@ -697,6 +779,22 @@
"type": "github"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1739863612,
"narHash": "sha256-UbtgxplOhFcyjBcNbTVO8+HUHAl/WXFDOb6LvqShiZo=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "632f04521e847173c54fa72973ec6c39a371211c",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixvim": {
"inputs": {
"flake-parts": "flake-parts_2",
@ -704,11 +802,11 @@
"nixvim": "nixvim_2"
},
"locked": {
"lastModified": 1739840000,
"narHash": "sha256-vpsGgix4Qk31V7zMlPT4mMR1Nw5+gwLeCd2P14nVzSc=",
"lastModified": 1740051406,
"narHash": "sha256-GLx59UkWzZI+ANWHu/pzShl4Rr21e372G1ik6ZYAq+M=",
"ref": "refs/heads/master",
"rev": "bbfc2f6f47de17ea77973507ced1b56e84b671e2",
"revCount": 30,
"rev": "547ed496e74a01d74247e7e6591cc4f81eb78eab",
"revCount": 35,
"type": "git",
"url": "https://git.sajenim.dev/jasmine/nvim.nix.git"
},
@ -801,7 +899,8 @@
"nixpkgs": "nixpkgs_3",
"nixpkgs-unstable": "nixpkgs-unstable",
"nixvim": "nixvim",
"wezterm": "wezterm"
"wezterm": "wezterm",
"xmonad-config": "xmonad-config"
}
},
"rust-overlay": {
@ -972,6 +1071,29 @@
"type": "github"
}
},
"xmonad-config": {
"inputs": {
"flake-parts": "flake-parts_4",
"fourmolu-nix": "fourmolu-nix",
"git-hooks": "git-hooks_2",
"haskell-flake": "haskell-flake",
"nixos-unified": "nixos-unified",
"nixpkgs": "nixpkgs_6"
},
"locked": {
"lastModified": 1740305864,
"narHash": "sha256-3KGtxEbCElQBH8MyrloGcOb20orWlD5umdkQv+o0JtM=",
"ref": "refs/heads/master",
"rev": "020e0f57e7e0976204bb45842d497fc634a6185a",
"revCount": 8,
"type": "git",
"url": "https://git.sajenim.dev/jasmine/xmonad-config.git"
},
"original": {
"type": "git",
"url": "https://git.sajenim.dev/jasmine/xmonad-config.git"
}
},
"zlib": {
"flake": false,
"locked": {

View file

@ -35,6 +35,7 @@
# Add any other flake you might need.
nix-minecraft.url = "github:Infinidoge/nix-minecraft";
nixvim.url = "git+https://git.sajenim.dev/jasmine/nvim.nix.git";
xmonad-config.url = "git+https://git.sajenim.dev/jasmine/xmonad-config.git";
};
outputs = {

View file

@ -16,8 +16,7 @@
home.packages = with pkgs; [
feh
xmobar # custom build using xmobar-config
xmonad # custom build using xmonad-config
inputs.xmonad-config.packages.${pkgs.system}.default
];
home.file = {

View file

@ -61,7 +61,7 @@ config.inactive_pane_hsb = {
--| Tab Bar Appearance
config.use_fancy_tab_bar = false
config.enable_tab_bar = true
config.hide_tab_bar_if_only_one_tab = true
config.hide_tab_bar_if_only_one_tab = false
config.tab_bar_at_bottom = false
config.tab_max_width = 24
config.show_tab_index_in_tab_bar = false

View file

@ -23,7 +23,10 @@
# Misc
libreoffice
firefox
google-chrome
ledger-live-desktop
unstable.zoom-us
zathura
];
};
}

View file

@ -10,6 +10,7 @@
"/var/log"
"/var/lib/bluetooth"
"/var/lib/docker"
"/var/lib/flatpak"
"/var/lib/nixos"
"/var/lib/systemd/coredump"
"/etc/NetworkManager/system-connections"

View file

@ -12,6 +12,7 @@
# Services
./services/amdgpu-clocks
./services/flatpak
./services/libinput
./services/ollama
./services/printers

View file

@ -0,0 +1,10 @@
{pkgs, ...}: {
# Required to install flatpak
xdg.portal = {
enable = true;
config.common.default = ["gtk"];
extraPortals = [pkgs.xdg-desktop-portal-wlr];
};
services.flatpak.enable = true;
}

View file

@ -1,7 +1,5 @@
# Custom packages, that can be defined similarly to ones from nixpkgs
# You can build them using 'nix build .#example'
pkgs: {
xmobar = pkgs.callPackage ./xmobar-config {};
xmonad = pkgs.callPackage ./xmonad-config {};
amdgpu-clocks = pkgs.callPackage ./amdgpu-clocks {};
}

View file

@ -1 +0,0 @@
use_nix

View file

@ -1,4 +0,0 @@
{pkgs}:
pkgs.haskellPackages.developPackage {
root = ./.;
}

View file

@ -1,4 +0,0 @@
{pkgs ? import <nixpkgs> {}}:
pkgs.mkShell {
nativeBuildInputs = with pkgs.buildPackages; [cabal-install ghc];
}

View file

@ -1,28 +0,0 @@
import Xmobar
-- | Configuration
config :: Config
config = defaultConfig
-- general settings
{ font = "Fira Code Semi Bold 9"
, additionalFonts = [ "Symbols Nerd Font 2048-em 24" ]
, bgColor = "#282828"
, fgColor = "#d4be98"
, position = Static { xpos = 1920, ypos = 0, width = 2560, height = 24 }
-- commands to run
, commands =
[ Run $ XPropertyLog "_XMONAD_LOG_1"
, Run $ Com "uname" ["-r","-s"] "" 0
, Run $ Date "%a %b %_d %Y <fc=#d8a657>%H:%M:%S</fc>" "date" 10
, Run $ Weather "YPJT"
[ "-t", "Temp: <fc=#d3869b><tempC>C</fc> <fc=#7c6f64>|</fc> Wind: <fc=#a9b665><windKmh>km/h</fc> <fc=#7c6f64>|</fc> Humidity: <fc=#e78a4e><rh>%</fc>" ]
18000
]
-- format our bar
, sepChar = "%"
, alignSep = "}{"
, template = "<hspace=6/><fn=1>\59255</fn> <fc=#a9b665>%uname%</fc> <fc=#7c6f64>|</fc>%_XMONAD_LOG_1%}{%YPJT% <fc=#7c6f64>|</fc> %date%<hspace=6/>"
}
main :: IO ()
main = configFromArgs config >>= xmobar

View file

@ -1,18 +0,0 @@
cabal-version: 3.0
name: xmobar-config
version: 0.1.0.0
synopsis: A Minimalistic Text Based Status Bar
description: my xmobar configuration
license: BSD-3-Clause
author: sajenim
maintainer: its.jassy@pm.me
build-type: Simple
executable xmobar-top
main-is: xmobar-top.hs
hs-source-dirs: src
ghc-options: -Wall -threaded
build-depends: base,
xmobar
default-language: Haskell2010

View file

@ -1 +0,0 @@
use_nix

View file

@ -1,10 +0,0 @@
{pkgs}:
pkgs.haskellPackages.developPackage {
root = ./.;
source-overrides = {
xmonad = builtins.fetchTarball {
url = "https://github.com/xmonad/xmonad/archive/refs/tags/v0.18.0.tar.gz";
sha256 = "0jlc60n5jarcxgjxm1vcsgc3s2lwmn3c3n56hialhzx54wfskkbc";
};
};
}

View file

@ -1,4 +0,0 @@
{pkgs ? import <nixpkgs> {}}:
pkgs.mkShell {
nativeBuildInputs = with pkgs.buildPackages; [cabal-install ghc];
}

View file

@ -1,178 +0,0 @@
-- Base
import XMonad
import System.Exit
import qualified XMonad.StackSet as W
-- Actions
import XMonad.Actions.CycleWS
-- Hooks
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.ManageDocks
-- Layout modifiers
import XMonad.Layout.Spacing
import XMonad.Layout.Renamed
import XMonad.Layout.NoBorders
import XMonad.Layout.BinarySpacePartition
-- Utilities
import XMonad.Util.EZConfig (additionalKeys)
-- This file is generated based on X.org includes. It contains the keysyms for XF86.
import Graphics.X11.ExtraTypes.XF86
-- xmobar dependencies
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.StatusBar
import XMonad.Hooks.StatusBar.PP
import XMonad.Util.Loggers
-- | Configuration
myTerminal = "wezterm"
myModMask = mod4Mask
myBorderWidth = 5
myNormalBorderColor = "#282828"
myFocusedBorderColor = "#282828"
myWorkspaces = ["code", "chat", "web", "games", "misc"]
myLauncher = "rofi -modi run,calc -show run"
myScrot = "scrot -s '%Y%m%d_%H%M%S.png' -e 'mv $f ~/Pictures/scrots/'"
volDown = "pactl set-sink-volume @DEFAULT_SINK@ -10%"
volUp = "pactl set-sink-volume @DEFAULT_SINK@ +10%"
-- | Keybindings
myKeys =
-- launching and killing programs
[ ((myModMask, xK_Return), spawn myTerminal ) -- %! Launch terminal
, ((myModMask, xK_Tab ), spawn myLauncher ) -- %! Launch rofi
, ((myModMask, xK_s ), spawn myScrot ) -- %! Take screenshot
, ((myModMask, xK_Escape), kill ) -- %! Close the focused window
, ((myModMask .|. controlMask, xK_Escape), io exitSuccess ) -- %! Quit xmonad
-- multimedia
, ((noModMask, xF86XK_AudioPlay ), spawn "mpc toggle") -- %! Play/Pause music
, ((noModMask, xF86XK_AudioStop ), spawn "mpc stop" ) -- %! Stop music
, ((noModMask, xF86XK_AudioNext ), spawn "mpc next" ) -- %! Next track
, ((noModMask, xF86XK_AudioPrev ), spawn "mpc prev" ) -- %! Previous track
, ((noModMask, xF86XK_AudioLowerVolume ), spawn volDown ) -- %! Volume down
, ((noModMask, xF86XK_AudioRaiseVolume ), spawn volUp ) -- %! Volume up
-- layouts
, ((myModMask, xK_t ), sendMessage $ JumpToLayout "tile") -- %! Jump to our tiled layout
, ((myModMask, xK_b ), sendMessage $ JumpToLayout "bsp" ) -- %! Jump to our bsp layout
, ((myModMask, xK_m ), sendMessage $ JumpToLayout "max" ) -- %! Jump to our maximized layout
, ((myModMask, xK_f ), sendMessage $ JumpToLayout "full") -- %! Jump to our fullscreen layout
, ((myModMask .|. shiftMask, xK_t ), withFocused $ windows . W.sink ) -- %! Push window back into tiling
-- window stack
, ((myModMask, xK_Down ), windows W.focusDown ) -- %! Move focus to the next window
, ((myModMask, xK_Up ), windows W.focusUp ) -- %! Move focus to the previous window
, ((myModMask .|. shiftMask, xK_Down ), windows W.swapDown ) -- %! Swap the focused window with the next window
, ((myModMask .|. shiftMask, xK_Up ), windows W.swapUp ) -- %! Swap the focused window with the previous window
-- master slave
, ((myModMask, xK_space ), windows W.focusMaster ) -- %! Move focus to the master window
, ((myModMask .|. shiftMask, xK_space ), windows W.swapMaster ) -- %! Swap the focused window with the master window
, ((myModMask, xK_Page_Up ), sendMessage Shrink ) -- %! Shrink the master area
, ((myModMask, xK_Page_Down), sendMessage Expand ) -- %! Expand the master area
, ((myModMask .|. shiftMask, xK_Page_Up ), sendMessage (IncMasterN 1) ) -- %! Increase the number of windows in the master area
, ((myModMask .|. shiftMask, xK_Page_Down), sendMessage (IncMasterN (-1)) ) -- %! Decrease the number of windows in the master area
-- workspaces
, ((myModMask, xK_Right ), moveTo Next hiddenWS ) -- %! Move focus to the next hidden workspace
, ((myModMask, xK_Left ), moveTo Prev hiddenWS ) -- %! Move focus to the previous hidden workspace
, ((myModMask .|. shiftMask, xK_Right ), shiftTo Next hiddenWS ) -- %! Move focused window to the next hidden workspace
, ((myModMask .|. shiftMask, xK_Left ), shiftTo Prev hiddenWS ) -- %! Move focused window to the previous hidden workspace
-- monitors
, ((myModMask, xK_End ), nextScreen ) -- %! Move focus to the next screen
, ((myModMask, xK_Home ), prevScreen ) -- %! Move focus to the previous screen
, ((myModMask .|. shiftMask, xK_End ), shiftNextScreen ) -- %! Move focused window to the next screen
, ((myModMask .|. shiftMask, xK_Home ), shiftPrevScreen ) -- %! Move focused window to the previous screen
-- binary space partition
, ((myModMask .|. mod1Mask, xK_Right ), sendMessage $ ExpandTowardsBy R 0.01) -- %! Expand window towards the right
, ((myModMask .|. mod1Mask, xK_Left ), sendMessage $ ExpandTowardsBy L 0.01) -- %! Expand window towards the left
, ((myModMask .|. mod1Mask, xK_Down ), sendMessage $ ExpandTowardsBy D 0.01) -- %! Expand window downwards
, ((myModMask .|. mod1Mask, xK_Up ), sendMessage $ ExpandTowardsBy U 0.01) -- %! Expand window upwards
, ((myModMask .|. mod1Mask .|. controlMask, xK_Right ), sendMessage $ ShrinkFromBy R 0.01) -- %! Shrink window from the right
, ((myModMask .|. mod1Mask .|. controlMask, xK_Left ), sendMessage $ ShrinkFromBy L 0.01) -- %! Shrink window from the left
, ((myModMask .|. mod1Mask .|. controlMask, xK_Down ), sendMessage $ ShrinkFromBy D 0.01) -- %! Shrink window downwards
, ((myModMask .|. mod1Mask .|. controlMask, xK_Up ), sendMessage $ ShrinkFromBy U 0.01) -- %! Shrink window upwards
, ((myModMask .|. mod1Mask, xK_Page_Up ), sendMessage Rotate ) -- %! Rotate a split (horizontal/vertical) in the BSP
, ((myModMask .|. mod1Mask, xK_Page_Down), sendMessage Swap ) -- %! Swap the left child of a split with the right child of split
, ((myModMask .|. mod1Mask, xK_Home ), sendMessage $ SplitShift Prev ) -- %! Shift window by splitting previous neighbour
, ((myModMask .|. mod1Mask, xK_End ), sendMessage $ SplitShift Next ) -- %! Shift window by splitting next neighbour
]
-- | Layouts
myLayout = tile ||| bsp ||| max ||| full
where
-- Add a configurable amount of space around windows.
gaps = spacingRaw False (Border 10 10 10 10) True (Border 10 10 10 10) True
-- Our layouts
tile = renamed [Replace "tile"] . avoidStruts . gaps $ Tall nmaster delta ratio
bsp = renamed [Replace "bsp" ] . avoidStruts . gaps $ emptyBSP
max = renamed [Replace "max" ] . avoidStruts . gaps $ Full
full = renamed [Replace "full"] . noBorders $ Full
-- Layout settings
nmaster = 1 -- Default number of windows in the master pane
ratio = 1/2 -- Default proportion of screen occupied by master pane
delta = 3/100 -- Percent of screen to increment by when resizing panes
-- | Xmobar
xmobarTop = statusBarPropTo "_XMONAD_LOG_1" "xmobar-top" (pure ppTop)
ppTop :: PP
ppTop = def
{ ppSep = grey0 " | "
-- workspace labels
, ppCurrent = purple . wrap " " ""
, ppVisible = blue . wrap " " ""
, ppHidden = grey0 . wrap " " ""
, ppHiddenNoWindows = grey0 . wrap " " ""
, ppUrgent = red . wrap " " ""
-- misc
, ppLayout = aqua . wrap "" ""
, ppOrder = \[ws, l, _] -> [ws, l]
}
where
-- | Gruvbox material
bg0, bg1, fg0, fg1, red, orange, yellow, green, aqua, blue, purple :: String -> String
-- backgrounds
bg0 = xmobarColor "#1d2021" ""
bg1 = xmobarColor "#282828" ""
-- foregrounds
fg0 = xmobarColor "#d4be98" ""
fg1 = xmobarColor "#ddc7a1" ""
-- greys
grey0 = xmobarColor "#7c6f64" ""
-- colors
red = xmobarColor "#ea6962" ""
orange = xmobarColor "#e78a4e" ""
yellow = xmobarColor "#d8a658" ""
green = xmobarColor "#a9b665" ""
aqua = xmobarColor "#89b482" ""
blue = xmobarColor "#7daea3" ""
purple = xmobarColor "#d3869b" ""
-- | The main function
main :: IO ()
main = xmonad
. docks
. ewmhFullscreen
. ewmh
. withSB (xmobarTop)
$ myConfig
myConfig = def
{ modMask = myModMask
, layoutHook = myLayout
, terminal = myTerminal
, borderWidth = myBorderWidth
, normalBorderColor = myNormalBorderColor
, focusedBorderColor = myFocusedBorderColor
, workspaces = myWorkspaces
} `additionalKeys` myKeys

View file

@ -1,20 +0,0 @@
cabal-version: 3.0
name: xmonad-config
version: 0.1.0.0
synopsis: A tiling window manager
description: my xmonad configuration
license: BSD-3-Clause
author: sajenim
maintainer: its.jassy@pm.me
build-type: Simple
executable xmonad
main-is: xmonad.hs
hs-source-dirs: src
ghc-options: -Wall
build-depends: base,
X11,
xmonad,
xmonad-contrib
default-language: Haskell2010